home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / System / lpDaemon SRC / lpd Sources / Menus.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-02-14  |  3.7 KB  |  157 lines  |  [TEXT/KAHL]

  1. /************************************************************************
  2.  *                                                                        *
  3.  *    Menus.c                                                                *
  4.  *                                                                        *
  5.  *        -------------- The menu handling routines --------------        *
  6.  *                                                                        *
  7.  *  Written by Casper Boon, August, 1992.                                *
  8.  *                                                                        *
  9.  *    © 1992 Casper Boon.                                                    *
  10.  *                                                                        *
  11.  ************************************************************************/
  12.  
  13. #include "LPD.H"
  14. #include "lpdProtos.H"
  15.  
  16.  
  17. /************************************************************************
  18.  *                                                                        *
  19.  * Diaable or Enable all items in a menu.                                *
  20.  *                                                                        *
  21.  ************************************************************************/
  22. void DisEnableAll(MenuHandle menu, Boolean dis);
  23. void DisEnableAll(MenuHandle menu, Boolean dis)
  24. {
  25.     integer    nItems, i;
  26.     nItems = CountMItems(menu);
  27.     for (i = 1; i <= nItems; i++)
  28.         {
  29.         if (dis)
  30.             DisableItem(menu, i);
  31.         else
  32.             EnableItem(menu, i);
  33.         }
  34. }
  35.  
  36.  
  37. /************************************************************************
  38.  *                                                                        *
  39.  * Set the states for the menu items.
  40.  *                                                                        *
  41.  ************************************************************************/
  42. void SetMenuStates()
  43. {
  44.     MenuHandle    menu;
  45.     extern Boolean noMenus;
  46.  
  47.     menu = GetMHandle(appleMenu);
  48.     DisEnableAll(menu, FALSE);            /* enable all */
  49.     DisableItem(menu, mAppleBlnk);        /* except the line */
  50.  
  51.     menu = GetMHandle(fileMenu);
  52.     DisEnableAll(menu, TRUE);            /* disable all */
  53.     if (!noMenus)
  54.         {
  55.         EnableItem(menu, mClrLItem);    /* allow log clearing */
  56.         if (Quitable)
  57.             EnableItem(menu, mQuitItem);
  58.         }
  59.     EnableItem(menu, mXQuitItem);        /* allow the emergency exit */
  60.  
  61.     menu = GetMHandle(editMenu);
  62.     DisEnableAll(menu, FALSE);            /* enable all */
  63.     DisableItem(menu, mEditBlnk1);        /* except the line */
  64.  
  65.     menu = GetMHandle(utilMenu);
  66.     if (noMenus)
  67.         DisEnableAll(menu, TRUE);
  68.     else
  69.         {
  70.         DisEnableAll(menu, FALSE);            /* enable all */
  71.         DisableItem(menu, mUtilBlnk1);        /* except the line */
  72.         }
  73.     CheckItem(menu, mDbugItem, debugOn);
  74. }
  75.  
  76. /************************************************************************
  77.  ************************************************************************/
  78. void ClearLPDLogFile(void);
  79. void doClose(void);
  80.  
  81. /************************************************************************
  82.  *                                                                        *
  83.  * Process a menu selection.                                            *
  84.  *                                                                        *
  85.  ************************************************************************/
  86. void DoCommand(mResult)
  87. LongInt mResult;
  88. {
  89.     Str255    name;
  90.     integer    theMenu, theItem;
  91.  
  92.     theMenu = HiWord(mResult);
  93.     theItem = LoWord(mResult);
  94.  
  95.     switch (theMenu)
  96.         {
  97.         case appleMenu :
  98.             if (theItem == 1)
  99.                 doAbout();
  100.             else
  101.                 {
  102.                 GetItem(GetMHandle(appleMenu), theItem, name);
  103.                 OpenDeskAcc(name);
  104.                 }
  105.             break;
  106.         case fileMenu :
  107.             switch (theItem)
  108.                 {
  109.                 case mClrLItem:
  110.                     ClearLPDLogFile();    /* empty the log file */
  111.                     break;
  112.                 case mQuitItem:
  113.                     Exit();
  114.                     break;
  115.                 case mXQuitItem:        /* by-pass the normal checks preventing quits */
  116.                     doClose();
  117.                     FSClose(stdlog);
  118.                     FSClose(stderr);
  119.                     ExitToShell();
  120.                     break;
  121.                 }
  122.             break;
  123.         case editMenu :
  124.             if (SystemEdit(theItem - 1))
  125.                 break;
  126.             switch (theItem)
  127.                 {
  128.                 case mUndoItem:    /* UnDo */
  129.                     break;
  130.                 case mCutItem: /* Cut */
  131.                     break;
  132.                 case mCopyItem: /* Copy */
  133.                     break;
  134.                 case mPasteItem: /* Paste */
  135.                     break;
  136.                 case mClearItem: /* Clear */
  137.                     break;
  138.                 }
  139.             break;
  140.         case utilMenu :
  141.             switch (theItem)
  142.                 {
  143.                 case mSpulrItem:    /* spooler */
  144.                     Poke_Spooler();
  145.                     break;
  146.                 case mPostsItem: /* send postscript */
  147.                     SendPostscriptFile();
  148.                     break;
  149.                 case mDbugItem: /* debug toggle */
  150.                     debugOn = !debugOn;
  151.                     break;
  152.                 }
  153.             break;
  154.         }
  155.     HiliteMenu(0);
  156. }
  157.