TypeScript.mesa; Edited by Paxton on January 4, 1983 2:31 pm
Last Edited by: Maxwell, January 5, 1983 9:57 am
Last Edited by: Teitelman, January 10, 1983 1:09 pm
DIRECTORY
Rope USING [ROPE],
ViewerClasses USING [Viewer, ViewerRec],
ViewerOps USING [DestroyViewer];
TypeScript: CEDAR DEFINITIONS IMPORTS ViewerOps = BEGIN
TS: TYPE = ViewerClasses.Viewer;
Creating and destroying typescripts
Create: PROC [info: ViewerClasses.ViewerRec, paint: BOOLTRUE] RETURNS [ts: TS] ;
IsATypescript: PROC [ts: TS] RETURNS [yes: BOOL] = INLINE {
RETURN [ts # NIL AND ts.class.flavor = $Typescript] };
Destroy: PROC [ts: TS] = INLINE {ViewerOps.DestroyViewer[ts]};
Destroys typescript viewer and related data structures
Reset: PROC [ts: TS] = INLINE {ts.class.init[ts]};
Erases all the typescript text data and clears the screen.
Output to typescript
PutChar: PROC [ts: TS, char: CHAR] ;
PutRope: PROC [ts: TS, rope: Rope.ROPE] ;
PutText: PROC [ts: TS, text: REF READONLY TEXT, start: INTEGER ← 0,
stopPlusOne: INTEGERLAST[INTEGER]];
BackSpace: PROC [ts: TS, count: INT ← 1];
Delete character(s) from end of ts.
ChangeLooks: PROC [ts: TS, look: CHAR];
look char in 'a..'z means add that look
in 'A..'Z means remove
blank means remove all looks
AddLooks: PROC [ts: TS, look: CHAR];
Following echoed chars will have the given look. Look char must be in ['a..'z] or nothing happens'
RemoveLooks: PROC [ts: TS, look: CHAR];
To remove looks previously added by AddLooks. Look char must be in ['a..'z] or nothing happens'
ClearLooks: PROC [ts: TS];
Following echoed chars will not have any looks.'
GetLooks: PROC [ts: TS] RETURNS [looks: Rope.ROPE];
Following echoed chars will not have any looks.'
Input from typescript
GetChar: PROC [ts: TS] RETURNS [char: CHARACTER] ;
CharsAvailable: PROC [ts: TS] RETURNS [BOOLEAN] ;
RETURNS TRUE if no chars waiting.
Simulate user typein to a typescript
TypeIn: PROC [ts: TS, input: REF ANY] = INLINE
{ts.class.notify[ts, LIST[input]]} ;
can be REF CHARACTER, ROPE, REF TEXT, or ATOM (be careful).
InsertRopeAtFrontOfBuffer: PROC [ts: TS, rope: Rope.ROPE];
This will be the next thing read, even if there are characters waiting in the input buffer.
InsertCharAtFrontOfBuffer: PROC [ts: TS, char: CHARACTER];
Synchronization
Flush: PROC [ts: TS];
This won't return until echo buffer has been emptied and all chars inserted in ts. (done automatically by BackSpace, AddLooks, and ClearLooks)'
WaitUntilIdle: PROC [ts: TS];
This won't return until input buffer has been emptied and input process is waiting in GetChar for more characters.
WaitUntilCharsAvail: PROC [ts: TS];
This won't return until a character is available to GetChar.
Aborting
UserAbort: PROC [ts: TS] RETURNS [abort: BOOLEAN] ;
ResetUserAbort: PROC [ts: TS] ;
SetUserAbort: PROC [ts: TS] ;
END.