home *** CD-ROM | disk | FTP | other *** search
- /* MainMenu.c */
- /* Created 01/01/95 12:01 PM by AppMaker */
-
- #include <Types.h>
- #include <Quickdraw.h>
- #include <Controls.h>
- #include <Dialogs.h>
- #include <Events.h>
- #include <Lists.h>
- #include <LowMem.h>
- #include <Menus.h>
- #include <TextEdit.h>
- #include "Globals.h"
- #include "ResourceDefs.h"
- #include "Miscellany.h"
-
- #include "FileM.h"
- #include "EditM.h"
- #include "RemindM.h"
-
- #include <Desk.h>
- #include <ToolUtils.h>
- #include "MainMenu.h"
-
-
- static void Enable (short itemNr,
- Boolean enabled);
- static void EnableTitle (MenuHandle menu,
- Boolean enabled);
- static void DoApple (short itemNr);
-
- /*----------*/
- void InitTitles (void)
- {
- InitFileM ();
- InitEditM ();
- InitRemindM ();
-
- } /*InitTitles*/
-
- /*----------*/
- void LoadMenus (void)
- {
- AppleMenu = GetMenu (MENU_Apple);
- FailNilResource ((Handle)AppleMenu);
- AddResMenu (AppleMenu, 'DRVR');
- FileMenu = GetMenu (MENU_File);
- EditMenu = GetMenu (MENU_Edit);
- RemindMenu = GetMenu (MENU_Remind);
- SoundMenu = GetMenu (MENU_Sound);
- AddResMenu (SoundMenu, 'snd ');
-
- InsertMenu (AppleMenu, 0);
- InsertMenu (FileMenu, 0);
- InsertMenu (EditMenu, 0);
- InsertMenu (RemindMenu, 0);
-
- DrawMenuBar ();
- } /*LoadMenus*/
-
- /*----------*/
- static void DoAbout (void)
- {
- short itemNr;
-
- itemNr = Alert (AboutID, nil);
- } /*DoAbout*/
-
-
- /*----------*/
- static void DoApple (short itemNr)
- {
- Str255 name;
- short refNum;
-
- switch (itemNr) {
- case AppleAbout:
- DoAbout ();
- break;
-
- default:
- GetItem (AppleMenu, itemNr, name);
- refNum = OpenDeskAcc (name);
- break;
- } /*switch*/
- } /*DoApple*/
-
- /*----------*/
- void DoMenu (long menuChoice)
- {
- short menuID;
- short itemNr;
-
- menuID = HiWord (menuChoice);
- itemNr = LoWord (menuChoice);
-
- switch (menuID) {
- case 0:
- /*Do nothing*/;
- break;
- case MENU_Apple:
- DoApple (itemNr);
- break;
- case MENU_File:
- DoFile (itemNr);
- break;
- case MENU_Edit:
- DoEdit (itemNr);
- break;
- case MENU_Remind:
- DoRemind (itemNr);
- break;
-
- } /*switch*/
-
- HiliteMenu (0);
- } /*DoMenu*/
-
- /*----------*/
- MenuHandle menu;
- Boolean menuBarChanged;
-
- /*----------*/
- static void Enable (short itemNr,
- Boolean enabled)
- {
- if (enabled) {
- EnableItem (menu, itemNr);
- } else {
- DisableItem (menu, itemNr);
- }
- } /*Enable*/
-
- /*----------*/
- static void EnableTitle (MenuHandle menu,
- Boolean enabled)
- {
- if (enabled != ((**menu).enableFlags & 1)) {
- menuBarChanged = true;
- }
- if (enabled) {
- EnableItem (menu, 0);
- } else {
- DisableItem (menu, 0);
- }
- } /*EnableTitle*/
-
- /*----------*/
- void UpdateMenus (void)
- {
- WindowPeek frontPeek;
- Boolean isFront; /*is there a front window?*/
- Boolean isCur; /*is there a current window?*/
- Boolean isDirty; /*is it dirty?*/
- Boolean hasFile; /*does it have a file?*/
- Boolean isSelected; /*is anything selected?*/
- Boolean isDesk; /*is the front window a desk acc?*/
- Boolean isText; /*is there a current text field?*/
- Boolean isScrap; /*is there any scrap?*/
- menuBarChanged = false;
-
- isFront = (FrontWindow () != nil);
- isCur = (curWindow != nil);
- isDirty = false;
- hasFile = false;
- isSelected = false;
- if (isCur) {
- isDirty = cur->dirty;
- hasFile = (cur->fileNum != 0);
- }
-
- isDesk = false;
- if (isFront) {
- frontPeek = (WindowPeek) FrontWindow ();
- isDesk = (frontPeek->windowKind < 0);
- }
- isText = isCur && (cur->text != nil);
- isScrap = false;
- if (isText) {
- isSelected = ((**(cur->text)).selStart != (**(cur->text)).selEnd);
- isScrap = (TEGetScrapLen () > 0);
- }
-
- menu = FileMenu;
- Enable (FileClose, isFront);
- Enable (FileSave, isDirty);
- Enable (FileSaveAs, isCur);
- Enable (FileRevert, isDirty);
-
- menu = EditMenu;
- if (isFront) {
- Enable (EditUndo, isDesk);
- Enable (EditCut, isDesk || isSelected);
- Enable (EditCopy, isDesk || isSelected);
- Enable (EditPaste, isDesk || isScrap);
- Enable (EditClear, isDesk || isSelected);
- Enable (EditSelectAll, isText);
-
- }
- EnableTitle (EditMenu, isFront);
-
-
- if (menuBarChanged) {
- DrawMenuBar ();
- }
- } /*UpdateMenus*/
-
- /* MainMenu */
-