<> <> <> <> <<>> DIRECTORY InputFocus USING [GetInputFocus], Rope USING [ROPE], ViewerClasses USING [Viewer, ViewerRec], ViewerOps USING [CreateViewer, FindViewer], ViewerTools USING [SelPos, TiogaContents]; ViewerToolsImpl: CEDAR PROGRAM IMPORTS InputFocus, ViewerOps EXPORTS ViewerTools = BEGIN OPEN ViewerTools; ROPE: TYPE ~ Rope.ROPE; Viewer: TYPE ~ ViewerClasses.Viewer; ViewerRec: TYPE ~ ViewerClasses.ViewerRec; <> FindExistingViewer: PUBLIC PROC [fileName: Rope.ROPE] RETURNS [viewer: Viewer] = { RETURN[ViewerOps.FindViewer[fileName]] }; MakeNewTextViewer: PUBLIC PROC [info: ViewerClasses.ViewerRec _ [], paint: BOOL _ TRUE] RETURNS [viewer: Viewer] = { RETURN[ViewerOps.CreateViewer[flavor: $Text, info: info, paint: paint]]; }; <> SetSelection: PUBLIC PROC [viewer: Viewer, selection: SelPos _ NIL] = { IF viewer=NIL OR viewer.class.set=NIL THEN RETURN; viewer.class.set[viewer, selection, TRUE, $SelPos] }; GetSelectedViewer: PUBLIC PROC RETURNS [viewer: Viewer] = { RETURN[InputFocus.GetInputFocus[].owner] }; GetSelectionContents: PUBLIC PROC RETURNS [ROPE] = { v: Viewer ~ GetSelectedViewer[]; IF v=NIL OR v.class.get=NIL THEN RETURN[NIL]; WITH v.class.get[v, $SelChars] SELECT FROM contents: ROPE => RETURN[contents]; ENDCASE => RETURN[NIL]; }; GetSelection: PUBLIC PROC [viewer: Viewer] RETURNS [selection: SelPos] = { IF viewer=NIL OR viewer.class.get=NIL THEN RETURN[NIL]; WITH viewer.class.get[viewer, $SelPos] SELECT FROM selPos: SelPos => RETURN[selPos]; ENDCASE => RETURN[NIL]; }; <> <> GetContents: PUBLIC PROC [viewer: Viewer] RETURNS [ROPE] = { IF viewer=NIL OR viewer.class.get=NIL THEN RETURN[NIL]; WITH viewer.class.get[viewer] SELECT FROM contents: ROPE => RETURN[contents]; ENDCASE => RETURN[NIL]; }; SetContents: PUBLIC PROC [viewer: Viewer, contents: ROPE, paint: BOOL _ TRUE] = { IF viewer=NIL OR viewer.class.set=NIL THEN RETURN; viewer.class.set[viewer, contents, paint]; }; GetTiogaContents: PUBLIC PROC [viewer: Viewer] RETURNS [TiogaContents] = { IF viewer=NIL OR viewer.class.get=NIL THEN RETURN[NIL]; WITH viewer.class.get[viewer, $TiogaContents] SELECT FROM contents: TiogaContents => RETURN[contents]; ENDCASE => RETURN[NIL]; }; SetTiogaContents: PUBLIC PROC [viewer: Viewer, contents: TiogaContents, paint: BOOL _ TRUE] = { IF viewer=NIL OR viewer.class.set=NIL THEN RETURN; viewer.class.set[viewer, contents, paint, $TiogaContents]; }; InhibitUserEdits: PUBLIC PROC [viewer: Viewer] = { IF viewer=NIL OR viewer.class.set=NIL THEN RETURN; viewer.class.set[viewer, NIL, FALSE, $ReadOnly]; }; EnableUserEdits: PUBLIC PROC [viewer: Viewer] = { IF viewer=NIL OR viewer.class.set=NIL THEN RETURN; viewer.class.set[viewer, NIL, FALSE, $ReadWrite]; }; END.