Σάββατο 18 Οκτωβρίου 2014

Nice TextBoxes

Επιτέλους μετά από προσπάθεια μερικών ημερών κατάφερα να φτιάξω μια συλλογή στοιχείων ελέγχου, τα οποία μπορούν να χρησιμοποιηθούν στην Visual Basic 6.

Δύο πράγματα τα κάνουν ξεχωριστά. Ένα είναι ότι δεν απαιτούν βιβλιοθήκες και δεν αλλάζουν ανάλογα με το λειτουργικό (όπως όταν χρησιμοποιούμε τα στάνταρ στοιχεία ελέγχου των Windows). Το δεύτερο είναι η αλλαγή σχεδίασης, όπου όλα τα στοιχεία είναι ένα βασικό  και μερικές κλάσεις που το τροποποιούν παρέχοντάς μας ιδιότητες και γεγονότα για να τα χειριστούμε.
Πέρα από αυτά επιπλέον σχεδιαστικά καλούδια είναι η δυνατότητα χρήσης Unicode γραμματοσειρών χωρίς όμως δυνατότητα γραφής από δεξιά προς αριστερά. Μπορούμε όμως να εμφανίσουμε κυριλλικό αλφάβητο με ευρωπαϊκό και ελληνικό. Επίσης το υπόστρωμα, το στοιχείο δηλαδή που πράγματι εμφανίζεται, το glist, έχει την δυνατότητα να χειρίζεται την απόσταση των στοιχείων του, ή αλλιώς το line spacing. Είναι βασικό αυτό για να φαίνονται περισσότερο όμορφα τα στοιχεία, και τα κάνει ξεχωριστά. Τα αντίστοιχα της Microsoft...δεν έχουν απόσταση γραμμής, αντί αυτού ορισμένα έχουν ύψος γραμμής αλλά αυτό δεν είναι το ίδιο, η απόσταση γραμμής εδώ είναι το άνω και κάτω περιθώριο κάθε γραμμής -  TextBlock Class .NET Framework 4.5

Αποκορύφωμα των κλάσεων είναι η TextViewer κλάση που διαχειρίζεται ένα στοιχείο glist (αυτό χωρίς χρήση κλάσης είναι ένα στοιχείο που μοιάζει με το listbox), και με την χρήση μια κλάσης MyDOC (αυτή κρατάει κείμενο με παραγράφους σε μια διπλή συνδεδεμένη λίστα), προβάλει και δίνει για επεξεργασία κείμενο. Παράλληλα λειτουργούν πλήκτρα όπως Ctl X, Ctrl C & Ctrl V για αποκοπή, αντιγραφή και επικόλληση, αλλά και τα Ctrl A, επιλογή όλων, shift Ctrl A, καμία επιλογή, Ctrl Z αναίρεση (Undo), και Ctrl Y αναίρεση αναίρεσης (Redo) - μάλιστα υποστηρίζει πολλαπλά undo/redo. Επίσης δουλεύει το drag and drop,  ή ελληνικά οι ενέργειες σύρε και άφησε.

Η συλλογή των στοιχείων περιλαμβάνει διαμορφώσεις του glist ως button όπου η ενεργοποίηση γίνεται με διπλό πάτημα ή με σύρσιμο δεξιά, το checkbox όπου μια κουκκίδα αριστερά δηλώνει την  θέση διακόπτη (ανοικτός - κλειστός), το infobox που δηλώνει απλά μια ένδειξη αλλά μπορεί να αλλάξει σε εισαγωγή κειμένου για κάποια ρύθμιση. Άλλες διαμορφώσεις είναι το spin box όπου δέχεται αριθμητική τιμή και η οποία αλλάζει η με τη μπάρα ολίσθησης και τα βελάκια του πληκτρολογίου, ή αν θέλουμε με απευθείας εγγραφή τιμής. Στο παράδειγμα φαίνεται μια λίστα που τροφοδοτεί τιμές το spin box. Τέλος ένα επίσης ωραίο στοιχείο είναι το combobox όπου δυο λίστες glist συνδέονται, η μία ως ένα textbox μιας γραμμής με την προσθήκη ενός χειριστή αριστερά ο οποίος ανοίγει μια δεύτερη λίστα, μια λίστα τιμών. Μπορούμε να γράψουμε στο πρώτο textbox και αυτόματα θα εμφανίζεται το υπόλοιπο της λέξης από όποια λέξη βρεθεί στη δεύτερη λίστα. Αυτό λέγεται αυτόματη συμπλήρωση.

Όλα τα στοιχεία ελέγχου μπορούμε να τα χειριστούμε μόνο με πληκτρολόγιο (εκτός του drag & drop που απαιτεί ποντίκι εξ ορισμού). Έχει δοκιμαστεί το παράδειγμα σε Linux και Wine. Αν και στην έκδοση που έχω το Wine ενώ δίνει ελληνικά δεν αφήνει να περάσουν γράμματα με τόνο απευθείας στις φόρμες (πιστεύω σε νεότερη έκδοση του Wine, θα το έχουν λύσει το θέμα).


Παρακάτω είναι δυο εικόνες. Στην πρώτη φαίνεται το combobox, με τη δεύτερη λίστα σε προβολή, και μάλιστα φαίνεται και η μπάρα ολίσθησης (που είναι εσωτερική στο glist και όχι ξεχωριστό στοιχείο ελέγχου). Τα στοιχεία με τις πράσινες ανοικτές επικεφαλίδες είναι κινούμενα, δηλαδή μπορούμε να τους αλλάξουμε θέση. Το glist παρέχει χώρο να βάλουμε αν θέλουμε άλλα στοιχεία ελέγχου και να εκμεταλλευθούμε την επικεφαλίδα και την δυνατότητα μετακίνησης που δίνει για να μεταφέρουμε για παράδειγμα μια εικόνα.


Το στοιχεί ελέγχου change wrapping αλλάζει την αναδίπλωση γραμμής, και το Show Paragraph δείχνει ή κρύβει το σημάδι παραγράφου (φαίνεται στην εικόνα). Οι μπάρες ολίσθησης στις λίστες (και στο TextViewer) φαίνονται όταν πάμε στην άκρη το ποντίκι ή όταν κάνουμε ολίσθηση με σπρώξιμο - με πατημένο το αριστερό πλήκτρο κουνάμε το ποντίκι και μετακινούμε τη λίστα, με αυξανόμενη ταχύτητα ανάλογα με την κίνηση που κάνουμε - και αυτό δεν υπάρχει στα στάνταρ στοιχεία ελέγχου).



Εδώ υπάρχει ο κώδικας (δείτε στο τέλος την τελική έκδοση) Δημοσιευμένος Κώδικας


2022 Στο περιβάλλον της Μ2000, τα στοιχεία ελέγχου έχουν επεκταθεί σε δυνατότητες. Έχει μπει και η RTL (right to left) γραφή προσαρμοσμένη να λειτουργεί και τμηματικά, δηλαδή να έχουμε κώδικα της Μ2000 σε LTR με αλφαριθμητικά σε RTL, σε συνδυασμό με πληροφορίες χρώματος (το αλφαριθμητικό έχει διαφορετικό χρώμα, οπότε εκεί εφαρμόζεται χωριστά η RTL γραφή).
Υπάρχει μια παραλλαγή (παλαιότερη αυτή της Μ2000) όπου μπορούν να επαναπροσδιοριστούν οι χαρακτήρες για ασιατικές γλώσσες. Ίσως μπει και στη Μ2000.

Δευτέρα 13 Οκτωβρίου 2014

Βασικές γνώσεις για τα Ubuntu Studio #1

Βασικές γνώσεις για τα Ubuntu Studio

Τα δυο πράγματα που πρέπει να μην ξεχάσουμε και έχουμε εμείς ορίσει είναι  τα Όνομα χρήστη και κωδικός. Για να ανοίγει κανείς τον υπολογιστή δεν είναι απαραίτητα. Όμως όποτε υπάρχει λόγος να αλλάξει το σύστημα μας ζητείται το οκ για την πρόσβαση και αυτό δίνεται με την επίδοση του κωδικού χρήστη.

Ελάχιστα λόγια για το Ubuntu (και όχι ειδικά για το Studio, μια από τις παραλλαγές του). Το Ubuntu με την εγκατάσταση παρέχει όλα τα απαραίτητα του λειτουργικού καθώς και μια σειρά προγραμμάτων για κάθε χρήση. Έτσι αν δεν θέλουμε κάτι ειδικό, από την εγκατάσταση τα έχουμε όλα. Μια σύνδεση με το διαδίκτυο θα ήταν καλό να υπάρχει για να γίνουν τυχόν αναβαθμίσεις.

Για να μην έχουμε άγχος, πρέπει να καταλάβουμε ότι τα Ubuntu σχεδιάστηκαν για εκείνους που δεν καταλαβαίνουν τα πολλά και ο νους τους δεν κατεβάζει. Οπότε κάθε περίπτωση προβλήματος έχει μια απλή λύση, και τα προβλήματα δεν εμφανίζονται παρά μόνο όταν βάλουμε κάτι εξειδικευμένο, όταν δηλαδή αναγκαστεί το σύστημα να προβεί σε αλλαγές, με την σύμφωνη γνώμη μας (που κατανοεί με το διάβασμα του κωδικού μας).

Η επιλογή έκδοσης είναι βασική, γιατί οι μονές εκδόσεις είναι ασταθείς άρα θέλουμε ή πρέπει να κάνουμε εγκατάσταση έκδοσης με ζυγό νούμερο. Αυτές οι εκδόσεις έχουν μακροχρόνια συντήρηση, δηλαδή αναβαθμίσεις και τροποποιήσεις. Όλη η διαδικασία αναβαθμίσεων γίνεται αυτόματα, και για όλο το λογισμικό που έχουμε, όχι μόνο για το λειτουργικό αλλά και για τα παρεχόμενα προγράμματα (κάτι για το οποίο δεν υπάρχει στα Windows).

Πρέπει να κατανοήσουμε πως το Linux αν και σύγχρονο λειτουργικό διαθέτει όλα τα βασικά στοιχεία ενός παλιού λειτουργικού και από αυτά εδώ θα δείξω δύο. Μιλάμε για τον επεξεργαστή εντολών γραμμής, δηλαδή εκεί που γράφουμε την εντολή μας και λαμβάνουμε απάντηση ή καλούμε για εκτέλεση μια ομάδα εντολών. Οι εντολές είναι προγράμματα τα οποία λέμε απλά ότι ανήκουν σε βιβλιοθήκες προγραμμάτων. Οπότε κάθε έλεγχος για μια έλλειψη ή ένα πρόβλημα γενικότερα γίνεται εύκολα από τον επεξεργαστή εντολών, την κονσόλα κατά μια έννοια, όπου παίρνουμε απαντήσεις. Άρα πρέπει να ξέρουμε πως μπαίνουμε στην κονσόλα, και πως γενικά ελέγχουμε τι τρέχει, πως σταματάμε κάτι που τρέχει.

Η κονσόλα ή τερματικό είναι κάτι που μας απασχολεί ελάχιστες φορές σε όλη τη χρήση του Ubuntu. Η είσοδος στην κονσόλα δεν σημαίνει και είσοδο σε κατάσταση αλλαγών. Για να γίνουν αλλαγές και από την κονσόλα ζητείται κωδικός χρήστη (με δικαιώματα αλλαγών).

Παρακάτω γράφω μια αναφορά για το τι μου συνέβη στα πρώτα βήματα στο Ubuntu (όπως ακριβώς το έγραψα):

Ευτυχώς θυμήθηκα ότι οι εφαρμογές έχουν pid (μάλλον program id) και πως υπάρχει εντολή που τις κλείνει από την κονσόλα.
Το πρόβλημα είχε ως εξής. Ξεκίνησα μια εφαρμογή με τρισδιάστατα γραφικά και ενώ άκουγα ήχο δεν έβλεπα τίποτα και επιπλέον...δεν μπορούσα να αλλάξω επιφάνεια εργασίας! Τελικά μπαίνω στην κονσόλα 1 με ctrl+alt+1 δίνω όνομα χρήστη και κωδικό και αρχίζω να ψάχνω...γράφω help...διαβάζω την man την εντολή που δίνει πληροφορίες για εντολές γράφω μια με την λέξη shutdown μου δίνει μερικές απαντήσεις κύρια όμως να χρησιμοποιήσω το -κ μετά το man για να ψάξει να βρει αλλού...Τελικά έβαλα με το pid και βρήκα την top ναι με τρια γράμματα top ξεκινάει μια εφαρμογή που δείχνει όλες τις εφαρμογές με όνομα και pid. Με h δίνει βοήθεια και με k κάνει kill δηλαδή στέλνει μήνυμα να τερματίσει μια εφαρμογή αφού όμως δώσουμε τον αριθμό της. Βλέπω ότι η εφαρμογή που είχα ανοίξει είχε δυο συνεχόμενα pid. Το παλιό, μικρό νούμερο, ήταν η φόρμα επιλογής που έτρεξε το άλλο, που μαύρισε την οθόνη. Με το που έφυγε κάνω έναν έλεγχο...πατάω alt-ctrl-7 και γυρνάω στο γραφικό περιβάλλον. Εντάξει είχε φύγει...
Κλείνω την “αδελφή” φόρμα, πάω στο κέντρο λογισμικού και καλώ την απεγκατάσταση του προγράμματος. Μετά γυρνάω με alt+ctrl+1 στην κονσόλα και πατάω το q για να τερματίσει το top και γράφω logout για να γυρίσει η κονσόλα στην αρχική της θέση, στην αναμονή ονόματος και κωδικού..για νέα συνεδρία. Γυρίζω στο γραφικό περιβάλλον. 

Με αυτόν τον τρόπο λοιπόν ξέφυγα από μια περίπτωση που σε windows απλά θα είχα πατήσει reset...με ότι ζημιά θα είχε προκαλέσει (λόγω ανοικτών αρχείων). Εδώ η όποια ζημιά περιορίστηκε στο πρόγραμμα που έκλεισε από την εφαρμογή top.

Η κοσνόλα υποστηρίζεται από ένα κέλυφος, το πρόγραμμα δηλαδή που τρέχει πίσω από το ορατό πράγμα που λέμε κοσνόλα (ή τερματικό). Το κέλυφος λέγεται bash. Με μια αναζήτηση στο διαδίκτυο μπορούμε να βρούμε περισσότερες πληροφορίες. Μέσα από το γραφικό περιβάλλον μπορούμε να ανοίξουμε έναν εξομοιωτή τερματικού. Όμως μπορούμε να πάμε απ΄ευθειας με τα alt+crl + νούμερο από 1 μέχρι 6. Το 7 μας βγάζει στο γραφικό περιβάλλον. Όλα τα νούμερα μπορούν να τρέχουν προγράμματα σε διαφορετικό χρήστη. Να γιατί λέγεται multiuser το σύστημα.
Εδώ παραθέτω ένα κείμενο που είχα γράψει για την δική μου βοήθεια:

Χρήσιμες οδηγίες από το τερματικό


Προσοχή μικρά ή κεφαλαία γράμματα έχουν διαφορά στο Linux (άρα και στο Ubuntu)
Όταν θέλουμε σε ένα όνομα να συμπεριλάβουμε το διάστημα βάζουμε την \ πίσω από ένα διάστημα, έτσι από το κατάλογο ~ πάμε με το cd Επιφάνεια\ εργασίας στην Επιφάνεια εργασίας
Οι κατάλογοι χωρίζονται με / και όχι με \ όπως στα Windows
Η τελεία στην αρχή ενός ονόματος δηλώνει ότι είναι κρυφό! Οπουδήποτε αλλού είναι απλά ένας ακόμα χαρακτήρας. Τα αρχεία δεν συσχετίζονται με εφαρμογές με την κατάληξη π.χ. txt. Μπορεί όμως να βάλει κανείς μια “κατάληξη” και ο Διαχειριστής αρχείων μπορεί να μάθει τις καταλήξεις...(όμως αυτή η εργασία δεν είναι του λειτουργικού)
Γιατί λέμε ότι τα παρακάτω είναι οδηγίες και όχι εντολές; Επειδή οι εντολές απαιτούν έναν μεταφραστή, δηλαδή είναι ενσωματωμένες σε ένα πρόγραμμα μετάφρασης μαζί με τις διαδικασίες στις οποίες αναφέρονται..οι μεταφράσεις. Ορισμένες οδηγίες είναι εντολές του bash, και άλλες είναι προγράμματα, δηλαδή υπάρχουν έξω από το bash.
lsb_release -a
Εμφανίζει την έκδοση του λειτουργικού
exit
Έξοδος από τη συνεδρία (σε εξομοιωτή κλείνει τον εξομοιωτή)
dmesg
Μας δείχνει τις τελευταίες εντολές που εκτέλεσε το κέλυφος. (δείτε με παράμετρο -h τις διαμορφώσεις που δέχεται)
cd
Αλλαγή καταλόγου (Change Directory)
Προσοχή επειδή είναι πρόγραμμα δεν δέχεται κολλητά όπως στα Windows παραμέτρους
έτσι το CD.. δεν θα τρέξει!
cd -
Εναλλαγή μεταξύ δυο τελευταίων καταλόγων.
ls
Δείχνει τα περιεχόμενα ενός κατάλογου
ls -lh
Δείχνει τα περιεχόμενα με περισσότερες πληροφορίες
ls -aD
Δείχνει ότι το ls αλλά και τα κρυφά αρχεία (ξεκινούν με τελεία).
mv
Μετακίνηση αρχείων αλλά και μετανομασία!




Συνεχίζεται...