DIRECTORY Rope USING [ROPE], ViewerClasses USING [Input, Viewer]; Menus: CEDAR DEFINITIONS = BEGIN Viewer: TYPE = ViewerClasses.Viewer; Input: TYPE = ViewerClasses.Input; ROPE: TYPE = Rope.ROPE; Action: TYPE = RECORD[ name: ROPE, -- name of action (for pop-up menu) input: Input, -- input to be passed to the notify proc doc: ROPE _ -- description of the action (don't be lazy, now ...) ]; Entry: TYPE = RECORD[ name: ROPE, actions: LIST OF Action, guarded: BOOL _ FALSE ]; Line: TYPE = REF LineRep; -- a line of Entries LineRep: TYPE = RECORD[ name: ATOM, entries: LIST OF Entry, active: BOOL _ TRUE ]; Menu: TYPE = LIST OF Line; ParseDescription: PROC[def: ROPE, errorFile: ROPE _ NIL] RETURNS[Menu]; SetMenu: PROC[viewer: Viewer, menu: Menu, paint: BOOL _ TRUE]; LineInViewer: PROC[viewer: Viewer, name: ATOM] RETURNS[exists: BOOLEAN]; Change: TYPE = {show, hide, toggle}; ChangeLine: PROC[viewer: Viewer, name: ATOM, change: Change, paint: BOOL _ TRUE]; ShowLine: PROC[viewer: Viewer, name: ATOM, paint: BOOL _ TRUE] = INLINE { ChangeLine[viewer, name, show, paint] }; HideLine: PROC[viewer: Viewer, name: ATOM, paint: BOOL _ TRUE] = INLINE { ChangeLine[viewer, name, hide, paint] }; ToggleLine: PROC[viewer: Viewer, name: ATOM, paint: BOOL _ TRUE] = INLINE { ChangeLine[viewer, name, toggle, paint] }; END. βMenus.mesa Menus are collections of entries. Entries are selectable regions at the top of viewers that can cause TIP-like actions to be passed to notifyProcs. Last Edited by: Pausch, August 26, 1983 10:18 am Wyatt, November 10, 1983 2:09 pm Actions may be shared, so the contents of an Action must be considered immutable. Entries may be shared, so the contents of an Entry must be considered immutable. Lines may be shared, so the contents of a Line must be considered immutable. Parsing menu descriptions The rope is parsed for a menu description, as laid out in MenuBNF.tioga. Returns NIL if any errors are found. If errorFile is not NIL, it names a file to which error reports are written. Manipulating a Viewer's menu Κΐ– "cedar" style˜JšΟc ™ J™J™”J™™J™ J™ —J˜šΟk ˜ Jšœžœžœ˜Jšœžœ˜$J˜—Jšœžœž ˜Jšœžœ˜J˜Jšœžœ˜$Jšœžœ˜"šžœžœžœ˜J˜—šœžœžœ˜Jšœžœ#˜/Jšœ(˜6Jšœžœ5˜AJšœ˜J™QJ˜—šœžœžœ˜Jšœžœ˜ Jšœ žœžœ˜Jšœ žœž˜J˜J™PJ™—Jšœžœžœ ˜.šœ žœžœ˜Jšœžœ˜ Jšœ žœžœ˜Jšœžœž˜J˜J™LJ˜—Jšœžœžœžœ˜˜J˜—J™J™š Οnœžœžœ žœžœžœ˜GJšœRžœ/žœ5™Ό—J˜J™Jšœ™J˜JšŸœžœ$žœžœ˜>J˜Jš Ÿ œžœžœžœ žœ˜HJ˜Jšœžœ˜$Jš Ÿ œžœžœžœžœ˜QJ˜š Ÿœžœžœ žœžœ˜>Jšœžœ+˜3J˜—š Ÿœžœžœ žœžœ˜>Jšœžœ+˜3J˜—š Ÿ œžœžœ žœžœ˜@Jšœžœ-˜5J˜—Jšžœ˜—…—2 Τ