<> <> <> <> <> <> <> <> DIRECTORY Atom USING [PropList], Rope USING [ROPE], TextLooks USING [allLooks, Looks, noLooks, Runs], TextNode USING [Location, Node], UndoEvent USING [Event]; TextEdit: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Runs: TYPE = TextLooks.Runs; Looks: TYPE = TextLooks.Looks; noLooks: Looks = TextLooks.noLooks; allLooks: Looks = TextLooks.allLooks; Node: TYPE = TextNode.Node; Location: TYPE = TextNode.Location; Event: TYPE = UndoEvent.Event; CharSet: TYPE ~ [0..256); -- for XNS 16-bit character set; use in conjunction with 8-bit CHAR <> <<>> Text: TYPE ~ RECORD [node: Node, start: INT _ 0, len: INT _ INT.LAST]; <> end: PROC [text: Text] RETURNS [INT] ~ INLINE { RETURN[text.start+text.len] }; LocationInText: PROC [loc: Location, text: Text] RETURNS [BOOL] ~ INLINE { RETURN[loc.node=text.node AND loc.where IN[text.start..text.end)]; }; <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> FetchChar: PROC [text: Node, index: INT] RETURNS [charSet: CharSet, char: CHAR]; <> <> FetchLooks: PROC [text: Node, index: INT] RETURNS [Looks]; <> <> Fetch: PROC [text: Node, index: INT] RETURNS [charSet: CharSet, char: CHAR, looks: Looks]; <> <> GetRope: PROC [text: Node] RETURNS [ROPE]; GetRuns: PROC [text: Node] RETURNS [Runs]; Size: PROC [text: Node] RETURNS [INT]; Flatten: PROC [text: Node] RETURNS [BOOL]; <> <> <> FromRope: PROC [rope: ROPE] RETURNS [Node]; <> FromString: PROC [string: REF READONLY TEXT] RETURNS [Node]; <> DocFromNode: PROC [child: Node] RETURNS [root: Node]; <> <> <> ChangeLooks: PROC [root: Node, text: Text, remove, add: Looks, event: Event _ NIL]; <> AddLooks: PROC [root: Node, text: Text, add: Looks, event: Event _ NIL]; RemoveLooks: PROC [root: Node, text: Text, remove: Looks _ allLooks, event: Event _ NIL]; SetLooks: PROC [root: Node, text: Text, new: Looks, event: Event _ NIL]; ClearLooks: PROC [root: Node, text: Text, event: Event _ NIL]; <> GetCharProp: PROC [node: Node, index: INT, name: ATOM] RETURNS [value: REF]; PutCharProp: PROC [node: Node, index: INT, name: ATOM, value: REF, nChars: INT _ 1, event: Event _ NIL, root: Node _ NIL]; <> <> MapPropsAction: TYPE ~ PROC [name: ATOM, value: REF] RETURNS [quit: BOOL _ FALSE]; MapCharProps: PROC [node: Node, index: INT, action: MapPropsAction] RETURNS [quit: BOOL]; <> <<>> ModifyPropsAction: TYPE ~ PROC [value: REF, index: INT, nChars: INT] RETURNS [quit: BOOL _ FALSE, newValue: REF]; ModifyCharProps: PROC [node: Node, name: ATOM, index: INT _ 0, nChars: INT _ INT.LAST, action: ModifyPropsAction, event: Event _ NIL, root: Node _ NIL] RETURNS [quit: BOOL]; <> <<>> PropList: TYPE ~ Atom.PropList; <> <<>> GetCharPropList: PROC [node: Node, index: INT] RETURNS [PropList]; PutCharPropList: PROC [node: Node, index: INT, propList: PropList, nChars: INT _ 1, event: Event _ NIL, root: Node _ NIL]; GetPropFromList: PROC [propList: PropList, key: ATOM] RETURNS [value: REF]; PutPropOnList: PROC [propList: PropList, key: ATOM, value: REF] RETURNS [new: PropList]; <> ChangeFormat: PROC [node: Node, formatName: ATOM, event: Event _ NIL, root: Node _ NIL]; ChangeStyle: PROC [node: Node, name: ROPE, event: Event _ NIL, root: Node _ NIL]; < style to end of node prefix>> PutProp: PROC [node: Node, name: ATOM, value: REF, event: Event _ NIL, root: Node _ NIL]; GetProp: PROC [node: Node, name: ATOM] RETURNS [value: REF]; <> <> ReplaceText: PROC [destRoot, sourceRoot: Node, dest: Text, source: Text, event: Event _ NIL] RETURNS [result: Text]; <> <> <> DeleteText: PROC [root: Node, text: Text, event: Event _ NIL]; <> <> CopyText: PROC [destRoot, sourceRoot: Node, dest: Location, source: Text, event: Event _ NIL] RETURNS [result: Text]; <> <> MoveText: PROC [destRoot, sourceRoot: Node, dest: Location, source: Text, event: Event _ NIL] RETURNS [result: Text]; <> <> <> <> <> MoveTextOnto: PROC [destRoot, sourceRoot: Node, dest: Text, source: Text, event: Event _ NIL] RETURNS [result: Text]; <> <> TransposeText: PROC [alphaRoot, betaRoot: Node, alpha: Text, beta: Text, event: Event _ NIL] RETURNS [alphaResult: Text, betaResult: Text]; <> <> <> <> ReplaceByChar: PROC [root: Node, dest: Text, char: CHAR, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; <> <> <> <> < 0, then gets looks from previous char,>> <> InsertChar: PROC [root: Node, dest: Location, char: CHAR, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; AppendChar: PROC [root: Node, dest: Node, char: CHAR, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; ReplaceByRope: PROC [root: Node, dest: Text, rope: ROPE, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; InsertRope: PROC [root: Node, dest: Location, rope: ROPE, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; AppendRope: PROC [root: Node, dest: Node, rope: ROPE, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; String: TYPE ~ RECORD [text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST]; ReplaceByString: PROC [root: Node, dest: Text, string: String, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; InsertString: PROC [root: Node, dest: Location, string: String, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; AppendString: PROC [root: Node, dest: Node, string: String, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [result: Text]; <> CapChange: TYPE = {allCaps, allLower, initCaps, firstCap}; ChangeCaps: PROC [root: Node, dest: Text, how: CapChange _ allCaps, event: Event _ NIL]; AllCaps: PROC [root: Node, dest: Text, event: Event _ NIL]; <> AllLower: PROC [root: Node, dest: Text, event: Event _ NIL]; <> InitialCaps: PROC [root: Node, dest: Text, event: Event _ NIL]; <> END.