Resource-Editor: Interface, die zweite!

Von Anfang an konnte Interface überzeugen. Wir wollten wissen, mit welchen Neuerungen die Version 2 aufwartet.

Nach dem Laden präsentiert der bekannte Inter-face-Desktop erste Neuheiten: Die Desktop-Konfiguration, also die Positionen geöffneter Fenster, Icons usw., kann nun gespeichert werden, auf Wunsch auch automatisch bei jedem Programmende. Beim nächsten Start findet man sich dann genau in der Umgebung wieder, die beim Verlassen des Programms bestanden hatte. Dieses Feature hat sich bereits bei anderen Programmen, wie etwa der »Pure-C« Entwicklungsumgebung, sehr bewährt. Mit einem kleinen Trick kann man so auch eine Art Bibliothek von häufig benötigten Objekten zaubern: Einfach eine neue Resource erzeugen, alle häufig benötigten Objektstrukturen in deren Fenster legen und die Konfiguration speichern. Beim erneuten Start des Programms steht nun das Fenster sofort zur Verfügung und die Objekte können einfach von dort in neue Resourcen kopiert werden.

MultiTOS-fähig

Weitere Funktionen, die in erster Linie im Hinblick auf die neuen Multitasking-GEM-Umgebungen (wie Multi-GEM und MultiTOS) Rücksicht nehmen: Auf Wunsch werden alle Dialogboxen in Fenster gelegt, so daß sie die Bildschirmausgaben parallel laufender Programme nicht weiter behindern. Es handelt sich hier jedoch nach wie vor um modale Dialoge. Das heißt während der Dialog-Bearbeitung ist es nicht möglich, andere Interface-Fenster zu aktivieren oder dessen Menüleiste anzuwählen. Man kann aber beispielsweise unter MultiTOS sehr wohl die Fenster anderer Applikationen nach vorne holen. Auch die Tool-Boxen mit den Grundobjekten können in Fenster gelegt und ständig offengehalten werden, so daß man sie nicht mehr jedesmal mit dem entsprechenden Menüeintrag öffnen muß, um ein neues Objekt zu erzeugen.

Multitask’ler begrüßen sicher die Möglichkeit, den Interface-Desktop in ein Fenster zu legen oder auch ganz abzuschalten. So wird nicht bei jedem Applikationswechsel ein Umschalten des Hintergrunds nötig und die Funktionen des Haupt-Desktops bleiben direkt verfügbar. Daß das Interface nun — auch wenn es nicht im Vordergrund des Desktops liegt — voll bedienbar bleibt, spricht für seine MultiTOS-Tauglichkeit.

Auch die Bedienung des Resource-Editors selbst wurde weiter den gängigen Standards angepaßt. So unterstützt Interface jetzt ein Clipboard-Konzept mit Cut/ Copy/Paste-Operationen. Beliebige selektierte Objekte lassen sich auf gewohnte Art kopieren, ausschneiden und an anderer Stelle wieder einfügen. Das Einfügen geschieht dabei an der Position des Mauszeigers, ungewohnt, aber praktisch. Bei mehreren selektierten Objekten bleibt sogar die Anordnung erhalten, womit Cut/Copy/Paste oft zur komfortabelsten Methode für Umbauarbeiten wird. Bei diesen Operationen wird nicht das GEM-Clipboard auf dem Massenspeicher benutzt. Das echte GEM-Clipboard wird jedoch in Dialogboxen unterstützt. Hier kann der Inhalt von Edit-Feldern mit Ctrl-X/C/V kopiert werden.

Manche Punkte der Bedienung wirken für Erstbenutzer zunächst etwas befremdlich. So störte es anfangs, daß beim Anklicken eines Objekts dieses nicht selektiert wurde, statt dessen ein Popup-Menü mit einigen häufig gebrauchten Funktionen. Ein Blick in die Dokumentation zeigt, daß diese Popups abschaltbar sind und wie gewohnt verfahren werden kann. In ähnlicher Weise ist auch vieles Andere nach persönlichem Gusto konfigurierbar. Der Aufbau der Oberfläche, z.B. die Anordnung der Menüpunkte und die Beschriftungen der Dialogboxen, ist, bis auf wenige Ausnahmen, übersichtlich und logisch. Zur Bedienung benötigt man die Dokumentation selten. Eine der Ausnahmen ist die Einstellung für die Quellcodeausgabe: Wer würde die Einstellung der Ausgabeformate unter dem Menüpunkt »Info« vermuten; noch dazu, wenn dieser Menüpunkt verschiedene Dialoge hervorzaubert, je nachdem, welche Fenster gerade geöffnet sind? Hier wäre eine andere Aufteilung angebracht.

Interface 2 auf dem MultiTOS-Desktop

Reichhaltige Ausgabeformate im Infodialog

Bezüglich des reinen Funktionsumfangs nahm Interface schon immer eine Spitzenposition ein. Dennoch ist in die neue Version eine Vielzahl praktischer Detailverbesserungen eingeflossen, beispielsweise beim Handling einzelner Objekte. Durch einfaches Ziehen mit der Maus kann ein Objekt in jede gewünschte Richtung vergrößert und verkleinert werden. Der »Hotspot«, an dem man die Objekte dazu greifen muß, kann zur Erhöhung der Treffsicherheit auf Wunsch automatisch durch Berühren mit dem Mauszeiger angezeigt werden; ebenso eine Infozeile mit Nummer und Größe des Objekts. Die Positionierung von Objekten kann außer durch Verschieben mit der Maus auch pixelgenau über direkte Eingabe der Koordinaten erfolgen.

Sehr angenehm: der intelligente Menüeditor, der den Entwurf von richtliniengetreuen Menüs aktiv unterstützt und viel Fummelei erspart. Der Text der Einträge wird automatisch mit zwei führenden und einem abschließenden Leerzeichen versehen und die Größe der Menübox entsprechend der Textlänge angepaßt. Dabei werden sogar Symbole für Tastatur-Shortcuts, die nach gängiger Art am rechten Rand eingetragen werden, berücksichtigt.

Der integrierte Icon-Editor

Ganz neu sind die Funktionen »Objektnummern fest« und »Resource-Vergleich«. Durch erstere kann man Interface anweisen, keine Veränderung der Objektnummern mehr zuzulassen, was sonst unter Umständen zu Fehlfunktionen im Programm führen kann, das die Resource benutzt. Im Unterschied zu anderen Resource-Editoren, die ähnliche Funktionen bieten, ist unter Interface trotzdem noch ein Sortieren der Objekte möglich, indem die Verkettung innerhalb des Objektbaums verändert wird.

Mit dem Resource-Vergleich lassen sich zwei Resourcen nach einstellbaren Kriterien vergleichen, beispielsweise nach Objektnummer und -hierarchie. So läßt sich leicht feststellen, ob z.B. versehentlich Baumstrukturen beim Editieren verändert wurden. Diese Funktionen lassen Interface auch für diejenigen geeignet erscheinen, die keine eigene Resourcen entwerfen, sondern nur bestehende verändern wollen. Diese Anwendergruppe dürfte auch den eingebauten Icon-Editor von Interface besonders zu schätzen wissen. Der Funktionsumfang ist völlig ausreichend zum Erzeugen und Editieren von Icons; Interface kann es hier durchaus mit einigen eigenständigen Icon-Editor aufnehmen.

Trotzdem können über das Clipboard Icons mit anderen Programmen ausgetauscht werden. Dazu wird das Datenformat des Programms »IconEdi« benutzt. Neu in Interface 2 ist die Möglichkeit, den Platzbedarf von Icons in der Resource zu minimieren, indem leere Ränder von Icons und Images abgeschnitten werden. Angesichts der Icon-Flut in den neueren Desktops ist dies sicherlich ein recht praktisches Feature.

Im Hinblick auf die Dateiformate ist Interface sehr flexibel. Es versteht alle gängigen Resource-Definitionsformate (DEF, DFN, RSD, HRD), so daß die Übernahme von, mit anderen Editoren erstellten Resourcen im allgemeinen keine Probleme macht. Resource-Header zur Programmeinbindung können in den Sprachen »C«, »Modula«, »Pascal« und »Basic« erzeugt werden. Viele Schlüsselwörter der Header-Ausgabe sind in der Resource von Interface selbst zugänglich und können damit speziellen Erfordernissen angepaßt werden, indem einfach die Resource editiert wird. Auf Wunsch kann Interface den Labels von Objekten automatisch einen Präfix voranstellen, der aus den ersten Buchstaben des Objektbaums besteht. Dies vereinfacht die Vergabe von eindeutigen Namen.

Flexible Formate

Selbstverständlich kann Interface auch die komplette Resource als Quellcode ausgeben, so daß sie direkt in Programme eingebunden werden kann und kein getrenntes RSC-File mehr nötig ist. Dabei fallt dem Programmierer sofort angenehm auf, daß die Objekte schon weitgehend fertig mit den dazugehörigen Datenstrukturen verzeigert sind.

Vielfältige Konfigurationsmöglichkeiten

Dadurch entfallt das umständliche Zusammenbauen der einzelnen Strukturen durch das Programm. Die Initialisierung beschränkt sich auf das Anpassen der Objekte an die Bildschirmauflösung mittels des entsprechenden AES-Aufrufs. Auf Wunsch kann allen im Quellcode deklarierten Variablen automatisch das Schlüsselwort »static« vorangestellt werden. C-Programmierern wird der Sinn sofort klar: Dadurch sind die Variablen lokal zum derzeitigen Programmodul definiert, so daß man mehrere Resourcen in getrennten Modulen einbinden kann. Dabei kommt es zu keinen Namenskonflikten aufgrund der gleichlautenden Variablennamen.

Absolutes Novum ist das »lange« Resource-Format. Das von Digital Research festgelegte RSC-Format erlaubt aufgrund der verwendeten 16-Bit-Datentypen nur Resourcen mit einer Maximalgröße von 64 KByte.

Programme mit sehr umfangreicher Resource können dieses Limit schnell erreichen, insbesondere, wenn Icon- und Image-Daten dabei sind, die viel Platz benötigen. Bisher war man in solchen Fällen gezwungen, die Objekte auf mehrere RSC-Dateien zu verteilen und anschließend trickreich nacheinander einzuladen. Interface schafft hier Abhilfe: Es beherrscht ein neues Format, das durch 32-Bit-Datentypen beinahe beliebig große Resourcen aufnehmen kann. Auf diese Resourcen können zwar nicht mehr die normalen rsrc-Funktionen des AES angewandt werden, aber Interface liegt eine Sammlung von äquivalenten Routinen für das neue Format bei, so daß dazu nur minimale Änderungen an eigenen Programmen nötig sind. Bei aller Nützlichkeit dieser Lösung sollte man bedenken, daß Resource-Dateien in diesem Format bisher ausschließlich mit Interface bearbeitet werden können. Ein Benutzer mit einem anderen Resource-Editor kann keine nachträglichen Änderungen vornehmen, was ihm z.B. die Übersetzung in eine Fremdsprache verbaut.

Die Unterstützung von selbstdefinierten Objekten (den sog. USERDEFs) durch Interface ist ein weiterer dicker Pluspunkt, der es deutlich von der Konkurrenz abgrenzt. Das geht soweit, daß beim Testen von Objektbäumen in Interface selbst die USERDEF-Objekte schon in ihrem späteren Aussehen erscheinen.

Dazu lädt Interface eine spezielle Programmdatei, die die Routinen zum Anpassen und zum eigentlichen Zeichnen der neuen Objekte sowie auf Wunsch eigene Dialogtestroutinen enthält. Im Lieferumfang enthalten sind bereits fertige Dateien für die erweiterten Objekttypen folgender Libraries: »MyDials«, »Geiß« (Library aus [2]), »MagicDials« (Modula-Library von Peter Hellinger), »Wega« (von Dietmar Rabich) und »WIN-Dials«. Aber auch Programmierer, die eigene Libraries mit anderen Objekttypen benutzen, können ohne große Schwierigkeiten ihre Routinen einbinden. Die Anpas-sungs- und Zeichenroutinen sind ohnehin bereits in irgendeiner Form vorhanden. Die Arbeit beschränkt sich so im wesentlichen darauf, die Programmschnittstelle für Interface bereitzustellen. Zur Hilfe liegt ein Musterprogramm im C-Quellcode

bei. Die Erzeugung einer Interface-Programmdatei für eine eigene Dialog-Library war auch prompt in einer halben Stunde erledigt, ohne daß dabei nennenswerte Probleme auftraten.

Interface ist in der Lage, USERDEFs direkt als solche in der Resource zu speichern. Es wird auch gleich eine USERBLK-Struktur angelegt und der ob_spec-Zeiger

des Objekts darauf gerichtet. Das Feld ub_parm des USERBLKs kann dabei schon in Interface eingegeben werden. Die Initialisierung von selbstdefinierten Objekten im Programm beschränkt sich dann darauf, daß nach dem Laden der Resource ein Zeiger auf die Zeichenroutine für das Objekt in den USERBLK eingetragen wird.

Bereits im Lieferumfang der ersten Interface-Version war ein Extrabonbon für Programmierer enthalten: Die MyDials, eine Library im Pure-C-Format, die Routinen für erweiterte Dialoge

Fliegende Dialoge

enthält. Damit sind z.B. »fliegende« Dialoge oder modische Macintosh-Buttons auf einfache Weise in eigenen C-Programmen realisierbar. Man linkt einfach die Library dazu und kann mit wenigen Aufrufen die neue Funktionalität nutzen. Besitzer von Interface 2 können die Library jetzt ohne Lizenzgebühren oder sonstige Auflagen in eigenen Programmen benutzen (der Autor freut sich jedoch über zugesandte Belegexemplare von solchen Programmen). Wie bereits erwähnt, werden die neuen Objekttypen direkt im Resource-Editor unterstützt.

Resource-Vergleich nach einstellbaren Kriterien

USERDEF-Objekte (oben) im Dialogtest von Interface (unten)

Ein weites Feld für Programmierer mit speziellen Ansprüchen eröffnet auch die Programmierschnittstelle von Interface. Dabei kann man mit Hilfe einer vordefinierten AES-Nachricht Zugriff auf viele interne Variablen und Funktionen von Interface erhalten. Denkbar ist, Zusatzprogramme zu schreiben, die etwa spezielle Objektmanipulationen vornehmen oder neue Editierfunktionen zur Verfügung stellen können; keine triviale Angelegenheit, da dafür eine intime Kenntnis der in Interface verwandten Datenstrukturen nötig ist. Diese sind im Handbuch nur knapp beschrieben, interessierte Programmierer sollten in solchen Fällen Kontakt zum Autor aufnehmen.

Das Handbuch

Das Handbuch hinterläßt einen zwiespältigen Eindruck. Einerseits ist es verständlich, daß hier keine detaillierten Ausführungen über die GEM-Programmierung enthalten sind, andererseits enthält es jedoch ein Kapitel »Was ist eine Resource« — das einzige, was den Anfänger anspricht. Ansonsten beschränkt sich das Handbuch weitgehend auf eine nach Menüpunkten geordnete, knappe Beschreibung der einzelnen Funktionen, der Dateiformate und der Einbindung von eigenen Objekt-Typen in den Dialogtest von Interface. Detailliertere Informationen wären wünschenswert, ebenso ein Einführungskapitel für Anwender, die keine Programmierprofis sind. Zugunsten der Übersichtlichkeit wäre auch ein anderer Aufbau der Funktionsbeschreibung sinnvoll. Bei unserem Testexemplar kam hinzu, daß ein Handbuch für eine ältere Version geliefert wurde und die Neuerungen lediglich in einer Datei auf der Diskette beschrieben waren. Nach Auskunft des Autors ist jedoch ein neues Handbuch in Arbeit und wird kostenlos an die Kunden nachgeliefert.

Man merkt dem Programm an, daß es von Autor Olaf Meisiek mit Enthusiasmus und viel Liebe zum Detail weiterentwickelt wird. Der Funktionsumfang ist groß, ausgefeilt, und die Unterstützung des Programmierers ist vorbildlich. Die Bedienungsoberfläche wirkt bis auf einzelne Kleinigkeiten sehr übersichtlich und intuitiv, was die etwas knapp ausgefallenen Beschreibungen im Handbuch verschmerzbar macht.

In der Praxis, für ein laufendes Programmprojekt, lief Interface 2 stabil (lediglich einmal führte zu wenig freier Speicher im System zum Absturz). Wir fanden die Arbeit mit Interface 2 sehr angenehm. Zudem gewannen wir den Eindruck, daß Interface — im Gegensatz zu manchem Konkurrenzprodukt — aktiv weiterentwickelt und auch mit zukünftigen Entwicklungen schritthalten wird. Angesichts der bald zu erwartenden neuen TOS-Versionen ein nicht zu unterschätzender Vorteil z.B. für die 3-D-Buttons und mehrfarbigen Icons, die für das Falcon-TOS vorgesehen sind.

Interface ist für Programmierer, aber auch für ambitionierte Anwender, die bestehende Resourcen bearbeiten wollen, sehr empfehlenswert und angesichts des Leistungsumfangs auf jeden Fall sein Geld wert, (uw)

[1] Manfred Neumayer: »Fast am Ziel«, ST-Magazin 1/92, S. 48
[2] D. Geiß, J. Geiß: »Vom Anfänger zum GEM-Profi«, 2. Aufl.,

Hüthig 1991, ISBN 3-7785-1792-9 r Shift Computer und Werbung GmbH, Unterer Lautrupweg 8, 2390 Flensburg, Tel. 0461f 22828

WERTUNG

Interface 2

Preis: 128 Mark
Vertrieb: Shift Computer

Stärken: auf MultiTOS vorbereitet, guter Icon-Editor integriert, intelligenter Menüeditor, MyDials im Lieferumfang

Schwächen: etwas unausgegorenes Handbuch

Fazit: für Programmierer und reine Anwender gleichermaßen zu empfehlender Resource-Editor


Stephan Bauke
Aus: ST-Magazin 02 / 1993, Seite 36

Links

Copyright-Bestimmungen: siehe Über diese Seite