Grafische Schnittstellen
Für die meisten Anwendungen ist es erforderlich, eine grafische Schnittstelle zur Interaktion mit dem Benutzer bereitzustellen. Grafische Benutzeroberflächen stellen ein intuitives und erfahrbares Medium zur Interaktion des Benutzers mit der Anwendung dar, und Benutzer erwarten Anwendungen mit benutzerfreundlichen und attraktiven Oberflächen.
Die GNOME-Plattform stellt eine hochentwickelte Technologie für Grafik und Benutzerschnittstellen zur Verfügung, von Standard-Bedienelementen bis zu einer API zum Zeichnen qualitativ hochwertiger Grafiken auf dem Bildschirm. Die Verwendung dieser Grafiktechnologien in GNOME ermöglicht Ihnen die Erstellung konsistenter und einfach bedienbarer Anwendungen, die auch höheren ästhetischen Ansprüchen genügen.

3.1.1. GTK+
GTK+ ist die primäre zur Erstellung von Benutzeroberflächen verwendete Bibliothek in GNOME. Sie stellt alle Bedienelemente bereit, auch Widgets genannt, die in einer grafischen Anwendung zum Einsatz kommen. Ihre moderne, objektorientierte Schnittstelle erlaubt Ihnen die Erstellung attraktiver und kultivierter Benutzeroberflächen, ohne dass Sie sich mit den Hintergrunddetails des Zeichnens oder der Interaktion mit Geräten befassen müssen.
Zusätzlich zu den grundlegenden Widgets wie Knöpfen, Ankreuzfeldern oder Texteingabefeldern stellt GTK+ auch eine mächtige Model-View-Controller-(MVC-)Schnittstelle für Baumansichten, mehrzeilige Textfelder sowie Menü- und Werkzeugleisten-Aktionen bereit.
Die Widgets in GTK+ werden innerhalb von Fenstern in einem Box-Anordnungsmodell platziert. Die Programmierer legen fest, wie die Widgets in Containerboxen angeordnet werden sollen, ohne dass diese direkt in unveränderliche Positionen gesetzt werden müssen. GTK+ stellt dabei sicher, dass die Fenstergrößen optimal auf deren Inhalt abgestimmt sind. Die Anpassung der Fenstergröße erfolgt dabei automatisch.
Weil GTK+ eine über eine flexible API verfügt, ist der Entwurf zusätzlicher Widgets recht einfach. Es existiert eine Reihe von Drittanbieter-Bibliotheken, die zusätzliche Widgets anbieten. Viele Entwickler haben bereits eigene, für ihre speziellen Zwecke benötigte Widgets erstellt.
GTK+ kümmert sich um die schwierigen Einzelheiten der Benutzeroberflächen und Benutzer-Interaktionen. Eine simple und doch mächtige API erlaubt es Ihnen, sich auf die Details Ihrer Anwendung zu konzentrieren. Die mit GTK+ entwickelten Anwendungen folgen automatisch den Benutzereinstellungen für Erscheinungsbild und Schriften, arbeiten hervorragend mit Barrierefreiheits-Technologien zusammen und bieten genau dass, was der Benutzer erwartet.
Weitere Informationen über GTK+ finden Sie im GTK+ Referenzhandbuch oder auf der Webseite von GTK+.
3.1.2. Libglade
Beachten sie, dass Libglade als veraltet markiert wurde und durch GtkBuilder abgelöst wird. Neu geschriebener Code sollte auf jeden Fall GtkBuilder verwenden.
Libglade ist eine Bibliothek, die Benutzerschnittstellen dynamisch aus XML-Beschreibungen erstellt. Sie können ein Erstellungsprogramm für die grafische Benutzerschnittstelle wie Glade verwenden und die Schnittstellenbeschreibung dann in Ihre Anwendung importieren. Dies erleichtert die Konstruktion komplexer Oberflächen und lässt Sie Einzelheiten besser justieren.
Libglade ermöglicht es Programmierern, ihren Code auf die Logik ihrer Anwendungen auszurichten, ohne sie durch die aktuelle Konstruktion der Schnittstelle durcheinander zu bringen. Grafische Schnittstellen-Ersteller machen es auch für enthusiastische Designer leichter, Oberflächen zu erstellen, ohne sich mit der Programmierung selbst zu beschäftigen.
Weitere Informationen über Libglade finden Sie im Libglade-Referenzhandbuch.
3.1.3. Pango
Pango ist die Kernbibliothek für den Umgang mit Text und Schriften auf der GNOME-Plattform. Es ist für das Anordnen und Rendern von Texten zuständig und wird durchgehend in GTK+ verwendet.1
Pango bietet erweiterte Unterstützung für die verschiedenen Schriftsysteme, die in der Welt verwendet werden. Viele dieser Schriftsysteme haben sehr komplexe Regeln, für das Darstellen und von Zeichen und deren Verbindung untereinander. Mit Pango können beinahe alle existierenden Schriften geschrieben und korrekt dargestellt werden, was den Benutzern überall das Betrachten von Texten in ihren Muttersprachen ermöglicht. Pango unterstützt die verschiedenen Schriftsysteme automatisch. Anwendungsentwickler brauchen keinen zusätzlichen Code zu schreiben, um andere Sprachen zu unterstützen.

Pango unterstützt die in typischen Dokumenten verwendeten Textstile und Schnittstellen, wie Kursiv, Fettschrift oder Unterstreichungen. Dazu kommt ein simples XML-ähnliches Vokabular namens PangoMarkup zum Einsatz, welches Ihnen ermöglicht, Schriftgrößen, Farben, Stile und andere Textattribute anzupassen. Mit PangoMarkup können Sie beispielsweise durchgehende Stile verwenden, ohne Textblöcke manuell wieder und wieder bearbeiten zu müssen. Die Benutzung von Pango ist direkt aus GTK+ heraus möglich, was die Anpassung des Textstils in Ihren grafischen Benutzeroberflächen erheblich erleichtert.
Sie sollten Pango immer dann verwenden, wenn die Textdarstellung auf dem Bildschirm oder einem anderen Medium gefordert ist. Mit Pango fügt sich die Textdarstellung nahtlos in GTK+ und die übrige GNOME-Plattform ein. Pango hilft Ihnen bei der Erstellung portablen Codes. Am bedeutsamsten ist jedoch, dass Ihre Anwendung Text in Hunderten von Sprachen korrekt darstellen kann.
Weitere Informationen über Pango finden Sie im Pango-Referenzhandbuch.
3.1.4. GDK
GDK ist die Low-Level-Bibliothek, die von GTK+ zur Interaktion mit dem System für grafische und Eingabegeräte verwendet wird. Obwohl Sie GDK im Anwendungscode kaum direkt verwenden werden, enthält es doch alle notwendige Funktionalität zum Darstellen von Text und Objekten auf dem Bildschirm sowie zur Interaktion des Benutzers mit den verschiedenen Eingabegeräten.2
GDK bietet einen grafischen Kontext und zeichnet Primitive, die für die Darstellung einfacher Objekte und Bilder auf dem Bildschirm nutzbar sind. Da in Form von Cairo ein erweitertes Darstellungssystem zur Verfügung steht, stellt GDK Ansatzpunkte für Cairo-Kontexte innerhalb von GDK bereit.
GDK ermöglicht Ihnen den Zugriff auf von Tastaturen, Mäusen oder anderen Eingabegeräten ausgelöste Ereignisse, im Gegensatz zu den in GTK+ verwendeten High-Level-Signalen. GDK stellt auch Low-Level-Routinen für Ziehen-und-Ablegen und die Daten in der Zwischenablage des Systems zur Verfügung. Wenn Sie eigene Bedienungsmöglichkeiten implementieren, dann dürften Sie auf diese Funktionsmerkmale zugreifen wollen, um eine saubere Interaktion mit dem Benutzer zu gewährleisten.
GDK stellt weitere Funktionalität bereit, die für die Implementation eines kompletten grafischen Werkzeugkastens wie GTK+ erforderlich ist. Weil sich GTK+ als Plattform-Abstraktion versteht, was dir Verwendung in verschiedenen Umgebungen ermöglicht, stellt es eine API für alle von GTK+ benötigte Systemfunktionalität bereit. Das schließt Informationen über die Anzeige auf mehreren Bildschirmen ein, die Auflösung und Farbtiefe, Farbpaletten und Zeiger.
Sie sollten GDK immer dann verwenden, wenn Sie Zugriff auf das darunterliegende Fenstersystem benötigen, wie beispielsweise Zugriff auf Ereignisse, Fenster oder die Zwischenablage. Die Nutzung von GDK für derartige Aufgaben stellt sicher, dass Ihr Code portierbar ist und sich in den restlichen GTK+-Code gut integriert. Die simplen Zeichenroutinen in GDK sollten nicht verwendet werden. Stattdessen sollten Sie die erweiterte Funktionalität nutzen, die Cairo zur Verfügung stellt.
Weitere Informationen über GDK finden Sie im GDK-Referenzhandbuch.
3.1.5. Cairo
Cairo ist eine 2D-Grafikbibliothek, die eine hochentwickelte Schnittstelle für das Zeichnen von Vektorgrafiken, das Erstellen von Bildern und zum Rendern von geglättetem Text bereitstellt. Cairo unterstützt zahlreiche Ausgabegeräte, wie das X-Window-System, Microsoft Windows und Bildpuffer. Dies ermöglicht Ihnen das Schreiben von plattformunabhängigem Code zum Zeichnen von Grafiken auf verschiedenen Medien.
Das Cairo-Darstellungsmodell ist dem von PostScript oder PDF ähnlich. Die Cairo-Schnittstelle bietet solche Zeichenoperationen wie Pinselstriche, Füllen von kubischen Bézier-Objekten, Zusammensetzen von Bildern und die Ausführung von Umwandlungen. Diese Vektor-Operationen ermöglichen hervorragende, geglättete Grafiken ohne Zuhilfenahme pixelbasierten Zeichnens in Ihrem Code.
Das Zeichenmodell von Cairo ermöglicht qualitativ hochwertige Ausgaben auf verschiedenen Medien. Die gleiche Schnittstelle wird zur Erzeugung fantastischer Bildschirmgrafiken ebenso verwendet wie für das Rendern von Bildern oder für knackige Ausdrucke.
Sie sollten Cairo immer dann verwenden, wenn Sie in Ihren Anwendungen Grafiken zeichnen wollen, die die Widgets von GTK+ nicht bieten. Die meisten Zeichenvorgänge in GTK+ werden bereits mit Cairo ausgeführt. Die Verwendung von Cairo für Ihre spezielle Zeichnung erlaubt qualitativ hochwertige, geglättete und von der Auflösung unabhängige Grafiken in Ihrer Anwendung.
Weitere Informationen über Cairo finden Sie in Cairo: A Vector Graphics Library.
Die Pango-Layout-Engine kann mit verschiedenen Schrift- und Zeichen-Backends genutzt werden. Auf den meisten Systemen verwendet Pango dazu FreeType, fontconfig und Cairo zum Zugriff auf Schriften und Darstellen von Text. Auf anderen Systemen kommen deren Schriftsysteme zum Einsatz, zum Beispiel Uniscribe auf Microsoft Windows und ATSUI auf MacOS.
GDK funktioniert auf einer Reihe verschiedener Plattformen, einschließlich des X-Window-Systems, Microsoft Windows, DirectFB und Quartz. Auf jeder dieser Plattform steht die gleiche konsistente Schnittstelle bereit, was die Ausführung von auf GTK+ basierenden Anwendungen ohne Änderungen ermöglicht.