void modify_menu_item( short menu, short item, boolean status, short check) { MenuHandle menu_handle; menu_handle= GetMHandle(menu); assert(menu_handle); if (menu_handle) { if (status) { EnableItem(menu_handle, item); } else { DisableItem(menu_handle, item); } if (check!=NONE) { CheckItem(menu_handle, item, check); } } return; }
long wait () { EventRecord event; WindowPtr window; MenuInfo **m; long r; Str255 tmp; /* wait for an event */ WaitNextEvent (everyEvent,&event,(long) 6,NIL); switch (event.what) { /* got one -- what is it? */ case mouseDown: /* mouse clicked */ switch (FindWindow (event.where,&window)) { case inMenuBar: /* menu bar item? */ /* yes, interesting event? */ if (r = MenuSelect (event.where)) { /* round-about test for Apple menu */ if ((*(m = GetMHandle (HiWord (r))))->menuData[1] == appleMark) { /* get desk accessory name */ GetItem (m,LoWord (r),tmp); OpenDeskAcc (tmp); /* fire it up */ SetPort (window); /* put us back at our window */ } else SysBeep (60); /* the fool forgot to disable it! */ } HiliteMenu (0); /* unhighlight it */ break; case inContent: /* some window was selected */ if (window != FrontWindow ()) SelectWindow (window); break; default: /* ignore all others */ break; } break; case keyDown: /* key hit - if COMMAND/. then punt */ if ((event.modifiers & cmdKey) && (event.message & charCodeMask) == '.') return NIL; break; default: /* ignore all others */ break; } return T; /* try wait test again */ }