home *** CD-ROM | disk | FTP | other *** search
/ Executor 2.0 / executorv2.0.iso / pc / dos / extra / source / browser / browser.hqx / Browser / menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-09  |  2.9 KB  |  192 lines

  1. #include "go.h"
  2. #include "display.h"
  3.  
  4. #include "disk.proto.h"
  5. #include "easymenu.proto.h"
  6. #include "filemanip.proto.h"
  7. #include "inithotband.proto.h"
  8. #include "menu.proto.h"
  9. #include "misc.proto.h"
  10. #include "view.proto.h"
  11. #include <Menus.h>
  12.  
  13. typedef void (*onemenu[]) (void);
  14.  
  15.  
  16. /* Metroworks C wants the longest array first */
  17.  
  18. /* NOTE: changes to filemenu must be reflected in go.h */
  19. onemenu filemenu =
  20. {
  21.   newfolder,
  22.   openitem,
  23.   printitem,
  24.   closeitem,
  25.   saveitem,
  26.   nothing,
  27.   deleteselection,
  28.   duplicate,
  29.   getinfo,
  30.   renameselection,
  31.   selectiontohotband,
  32.   nothing,
  33.   checkfordisk,
  34.   goeject,
  35.   nothing,
  36.   format,
  37.   nothing,
  38.   quitgo,
  39. }, gomenu =
  40. {
  41.   aboutgo
  42. }, editmenu =
  43. {
  44.   undolast,
  45.   nothing,
  46.   gocut,
  47.   gocopy,
  48.   gopaste,
  49.   goclear,
  50. }, viewmenu =
  51. {
  52.   iconview,
  53.   icsview,
  54.   listingview
  55. }, sortmenu =
  56. {
  57.   namesort,
  58.   moddatesort,
  59.   sizesort
  60. };
  61.  
  62. onemenu *menubar[] =
  63. {
  64.   &gomenu,
  65.   &filemenu,
  66.   &editmenu,
  67.   &viewmenu,
  68.   &sortmenu
  69. };
  70.  
  71. /* NOTE: onlywhenselected is based upon filemenu */
  72. int onlywhenselected[] =
  73. {
  74.   open_menuid,
  75.   print_menuid,
  76.   delete_menuid,
  77.   duplicate_menuid,
  78.   get_info_menuid,
  79.   rename_menuid,
  80.   send_to_hotband_menuid,
  81.   eject_menuid,
  82. };
  83.  
  84. void
  85. domenu (long choice)
  86. {
  87.   Str255 apname;
  88.   MenuHandle mh;
  89.   short menu_id, menu_item;
  90.  
  91.   menu_id = HiWord (choice);
  92.   menu_item = LoWord (choice);
  93.   if (menu_id == 0)
  94. /*-->*/ return;
  95.   if (menu_id != FIRSTMENU)
  96.     {
  97.       if (menu_id != EDITMENU || !SystemEdit (menu_item - 1))
  98.     (*menubar[menu_id - FIRSTMENU])[menu_item - 1] ();
  99.     }
  100.   else
  101.     {
  102.       if (menu_item <= NELEM (gomenu))
  103.     {
  104.       gomenu[menu_item - 1] ();
  105.     }
  106.       else
  107.     {
  108.       mh = GetMHandle (FIRSTMENU);
  109.       GetItem (mh, menu_item, apname);
  110.       OpenDeskAcc (apname);
  111.     }
  112.     }
  113.   HiliteMenu (0);
  114. }
  115.  
  116. void
  117. showviewmenu (short enable)
  118. {
  119.   MenuHandle mh;
  120.  
  121.   mh = GetMHandle (VIEWMENU);
  122.   if (enable)
  123.     EnableItem (mh, 0);
  124.   else
  125.     DisableItem (mh, 0);
  126. }
  127.  
  128. void
  129. menuchoices (short enable)
  130. {
  131. #if 0
  132.   pascal void (*f) (MenuHandle, short);
  133. #endif /* 0 */
  134.   short i;
  135.   MenuHandle mh;
  136.  
  137.   mh = GetMHandle (FILEMENU);
  138. #if 0
  139.   if (enable)
  140.     f = EnableItem;
  141.   else
  142.     f = DisableItem;
  143.   for (i = 0; i < NELEM (onlywhenselected); i++)
  144.     f (mh, onlywhenselected[i]);
  145. #else /* 0 */
  146.   for (i = 0; i < NELEM (onlywhenselected); i++)
  147.     if (enable)
  148.       EnableItem (mh, onlywhenselected[i]);
  149.     else
  150.       DisableItem (mh, onlywhenselected[i]);
  151. #endif /* 0 */
  152. }
  153.  
  154. void
  155. disable_menu_item (int item)
  156. {
  157.   MenuHandle mh;
  158.  
  159.   mh = GetMHandle (FILEMENU);
  160.   DisableItem (mh, item);
  161. }
  162.  
  163.  
  164. boolean_t
  165. is_enabled (int item)
  166. {
  167.   MenuHandle mh;
  168.   
  169.   mh = GetMHandle (FILEMENU);
  170.   return !!((*mh)->enableFlags & (1 << item));
  171. }
  172.  
  173. void
  174. enable_menu_item (int item)
  175. {
  176.   MenuHandle mh;
  177.  
  178.   mh = GetMHandle (FILEMENU);
  179.   EnableItem (mh, item);
  180. }
  181.  
  182. void
  183. update_da_menu (void)
  184. {
  185.   MenuHandle mh;
  186.   int i;
  187.   
  188.   mh = GetMHandle (FIRSTMENU);
  189.   for (i = CountMItems (mh); i >= 0; --i)
  190.     DelMenuItem (mh, 1);
  191.   AddResMenu (mh, 'DRVR');
  192. }