<> <> <> <> <> <> <> <> <<>> DIRECTORY Buttons USING [Button, ButtonProc], Imager USING [Font], Menus USING [MenuEntry, MenuProc, MouseButton], Rope USING [ROPE], ViewerClasses USING [ViewerRec]; MBQueue: CEDAR DEFINITIONS = BEGIN Queue: TYPE = REF QueueObj; QueueObj: TYPE; Create: PROC [pushModel: BOOL _ TRUE] RETURNS [Queue]; <> <> <> <> <> <> <> CreateMenuEntry: PROC [q: Queue, name: Rope.ROPE, proc: Menus.MenuProc, clientData: REF ANY _ NIL, documentation: REF ANY _ NIL, fork: BOOL _ TRUE, guarded: BOOL _ FALSE ] RETURNS [Menus.MenuEntry]; <> CreateButton: PROC [q: Queue, info: ViewerClasses.ViewerRec _ [], proc: Buttons.ButtonProc, clientData: REF ANY _ NIL, fork: BOOL _ TRUE, font: Imager.Font _ NIL, documentation: REF ANY _ NIL, guarded: BOOL _ FALSE, paint: BOOL _ TRUE ] RETURNS [Buttons.Button]; <> QueueClientAction: PROC [q: Queue, proc: PROC [REF ANY], data: REF ANY]; <> <> <> Action: TYPE = RECORD [ SELECT type: * FROM client => [ proc: PROC [REF ANY], data: REF ANY ], user => [ proc: Menus.MenuProc, parent: REF ANY, clientData: REF ANY, mouseButton: Menus.MouseButton, shift, control: BOOL ] ENDCASE ]; DequeueAction: PROC [q: Queue] RETURNS [Action]; <> <> Flush: PROC [q: Queue]; <> <> <> FlushWithCallback: PROC [q: Queue, proc: PROC[Action] _ NIL]; <> END.