DIRECTORY Imager USING [Context], Menus USING [Entry, Menu, MenuName, Trigger], Process USING [Milliseconds], TIPUser USING [TIPScreenCoords], ViewerClasses USING [Viewer]; MenusPrivate: CEDAR DEFINITIONS = BEGIN OPEN Menus; Viewer: TYPE = ViewerClasses.Viewer; menuHLeading: INTEGER = 5; -- white space before first entry menuHSpace: INTEGER = 12; -- white space between entries ViewerMenus: TYPE = REF ViewerMenusRec; ViewerMenusRec: TYPE = RECORD [ x, y: INTEGER _ 0, -- lower-left corner of entire menu area of viewer, relative to the viewer w, h: INTEGER _ 0, -- width and height of entire menu area of viewer list: LIST OF ViewerMenu _ NIL, inverted: EntryState _ NIL ]; ViewerMenu: TYPE = REF ViewerMenuRec; ViewerMenuRec: TYPE = RECORD [ commonData: Menu, -- data common to all instances of the menu entries: LIST OF EntryState _ NIL, active: BOOLEAN _ TRUE ]; EntryState: TYPE = REF EntryStateRec; EntryStateRec: TYPE = MONITORED RECORD [ width: INTEGER _ 0, xPos: INTEGER _ 0, yPos: INTEGER _ 0, greyed: BOOL _ FALSE, guardState: GuardState _ armed, commonData: Entry _ NIL ]; GuardState: TYPE = { guarded, arming, armed }; armingTime: Process.Milliseconds = 100; -- cover removal time. armedTime: Process.Milliseconds = 5000; -- unguarded interval. TIPScreenCoords: TYPE = TIPUser.TIPScreenCoords; MarkMenu: PROC[menus: ViewerMenus, parent: Viewer, mousePos: TIPScreenCoords]; HitMenu: PROC[menus: ViewerMenus, parent: Viewer, mousePos: TIPScreenCoords, trigger: Trigger]; ClearMenu: PROC[menus: ViewerMenus, parent: Viewer, paint: BOOL _ TRUE] ; DrawMenu: PROC[v: Viewer, menus: ViewerMenus, context: Imager.Context, whatChanged: REF ANY _ NIL]; ViewerlessAddMenu: PROC [name: MenuName, addBefore: MenuName _ NIL, paint: BOOL _ TRUE]; RecomputeMenus: PROC[v: Viewer] RETURNS[heightDelta: INTEGER]; ReComputeWindowMenus: PROC [v: Viewer, guard: BOOL, color: BOOL]; END. θMenusPrivate.mesa; Written by S. McGregor Edited by McGregor on July 21, 1983 10:43 am Last Edited by: Maxwell, December 17, 1982 9:59 am Last Edited by: Pausch, August 17, 1983 4:38 pm Last Edited by: Wyatt, October 19, 1983 3:21 pm Called when the mouse is pressed down over a menu to do the proper inverse-video stuff. provided for convenience of BuildWindowMenus in WindowManagerImpl this will reset all fields in the data structure, including position and size of each entry. Κι– "cedar" style˜JšΟc)™)Jš,™,Jšœ2™2J™/J™/J™šΟk ˜ Jšœžœ ˜Jšœžœ"˜-Jšœžœ˜Jšœžœ˜ Jšœžœ ˜J˜—Jšœžœž ˜Jšœžœžœ˜J˜šœžœ˜$J˜—Jšœžœ!˜Jšœ(˜>J˜Jšœžœ˜0J˜šΟnœžœ@˜NJšœW™WJ˜—šŸœžœR˜_J˜—JšŸ œžœ,žœžœ˜IJ˜š ŸœžœFžœžœžœ˜cJ˜J˜—šŸœžœ˜(Jšœžœ žœžœ˜/JšœA™AJ˜—JšŸœžœ žœžœ˜>J˜šŸœžœžœ žœ˜AJšœ\™\—J˜Jšžœ˜J˜J˜—…—p A