<> <> <> <> DIRECTORY Menus USING [Entry], Rope USING [ROPE], VFonts USING [defaultFont, Font], ViewerOps USING [DestroyViewer], ViewerClasses USING [NotifyProc, Viewer, ViewerRec]; Buttons: CEDAR DEFINITIONS IMPORTS VFonts, ViewerOps = BEGIN OPEN ViewerClasses; Button: TYPE = Viewer; -- A button is a viewer that posts a message and when clicked, invokes a procedure. Create: PROC [info: ViewerRec _ [], proc: ViewerClasses.NotifyProc, entry: Menus.Entry, font: VFonts.Font _ VFonts.defaultFont, paint: BOOL _ TRUE] RETURNS [button: Button]; <> Destroy: PROC [button: Button] = INLINE {ViewerOps.DestroyViewer[button]}; ReLabel: PROC [button: Button, newName: Rope.ROPE, paint: BOOL _ TRUE] = INLINE {button.class.set[button, newName, paint]}; <> SetClientData: PROC [button: Button, newData: REF ANY] = INLINE {button.class.set[button, newData, FALSE, $ClientData]} ; SetDisplayStyle: PROC [button: Button, style: ATOM, paint: BOOL _ TRUE] = INLINE {button.class.set[button, style, paint, $DisplayStyle]} ; <> <<$BlackOnWhite - black letters on white background (default)>> <<$WhiteOnBlack - white letters on black background>> <<$BlackOnGrey - black letters on grey background>> END.