<> <> <> <> <> <<>> DIRECTORY Rope USING [ROPE]; MenuSystem: CEDAR DEFINITIONS = BEGIN ROPE: TYPE ~ Rope.ROPE; MenuSystem: TYPE ~ REF MenuSystemRec; --The actual network of menus, etc. MenuSystemRec: TYPE; --Details private, and subject to change. Menu: TYPE ~ RECORD [ title: ROPE, --May be NIL for no title, iff not referenced by other menus options: LIST OF ROPE, defaultSelection: CARDINAL _ 0, --See PopUpMenu.mesa sticky: BOOLEAN _ FALSE --See discussion of this bit at Select[]. ]; CreateMenuSystem: PROC RETURNS [ms: MenuSystem]; <<>> InstallMenu: PROC [ms: MenuSystem, menu: Menu]; <> <<>> InstallRefMenu: PROC [ms: MenuSystem, menu: REF Menu]; <> <<>> RemoveMenu: PROC [ms: MenuSystem, title: ROPE]; <> <<>> InstallAction: PROC [ms: MenuSystem, title: ROPE, action: REF]; <> <<>> Select: PROC [ms: MenuSystem, title: ROPE _ NIL] RETURNS [action: REF]; <> <> <> <<>> CallUnderLock: PROC [proc: PROC]; <> <<>> <<>> <<>> END.