Grafische Benutzeroberflächen mit dem Gimp-Toolkit GTK+ erstellen verlangt dank des GUI-Builders Glade keine pixelgenauen Rechen- und Programmierorgien mehr. Greift man noch dazu auf »libglade«, eine Bibliothek, die das Interface aus einer XML-Datei zur Laufzeit aufbaut, zurück, wird es sogar möglich, das Aussehen einer Applikation ohne Neuübersetzung des Quellcodes zu modifizieren.
Die erste Release dieses Wunders, dessen Hauptautoren Damon Chaplin und Martijn van Beers sind, erschien mit Version 0.1 im April 1998. Mittlerweile ist es bei Version 0.5.11 (stabil) und 0.6.2 (Entwicklungsversion) angelangt, die im Internet unter[1] zum Download bereitstehen.
Wysiwyg fürs Interface
Seit der Entstehung von GTK+ wird nach Wegen gesucht, um das Interface einer Applikation nach dem Wysiwyg-Paradigma zu gestalten. Mehrere Open-Source-Projekte befassen sich mit diesem Thema, etwa Epingle[2], GLE[3], GRAD[4] und VDKBuilder[5]. Jedes hat besondere Eigenschaften und ist mehr oder minder ausgereift.
Glades besondere Attraktivität besteht darin, Code in verschiedenen Programmiersprachen zu erstellen. Standardmäßig generiert dieser GUI-Builder C-Code; er kann jedoch auch C++ (bei Verwendung von Glade--), Ada 95, Eiffel, Perl und Python erzeugen, wenn man zusätzliche Software (GtkAda, eGlade, Glade-Perl und PyGtk) installiert.
Diese Software liest die XML-Datei, in der Glade die User-Interface-Beschreibung ablegt, und erzeugt daraus den Code in der entsprechenden Programmiersprache. Sie wird aber dank perfekter Integration direkt von Glade aufgerufen, so dass der Benutzer gar nicht bemerkt, dass es sich um externe Programme handelt.
Signale und Container
Da Glade auf GTK+ basiert, muss man sich in erster Linie mit zwei GTK-Konzepten vertraut machen, um den GUI-Builder effizient zu benutzen. Dabei handelt es sich um die beiden Themen "Signale und Ereignisbehandlung" und "Container".
Um ein Programm zu befähigen, auf vom Benutzer hervorgerufene Ereignisse (etwa Bewegen des Mauszeigers, Drücken eines Mausknopfs, Tippen von Text, Schließen eines Fensters) zu reagieren, verwendet man in der GUI-Programmierung Signale. Je nach Typ des Widgets und dessen übergeordneter Klasse wird ein unverwechselbares Signal gesendet, das sich von einem Signal-Handler (bei GTK einer Callback-Funktion) regelrecht aufnehmen lässt, so dass eine bestimmte Aufgabe erfüllt wird. Es gibt Signale, die alle Widgets erben (zum Beispiel das Signal »destroy«), und andere, die Widget-spezifisch sind (etwa das Signal »toggled« von den Ein-/Aus-Schaltern). Die Idee der Signale stammt übrigens aus dem Hause des Qt-GUI-Toolkits[9].
Anders als die meisten GUI-Toolkits benutzt GTK+ eine Methode zur Positionierung der Widgets, die anfangs verwirrend zu sein scheint, aber sehr flexibel ist: das Verpacken einzelner Widgets in Containern. Bei diesem Verfahren informiert man GTK+, an welcher Position ein Widget erscheinen soll. Die wichtigsten Container sind Boxen und Tabellen. Mit ihnen bereitet man Zellen vor, in denen andere Widgets platziert werden. Dadurch lassen sich Widgets visuell ganz einfach verschachteln, was die Gestaltung komplexer Layouts mit Glade ermöglicht.
Mit diesem Wissen versehen startet man den GUI-Builder mit dem Kommando »glade &«. Daraufhin erscheinen drei neue Fenster: das Projekt-, das Paletten- und das Eigen-schaftsfenster (siehe Abbildung 1).
Abbildung 1: Glade - eine RAD-Umgebung stellt sich vor.