Quick-Tips

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 */


Aus: ST-Computer 06 / 1994, Seite 109

Links

Copyright-Bestimmungen: siehe Über diese Seite