OMLib Professional

Jetzt sind sie also komplett, die,„Leicht-GEM-Tools“ für das Programmieren in OMIKRON.BASIC: EasyGEM für die Fenstertechnik und OMLib Professional für die Dialogboxen, Pull-Down- und Pop-Up-Menüs, Desktops und ‘Fliegenden Dialoge’.

Und was, bitte sehr, ist OMLib Professional? Eine neue leistungsfähige Prozeduren-Library von Ralf Schläfer in Worms, soeben erschienen im Hüthig Buch Verlag Heidelberg. Geschaffen für die direkte Einbindung in OMI-KRON.BASIC-Programme mit dem Ziel, ohne tiefere Kenntnisse der von vielen gefürchteten GEM-Programmierung und ohne große Anstrengungen die normgerechte Entwicklung von komfortabel zu bedienenden, anwenderfreundlichen GEM-Programmen zu ermöglichen.

Erfüllt nicht schon EasyGEM diesen Anspruch? Im Prinzip schon, aber es bleiben viele Wünsche offen. Allerdings mit Ausnahme der Fenstertechnik. Hier gelang es, wirklich alles, was möglich ist. in angenehm komplexen Prozeduren so durchschaubar anzubieten, daß auch weniger versierte Programmierer ohne permanente Frusterlebnisse auf kürzestem Wege fehlerfreie Fensterprogramme erstellen können [1],

Doch schon in der Menüverwaltung unter EasyGEM vermißt man z.B. die Möglichkeit, die Menüpunkte alternativ zum Mausklick auch mit der Tastatur anwählen zu können. Ein Essential, das ja wohl endgültig Eingang ins Pflichtenheft der Gestalter von Benutzeroberflächen gefunden haben sollte.

Andererseits freut sich natürlich besonders der Anfänger, daß er die Pull-Down-Menüs ohne Umweg über ein Resource Construction Set einfach mit Hilfe von Prozeduraufrufen im Programm zusammenbauen kann.

Aber die Dialogboxen, die EasyGEM auf dem gleichen Wege generiert, stoßen recht bald an die Grenzen dieses resourcen-freien Verfahrens, sobald man versucht, ihren Inhalt komplexer zu gestalten. EasyGEM ermöglicht nur einen Objekttyp pro Zeile, Radio-Buttons lassen sich nur in horizontalen Zeilen anlegen, die grafische Ausgestaltung beschränkt sich auf die Rechtecke der Buttons, man kann keine gruppierenden Rahmen ziehen, keine Füllmuster und Farben wählen. Ein- und Ausgabefunktionen lassen sich nicht in Boxen setzen, es steht nur eine Schriftgröße zur Verfügung, und vor allem, textliche Vorgaben innerhalb der Eingabefelder können nur am Anfang der Zeile stehen. Die Eingabebeschränkungen unterscheiden nur zwischen ‘alle Zeichen’ und ‘nur Zahlen’ und lassen sich nicht innerhalb der Zeile differenzieren. Und für die Restaurierung des Untergrundes einer sich schließenden Dialogbox muß separat gesorgt werden.

Und dann: Wie realisiere ich Pop-Up-Menüs, eigene Desktops und ‘Fliegende’ Dialogboxen? Alle diese bisher offen gebliebenen Wünsche erfüllt jetzt OMLib Professional!

Die neue Library

Auch diese Library folgt dem Rezept, die vielen GEM-Aufrufe mit ihren schwer überblickbaren Parameterschlangen in möglichst wenigen mächtigen Befehlen zu konzentrieren. Auch sie liegt im schnell ladbaren Token-Code vor und wird bei Programmstart einmal zum Programm hinzugeladen, zusammen mit der GEM.LIB oder mit EASYGEM.LIB, falls auch letztere zum Einsatz kommen soll (wegen der Windows!).

Bedingt durch den wesentlich höheren Gestaltungsaufwand, den die Objektbäume von Dialogboxen und Desktops erfordern, arbeitet OMLib Professional wieder mit Resource-Dateien. Das für ihre Gewinnung benötigte ResourceConstruction Set wird hier gleich mitgeliefert, und zwar ein besonders leistungsfähiges: RCSPLUS von D.Luda Software, München. Endlich mal ein RCS in deutscher Sprache und mit eingehender Anleitung! Und für die Anfertigung von Icons und anderen grafischen Erweiterungen wurde auch gleich ein Icon- und Image-Editor eingebaut.

Wie sieht nun die neue Prozeduren-Bibliothek aus? Sie umfaßt gut 27 KByte und wird auf einer mit 650 KByte wohl gefüllten Diskette zusammen mit einem 125 Seiten starken ausführlichen und hüthig-like sehr übersichtlich gestalteten Handbuch geliefert. Die Library enthält über 100 neu konzipierte Befehle und Funktionen, die in ihrer Syntax leicht zu verstehen sind und durch die beschränkte Anzahl erforderlicher Parameter unkompliziert gehandhabt werden können. Auch die Definitionen der Übergabe- und Rückgabevariablen sind leicht zu durchschauen.

Das Dialog-Modul

Grundlage allen Komforts im Bereich der Dialogboxen-Familie bildet ein neuer Form-Do-Manager. Durch eine neu geschriebene FORM_DO-Routine hat Ralf Schläfer nicht nur Fehler und Unzulänglichkeiten der betriebssystemeigenen Form-Do-Prozedur ausgemerzt, sondern eine Reihe neuer Bedienungs- und Benutzungsmöglichkeiten eingeführt. Zum Beispiel lassen sich jetzt versehentlich angeklickte Radio-Buttons wieder deselektie-ren, beim Beenden von Texteingaben verabschiedet sich die Dialogbox nun nicht mehr gleich mit dem Cursor, Sondertasten arbeiten komfortabel - fast wie in einem Text-Editor, Sonderzeichen und internationaler Zeichensatz sind erreichbar, mit Text belegte Funktionstasten können eingespielt werden usw. Zu allem Überfluß lassen sich in die Dialogbox eingegebene Zahlen gleich an Ort und Stelle mit den Grundrechenarten weiter verarbeiten und formatiert ausgeben.

Der Dialog-Manager wird i m Handbuch in zwei Teilen beschrieben. Das erleichtert die Einarbeitung, weil der erste Teil nur die Befehle und Funktionen enthält die direkt zum Zeichnen und Auswerten der Boxen benötigt werden.

Über 9 Aufrufe steuert man das ‘Kommen und Gehen’ der Dialogboxen. Das schließt selbstverständlich die Restaurierung des überdeckten Hintergrundes ebenso ein wie die Möglichkeit, ‘Fliegende Dialoge’ und ‘Pop-Up-Menüs’ zu programmieren. Für erstere genügt ein hinweisendes Exit-Objekt und einzig der Aufruf FLYDIAL(), und schon läßt sich die Dialogbox mit der Maus ‘an den Haken’ nehmen und beliebig auf dem Bildschirm verschieben. Pop-Up-Menüs werden von der Resource her als normale Dialogbox aufgebaut und wie diese angezeigt und abgefragt.

Weitere 26 Befehle steuern all die sichtbaren Veränderungen, die sich in einer Dialogbox während des Programmlaufs abspielen können. Das beginnt mit dem Invertieren, Ankreuzen, Häkchensetzen und ‘Enabeln/Disabeln’ von Objekten, geht über die Text-Ein- und -Ausgaben, das Ändern von Eingabeschablonen und Masken in Edit-Feldern und von Vorgaben für die integrierte Rechenfunktion und endet beim Verändern von Button-Texten, Justagen, Farbdarstellungen und Randdicken. Über 17 Funktionsaufrufe kann man die jeweils aktuellen Einstellungen vom Programm her abfragen und weiterverarbeiten.

Im zweiten Teil des Dialog-Managers findet man 27 Aufrufe, mit denen vornehmlich die Funktionen des ersten Teils ihre Arbeit verrichten. Sie stehen aber, da sie beschrieben sind, dem Programmierer für die Realisierung eigener Ideen zur Verfügung. Mit ihnen lassen sich alle Objekt- und TEDINFO-Strukturen nicht nur ermitteln, sondern auch verändern. Erstere enthalten bekanntlich alle Daten über Lage und gegenseitiges Verhältnis der Objekte, Typ und Zustand sowie ihre Koordinaten und Größe, die TEDINFO-Struktur beschreibt alle Parameter der Text-Objekte.

Wie man sieht, hat der Library-Autor dankenswerterweise eine Menge Befehle eingebaut, mit denen Strukturen, die eigentlich in den Resourcen-Files festgeschrieben sind, nachträglich geändert und den Programm-Bedürfnissen angepaßt werden können. Das eröffnet weitere komfortable Vielseitigkeit im Dialog mit der Applikation und erspart viel eigene Programmierarbeit.

Das Menü-Modul

Das Menü-Modul ermöglicht mit seinen 8 Befehlen und Funktionen nicht nur das eingangs erwähnte alternative Aufrufen von Menüpunkten über die Tastatur, sondern lädt auch zur Gestaltung eigener Desktops ein. Die Realisierung ist einfach. Das beigefügte Resource Construction Set gestattet, neben den Objekten der Menüzeile auch all die schönen ICONs, die man sich im integrierten Icon- und Image-Editor anfertigen kann, auf der grauen Desktop-Fläche zu plazieren. Im Resourcefile als Wurzelobjekt ‘DESKTOP’ abgespeichert, wird das Ganze ins eigene Programm geladen. Mit Hilfe einer besonderen Syntaxform des Menu( )- Befehls lassen sich jetzt, wie gewohnt, Menüpunkte und Icons mit Maus oder Tastatur aktivieren.

Selbstverständlich stehen alle Funktionen wie ‘Häkchen setzen’ und ‘disabeln’ von nicht aktuellen Menüzeilen mit Hellschrift zur Verfügung, wie auch die Freiheit, mehrere Pull-Down-Menüs im Programm zu verwenden.

Die Zugabe

Programmieranfänger werden sich über 35 unabhängige kleine Module freuen, die Ralf Schläfer der Library beigefügt hat. Nichtjeder hat gleich eine Information zur Hand, wie ein Programm feststellen kann, ob ein Drucker annahmebereit ist oder wie man schnell mal Scan-Code und Shift-Bit gedrückter Tasten erfährt oder den Wochentag eines eingegebenen Datums.

Das RCSPLUS

Auch wer noch nie mit einem Resource Construction Set gearbeitet hat, wird auf Grund der guten Handbuch- und Pull-Down-Menüführung dennoch mühelos zum Ziel kommen. Ein kurzer Überblick für Unerfahrene am Beispiel Dialog-Box: Man wählt die gewünschte Resourcen-Art, Objektbaum-Typ genannt, also Menü, Hinweisbox, Freier Baum oder eben Dialog. Es öffnet sich eine Arbeitsfläche. In einem sog. Teilefenster werden die zur Verfügung stehenden Objekte, Buttons mit und ohne Text, String- und Textfelder, editierbare Felder mit und ohne Rahmen sowie gegebenenfalls Icons und Bilder angezeigt und können mit der Maus in die Arbeitsfläche gezogen werden. Dort plaziert man sie wunschgemäß, stellt ihre Größe ein (wahlweise mit der Maus oder pixelgenau durch Zahleneingabe), editiert die textlichen Inhalte und legt Füllmuster und Farben fest.

Die beliebten fliegenden Dialoge lassen sich mit wenigen Befehlen komfortabel verwalten.

Über sog. Definitionsboxen werden den Objekten die gewünschten Eigenschaften (also einfacher Button, Radio-, Exit- oder Default-Button, editierbar, selektierbar usw.) und Zustände (vorselektiert, mit Schatten, outlined u.dgl.) zugewiesen. Für die Datenein- und -ausgabe lassen sich Masken für die formatierte Anzeige sowie Beschränkungen auf erlaubte Zeichen festlegen.

Für jedes aktive Objekt wird dann noch ein Name eingegeben. Diese Namen bilden die Brücken von dem solchermaßen definierten Objektbaum mit all seinen Bestandteilen zum Programm, das ja über die Befehle der OMFib-Fibrary mit den Objekten, z.B. in der Dialogbox, korrespondieren soll.

Der Komfort

Diese kleine Wegbeschreibung offenbart allerdings noch nicht die vielen komfortablen Arbeitshilfen von RCSPLUS. Sie können im Rahmen dieses Berichts auch nur stichwortartig aufgeführt werden: Wahlmöglichkeit zwischen ‘eingerasteter' (und damit auflösungsunabhängiger) und freier Positionierung der Objekte. Selektion mehrerer Objekte gleichzeitig. Gemeinsames Verschieben und Kopieren mehrerer Objekte. Gemeinsame Größenänderung mehrerer Objekte. Löschen mehrerer Objekte sowie Rückgängigmachen der letzten Löschaktion. Löschen eines Elternobjektes, ohne die Kinder zu entfernen. Sortieren eines Objektbaumes nach verschiedenen Kriterien, um ein gefälliges ‘fließendes’ Hinzeichnen zu erreichen. Unsichtbarmachen einzelner Objekte. Klemmbrett zum Zwischenspeichern von Objekten. Darstellung nicht aktueller Menüzeilen in heller Schrift. Alternativer Aufruf der meisten Menüpunkte über Tastenkombinationen.

Gleichzeitige Bearbeitung von bis zu 4 verschiedenen Resourcen in je einem eigenen Fenster. Der Witz dabei ist, daß Objekte von Fenster zu Fenster übertragen werden können. Das kann die Arbeit an mehreren gleiche oder ähnliche Bestandteile enthaltenden Dialogboxen ungemein rationalisieren. Oder man kann eines der Fenster mit einem vorgefertigten Resourcen-Vorrat (den man ja abgespeichert vorrätig halten kann) beschicken und sich dann aus diesem ‘erweiterten Teilefenster’ zusätzlich bedienen. Auch Übernahmen aus anderen Resource-Dateien lassen sich auf diesem Weg leicht tätigen.

Die Icons und Images

Wem nun die Standardauswahl an Objekten im Teilefenster nicht ausreicht, kann mit Hilfe des eingebauten IMAGE- und ICON-Editors unbegrenzt weiter gestalten, runde, dreieckige, pfeilförmige und sonstige Buttons konstruieren, vor allem aber prägnante anklickbare Symbole jeder Form anlegen, vielleicht sogar, um sprachliche Unabhängigkeit zu erreichen.

Der Bild-Editor arbeitet im Bit-Muster-Modus. Die IMAGE-Objekte sitzen transparent über dem Untergrund, die ICON-Objekte besitzen zwei Bit-Muster, ‘Icon' und ‘Maske’, und decken den Untergrund zu. Die Icons lassen sich sowohl in ihrem Innern als auch auf einer Bildleiste beschriften. Gerät man beim ‘Draufloszeich-nen’ an den Rand des Bild-Editors, kann das entstehende Objekt jederzeit verschoben und zentriert werden.

Zum Abspeichern und Einladen benutzt RCSPLUS das .ICN-Format. Steht ein Zeichenprogramm zur Verfügung, das dieses Format (C-Quelltextdatei) generieren kann, ergeben sich stark erweiterte Bildbeschaffungsmöglichkeiten, z.B. auch durch Weiterbearbeitung von eingescannten Vorlagen.

Mit all diesen Gestaltungsmöglichkeiten wird endlich die Argumentation der Verfechter der „wilden“, GEM umschiffenden Benutzeroberflächen in vernünftige Bahnen gelenkt, denn nun läßt sich plötzlich alles unter einen Hut bringen: Die so leidenschaftlich verteidigte Individualität der Ausgestaltung bei gleichzeitigem Einhalten der bewährten GEM-Konventionen [2]. Der Käufereines Programms erwartet doch, gleich ‘loslegen’ zu können und will nicht erst Grundlagenforschung auf der Benutzeroberfläche betreiben. Den hohen Stand seiner Programmierfähigkeiten kann der Schöpfer einer Anwendung ja im Programm selbst noch zur Genüge unter Beweis stellen.

Während der Aufbauphase der Dialogbox (oder eines der anderen Objektbäume) kann man übrigens immer wieder in einen Testmodus umschalten, ohne das RCS-Programm verlassen zu müssen, wodurch die Box in originaler Größe und Plazierung auf dem Bildschirm erscheint. Jetzt lassen sich alle vorgesehenen Funktionen inkl. der Zeicheneingabe ausprobieren sowie die gesetzten Attribute und Zustände kontrollieren. RCSPLUS läßt diesen Test schlauerweise nur zu, wenn mindestens ein Exit-Button eingebaut ist.

Alle Handhabungen im Resource-Construction-Programm arbeiten flott und durchschaubar. Trotzdem eine Warnung an allzu hektische Mausklicker: Gelegentlich nahm das Programm solche Behandlung übel und blieb hängen - und zwar endgültig. War die entstehende Resource nicht zwischengespeichert, ging sie durch den unumgänglichen Reset verloren. Daran denken: Das Programm speichert nicht automatisch in Intervallen ab (und Murphy ist allgegenwärtig).

Am Schluß müssen die benötigten Resource-Dateien ausgegeben werden. Über diese Dateien wird das Ergebnis allen schöpferischen Bemühens an das Anwenderprogramm übergeben. Zunächst speichert RCSPLUS die ganze Struktur der Resource in einem RSC-File ab (Name.RSC). Darin werden alle Objekte mit einer Kennummer identifiziert. Weil diese fortlaufenden Nummern beim Programmieren nur schwer zuzuordnen sind, mußten alle aktiven Objekte bei ihrer Anlage bereits mit einem Namen versehen werden. Wir brauchen jetzt also noch eine Liste, in der diese Namen den Kennum-mem zugewiesen werden. Solche Listen nennt man Include-Files. Im RCSPLUS kann man die Ausgabe wahlweise einstellen für C (.H), Forth (.FOR), Pascal(.I),BASIC (.B). OMIKRON (.OMB) oder FTN-77 (.F).

Der OMLib-professional liegt auch ein Resource-Construktion-Set bei.

Das Include-Modul

Fürdie Einbindung in OMIKRON.B ASIC wurde aber ein komfortablerer Weg eingebaut: RCSPLUS erzeugt ein sog. IN-CLUDE-Modul. Das ist eine eigenständige Prozedur, die unter anderem diese Namensliste enthält und unter „Name.OBS“ abgespeichert wird. Diese Prozedur muß einmal zum Programm hinzugeladen werden und wird Bestandteil des Programmtextes. Das Include-Modul wird mit dem Aufruf Resource_Init() aktiviert, den man in den Anfang seines OMIKRON.B ASIC-Programms einbauen muß. Diese Prozedur wiederum holt sich die Resource-Da-tei ‘Name.RSC’ aus dem Massenspeicher und schon können das Desktop, die Menüs oder die Dialogboxen aufgerufen werden.

Und los geht’s

Aus den kommentierten Listings von fünf Demoprogrammen, die sich neben der compilierten Version auch im Quelltext auf der Diskette befinden, läßt sich alles entnehmen, was man für die Programmierung von Aufrufen, Handling und Auswertung wissen muß. Es gibt Beispiele in allen Variationen. Zusammen mit dem so detailliert geschriebenem Handbuch können eigentlich keine Unklarheiten aufkom-men. Zudem steht ein ONLINE-Manual als Accessory zur Verfügung. Aus diesem lassen sich die Syntaxmasken der Befehle in den Interpreter überschreiben, was zum einen viel Tipparbeit spart und zum anderen Fehleingaben weitgehend ausschließt.

Apropos Fehler: Vor dem ersten Probelauf sollten Demo_l .BAS in den Interpreter geladen und Zeile 10 geändert werden: Sie muß lauten:

	10 Resource_Init(FN <Get_File_Path$ („demo_-1.RSC“,“A:\“),...

z.Zt. steht dort

	...,"h:\"),...

TOS meldet nämlich unter Abbruch den schönen Error #01 (=Fehler nicht näher spezifiziert), der dann auch bei den übrigen Demos ebenfalls angezeigt wird, obwohl dort überhaupt kein Fehler vorliegt (Eliminierung nur durch Kaltstart).

Das Fazit

Mit dem Erscheinen dieser neuen Prozedurensammlung von Ralf Schläfer entfällt nun endgültig jede Ausrede, mit der sich jemand davor drücken könnte, seinen Programmen die eigentlich längst obligatorischen, weil in der Bedienung genormten, grafischen GEM-Benutzeroberflächen zu spendieren. Diese Forderung nach sauberer GEM-Einbindung kann nicht oft genug wiederholt werden, denn nur so kann sichergestellt werden, daß zum einen Programmneulinge mühelos den Zugang zur vereinheitlichten Handhabung finden und daß zum anderen die Programme heute und in Zukunft auf den sich ständig weiter entwickelnden Gerätekonfigurationen, Bildschirmauflösungen und Betriebssy-stemversionen immer zuverlässig und pannenfrei laufen [3].

Unter diesen Gesichtspunkten ist OM-Lib Professional nicht nur eine der nützlichsten. sondern auch eine der wichtigsten Libraries, die dem OMIKRON.-BASIC-Programmierer zur Verfügung stehen. Der Preis von 129,-DM mag zunächst etwas erschrecken, wenn man sich aber vergegenwärtigt, daß der Gegenwert in der Kombination von hochaktueller Library plus modernem RCS plus immenser Einsparung an Programmierzeit besteht, läßt er sich kaum noch anfechten.

Bezugsquelle:

Hüthig Buch Verlag GmbH Im Weiher 10 D-6900 Heidelberg

Literatur:

[1] Chr.u.J.Kehrel OMIKRON. BASIC Befehle, Bibliotheken, Utilities Hüthig Buch Verlag / 989
[2] Benutzeroberflächen - Reine Geschmacksache? ATARI-Journal 12/91 5. 114-116
[3] Benutzeroberflächen - Reine Geschmacksache? ATARI-Journal 10/91 S. 48-52


Klaus Gensel
Aus: ST-Computer 03 / 1992, Seite 60

Links

Copyright-Bestimmungen: siehe Über diese Seite