4.7 Ο ΧΕΙΡΙΣΜΟΣ ΤΩΝ ΓΕΓΟΝΟΤΩΝ
Οι φάσεις που έχουν περιγραφεί εώς τώρα για την δημιουργία ενός προγράμματος
με το Xtookit είναι οι ακόλουθες:
- Αρχικοποίηση του Xtookit
- Δημιουργία και managing των widgets
- ορισμός των callback kαι των eventhandler συναρτήσεων
- Realizing του βασικού widget
Η τελική φαση του προγράμματος είναι ο χειρισμός των γεγονότων (events). Για
το σκοπό αυτό διατίθονται από το Xtoolkit οι συναρτήσεις XtNextEvent,
XtDispatchEvent και XtMainLoop:
H XtNextEvent λειτουργεί παρόμοια με την XNextEvent της Xlib, δηλαδή
λαμβάνει το επόμενο διαθέσιμο γεγονός από την ουρά γεγονότων του
προγράμματος. Η XtDispatchEvent αναλαμβάνει να χειριστεί αυτόματα το γεγονός
στέλνοντάς το στο κατάλληλο widget ώστε να κληθεί η αντιστοιχη callback ή
eventhandler συνάρτηση, άν υπάρχει. Τέλος η XtMainLoop είναι μια συνάρτηση
διευκόλυνσης που μπορεί να χρησιμοποιηθεί απευθείας αντί των δύο
προηγουμένων. Στη πραγματικότητα η XtMainLoop ορίζεται περίπου σαν:
void XtMainLoop()
{
XEvent *event;
while(TRUE)
{
XtNextEvent( XEvent *);
XtDispatchEvent( XEvent *);
}
}
Στην πλειοψηφία των περιπτώσεων δημιουργίας προγραμμάτων με το Xtoolkit η
χρήση της XtMainLoop είναι αρκετή. Η χρήση των άλλων δύο συναρτήσεων
ενδίκνειται στις λίγες εκείνες περιπτώσεις που θέλουμε να επεξεργαστούμε το
γεγονός περαιτέρω.