<> <> <> <<>> <> <<>> DIRECTORY Abutters USING [Abutter], IO USING [STREAM], Rope USING [ROPE], ViewerClasses USING [Viewer]; GenericTool: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; STREAM: TYPE ~ IO.STREAM; Viewer: TYPE ~ ViewerClasses.Viewer; ToolHandle: TYPE ~ REF ToolObject; ToolObject: TYPE ~ RECORD[ <> abutter: Abutters.Abutter, controlsViewer: Viewer, logViewer: Viewer, in, out: STREAM, preDestroy: ButtonProc _ NIL, <> control: REF ANY, data: REF ANY]; ButtonProc: TYPE ~ PROC [tH: ToolHandle]; <> OptionList: TYPE ~ LIST OF Option; Option: TYPE ~ RECORD [ name: ROPE, it: SELECT kind: * FROM readonly => [], invisible => [], notify => [proc: ButtonProc] ENDCASE ]; CreateInstance: PROC [ toolName: ROPE, control: REF ANY, options: OptionList, data: REF ANY _ NIL, preDestroy: ButtonProc _ NIL] RETURNS [tH: ToolHandle]; <> PutMsgRope: PROC [tH: ToolHandle, rope: ROPE, clear: BOOL _ FALSE]; <> <<>> END.