{ Programm:  Menu
  ~~~~~~~~~
  Version:   0.01 
  ~~~~~~~~
  Sprache:   MaxonPASCAL3 (KickPascal 2.12 / OS2-Includes
  ~~~~~~~~
  Sinn:      Console-Window mit Menu (ohne Gadtools) läuft ab OS1.3
  ~~~~~
  Copyright: FREEWARE, wenn der Autor in .dok / Infofenster eines
  ~~~~~~~~~            nichtkomerziellen Progr. erwähnt wird.
           
  Autor:     PackMAN
  ~~~~~~     c/o Falk Zühlsdorff
             Lindenberg 66
             D-98693 Ilmenau / Thüringen

  Kommentar: Version für MAXON
  ~~~~~~~~~~ 
             nicht fontsensitiv                                       }

PROGRAM Menu;

USES INTUITION,GRAPHICS;
TYPE p_Menu    = ^Menu;
     TYPE Menu = RECORD                   {etwas seltsam: ich kann    }
                  NextMenu  : p_Menu;     {in VAR nicht Menu1:Menu;   }
                  LeftEdge  : Integer;    {angeben, obwohl dieses     }
                  TopEdge   : Integer;    {Record so in der Intuition }
                  Width     : Integer;    {angegeben ist...           }
                  Height    : Integer;
                  Flags     : Word;       {Will aber nicht lange nach-}
                  MenuName  : Str;        {grasen...                  }
                  FirstItem : p_MenuItem;
                  JazzX     : Integer;
                  JazzY     : Integer;
                  BeatX     : Integer;
                  BeatY     : Integer;
                 END;
VAR MenuTx       : array[1..4] OF IntuiText;
    MenuI        : array[1..4] OF MenuItem;
    Menu1,Menu2  : Menu;
    Win          : p_window;
    Msg          : p_IntuiMessage;
    ex           : boolean;
    Con          : Ptr;
    Setit        : boolean;

PROCEDURE menuhandle(Nr:word);        {Ab MaxonPascal3 als Makros}
VAR menue,item,help:word;             {dabei,... endlich...      }
BEGIN
 Menue:=Nr AND %11111;
 help :=Nr AND %11111100000;
 item :=help SHR 5;
 CASE menue OF
  0: CASE item OF
      0: WriteCON(Con,'Menu 1.1 angewählt'\n'');
      1: WriteCON(Con,'Menu 1.2 angewählt'\n'');
     ELSE;END;
  1: CASE item OF
      0: WriteCON(Con,'Menu 2.1 angewählt'\n'');
      1: WriteCON(Con,'Menu 2.2 angewählt'\n'');
     ELSE;END;
 ELSE;END;
END;

BEGIN
 MenuTx[1]:=IntuiText(3,2,COMPLEMENT,0,0,NIL,'Menu1.1',NIL);
 MenuTx[2]:=IntuiText(3,2,COMPLEMENT,0,0,NIL,'Menu1.2',NIL);
 MenuTx[3]:=IntuiText(3,2,COMPLEMENT,0,0,NIL,'Menu2.1',NIL);
 MenuTx[4]:=IntuiText(3,2,COMPLEMENT,0,0,NIL,'Menu2.2',NIL);

 MenuI[1] :=MenuItem(^MenuI[2],0,0,56,8,ITEMTEXT+HIGHCOMP+ITEMENABLED,0,
                     ^MenuTx[1],NIL,Chr(0),NIL,MENUNULL);
 MenuI[2] :=MenuItem(NIL,0,8,56,8,ITEMTEXT+HIGHCOMP+ITEMENABLED,0,
                     ^MenuTx[2],NIL,Chr(0),NIL,MENUNULL);
 MenuI[3] :=MenuItem(^MenuI[4],0,0,56,8,ITEMTEXT+HIGHCOMP+ITEMENABLED,0,
                     ^MenuTx[3],NIL,Chr(0),NIL,MENUNULL);
 MenuI[4] :=MenuItem(NIL,0,8,56,8,ITEMTEXT+HIGHCOMP+ITEMENABLED,0,
                     ^MenuTx[4],NIL,Chr(0),NIL,MENUNULL);

 Menu1    :=Menu(^Menu2,0,0,47,0,MENUENABLED,'Menu1',^MenuI[1],0,0,0,0);
 Menu2    :=Menu(NIL,56,0,47,0,MENUENABLED,'Menu2',^MenuI[3],0,0,0,0);

 Win:=Open_Window(0,100,640,128,1,_CLOSEWINDOW+MENUPICK,WINDOWCLOSE+ACTIVATE,
                 'Menütest V0.01 © & P by PackMAN for Erico Modras 04.07.94',
                  NIL,0,0,0,0);

 Con:=OpenConsole(Win);
 SetStdIO(con);

 Setit:=SetMenuStrip(Win,^Menu1);
 WriteCON(Con,''\n\n'Einfache MenuDemo, ab OS2 Gadttools nutzen !!!'\n\n'');
 WriteCON(Con,      'Menu anwählen oder CLOSEGADGET anklicken...'\n\n'');
 ex:=false;

 REPEAT
  Msg:=Wait_Port(Win^.UserPort);
  Msg:=Get_Msg(Win^.UserPort);
  Reply_Msg(Msg);
  CASE Msg^.class OF
   _CloseWindow: ex:=true;
   MENUPICK    : Menuhandle(Msg^.code);
  ELSE;END;
 UNTIL ex;

 ClearMenuStrip(Win);
 CloseConsole(Con);
 Close_Window(Win);
 CloseLib(IntuitionBase);
 CloseLib(GFXBase);
END.






