home *** CD-ROM | disk | FTP | other *** search
/ MacGames Sampler / PHT MacGames Bundle.iso / MacSource Folder / Samples from the CD / Pascal / Source□ / Talk Source / My Libraries / MyOOMenus.unit < prev    next >
Encoding:
Text File  |  1992-04-20  |  2.8 KB  |  132 lines  |  [TEXT/PJMM]

  1. unit OOMenus;
  2.  
  3. { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
  4.  
  5. interface
  6.  
  7.     var
  8.         editEnabled: boolean;
  9.  
  10.     procedure InitOOMenus (defaultproc: procptr; hstr: str31);
  11.     procedure FinishOOMenus;
  12.     procedure DoDefaultMenu (themenu, theitem: integer);
  13.     function SetOOMenuBar: boolean;
  14.  
  15. implementation
  16.  
  17.     uses
  18.         Traps, Balloons, MyTypes, MyUtils, MyUtilities, BaseGlobals, MyFMenus, OOMainLoop, OOAboutHelp;
  19.  
  20.     function SetOOMenuBar: boolean;
  21.     begin
  22.         SetOOMenuBar := FrontObject.SetMenuBar;
  23.     end;
  24.  
  25.     procedure DoDefaultMenu (themenu, theitem: integer);
  26.         var
  27.             save: grafPtr;
  28.             DAName: str255;
  29.             oe: OSErr;
  30.     begin
  31.         if themenu = M_Apple then begin
  32.             GetPort(save);
  33.             GetItem(GetMHandle(M_apple), theitem, DAName);
  34.             oe := OpenDeskAcc(DAName);
  35.             SetPort(save);
  36.         end
  37.         else if themenu = M_Edit then begin
  38.             FrontObject.DoEditMenu(theitem);
  39.         end;
  40.     end;
  41.  
  42.     procedure SetAboutMenu (themenu, theitem: integer);
  43.     begin
  44.         SetIDItemEnable(themenu, theitem, not ISWObjectFront(about_object));
  45.     end;
  46.  
  47.     procedure SetHelpMenu (themenu, theitem: integer);
  48.     begin
  49.         SetIDItemEnable(themenu, theitem, not ISWObjectFront(help_object));
  50.     end;
  51.  
  52.     procedure DoClose;
  53.     begin
  54.         FrontObject.DoClose
  55.     end;
  56.  
  57.     procedure SetCloseMenu (themenu, theitem: integer);
  58.         var
  59.             fw: windowPtr;
  60.     begin
  61.         fw := FrontWindow;
  62.         if fw = nil then
  63.             SetIDItemEnable(themenu, theitem, false)
  64.         else
  65.             SetIDItemEnable(themenu, theitem, windowPeek(fw)^.goAwayFlag);
  66.     end;
  67.  
  68.     procedure SetEditMenus (menu, item: integer);
  69.     begin
  70.         FrontObject.SetEditMenuItem(item);
  71.     end;
  72.  
  73.     procedure DoQuit;
  74.     begin
  75.         quitNow := true;
  76.     end;
  77.  
  78. {$S Init}
  79.     procedure InitOOMenus (defaultproc: procptr; hstr: str31);
  80.         var
  81.             mh: menuHandle;
  82.             oe: OSErr;
  83.             dummyb: boolean;
  84.     begin
  85.         quitNow := false;
  86.         editEnabled := true;
  87.         if defaultproc = nil then
  88.             defaultproc := @DoDefaultMenu;
  89.  
  90.         InitFMenus(defaultproc);
  91.         InitOOAboutHelp;
  92.  
  93.         MH_Apple := GetFMenu(M_Apple);
  94.         AddResMenu(MH_Apple, 'DRVR');
  95.         InsertMenu(MH_Apple, 0);
  96.         MH_File := GetFMenu(M_File);
  97.         InsertMenu(MH_File, 0);
  98.         MH_Edit := GetFMenu(M_Edit);
  99.         InsertMenu(MH_Edit, 0);
  100.  
  101.         M_HM_Help_I := -1;
  102.         if has_HelpMgr and (hstr <> '') then begin
  103.             oe := HMGetHelpMenuHandle(mh);
  104.             if (oe = noErr) and (mh <> nil) then begin
  105.                 AppendMenu(mh, hstr);
  106.                 M_HM_Help_I := CountMItems(mh);
  107.                 AddFCommand(kHMHelpMenuID, M_HM_Help_I, CHelp);
  108.             end;
  109.         end;
  110.  
  111.         SetFBoth(Cabout, @DoOOAbout, @SetAboutMenu);
  112.         SetFBoth(Chelp, @DoOOHelp, @SetHelpMenu);
  113.         SetFBoth(Cclose, @DoClose, @SetCloseMenu);
  114.         SetFCommand(Cquit, @DoQuit);
  115.         SetFSetMenu(Cundo, @SetEditMenus);
  116.         SetFSetMenu(Ccut, @SetEditMenus);
  117.         SetFSetMenu(Ccopy, @SetEditMenus);
  118.         SetFSetMenu(Cpaste, @SetEditMenus);
  119.         SetFSetMenu(Cclear, @SetEditMenus);
  120.         SetFSetMenu(Cselectall, @SetEditMenus);
  121.         SetFMenus;
  122.         dummyb := SetOOMenuBar;
  123.         DrawMenuBar;
  124.     end;
  125.  
  126. {$S Term}
  127.     procedure FinishOOMenus;
  128.     begin
  129.         FinishFMenus;
  130.     end;
  131.  
  132. end.