home *** CD-ROM | disk | FTP | other *** search
- #include "go.h"
- #include "display.h"
-
- #include "disk.proto.h"
- #include "easymenu.proto.h"
- #include "filemanip.proto.h"
- #include "inithotband.proto.h"
- #include "menu.proto.h"
- #include "misc.proto.h"
- #include "view.proto.h"
- #include <Menus.h>
-
- typedef void (*onemenu[]) (void);
-
-
- /* Metroworks C wants the longest array first */
-
- /* NOTE: changes to filemenu must be reflected in go.h */
- onemenu filemenu =
- {
- newfolder,
- openitem,
- printitem,
- closeitem,
- saveitem,
- nothing,
- deleteselection,
- duplicate,
- getinfo,
- renameselection,
- selectiontohotband,
- nothing,
- checkfordisk,
- goeject,
- nothing,
- format,
- nothing,
- quitgo,
- }, gomenu =
- {
- aboutgo
- }, editmenu =
- {
- undolast,
- nothing,
- gocut,
- gocopy,
- gopaste,
- goclear,
- }, viewmenu =
- {
- iconview,
- icsview,
- listingview
- }, sortmenu =
- {
- namesort,
- moddatesort,
- sizesort
- };
-
- onemenu *menubar[] =
- {
- &gomenu,
- &filemenu,
- &editmenu,
- &viewmenu,
- &sortmenu
- };
-
- /* NOTE: onlywhenselected is based upon filemenu */
- int onlywhenselected[] =
- {
- open_menuid,
- print_menuid,
- delete_menuid,
- duplicate_menuid,
- get_info_menuid,
- rename_menuid,
- send_to_hotband_menuid,
- eject_menuid,
- };
-
- void
- domenu (long choice)
- {
- Str255 apname;
- MenuHandle mh;
- short menu_id, menu_item;
-
- menu_id = HiWord (choice);
- menu_item = LoWord (choice);
- if (menu_id == 0)
- /*-->*/ return;
- if (menu_id != FIRSTMENU)
- {
- if (menu_id != EDITMENU || !SystemEdit (menu_item - 1))
- (*menubar[menu_id - FIRSTMENU])[menu_item - 1] ();
- }
- else
- {
- if (menu_item <= NELEM (gomenu))
- {
- gomenu[menu_item - 1] ();
- }
- else
- {
- mh = GetMHandle (FIRSTMENU);
- GetItem (mh, menu_item, apname);
- OpenDeskAcc (apname);
- }
- }
- HiliteMenu (0);
- }
-
- void
- showviewmenu (short enable)
- {
- MenuHandle mh;
-
- mh = GetMHandle (VIEWMENU);
- if (enable)
- EnableItem (mh, 0);
- else
- DisableItem (mh, 0);
- }
-
- void
- menuchoices (short enable)
- {
- #if 0
- pascal void (*f) (MenuHandle, short);
- #endif /* 0 */
- short i;
- MenuHandle mh;
-
- mh = GetMHandle (FILEMENU);
- #if 0
- if (enable)
- f = EnableItem;
- else
- f = DisableItem;
- for (i = 0; i < NELEM (onlywhenselected); i++)
- f (mh, onlywhenselected[i]);
- #else /* 0 */
- for (i = 0; i < NELEM (onlywhenselected); i++)
- if (enable)
- EnableItem (mh, onlywhenselected[i]);
- else
- DisableItem (mh, onlywhenselected[i]);
- #endif /* 0 */
- }
-
- void
- disable_menu_item (int item)
- {
- MenuHandle mh;
-
- mh = GetMHandle (FILEMENU);
- DisableItem (mh, item);
- }
-
-
- boolean_t
- is_enabled (int item)
- {
- MenuHandle mh;
-
- mh = GetMHandle (FILEMENU);
- return !!((*mh)->enableFlags & (1 << item));
- }
-
- void
- enable_menu_item (int item)
- {
- MenuHandle mh;
-
- mh = GetMHandle (FILEMENU);
- EnableItem (mh, item);
- }
-
- void
- update_da_menu (void)
- {
- MenuHandle mh;
- int i;
-
- mh = GetMHandle (FIRSTMENU);
- for (i = CountMItems (mh); i >= 0; --i)
- DelMenuItem (mh, 1);
- AddResMenu (mh, 'DRVR');
- }