Εισαγωγή στην ανάπτυξη GUI. Χαρακτηριστικά γραφικών παραθύρου X

Παιδικά προϊόντα 15.07.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher Μελετάμε τα γραφικά στοιχεία - τα οπτικά στοιχεία που συνθέτουν τη γραφική διεπαφή χρήστη, τη διάταξή τους, την πολιτική μεγέθους, τις συνδέσεις θυρίδων σήματος, τα στοιχεία γραφικής διεπαφής και τη χρήση τους.

13.1 Γραφικά στοιχεία

Τα γραφικά στοιχεία είναι τα οπτικά στοιχεία που συνθέτουν τη γραφική διεπαφή χρήστη.

Παραδείγματα γραφικών στοιχείων:

  • Κουμπί (κλάση QPushButton);
  • Label(class QLabel);
  • Πεδίο εισαγωγής (κλάση QLineEdit);
  • Αριθμητικό πεδίο μετρητή (κλάση QSpinBox).
  • Γραμμή κύλισης (κλάση QScrollBar ).

Το Qt διαθέτει περίπου 50 έτοιμες κατηγορίες στοιχείων γραφικών που είναι διαθέσιμες για χρήση. Η γονική κλάση για όλα τα γραφικά στοιχεία είναι η κλάση QWidget. Όλες οι κύριες ιδιότητες των οπτικών στοιχείων κληρονομούνται από αυτό, τις οποίες θα εξετάσουμε προσεκτικά. Ας αρχίσουμε να εξερευνούμε τρόπους ανάπτυξης προγραμμάτων με γραφική διεπαφή με ένα παράδειγμα.

Ας δημιουργήσουμε ένα κενό αρχείο έργου. Εκκινήστε τον οδηγό έργου και επιλέξτε το στοιχείο στην ενότητα Έργα Άλλο Έργο. Στη συνέχεια, επιλέξτε τον τύπο του έργου Έργο Empty Qt. Ας προσθέσουμε τα περιεχόμενα στο αρχείο του έργου:

TEMPLATE = app #Qt modules που θα χρησιμοποιήσουμε QT += widgets #Add the widgets module to work with widget (απαραίτητα για Qt5). TARGET = widget#Όνομα του εκτελέσιμου αρχείου SOURCES += \ main.cpp

Τώρα ας δημιουργήσουμε ένα απλό πρόγραμμα με ένα παράθυρο στο οποίο θα εμφανίσουμε την επιγραφή. Ας ορίσουμε το μέγεθος του παραθύρου και το κείμενο του τίτλου του, καθώς και τη γραμματοσειρά για την επιγραφή. Για να το κάνετε αυτό, δημιουργήστε ένα αρχείο main.cpp με το ακόλουθο περιεχόμενο:

#συμπεριλαμβάνω #συμπεριλαμβάνω int main (int lArgc, char * lArgv ) ( //Δημιουργία αντικειμένου QApplication που αρχικοποιεί και ρυθμίζει το πρόγραμμα παραθύρου, //ελέγχει την εκτέλεσή του χρησιμοποιώντας τον βρόχο συμβάντος QApplication lApplication (lArgc, lArgv); QLabel lLabel; //Δημιουργία QLabel γραφικό στοιχείο - label lLabel.setText ("I am widget!" και ύψος κειμένου lLabel.setAlignment (Qt::AlignHCenter | Qt::AlignVCenter //Η κλάση QFont χρησιμοποιείται για τον ορισμό των παραμέτρων γραμματοσειράς //Επιλέξτε την οικογένεια γραμματοσειράς Arial Black. ", 12); setFont (lBlackFont); //Ορίστε τη γραμματοσειρά για την ετικέτα lLabel.show (); //Καλέστε τη μέθοδο show() για να εμφανιστεί η ετικέτα στην οθόνη, επιστρέφει lApplication.exec (); //Εκτέλεση Πρόγραμμα για την εκτέλεση του προγράμματος exec() //επεξεργασία συμβάντων Το πρόγραμμα περιμένει τις ενέργειες του χρήστη και τις επεξεργάζεται.

Όπως μπορούμε να δούμε, τα στοιχεία που συνθέτουν τις διεπαφές σε Qt έχουν τη δική τους θέση και μέγεθος - τη λεγόμενη «γεωμετρία» - και έτσι καταλαμβάνουν μια αντίστοιχη ορθογώνια περιοχή στην οθόνη (βλ. Εικ. 13.1). Επίσης, κάθε στοιχείο έχει ρυθμίσεις που καθορίζουν τη συμπεριφορά και την εμφάνισή του.


Ρύζι. 13.1.

Για τη δημιουργία μιας δομής, τα γραφικά στοιχεία οργανώνονται σε μια ιεραρχία σύμφωνα με την αρχή "μέρος - σύνολο". Κάθε γραφικό στοιχείο μπορεί να περιέχει άλλα γραφικά στοιχεία. Αυτό το οπτικό στοιχείο γίνεται ο «γονέας» (γονικό γραφικό στοιχείο) των στοιχείων που περιέχει. Σημειώστε ότι τέτοιες σχέσεις δεν πρέπει να συγχέονται με την κληρονομικότητα στη C++ - σχέσεις μεταξύ κλάσεων σε ένα πρόγραμμα. Οι σχέσεις μεταξύ γραφικών στοιχείων είναι σχέσεις μεταξύ αντικειμένων. Τέτοιες σχέσεις έχουν πολλές συνέπειες:

  • το γονικό στοιχείο θα είναι υπεύθυνο για τη διαγραφή του θυγατρικού στοιχείου: εάν το γονικό γραφικό στοιχείο διαγραφεί, θα διαγράψει αυτόματα όλα τα θυγατρικά στοιχεία.
  • το γονικό γραφικό στοιχείο τοποθετεί θυγατρικά γραφικά στοιχεία μέσα του, μέρη των θυγατρικών γραφικών στοιχείων που εκτείνονται πέρα ​​από το γονικό θα είναι αόρατα.
  • μέρος της κατάστασης του γονικού γραφικού στοιχείου μεταφέρεται στα παιδιά του - αυτό ισχύει για ορισμένες ιδιότητες (ορατότητα, δραστηριότητα) και στυλ που εφαρμόζονται στο οπτικό στοιχείο.

Τα γραφικά στοιχεία που δεν έχουν γονικό στοιχείο (γραφικά στοιχεία ανώτατου επιπέδου) εμφανίζονται ως ξεχωριστά παράθυρα στο πρόγραμμα. Ας δούμε ένα παράδειγμα. Ας ονομάσουμε το νέο έργο ParentExample. Το αρχείο του έργου θα περιέχει τις συνήθεις ρυθμίσεις για ένα έργο GUI:

TEMPLATE = εφαρμογή TARGET = ParentExample QT += widgets

Για το widget που θα χρησιμοποιήσουμε ως κύριο παράθυρο, θα δημιουργήσουμε μια νέα κλάση. Για αυτό στην κατηγορία Αρχεία και ΤάξειςΑς επιλέξουμε την ενότητα C++ και ας επιλέξουμε C++ Class (βλ. Εικ. 13.2).

Το επόμενο βήμα είναι να δημιουργήσετε πολλά στοιχεία στο παράθυρο. Για να το κάνετε αυτό, ανοίξτε το αρχείο parentwidget.cpp και αλλάξτε τον κώδικα κατασκευής κλάσης. Για να εμφανίσετε στοιχεία, απλώς δημιουργήστε τα στον κατασκευαστή κλάσης και ορίστε το ParentWidget ως γονικό για αυτά. Ο κώδικας parentwidget.cpp μοιάζει με αυτό:

#include " parentwidget.h " #include #συμπεριλαμβάνω #συμπεριλαμβάνω ParentWidget::ParentWidget (QWidget * parent) : QWidget (γονικό) ( //Δημιουργία ετικέτας που υποδεικνύει το γονικό γραφικό στοιχείο - αυτό, δηλαδή, μια παρουσία της κλάσης ParentWidget. QLabel * lLabel=new QLabel (this); //Position σε σχέση με την επάνω αριστερή γωνία του γονικού γραφικού στοιχείου lLabel ->setGeometry (50, 0, 100, 30) ->setText ("TextLabel") QPushButton * lPushButton = new QPushButton (αυτό το lPushButton->setGeometry (50, 50, 100, 30); QLineEdit * lLineEdit = new QLineEdit ( this lLineEdit ->setGeometry (50, 100, 30 ) Παράδειγμα) //Τέλος αλλάξτε το μέγεθος του γονικού γραφικού στοιχείου setGeometry (x (), y (), 300, 150 και ορίστε το κείμενο τίτλου του παραθύρου setWindowTitle ("γονικό widgetΠαράδειγμα");

Δεδομένου ότι το γονικό στοιχείο είναι ParentWidget , η ετικέτα (QLabel), το κουμπί (QPushButton) και το πεδίο κειμένου (QLineEdit) βρίσκονται μέσα σε αυτό. Η θέση των θυγατρικών γραφικών στοιχείων ορίζεται σε σχέση με την επάνω αριστερή γωνία του πατέρα. Μπορείτε εύκολα να το επαληθεύσετε αλλάζοντας το μέγεθος και τη θέση του παραθύρου του προγράμματός μας. Παρατηρήστε πώς δημιουργήσαμε τα στοιχεία διεπαφής χρήστη στο σωρό χρησιμοποιώντας τον νέο τελεστή. Αυτό διασφαλίζει ότι τα στοιχεία δεν θα αφαιρεθούν μετά την ολοκλήρωση του κατασκευαστή ParentWidget.

Κανόνας 2: Μειώστε τον φόρτο των χρηστών

Κανόνας 3: Κάντε τη διεπαφή συμβατή

κατευθυντήριες γραμμές

Πρόγραμμα Tidy Start Menu

Σύναψη

Λογοτεχνία

Εισαγωγή

"Ο χρυσός κανόνας του σχεδιασμού είναι: "Ποτέ μην κάνετε στους άλλους ό,τι έκαναν σε εσάς." ”

Τρέισι Λέοναρντ

Γιατί πρέπει να ακολουθείτε τις αρχές του σχεδιασμού της διεπαφής χρήστη;

Το λογισμικό πρέπει να αναπτυχθεί λαμβάνοντας υπόψη τις απαιτήσεις και τις επιθυμίες του χρήστη - το σύστημα πρέπει να προσαρμοστεί στον χρήστη. Αυτός είναι ο λόγος για τον οποίο οι αρχές σχεδιασμού είναι τόσο σημαντικές.

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

Οι αρχές σχεδιασμού διεπαφής είναι έννοιες και απόψεις υψηλού επιπέδου που μπορούν να χρησιμοποιηθούν στη σχεδίαση λογισμικού. Πρέπει να καθορίσετε ποια αρχή είναι πιο σημαντική και αποδεκτή για το σύστημά σας.

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

Οι τρεις αρχές του σχεδιασμού της διεπαφής χρήστη διατυπώνονται ως εξής:

1) έλεγχος της διεπαφής από τον χρήστη.

2) μείωση του φορτίου μνήμης χρήστη.

3) συνέπεια της διεπαφής χρήστη.

Πού να βρείτε τις αρχές σχεδίασης διεπαφής χρήστη

Ο Hansen παρουσίασε τον πρώτο κατάλογο αρχών σχεδιασμού. Οι αρχές είναι:

1) γνωρίζω τον χρήστη.

2) μείωση της απομνημόνευσης?

3) Βελτιστοποίηση των λειτουργιών.

4) εξάλειψη σφαλμάτων.

Πολλοί μεγάλοι κατασκευαστές λειτουργικών συστημάτων δημοσιεύουν σχετικά εγχειρίδια και οδηγίες όταν κυκλοφορούν τα νέα τους προϊόντα στην αγορά. Αυτές οι δημοσιεύσεις αποκαλύπτουν τις αρχές της προσέγγισης του σχεδιασμού διεπαφής. Τα εγχειρίδια παράγονται από την Apple Computer, Inc. (1992), IBM Corporation (1992), Microsoft Corporation (1995) και UNIX OSF/Motif (1993).

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

Η σημασία της τήρησης αρχών

"Η ασυμβατότητα της διεπαφής μπορεί να κοστίσει σε μια μεγάλη εταιρεία εκατομμύρια δολάρια σε απώλεια παραγωγικότητας και αυξημένο κόστος υποστήριξης." - Τζέσι Μπριεστ.

Αυτές οι αρχές ισχύουν για όλο το λογισμικό και το υλικό, σε όλους τους τύπους και τα στυλ διεπαφών. Αναπτύχθηκαν για μεγάλο χρονικό διάστημα: διεξήχθη έρευνα στον τομέα της διεπαφής λογισμικού, πραγματοποιήθηκε ανάπτυξη και ερευνήθηκαν χρήστες πολλών πλατφορμών υπολογιστών, συμπεριλαμβανομένων των Macintosh και PC.

Αυτές οι αρχές έχουν αντέξει στη δοκιμασία του χρόνου και την έλευση των νέων τεχνολογιών υπολογιστών. Ο Jakob Nielsen σημείωσε: «Οι αρχές θα παραμείνουν θεμελιώδεις ακόμα κι αν το πρόγραμμα έχει φουτουριστικό τρισδιάστατο σχέδιο με DataGlove για είσοδο, αναγνώριση κίνησης και ζωντανές εικόνες βίντεο. Θα είναι σχετικές επειδή εκφράζουν τη βασική ιδέα του διαλόγου μηχανή που χρησιμοποιεί εντολές.

Η ερμηνεία αυτών των αρχών θα εξαρτηθεί από το υλικό, το λειτουργικό σύστημα, τα στοιχεία της διεπαφής χρήστη και τις εργασίες του. Συχνά οι επιχειρηματικές αποφάσεις παρακάμπτουν τη χρήση αρχών από τους σχεδιαστές. Τα μοντέλα χρήστη και σχεδιαστή είναι επίσης διαφορετικά και επηρεάζουν τον τρόπο εφαρμογής των αρχών. Σε ορισμένα σημαντικά στάδια στην ανάπτυξη ενός έργου, μπορεί να προκύψει το ερώτημα: "Τι θα συμβεί στη συνέχεια;" Η απάντηση θα πρέπει να είναι: "Ό,τι θέλει ο χρήστης!"

Η απόφαση για την επιλογή των βέλτιστων αρχών για την κατασκευή μιας διεπαφής θα πρέπει να αναπτυχθεί από κοινού από όλα τα μέλη της ομάδας σχεδιασμού. Αυτές οι λύσεις θα συμβάλουν στη βελτίωση της δυνατότητας αγοράς και της ανάπτυξης προϊόντων λογισμικού.

Κανόνες σχεδίασης διεπαφής χρήστη

«Κάνε το πιο απλό, αλλά όχι πιο πρωτόγονο».

Άλμπερτ Αϊνστάιν

Κανόνας 1: Δώστε τον έλεγχο στον χρήστη

Οι έμπειροι σχεδιαστές επιτρέπουν στους χρήστες να επιλύουν ορισμένα προβλήματα κατά την κρίση τους. Οι αρχιτέκτονες, με την ολοκλήρωση της κατασκευής ενός σύνθετου συγκροτήματος κτιρίων, πρέπει να χαράξουν μονοπάτια για τους πεζούς ανάμεσά τους. Δεν γνωρίζουν ακόμη πού ακριβώς θα περάσουν οι άνθρωποι τους ιστότοπους. Επομένως, ποτέ δεν χαράσσονται μονοπάτια ταυτόχρονα με την κατασκευή κτιρίων. Στους χώρους μεταξύ των σπιτιών τοποθετούνται πινακίδες με την επιγραφή: «Παρακαλώ περπατήστε στο γρασίδι». Μετά από αρκετό καιρό, οι οικοδόμοι επιστρέφουν και μόνο τώρα, σύμφωνα με τη «βούληση» του πληθυσμού, γεμίζουν τα πατημένα μονοπάτια με άσφαλτο.

Αρχές που δίνουν στον χρήστη τον έλεγχο του συστήματος:

1) χρησιμοποιήστε τις λειτουργίες με σύνεση.

2) Παρέχετε στον χρήστη την ευκαιρία να επιλέξει: να εργαστεί είτε με ποντίκι, είτε με πληκτρολόγιο, είτε με συνδυασμό και των δύο.

3) επιτρέψτε στον χρήστη να εστιάσει την προσοχή του.

4) Δείξτε μηνύματα που θα τον βοηθήσουν στη δουλειά του.

5) δημιουργία συνθηκών για άμεσες και αναστρέψιμες ενέργειες, καθώς και ανατροφοδότηση.

6) παρέχει κατάλληλες διαδρομές και εξόδους.

7) να προσαρμόσει το σύστημα σε χρήστες με διαφορετικά επίπεδα εκπαίδευσης.

8) να γίνει πιο κατανοητή η διεπαφή χρήστη.

9) δώστε στον χρήστη την ευκαιρία να προσαρμόσει τη διεπαφή σύμφωνα με τις προτιμήσεις του.

10) επιτρέπουν στο χρήστη να χειρίζεται απευθείας αντικείμενα διεπαφής.

Χρησιμοποιήστε τις λειτουργίες με σύνεση

Οι λειτουργίες δεν είναι πάντα κακές. Είναι απαραίτητο να επιτραπεί σε ένα άτομο να επιλέξει τους τρόπους που χρειάζεται. Η διεπαφή πρέπει να είναι τόσο φυσική ώστε ο χρήστης να αισθάνεται άνετα να εργάζεται μαζί τους. Ο χρήστης δεν σκέφτεται να μεταβεί σε λειτουργία εισαγωγής ή επανεγγραφής όταν εργάζεται σε επεξεργαστή κειμένου - αυτό είναι αρκετά λογικό και φυσικό.

Επιτρέψτε σε ένα άτομο να χρησιμοποιεί ποντίκι και πληκτρολόγιο

Δυνατότητα εργασίας με πληκτρολόγιο χρησιμοποιώντας πληκτρολόγιο αντί για ποντίκι. Αυτό σημαίνει ότι θα είναι πιο εύκολο για τον χρήστη να εργαστεί, απλώς είτε δεν μπορεί να το χρησιμοποιήσει είτε δεν το έχει. Οι γραμμές εργαλείων έχουν σχεδιαστεί για να επιταχύνουν την εργασία σας όταν χρησιμοποιείτε ποντίκι. Ωστόσο, όταν εργάζεστε με το πληκτρολόγιο, δεν είναι δυνατή η πρόσβαση σε αυτά - για τέτοιες περιπτώσεις, παρέχονται "αναπτυσσόμενα" μενού.

Επιτρέψτε στον χρήστη να αλλάξει την προσοχή του

Μην αναγκάζετε τους χρήστες να ολοκληρώσουν τις αρχικές ακολουθίες ενεργειών. Δώστε τους μια επιλογή - ακυρώστε ή αποθηκεύστε τα δεδομένα και επιστρέψτε εκεί που σταμάτησαν. Αφήστε τους χρήστες να έχουν την ευκαιρία να ελέγχουν τη διαδικασία εργασίας στο πρόγραμμα.

Εμφάνιση επεξηγηματικών μηνυμάτων και κειμένων

Χρησιμοποιήστε όρους φιλικούς προς το χρήστη σε όλη τη διεπαφή. Δεν χρειάζεται να ξέρουν για bits και byte!

Θα πρέπει να επιλέξετε τον σωστό τόνο στα μηνύματα και τις προσκλήσεις. Είναι εξίσου σημαντικό να ασφαλιστείτε από προβλήματα και λάθη. Η κακή ορολογία και ο εσφαλμένος τόνος θα οδηγήσουν τους χρήστες να κατηγορήσουν τον εαυτό τους για σφάλματα που συμβαίνουν.

Παρέχετε άμεση και αναστρέψιμη δράση και ανατροφοδότηση

Κάθε προϊόν λογισμικού πρέπει να περιλαμβάνει λειτουργίες UNDO και REDO. Ο χρήστης θα πρέπει να ενημερώνεται ότι η ενέργεια δεν μπορεί να αναιρεθεί και, εάν είναι δυνατόν, να επιτρέψει μια εναλλακτική ενέργεια. Ενημερώστε συνεχώς ένα άτομο για το τι συμβαίνει αυτή τη στιγμή.

Παρέχετε καθαρά μονοπάτια και εξόδους

Οι χρήστες θα πρέπει να απολαμβάνουν την εργασία με τη διεπαφή οποιουδήποτε προϊόντος λογισμικού. Ακόμη και οι διεπαφές που χρησιμοποιούνται στη βιομηχανία δεν πρέπει να εκφοβίζουν τον χρήστη δεν πρέπει να φοβάται να πατήσει κουμπιά ή να μεταβεί σε άλλη οθόνη. Η εισβολή του Διαδικτύου έδειξε ότι η πλοήγηση είναι η κύρια διαδραστική τεχνική στο Διαδίκτυο. Εάν ο χρήστης κατανοεί πώς να αποκτήσει πρόσβαση στην επιθυμητή σελίδα στο WWW, τότε υπάρχει 80 τοις εκατό πιθανότητα να κατανοήσει τη διεπαφή. Οι άνθρωποι μαθαίνουν τεχνικές προγράμματος περιήγησης πολύ γρήγορα.

Υποδοχή χρηστών με διαφορετικά επίπεδα δεξιοτήτων

Μην «θυσιάζετε» έμπειρους χρήστες προς όφελος των απλών χρηστών. Είναι απαραίτητο να τους παρέχεται γρήγορη πρόσβαση στις λειτουργίες του προγράμματος. Μην τους βαριέστε με πολλά βήματα για να εκτελέσουν μια ενέργεια, εάν έχουν συνηθίσει να χρησιμοποιούν μία εντολή μακροεντολής.

Κάντε τη διεπαφή χρήστη "διαφανή"

Η διεπαφή χρήστη είναι το «μυθικό» μέρος του προϊόντος λογισμικού. Με ένα καλό έργο, οι χρήστες δεν αισθάνονται καν την «παρουσία» του. Εάν είναι κακώς σχεδιασμένο, οι χρήστες θα πρέπει να καταβάλουν ακόμη και μεγάλη προσπάθεια για να χρησιμοποιήσουν αποτελεσματικά το προϊόν λογισμικού. Ο σκοπός της διεπαφής είναι να βοηθήσει τους ανθρώπους να αισθάνονται ότι βρίσκονται «μέσα» στον υπολογιστή και μπορούν ελεύθερα να χειρίζονται και να εργάζονται με αντικείμενα. Αυτό ονομάζεται «διαφανής» διεπαφή!

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

Από την παραπάνω σύντομη εισαγωγή είναι σαφές ότι τα υποχρεωτικά στοιχεία μιας γραφικής διεπαφής κατά την επίλυση επιστημονικών ή/και εκπαιδευτικών προβλημάτων θα πρέπει να είναι:

1. Ένα ή περισσότερα παράθυρα για την εμφάνιση γραφικών αποτελεσμάτων υπολογισμού.

2. Πολλά επεξεργάσιμα παράθυρα με τα οποία μπορείτε να ορίσετε ή/και να αλλάξετε τις τιμές των παραμέτρων εργασιών.

3. Κουμπιά ελέγχου που σας επιτρέπουν να ξεκινήσετε και να σταματήσετε τη διαδικασία υπολογισμού, να σχεδιάσετε ξανά τα αποτελέσματα και να πραγματοποιήσετε έξοδο από την εργασία.

4. Επεξηγηματικές σημειώσεις (στατικό κείμενο).

Φυσικά, είναι δυνατοί και άλλοι έλεγχοι, όπως λίστες με δυνατότητα κύλισης, κουμπιά επιλογής για την επιλογή μιας από τις πολλές επιλογές κ.λπ., αλλά σε αυτό το σεμινάριο θα εξετάσουμε λεπτομερώς μόνο τους τέσσερις τύπους που αναφέρονται. Το σχήμα 8 δείχνει την απλούστερη διεπαφή που δημιουργήθηκε για τη μελέτη των παλμών που σχηματίζονται όταν προστίθενται δύο αρμονικές ταλαντώσεις με παρόμοιες συχνότητες. Όπως φαίνεται από το σχήμα, όλα τα παραπάνω στοιχεία υπάρχουν σε αυτό.

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

Ρύζι. 8. Η απλούστερη γραφική διεπαφή χρήστη για την επίλυση του προβλήματος «Beat».

9.1. Δημιουργία της εμφάνισης της διεπαφής

Σε αυτήν την ενότητα, θα εξετάσουμε τη χρήση του MATLAB για την ανάπτυξη της εμφάνισης μιας γραφικής διεπαφής (GUI -GraphicsUserInterface) χρησιμοποιώντας γραφικά (οπτικά) εργαλεία προγραμματισμού. Για να καλέσετε τον οπτικό επεξεργαστή, εισαγάγετε την εντολή οδηγού στο παράθυρο εντολών του MATLAB. Μετά από ένα ορισμένο χρονικό διάστημα, που καθορίζεται από την ταχύτητα του υπολογιστή σας, θα εμφανιστούν δύο νέα παράθυρα, που φαίνονται στην Εικ. 9. Ένα από αυτά είναι ο πίνακας ελέγχου (Πίνακας ελέγχου, στην εικόνα στα αριστερά) και η φόρμα ή η περιοχή σχεδίασης (Εικόνα, στην εικόνα στα δεξιά). Αυτά τα παράθυρα μπορεί να επικαλύπτονται, αλλά για λόγους σαφήνειας της παρουσίασης τα τοποθετήσαμε δίπλα-δίπλα. Η εικόνα που φαίνεται παραπάνω θα εμφανιστεί στην οθόνη εάν δεν υπάρχει ανοιχτή εικόνα πριν καλέσετε τον οδηγό. Εάν η λειτουργία οδηγός καλείται μετά τη σχεδίαση μιας εικόνας, ανοίγει αντί να είναι άδεια. Θα εξετάσουμε τη δημιουργία μιας γραφικής διεπαφής από την αρχή.

Πριν δημιουργήσετε ένα γραφικό περιβάλλον, συνιστάται να «σχεδιάζετε ένα προσχέδιο» αυτού που θέλετε να έχετε ως διεπαφή. Θα εξετάσουμε ένα παράδειγμα εξόδου τριών διαφορετικών σημάτων σε τρία υποπαράθυρα, τα οποία σε όρους γραφικών υψηλού επιπέδου θα ορίζονται από το υπογραφικό τελεστών(3,1,k), όπου k είναι ο αριθμός γραφικής παράστασης. Εκτός,

Ρύζι. 9. Γενική προβολή του οπτικού προγράμματος επεξεργασίας γραφικών και του παραθύρου επεξεργασίας

στα δεξιά των πραγματικών μαρσπιέ με γραφήματα, θέλουμε να έχουμε τρία επεξεργάσιμα

πεδία στα οποία μπορείτε να εισάγετε/επεξεργάζεστε αριθμητικές τιμές των τριών

μεταβλητές. Αφήστε αυτές τις μεταβλητές να λαμβάνουν αυθαίρετες τιμές.

Σε αυτήν την παρουσίαση, δεν θα εξοπλίσουμε τα επεξεργάσιμα παράθυρά μας με έλεγχο

εάν οι εισαγόμενες τιμές πληρούν οποιεσδήποτε προϋποθέσεις, αν και αυτό είναι δυνατό

Κουτί. Ας ονομάσουμε αυτές τις μεταβλητές N, R, C. Στο παράδειγμα αυτό εννοούμε τον υπολογισμό

ρεύμα στο κύκλωμα RC όταν εφαρμόζεται σήμα με αριθμό N στους ακροδέκτες και τα R και C είναι αντίσταση

τάση και χωρητικότητα στο κύκλωμα (για λεπτομερή περιγραφή της εργασίας, βλ. παράγραφο 10 του κύριου

εγχειρίδιο κειμένου).

Η διεπαφή μας θα πρέπει να επιτρέπει την αλλαγή των τιμών

τιμές των N, R και C, που λαμβάνονται σε τρεις που βρίσκονται

υποπαράθυρα το ένα πάνω από το άλλο σήμα (τάση,

τροφοδοτείται στους ακροδέκτες), παράγωγο του σήματος

la και τάση αντίστασης U r . Εκτός

παράθυρα για την εμφάνιση γραφημάτων και επεξεργάσιμα παράθυρα

R u n E x i t

η είσοδος πρέπει να τοποθετηθεί στον πίνακα διεπαφής

υπάρχουν άλλα δύο κουμπιά - RUN - έναρξη του προγράμματος

Ρύζι. 10. Προβολή διεπαφής

λογαριασμός και ΕΞΟΔΟΣ - τερματισμός και διαγραφή

παράθυρο γραφικών.

Στο πρώτο στάδιο, είναι απαραίτητο να αναπτυχθεί η εμφάνιση της διεπαφής. Ας είναι

Σύμφωνα με το προκαταρκτικό μας σκίτσο, η διεπαφή πρέπει να φαίνεται περίπου

ως εξής (Εικ. 10). Τα στοιχεία αυτής της διεπαφής είναι τρία παράθυρα

εμφάνιση γραφημάτων (άξονες ως προς τον πίνακα ελέγχου), τρεις στατικές επιγραφές N, R, C (κείμενο), τρία παράθυρα για εισαγωγή/επεξεργασία δεδομένων (επεξεργασία) και δύο κουμπιά (πάτημα).

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

το μέρος όπου πρέπει να βρίσκεται η επάνω αριστερή γωνία του πρώτου υποπαραθύρου. Κάνοντας κλικ και κρατώντας πατημένο το αριστερό κουμπί του ποντικιού, πρέπει να σύρετε το παραλληλόγραμμο που προκύπτει στο επιθυμητό μέγεθος. Μετά από αυτό, η διαδικασία για την κατασκευή των άλλων δύο παραθύρων επαναλαμβάνεται με παρόμοιο τρόπο.

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

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

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

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

Τα παράθυρα εξόδου και επεξεργασίας, τα παράθυρα και τα κουμπιά στατικού κειμένου, καθώς και άλλα αντικείμενα που κατασκευάζονται με αυτόν τον τρόπο μπορούν να ευθυγραμμιστούν και ορισμένα κενά μεταξύ τους μπορούν να οριστούν χρησιμοποιώντας τον πίνακα ευθυγράμμισης (Εργαλεία ευθυγράμμισης).

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

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

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

Δεδομένου ότι από προεπιλογή τα μεγέθη όλων των αντικειμένων ορίζονται σε pixel, αυτό μπορεί να οδηγήσει στο γεγονός ότι κατά την αλλαγή μεγέθους του παραθύρου εξόδου, τα κουμπιά ή/και τα παράθυρα ενδέχεται να συγκρουστούν μεταξύ τους. Για να αποφευχθεί ένα τέτοιο ανεπιθύμητο φαινόμενο, είναι απαραίτητο να ορίσετε τις μονάδες μεγέθους όλων των αντικειμένων σε αδιάστατες μεταβλητές - κλάσματα του μεγέθους του παραθύρου. Αυτό το μέγεθος ονομάζεται κανονικοποιημένο. Για να το κάνετε αυτό, πρέπει να καλέσετε το πρόγραμμα επεξεργασίας ιδιοτήτων κάνοντας κλικ στο κουμπί με το επάνω κουμπί στον πίνακα ελέγχου.

γράφοντας στο Property editor. Έχοντας επιλέξει όλα τα αντικείμενα που εισάγαμε στο επάνω παράθυρο του επεξεργαστή ιδιοτήτων (με πατημένο το πλήκτρο Ctrl και επιλέγοντας αντικείμενα με το αριστερό κουμπί του ποντικιού), στο κάτω παράθυρο του επεξεργαστή ιδιοτήτων βρίσκουμε την ιδιότητα Units (μονάδες μέτρησης) και επιλέξτε το κάνοντας κλικ στο αριστερό κουμπί του ποντικιού. Μετά από αυτό, στο μεσαίο τμήμα του προγράμματος επεξεργασίας, η ιδιότητα Units θα εμφανιστεί σε ένα ειδικό παράθυρο στα αριστερά και ένα παράθυρο επιλογής τιμών θα εμφανιστεί στα δεξιά, το οποίο περιέχει μια αναπτυσσόμενη λίστα με έγκυρες τιμές ιδιοτήτων. Η ιδιότητα Μονάδες πρέπει να οριστεί σε κανονικοποίηση. Ομοίως, πρέπει να ορίσετε την τιμή της ιδιότητας FontUnits – τις μονάδες μεγέθους γραμματοσειράς. Αυτό διασφαλίζει ότι το μέγεθος της γραμματοσειράς αλλάζει όταν αλλάζει το μέγεθος του παραθύρου.

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

8 Το πρόγραμμα επεξεργασίας ιδιοτήτων μπορεί να κληθεί όχι μόνο χρησιμοποιώντας το κουμπί στον πίνακα ελέγχου, αλλά

και κάντε διπλό κλικ στο αντίστοιχο αντικείμενο.

Η υποβολή της καλής σας δουλειάς στη βάση γνώσεων είναι εύκολη. Χρησιμοποιήστε την παρακάτω φόρμα

Φοιτητές, μεταπτυχιακοί φοιτητές, νέοι επιστήμονες που χρησιμοποιούν τη βάση γνώσεων στις σπουδές και την εργασία τους θα σας είναι πολύ ευγνώμονες.

Δημοσιεύτηκε στις http://www.allbest.ru/

Δημοσιεύτηκε στις http://www.allbest.ru/

ΟΜΟΣΠΟΝΔΙΑΚΟΣ ΕΚΠΑΙΔΕΥΤΙΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΤΗΣ Ρ.Φ

Κρατικό εκπαιδευτικό ίδρυμα

ανώτερη επαγγελματική εκπαίδευση

Ρωσικό κράτος ανθρωπιστικόπανεπιστήμιο

Ινστιτούτο Επιστημών της Πληροφορικής και Τεχνολογιών Ασφάλειας

Τμήμα Γενικής Πληροφορικής

ΔΟΚΙΜΗ

ΣΤΗΝ ΤΕΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΓΡΑΦΙΚΕΣ ΔΙΕΠΑΦΕΣ ΚΑΙ ΕΡΓΑΛΕΙΑ ΑΝΑΠΤΥΞΗΣ ΤΟΥΣ

Lisichenok Konstantin Viktorovich

Εξωτερικό 3 χρόνια σπουδών

(διάρκεια σπουδών 4 ετών)

Ομάδα β (πληροφοριακή σφαίρα)

Επιστημονικός Υπεύθυνος,

Ph.D., δάσκαλος: Mashintsov E.A.

Μόσχα 2005

Σχέδιο

Εισαγωγή

Σύστημα παραθύρων X

Γενική δομή συστήματος X Παράθυρο

Προγραμματισμός με χρήση της βιβλιοθήκης X Toolkit Intrinsic (Xt).

Xt αντικείμενα, η ταξινόμηση τους

Πηγές πληροφοριών

Εισαγωγή

Όταν, για πρώτη φορά το 1959, στο συνέδριο της UNESCO για την επεξεργασία πληροφοριών, ο Streci πρότεινε έναν τρόπο κατανομής χρόνου για την επίλυση προβλημάτων στους υπολογιστές, από εκείνη τη στιγμή ήταν συνηθισμένο να μετράται η αρχή των διαδραστικών υπολογιστών και, κατά συνέπεια, η μελέτη του τη διεπαφή ανθρώπου-μηχανής. Καθώς αυξανόταν η ισχύς του υπολογιστή, αυξανόταν και το κόστος του στοιχείου συνομιλίας του λογισμικού. Το ζήτημα της αποδοτικότητας της μηχανής έχει γίνει πιο έντονο με την ταχεία είσοδο στην αγορά σταθμών εργασίας που συνδυάζουν τη διαδραστικότητα με τα γραφικά. Ο όρος αποδοτικότητα άλλαξε έκτοτε το νόημά του - αν προηγουμένως αντικατόπτριζε χαρακτηριστικά όπως ο χρόνος του επεξεργαστή και η ποσότητα της μνήμης που καταλάμβανε, τώρα νοείται ως ευκολία ανάπτυξης, ευκολία συντήρησης και ευκολία εργασίας με το πρόγραμμα. Επομένως, το κόστος έρευνας και ανάπτυξης της διεπαφής χρήστη είναι δικαιολογημένο.

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

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

Μπορείτε να ταξινομήσετε τέτοια εργαλεία (εργαλεία διεπαφής χρήστη) σύμφωνα με το ακόλουθο σχήμα:

* Συστήματα οθόνης κειμένου (κατάρα, ncurse, κ.λπ.).

* Συστήματα γραφικών οθόνης.

* Συστήματα πολλαπλών παραθύρων (WMS):

* προσανατολισμένη στους χαρακτήρες (κείμενο)

* γραφικό?

*Εργαλειοθήκες διεπαφής χρήστη

* παραδοσιακό?

* Αντικειμενοστραφής

* UIDS - User Interface Development System - Σύστημα ανάπτυξης διεπαφής χρήστη (εργαλειοθήκη).

* UIMS - Σύστημα διαχείρισης διεπαφής χρήστη - σύστημα διεπαφής χρήστη (διαχείριση) (μονάδα λογισμικού - αναπόσπαστο μέρος του τελικού προϊόντος σε συνδυασμό με το αντίστοιχο UIDS).

* UIDE - User Interface Development Environment - περιβάλλον ανάπτυξης διεπαφής χρήστη.

Αυτό το σχήμα δεν προσποιείται ότι είναι μια συστηματική ταξινόμηση, είναι απλώς μια απαρίθμηση.

Επί του παρόντος, καταβάλλονται μεγάλες προσπάθειες για την ανάπτυξη μεθόδων και τη δημιουργία εργαλείων εντός συστημάτων που ονομάζονται UIMS - User Interface Management System.

ΣύστημαX Παράθυρο

X Παράθυροή απλώς Χείναι ένα σύστημα για τη δημιουργία μιας γραφικής διεπαφής χρήστη, αρχικά σε υπολογιστές που εκτελούν UNIX. Το X δημιουργήθηκε στο MIT (Massachusetts Institute of Technology). Επί του παρόντος, η έκδοση 11.6 (X11R6) έχει ήδη κυκλοφορήσει και οι προετοιμασίες βρίσκονται σε εξέλιξη για την κυκλοφορία της έκδοσης 7.

Ένα ιδιαίτερο χαρακτηριστικό του X Window είναι η αρχιτεκτονική του - είναι κατασκευασμένο σύμφωνα με το σχήμα πελάτη-διακομιστή. Η αλληλεπίδραση μεταξύ του πελάτη X και του διακομιστή Χ λαμβάνει χώρα στο πλαίσιο του αντίστοιχου πρωτοκόλλου επιπέδου εφαρμογής - του πρωτοκόλλου X. Το X Window είναι αδιάφορο για τη μεταφορά που χρησιμοποιείται, η οποία μπορεί να είναι είτε τοπική υποδοχή UNIX είτε οποιαδήποτε δικτυακή υποδοχή, για παράδειγμα, TCP. Αυτό σημαίνει ότι ο πελάτης Χ και ο διακομιστής Χ μπορούν να "ζουν" σε διαφορετικούς υπολογιστές, π.χ. το πρόγραμμα μπορεί να πραγματοποιήσει είσοδο/έξοδο γραφικών πληροφοριών στην οθόνη άλλου υπολογιστή και οι διαφορές στην αρχιτεκτονική του πελάτη X και του διακομιστή X δεν παίζουν κανένα ρόλο - αυτό διασφαλίζεται από το πρότυπο του πρωτοκόλλου X. Το σύστημα παρέχει γραφική έξοδο στην οθόνη του μηχανήματος, λαμβάνει σήματα από συσκευές εισόδου όπως το πληκτρολόγιο και το ποντίκι και τα μεταδίδει σε προγράμματα. Θα πρέπει να σημειωθεί ότι η συσκευή εξόδου μπορεί να έχει περισσότερες από μία οθόνες. Το X παρέχει έξοδο σε οποιοδήποτε από αυτά. Όλα αυτά: οθόνη (οθόνες), συσκευές εισόδου (πληκτρολόγιο, ποντίκι) καλούνται με όρους X Window - οθόνη.

Χάρη στην αρχιτεκτονική του, το X Window μπορεί να χρησιμοποιηθεί ελεύθερα σε κατανεμημένα υπολογιστικά συστήματα, για παράδειγμα, σε δίκτυα TCP/IP (Διαδίκτυο).

Το X επιτρέπει στον χρήστη (πίσω από την οθόνη) να επικοινωνεί με πολλά προγράμματα ταυτόχρονα. Για να αποτρέψει τη μίξη της εξόδου τους, το σύστημα δημιουργεί «εικονικές υποοθόνες» - παράθυρα - στην οθόνη προβολής. Κάθε εφαρμογή (κατά κανόνα) σχεδιάζει μόνο στο δικό της παράθυρο (ή παράθυρα). Το X παρέχει ένα σύνολο εργαλείων για τη δημιουργία παραθύρων, τη μετακίνησή τους στην οθόνη, την αλλαγή του μεγέθους τους, την εμφάνισή τους κ.λπ.

Κατά κανόνα, τα προγράμματα έχουν ένα σύνολο παραμέτρων διαμόρφωσης - πόρους. Αυτό μπορεί να είναι το χρώμα του παραθύρου, διάφορες παράμετροι της γραμματοσειράς κειμένου (σύνδεση, μέγεθος κ.λπ.) και πολλά άλλα. Το σύστημα τυποποιεί τον τρόπο ορισμού των πόρων εφαρμογών, τη διαχείρισή τους και περιέχει έναν αριθμό διαδικασιών για την εργασία μαζί τους. Αυτό το σύνολο συναρτήσεων ονομάζεται «διαχειριστής πόρων» (Xrm - X Resource Manager). Η «αποθήκευση» των παραμέτρων του προγράμματος ονομάζεται βάση δεδομένων πόρων.

Το X λειτουργεί σύμφωνα με την ιδεολογία της αρχιτεκτονικής με γνώμονα τα γεγονότα - οργανώνει την επικοινωνία μεταξύ των ίδιων των προγραμμάτων και μεταξύ των προγραμμάτων και του εξωτερικού περιβάλλοντος μέσω εκδηλώσεων. Ένα συμβάν είναι μια μονάδα πληροφοριών που προσδιορίζει αλλαγές ή ενέργειες που συμβαίνουν σε ένα σύστημα. Χρησιμοποιώντας το αναγνωριστικό συμβάντος, μπορείτε να λάβετε πληροφορίες σχετικά με αυτό - τον τύπο του συμβάντος, τα χαρακτηριστικά του, πού συνέβη κ.λπ.

Γενική συσκευή παραθύρου X

Σύστημα X Παράθυροείναι μια συλλογή προγραμμάτων και βιβλιοθηκών. Η «καρδιά» του είναι ένα ειδικό πρόγραμμα - ο διακομιστής X. Αυτή είναι μια ξεχωριστή διαδικασία UNIX που λαμβάνει χώρα στον υπολογιστή στον οποίο είναι συνδεδεμένη η οθόνη. Είναι ο διακομιστής που γνωρίζει τα χαρακτηριστικά ενός συγκεκριμένου εξοπλισμού και γνωρίζει τι πρέπει να γίνει για να εμφανίσει οποιοδήποτε αντικείμενο γραφικών, για παράδειγμα, ένα πρωτόγονο, στην οθόνη. Μπορεί επίσης να αντιλαμβάνεται και να επεξεργάζεται σήματα που προέρχονται από το πληκτρολόγιο και το ποντίκι.

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

Ωστόσο, για να προγραμματίσετε το X, δεν χρειάζεται να γνωρίζετε τις λεπτομέρειες της υλοποίησης του διακομιστή και του πρωτοκόλλου X. Το σύστημα παρέχει μια τυπική βιβλιοθήκη διαδικασιών μέσω της οποίας τα προγράμματα έχουν πρόσβαση σε υπηρεσίες X "σε υψηλό επίπεδο". Έτσι, για να εμφανιστεί ένα σημείο στην οθόνη, αρκεί να καλέσετε την αντίστοιχη τυπική διαδικασία, περνώντας της τις απαιτούμενες παραμέτρους. Αυτή η διαδικασία θα κάνει όλη τη δουλειά για τη δημιουργία πακέτων δεδομένων και τη μετάδοσή τους στον διακομιστή.

X παράθυρο

Όπως αναφέρθηκε προηγουμένως, ένα παράθυρο είναι μια βασική έννοια στο Χ. Αντιπροσωπεύει, τυπικά, μια ορθογώνια περιοχή στην οθόνη που παρέχει το σύστημα σε ένα πρόγραμμα πελάτη. Το τελευταίο χρησιμοποιεί ένα παράθυρο για την εμφάνιση γραφικών πληροφοριών.

Το παράθυρο έχει εσωτερικό και άκρη. Τα κύρια χαρακτηριστικά ενός παραθύρου είναι το πλάτος και το ύψος του εσωτερικού, καθώς και το πλάτος (πάχος) της άκρης. Αυτές οι παράμετροι ονομάζονται γεωμετρία παραθύρου.

Κάθε παράθυρο συνδέεται με ένα σύστημα συντεταγμένων, η αρχή του οποίου βρίσκεται στην επάνω αριστερή γωνία του παραθύρου (ακριβέστερα, στο εσωτερικό του). Ο άξονας x δείχνει προς τα δεξιά και ο άξονας y δείχνει προς τα κάτω. Η μονάδα μέτρησης και στους δύο άξονες είναι τα pixel.

Το X Window επιτρέπει σε ένα πρόγραμμα να δημιουργεί πολλά παράθυρα ταυτόχρονα. Συνδέονται σε μια ιεραρχία στην οποία άλλοι είναι «γονείς» και άλλοι «απόγονοι». Ο ίδιος ο διακομιστής δημιουργεί ένα κύριο παράθυρο σε κάθε οθόνη, το οποίο είναι το ανώτερο «γονικό» από όλα τα άλλα παράθυρα. Αυτό το παράθυρο ονομάζεται παράθυρο "root".

Διαχείριση παραθύρων

Τα Windows μπορούν να τοποθετηθούν αυθαίρετα στην οθόνη, επικαλύπτοντας το ένα το άλλο. Το X Window διαθέτει ένα σύνολο εργαλείων, με τα οποία το πρόγραμμα-πελάτης μπορεί να αλλάξει το μέγεθος των παραθύρων και τη θέση τους στην οθόνη. Ένα ιδιαίτερο χαρακτηριστικό του συστήματος είναι ότι δεν διαθέτει ενσωματωμένη δυνατότητα ελέγχου των παραθύρων χρησιμοποιώντας το ποντίκι ή το πληκτρολόγιο. Για να το κάνετε αυτό, χρειάζεστε έναν ειδικό πελάτη - έναν διαχειριστή παραθύρων.

Ωστόσο, ένας διαχειριστής δεν μπορεί να διαχειριστεί σωστά τα παράθυρα χωρίς να γνωρίζει τίποτα για αυτά. Τα Windows μπορούν να έχουν διάφορες ιδιότητες που πρέπει να παρέχει ο διαχειριστής παραθύρων: για παράδειγμα, σε πολλές περιπτώσεις είναι βολικό να υπάρχουν τίτλοι παραθύρων, σε άλλες είναι επιθυμητό το παράθυρο να μην μπορεί να γίνει μικρότερο ή αντίστροφα - μεγαλύτερο, συγκεκριμένου μεγέθους. Το παράθυρο μπορεί να "συμπτυχθεί" σε ένα εικονίδιο ("εικονίδιο") - σε αυτήν την περίπτωση ο διαχειριστής πρέπει να γνωρίζει ποιο εικονίδιο να χρησιμοποιήσει και πώς να το ονομάσει. Οι πελάτες μπορούν να κοινοποιήσουν τις επιθυμίες τους σχετικά με τα Windows στον διαχειριστή με δύο τρόπους:

* κατά τη δημιουργία ενός παραθύρου X, μπορούν να μεταδοθούν "συμβουλές" σχετικά με την αρχική θέση του παραθύρου, τη γεωμετρία του, τα ελάχιστα και μέγιστα μεγέθη κ.λπ.

* μπορείτε να χρησιμοποιήσετε τον ενσωματωμένο τρόπο επικοινωνίας μεταξύ προγραμμάτων στο X - τον μηχανισμό «ιδιοτήτων».

Χαρακτηριστικά γραφικών παραθύρου X

Το σύστημα παραθύρων X έχει σχεδιαστεί για να λειτουργεί σε οθόνες ράστερ. Ο αριθμός των bit ανά pixel ονομάζεται βάθος ή πάχος της οθόνης. Τα bits με τους ίδιους αριθμούς (τα ίδια δυαδικά ψηφία) σε όλα τα pixel σχηματίζουν ένα είδος επιπέδου, σαν παράλληλο με την οθόνη. Ονομάζεται χρωματικό επίπεδο. Το X σάς επιτρέπει να ζωγραφίζετε σε οποιοδήποτε επίπεδο χρώματος χωρίς να επηρεάζετε τα άλλα.

Η τιμή του εικονοστοιχείου δεν ορίζει απευθείας το χρώμα ενός σημείου στην οθόνη, αλλά ορίζει τον αριθμό του κελιού σε έναν ειδικό πίνακα στον οποίο αποθηκεύεται η τιμή χρώματος, π.χ. η τιμή pixel καθορίζει τον αριθμό χρώματος στην τρέχουσα παλέτα.

Το X έχει ένα μεγάλο σύνολο διαδικασιών που σας επιτρέπουν να σχεδιάζετε γραφικά πρωτόγονα: σημεία, γραμμές, τόξα, κείμενο. εργασία με περιοχές ελεύθερης μορφής.

«Ιδιότητες» και άτομα

Το X Window διαθέτει ενσωματωμένες εγκαταστάσεις για την παροχή πληροφοριών μεταξύ προγραμμάτων πελατών. Για να γίνει αυτό, χρησιμοποιείται ο μηχανισμός "ιδιοτήτων". Μια "ιδιότητα" είναι μια δομή πληροφοριών που σχετίζεται με κάποιο αντικείμενο, όπως ένα παράθυρο, που είναι διαθέσιμο σε όλους τους πελάτες X Κάθε ιδιότητα έχει ένα όνομα και ένα μοναδικό αναγνωριστικό - ένα άτομο. Συνήθως, τα ονόματα ακινήτων γράφονται με κεφαλαία γράμματα. Τα άτομα χρησιμοποιούνται για πρόσβαση στα περιεχόμενα των ιδιοτήτων προκειμένου να μειωθεί ο όγκος των πληροφοριών που αποστέλλονται μεταξύ των πελατών και του διακομιστή X.

Το X παρέχει έναν αριθμό διαδικασιών που σας επιτρέπουν να μεταφράσετε ένα όνομα ιδιότητας σε ένα μοναδικό άτομο και, αντίθετα, να αποκτήσετε τα απαραίτητα δεδομένα για ένα άτομο.

Ορισμένες ιδιότητες και τα αντίστοιχα άτομα τους είναι προκαθορισμένα και δημιουργούνται κατά την προετοιμασία του διακομιστή.

Προγραμματισμός με χρήση της βιβλιοθήκηςX Toolkit Intrinsic (Xt)

Για να διευκολυνθεί ο προγραμματισμός στο σύστημα παραθύρων X, έχουν δημιουργηθεί πολλά πακέτα. Το de facto πρότυπο επί του παρόντος είναι η βιβλιοθήκη X Toolkit Intrinsics (Xt), η οποία περιλαμβάνεται στην τυπική παράδοση του συστήματος. Το Xt διευκολύνει την προετοιμασία προγραμμάτων και τη δημιουργία παραθύρων. Επιπλέον, η βιβλιοθήκη περιέχει εργαλεία για τη δημιουργία αντικειμένων (στοιχεία ελέγχου) που χρησιμοποιούνται από τα προγράμματα κατά την επικοινωνία με τους χρήστες. Με όρους Xt, το στοιχείο ελέγχου ονομάζεται widget.

Επί του παρόντος, διάφορα σύνολα στοιχείων ελέγχου (αντικείμενα) υλοποιούνται με βάση το πακέτο, για παράδειγμα, Athena, OSF/Motif, Open Look. Αυτά τα κιτ, σε συνδυασμό με το ίδιο το Xt, χρησιμοποιούνται ως βολικό εργαλείο για τη δημιουργία διεπαφών. Φροντίζουν για την κουραστική δουλειά που θα έπρεπε να κάνει ένας προγραμματιστής χειροκίνητα αν έγραφε τη δική του εφαρμογή χρησιμοποιώντας μόνο τις ρουτίνες της βασικής βιβλιοθήκης X Window.

Xt Βασικά

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

Xt αντικείμενα

Το πακέτο Xt είναι μια βάση για τη δημιουργία στοιχείων ελέγχου - widgets (κενά). Με την έννοια Xt, ένα γραφικό στοιχείο είναι απλώς μια δομή δεδομένων της οποίας τα πεδία περιλαμβάνουν το αναγνωριστικό του ίδιου του στοιχείου, το αναγνωριστικό του παραθύρου του, εάν υπάρχει, και πολλά άλλα. Τα χαρακτηριστικά ενός τέτοιου αντικειμένου ονομάζονται πόροι. Οι πόροι του widget μπορεί να είναι, για παράδειγμα, το χρώμα του παραθύρου του, το χρώμα του περιγράμματος του παραθύρου, η γραμματοσειρά του εμφανιζόμενου κειμένου κ.λπ.

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

Κατά τη λειτουργία, το πρόγραμμα δημιουργεί τα ίδια τα αντικείμενα (στιγμιότυπα κλάσεων - widget). Σχηματίζουν συσσωματώματα, καθένα από τα οποία αντιπροσωπεύει επίσης μια ορισμένη ιεραρχία. Κάθε τέτοια ιεραρχία ονομάζεται δέντρο αντικειμένων (δέντρο widget). Η ρίζα του δέντρου είναι απαραίτητα ένα widget, το οποίο ανήκει σε μία από τις υποκατηγορίες της ειδικής κλάσης - Shell. Εάν μεταξύ δύο γραφικών στοιχείων Α και Β ενός δέντρου αντικειμένων, το πρώτο είναι πιο κοντά στη ρίζα από το δεύτερο, τότε το Α είναι το γονικό αντικείμενο ("γονέας") του Β και το Β είναι ένα υποαντικείμενο (ή "παιδικό" αντικείμενο ( παιδί) του A. Έτσι, Το αντικείμενο φλοιού είναι το γονικό γραφικό στοιχείο για όλα τα άλλα γραφικά στοιχεία σε αυτό το δέντρο αντικειμένων. Είναι αυτός που αλληλεπιδρά μεταξύ του προγράμματος και του διαχειριστή παραθύρων.

Η περιγραφόμενη ιεραρχία των widget αντιστοιχεί στη σχέση των παραθύρων τους, η οποία είναι ιδιότητα του X Window. Επιπλέον, μια άλλη ιεραρχία επιβάλλεται στα αντικείμενα. Το γεγονός είναι ότι κατά τη λειτουργία, ορισμένα αντικείμενα μπορούν να ελέγξουν άλλα. Για παράδειγμα, εάν ένα αντικείμενο έχει υποαντικείμενα, τότε όταν αλλάξει η γεωμετρία, μπορεί να ξαναχτίσει αυτόματα τις γεωμετρίες των απογόνων του. Για να συμβεί αυτό, δημιουργείται μια σύνδεση μεταξύ των γραφικών στοιχείων - μια σύνδεση "ελέγχου". Κάθε αντικείμενο μπορεί να έχει ένα ή περισσότερα υποαντικείμενα που «διαχειρίζονται» από αυτό.

Υπάρχουν τρεις μηχανισμοί για την αλληλεπίδραση μεταξύ ενός προγράμματος που χρησιμοποιεί το Xt και του γραφικού στοιχείου και του παραθύρου X.

*Επανάκληση

Διαδικασίες («διαδικασίες επανάκλησης»). Για κάθε κλάση, ορίζεται ένα σύνολο ενεργειών στις οποίες πρέπει να αντιδράσουν τα αντικείμενα που ανήκουν σε αυτήν. Για παράδειγμα, οποιαδήποτε τάξη έχει μια απάντηση στην καταστροφή ενός γραφικού στοιχείου. Όταν εκτελείται μια ενέργεια, καλείται είτε η τυπική συνάρτηση Xt είτε μία ή περισσότερες ρουτίνες που παρέχονται από το πρόγραμμα. Τέτοιες λειτουργίες ονομάζονται διαδικασίες επανάκλησης ή απλώς επανάκληση.

*Δράση

-διαδικασίες. Το πρόγραμμα μπορεί να παραγγείλει μια αντίδραση σε ένα συγκεκριμένο σύνθετο γεγονός (ομάδα γεγονότων) που προέρχεται από το Xt. Εάν συμβεί ένα συμβάν, το Xt αναζητά και καλεί την κατάλληλη συνάρτηση.

*Διαχειριστές εκδηλώσεων

- χειριστές εκδηλώσεων. Αυτή η μέθοδος είναι παρόμοια με την προηγούμενη, αλλά πιο γρήγορη και λιγότερο ευέλικτη. Σας επιτρέπει να αντιδράτε μόνο σε απλά (μεμονωμένα) γεγονότα, αλλά όχι στις αλληλουχίες τους.

Γενικό πρόγραμμα προγραμματισμού

Τα προγράμματα που εκτελούνται στο X πρέπει να εκτελούν έναν αριθμό τυπικών βημάτων, όπως τη δημιουργία σύνδεσης με τον διακομιστή, τη ρύθμιση των απαραίτητων ιδιοτήτων για τη διαχείριση παραθύρων και πολλά άλλα βήματα. Εάν χρησιμοποιείται Xt, τότε όλα αυτά γίνονται με μία διαδικασία - XtInitialize(). Αρχικοποιεί το ίδιο το πακέτο, το X Window Resource Manager, και εκτελεί άλλες απαραίτητες λειτουργίες Μια κλήση προς το XtInitialize() (ή το XtAppInitialize()) πρέπει να προηγείται όλων των άλλων διαδικασιών XtInitialize() που επιστρέφει το αναγνωριστικό του κελύφους μπορεί να χρησιμοποιηθεί ως η ρίζα του δέντρου αντικειμένου ενός προγράμματος Συνήθως, το όνομα της κλάσης του προγράμματος είναι το ίδιο με το όνομα του προγράμματος, αλλά αρχίζει με κεφαλαίο γράμμα βάση δεδομένων.

Κάθε πρόγραμμα μπορεί να ορίσει ορισμένες παραμέτρους στη γραμμή εντολών. Το Xt ορίζει «τυπικές» παραμέτρους που μπορούν να περάσουν κατά την εκτέλεση ενός προγράμματος. Επιπλέον, η γραμμή εντολών μπορεί να περιέχει μη τυπικές παραμέτρους που είναι μοναδικές για αυτήν την εφαρμογή. Η XtInitialize() σαρώνει τη γραμμή εντολών και τοποθετεί τις αντίστοιχες τιμές δεδομένων στη βάση δεδομένων.

Κατά την προετοιμασία, δημιουργείται επίσης ένα πλαίσιο προγράμματος - μια δομή που αποθηκεύει όλες τις πληροφορίες σχετικά με την εφαρμογή. Το πλαίσιο αποσκοπεί στην προστασία του προγράμματος από την επίδραση διαφόρων τροποποιήσεων στο λειτουργικό σύστημα. Η XtInitialize() δημιουργεί κάποιο τυπικό περιβάλλον (προεπιλεγμένο πλαίσιο), αλλά, ωστόσο, ξεκινώντας από την τέταρτη έκδοση του X, συνιστάται να δημιουργηθεί ένα ξεχωριστό «προσωπικό» πλαίσιο για κάθε μεμονωμένη παρουσία του προγράμματος, για το οποίο, όσον αφορά το Xt , θα πρέπει να χρησιμοποιήσετε μια κλήση στη διαδικασία XtAppInitialize() ( αντί για XtInitialize()). Σημειώστε εδώ ότι μια εφαρμογή στο Xt μπορεί να έχει όχι ένα, ως συνήθως, αλλά πολλά αντικείμενα «ανώτερου επιπέδου».

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

Αφού προετοιμαστούν όλα τα αντικείμενα του προγράμματος για εργασία, οι γραφικές τους αναπαραστάσεις (για παράδειγμα, τα παράθυρα που αντιστοιχούν σε αυτά τα γραφικά στοιχεία) εμφανίζονται στην οθόνη με τη διαδικασία XtRealizeWidget().

Το επόμενο στάδιο είναι ο κύριος κύκλος - ο κύκλος λήψης και αποστολής συμβάντων. Υλοποιείται καλώντας τη διαδικασία XtMainLoop() (XtAppMainLoop()).

Ένα πρόγραμμα που χρησιμοποιεί μόνο διαδικασίες βιβλιοθήκης πυρήνα X (Xlib) πρέπει το ίδιο να εξετάζει κάθε εισερχόμενο συμβάν (λαμβάνοντάς το από την ουρά συμβάντων με μια ρητή κλήση, όπως XNextEvent() ή XPeekEvent()) και να ανταποκρίνεται ανάλογα. Εάν μια εργασία έχει πολλά παράθυρα, τότε πριν εκτελέσετε οποιεσδήποτε ενέργειες, είναι απαραίτητο να προσδιορίσετε σε ποια από τα παράθυρα συνέβη το συμβάν και σε ποιο επίπεδο ιεραρχίας θα υποβληθεί σε επεξεργασία αυτό το συμβάν (θα επεξεργαστεί αυτό το αντικείμενο ή ο γονέας του;) . Όλα αυτά είναι αρκετά κουραστικά.

Η Xt φροντίζει για όλες τις εργασίες ρουτίνας. Η XtMainLoop() λαμβάνει το επόμενο συμβάν και καθορίζει το παράθυρο στο οποίο προορίζεται. Υπάρχει ένα αντίστοιχο widget κατά μήκος του παραθύρου. Για το τελευταίο, ορίζεται ένας χειριστής συμβάντων, διαδικασία ενέργειας ή επανάκληση, τα οποία καταχωρούνται για να αντιδρούν στο συμβάν που έχει συμβεί. Εάν υπάρχει κάποιο δίκτυο, καλούνται. Ο μηχανισμός που περιγράφεται παραπάνω ονομάζεται μετάδοση συμβάντων.

Το XtMainLoop() (XtAppMainLoop()) τερματίζει αυτόματα το πρόγραμμα όταν ζητηθεί από τον διαχειριστή παραθύρων.

Xt αντικείμενα, η ταξινόμηση τους

Το Xt παρέχει ένα σύνολο εργαλείων για τη δημιουργία αντικειμένων που χρησιμοποιούν τα προγράμματα για να επικοινωνούν με τον χρήστη και, γενικά, με τον υπόλοιπο έξω κόσμο.

Κάθε γραφικό στοιχείο που δημιουργείται από το πρόγραμμα είναι αντιπροσωπευτικό μιας κατηγορίας ή της άλλης. Το Xt και τα πακέτα που βασίζονται σε αυτό, όπως OSF/Motif, Athena, Tk/tcl, Open Look κ.λπ., έχουν μεγάλο αριθμό τέτοιων κλάσεων. Η δημιουργία νέων γραφικών στοιχείων που δεν παρέχονται σε τυπικές βιβλιοθήκες απαιτεί επίσης τη δημιουργία (καθορισμό) της αντίστοιχης κλάσης, η οποία είναι συνήθως μια χρονοβόρα εργασία.

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

Όλες οι κλάσεις Xt σχηματίζουν μια ιεραρχία. Εάν η κλάση Β είναι πιο κοντά στην κορυφή της ιεραρχίας από την κλάση D, τότε η Β ονομάζεται η βασική κλάση της D και η D ονομάζεται η παραγόμενη κλάση (ή υποκλάση) της Β.

Οι υποκλάσεις κληρονομούν τα χαρακτηριστικά όλων των βασικών τους κατηγοριών. Αυτό σημαίνει ότι ένα στιγμιότυπο μιας κλάσης έχει τα χαρακτηριστικά όχι μόνο της κλάσης της, αλλά και τα χαρακτηριστικά όλων των βασικών κλάσεων.

Στα προγράμματα, κάθε κλάση προσδιορίζεται από μια μεταβλητή που οδηγεί στην αντίστοιχη δομή δεδομένων. Αυτή η μεταβλητή ονομάζεται δείκτης προς την κλάση. Τα δεδομένα σε αυτή τη δομή συμπληρώνονται όταν αρχικοποιείται το Xt.

Κύριες κατηγορίες γραφικών στοιχείων:

Αντικείμενο. Μια αφηρημένη κλάση (μια κλάση που δεν δημιουργεί το δικό της αντικείμενο) που χρησιμοποιείται ως η ρίζα ενός δέντρου όλων των αντικειμένων. Περιλαμβάνει μια ενιαία υποκατηγορία:

RectObj. Μια αφηρημένη κλάση που χρησιμοποιείται για τον καθορισμό ορισμένων κοινών χαρακτηριστικών που είναι απαραίτητα για τη λειτουργία διαφορετικών τύπων αντικειμένων (για παράδειγμα, για αντικείμενα που δεν έχουν παράθυρο). Περιέχει μια υποκατηγορία:

Πυρήνας. Η ρίζα του δέντρου των κλάσεων widget που έχουν παράθυρα. Αυτή η κλάση ορίζει χαρακτηριστικά που είναι κοινά σε όλα τα αντικείμενα, όπως το μέγεθος του γραφικού στοιχείου και η θέση του στην οθόνη. Περιέχει υποκατηγορία:

Σύνθετος. Τα γραφικά στοιχεία που ανήκουν σε αυτήν την κλάση μπορούν να είναι γονείς άλλων αντικειμένων. Τα στιγμιότυπα της κλάσης Composite ορίζουν την ακόλουθη συμπεριφορά για τα υποαντικείμενά τους:

* ορίζει τη θέση των γραφικών στοιχείων "παιδιού" σύμφωνα με ορισμένους περιορισμούς.

* όταν καταστρέφεται, ελευθερώνει τη μνήμη που χρησιμοποιείται από υποαντικείμενα (όταν καταστρέφετε ένα widget της κλάσης Composite, όλοι οι «απόγονοί» του θα καταστραφούν πρώτα).

* ελέγχει την εμφάνιση των παραθύρων των θυγατρικών widget στην οθόνη.

* ελέγχει τη μεταφορά της εστίασης εισόδου μεταξύ αντικειμένων.

Η κλάση Composite περιέχει υποκλάσεις:

Περιορισμός. Αυτή η κλάση είναι μια περαιτέρω επέκταση της βασικής κλάσης. Οι παρουσίες του έχουν πρόσθετες δυνατότητες ελέγχου του μεγέθους και της θέσης των απογόνων τους. Για παράδειγμα, τα υποαντικείμενα μπορούν να τοποθετηθούν με ειδική σειρά: σε μια σειρά, σε μια στήλη κ.λπ.

Κέλυφος. Αυτή είναι μια ειδική κλάση που έχει σχεδιαστεί για να αλληλεπιδρά με τον διαχειριστή παραθύρων. widget από αυτήν την τάξη μπορεί να έχει μόνο ένα παιδί. Η κλάση Shell περιέχει υποκλάσεις:

OverrideShell. Είναι μια σημαντική υποκατηγορία της κατηγορίας Shell. Για ένα παράθυρο widget αυτής της κλάσης, το χαρακτηριστικό override_redirect ορίζεται σε True, δηλ. ο διαχειριστής παραθύρων δεν το ελέγχει. Κατά κανόνα, τα παράθυρα αντικειμένων αυτής της κατηγορίας δεν έχουν αξεσουάρ που έχει προστεθεί από τον διαχειριστή παραθύρων (τίτλος, πλαίσιο, τυπικά κουμπιά) και χρησιμοποιούνται κυρίως για τη δημιουργία μενού διαφόρων τύπων.

WMShel. Αυτή είναι μια ειδική υποκλάση της κλάσης Shell που περιέχει πρόσθετα πεδία που απαιτούνται για την αλληλεπίδραση με τον διαχειριστή παραθύρων. Περιέχει:

VendorShell. Αυτή η κλάση προορίζεται να παρέχει τη δυνατότητα αλληλεπίδρασης με ειδικούς διαχειριστές παραθύρων. Αυτή η κλάση περιέχει υποκατηγορίες:

TopLevelShell. Τα γραφικά στοιχεία αυτής της κλάσης χρησιμοποιούνται συνήθως ως αντικείμενα φλοιού του δέντρου αντικειμένων προγράμματος. Περιέχει:

ApplicationShell. Ένα πρόγραμμα μπορεί συνήθως να έχει μόνο μία παρουσία, που ανήκει στην κλάση ApplicationShell.

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

Κάθε μία από τις κλάσεις widget, και επομένως τα αντικείμενα που δημιουργούνται στη βάση της, έχουν έναν αρκετά μεγάλο αριθμό παραμέτρων. Με όρους Xt, αυτοί ονομάζονται "πόροι". Το Xt παρέχει ένα ευρύ φάσμα εργαλείων για να εργαστείτε μαζί τους.

Πρόσθετες λειτουργίες Xt

Το Xt παρέχει έναν μηχανισμό για εργασία με αρχεία (και γενικά εξωτερικές συσκευές) σε ασύγχρονη λειτουργία. Μια εφαρμογή μπορεί να καταχωρήσει μια διαδικασία που θα καλείται όταν τα δεδομένα είναι έτοιμα ή όταν προκύψουν σφάλματα ανάγνωσης/εγγραφής.

Το Xt δίνει σε μια εφαρμογή τη δυνατότητα να εκτελεί συγκεκριμένες ενέργειες σε καθορισμένα χρονικά διαστήματα. Για παράδειγμα, εμφανίστε περιοδικά την τρέχουσα ώρα στην οθόνη σε ένα δεδομένο παράθυρο, κ.λπ. Για τέτοιους σκοπούς, χρησιμοποιείται ένας ειδικός μηχανισμός Xt - ένα χρονόμετρο. Παρέχει μια κλήση σε ένα καθορισμένο χρονικό διάστημα σε μια ειδική λειτουργία που καθορίζεται από το πρόγραμμα.

Το Xt παρέχει τη δυνατότητα εκτέλεσης κάποιας ενέργειας όταν η ουρά συμβάντων είναι κενή. Αυτό επιτυγχάνεται με την εγγραφή μιας ειδικής διαδικασίας "εργασίας" που θα καλέσει το Xt εάν η ουρά συμβάντων είναι κενή. Τέτοιες συναρτήσεις χρησιμοποιούνται συνήθως για την εκτέλεση διαφόρων ενεργειών και υπολογισμών σε πολύ σύντομο χρονικό διάστημα.

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

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

Το Xt υποστηρίζει διάφορους τρόπους εργασίας με γραφικά στοιχεία. Έτσι, το πρόγραμμα, χρησιμοποιώντας τις διαδικασίες που παρέχονται από το Xt, μπορεί να εμφανίσει ένα παράθυρο, να ορίσει έναν ή τον άλλο τρόπο λειτουργίας για αυτό και να κλείσει το παράθυρο όταν δεν είναι απαραίτητο. Αυτές οι διαδικασίες χρησιμοποιούνται κυρίως για τη δημιουργία αναδυόμενων μενού και διαλόγων. Κατά κανόνα, όλα τα σύνολα γραφικών στοιχείων (για παράδειγμα, OSF/Motif) έχουν τις δικές τους πολύ πιο βολικές διαδικασίες για τη δημιουργία μενού και διαλόγων.

Τα πρόσθετα στο Xt Xt είναι επί του παρόντος εξαιρετικά τυποποιημένα από την κοινοπραξία X, αλλά δεν υπάρχουν πρότυπα υψηλότερου επιπέδου. Δημοφιλής:

*OSF/Motif Toolkit.

* Σετ γραφικών στοιχείων Athena.

* OPEN LOOK Intrinsic Toolkit.

* Συνεντεύξεις

* Tk/tcl.

Το πιο κοινό και σχεδόν de facto πρότυπο θα πρέπει πιθανώς να θεωρηθεί OSF/Motif.

Αθήνα

Το Athena Widget Set παρέχεται από την Κοινοπραξία X ως μέρος της τυπικής διανομής του X. Η Athena δημιουργήθηκε μέσω εργασιών σε βασικές εφαρμογές και βοηθητικά προγράμματα κατά τη διάρκεια του MIT Athena Project, το οποίο οδήγησε στο X Window System.

Η Αθηνά είχε αρχικά «επίπεδα» γραφικά - όλα τα κουμπιά, τα μενού και άλλα στοιχεία διεπαφής δεν είχαν σκιές, δηλ. ήταν επίπεδες. Πριν από περίπου ένα χρόνο κυκλοφόρησε το AW3d - μια παραλλαγή του Athena Widgets, στο οποίο αυτό το μειονέκτημα εξαλείφθηκε.

Μοτίβο

Το Open Software Foundation Motif (OSF/Motif) είναι ένα πακέτο που περιλαμβάνει έναν διαχειριστή παραθύρων, ένα σύνολο βοηθητικών προγραμμάτων για την εκτέλεση διαφόρων βοηθητικών λειτουργιών και μια βιβλιοθήκη αντικειμένων που έχουν δημιουργηθεί με βάση το Toolkit Intrinsics.

Το Motif υποστηρίζει όλες τις κλάσεις Xt και συνεπώς τους πόρους αυτών των κλάσεων, αλλά για την καταγραφή του ονόματος και της κλάσης του πόρου ενός αντικειμένου, χρησιμοποιούνται σταθερές, ξεκινώντας με το πρόθεμα XmN και XmC, αντίστοιχα. Για την καταγραφή του τύπου του πόρου, χρησιμοποιούνται σταθερές με το πρόθεμα XmR (αντί για XtR, που υιοθετείται στο Xt).

Το Motif επεκτείνει τις πολλές κατηγορίες αντικειμένων που παρέχονται από το Xt. Συγκεκριμένα, το Motif υποστηρίζει ένα αρκετά μεγάλο σύνολο κλάσεων που σας επιτρέπουν να δημιουργείτε μενού, γραμμές κύλισης), κουμπιά με δυνατότητα κλικ, στοιχεία επεξεργασίας κ.λπ.

Επιπλέον, το Motif παρέχει μια ειδική κατηγορία αντικειμένων που ονομάζονται gadget - αυτά αποτελούν μια ξεχωριστή κλάση στο Motif, το XmGadget, το οποίο είναι μια υποκλάση της κλάσης RectObj. Μπορούν επίσης να χρησιμοποιηθούν για τη δημιουργία στοιχείων διεπαφής, αλλά έχουν την ιδιαιτερότητα ότι δεν έχουν δικά τους παράθυρα. Για να σχεδιάσει, ένα gadget χρησιμοποιεί το παράθυρο του γονέα του.

Κάθε κλάση widget έχει μια αρκετά ευρεία επιλογή τόσο από κληρονομικούς όσο και πρόσθετους πόρους ειδικά για αυτήν. Σας επιτρέπουν να ελέγχετε τόσο σημαντικά χαρακτηριστικά αντικειμένων όπως το χρώμα φόντου, η τοποθεσία στην οθόνη, η γραμματοσειρά του εμφανιζόμενου κειμένου κ.λπ.

Μερικές από τις κλάσεις Motif δεν χρησιμοποιούνται για τη δημιουργία στιγμιότυπων γραφικών στοιχείων (τέτοιες κλάσεις ονομάζονται αφηρημένες κλάσεις στην αντικειμενοστραφή ορολογία προγραμματισμού). Περιέχουν τα πιο κοινά χαρακτηριστικά και μεθόδους που είναι απαραίτητες για τη λειτουργία διαφόρων τύπων widget.

Το Motif έχει δύο κύριες υποκατηγορίες αντικειμένων: XmPrimitive και XmManager (η κλάση XmGadget αναφέρθηκε νωρίτερα). Και οι δύο αυτές κατηγορίες είναι αφηρημένες. Το πρώτο από αυτά κληρονομεί από την κλάση Core και χρησιμοποιείται ως βάση για κλάσεις αντικειμένων που δεν κατέχουν άλλα αντικείμενα. Παραδείγματα είναι κουμπιά με δυνατότητα κλικ, λίστες κ.λπ. Η κλάση XmManager κληρονομεί από την κλάση Constraint και χρησιμοποιείται για τη δημιουργία αντικειμένων που μπορούν να έχουν και να διαχειρίζονται θυγατρικά αντικείμενα.

Ταξινόμηση αντικειμένων

Κλάση XmGadget. Όταν δημιουργούνται στιγμιότυπα κανονικών κατηγοριών αντικειμένων Motif (γραφικά στοιχεία), δημιουργείται ένα αντίστοιχο παράθυρο. Εάν ένα πρόγραμμα χρησιμοποιεί πολλά widgets, αυτό οδηγεί σε σημαντική επιβράδυνση της εφαρμογής. Ο χρόνος δαπανάται τόσο για τη δημιουργία παραθύρων όσο και για περαιτέρω εργασία μαζί τους. Αλλά είναι εύκολο να καταλάβει κανείς ότι δεν είναι καθόλου απαραίτητο να υπάρχει ξεχωριστό παράθυρο για κάθε αντικείμενο. Ετικέτες, κουμπιά και πολλά άλλα γραφικά στοιχεία θα μπορούσαν να χρησιμοποιηθούν με επιτυχία για τη σχεδίαση παραθύρων των γονικών αντικειμένων τους. Δεν υπάρχει παράθυρο - δεν χρειάζεται να επικοινωνήσετε ξανά με τον διακομιστή, η παραγωγικότητα αυξάνεται και η πρόσθετη μνήμη δεν σπαταλάται.

Πραγματοποιώντας ακριβώς αυτήν την ιδέα, οι προγραμματιστές του Motif αντιγράφουν ορισμένες κατηγορίες αντικειμένων, δημιουργώντας δύο εκδόσεις - με παράθυρο και χωρίς παράθυρο. Οι εκδόσεις των αντικειμένων που δεν έχουν παράθυρα αντλούν την ιεραρχία τους από μια αφηρημένη κλάση - XmGadget, και έχουν το ίδιο γενικό όνομα. Αυτή η ειδική κατηγορία αντικειμένων κληρονομεί τα χαρακτηριστικά της από την κλάση RectObj, η οποία, με τη σειρά της, είναι μια αφηρημένη κλάση που περιέχει τους βασικούς μηχανισμούς για τον έλεγχο της γεωμετρίας των αντικειμένων.

Εκτός από το γεγονός ότι τα gadget δεν έχουν δικά τους παράθυρα, τους επιβάλλονται και άλλοι περιορισμοί. Έτσι, οι χειριστές συμβάντων και οι πίνακες μετάφρασης δεν μπορούν να οριστούν για αυτούς. Επιπλέον, τα gadget δεν μπορούν να έχουν απόγονα αντικείμενα. Διαφορετικά, η λειτουργικότητα του gadget και του αντίστοιχου widget είναι η ίδια, οπότε δεν θα τα περιγράψουμε ξεχωριστά, θα τα παραθέσουμε μόνο.

Η κλάση XmGadget περιέχει υποκλάσεις:

* XmArrowButtonGadget.

* XmLabelGadget.\hfil

* XmPushButtonGadget.

* XmToggleButtonGadget.

* XmCascadeButtonGadget.

* XmSeparatorGadget.

Κλάση XmPrimitive. Αυτή η αφηρημένη τάξη περιέχει:

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

XmLabel. Οι εκπρόσωποι αυτής της κλάσης (ετικέτες) είναι ένα από τα πιο απλά αντικείμενα Motif. Οι ετικέτες έχουν σχεδιαστεί για να εμφανίζουν πληροφορίες: κείμενο ή εικόνες (bitmaps).

XmPushButton. Οι εκπρόσωποι αυτής της κατηγορίας είναι ορθογώνια κουμπιά με δυνατότητα κλικ στα οποία μπορεί να σχεδιαστεί μια γραμμή κειμένου.

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

XmDrawnButton. Τα αντικείμενα αυτής της κλάσης είναι παρόμοια με τα κουμπιά με δυνατότητα κλικ με τη μόνη διαφορά ότι δεν σχεδιάζεται κείμενο σε αυτά, αλλά μια αυθαίρετη εικόνα (χάρτης pixel).

XmToggleButton. Τα αντικείμενα αυτής της κλάσης είναι ένα μικρό κουμπί, δίπλα στο οποίο, κατά κανόνα, υπάρχει επεξηγηματικό κείμενο. Ένα κουμπί μπορεί να είναι σε δύο καταστάσεις: ενεργοποίηση και απενεργοποίηση (δηλαδή είναι διακόπτης). Σημαδεύονται από μια αλλαγή στην εμφάνιση του στοιχείου ελέγχου.

Ένας εκπρόσωπος αυτής της κατηγορίας χρησιμοποιείται για τη δημιουργία των λεγόμενων "κουμπιά ελέγχου", τα οποία θα ήταν πιο σοφό να καλέσετε "σημάδια ελέγχου" και "κουμπιά ραδιοφώνου" - διακόπτες πολλαπλών θέσεων. Οι πρώτες χρησιμοποιούνται για τον καθορισμό λογικών παραμέτρων, π.χ. έχοντας δύο έννοιες. Τα τελευταία εξυπηρετούν παρόμοιο σκοπό, αλλά το σύνολο τιμών σε αυτήν την περίπτωση είναι πεπερασμένο και περιέχει περισσότερα από δύο στοιχεία. Σε αυτήν την περίπτωση, η μορφή της γραφικής αναπαράστασης ενός αντικειμένου του τύπου XmToggleButton εξαρτάται από το εάν χρησιμοποιείται ως "σημάδι ελέγχου" ή ως κουμπί "ραδιόφωνο".

Κατά κανόνα, τα γραφικά στοιχεία της κλάσης XmToggleButton συνδυάζονται σε δομές που ονομάζονται, αντίστοιχα, πλαίσιο ελέγχου και πλαίσιο ραδιοφώνου. Αυτά τα μπλοκ, με τη σειρά τους, αντιπροσωπεύουν τροποποιήσεις αντικειμένων της κλάσης XmRowColumn που περιγράφονται παρακάτω.

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

XmList. Οι εκπρόσωποι αυτής της κατηγορίας είναι μερικά από τα πιο ενδιαφέροντα αντικείμενα Motif. Έχουν σχεδιαστεί για να εμφανίζουν μια λίστα συμβολοσειρών και δίνουν στον χρήστη την ευκαιρία να εκτελέσει διάφορες ενέργειες με τα στοιχεία της λίστας. Ο χρήστης μπορεί να επιλέξει μία ή περισσότερες σειρές που αντιπροσωπεύονται σε αυτό το αντικείμενο και επισημαίνονται. Επιπλέον, εάν η λίστα έχει εστίαση εισόδου, τότε ένα από τα στοιχεία της επισημαίνεται με ένα διάστικτο πλαίσιο. Αυτό το πλαίσιο ονομάζεται δρομέας λίστας.

XmScrollBar. Αντικείμενα αυτής της κατηγορίας - γραμμές κύλισης (γραμμές κύλισης), κατά κανόνα, χρησιμοποιούνται σε συνδυασμό με άλλα αντικείμενα, όπως μια λίστα (XmList), κείμενο (XmText) και άλλα. Η γραμμή κύλισης έχει σχεδιαστεί για κύλιση σε μια περιοχή εάν οι πληροφορίες που παρουσιάζονται σε αυτήν (λίστα, κείμενο, εικόνα κ.λπ.) δεν μπορούν να εμφανιστούν πλήρως στο παράθυρο. Τα αντικείμενα της κλάσης XmScrollBar αντιπροσωπεύουν μια λωρίδα (οριζόντια ή κάθετη), κατά μήκος των άκρων της οποίας υπάρχουν κουμπιά βέλους. Κάνοντας κλικ σε οποιοδήποτε από αυτά μετακινείται προς την κατεύθυνση που υποδεικνύεται από το βέλος. Στην ίδια τη γραμμή κύλισης υπάρχει ένα ρυθμιστικό (ρυθμιστικό) - ένα ορθογώνιο επισημασμένο με χρώμα. Εάν το «αγκιστρώσετε» με το ποντίκι και το «σύρετε», αυτό, κατά κανόνα, οδηγεί επίσης σε κύλιση της περιοχής.

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

XmText. Τα αντικείμενα αυτής της κλάσης σας επιτρέπουν να εμφανίσετε μία ή περισσότερες γραμμές κειμένου. Εάν οι γραμμές δεν χωρούν στο παράθυρο, τότε η εικόνα μπορεί να μετακινηθεί αριστερά-δεξιά και πάνω-κάτω. Το κείμενο μπορεί να επεξεργαστεί - η λειτουργία επεξεργασίας μπορεί να αλλάξει με την αντίστοιχη ρύθμιση πόρων αντικειμένων.

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

XmTextField. Τα αντικείμενα αυτής της κλάσης σάς επιτρέπουν να προβάλετε και να επεξεργαστείτε μία γραμμή κειμένου.

Κλάση XmManager. Αυτή η τάξη είναι αφηρημένη, δηλ. δεν χρησιμοποιείται για τη δημιουργία αντικειμένων. Καθορίζει τις βασικές παραμέτρους που απαιτούνται για τη δημιουργία κλάσεων widget που μπορούν να χειριστούν άλλα αντικείμενα. Αυτοί οι πόροι απαιτούνται για τη σωστή εμφάνιση των θυγατρικών γραφικών στοιχείων και τον έλεγχο του εάν λαμβάνουν εστίαση εισόδου.

Η κλάση XmManager περιέχει:

XmBulletinBoard. Τα αντικείμενα αυτής της κλάσης μπορούν να έχουν υποαντικείμενα που τοποθετούνται στο παράθυρο με οποιονδήποτε τρόπο. Οι συντεταγμένες των θυγατρικών παραθύρων γραφικών στοιχείων μετρώνται σε ένα σύστημα συντεταγμένων του οποίου η αρχή βρίσκεται στην επάνω αριστερή γωνία του παραθύρου ενός αντικειμένου της κλάσης XmBulletinBoard.

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

Η κλάση XmBulletinBoard περιέχει:

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

Για κάθε θυγατρικό γραφικό στοιχείο, μπορείτε να καθορίσετε εάν η αριστερή, η δεξιά, η κάτω ή η επάνω άκρη του είναι προσαρτημένη. Έτσι, εάν η αριστερή και η δεξιά ακμή ενός υποαντικειμένου κουμπωθούν στη δεξιά άκρη της φόρμας, τότε η απόσταση από αυτές σε αυτήν την άκρη θα παραμένει πάντα η ίδια. Εάν το μέγεθος της φόρμας μειωθεί, το υποαντικείμενο θα μετακινηθεί προς τα αριστερά και εάν το μέγεθος αυξηθεί, τότε θα μετακινηθεί προς τα δεξιά. Μπορείτε να συνδέσετε ένα υποαντικείμενο σε ένα άλλο. Στη συνέχεια, η αλλαγή της θέσης του υποαντικειμένου στο οποίο είναι συνδεδεμένο το widget θα οδηγήσει στη μετακίνηση του δεσμευμένου αντικειμένου έτσι ώστε η απόσταση μεταξύ τους να διατηρείται.

Κατά την αλλαγή του μεγέθους της φόρμας, διατηρούνται όλες οι συνδέσεις μεταξύ των υποαντικειμένων της.

XmSelectionBox. Τα αντικείμενα αυτής της κλάσης ("μπλοκ επιλογής") αντιπροσωπεύουν ένα παράδειγμα σύνθετου γραφικού στοιχείου και περιλαμβάνουν μια λίστα με δυνατότητα κύλισης όπου ο χρήστης μπορεί να επιλέξει το στοιχείο που χρειάζεται, καθώς και ένα πεδίο κειμένου (αντικείμενο XmTextField) όπου το επιλεγμένο στοιχείο στη λίστα είναι εκτεθειμένος. Ο χρήστης μπορεί να επεξεργαστεί την επιλογή που έχει κάνει. Το πεδίο λίστας και κειμένου μπορεί να έχει επεξηγηματικές ετικέτες, που καθορίζονται χρησιμοποιώντας το αντίστοιχο γραφικό στοιχείο της κλάσης XmLabel. Το αντικείμενο κλάσης XmSelectionBox περιλαμβάνει επίσης τρία πιεστικά κουμπιά (αντικείμενα XmPushButton). Από προεπιλογή, φέρουν τις ετικέτες "Ok", "Cancel" και "Help". Και τέλος, υπάρχει ένα ακόμη στοιχείο - ένα κουμπί με δυνατότητα κλικ, που ονομάζεται "Εφαρμογή" από προεπιλογή. Αρχικά, αυτό το υποαντικείμενο δημιουργείται, αλλά δεν περιλαμβάνεται στη λίστα των διαχειριζόμενων γραφικών στοιχείων.

Χρησιμοποιώντας το μπλοκ επιλογής, ο χρήστης μπορεί να επιλέξει τη δευτερεύουσα συμβολοσειρά που χρειάζεται στη λίστα ή να την εισαγάγει στο πεδίο κειμένου. Οι ρυθμίσεις επιβεβαιώνονται πατώντας το κουμπί "Ok".

Η κλάση XmSelectionBox περιλαμβάνει:

XmCommand. Τα αντικείμενα αυτής της κλάσης δίνουν στο χρήστη την ευκαιρία να επιλέξει την επιθυμητή εντολή χρησιμοποιώντας μια λίστα με ήδη εισαγόμενες εντολές ή εισάγοντας μια εντολή σε ένα πεδίο κειμένου που προβλέπεται ειδικά για αυτό στο widget.

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

Τα αντικείμενα αυτής της κλάσης περιέχουν στοιχεία:

* 2 πεδία κειμένου: "Φίλτρο" και "Επιλογή" (αντικείμενα της κλάσης XmNextField).

* 2 λίστες: "Directories" και "Files" (αντικείμενα της κλάσης XmList).

* 4 πιεστικά κουμπιά: "Ok", "Filter", "Cancel" και "Help" (αντικείμενα της κλάσης XmPushButton).

Το πεδίο κειμένου "Φίλτρο" καθορίζει μια μάσκα (πρότυπο) για την επιλογή από ολόκληρο το σύνολο αρχείων ενός συγκεκριμένου υποσυνόλου που ικανοποιεί την προϋπόθεση που καθορίζεται σε αυτό το πεδίο - που ταιριάζει με το πρότυπο - είναι αυτό το υποσύνολο που εμφανίζεται στη λίστα "Αρχεία". Η λίστα "Κατάλογοι" εμφανίζει τους υποκαταλόγους του τρέχοντος καταλόγου. Το πεδίο κειμένου «Επιλογή» εμφανίζει το αρχείο (το όνομά του) που έχει επιλεγεί στη λίστα «Αρχεία» και στο ίδιο πεδίο κειμένου ο χρήστης μπορεί να εισάγει χειροκίνητα το πλήρες όνομα του αρχείου που χρειάζεται. Τέσσερα κουμπιά που μπορούν να πατηθούν χρησιμοποιούνται για την εκτέλεση διαφόρων ενεργειών:

Εντάξει - επιλέξτε το καθορισμένο αρχείο.

Φίλτρο - ενημέρωση της λίστας των αρχείων που εμφανίζονται στο πεδίο κειμένου "Αρχεία" σύμφωνα με την τρέχουσα μάσκα.

Ακύρωση - κλείνει το παράθυρο του widget, δεν γίνεται επιλογή αρχείου.

Βοήθεια - μια κλήση για βοήθεια.

XmMessageBox. Τα αντικείμενα αυτής της κλάσης προορίζονται να παρέχουν στον χρήστη μηνύματα που προκύπτουν κατά τη λειτουργία του προγράμματος. Αυτό το γραφικό στοιχείο είναι σύνθετο. Διαθέτει μια περιοχή στην οποία εμφανίζεται μια γραμμή κειμένου (μήνυμα) και ένα ειδικό εικονίδιο που χαρακτηρίζει τον τύπο του μηνύματος. Επιπλέον, το αντικείμενο έχει τρία κουμπιά με δυνατότητα κλικ. Από προεπιλογή, φέρουν τις ετικέτες: "Ok", "Cancel" και "Help".

XmDrawing Area. Τα αντικείμενα αυτής της κλάσης παρέχουν στο πρόγραμμα ένα παράθυρο σχεδίασης και εμφάνισης πληροφοριών. Η ίδια η κλάση δεν παρέχει παραμέτρους που θα μπορούσαν να χρησιμοποιηθούν απευθείας για την εμφάνιση γραφικών. Ωστόσο, οι λίστες διαδικασιών επανάκλησης που είναι διαθέσιμες σε αυτήν την κατηγορία σάς επιτρέπουν να λαμβάνετε ειδοποιήσεις σχετικά με την ανάγκη επανασχεδίασης του παραθύρου του γραφικού στοιχείου και σχετικά με τη λήψη εστίασης εισόδου.

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

XmPanedWindow. Τα αντικείμενα αυτής της κλάσης μπορούν να συνδυάσουν ετερογενή γραφικά στοιχεία. Τα υποαντικείμενα χωρίζονται το ένα από το άλλο και ένα ειδικό στοιχείο που ονομάζεται φύλλο τοποθετείται ανάμεσά τους. Μοιάζει με ένα μικρό τετράγωνο και χρησιμοποιείται για την αλλαγή μεγέθους θυγατρικών γραφικών στοιχείων. Έτσι, εάν ένα αντικείμενο της κλάσης XmPanedWindow έχει δύο υποαντικείμενα, τότε μπορείτε να κάνετε τα εξής: «αγκιστρώστε» το φύλλο με το ποντίκι και το «σύρετε» προς την επιθυμητή κατεύθυνση (κάτω-πάνω ή αριστερά-δεξιά) - ενώ το διαμήκη μέγεθος (μέγεθος κατά την κατεύθυνση προς την οποία "σύρθηκε" φύλλο) το ένα παιδί θα αυξηθεί "σε βάρος" του άλλου (το μέγεθος του άλλου θα μειωθεί), οι εγκάρσιες διαστάσεις και των δύο υποαντικειμένων θα διατηρηθούν. Το "πλευρικό" μέγεθος ενός αντικειμένου της κλάσης XmPanedWindow καθορίζεται από το μέγιστο παρόμοιο μέγεθος των υποαντικειμένων του.

XmRowColumn. Τα αντικείμενα αυτής της κλάσης μπορούν να συνδυάσουν ετερογενή γραφικά στοιχεία. Τα υποαντικείμενα είναι διατεταγμένα με συγκεκριμένη σειρά - με τη μορφή μήτρας. widget της κλάσης XmRowColumn είναι η βάση για τη δημιουργία των ακόλουθων αντικειμένων:

πλαίσιο ελέγχου - "μπλοκ κουμπιών με δυνατότητα ελέγχου" (δηλαδή αντικείμενα της κλάσης XmToggleButton ή κλάσης XmToggleButtonGadget). Μεταξύ των κουμπιών που είναι διαθέσιμα στο "μπλοκ" μπορούν να επιλεγούν πολλά ("ενεργοποιημένα") ταυτόχρονα.

πλαίσιο ραδιοφώνου - "μπλοκ κουμπιών επιλογής" (δηλαδή αντικείμενα XmToggleButton ή XmToggleButtonGadget). Μεταξύ των κουμπιών που είναι διαθέσιμα στο "μπλοκ", μόνο ένα μπορεί να επιλεγεί ("ενεργοποιημένο") κάθε φορά.

αναπτυσσόμενο μενού - "αναπτυσσόμενο μενού" - ένα παράθυρο υπομενού που εμφανίζεται αφού επιλέξετε ένα κουμπί στο μενού ανώτατου επιπέδου (γραμμή μενού). Τα στοιχεία μενού είναι διατεταγμένα κάθετα.

μενού επιλογών - κουμπί με σχετικό μενού. Όταν κάνετε κλικ στο κουμπί, εμφανίζεται ένα παράθυρο μενού από το οποίο επιλέγεται μία τιμή παραμέτρου. Τα στοιχεία μενού είναι διατεταγμένα κάθετα.

αναδυόμενο μενού - ένα "αναδυόμενο μενού", το οποίο συνήθως καλείται κάνοντας κλικ στο τρίτο κουμπί του ποντικιού. το παράθυρο μενού εμφανίζεται στο μέρος όπου βρίσκεται ο δρομέας της. Τα στοιχεία μενού είναι διατεταγμένα κάθετα.

γραμμή μενού - ένα μενού ανώτατου επιπέδου που περιέχει έναν αριθμό κουμπιών (αντικείμενα της κλάσης XmCascadeButton ή XmCascadeButtonGadget), τα οποία χρησιμοποιούνται για την κλήση διαφόρων υπομενού (αναπτυσσόμενο μενού). Τα στοιχεία του μενού είναι τοποθετημένα οριζόντια.

XmScale. Ένα αντικείμενο αυτής της κλάσης είναι μια ορθογώνια περιοχή που περιέχει ένα ρυθμιστικό στερέωσης, χρησιμοποιώντας το οποίο ο χρήστης μπορεί να επιλέξει την τιμή της παραμέτρου που σχετίζεται με το αντικείμενο από μια καθορισμένη περιοχή.

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

Αυτή η κλάση περιέχει μια υποκλάση

XmMainWindow. Τα αντικείμενα αυτής της κλάσης αντιπροσωπεύουν ένα ξεχωριστό στοιχείο διεπαφής, που συνήθως αποτελείται από τα ακόλουθα μέρη:

* Μενού ανώτατου επιπέδου,

* παράθυρο εντολών,

* περιοχή "εργασίας",

* παράθυρο μηνυμάτων,

* και δύο γραμμές κύλισης (οριζόντια και κάθετη).

Τα υποαντικείμενα μπορούν να διαχωριστούν με διαχωριστικά.

Κλάσεις XmMenuShell και XmDialogShell. Το Motif παρέχει μια κλάση αντικειμένων XmMenuShell για τη δημιουργία διαφόρων μενού. Αυτή η κλάση κληρονομεί από την κλάση OverrideShell (από Xt).

Όπως αναφέρθηκε ήδη κατά την περιγραφή του Xt, η κλάση TransientShell χρησιμοποιείται για τη δημιουργία αντικειμένων προγράμματος που, αφενός, έρχονται σε άμεση επαφή με τον διαχειριστή παραθύρων και, αφετέρου, διαθέτουν χαρακτηριστικά που τα διακρίνουν από τα συνηθισμένα παράθυρα ανώτατου επιπέδου. Το κύριο από αυτά τα χαρακτηριστικά είναι ότι το γραφικό στοιχείο της κλάσης TransientShell δεν μπορεί να ελαχιστοποιηθεί. Αλλά αφαιρούνται από την οθόνη εάν ο γονέας μετατραπεί σε εικονίδιο. Αυτό το είδος widget χρησιμοποιείται συνήθως για τη δημιουργία βοηθητικών παραθύρων προγραμμάτων.

Το Motif χρησιμοποιεί τις καθορισμένες ιδιότητες της κλάσης TransientShell και τις επεκτείνει στην παράγωγη κλάση XmDialogShell. Το τελευταίο χρησιμεύει ως αντικείμενο φλοιού του διαλόγου.

Η δομή του πλαισίου διαλόγου στο Motif μπορεί να αναπαρασταθεί ως εξής:

Αντικείμενο κλάσης XmDialogShell

Ένα αντικείμενο υποκλάσης XmManager, όπως το XmBulletinBoard ή το XmForm

Διάφορα στοιχεία ελέγχου: κουμπιά, πεδία εισαγωγής κειμένου κ.λπ.

Η βιβλιοθήκη έχει ένα σύνολο διαδικασιών που διευκολύνουν τη δημιουργία του περιγραφόμενου σχεδίου.

Διαλόγους

Όπως αναφέρθηκε, η σχεδίαση ενός πλαισίου διαλόγου στο Motif είναι η εξής: πρώτα υπάρχει ένα αντικείμενο της κλάσης XmDialogShell, το οποίο στη συνέχεια περιλαμβάνει ένα γραφικό στοιχείο μιας από τις υποκλάσεις της κλάσης XmManager αυτό το αντικείμενο χρησιμοποιείται για να φιλοξενήσει διάφορα αντικείμενα.

Η βιβλιοθήκη παρέχει ειδικές διαδικασίες για τη δημιουργία διαλόγων. Διαφέρουν ως προς τον τύπο του γραφικού στοιχείου, που είναι θυγατρικό του αντικειμένου κλάσης XmDialogShell.

Έξοδος κειμένου

Η βιβλιοθήκη διαθέτει αρκετά μεγάλο αριθμό γραφικών στοιχείων που χρησιμοποιούνται για την εμφάνιση πληροφοριών κειμένου. Αυτά είναι XmLabel με υποκλάσεις, XmText, κ.λπ. Για να καθορίσετε πιθανές γραμματοσειρές που μπορούν να χρησιμοποιηθούν κατά τη σχεδίαση γραμμών, χρησιμοποιείται ο πόρος XmNfontlist. Είναι τύπου XmFontlist. Η σημασία του είναι ένα σύνολο ζευγών "font"/"font tag".

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

Το Motif διαθέτει εργαλεία όχι μόνο για εργασία με συμβολοσειρές κειμένων που εμφανίζονται σε μία μόνο γραμματοσειρά, αλλά σας επιτρέπει επίσης να εργάζεστε με αντικείμενα όπως "σύνθετες συμβολοσειρές" - π.χ. γραμμές κειμένου που χρησιμοποιούν πολλές γραμματοσειρές. Υπάρχει ένα σύνολο εργαλείων για τη δημιουργία τέτοιων συμβολοσειρών, την εργασία μαζί τους και τη μετατροπή τους σε κανονικές, "μονόγραμματες" συμβολοσειρές.

Εργασία με εικόνες

Το ίδιο το μοτίβο λειτουργεί με εικόνες, παρουσιάζοντάς τες σε μια εσωτερική μορφή, η οποία είναι ένα απλό bitmap, το οποίο καθορίζεται χρησιμοποιώντας τη δομή XImage.

Ελέγξτε την εστίαση εισόδου

Το Motif υποστηρίζει δύο μοντέλα εστίασης εισόδου. Το πρώτο από αυτά είναι σιωπηρό (δείκτης): η εστίαση δίνεται στο γραφικό στοιχείο στο οποίο μετακινείται ο δρομέας του ποντικιού. Το δεύτερο μοντέλο είναι σαφές: για να μεταφέρετε την εστίαση, πρέπει να τοποθετήσετε τον κέρσορα του ποντικιού στο παράθυρο του widget και να κάνετε κλικ στο αριστερό κουμπί του ποντικιού. Όταν ένα γραφικό στοιχείο ή gadget λαμβάνει εστίαση εισόδου, το περίγραμμά του επισημαίνεται.

Εκτός από αυτά τα μοντέλα μετάδοσης και λήψης εστίασης εισόδου, υπάρχει επίσης ένας μηχανισμός για τη μετάδοση της εστίασης εισόδου από το ένα widget στο άλλο. Τα αντικείμενα μπορούν να συνδυαστούν σε ομάδες - αυτό μπορεί να γίνει ορίζοντας τις απαιτούμενες τιμές των αντίστοιχων πόρων ή μπορεί να αφεθεί στο σύστημα. Στην τελευταία περίπτωση, το Motif συνδέει αυτόματα το widget χρησιμοποιώντας ενσωματωμένους κανόνες. Έτσι, για παράδειγμα, ένα αντικείμενο της κλάσης XmMessageBox περιέχει τρεις ομάδες: η μία είναι το "κύριο" αντικείμενο διαλόγου (κλάση XmForm), η δεύτερη είναι η "ετικέτα" στην οποία παρουσιάζεται το μήνυμα στον χρήστη, η τρίτη είναι το αντικείμενο διαλόγου που μπορεί να πατηθεί. κουμπιά.

Η εστίαση εισόδου μεταφέρεται τόσο από ένα αντικείμενο (σε μια ομάδα) σε ένα άλλο, όσο και από ομάδα σε ομάδα.

Η μεταφορά της εστίασης μέσα σε μια ομάδα γίνεται χρησιμοποιώντας τα πλήκτρα βέλους και από ομάδα σε ομάδα χρησιμοποιώντας το πλήκτρο tab (γι' αυτό οι ίδιες οι ομάδες ονομάζονται ομάδες Tab). Όταν δίνεται εστίαση σε μια ομάδα, η εστίαση εισόδου σε αυτήν την ομάδα δίνεται στο πρώτο αντικείμενο που μπορεί να λάβει εστίαση (ένα αντικείμενο μπορεί να αποτραπεί από τη λήψη εστίασης ορίζοντας τον αντίστοιχο πόρο σε μια κατάλληλη τιμή). Η σειρά με την οποία μεταφέρεται η εστίαση εισόδου μέσα σε μια ομάδα είναι η ίδια με τη σειρά με την οποία δημιουργούνται τα γραφικά στοιχεία της. Σε αυτή την περίπτωση, συνήθως ο συνδυασμός πλήκτρων μετακινεί την εστίαση προς την αντίθετη κατεύθυνση.

Το Motif παρέχει επίσης μια σειρά από ρουτίνες που μπορούν να χρησιμοποιηθούν για τον έλεγχο της εστίασης εισόδου.

Lesstif Πολύ πρόσφατα κυκλοφόρησε ένα δωρεάν λογισμικό ανάλογο του Motif, απόλυτα συμβατό με αυτό. Λέγεται Lesstif. Διατίθεται ελεύθερα στην αρχική του μορφή και μεταγλωττίζεται για διάφορες πλατφόρμες στο Διαδίκτυο.

Tk/tcl

Tcl - ανάγνωση: - σημαίνει: "γλώσσα εντολών εργαλείου" (instrumental command language). Αποτελείται από δύο μέρη: την ίδια τη γλώσσα και τη βιβλιοθήκη.

Η γλώσσα tcl έχει απλή σύνταξη και είναι εύκολο να προγραμματιστεί. Στην αρχική του μορφή, το tcl είναι διερμηνέας. Σας επιτρέπει να δημιουργείτε νέες κατασκευές, όπως συναρτήσεις ή προγράμματα, τα οποία παρέχουν στον έμπειρο προγραμματιστή ένα ισχυρό εργαλείο για την ανάπτυξη όχι μόνο τελικών εφαρμογών, αλλά και τη δική του επέκταση της γλώσσας TCL, δημιουργώντας και διατηρώντας το δικό του στυλ.

Η βιβλιοθήκη tcl παρέχει τη δυνατότητα χρήσης διερμηνέων γλωσσών TCL σε προγράμματα εφαρμογών και επομένως περιλαμβάνει σενάρια γραμμένα στη γλώσσα εντολών TCL σε προγράμματα. Η βιβλιοθήκη περιέχει έναν λεξικό αναλυτή για τη γλώσσα TCL, λειτουργίες που υλοποιούν ενσωματωμένες εντολές TCL και σας επιτρέπει να επισυνάψετε υπορουτίνες χρήστη (κλήσεις συναρτήσεων) σε εντολές TCL. Αυτή η διάταξη είναι δυνατή τόσο για C όσο και για C++.

Το Tk είναι μια εργαλειοθήκη συμβατή με Motif για την ανάπτυξη γραφικών διεπαφών χρήστη στο περιβάλλον X Window. Εκτός από την τυπική διεπαφή για C και C++, περιλαμβάνει μια διεπαφή για tcl, παρέχοντας τη δυνατότητα χρήσης εργαλείων Tk μέσα από το περιβάλλον διερμηνέα εντολών tcl. Αυτό σημαίνει ότι εκτός από τον τυπικό προγραμματισμό σε C και C++, τα τμήματα της διεπαφής της εφαρμογής μπορούν να υλοποιηθούν με τη μορφή σεναρίων στη γλώσσα TCL και αυτά τα μέρη διεπαφής (διάλογοι, διατάξεις οθόνης κ.λπ.) μπορούν να επεξεργαστούν δυναμικά, κατά τη διάρκεια τη λειτουργία του τελικού προγράμματος, χρησιμοποιώντας εντολές tcl

Το περιβάλλον παραθύρου επιθυμιών σάς επιτρέπει να δημιουργείτε εφαρμογές με γραφικές διεπαφές χρήστη χρησιμοποιώντας μόνο τη γλώσσα TCL.

Παρόμοια έγγραφα

    Προγραμματιστικά συστήματα και οι γραφικές τους δυνατότητες. Ανάπτυξη ενός μαθήματος πολυμέσων που προωθεί την αποτελεσματική εκμάθηση από μαθητές βασικού σχολείου του θέματος «Γραφικές δυνατότητες μιας γλώσσας προγραμματισμού» (με το παράδειγμα των γλωσσών προγραμματισμού Basic και Pascal).

    διατριβή, προστέθηκε 29/12/2010

    Στοιχεία γραφικών οθόνης, αντικείμενα και λειτουργίες συστήματος. Ένα σύστημα μέσων για την αλληλεπίδραση του χρήστη με μια συσκευή. Ιστορία γραφικών διεπαφών χρήστη προσωπικών υπολογιστών, ταξινόμηση τους. Σύστημα παραθύρων X.

    παρουσίαση, προστέθηκε 22/05/2012

    Προγραμματισμός και βασικές δυνατότητες γραφικών. Βασικές δομές για την προβολή και δύο κατασκευαστές με ορίσματα. Περαιτέρω συντεταγμένες του σημείου και αρχικοποίηση ενός νέου. Αποθήκευση και αλλαγή των συντεταγμένων της επάνω αριστερής γωνίας του ορθογωνίου.

    εργαστηριακές εργασίες, προστέθηκε 12/01/2011

    Διανυσματικά γραφικά υπολογιστή. Γραφικά πρωτόγονα. Δυνατότητες γραφικών της γλώσσας προγραμματισμού Pascal. Οδηγίες για την εκμάθηση γραφικών στη γλώσσα προγραμματισμού Pascal. Σχεδίαση γραφημάτων συναρτήσεων.

    εργασία μαθήματος, προστέθηκε 13/06/2007

    Ανάπτυξη προγράμματος για το λειτουργικό σύστημα Windows με χρήση VisualC++ (6.0, .NET). Εξέταση των βασικών μοντελοποίησης λογισμικού της λειτουργίας μιας συσκευής (ηλεκτρικός βραστήρας). Κανόνες για τη δημιουργία κλάσεων συσκευών και τη γραφική διεπαφή τους.

    εργασία μαθήματος, προστέθηκε 06/03/2014

    Γραφικά υπολογιστών. Παρουσίαση γραφικών πληροφοριών σε υπολογιστή. Μορφές γραφικών. Επεξεργαστές γραφικών. Διανυσματικά γραφικά. CorelDraw. Χαρακτηριστικά του προγράμματος και της διεπαφής. Τεχνολογικές δυνατότητες και χρήση του προγράμματος CorelDraw.

    εργασία μαθήματος, προστέθηκε 19/05/2007

    Ο ρόλος των κατανεμημένων υπολογιστικών συστημάτων στην επίλυση σύγχρονων προβλημάτων. Σύστημα εργαλείων DVM για την ανάπτυξη παράλληλων προγραμμάτων. Εργαλεία για την κατασκευή ενός τυπικού μοντέλου γραφικής διεπαφής. Απαιτήσεις για τη γραφική διεπαφή του συστήματος DVM.

    εργασία μαθήματος, προστέθηκε 15/10/2010

    Η ουσία του προγραμματισμού με χρήση του περιβάλλοντος Delphi 7 και οι βασικές γραφικές του δυνατότητες. Η δομή μιας μεταγλωττισμένης μονάδας λογισμικού εκτός σύνδεσης και οι αρχές της. Βασικές τεχνικές εργασίας με γραφικές διαδικασίες, κατασκευή τόξου, κύκλου και έλλειψης.

    εργασία μαθήματος, προστέθηκε 16/12/2011

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

    δοκιμή, προστέθηκε 06/07/2010

    Η εξέλιξη των γραφικών διεπαφών χρήστη. Το σύστημα παραθύρων X και οι διαχειριστές παραθύρων. Περιγραφή της επιφάνειας εργασίας και της εφαρμογής KDE και GNOME. Επισκόπηση των βασικών αρχών οργάνωσης διεπαφής στο σύστημα Windows, περιγραφή του πακέτου λογισμικού εφαρμογής του.



Συνιστούμε να διαβάσετε

Κορυφή