home *** CD-ROM | disk | FTP | other *** search
- #include <Types.h>
- #include <Desk.h>
- #include <Dialogs.h>
- #include <Events.h>
- #include <Files.h>
- #include <Menus.h>
-
- #include "globals.h"
- #include "eventHandler.h"
- #include "fileMenuRoutines.h"
- #include "menuDispatch.h"
- #include "WindowExtensions.h"
-
- void DoMenuCommand(long menuChoice)
- {
- long menuID;
- long menuItem;
- short daRef;
- Str255 daName;
- Boolean editResult;
-
- menuID = (menuChoice & 0xFFFF0000) >> 16;
- menuItem = menuChoice & 0x0000FFFF;
-
- switch (menuID) {
- case rAppleMenuID: if (menuItem == kAboutItem)
- DoAbout();
- else {
- GetItem(GetMHandle(rAppleMenuID), (short) menuItem, &daName);
- daRef = OpenDeskAcc(daName);
- }
- break;
- case rFileMenuID: HandleFileMenuItems((short) menuItem);
- break;
- case rEditMenuID: editResult = SystemEdit((short) (menuItem - 1));
- break;
- case rFloatersMenuID: HandlerFloaterMenuItems((short) menuItem);
- break;
- }
- HiliteMenu(0);
- }
-
- void DoAbout()
- {
- short alertResult;
-
- DeactivateFloatersAndFirstDocumentWindow();
- alertResult = Alert(256, nil);
- ActivateFloatersAndFirstDocumentWindow();
- }
-
- void HandleFileMenuItems(short theItem)
- {
- switch (theItem) {
- case kNewItem: CreateNewDocumentWindow();
- break;
- case kOpenItem: GetFileToOpen();
- break;
- case kCloseItem: CloseFirstDocumentWindow();
- break;
- case kFindItem: ShowFindDialog();
- break;
- case kQuitItem: gDone = true;
- break;
- }
- }
-
- void HandlerFloaterMenuItems(short theItem)
- {
- Boolean floaterVisible;
- WindowRef floaterPicked;
-
- switch (theItem) {
- case kRecordingItem: floaterPicked = gRecordingFloater;
- break;
- case kToolsItem: floaterPicked = gToolsFloater;
- break;
- }
-
- floaterVisible = GetWindowVisible(floaterPicked);
- if (floaterVisible == false)
- ShowReferencedWindow(floaterPicked);
- else
- HideReferencedWindow(floaterPicked);
- CheckItem(GetMHandle(rFloatersMenuID), theItem, !floaterVisible);
- }
-
- void CreateNewDocumentWindow()
- {
- WindowRef newDocumentWindow;
- OSErr createWindowError;
-
- ValidateWindowList();
- createWindowError = GetNewWindowReference(&newDocumentWindow, 128,
- (WindowRef) -1, gActivateEventHandler);
- if (createWindowError == noErr) {
- ShowReferencedWindow(newDocumentWindow);
- EnableItem(GetMHandle(rFileMenuID), kCloseItem);
- }
- }
-
- void CloseFirstDocumentWindow()
- {
- WindowRef firstDocumentWindow;
-
- ValidateWindowList();
- firstDocumentWindow = FrontNonFloatingWindow();
- if (firstDocumentWindow != nil)
- DisposeWindowReference(firstDocumentWindow);
- if (FrontNonFloatingWindow() == nil)
- DisableItem(GetMHandle(rFileMenuID), kCloseItem);
- }
-
- void ShowFindDialog()
- {
- DialogPtr findDialog;
-
- DeactivateFloatersAndFirstDocumentWindow();
- findDialog = GetNewDialog(257, nil, (WindowPtr) -1);
- DisableItem(GetMHandle(rAppleMenuID), 0);
- DisableItem(GetMHandle(rFileMenuID), 0);
- DrawMenuBar();
- }
-
- void DisposeFindDialog()
- {
- DialogPtr findDialog;
-
- findDialog = FrontWindow();
- DisposeDialog(findDialog);
- ActivateFloatersAndFirstDocumentWindow();
- EnableItem(GetMHandle(rAppleMenuID), 0);
- EnableItem(GetMHandle(rFileMenuID), 0);
- DrawMenuBar();
- }