Das X-Window-System ist das Fenstersystem der UNIX-Welt. X-Anwendungen verwenden Routinen aus der Xlib-Bibliothek, aus den X Toolkit Intrinsics und aus einem Widget-Set.
Xlib
enthält verschiedene Low-Level-Funktionen auf der Ebene des X-Protokolls. Z.B.
XDrawLine(display, window, gc, x1, y1, x2, y2);
zeichnet auf dem Ausgabegerät display im Fenster
window unter Verwendung
des Grafik-Kontextes gc eine Linie von Punkt x1,y1 zu
Punkt x2,y2.
Die X Toolkit Intrinsics, kurz
Xt Intrinsics, sind ein Aufsatz auf die Xlib.
Hiermit lassen sich die grafischen Grundobjekte, die Widgets, kreieren
und manipulieren.
Widget ist ein aus den Begriffen Window und Gadget zusammengesetztes
Kunstwort und bedeutet Dialogobjekt.
Z.B.
XtVaGetValues(widget, XmNwidth, &breite, XmNheight, &hoehe, NULL);
besorgt von einem Widget die Breite und Höhe und überträgt diese Werte
in die Variablen breite bzw. hoehe.
Das X-Window-System stellt nur die Technik zur Verwaltung von grafischen Oberflächen zur Verfügung, die Toolkits hingegen bringen Verhalten ins Spiel, ein spezielles Look-And-Feel der Benutzerschnittstelle.
Ein Widget-Set ist eine Ansammlung von aufeinander abgestimmten Widget-Klassen, die sich durch Design und Funktionalität charakterisieren. Bekannte Beispiele für Widget-Sets sind OSF/Motif, Open Look und Athena Widgets.
In Motif gibt es z.B. einen dreidimensional aussehenden Druckknopf in der Klasse XmPushButton oder ein Anzeigefeld mit verschiebbarem Inhalt in der Klasse XmScrolledWindow. Widgets werden in Motif wie folgt klassifiziert:
Display-Widgets: | zum Anzeigen von Information |
z.B. XmPushButton, XmToggleButton, XmText | |
Container-Widgets: | zum Zusammenfassen der Kind-Widgets |
z.B. XmForm, XmRowColumn | |
Shell-Widgets: | spezielle Container-Widgets, eingesetzt als Top-Level-Fenster, stehen unter Verwaltung des Window-Managers. |
z.B. XmDialogShell | |
Die Widget-Klassen bilden einen Baum, bei dem die Kinder die Eigenschaften ihrer Eltern erben und erweitern. Aussehen und Verhalten der Widgets werden durch deren Ressourcen gesteuert. Z.B. besitzt ein Label-Widget die Ressourcen Widget-Größe, auszugebender Text, Font und Farbe des auszugebenden Textes. Manchen Widgets kann man die Adresse von Funktionen mitgeben. Eine solche Funktion, genannt callback, wird dann bei Eintreten eines bestimmten Ereignisses, z.B. Drücken eines Mausknopfes innerhalb des Widget-Fensters, aufgerufen.