<> <> <> <> <> <<>> DIRECTORY Rope USING [ROPE], ViewerClasses USING [Viewer, ViewerRec]; ViewerTools: CEDAR DEFINITIONS = BEGIN OPEN ViewerClasses; ROPE: TYPE ~ Rope.ROPE; Viewer: TYPE ~ ViewerClasses.Viewer; ViewerRec: TYPE ~ ViewerClasses.ViewerRec; <> FindExistingViewer: PROC [fileName: ROPE] RETURNS [viewer: Viewer]; <> MakeNewTextViewer: PROC [info: ViewerRec _ [], paint: BOOL _ TRUE] RETURNS [viewer: Viewer]; <> <> <> <> <> SelPos: TYPE = REF SelPosRec; SelPosRec: TYPE = RECORD [ start, length: LONG INTEGER _ 0, pendingDelete: BOOL _ FALSE, caretPos: {before, after} _ before ]; SetSelection: PROC [viewer: Viewer, selection: SelPos _ NIL]; < caret at end. For other text viewers, NIL => entire contents in pending-delete mode. Works only for Tioga and Typescript viewers.>> GetSelectedViewer: PROC RETURNS [viewer: Viewer]; <> GetSelectionContents: PROC RETURNS [contents: ROPE]; <> GetSelection: PROC [viewer: Viewer] RETURNS [selection: SelPos]; <> <> <> GetContents: PROC [viewer: Viewer] RETURNS [contents: ROPE]; <> SetContents: PROC [viewer: Viewer, contents: ROPE, paint: BOOL _ TRUE]; <> TiogaContents: TYPE = REF TiogaContentsRec ; TiogaContentsRec: TYPE = RECORD [ contents: ROPE _ NIL, formatting: ROPE _ NIL ]; GetTiogaContents: PROC [viewer: Viewer] RETURNS [contents: TiogaContents]; <> SetTiogaContents: PROC [viewer: Viewer, contents: TiogaContents, paint: BOOL _ TRUE]; <> InhibitUserEdits: PROC [viewer: Viewer]; <> EnableUserEdits: PROC [viewer: Viewer]; <> END.