<<>> <> <> <> <> <> <<>> 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.