Ataquarium

Das Ataquarium, die Rubrik für Programmierereien aller Art ist wieder da. Nihao, Atari-Entwickler!

Neues für ST-Entwickler gab es leider in der Zwischenzeit nicht. Immerhin: programmierfreudige Jaguar-Saotomes können sich jetzt ihr persönliches "Fight for Life" mischen. In den Ring mit Sam Tramiel? Schon möglich, zumindest wer sich die CD mit dem Source-Code besorgt. Diese CD wird von einem amerikanischen Atari-Händler vertrieben und der Preis gibt mit 15$ keinerlei Anlass zu Harakiri.

Ataris-Restekiste ist überhaupt ein Thema für sich. Die Reste erforderten von ihren Entdeckern ein hohes Maß an Disziplinierung. B&C Computervisions erlernten dazu die hohe Kunst der Kalligraphie. Nach dem Erlernen der Techniken und sechsstündigem Meditieren fanden sich dann die sinnvollen Programmierdaten und brisante Dokumente.

Hiesige Kämpfer, die sich die "Katzenfaust"-Technik angeeignet haben, sehen sich derweil nach einer größeren Herausforderung um: der GEM-Programmierung.

GEM-Libraries

GEM-Libraries gibt es schon seit Ende der 80er. In dem Bestreben, die Programmierung der grafischen Benutzeroberfläche einfacher zu machen, wurden auch Bedienelemente von anderen Systemen eingebaut. Für den Programmierer bedeutet eine solche Library eine enorme Arbeitserleichterung.

Auf letzteres legen manche Programmierer aber keinen großen Wert. So gibt es immer noch welche, die sich die Library selbst schreiben wollen - in den meisten Fällen kommt dabei so was wie ãJoe" oder ãBoinkOut" heraus. Beide Programme sind zwar Multitaskingfreundlich, aber nicht sehr ansehnlich.

Die Auswahl der Library schränkt sich schon mit der Programmiersprache ein. Die meisten sind für C erhältlich. Zur Installation in C beachten Sie bitte auch meinen Tipp.

WinDom

Die französische Library WinDom zeichnet sich vor allem durch ihre Zusatzmodule aus. So ist ein Texteditor oder eine einfache Portierung von VT52-Applikationen kein Problem mehr. Aber auch ohne Modul ist Windom nicht zu verachten.

WinDom kennt die üblichen erweiterten Elemente wie Mac-Radiobuttons und -Checkbuttons. Das Aussehen kann wahlweise vom gängigen Standard abweichen. Sehr schön: jedes selektierbare Objekt kann mit einer Funktion verbunden werden. Scrollbare Textfelder sind seit der letzten Version möglich. Die Library unterstützt die erweiterte Dateiauswahl von MagiC und BoxKite. Warum allerdings keine alternative Fontauswahl unterstützt wird, bleibt wohl das Geheimnis des Programmierers - die Windom-Fontauswahl kann jedenfalls nicht begeistern.

Schöner sind da schon die Frames. Jedes Fenster kann in Unterfenster unterteilt werden, die jeweils wie ein eigenes Fenster angesprochen werden. Es ist somit ein leichtes, zwei Texte nebeneinander zu setzen. Leider ist die Verwaltung der Frames auf manchen Systemen etwas fehlerbehaftet: Redraw-Fehler treten auf.

WinDom ist eine der wenigen Libraries, die nicht nur mit PureC zusammenarbeitet: PureC, gcc 2.8.1, gcc 2.9.5 und Sozobon werden unterstützt. Lattice-Benutzer bleiben außen vor, aber diese sollten sich ohnehin überlegen, den Compiler zu wechseln, da die Unterstützung für Lattice durch GEM-Libraries sehr gering ist.

Die Library wird ergänzt durch verschiedene Erweiterungen. ãWout" lenkt den printf-Befehl automatisch in ein Fenster - ideal, um Konsolen-Programme langsam eine GEM-Oberfläche zu verpassen. ãDFRM" erstellt dynamische Formulare. Nützlich ist das zum Beispiel für Programme mit einer Plugin-Schnittstelle, die dann dynamisch die jeweiligen Dialoge aufbauen können. Am Aufwendigsten ist ãWinEdit", ein ausgewachsener Text-Editor.

Leider compilieren manche der Beispiele nicht ohne weiteres. Ob dies schon an der relativ vollgestopften PureC-Installation lag, konnte nicht festgestellt werden.

ACSpro

ACSpro ist keine reine GEM-Library, denn als einziges ST-Programmiertool hat es einen eingebauten Oberflächen-Designer. So werden die Bedienelemente gleich mit entsprechenden Funktionen verknüpft.

Das Programm ist aber auch eine hervorragende GEM-Library. Neben den Standardfunktionen kann sogar ein Bild als Hintergrundbild für den Dialog festgelegt werden. Natürlich wird auch die MagiC-Dateiauswahl und KEYTAB unterstützt. Sogar einen ausgewachsenen Texteditor bot ACSpro lange vor WinDom. Wer diesen in Aktion sehen möchte: in den PD-Listen schwirrt ein GFA4.0 rum. GFA4 ist nichts anderes als der ACSpro mit ein paar wenigen Ergänzungen - es wäre mal interessant zu erfahren, wie viel die Programmierer dafür bekommen haben.

Zu ACSpro gibt es eine Runderneuerung für die GEM- und TOS-Bibliotheken. Wer ACSpro neben anderen GEM-Libraries nutz, sollte sich daher ein zweites Verzeichnis einrichten.

Derzeit ist immer noch die Version 3 von ACSpro in Entwicklung. Die Betaversion vom 19.11.2002 ist für PureC herunterladbar.

Neben PureC unterstützt ACSpro auch gcc und PurePascal. Der Hauptnachteil von ACSpro ist die Dokumentation. Hier wurde mittlerweile nur etwas nachgebessert. Zwei Tutorials auf der Webseite bieten zumindest einen kleinen Einstieg.

faceVALUE

Für GFA-Basic-Freunde gibt es mittlerweile zwei Alternativen: neben faceVALUE bietet RGF-Software seine GEM-Library interessierten Programmierern an.

Auch faceVALUE bietet die Grundfunktionen wie Toolbars, Toolstrips, modale/nicht modale Dialoge, Mac-Bedienelemente und einiges mehr. Hinzu kommen Popups (Menü/Radio), abreißbare Popups (Tearoff-Popups), faltbare Dialoge und verschiebbare Objekte. Allerdings könnte die Library mal einen Frühjahrsputz vertragen, denn animierte Icons als Bedienelemente sind eher eine Spielerei, die ich allerdings auch schon einmal (A-to-Z) benutzt habe...

Nützlicher sind da die GEMJing-Unterstützung, externe Fontauswahlen und Farbicons. Dafür ist die Dateiauswahl veraltet: die Selectric-Unterstützung stammt noch aus seligen FlyDials-Zeiten. Auch einige andere Routinen sind schon etwas älter.

Gefallen konnten die vielen Beispiele. Viele dieser Beispiele sind als Modul geschrieben und können so einfach in eigene Programme eingebunden werden. Dazu gibt es noch diverse Beispielprogramme im Web.

Die Programmierung mit faceVALUE ist sehr einfach: eine RSC-Datei wird erstellt und faceVALUE generiert ein ablauffähiges Programm daraus. Dadurch landen nur die Teile der Library im fertigen Programm, die auch benötigt werden. Allerdings werden selbst kleine Programme durch faceVALUE um 50 KB größer.

Zu faceVALUE gibt es schon seit längerem eine Version 3.2, die bisher nicht freigegeben wurde. Diese wurde gründlich verbessert und passt sich dem Systemlook an. Ein Test dieser Version folgt in einer der nächsten Ausgaben der st-computer.

Andere Libraries

Es gibt noch eine ganze Reihe anderer Libraries, von denen die meisten nicht mehr empfohlen werden können. Halbwegs zeitgemäß sind noch folgende Libraries:

Cflib: die Cflib wurde für qed verwandt und zeichnet sich weniger durch reichhaltige Funktionen, als durch schlanken Code aus. Trotzdem sind moderne Bedienelemente eingebaut, offene Auswahllisten werden zum Beispiel nicht unterstützt. Wenig unterstützt wird der Programmierer, denn die Dokumentation besteht nur aus ein paar lustlos zusammengestellten ST-Guide-Seiten. Es gibt aber auch kurze Beispielprogramme im Netz.

EnhancedGEM: EnhancedGEM war eine der großen GEM-Libraries, hat aber mittlerweile schon Staub angesetzt. Es werden zwar alle wichtigen Bedienelemente unterstützt, aber moderne Protokolle fehlen.

TrueMagic: Moderner und mit Shared-Library-Konzept ausgestattet, ist TrueMagic. TrueMagic-Programme sind schlanker, müssen aber die Library beim Start nachladen. Wenn mehrere TM-Programme laufen, ergibt sich dadurch ein Speicherplatzgewinn. Allerdings wurden nicht sehr viele Programme damit geschrieben.

Fazit

Ohne GEM-Library geht es nicht. Die Extra-Funktionen ersparen sehr viel Arbeit. Bis nächsten Monat!

Was für wen...

Tipp

GEM-Libraries unter C enthalten viele Definitionen, die im Laufe der Zeit vielleicht schon in anderen Header-Dateien gemacht wurden. Am besten ist die Benutzung der Library mit einem frisch installierten C-Compiler.


Matthias Jaap


Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]