Fortgeschrittenenpraktikum: GTK-Schnittstelle für AliceSommersemester 2002 InhaltMit GTK+ können relativ einfach grafische Benutzeroberflächen (GUIs) in C erstellt werden. Durch die in diesem Fopra erstelle Schnittstelle ist dies nun auch dem Alice-Programmierer möglich. Es können auf fast alle Funktionen von GTK+ 2 sowie auf das GnomeCanvas-Widget komfortabel zugegriffen werden.Die Schnittstelle ist für Alice auf SEAM konzipiert, und
läuft unter Windows und Linux. Voraussetzung dafür ist
natürlich, dass GTK+ 2 sowie die Bibliothek libgnomecanvas
installiert sind (siehe unten). Dokumentation
BibliothekenDie GTK+- und GnomeCanvas-Bibliotheken werden zur Laufzeit jedes Alice-Programms benötigt, welches die Schnittstelle benutzt. Zum Übersetzen der Schnittstelle selbst werden darüberhinaus alle Includedateien der Bibliotheken sowie das Programm pkg-config benötigt.
Phasen
Aus C-Header-Dateien von GTK und GDK werden Native-Komponenten generiert, die die eigentlichen C-Bibliotheksfunktionen aufrufen. Dabei werden die von den Gtk-Funktionen benutzen C-Datentypen auf Alice-Typen abgebildet. Diese Schicht führt zudem eine Typüberprüfung für von GObject abgeleitete Objekte durch. Alle Gtk-Aufzählungstypen werden als datatypes in einer eigenen Struktur verfügbar gemacht. Die Unsafe-Komponente ruft Funktionen der Native-Komponente auf. Die Hauptkomponente schließlich führt Enums- und Unsafe-Struktur zusammen. Es werden Bindings für das GnomeCanvas hinzugefügt. Das Eventhandling wird so implementiert, dass die unter Alice Callback-Funktionen definiert werden können. Dazu wird bei Gtk ein eigener Eventhandler registriert, der auf alle Ereignisse reagiert und in einen Strom schreibt. Ein Alice-Thread liest die so aufgezeichneten Events aus dem Strom und ruft die eigentlichen Callback-Funktionen auf. Der Referenzzähler jedes durch eine GTK-Funktion erzeugten Objekts wird sofort nach dem Funktionsaufruf erhöht. Dies hindert die GTK-Bibliothek daran, das Objekt vorzeitig aus dem Speicher zu entfernen. Sobald unter Alice keine Referenz mehr auf das Objekt vorhanden ist, wird der interne Objekt-Referenzzähler verringert, wodurch das Objekt sicher entfernt werden kann. Die Schnittstelle muss unter Windows zum Laufen gebracht werden. Links
Software, Dokumentation und Hinweise zur Progammiersprache Software, Dokumentation und Hinweise zur Bibliothek
parallel laufendes Fopra von Bernadette Blum und Marvin Schiller, in welchem diese Gtk-Schnittstelle benutzt werden soll |