<<>> <> <> <> <> <> <> <<>> DIRECTORY Process USING [Milliseconds], Rope USING [ROPE], ViewerClasses USING [ClickProc, Menu, MenuRec, MenuEntry, MenuEntryRec, MenuLine, MouseButton]; <> <<>> Menus: CEDAR DEFINITIONS = BEGIN Menu: TYPE = ViewerClasses.Menu; MenuRec: TYPE = ViewerClasses.MenuRec; MenuEntry: TYPE = ViewerClasses.MenuEntry; MenuEntryRec: TYPE = ViewerClasses.MenuEntryRec; MenuLine: TYPE = ViewerClasses.MenuLine; <> CreateMenu: PROC [lines: MenuLine ¬ 1] RETURNS [menu: Menu]; <> CopyMenu: PROC [old: Menu] RETURNS [new: Menu]; <> <> MouseButton: TYPE = ViewerClasses.MouseButton; ClickProc: TYPE = ViewerClasses.ClickProc; <> MenuProc: TYPE = ClickProc; <> <> CreateEntry: PROC [name: Rope.ROPE, proc: ClickProc, clientData: REF ANY ¬ NIL, documentation: REF ANY ¬ NIL, fork: BOOL ¬ TRUE, guarded: BOOL ¬ FALSE ] RETURNS [entry: MenuEntry]; <> CopyEntry: PROC [oldEntry: MenuEntry] RETURNS [newEntry: MenuEntry]; SetGuarded: PROC [entry: MenuEntry, guard: BOOL]; SetClientData: PROC [entry: MenuEntry, newData: REF ANY] RETURNS [oldData: REF ANY]; SetDocumentation: PROC [entry: MenuEntry, newDoc: REF ANY] RETURNS [oldDoc: REF ANY]; <> FindEntry: PROC [menu: Menu, entryName: Rope.ROPE] RETURNS [entry: MenuEntry]; <> AppendMenuEntry: PROC [menu: Menu, entry: MenuEntry, line: MenuLine ¬ 0]; <> InsertMenuEntry: PROC [menu: Menu, entry: MenuEntry, line: MenuLine ¬ 0]; <> ReplaceMenuEntry: PROC [menu: Menu, oldEntry: MenuEntry, newEntry: MenuEntry ¬ NIL]; <> <> <<>> <> <<>> MenuFromMenuEntry: PUBLIC PROC [entryList: MenuEntry] RETURNS [Menu]; <> MenuEntryFind: PUBLIC PROC[entryName: Rope.ROPE, entryList: MenuEntry] RETURNS [MenuEntry]; <> <<>> MenuEntryAppend: PUBLIC PROC[entry: MenuEntry, entryList: MenuEntry] RETURNS [MenuEntry]; <> MenuEntryInsert: PUBLIC PROC[entry: MenuEntry, entryList: MenuEntry] RETURNS [MenuEntry]; <> <<>> MenuEntryReplace: PUBLIC PROC[entryList: MenuEntry, old: MenuEntry, new: MenuEntry] RETURNS [MenuEntry]; <> <> <<>> <<>> targetNotFound: SIGNAL; ChangeNumberOfLines: PROC [menu: Menu, newLines: MenuLine]; GetNumberOfLines: PROC [menu: Menu] RETURNS [lines: MenuLine]; SetLine: PROC [menu: Menu, line: MenuLine, entryList: MenuEntry]; GetLine: PROC [menu: Menu, line: MenuLine] RETURNS [entryList: MenuEntry]; armingTime: Process.Milliseconds = 100; -- cover removal time. armedTime: Process.Milliseconds = 5000; -- unguarded interval. END.