15.14 Weitere Widget- und GTK+-Elemente im Überblick
GTK+ hat natürlich noch weitaus mehr zu bieten als die im Buch vorgestellten Widgets. Wie schon erwähnt, im Buch haben Sie nur den Rand des Wahnsinns kennen gelernt. Hier folgt noch ein weiterer kurzer Überblick zu einigen Widgets, die hier kaum oder gar nicht zur Sprache gekommen sind, wobei es aber lohnenswert ist, sich näher damit zu befassen.
Hinweis Wer sich nach dieser Einführung jetzt noch intensiver mit GTK+ befassen will, dem habe ich auf der Buch-CD Weiterführendes zu dieser Bibliothek zusammengestellt.
|
Bäume und Listen
Mit den Bäumen und Listen steht Ihnen in GTK+ ein gewaltiges Widget-System zur Verfügung. Um Bäume und Listen in GTK+ zu erzeugen und zu verwenden, wird das Model/View/Controller-Konzept (kurz MVC) verwendet. Mit diesem Konzept wird die interne Darstellung der Daten (Model), die Anzeige (View) und die Manipulation der Daten (Controller) unterschieden. Dieses Konzept wird grob in folgende Hauptteile zerlegt:
|
GtkTreeModel – Mit diesem Widget erzeugen Sie die interne Modell-Schnittstelle. Hier könnten Sie entweder selbst aktiv werden und sich Ihre eigene Implementation erstellen, oder Sie verwenden das bereits mitgelieferte Modell GtkListStore für einfache Listen (flache Bäume) oder GtkTreeStore für Bäume mit eventuell mehreren Ebenen. |
|
GtkTreeView – Dieses Widget dient zur Darstellung der Baumansicht. Dabei wird für jede Spalte ein Objekt der Klasse GtkTreeViewColumn benötigt. |
|
GtkCellRenderer – Der Renderer ist das eigentliche Bindeglied zwischen der Baumansicht (GtkTreeView) und dem Baummodell (GtkTreeModel). Damit werden die Daten in einer Zelle formatiert, eingefügt und auch wieder dargestellt. Auch hier bringt GTK+ schon wieder vorgefertigte Klassen zur Verwendung von Text (GtkCellRendererText), Pixbufs (GtkCellRendererPixbuf) und Ankreuzbuttons (GtkCellRendererToggle) mit. |
Lineale
Einfache Lineale zur exakten Positionierung, wie Sie dies z. B. bei Textverarbeitungsprogrammen von den Seitenrändern her kennen (GtkRuler, GtkHRuler, GtkVRuler).
Zwischenablage (Clipboard)
Die Klasse GtkClipboard ist eine Zwischenablage, womit Daten zwischen verschiedenen Prozessen, sogar zwischen den verschiedenen Widgets im selben Prozess, geteilt werden können. Meistens wird diese Zwischenablage für einfache Copy & Paste-Aktionen verwendet.
Drag and Drop
GTK+ bietet eine Reihe von Funktionen, womit Sie das Drag –and Drop kontrollieren können. Mittlerweile bietet GTK+ auch schon eine Menge anderer unterstützender Protokolle für das Drag and Drop zwischen nicht GTK+-Anwendungen an. Wichtige Protokolle in der Struktur GdkDragProtocol wären hierfür Xdnd und das Motif-Protokoll.
Stock Items – Repertoire-Einträge
Die Stock Items wurden zwar kurz erwähnt. Stock Items stellen Ihnen gewöhnliche Menü- und Toolbar-Elemente zur Verfügung. Jedes dieser Elemente wird anhand einer Stock-ID identifiziert. Diese ID kann entweder in Form eines Strings oder aber eines Makros verwendet werden. Des Weiteren ist es natürlich auch möglich, eigene Einträge hinzuzufügen.
Signale
Das Thema »Signale« wurde in diesem Kapitel nur oberflächlich behandelt. Bei vielen Widgets wurden die Signale zum Teil unvollständig bis gar nicht erwähnt. Aber um für den Hausgebrauch eigene Anwendungen in GTK+ zu erstellen, reichen Ihre Kenntnisse diesbezüglich aus. Dennoch ist es sehr zu empfehlen, sich noch etwas intensiver mit den Signalen von GTK+ zu befassen, da diese doch die Eckpfeiler einer GTK+-Anwendung darstellen. Unbedingt müssen Sie sich mit Signalen befassen, wenn Sie sich für die Erstellung eigener Widgets interessieren.
Ressource-Files
GTK+ unterstützt auch Ressource-Files (gtkrc-Files), womit Sie Einstellungen wie z. B. das Look & Feel zur Laufzeit der Anwendung verändern können.
Widget-Entwicklung
Logischerweise ist es auch möglich, eigene Widgets zu erstellen. Hierbei können Sie entweder aus einer vorhandenen Klasse ein Widget ableiten oder aber auch mithilfe (der niedrigeren Ebene) von GDK-Funktionen Ihr Widget selbst zeichnen (!) und die Ereignisse abarbeiten.
GDK
Voraussetzung für das Entwickeln eigener Widgets ist GDK. GDK fungiert, wie Sie bereits wissen, als Schnittstelle zwischen GTK+ und dem Backend (unter Linux meistens X11 und unter Windows die Win32-API). Alle GTK+-Widgets bauen auf den Strukturen und Funktionen der GDK-Bibliothek auf.
|