GL und ObjectGEM: GEM leicht gemacht

Zwei neue GEM-Bibliotheken für Pure Pascal sollen die Entwicklung von Programmen mit ordentlicher Oberfläche erheblich erleichtern. Wir haben für Sie in die Tasten gegriffen.

Moderne Entwicklungsumgebungen wie Pure Pascal - der Begriff »Compiler« umschreibt ja nur den wesentlichsten Teilbereich - fördern geradezu die Entwicklung sauberer Programme. Grundsätzlich enthält TOS bereits in zahlreichen AES-Routinen alles, um Programme mit einer benutzerfreundlichen Oberfläche zu versehen: Menüleiste, Dialoge, Fenster, Alertboxen können damit direkt erzeugt werden. Diese Funktionen können Sie in Pure Pascal zwar direkt verwenden, aber das Wie und Wofür ist gerade für den ungeübten Programmierer nicht einfach zu durchschauen. Zudem trifft man in neueren Programmen verstärkt auf erweiterte Objekttypen, etwa Radiobuttons oder ankreuzbare Checkbuttons, die zudem tastaturbedienbar sind und dem AES nur über den Umweg über benutzerdefinierbare Objekte zu entlocken sind. Moderne Dialoge sind meist über ein »Eselsohr« in der rechten oberen Ecke verschiebbar oder erscheinen gar im eigenen Fenster, damit sie parallel laufende Prozesse-MultiTOS ist schließlich endlich Realität - nicht behindern. Auch das ist mit konventioneller GEM-Programmierung möglich, erfordert aber doch einen gehörigen Aufwand. Da erscheint es sinnvoller, wenn man sich nicht so sehr um die Oberfläche kümmern muß und stattdessen intensiver an den eigentlichen Routinen des Programmprojekts arbeiten kann. Schließlich soll das Ergebnis vieler Programmierstunden nicht einfach nur gut aussehen, sondern in erster Linie eine spezielle Aufgabe erfüllen.

Wir haben uns zwei GEM-Bibliotheken für Pure Pascal angesehen, welche die Programmierung der Oberfläche enorm erleichtern: »GL V1.11« von Andreas Pietsch im Vertrieb von Kontrast und »ObjectGEM« in der Version 1.00 von Thomas Much, Softdesign Computer Software.

Beide Bibliotheken sind einfach zu installieren: Es genügt, die jeweilige PPU-Datei in den Bibliotheksordner der Pure-Pascal-Installation zu kopieren. Zur Übersicht liegt jeweils auch eine INT-Datei mit allen Prozedurvereinbarungen, Konstanten und Typen bei. Weiterhin gibt es bei beiden Funktionslibrarys eine Datei für die Online-Hilfe unter Pure Pascal. Wer sich einmal an diesen Komfort gewöhnt hat, möchte auch bei den neuen Bibliotheksaufrufen nicht mehr auf die Hilfestellung per Knopfdruck verzichten. Für beide Bibliotheken, wie für die GEM-Programmierung überhaupt, wird unbedingt ein Programm zum Erstellen von Resourcedateien benötigt, etwa das weit verbreitete »Interface« (Shift GmbH).

ObjectGEM läuft nur mit der neuen Version 1.1 von Pure Pascal. GL liegt in verschiedenen Übersetzungen für ältere Versionen vor. Interessant ist hier der Update-Service: Der GL-Autor hält in seiner Mailbox stets die neueste Version für die Käufer der Library bereit. Modembesitzer sind also stets up to date. ObjectGEM wiederum ist als Shareware sowieso für jedermann per DFÜ erhältlich.

Prozedural mit GL...

Zum Lieferumfang von GL gehört ein umfangreiches Handbuch im Ringordner. Damit führt uns der Autor im lockerem Stil in die Geheimnisse der GEM-Library ein. Dennoch bleibt er stets sachlich, und das Manual taugt daher gut zum Nachschlagen einzelner Funktionen.

Das beiliegende Demoprogramm ist in erstaunlich wenigen Zeilen geschrieben, zeigt aber dennoch, was die Bibliothek alles bietet: Die An- und Abmeldung des Programms beim AES, das Laden einer oder mehrerer Resourcedateien und die Ereignisverwaltung aller AES-Nachrichten wird mit einfachen Bibliotheksaufrufen erledigt. Dialoge können konventionell mit Flugecke, aber auch ohne Mehraufwand als Fensterdialoge erzeugt werden, auf Wunsch sogar unmodal. Das heißt, der Dialog muß nicht geschlossen werden, bevor das Programm fortgesetzt werden kann. Es können sogar mehrere Dialoge gleichzeitig offen sein. Außer den obligatorischen tastaturbedienbaren Radio- und Ankreuzbuttons bietet GL auch Textattribute, die das AES normalerweise nicht bietet: fette, einfach oder doppelt unterstrichene Strings, beschriftete Umrahmungen logisch zusammengehörender Bedienelemente und sogar ein, allerdings die Lesbarkeit erschwerender, Schattenschrift-Effekt. Diese speziellen Objekttypen werden im Resource-Editor durch Ändern der Statusflags und über erweiterte Objekt typen definiert. Wer Interface besitzt, sollte dabei das EXTZOBFIX.PRG für die Magic-Tools installiert haben. Dann kann man bereits beim Erstellen der RSC-Datei die neuen Objekte so sehen, wie sie zukünftig im Programm dargestellt werden.

Die neuen Effekte machen auch vor einer erweiterten Alertbox-Routine nicht halt: Hier sind Unterstreichungen und fette Hervorhebungen möglich, ebenso wie die Flugecke zum Verschieben und eine Erweiterung auf bis zu vier Buttons. Die dreidimensionalen Buttoneffekte von MultiTOS und TOS 4.0 werden noch nicht unterstützt, was der Funktionalität aber nicht schadet. Um die Dialoge nicht mit Buttons zu überfrachten, kann man Popup-Menüs anlegen, die auf Mausklick aufklappen. Hier vermissen wir die ansonsten durchgehend mögliche Tastaturbedienung.

Bei den Objekten zur Texteingabe hat sich der GL-Autor etwas Besonderes einfallen lassen: Ein Druck auf die Returntaste führt bei Dialogen mit Edit-Objekten nicht zum Schließen des Dialogs, sondern positioniert den Textcursor im nächsten Feld. Wir finden diese Funktionsweise recht gewöhnungsbedürftig, da sie vom GEM-Standard abweicht. Es wäre schön, wenn sich diese Reaktion wahlweise abschalten ließe. Der Aufruf eines Dialogs im Programm beschränkt sich auf eine Zeile, sogar wenn man einen unmodalen Fensterdialog möchte. Um die Fensterverwaltung, einschließlich des Neuzeichens verdeckter Bereiche, kümmert sich GL dann automatisch.

Nun genügt es für die meisten Programme ja nicht, wenn man Dialoge darstellen kann; irgend etwas muß auf den Bildschirm ausgeben werden, sei es als Text oder Grafik. Und das soll ordentlich in Fenstern erfolgen. Die aufwendige GEM-Fensterverwaltung wird durch GL sehr vereinfacht. Das Öffnen eines Ausgabefensters und das Schreiben in den sichtbaren Bereich macht auch bei einer direkten Lösung über das AES und VDI wenig Probleme. Kompliziert wird es erst bei der Verwaltung der horizontalen und vertikalen Slider. Hier übernimmt GL eine Menge Arbeit und verwaltet die Positionierung komplett. Wenn sich die Dokumentgröße ändert, weil etwa ein Texteintrag gelöscht oder hinzugefügt wurde, genügt ein Hinweis an GL, und die Scrolleisten werden automatisch neu gesetzt. Für Accessorys, die ja keine globale Menüleiste haben dürfen oder für eine bessere thematische Zuordnung kann jedes Fenster mit einem eigenen Fenstermenü versehen werden.

Auch beim Sichern, Wiederherstellen und Verschieben von Bildschirmbereichen nimmt GL eine Menge Arbeit ab. Hierfür genügt jeweils eine einzige Zeile. Wer sich schon einmal etliche Stunden mit MFDB-Strukturen und vro_cpyfm beschäftigen durfte, weiß das zu schätzen. Schade nur, daß das Demoprogramm selbst diese Funktionen nicht verwendet. Das Scrollen im Textfenster könnte damit nämlich erheblich schneller und flackerfrei erfolgen.

WERTUNG

GL

Hersteller: Kontrast

Preis: 149 Mark

Stärken: Mächtige, dennoch einfach zu verwendende Routinen

Schwächen: Tastaturbedienung nicht ganz konsequent

Fazit: Umfangreiche, unkompliziert anwendbare Bibliothek

... oder objektorientiert

Auf einer ganz anderen Grundlage arbeitet Object-GEM. Wie der Name verrät, handelt es sich um eine objektorientierte Spracherweiterung. Sie weist große Ähnlichkeiten zu der Klassenbibliothek »ObjectWindows« auf, welche Borland Pascal 7.0 (für Windows) beiliegt. Was nicht bedeutet, daß ObjectGEM hierzu voll kompatibel wäre: Ganz ohne Änderungen können mit ObjectWindows geschriebene Windows-Programme nicht nach TOS portiert werden. Einige grundsätzliche Unterschiede, etwa die Event-Behandlung, sind nämlich nicht unter einen Hut zu bekommen, was ohne Aufgabe des GEM-konformen Verhaltens auch gar nicht möglich wäre. Einige Details, etwa die Buttons im dreidimensionalen Look, zeigen deutlich die Verwandtschaft zur anderen Oberfläche. Wer sich bisher noch nicht mit objektorientierter Programmierung befaßt hat, sollte zumindest das entsprechende Kapitel im Handbuch zu Pure Pascal gelesen und sich die Beispiele angesehen haben, bevor er sich in die Welt von Klassen, Methoden und Objekten vorwagt. Anhand eines Demoprogramms erklärt die Anleitung auf der Diskette - ein gedrucktes Handbuch soll nach Aussage des Autors eventuell später folgen - in zwölf Schritten behutsam die Verwendung von ObjectGEM. Wem dies dennoch nicht ausreicht, der sollte sich nach zusätzlicher Literatur über ObjectWindows umsehen, was ja in weiten Teilen auf den selben Ideen aufbaut.

An Bedienelementen und Objekten bietet ObjectGEM alles, was auch GL enthält. Einschließlich Popup-Menüs, einer kompletten Fensterverwaltung und unmodalen Fensterdialogen. Für das Hilfesystem in eigenen Programmen existiert eine Routine für die sog. Bubble-Help: Beim Druck auf die Help-Taste oder durch Klicken mit der rechten Maustaste auf einen Button erscheint eine Sprechblase mit einer Hilfestellung (Macintosh läßt grüßen).

Auffallend an den mit ObjectGEM geschriebenen Programmen ist, daß sie ziemlich groß sind: Bereits ein einfaches »Hallo-Welt«-Demo belegt beinahe 62 kByte Speicher auf der Diskette. Das ist aber ein allgemeines Manko objektorientierter Programmierung. Zudem wird selbst bei einem solch einfachen Programm mit gerade einmal fünfzehn Zeilen Quellcode eine komplette, tastaturbedienbare GEM-Fensterverwaltung eingebunden. Bei umfangreicheren Programmen steigt der Speicherbedarf also nicht mehr im gleichen Maß weiter an. Oft zählt auch der geringere Zeitaufwand für ein schnell zu realisierendes und gut wartbares Projekt mehr als ein kompaktes, mühsam speicheroptimiertes Ergebnis.

Unverträglichkeiten mit verschiedenen TOS-Versionen, MultiTOS oder Magix konnten wir bei beiden Bibliotheken nicht feststellen. In der geringen und mittleren ST-Auflösung zeigt sich jedoch, daß beide Bibliotheken die Grafik der selbstverwalteten Objekte nicht an die geringere vertikale Auflösung anpassen. Ein Schönheitsfehler, der hoffentlich noch behoben wird.

Unterm Strich

GL ist eine mächtige Routinensammlung, welche eine ordentliche, GEM-konforme Programmierung sehr erleichtert. Sie kann jedem empfohlen werden, der GEM-Oberflächen nicht mühsam »zu Fuß« schreiben möchte. GL ist auch für Pure C erhältlich und soll in Kürze für weitere Programmiersprachen erscheinen.

ObjectGEM geht den im Atari-Sektor noch ziemlich neuen Weg der objektorientierten Programmierung und bietet auf diesem Gebiet ebenfalls eine breite Palette von Funktionen. Da ObjectGEM Shareware ist, kann es vor dem Kauf in aller Ruhe ausprobiert werden. Die Registriergebühr ist, gemessen am Umfang der Bibliothek, ein echtes Sonderangebot.

Im direkten Vergleich unterscheiden sich beide Bibliotheken in der Anwendung doch sehr, da sie auf unterschiedlichen Programmiermodellen basieren. Die Ergebnisse, mit wenig Aufwand geschriebene, von Auflösung und Betriebssystemversion unabhängige Programmoberflächen, sind jedoch recht ähnlich. Die GEM-Programmierung ist damit nicht mehr das Privileg von Spezialisten.

Kontrast, Neumann-Seidel GbR, Hafenstraße 16, W-2305 Heikendorf,

Softdesign Computer Software, Thomas Much, Koppelweg 16a, W-3201 Diekholzen

WERTUNG

ObjectGEM

Preis: 50 Mark (Shareware)

Hersteller: Softdesign

Stärken: Neuartiges Konzept, Preis

Schwächen: keine

Fazit: Interessante, preiswerte Bibliothek


Christoph Bartholme
Aus: ST-Magazin 07 / 1993, Seite 22

Links

Copyright-Bestimmungen: siehe Über diese Seite