diff options
Diffstat (limited to 'maccaml/menus.c')
-rw-r--r-- | maccaml/menus.c | 339 |
1 files changed, 0 insertions, 339 deletions
diff --git a/maccaml/menus.c b/maccaml/menus.c deleted file mode 100644 index 81751824a..000000000 --- a/maccaml/menus.c +++ /dev/null @@ -1,339 +0,0 @@ -/***********************************************************************/ -/* */ -/* Objective Caml */ -/* */ -/* Damien Doligez, projet Para, INRIA Rocquencourt */ -/* */ -/* Copyright 1998 Institut National de Recherche en Informatique et */ -/* en Automatique. All rights reserved. This file is distributed */ -/* under the terms of the GNU Library General Public License, with */ -/* the special exception on linking described in file ../LICENSE. */ -/* */ -/***********************************************************************/ - -/* $Id$ */ - -#include "main.h" - -static void DoAppleChoice (short item, EventModifiers mods) -{ -#pragma unused (mods) - if (item == kItemAbout){ - OpenAboutBox (); - }else{ - Str255 deskAccName; - GetMenuItemText (GetMenuHandle (kMenuApple), item, deskAccName); - OpenDeskAcc (deskAccName); - } -} - -OSErr DoQuit () -{ - WindowPtr w; - OSErr err; - - while (1){ - w = FrontWindow (); - while (1){ - if (w == NULL) goto done; - if (GetWindowGoAwayFlag (w) && w != winGraphics) break; - w = GetNextWindow (w); - } - err = WinDoClose (closingApp, w); - if (err != noErr) return err; - } - done: - if (winGraphics != NULL) WinCloseGraphics (); - WinCloseToplevel (); - rotatecursor_final (); - FinaliseAndQuit (); - return noErr; -} - -static void DoFileChoice (short item, EventModifiers mods) -{ -#pragma unused (mods) - WindowPtr w = FrontWindow (); - - switch (item){ - case kItemNew: - FileNew (); - break; - case kItemOpen: - FileDoGetOpen (); - break; - case kItemClose: - WinDoClose (closingWindow, w); - break; - case kItemSave: - FileDoSave (w, 0); - break; - case kItemSaveAs: - FileDoSave (w, 1); - break; - case kItemRevert: - FileRevert (w); - break; - case kItemPageSetup: - FilePageSetup (); - break; - case kItemPrint: - FilePrint (); - break; - case kItemQuit: - DoQuit (); - break; - default: Assert (0); - } -} - -static void DoEditChoice (short item, EventModifiers mods) -{ -#pragma unused (mods) - WindowPtr w = FrontWindow (); - WEReference we = WinGetWE (w); - - switch (item){ - case kItemUndo: - WEUndo (we); - break; - case kItemCut: - WECut (we); - ClipChanged (); - break; - case kItemCopy: - WECopy (we); - ClipChanged (); - break; - case kItemPaste: - if (w == winToplevel){ - long selstart, selend; - WEGetSelection (&selstart, &selend, we); - if (selstart < wintopfrontier){ - selstart = selend = WEGetTextLength (we); - WESetSelection (selstart, selend, we); - WEFeatureFlag (weFReadOnly, weBitClear, we); - } - if (selstart == wintopfrontier && selend == selstart){ - WESetStyle (weDoFont + weDoSize + weDoColor + weDoFace+weDoReplaceFace, - &prefs.unread, we); - } - WEFeatureFlag (weFMonoStyled, weBitSet, we); - WEPaste (we); - WEFeatureFlag (weFMonoStyled, weBitClear, we); - }else{ - WEPaste (we); - } - break; - case kItemClear: - WEDelete (we); - break; - case kItemSelectAll: - WESetSelection (0, LONG_MAX, we); - break; - case kItemShowClipboard: - ClipShow (); - break; - case kItemFind: - XXX (); - break; - case kItemReplace: - XXX (); - break; - case kItemPreferences: - XXX (); - break; - default: Assert (0); - } -} - -static WindowPtr **winTable; /* a handle */ -static long winTableLen = 0; /* number of entries in the table */ - -static void DoWindowsChoice (short item, EventModifiers mods) -{ -#pragma unused (mods) - switch (item){ - case 1: - Assert (winToplevel != NULL); - SelectWindow (winToplevel); - break; - case 2: - Assert (winGraphics != NULL); - ShowWindow (winGraphics); - SelectWindow (winGraphics); - break; - case 3: - Assert (0); - default: - Assert (item - 4 >= 0 && item - 4 < winTableLen); - SelectWindow ((*winTable)[item - 4]); - break; - } -} - -void DoMenuChoice (long choice, EventModifiers mods) -{ - short menu = HiWord (choice); - short item = LoWord (choice); - - switch (menu){ - case 0: break; - case kMenuApple: - DoAppleChoice (item, mods); - HiliteMenu (0); - break; - case kMenuFile: - DoFileChoice (item, mods); - HiliteMenu (0); - break; - case kMenuEdit: - DoEditChoice (item, mods); - HiliteMenu (0); - break; - case kMenuWindows: - DoWindowsChoice (item, mods); - HiliteMenu (0); - break; - default: Assert (0); - } -} - -OSErr InitialiseMenus (void) -{ - OSErr err; - Size s = 10; - - err = AllocHandle (s * sizeof (WindowPtr), (Handle *) &winTable); - if (err != noErr) return err; - - SetMenuBar (GetNewMBar (kMenuBar)); - AppendResMenu (GetMenuHandle (kMenuApple), 'DRVR'); - DrawMenuBar (); - return 0; -} - -static void EnableDisableItem (MenuHandle menu, short item, int enable) -{ - if (enable){ - EnableItem (menu, item); - }else{ - DisableItem (menu, item); - } -} - -/* Add w to the windows menu. */ -OSErr MenuWinAdd (WindowPtr w) -{ - MenuHandle m; - Str255 title; - Size s = GetHandleSize ((Handle) winTable) / sizeof (WindowPtr); - - if (s <= winTableLen){ - OSErr err; - SetHandleSize ((Handle) winTable, (s + 10) * sizeof (WindowPtr)); - err = MemError (); if (err != noErr) return err; - } - (*winTable)[winTableLen] = w; - ++ winTableLen; - - m = GetMenuHandle (kMenuWindows); - AppendMenu (m, "\px"); - GetWTitle (w, title); - SetMenuItemText (m, (winTableLen-1) + 4, title); - - return noErr; -} - -/* Remove w from the windows menu; do nothing if w is not there. */ -void MenuWinRemove (WindowPtr w) -{ - long i; - MenuHandle m; - - i = 0; - while (1){ - if (i >= winTableLen) return; - if ((*winTable)[i] == w) break; - ++ i; - } - Assert (i < winTableLen); - m = GetMenuHandle (kMenuWindows); - DeleteMenuItem (m, kItemDocuments + i); - for (++i; i < winTableLen; i++) (*winTable)[i-1] = (*winTable)[i]; - -- winTableLen; -} - -static void MenuWinUpdate (void) -{ - long i; - MenuHandle m = GetMenuHandle (kMenuWindows); - WindowPtr w = FrontWindow (); - - SetItemMark (m, kItemToplevel, w == winToplevel ? diamondMark : noMark); - SetItemMark (m, kItemGraphics, w == winGraphics ? diamondMark : noMark); - for (i = 0; i < winTableLen; i++){ - SetItemMark (m, kItemDocuments + i, - w == (*winTable)[i] ? diamondMark : noMark); - } -} - -void UpdateMenus (void) -{ - WindowPtr w; - WStatusH st; - WEHandle we; - MenuHandle m; - Str255 text; - struct menuflags flags = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - - w = FrontWindow (); - st = WinGetStatus (w); - we = WinGetWE (w); - - WinUpdateStatus (w); - - if (st != NULL) flags = (*st)->menuflags; - - m = GetMenuHandle (kMenuFile); - /* New is always enabled. */ - /* Open is always enabled. */ - EnableDisableItem (m, kItemClose, w != NULL && GetWindowGoAwayFlag (w)); - EnableDisableItem (m, kItemSave, flags.save); - EnableDisableItem (m, kItemSaveAs, flags.save_as); - EnableDisableItem (m, kItemRevert, flags.revert); - EnableDisableItem (m, kItemPageSetup, flags.page_setup); - EnableDisableItem (m, kItemPrint, flags.print); - /* Quit is always enabled. */ - - m = GetMenuHandle (kMenuEdit); - DisableItem (m, kItemUndo); - GetIndString (text, kUndoStrings, 1); - SetMenuItemText (m, kItemUndo, text); - if (we != NULL){ - Boolean temp; - WEActionKind ak; - - Assert (st != NULL); - - ak = WEGetUndoInfo (&temp, we); - if (ak != weAKNone){ - GetIndString (text, kUndoStrings, 2*ak + temp); - SetMenuItemText (m, kItemUndo, text); - EnableItem (m, kItemUndo); - } - } - EnableDisableItem (m, kItemCut, flags.cut); - EnableDisableItem (m, kItemCopy, flags.copy); - EnableDisableItem (m, kItemPaste, flags.paste); - EnableDisableItem (m, kItemClear, flags.clear); - EnableDisableItem (m, kItemSelectAll, flags.select_all); - /* Show Clipboard is always enabled. */ - EnableDisableItem (m, kItemFind, flags.find); - EnableDisableItem (m, kItemReplace, flags.replace); - /* PreferencesÉ is always enabled. */ - - MenuWinUpdate (); - m = GetMenuHandle (kMenuWindows); - EnableDisableItem (m, kItemGraphics, winGraphics != NULL); -} |