Virtual OS/2 International Consumer Education
VOICE Homepage: http://de.os2voice.org
August 2002

[Inhaltsverzeichnis]
[Vorherige Seite] [Nächste Seite]
[Artikelverzeichnis]

editor@os2voice.org


GpfRexx, Entwicklungsumgebung mit grafischer Oberfläche für REXX

Von Alan Harrison © August 2002, Übersetzung: Thomas Klein

"GpfRexx ist momentan das wohl umfassendste Werkzeug, wenn es darum geht, eine grafische Benutzeroberfläche für REXX-Programme zu gestalten oder eine darin einzubinden. Abgesehen von der allgemeinen Notwendigkeit, Namen für Dialoge oder Objekte zu vergeben, wird der Großteil der Arbeit mittels Mausaktionen erledigt; Bildschirme führen logisch geordnet schrittweise bis zum Ziel einer vollständigen Oberflächengestaltung."

Wenn man bedenkt, dass der Autor sein Produkt nach wie vor verkauft, stimmt diese Aussage mehr denn je. Ich benutze GpfRexx nun schon seit langer Zeit für kleinere Projekte wie Installationsroutinen oder Ordnerverwaltung. Ich benutzte ein anderes Programm des Autors (Gpf, ein C/C++ Oberflächenentwicklungsprogramm, dass ich noch immer benutze) und entschloss mich, für diese anderen Einsatzzwecke GpfRexx zu verwenden. Die Benutzeroberflächen beider Prpgramme sind sich sehr ähnlich. Der Autor dieser Programme hat nun eine eigene Firma und scheinbar hat er GpfRexx behalten, während Gpf nicht mehr länger erhältlich ist - es sei denn, jemand könnte den Autor dazu überreden, es freizugeben. Ein ältere Demoversion ist auf Hobbes noch vorhanden, allerdings ist darin die Funktion "Sichern" deaktiviert. Er ist übrigens auch Autor einer integrierten Entwicklungsumgebung für Java und des Home Page Publishers, eines WYSIWYG-Editors für HTML, soviel sei noch interessehalber erwähnt. Zwar war mein Bedarf an Benutzersupport nicht hoch, aber ich habe einige Male E-Mails mit ihm gewechselt und er machte auf mich einen recht freundlichen und hilfsbereiten Eindruck.

Auf der JBC Solutions Webseite wird der Preis für GpfRexx mit 45 US$ angegeben, was weniger ist als der Preis, den ich 1993 gezahlt habe.... Ich habe noch die Originaldisketten, aber das Handbuch ist schon lange verschwunden. Ich glaube nicht, daß er die noch auflegt. Die Webseite nennt einige Adressen in Europa und Nordamerika, über die man GpfRexx erwerben kann. In der Professional-Version sind die Gpftools enthalten, mit denen man die repository-Dateien (in denen GpfRexx jeweils alle Programmdaten ablegt) analysieren und dokumentieren kann. Ich hab's mir vor langer Zeit einmal angeschaut, bin aber nie dazu gekommen, es auch einzusetzen.

Eine Testversion von GpfRexx ist über die Webseite des Entwicklers erhältlich oder bei Hobbes: http://hobbes.nmsu.edu/cgi-bin/h-viewer?sh=1&fname=/pub/os2/dev/rexx/gpfrx12c.zip. Die Testversion beinhaltet die Gpftools und unterscheidet sich von einer Vollversion lediglich durch den Begrüßungsbildschirm beim Programmstart.

GpfRexx ermöglicht das Arbeiten mit allen Standardelementen für grafische Benutzeroberflächen - Schaltflächen, Schieberegler, etc. und bietet darüber hinaus Datenbankanbindung mittels SQL obwohl ich damit nie gearbeitet habe. Der Benutzer kann ganze REXX-Codesequenzen mittels eines Editors direkt an Ereignisse hängen, die von den Objekten der Benutzeroberfläche ausgelöst werden, wie das Klicken einer Schaltfläche oder ein Tastendruck, etc. Im Umfang sind auch ein interaktiver Debugger und Testmöglichkeiten enthalten.

Die Installation ist simpel: Entpacken Sie die Installationsdatei und starten Sie das Installationsprogramm. Die CONFIG.SYS wird aktualisiert, womit ein Neustart erforderlich wird. Auf der Arbeitsoberfläche wird ein Ordner angelegt, der die Programmkomponenten und Verknüpfungen zu Hilfedateien enthält, darunter auch eine sehr brauchbare Einführung in REXX. Einige Beispielprogramme sind auch darunter - wie man etwa GUI-Komponenten wie Schieberegler verwendet, SQL benutzt, mit INIs umgeht, Multimediasteuerung einsetzt und so weiter. Das Papageienbeispiel spielt das Video und den Ton des bekannten Beispielfederviehs ab. Das Notizbuchbeispiel verwendet noch die Darstellung aus Warp 3 - es könnte also sein, daß man damit nicht die mit Warp 4 eingeführten Notizebücher (mit den farbigen Reitern) verwenden kann.

Hier sehen Sie das Hauptfenster von GpfRexx: .

Um zu beginnen, wählen Sie File -> New und geben einen Programmnamen an - GpfRexx generiert dann ein Hauptfenster und ein Logofenster. Klicken Sie auf File -> Save as (Sichern als), vergeben Sie einen Dateinamen und GpfRexx legt die entsprechende Repository-Datei (.orc) an, in der alle Daten des Programms enthalten sind. Klicken Sie auf Toolkit -> Builder -> .exe und GpfRexx erzeugt eine ausführbare Datei, die Sie starten können. Der Compiler speichert und schließt hierzu die .orc-Datei und führt die Umwandlung in einem Befehlszeilenfenster durch. Das Programm können Sie auch von dort aus starten, allerdings müssen Sie die ORC-Datei neu laden, wenn Sie mit GpfRexx fortfahren wollen.

Ein simples "Hallo Welt" sollten Sie damit in ein bis zwei Minuten hinbekommen. Klicken Sie im Menü Create (Erstellen) -> Button (Schaltfläche) -> Pushbutton (Befehlsschaltfläche) und ein Mauszeiger in Bleistiftform lässt Sie eine Schaltfläche auf dem Hauptfenster platzieren. Danach erscheint ein Fenster mit den Einstellungen, die Sie für das gerade angelegte Element machen können wie Beschriftung, Darstellungsoptionen, etc. Klicken Sie auf die Action-Schaltfläche um das Aktionsfenster anzuzeigen. Wählen Sie 'Add (Hinzufügen)' und die Aktionsliste erscheint.

Wählen Sie darin den Eintrag Dismiss (Beenden) für MainWindow aus und klicken Sie sich durch die OKs, bis alle Einstellungsfenster wieder geschlossen sind. Lassen Sie sich nun nochmals eine .exe-Datei erzeugen und starten Sie diese. Wenn Sie jetzt auf die Schaltfläche klicken, wird das HalloWelt-Programm beendet.

Ein Doppelklick auf eine Komponente öffnet den dazugehörigen Dialog zu deren Einstellungen. Dort können Sie die Anzeigeeigenschaften - Schriftart, Farben, etc. zuweisen und Ihrem Programm ein Symbol spendieren. Die Entry Help-Schaltfläche ermöglicht es, für jedes Oberflächenobjekt einen Hilfetext zu definieren, den man über ein Editorfenster eingeben kann. Der Menüpunkt Toolkit -> Builder -> .ipf generiert eine Vorlage für eine Hilfedatei. Daraus lassen sich mittels des IPFC (IPF-Compiler; nicht enthalten) entweder eine Programmhilfedatei (.hlp) oder eine Systemhilfedatei (.inf) erzeugen. Das Einstellungsfenster erlaubt auch die Zuordnung einzelner Komponenten zu unterschiedlichen Threads. Beachten Sie aber, daß alle Dialoge eine feste Fenstergröße haben. Das macht es mitunter schiwerig, Bestandteile von einer GpfRexx-Instanz in eine andere zu kopieren oder mit dem Debugger zu arbeiten.

Jede Komponente verfügt über eine Liste von Ereignissen, an die man Aktionen knüpfen kann. Markieren Sie ein Ereignis und klicken Sie auf Add (Hinzufügen) und schon erscheint die Aktionsauswahlliste. Blättern Sie bis an's Ende der Einträge und wählen Sie User Function (Benutzerfunktion). Eine Liste der Benutzerfunktionen erscheint am rechten Rand. Sie als der Programmierer schreiben Ihre Funktionen als Einträge dieser Liste und können sie von hier aus an die Ereignisse knüpfen, die von der Oberfläche ausgelöst werden.

Beachten Sie, dass die Start- und Enderoutinen des Programms, in denen Sie globale Variablen definieren oder wieder aufheben können, im Einstellungsdialog zu den Programmeigenschaften vorhanden sind.

Fenster Benutzerfunktionen

Das ist der Dialog zur Bearbeitung der Benutzerfunktionen, wo der Entwickler also seine Befehlsfolgen angibt. Wie Sie der Abbildung entnehmen können, beginnt diese Funktion mit dem Laden einiger REXXUtil-Funktionen, dann wird die Schaltfläche INSTALL deaktiviert und die Listbox INSTALL wird geleert. Die Bereiche am rechten Rand dienen dazu, verfügbare Aktionen im unteren Teil anzuzeigen damit diese mittels Ziehen-und-Ablegen in den Editor übernommen werden können. Das kann einiges an Tipparbeit und Syntaxgrübelei ersparen. Der eingebaute Editor kann lediglich 4K Quellcode aufnehmen - modulares Programmieren ist also erforderlich. Wenn man nicht gewohnt ist auf Basis kleiner Unterroutinen zu programmieren, kann das zu einer beträchtlichen Einschränkung werden, obwohl man Routinen mittels des Befehls Perform('MeineFunktion2','') leicht verketten kann. Sie können auch den Editor Ihrer Wahl verwenden, müssen dann aber den Quellcode mit Hilfe von Ausschneiden/Einfügen in den GpfRexx-Editor übertragen. Es existiert keine Import/Export-Funktion für Quellcode und auch keine Versionskontrolle.

Diese Funktion wurde als separater Thread aus einer anderen Funktion namens Startthread heraus gestartet, die folgende Zeile enthält:

Install_tid=ATTACH('install')

Startthread ist somit eine Benutzerfunktion und kann nun in der Liste der Aktionen ausgewählt werden. Sie wird dann an das Ereignis 'Mausklick' des Objektes 'Schaltfläche "INSTALL"' geknüpft und somit ist die Benutzeroberfläche während der Dauer der Routine 'install' nicht blockiert. Damit wird Multithreading in REXX-Programmen zum Kinderspiel.

Ich finde den Debugger von unschätzbarem Wert und leicht zu benutzen. Man kann Haltepunkte setzen, den Code schrittweise verfolgen, Variableninhalte prüfen etc. Selbst wenn alles andere es nicht wäre - dieses Feature alleine wäre schon das ganze Programm wert gewesen.

GpfRexx Debugger

Obwohl ich mittlerweile die meisten meiner Programme nach Java portiert habe, pflege ich immer noch die OS/2-Versionen und verwende nach wie vor bei Gelegenheit GpfRexx. Für die relativ simplen Aufgaben, für die ich es über die Jahre hinweg eingestzt habe, war es ein sehr nützliches Werkzeug. Ich kann es nur wärmstens empfehlen.

Daten und Quellen:
GpfRexx 1.2 Level C
Hersteller: JBC Solutions
Preis: GpfRexx 2.1 $45US
         GpfRexx Erweiterungswerkzeuge (GpfTools) $25US
         GpfRexx Professional (GpfRexx und GpfTools) $59US

JBC Solutions Homepage: http://www.jbcsolutions.com
Download der Demo von Hobbes: http://hobbes.nmsu.edu/cgi-bin/h-viewer?sh=1&fname=/pub/os2/dev/rexx/gpfrx12c.zip


[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org