program menudemo;

{$path "ram:include/","pascal:include/";incl "intuition.lib"}

var menu1,menu2:menu;
    mi11,mi12,mi21,mi211:menuitem;
    mit11,mit12,mit21,mit211:intuitext;
    scr:^screen;
    msg:^intuimessage;
    win: ^window;
    ende:boolean;
    menue,menitem,subitem:integer;
    sig,klasse : long;

procedure writeW(t:str);
var it: intuitext;

begin
  it:=intuitext(1,0,1,0,0,nil,t,nil);
  printitext(win^.Rport,^it,5,12);
end;

procedure menuselect(item:cardinal);{Aus Item müssen zuerst die einzelnen
                                     Nummern der Menues und Untermenues
                                     herausgesucht werden}
begin
  menue:=item and $1f;
  menitem:=(item and $7e0)div 32;
  subitem:=(item and $f800) div 2084;
end;

begin
  openlib(IntBase, 'intuition.library',0);
  scr:=open_screen(0,0,640,256,2,3,1,$8002,'Menue Tester');
  win:=open_window(200,50,300,80,$0302,$00300,$1008,'DEMO',scr,300,60,300,80);
  menu1:=menu(^menu2,10,0,80,10,MENUENABLED,'Project',^mi11,0,0,0,0);
   mi11:=menuitem(^mi12,0,0,80,12,ITEMTEXT or ITEMENABLED or HIGHCOMP,0,^mit11,NIL,chr(0),nil,0);
    mit11:=intuitext(0,1,0,5,3,nil,'Open',NIL);
   mi12:=menuitem(nil,0,12,80,12,ITEMTEXT or ITEMENABLED or HIGHCOMP or COMMSEQ,0,^mit12,nil,'2',nil,0);
    mit12:=intuitext(0,1,0,5,3,nil,'Close',nil);
  menu2:=menu(nil,100,0,80,10,MENUENABLED,'INFO',^mi21,0,0,0,0);
   mi21:=menuitem(nil,0,0,80,12,ITEMTEXT or ITEMENABLED or HIGHCOMP,0,^mit21,nil,chr(0),^mi211,0);
    mit21:=intuitext(0,1,0,5,3,nil,'Hilfe',nil);
   mi211:=menuitem(nil,80,0,80,12,ITEMTEXT or ITEMENABLED or HIGHCOMP,0,^mit211,nil,chr(0),nil,0);
    mit211:=intuitext(0,1,0,5,3,nil,'Text',nil);
  setmenustrip(win,^menu1);
  ende:=false;
  repeat
    msg:=get_msg(win^.userport);
    while msg<>Nil do
    begin
      klasse:=msg^.class;
      if (klasse and MENUPICK) <> 0 then
      begin
        menuselect(msg^.code);
        case menue of
          0: begin   {1.Menue angewählt};
               if menitem=0 then
                 writeW('Es wurde Open gewählt      ')
               else
               begin
                 writeW('Es wurde Close gewählt     ');
                  ende:=true;
               end;
             end;
          1: begin
               if menitem=0 then
                 if subitem=0 then
                   writeW('Es wurde Hilfe/Text gewählt');
             end;
          otherwise
        end;
      end
      else
        if klasse=_closewindow then ende:=true;
      reply_msg(msg);
      msg:=get_msg(win^.userport);
    end;
    if not ende then sig:=Wait(-1);
  until ende;
  close_window(win);
  close_screen(scr);
end.









