ViewerToolsImpl.mesa
Copyright Ó 1985, 1986, 1991 by Xerox Corporation. All rights reserved.
Doug Wyatt, March 28, 1985 5:10:33 pm PST
Russ Atkinson (RRA) June 17, 1985 3:18:15 pm PDT
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;
Finding and Creating Viewers
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]];
};
Operations on Selections
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];
};
Contents of Viewers
Works for text and maybe some other classes
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.