home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * *
- * Menus.c *
- * *
- * -------------- The menu handling routines -------------- *
- * *
- * Written by Casper Boon, August, 1992. *
- * *
- * © 1992 Casper Boon. *
- * *
- ************************************************************************/
-
- #include "LPD.H"
- #include "lpdProtos.H"
-
-
- /************************************************************************
- * *
- * Diaable or Enable all items in a menu. *
- * *
- ************************************************************************/
- void DisEnableAll(MenuHandle menu, Boolean dis);
- void DisEnableAll(MenuHandle menu, Boolean dis)
- {
- integer nItems, i;
- nItems = CountMItems(menu);
- for (i = 1; i <= nItems; i++)
- {
- if (dis)
- DisableItem(menu, i);
- else
- EnableItem(menu, i);
- }
- }
-
-
- /************************************************************************
- * *
- * Set the states for the menu items.
- * *
- ************************************************************************/
- void SetMenuStates()
- {
- MenuHandle menu;
- extern Boolean noMenus;
-
- menu = GetMHandle(appleMenu);
- DisEnableAll(menu, FALSE); /* enable all */
- DisableItem(menu, mAppleBlnk); /* except the line */
-
- menu = GetMHandle(fileMenu);
- DisEnableAll(menu, TRUE); /* disable all */
- if (!noMenus)
- {
- EnableItem(menu, mClrLItem); /* allow log clearing */
- if (Quitable)
- EnableItem(menu, mQuitItem);
- }
- EnableItem(menu, mXQuitItem); /* allow the emergency exit */
-
- menu = GetMHandle(editMenu);
- DisEnableAll(menu, FALSE); /* enable all */
- DisableItem(menu, mEditBlnk1); /* except the line */
-
- menu = GetMHandle(utilMenu);
- if (noMenus)
- DisEnableAll(menu, TRUE);
- else
- {
- DisEnableAll(menu, FALSE); /* enable all */
- DisableItem(menu, mUtilBlnk1); /* except the line */
- }
- CheckItem(menu, mDbugItem, debugOn);
- }
-
- /************************************************************************
- ************************************************************************/
- void ClearLPDLogFile(void);
- void doClose(void);
-
- /************************************************************************
- * *
- * Process a menu selection. *
- * *
- ************************************************************************/
- void DoCommand(mResult)
- LongInt mResult;
- {
- Str255 name;
- integer theMenu, theItem;
-
- theMenu = HiWord(mResult);
- theItem = LoWord(mResult);
-
- switch (theMenu)
- {
- case appleMenu :
- if (theItem == 1)
- doAbout();
- else
- {
- GetItem(GetMHandle(appleMenu), theItem, name);
- OpenDeskAcc(name);
- }
- break;
- case fileMenu :
- switch (theItem)
- {
- case mClrLItem:
- ClearLPDLogFile(); /* empty the log file */
- break;
- case mQuitItem:
- Exit();
- break;
- case mXQuitItem: /* by-pass the normal checks preventing quits */
- doClose();
- FSClose(stdlog);
- FSClose(stderr);
- ExitToShell();
- break;
- }
- break;
- case editMenu :
- if (SystemEdit(theItem - 1))
- break;
- switch (theItem)
- {
- case mUndoItem: /* UnDo */
- break;
- case mCutItem: /* Cut */
- break;
- case mCopyItem: /* Copy */
- break;
- case mPasteItem: /* Paste */
- break;
- case mClearItem: /* Clear */
- break;
- }
- break;
- case utilMenu :
- switch (theItem)
- {
- case mSpulrItem: /* spooler */
- Poke_Spooler();
- break;
- case mPostsItem: /* send postscript */
- SendPostscriptFile();
- break;
- case mDbugItem: /* debug toggle */
- debugOn = !debugOn;
- break;
- }
- break;
- }
- HiliteMenu(0);
- }
-