Ich bin echt begeistert. Mit Ruby, Netbeans und Glade mal eben ein kleines Programm geschrieben, was Daten von und zu einem GPS-Handheld (hier ein Garmin eTrex) überträgt. Es ist dabei lediglich eine kleine GUI für das Kommandozeilen-Tool gpsbabel.

Zunächst mit Glade3 sich die GUI zusammen geklickt und als XML gespeichert. Dann mittels ruby-glade-create-template den Ruby-Code generieren. Hilfreich war dieser Blog-Artikel von Rob welcher eine kurze Einführung zur Verwendung von Ruby mit Glade gibt. Der generierte Code muss aber noch minimal angepasst werden. An passender Stelle, etwa der initialize-Methode holt mensch sich das Window-Widget und macht es sichtbar.

 # Main Window aus Glade holen
 @main = @glade.get_widget("main")

 # Main Window sichtbar machen
 @main.show_all

Wenn Ihr in Glade schon alle Signale setzt kreiert das Ruby-Skript gleich auch alle Methoden, um die Events zu behandeln. Anschliessend diese mit der Logik füttern und - Ratz-Fatz - ist alles fertig.

Aber ich kann doch gar kein Ruby? Na gut, Java und Python hab ich ja schon gemacht und das bissl Syntax hab ich mir weitestgehend bei Hackety Hack angeeignet (und ein klein wenig auch bei den Nachbarn und meinem Mitbewohner Rat gesucht).

Ansicht der fünf Fenster der Applikation gTrex

Die meiste Zeit beanspruchten die Überlegungen für eine (hoffentlich) sinnvolle, grafische Oberfläche. Hier spielt das (nicht ganz stabile) Glade seine Stärken aus: Elemente lassen sich beliebig hin und her schubsen. Viele sinnvolle Elemente, wie etwa der About-Dialog sind schon vordefiniert und lassen sich mit minimalem Aufwand einrichten. Angeblich soll ja GTK+ in C nicht so schön zu programmieren sein, aber mit Glade finde ich es doch sehr hübsch und effektiv.

Wer nun wissen will, was ich da fabriziert habe, kann in den Code hineinschauen und sich gerne gTrex 0.0.1 herunterladen. Über Kommentare zu diesem noch nicht aufgeräumten Ranz-Code freu ich mich.

Netbeans hat ausser Syntax-Highlighting und das Programm aufrufen nicht viel gemacht, selbst eine brauchbare Code-Completion konnte ich nicht feststellen. Falls jemand weiss, wie letzteres für Ruby/Gtk+ einbinden kann, wäre ich für Hinweise dankbar. Ansonsten war rbbr noch beim aufspüren gesuchter Methoden hilfreich. Mensch ist ja schon von Java + Eclipse sehr verwöhnt, besonders der exzellenten Dokumentation via Javadoc...

Jetzt gilt es die Fehlermeldungen zu verarbeiten und ein sinnvollen Workflow zu implementieren. Der Filechooser-Button muss auch weg, da dieser eigentlich nicht für das Speichern gedacht ist. Die GTK+-Entwickler können sich einfach nicht vorstellen, warum mensch sowas benutzen sollte? Paar weitere Punkte zur Verbesserung stehen schon in der entsprechenden Tomboy-Notiz.

Links