← ST-Computer 06 / 1994

Quick-Tips

Grundlagen

GEMINI-Tips

Tip 1: Unter GEMINI 1.99 kann man Accessories als Anwendung auf einen bestimmten Dateityp anmelden. Es bietet sich an. einen universellen Dateiviewer wie z.B. 1st Guide auf den Dateityp . anzumelden. Voraussetzung ist, daß das Accessory das VA-Protokoll versteht. Bei 1st Guide ist das der Fall. Wenn Sie nicht wissen, ob Ihre Lieblings-Accessories das VA-Protokoll verstehen, können Sie das ausprobieren.

Starten Sie GEMINI und ziehen Sie eine Datei auf das Icon Ihres Accessorys. Wenn es startet und die Datei lĂ€dt oder den Fileselector mit korrektem Pfad anwirft, versteht es das VA-Protokoll. Sie sollten diesen Test allerdings nicht unter MultiTOS durchfĂŒhren, da GEMINI auch das Drag & Drop Protokoll beherrscht, und Sie wollen ja was ĂŒber das VA-Protokoll wissen. Eine Bemerkung vorweg: Unter GEMINI können selbstverstĂ€ndlich mehrere Anwendungen angemeldet werden. Wenn man eine Anwendung auf die Dateimaske . anmeldet muß man darauf achten, daß diese Maske keine anderen angemeldeten Dateien in der Liste ausblendet. GEMINI sucht die Anwendungsliste von oben nach unten ab, der Typ . muß also in der Liste ganz unten stehen.

Das Anmelden eines Accessorys geht furchtbar hakelig: Zuerst muß das Accessory in *.PRG oder *.APP umbenannt werden weil GEMINI sonst meint.es wĂ€re keine Datei angewĂ€hlt. Dann muß das Icon des Programm-Accessorys selektiert werden. Jetzt kann der Dialog ‚Extras-Anwendungen...’ geöffnet werden, in dem Formular steht jetzt z.B.: „1STGUIDE.APP ist zustĂ€ndig fĂŒr die Dateien:“ Hier muß . eingetippt werden.

Den Checkbutton ‚Versteht VA-Meldung‘ selektieren. Nach ‚OK’ wird ein weiterer Dialog mit allen angemeldeten Dateitypen geöffnet. Sie mĂŒssen jetzt noch mit Hilfe von Cut & Paste den Dateityp . ganz nach unten bringen. Mit einem zweiten ‚OK’ ist die Sache fast erledigt:

Das Accessory muß in *.ACC umbenannt werden. Wenn Sie den Dialog ‚Extras-Anwendungen...‘ nochmal öffnen, sehen Sie, daß GEMINI die Änderung mitbekommen hat.

Dem Dateiviewing steht nichts mehr im Wege. Ein Doppelklick und 1st Guide spielt Ihre Soundsamples ab. Ein Shift-Doppelklick auf eine angemeldete Datei sorgt ĂŒbrigens dafĂŒr, daß GEMINI das normale ‚Was soll ich machen? [Drucken] [Anzeigen] [Explodieren]’ -Formular öffnet.

Tip 2: GEMINI Ă€ndert die Environment-Variable ‚PATH’. Falls Sie GEMINI. APP nicht auf der Bootpartition oder in einem Unterverzeichnis haben und als Auto-Applikation starten, kann das einen unschönen Nebeneffekt haben: Accessories finden eventuell ihre Resource- oder andere wichtige Dateien nicht mehr. Lösung: Laden Sie die Datei „GEMINI2\USER\PROFILE.MUP“ mit einem Texteditor. In der dritten Zeile finden Sie den Eintrag: export PATH= “$GEMINIHOME...“. Ändern Sie die Zeile wie folgt: export PATH=“c:;$GEMINIHOME...“

Tip 3: Ganz kurz, fĂŒr die PureC-Experten: PureC inspiziert undokumentierterweise eine Environment-Variable names „PC“. Unter GEMINI sollte folgende Zeile in „PRO-FILE.MUP“ Ihre Nerven schonen: export PC =“x:(Pure-C-Hauptverzeichnis)“

Tip 4: Einige der vielen 1st Guide-Fans sollten mal 20,- DM lockermachen. Der Programmierer hat sich bitter beschwert, weil so lÀcherlich wenig Registrierungen eingegangen sind.

Holger Nassenstein

MenĂŒeintrĂ€ge grau zeichnen

Wenn Sie modale Fensterdialoge programmieren, haben Sie sicher schonmal vor dem Problem gestanden, daß die MenĂŒzeile gesperrt werden muß. Schön wĂ€re ja, wenn der Benutzer sehen könnte, daß das MenĂŒ nicht anwĂ€hlbar ist. Außerdem sollte das Desk-MenĂŒ ganz links anwĂ€hlbar bleiben. Mein Tip beruht auf einem nicht dokumentierten Feature des AES. Die MenĂŒtitel können einfach mit ‚menu_ienable (menu, title | 0x8000, enable_it);’ grau gezeichnet werden.

Wer die C-Bibliothek nicht kennt: menu_ienable ist die AES-Funktion, mit der MenĂŒeintrĂ€ge auf DISABLED gesetzt werden, ‚title | 0x8000’ ĂŒbergibt den Index eines MenĂŒtitels mit gesetztem höchstwertigem Bit. Die Vorgehensweise scheint sich durchzusetzen, sie wird von SYSMON 1.09 abgefragt. Bleibt zu hoffen, daß ATARI dieses Feature demnĂ€chst dokumentieren wird. Kleiner Scherz: In der Dokumentation zum AES des Falcon hat ATARI festgelegt, daß der Eintrag ‚Quit’ im MenĂŒ ‚Datei’ als letzter Eintrag zu finden ist ... Na gut, das war unfair: Außerdem wurde Cut, Copy & Paste definiert und drei oder vier Shortcuts. Ich habe das Routinchen unter TOS 2.06, Winx, MTOS und MagiX! getestet. Es funktioniert prima, d.h. auch wenn eine untenliegende(!) MenĂŒzeile mit set_menu() bearbeitet wird kommt die MenĂŒzeile nicht(!) als Nebeneffekt nach oben. Die Funktion greift auf zwei globale Variablen zu:

OBJECT *menu, (Darf NULL sein, falls die Resource keine MenĂŒzeile enthĂ€lt.) BOOLEAN desk_menu; (Ist FALSE, wenn das Programm nur FenstermenĂŒs benutzt.) Ach so, nicht zu vergessen: Es reicht nicht aus, die MenĂŒtitel auf DISABLED zu setzen. Die Breite der Box unter den Titeln muß außerdem auf die Breite des linken Titels gesetzt werden, sonst klappen die MenĂŒs unter grau gezeichneten Titeln runter. Außerdem sollte der Status SELECTED abgeschaltet sein, selektierte und graue Titel sehen merkwĂŒrdig aus.

Holger Nassenstein

/* (c)1994 by MAXON-Computer */ /* Autor: Holger Nassenstein */ #define THEBAR 1 /* I-Box fĂŒr den MenĂŒbalken */ #define THEACTIVE 2 /* Box, die alle MenĂŒtitel umfaßt */ #define THEFIRST 3 /* Titel 'Desk' */ #define is_state(tree, obj, state) (((tree)[(obj)].ob_state & (state)) != 0) GLOBAL VOID set_menu (BOOLEAN enable) { WORD title; WINDOWP window; WORD width; if (menu != NULL) { titla = menu [THEFIRST].ob_next; /* Erster Titel blaibt anwĂ€hlbar */ if (desk_menu && (enable == is_state(menu, title, DISABLED))) /* Ist die MenĂŒzeile schon DISABLED ? */ { width = menu [THEFIRST].ob_width; do { width += menu[title].ob_width; menu_tnormal(menu, title, TRUE); menu_ienable(menu, title | 0x8000, enable); title = menu [title]. ob_next; } while (title != THEACTIVE); if (enable) menu[THEACTIVE].ob_width = width; else menu[THEACTIVE].ob_width = menu[THEFIRST].ob_width; /* Muß leider sein, sonst klappen */ /* die MenĂŒs doch herunter */ } /* if */ /* Jetzt FenstermenĂŒs sperren... */ } /* if */ } /* set_menu */