![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
// LinuxTag 2004
Besuchen Sie uns auch n臘hstes Jahr wieder auf dem LinuxTag 2004
im Karlsruher Messe- und Kongresszentrum. Fr n臧ere Details und den
genauen Termin besuchen Sie bitte die LinuxTag Homepage.
|
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
|
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
|
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
EUROPAS GRヨSSTE GNU/LINUX MESSE UND KONFERENZ KONFERENZ-CD-ROM 2003 |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
|
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
|
|
Hauptseite//Vortr臠e//ワberblick ber die GNOME-Entwicklungsplattform -- Material zum Vortrag "Einfhrung in die GNOME-Programmierung" |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
ワberblick ber die GNOME-Entwicklungsplattform -- Material zum Vortrag "Einfhrung in die GNOME-Programmierung"
Matthias Warkus
Umfang dieses Skripts
Es kann nicht Ziel dieses Skripts sein, eine detaillierte
Anleitung oder auch nur eine vollst舅dige ワbersicht ber die
GNOME-Entwicklung zu geben; dazu ist das Feld mittlerweile zu
umfangreich. Bereits einzelne Teilgebiete wie die
GNOME-Komponentenarchitektur knten je nicht blo゚ Material zu einem ganzen
Vortrag, sondern zu einer ganzen Konferenz liefern. (Was Konferenzen
zur GNOME-Entwicklung angeht, siehe auch GUADEC.)
Ich mhte daher nur versuchen, eine Art Streiflicht ber das Thema
GNOME-Programmierung zu werfen. Dazu werde ich skizzieren, wie
die GNOME-Entwicklungsplattform aussieht und beschreiben, was eine
GNOME-Anwendung eigentlich zu einer GNOME-Anwendung macht - sowohl im
programmiererischen als auch im nicht-programmiererischen Bereich. Am Schluss
soll ein Ausblick in die Zukunft von GNOME aus der Entwicklerperspektive
stehen.
Dass der zugehige mndliche Vortrag beim LinuxTag 2003 den
Schwerpunkt mehr auf das Praktische legt als dieser doch eher trockene
ワberblick, liegt in der Natur der Sache. Wie ich beim Erarbeiten dieses
Skripts bemerkt habe, w舐e bereits ein einfaches
Programmierbeispiel fr eine `rechtsgltige' GNOME-Anwendung nebst
Schritt-fr-Schritt-Erl舫terung des Codes deutlich zu umfangreich, um
hier neben allem anderem Platz zu finden. Dieser praktische Teil wird
daher `live', w臧rend des Vortrages stattfinden.
Sie knen jedoch dem Paket gnome-2-beispiele.tar.gz, das ich auf meiner Homepage bereitgestellt habe, eine reichliche Menge von ausfhrlich kommentierten Programmierbeispielen fr GNOME 2 entnehmen.
Architektur und Grundkonzepte der
GNOME-Plattform
Die G-Welt
GNOME-Programmierung spielt sich in einer Welt ab, die ich auf
Grund des inflation舐en Vorkommens des Anfangsbuchstabens G in
Programm-, Bibliotheks-, Klassen-, Typ- und Funktionsnamen als `G-Welt'
bezeichnen mhte. Folgendes macht diese Welt aus:
-
Zu Grunde liegende Programmiersprache ist C; darauf knen
allerdings beliebige Bindungen fr andere Sprachen aufsetzen und
tun es auch
-
Quellb舫me werden mit GNU Automake, Autoconf, Libtool etc. konfiguriert, wobei
pkgconfig eingesetzt wird, um abzufragen, welche Pakete das System
bereitstellt
-
Die Lokalisierung erfolgt mit GNU Gettext, untersttzt durch
Intltool
-
Fr einfache Datenstrukturen, Hilfsfunktionen und
Abstraktionen wird GLib, die fundamentalste
Bibliothek der GNOME-Plattform eingesetzt; bei allen Datentypen
gilt die Konvention, dass die mit Gro゚buchstaben beginnenden
Teile eines Typnamen den auf diesem Typen arbeitenden Funktionen in
Kleinbuchstaben und durch Unterstriche getrennt vorausgehen; d.h. z.B.,
alle Funktionen, die auf dem Typen "GMemChunk" arbeiten, beginnen
mit "g_mem_chunk_"
-
Objektorientierung wird durch GObject bereitgestellt; fast alle
ワberprfungen passieren zur Laufzeit, was Bindungen fr
interpretierte Sprachen deutlich einfacher macht
-
GTK+ dient als Widget-Bibliothek zum Darstellen grafischer
Benutzeroberfl臘hen unter X11 oder inzwischen auch unter anderen Plattformen
-
Mit dem Oberfl臘hen-Editor Glade knen Dialoge und
Anwendungsfenster visuell entworfen und als XML-Beschreibungen gespeichert
werden, die das Programm sp舩er zur Laufzeit l臈t und
darstellt
All dies kann ein Programm noch verwenden, ohne ein GNOME-Programm
zu sein. "Reine" GTK+-Anwendungen wie The GIMP halten sich in der
G-Welt, aber nicht im GNOME-Land auf.
Die GNOME-Plattform als Bndel von Bibliotheken
GNOME stellt sich nicht als eine gro゚e, monolithische Bibliothek
dar, die alle Klassen und Funktionen bereitstellt, die
GNOME-Funktionalit舩 ausmachen, sondern als ein ganzes Bndel einer
(leider?) erstaunlich gro゚en Zahl von
Einzelbibliotheken, die jeweils einen bestimmten Zweck erfllen. Nur
einige davon exponieren jedoch fr den Entwickler wichtige APIs;
zu ihnen gehen:
-
libgnome/libgnomeui -- GNOME-eigene Hilfsfunktionen und Erweiterungen von GTK+ um
GNOME-spezifische Widgets. Diese Bibliotheken sollen irgendwann
einmal unnig werden.
-
libgnomecanvas -- Der GNOME-Canvas, eine m臘htige, an den
Tk-Canvas angelehnte Zeichenfl臘he.
-
GNOME-VFS -- GNOMEs virtuelles Dateisystem fr synchrone und
asynchrone, netzwerktransparente Dateizugriffe
-
GConf -- GNOMEs Konfigurationssystem
-
libxml2 -- Ein flexibler XML-Parser, der Kigsweg zum
einfachen Laden und Speichern strukturierter Informationen in der GNOME-Welt
-
GNOME-Print -- GNOMEs Drucksystem: sorgt fr
Plattformunabh舅gigkeit und u.A. eine pixelgenaue Druckvorschau
-
GtkHTML -- HTML-Renderer
-
Bonobo -- GNOMEs Komponentenobjektmodell, in etwa vergleichbar
mit COM u.ト.
Der Dokumentationszustand der meisten dieser Bibliotheken hat sich
in letzter Zeit um einiges verbessert, l舖st aber immer noch viel zu
wnschen brig. An dieser Stelle sei erw臧nt, dass es mit DevHelp mittlerweile
einen Hilfebrowser speziell fr Entwickler gibt, der den Zugriff auf
die Referenzdokumente der installierten Bibliotheken stark vereinfacht
(siehe Abbildung).
![](/file/22360/VPR0403.ISO/talks/045/picture-45-04.jpg)
Was macht eine Anwendung zur GNOME-Anwendung?
Nun ist es so, dass noch lange nicht jedes grafische Programm mit
einer GTK+-Oberfl臘he, das vielleicht noch gegen die ein oder andere
GNOME-Bibliothek linkt, schon eine GNOME-Anwendung ist. Das Wesen einer
`wahren' GNOME-Anwendung wird von zahlreichen Faktoren bestimmt.
Konfiguration mit GConf
Anwendungen haben es an sich, konfigurierbar zu sein. Dies
bedeutet letztlich, dass irgendwo eine Reihe von Werten vorliegt, deren Betr臠e
das Verhalten oder das Aussehen der Anwendung bestimmen.
Um dies zu realisieren, ginge man normalerweise etwa so vor:
Datenstrukturen fr die Werte
definieren
Die Anwendung auf diese Werte zurckgreifen lassen,
wo immer sie sich nach ihnen richtet
Einen Konfigurationsdialog schreiben, der die
Einstellungen in diese Werte eintr臠t
Implementieren, dass bei Programmende die
Einstellungen in eine Datei niedergeschrieben bzw. bei
Programmstart sie daraus gelesen werden
Hieraus ergeben sich sofort einige Probleme. Wie erf臧rt
beispielsweise die Anwendung, wenn ein Konfigurationswert ge舅dert
wurde? Welches Dateiformat wird verwendet, und wo landet die Datei?
Was passiert, wenn die Konfigurationsdatei ge舅dert wird, w臧rend die
Anwendung l舫ft? Und hei゚t es nicht das Rad neu erfinden, diesen
Mechanismus fr jede Anwendung neu zu schreiben?
GConf lt die Probleme auf ziemlich elegante Art und Weise. Es gibt
eine zentrale Konfigurationsdatenbank, die eine als Verzeichnisbaum
gegliederte Hierarchie von typbehafteten Schlsseln enth舁t, die Werte aufnehmen
knen. Sie tun nunmehr folgendes:
Die Konfigurationsdaten in GConf-Werte
herunterbrechen, die in GConf-Schlsseln unterkommen
knen
Von Konfigurationswerten abh舅gige Anwendungsteile
durch Signalhandler an GConf-Schlssel koppeln
Den Konfigurationsdialog so schreiben, dass er die
Einstellungen in die GConf-Schlssel
eintr臠t
Dies fhrt dazu, dass jede トnderung an der Konfigurationsdatenbank,
ganz gleich, wann und von wo sie erfolgt, sofort an die Anwendung
durchgereicht wird (dies wird brigens auch von den
GNOME-Ergonomierichtlinien verlangt -- siehe unten). Die Kopplung zwischen der Stelle, an der die
Einstellungen vorgenommen werden, und jener, an der sie wirken,
erfolgt nur ber die Datenbank, ohne anwendungsinterne Logik. Auch
ber die Speicherung der Schlssel mssen Sie sich keine Gedanken mehr
machen. Seiteneffekt des Ganzen ist, dass es einfach ist, die
Anwendung ber externe Werkzeuge zu konfigurieren, was besonders
Systemadministratoren freut.
Ein solches externes Werkzeug wird bei GNOME schon
mitgeliefert, n舂lich der GConf-Editor (siehe Abbildung).
![](/file/22360/VPR0403.ISO/talks/045/picture-45-01.jpg)
Dateizugriff mit GNOME-VFS
GNOME-VFS ist eine Bibliothek,
die GNOME-Anwendungen ein virtuelles Dateisystem bereitstellt; daher
auch der Namensteil `VFS' fr `Virtual File System'.
Warum nun aber ein virtuelles Dateisystem benutzen und nicht einfach
auf das native zugreifen? Neben dem allf舁ligen Rechtfertigungsgrund
fr Abstraktionsschichten, der Portabilit舩, geht es auch darum, den
Begriff des Dateisystems zu erweitern -- mit GNOME-VFS knen Sie
nicht nur Inhalte auf einer lokalen Platte als Dateisystem ansprechen,
sondern auf gleicher Weise auch den Inhalt einer Archivdatei oder den
eines Web"=Servers auf der anderen Seite des Planeten.
Das Grundkonzept von GNOME-VFS steht auf zwei S舫len: Es werden
URIen statt Dateinamen verwendet, um Dateien oder Verzeichnisse zu
identifizieren, und die Funktionen sind transparent, das hei゚t, alle
Zugriffe auf Dateien verwenden dieselbe URI-basierte API, unabh舅gig
davon, wo die Dateien sich befinden und in welcher Art auf sie
zugegriffen wird. Wenn Sie also Ihre Zugriffe ber GNOME-VFS
abwickeln, knen Sie berall dort, wo Sie sonst Dateinamen
akzeptieren wrden, URIen akzeptieren und ihre Benutzer damit zum
Beispiel Dateien, die irgendwo im Netz liegen, genauso zug舅glich
machen wie lokale, ohne Code fr Netzwerkzugriffe schreiben zu
mssen. Die zur Untersttzung von Protokollen (in GNOME-VFS:
"Schemen") notwendigen Routinen sind in dynamisch geladenen Modulen
untergebracht, so dass beliebige neue Protokollhandler hinzugefgt
werden knen.
GNOME-VFS erweitert das URI-Konzept um `verschachtelte
Schemen'. Das hei゚t, dass in einer Adresse ein weiteres Schema
angeh舅gt werden kann, mit dem das Ergebnis des vorigen Schemas
gefnet wird. So bedeutet beispielsweise ein URI wie
"http://www.revival-revival.de/dublin78.tar.gz#gzip#tar/dublin78/wasn-brett.mp3"
GNOME-VFS, ein Archivdatei aus dem Netz herunterzuladen, zu
dekomprimieren und aus ihr eine bestimmte Datei zu entnehmen.
ワber all dies hinaus liefert GNOME-VFS auch eine Menge praktischer
Hilfsfunktionen
mit, allen voran ein Subsystem fr asynchrone Zugriffe. Dies ist fr
moderne grafische Anwendungen von immenser Bedeutung -- nur indem
Dateizugriffe asynchron, das hei゚t, im Hintergrund, verlaufen, kann
sichergestellt werden, dass Anwendungen auch w臧rend langen Zugriffen
bedienbar bleiben.
GNOME-VFS bernimmt zu guter Letzt auch noch die Zuordnung
zwischen Dateien und MIME-Typen einerseits sowie MIME-Typen und
darauf arbeitenden Anwendungen andererseits. Das komplette
Verknpfungssystem ist nicht nur ber den entsprechenden
Konfigurationsdialog fr den Benutzer, sondern ber eine API auch fr
den Entwickler zug舅glich.
Einbindung in die Infrastruktur: Meneintr臠e und Dateitypen
Dies fhrt direkt zum n臘hsten Punkt, dem Einbinden von
Anwendungen in die GNOME-Infrastruktur. Programme sollten im GNOME-Hauptmen
aufrufbar sein und au゚erdem bekannt geben, welche Dateitypen sie fnen
knen.
Ersteres geschieht ber einen .desktop-Eintrag im Verzeichnis
share/applications des GNOME-Installationsbaumes. Das Format von
.desktop-Dateien ist standardisiert (KDE verwendet dasselbe); der
Eintrag nimmt Name, Beschreibung, Aufrufname, Kategorisierung etc. der
Anwendung auf und landet automatisch im GNOME-Men. Ein Beispiel sehen
Sie hier (der ワbersichtlichkeit halber wurden nur die deutschen und
franzischen ワbersetzungen der natrlichsprachigen Eintr臠e bernommen):
[Desktop Entry]
Encoding=UTF-8
Name=PDF file viewer
Name[de]=PDF-Dateibetrachter
Name[fr]=Visualiseur de fichier PDF
Comment=Tool for viewing PDF files
Comment[de]=Werkzeug zur Anzeige von PDF-Dateien
Comment[fr]=Visualiseur de fichier PDF (Portable Document Format)
Exec=gpdf
Icon=document-icons/gnome-application-pdf.png
Terminal=false
Type=Application
Categories=GNOME;Application;Graphics;VectorGraphics;Viewer;
StartupNotify=true
|
Das Verknpfen von Dokumenttypen mit einer Anwendung ist
geringfgig schwerer. Strenggenommen kann ein Dateityp gar nicht mit
einer Anwendung verknpft werden, sondern es kann nur ein neuer MIME-Typ fr
einen oder mehrere bestimmte Dateitypen deklariert und
andererseits die Untersttzung einer Anwendung fr bestimmte MIME-Typen
bekannt gegeben werden.
Die Deklaration neuer MIME-Typen geschieht zum Beispiel, indem eine Datei mit
dem Suffix .mime in das Verzeichnis share/mime-info des GNOME-Baumes
kopiert wird. Eine solche Datei kann beliebig viele MIME-Typen
deklarieren und Erkennungsmerkmale wie Dateinamensuffixe
o.ト. angeben. Hat eine Anwendung allerdings keinen eigenen, neuartigen
Dateityp, reichen die zahlreichen von
GNOME-VFS vorgegebenen Erkennungsheuristiken zur Bestimmung zahlloser
mehr oder weniger g舅giger
MIME-Typen durchweg aus. Hier trotzdem zur Veranschaulichung die Datei
gnumeric.mime, die alle von der GNOME-Tabellenkalkulation Gnumeric neu
deklarierten MIME-Typen an Dateinamensuffixe bindet:
application/x-gnumeric
ext: gnumeric
application/vnd.ms-excel
ext: xls xlw
application/x-applix-spreadsheet
ext: as
application/vnd.lotus-1-2-3
ext: 123 wk4 wk3 wk1
</programlisting>
<para>Untersttzung fr ein oder mehrere MIME-Typen wird bekanntgegeben
durch Dateien mit dem Suffix .keys im selben Verzeichnis. Sehen Sie
hierzu einen ebenfalls weitgehend selbsterkl舐enden Abschnitt aus gnumeric.keys:</para>
<programlisting>
<![CDATA[application/x-gnumeric:
open=gnumeric %f
view=gnumeric %f
icon-filename=/gnome/garnome/share/pixmaps/gnumeric/gnome-application-x-gnumeric.png
application/vnd.ms-excel:
open=gnumeric %f
view=gnumeric %f
icon-filename=/gnome/garnome/share/pixmaps/gnumeric/gnome-application-x-xls.png
application/vnd.lotus-1-2-3:
open=gnumeric %f
view=gnumeric %f
icon-filename=/gnome/garnome/share/pixmaps/gnumeric/gnome-application-vnd.lotus-1-2-3.png
|
Ergonomische Gestaltung
Lange Zeit hatten sowohl die Kernkomponenten von GNOME als auch
auf der GNOME-Plattform aufsetzende Drittanwendungen das Problem
mangelnder Konsistenz in der Benutzerfhrung. Selbst in einfachen
Dingen wie der Benennung und Anordnung von Meneintr臠en gab es
jahrelang keine Konventionen.
Selbst kleine Inkonsistenzen fhren jedoch bereits zur Verwirrung
der Benutzer, zu Verzerungen in der Bedienung und damit zum Verlust
von Produktivit舩. Der Anspruch von トsthetik, Einheitlichkeit und
Benutzerfreundlichkeit, den GNOME sich selbst stellt, kann nur
eingelt werden, wenn es einheitliche Richtlinien fr die Gestaltung
von GNOME-Anwendungen gibt.
Mit den seit August 2002 vorliegenden GNOME Human
Interface Guidelines gibt es solche Richtlinien nun. Es
wrde den Rahmen dieses Skripts sprengen, im Einzelnen abzuhandeln,
worin all diese Richtlinien bestehen. Von allgemeinen Regeln zur
Ergonomie bis hin in die Details des visuellen Design
von Anwendungen hinein geben die HIG GNOME-Entwicklern eine
umfassende Hilfe zur ergonomischen, standardkonformen Gestaltung von
Anwendungen an die Hand.
Erw臧nenswert ist vielleicht, dass den HIG das Ideal der visuell
ruhigen Anwendung zu Grunde liegt -- das hei゚t: Abst舅de statt Linien
zur optischen Gruppierung; keine ワberladung von Fenstern mit
Bedienelementen; klare, ausgerichtete Blke von Elementen statt
Chaos. Betrachten Sie zum besseren Verst舅dnis die folgenden
Abbildungen, die ein Dialogfenster einmal vor und einmal nach der
richtlinienkonformen Umgestaltung zeigen.
Vorher:
![](/file/22360/VPR0403.ISO/talks/045/picture-45-02.jpg)
Nachher:
![](/file/22360/VPR0403.ISO/talks/045/picture-45-03.jpg)
Barrierefreiheit
Unter diesem Schlagwort versteht man in der Programmierung
dasselbe wie in der Architektur: n舂lich, so zu planen, dass von vornherein
keine Zugangshindernisse fr Behinderte entstehen -- so mssen auch
nachtr臠lich keine berbrckt werden.
Barrierefreiheit in der GNOME-Programmierung bedeutet zuallererst
korrekte und aussagekr臟tige Beschriftung sowie Erreichbarkeit aller Bedienelemente einer Anwendung von der Tastatur aus. GTK+ und GNOME stellen dafr
komfortable Hilfsfunktionen bereit, so dass es keinen gro゚en
Zusatzaufwand bedeutet, hierfr zu sorgen. Da GTK+' mitgelieferte
Widgets ihre Daten ohnehin ber das Accessibility Toolkit ATK
weitergeben, muss nur bei selbstentwickelten Widgets diese `von Hand'
eingebaut werden.
Abgesehen von der fr nichtbehinderte Benutzer bereits sehr
angenehmen Tastaturbedienbarkeit stellt dies auch sicher, dass
Zusatzanwendungen wie Bildschirmvorleser, Vergrerungswerkzeuge,
Bildschirmtastaturen usw. in die Anwendung eingreifen knen. Ein
weiterer Nebeneffekt ist somit, dass es sp舩er einmal sehr einfach
sein wird, solcherma゚en zug舅gliche Software von einem Makrorekorder
o.ト. fernzusteuern.
Au゚er im Code selber ist Barrierefreiheit auch noch in Teilen des visuellen Designs zu
bercksichtigen; zum Beispiel sollten Symbole sich auch von
Farbenblinden noch unterscheiden lassen knen. Bei den im Repertoire
von GTK+ bzw. GNOME enthaltenen Standardsymbolen ist dies weniger ein
Problem, da spezielle Icon-Themen mit besonders gro゚en und/oder
kontrastreichen Symbolen existieren.
Lokalisierung mit Gettext
Zur Internationalisierung und Lokalisierung von Software mit GNU
Gettext ist schon anderswo viel geschrieben worden. Grunds舩zlich
geht es darum, alle irgendwie Locale-spezifischen
Zeichenkettenkonstanten in Aufrufe der Makros _() bzw. N_() zu
klammern. Die Konstanten werden in einer .pot-Datei zusammengetragen,
von ワbersetzern in .po-Dateien fr jede einzelne Locale bersetzt, und
beim sp舩eren Aufruf des Programmes wird dieses die
bersetzten Zeichenketten verwenden.
Um zu vermeiden, dass ein Programm in anderen als der Locale,
unter der es entwickelt wurde, unkomfortabel oder unbenutzbar wird,
ist es wichtig, gewisse Regeln der Internationalisierung einzuhalten
-- z.B. drfen in Fensterlayouts keine festen Breitenvorgaben
vorkommen, da sonst Beschriftungen, wenn sie in der ワbersetzung
l舅ger werden als im Original, abgeschnitten werden. Auch drfen S舩ze nicht mit Zeichenkettenfunktionen aus
Satzfragmenten zusammengebaut werden, da nichts und niemand
gew臧rleistet, dass die Grammatik aller anderen Sprachen genauso
funktioniert wie die der Entwicklungssprache.
Dokumentation
Der Quasistandard fr strukturierte technische Dokumente, DocBook
(mittlerweile in Form von DocBook XML), hat sich in GNOME schon seit Jahren durchgesetzt. Das Format ist
detailliert in zahlreichen Quellen dokumentiert und wird von GNOME ohne
Modifikationen verwendet, so dass ich es hier nicht weiter zu besprechen
brauche. Wichtig ist es
jedoch, seine GNOME-Anwendungen nicht nur nach dem GNOME
Documentation Style Guide mit einer DocBook-Dokumentation zu
versehen, sondern diese dann auch bei der Installation
anzumelden.
Hierzu gibt es ein spezielles, ebenfalls einigerma゚en
standardisiertes Metadateien-Format namens OMF, das unter GNOME von
einer Software namens ScrollKeeper betreut wird. Eine sauber
geschriebene OMF-Datei, bei der Installation angemeldet,
gew臧rleistet, dass die mhsam geschriebene Dokumentation im
GNOME-Hilfesystem berall dort zug舅glich ist, wo sie
hingeht. Betrachten Sie das folgende Beispiel fr eine OMF-Datei;
es sollte einigerma゚en selbsterkl舐end sein:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//DE"
"http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
<omf>
<resource>
<creator>hweitz@klinkenbuchse.de (Harald Weitz)</creator>
<maintainer>dzimmer@klinkenbuchse.de (Diana Zimmer)</maintainer>
<title>Handbuch fr WunderText</title>
<date>2001-03-27</date>
<version identifier="2.0" date="2002-09-10" description="Aktualisiert fr
WunderText 2.0"/>
<subject category="GNOME|Anwendungen|Bro"/>
<description>Benutzerhandbuch fr WunderText 2.0</description>
<type>Benutzerhandbuch</type>
<format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//DE"/>
<identifier url="file://opt/gnome/share/gnome/help/wundertext/C/wundertext.xml"/>
<language code="C"/>
<relation seriesid="01ddeea4-0a42-11d6-9cf9-ee43c422358d"/>
<rights type="GNU FDL" license.version="1.1" holder="Harald Weitz"/>
</resource>
</omf>
|
Ausblick
Sie werden sicher bemerkt haben, dass ich einen gro゚en Bereich der
GNOME-Programmierung in meinem Skript ausgeklammert habe, n舂lich die
des Komponentenobjektmodells Bonobo. Dieses CORBA-basierte System zum
Exportieren und Einbetten von Komponenten und Controls spielt in GNOME 2
eine wesentlich grere Rolle als in GNOME 1 -- Bonobo ist mit der neuen
Version unmittelbarer Teil der Kernplattform geworden.
Es wrde trotzdem dieses Skript ber Gebhr verl舅gern, hier
Bonobo eingehend zu diskutieren, was angesichts der zahlreichen bereits
vorliegenden Skripte und Online-Verfentlichungen von auf diesem Gebiete
Kompetenteren hoffentlich zu verschmerzen ist. Es bleibt mir zu wnschen,
dass Bonobo Eingang in eine eventuelle zweite Ausgabe oder Fortsetzung
von
"GNOME 2.0 -- Das Entwicklerhandbuch" finden knen wird.
Ansonsten sei noch darauf verwiesen, dass die n臧ere Zukunft (d.h. die
GNOME-Version 2.4 und eventuelle weitere 2.x-Versionen) fr
GNOME-Entwickler keine unangenehmen ワberraschungen bringen kann, da die
bin舐e Abw舐tskompatibilit舩 zwischen GNOME-Versionen mit der selben
Ziffer vor dem Punkt stets gewahrt wird.
Unter dem Arbeitstitel "libegg" entsteht jedoch schon seit einiger
Zeit ein Sammelbecken von vorgeschlagenen API-Erweiterungen, die
im Laufe der n臘hsten Monate und Jahre ihren Weg in die
Plattformbibliotheken finden sollen. Hauptschwerpunkt ist es dabei, eine
neue, einheitliche umfassende Lung fr das Programmieren von Mens und
(konfigurierbaren) Werkzeugleisten zu finden, wozu derzeit in GNOME
mindestens drei verschiedene Wege existieren.
Als Nebenprodukt der weiteren Konsolidierung der GNOME-Plattform
sollen, wie oben schon erw臧nt, die Bibliotheken libgnome und libgnomeui
in absehbarer Zeit verschwinden oder zumindest ihren Charakter als
GTK+-Erweiterungsbibliotheken verlieren, da alle GNOME-spezifischen
Widgets irgendwann entweder in GTK+ `einwandern' oder durch 舍uivalente,
neue GTK+-Widgets abgelt werden sollen.
Nachwort: Zur Ermunterung
Es ist gut mlich, dass Sie dieses Skript und der zugehige Vortrag mehr von der
GNOME-Entwicklung abschrecken als zu ihr hinziehen. Wenn dies an bestimmten
technischen Eigenheiten der Plattform liegt, kann ich Ihnen hierzu keinen
Rat geben -- vieles ist da verst舅dlicherweise Geschmackssache.
Eines mhte ich jedoch noch loswerden: Der
Umfang der Arbeiten, die zu einer kompletten GNOME-Anwendung nig sind,
braucht sie nicht abzuschrecken. Die GNOME-Gemeinde ist riesig, und
viele ihrer Mitglieder haben sich mittlerweile zu Spezialisten fr Teilgebiete der
Anwendungsentwicklung wie Ergonomie, Internationalisierung,
Barrierefreiheit oder Dokumentation entwickelt. Wenn Ihre Anwendung gut
und ntzlich ist, werden Sie keinen der Schritte, der sie zu einer
vollwertigen GNOME-Anwendung macht, alleine gehen mssen.
|
![](/file/22360/VPR0403.ISO/gfx/pixel.gif) |
|