GEM ganz easy: Die EasyGEM-Library für Omikron-Basic

Anwender schätzen grafische Benutzeroberflächen wie das GEM beim ST. Sie brauchen keine Befehle und Tastenkombinationen zu erlernen, da sie die wichtigsten Computer-Funktionen mit der Maus steuern. Ein gutes Beispiel: die Dateioperationen des STDesktop, die im Vergleich zur Benutzer-Oberfläche der MS-DOS-Computer zwar nicht so flexibel, dafür aber viel einfacher zu handhaben sind.

Programmierer sehen solch aufwendige Benutzeroberflächen jedoch in einem anderen Licht. Wer schon einmal eine GEM-Applikation geschrieben hat, weiß, welch hoher Arbeitsaufwand mit der Programmierung von Fenstern, Menüleisten und Dialogboxen verbunden ist: Es kostet viel Lehrgeld, bis man GEM beherrscht. Dieses Problem hat die Firma Omikron aufgegriffen und für ihr Basic die sogenannte »EasyGEM-Library« auf den Markt gebracht. Sie soll den Umgang mit GEM für alle Basic-Programmierer erheblich vereinfachen.

Über 100 Funktionen und Prozeduren

EasyGEM stellt über 100 neue Funktionen und Prozeduren zur Verfügung, die das zirka 60seitige Handbuch ausführlich mit Beispielen beschreibt. Jedes EasyGEM-Programm muß zu Anfang die Library laden. Ab Version 3.0 enthält das Omikron-Basic dafür den Befehl »LIBRARY«. Das Laden und Einrichten von EasyGEM nimmt einige Zeit in Anspruch, allerdings nur beim ersten Aufruf. Danach bleiben die EasyGEM-Routinen als Programmzeile »65534 LIBRARY CODE Easygem« solange speicherresident und unmittelbar zugänglich, bis man die Zeile 65534 löscht, zum Beispiel durch eine NEW-Anweisung.

Zwei Prozedur-Aufrufe stecken den Rahmen eines EasyGEM-Programmes ab. »Easy_Init« initialisiert die Library, »Easy Exit« meldet sie wieder ab. Die neuen Routinen gliedern sich in vier Bereiche. Die erste Abteilung beschäftigt sich mit dem Programmieren von Menüleisten. Die Definition eines Pull-Down-Menüs erfolgt nicht über ein Ressource-Construction-Set, sondern ähnlich wie im GFA-Basic über Programmzeilen, die ein solches Pull-Down-Menü im Basic-Programm beschreiben.

Jedem Menüeintrag weisen Sie eine Variable zu, die das Basic-Programm bei der Ausführung zur Auswertung von Ereignissen benutzt. Der Befehl »M____-Show« bringt die Menüleiste auf den Bildschirm. Die Abfrage der Mausoperationen gestaltet sich sehr einfach. Die Routine »M_Waitmesag« wartet, bis der Benutzer einen Menüpunkt anklickt, und liefert den Index des Eintrages. Im Vergleich zwischen dem Index-Wert und den Inhalten der entsprechenden Variablen ermittelt das Programm, welchen Eintrag der Benutzer gewählt hat.

EasyGEM bietet noch einen weiteren, wesentlich leistungsfähigeren Befehl zur Menü-Abfrage an. »Easy___Mesag« verwaltet nicht nur die Menüleiste, sondern alle Ereignisse, die das AES (Application Environment Services) verwaltet. Hinter dieser Funktion verbirgt sich die AES-Routine »EVNT_____MULTI«, mit dem Unterschied, daß »Easy___Mesag« einfacher zu bedienen ist.

Spezielle Befehle setzen Attribute wie »Häkchen«, »disabled« und »durchgestrichen«. Der Befehl »M_____Normal« verleiht einem Menü-Eintrag sein normales Aussehen. Mit dem Befehl »M_Text« ändern Sie den Text eines Eintrages. Ein entsprechender Satz von Befehlen dient der Abfrage des aktuellen Attributes eines Menüeintrages. Mit »M____Hide« entfernen Sie nach Arbeitsende die Menüleiste wieder vom Bildschirm.

Den zweiten Routinen-Komplex bilden die Befehle für Aufbau und Organisation von Dialogboxen. Ähnlich wie bei den Menüleisten definiert man auch die Dialogboxen im Basic-Text. EasyGEM stellt Befehle für die wichtigsten Elemente bereit. Bitimages und Icons sind derzeit noch nicht vorgesehen.

Der Aufruf erfolgt mit Hilfe des Befehles »Easy____Dialog«. Einblenden, Dialogführung und Ausblenden der Dialogbox erledigt EasyGEM. Wer selbst Hand anlegen will, weil das Programm beispielsweise permanent die aktuelle Uhrzeit anzeigen soll, greift auf fünf leistungsstarke Befehle zurück.

Dieses GEM-Fenster erzeugen Sie durch unser Beispielprogramm
1	REM Zeigt die ersten 1024 Bytes des Speichers in einem Fenster an
2	REM
3	LIBRARY Easygem ,"EASYGEM.LIB"
4	Easy_Init
5	TwinOpen Win$L,0,1,-60,-20,70,65,"Sektor-Display"
6	FOR I$=0 TO 63
7	X$= HEX$(12*16)
8	Y$= STRING$(4- LEN(X$)," ")+X$+" ”
9	Z$="	"
10	FOR 3%=0 TO 15
11	X$=	HEX$( PEEK(12*16+J2))
12	X$=	STRINGS(3~ LEN(X$)," ")+X$
13	IF MID$(X$,2,1)=" " THEN MIDS (X$,2,1)=”0”
14	Y$=Y$+X$
15	Z%L= PEEK(12*16+J2)
16	IF Z%L<31 THEN Z$=Z$+"." ELSE Z$=Z$+ CHR$(Z2L)
17	NEXT 3%
18	Twin_Iprint(Win#L,Y$+Z$)
19	NEXT 1%
20	WinFedraw(Win^L)
21	REPEAT
22	Easy_Mesag(0,Buf$)
23	WinDomessages(Buf$)
24	UNTIL FN Win_Closed%L(Win2L)
25	Easy_Exit
26	END

Mit wenigen Befehlen programmieren Sie komfortabel ein GEM-Fenster

Der nächste Bereich von EasyGEM beschäftigt sich mit der Dateiauswahl-Box. Einem erfahrenen Basic-Anwender stellt sich die Frage, was man bei diesem komplexen Bedienungselement noch vereinfachen könnte. Wer jedoch schon einmal mit Aufbau und Abfrage von Dateipfaden zu tun hatte, wird die String-Operationen zum Auftrennen der Dateipfade in Pfad und Dateinamen zu schätzen wissen.

Leichter Einstieg in die Fensterprogrammierung

Den interessantesten, gleichzeitig aber auch programmtechnisch schwierigsten Teil der GEM-Programmierung stellt die Verwaltung der Fenster dar. Das Jonglieren mit Rechtecklisten, Slidern, Rollpfeilen, etc. hat schon so manchen GEM-unerfahrenen Programmierer davon abgehalten, seinen Basic-Programmen ein GEM-gesteuertes Ausgabemedium zu bescheren.

EasyGEM verschafft den GEM-uner-fahrenen Programmierern einen leichten Einstieg in die Fensterprogrammierung. Ein einziger Befehl öffnet das Fenster. Zwei weitere Befehle übernehmen die gesamte Fenster-Verwaltung wie Größenveränderung, Sliderverschiebung, RoII-pfeilabfrage und Neuzeichnung (Re-draw) von Fensterteilen. Die oben bereits erwähnte Anweisung »Easy___Mesag« sorgt für den Empfang der einzelnen Meldungen, die »Win___Domessages« anschließend in die Tat umsetzt.

Um dies alles in so einfacher Weise zu verwirklichen, unterscheidet EasyGEM zwischen drei verschiedenen Fenstertypen. Das universelle »User-Window« entspricht vom Verwaltungsaufwand her dem »normalen« GEM-Fenster, da der Programmierer alle Aktionen selbst steuern muß.

Wesentlich einfacher gestaltet sich die Arbeit mit den Grafikfenstern. Einmal geöffnet übernimmt EasyGEM die komplette Verwaltung, also auch die Verwaltung der Darstellungsfläche im Fenster.

Leider tritt an dieser Stelle die einzige Schwäche der EasyGEM-Library zu Tage. EasyGEM unterstützt zwar alle drei Auflösungen, die der Atari ST zu bieten hat (640 x 400, 640 x 200, 320 x 200 Pixel), geht jedoch grundsätzlich von einem 32 KByte großen Bildschirmspeicher aus. Mit EasyGEM entwickelte Programme sind weder auf einem Großbildschirm noch in Grafikauflösungen mit mehr als 16 Farben lauffähig. Dies bedeutet angesichts der hoffentlich bald ins Atari-Haus stehenden Bildschirmvielfalt und Auflösungen ein großes Manko.

Kann man der Programmierung von Grafikfenstern mit EasyGEM bereits hohen Komfort und ein durchdachtes Konzept bescheinigen, so scheuen wir uns nicht, den EasyGEM-Programmierern bezüglich der Verwaltung von Textfenstern einen kleinen Geniestreich zu attestieren: EasyGEM reduziert den Programmier-Aufwand für die Ein- und Ausgabe von Text in GEM-Fenstern fast auf das Niveau der einfachen Basic-Be-fehle »PRINT« und »INPUT«.

Beim Öffnen eines Textfensters geben Sie die Größe eines virtuellen Textspeichers an. Mit dem Befehl »Twin__Print« schreiben Sie ähnlich dem Print-Befehl beliebige Zeichenketten auf die virtuelle Textseite. Dabei berücksichtigt Easy-GEM weitgehend die Escape-Sequenzen der VT52-Terminal-EmuIation.

Der Programmierer braucht sich in keiner Weise um die Verwaltung der Textdarstellung im Fenster zu kümmern. EasyGEM berechnet automatisch, welche Teile des Textes das Programm im Fenster anzeigt. Für das Löschen des virtuellen Textbildschirmes sorgt der Befehl »Twin___Cls«. Die Befehle »Twin_Scroll-up« und »Twin____ScroIIdown« schieben den gesamten Textspeicher um einige Zeilen nach oben beziehungsweise nach unten.

Da die Ausgabe größerer Textmengen der Geduldsfaden den Programmbenutzers reichlich strapaziert — so schnell schafft es der Omikron-Basic-Interpreter halt doch nicht —, bietet EasyGEM eine »interne« Ausgabe an: Sämtliche oben beschriebenen Ausgabebefehle haben lediglich Auswirkungen auf den Textspeicher, nicht jedoch auf das Fenster. Erst nach Beendigung der Ausgabe erzwingt »Win____Redraw« das Neuschreiben des Fensterinhaltes in der aktuellen Text-Fassung.

Einsteigern in die GEM-Programmierung ist diese Library ohne jede Einschränkung zu empfehlen. Einen bequemeren Zugang zu den Werkzeugen der »Grafik-Wundertüte GEM« bietet zur Zeit keine andere Programmiersprache auf dem ST. (W. Fastenrath/uh)

Wertung
Programmname:EasyGEM-Library
Preis:79 Mark
Hersteller:Omikron Software
Stärken:
□ sehr einfache Handhabung der GEM-Programmierung □ gute Dokumentation □ niedriger Preis
Schwächen:
□ Programme laufen nicht auf Großbildschirm
Fazit:
Diese Library bietet sowohl Einsteigern als auch Profis einen komfortableren Zugang zum GEM

Michael Bernards
Aus: ST-Magazin 09 / 1989, Seite 28

Links

Copyright-Bestimmungen: siehe Über diese Seite