<> <> <> <> <<>> <> <<>> <> <<>> DIRECTORY BiScrollers USING [BiScroller], Rope USING [ROPE], SilKernel USING [SilData, SilUIData], TIPUser USING [TIPTable], ViewerClasses USING [ModifyProc, NotifyProc, Viewer] ; SilUserInput: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; SilData: TYPE = SilKernel.SilData; SilUIData: TYPE = SilKernel.SilUIData; <<>> <> CaretSet: TYPE = {mark, origin}; Relation: TYPE = {absolute, relative}; SelectMode: TYPE = {add, change, remove, relative, reduce, delete}; ObjectAttributes: TYPE = {color, font, face}; Face: TYPE = {italic, nonItalic, bold, nonBold}; OperationMode: TYPE = {copy, moveStretch, moveNoStretch, delete}; Details: TYPE = {boxWidth, gridSize}; MacroMode: TYPE = {expand, check, define, clear}; CompMode: TYPE = {tics, magnification, oneLevel, yInc, frames}; InputCharMode: TYPE = {NotInputingRope, InputingRope, waitingFor1CharArg, waitingForConfirmation}; UIType: TYPE = {CenterOnMark, ChangeSelected, Compliment, Destroy, DrawBox, DrawRope, EraseArea, HardCopy, InputFile, KillPicture, ManipulateMacro, MarkAsEdited, MergeArea, OperateOnSelected, SelectForAttrib, SelectWithPos, SetCaret, SetCursor, SetDefaultAttribs, SetDetails, ShowMacros, StoreFile, SwapFonts, TrackMouse, Undelete, UserChar}; UInput: TYPE = LIST OF UInputRec; UInputRec: TYPE = RECORD [ SELECT in: UIType FROM CenterOnMark => [], ChangeSelected => [char: CHAR _ 'a], Compliment => [mode: CompMode], DrawBox => [markRel: Relation _ relative, originRel: Relation _ relative, x: INTEGER _ 0, y: INTEGER _ 0, background: BOOL _ FALSE], DrawRope => [rope: ROPE, rel: Relation _ absolute], EraseArea => [xMin, yMin, xMax, yMax: INTEGER], HardCopy => [char: CHAR _ 'a], InputFile => [mode: Relation _ absolute], KillPicture => [], ManipulateMacro => [mode: MacroMode, char: CHAR _ 'a], MarkAsEdited => [], MergeArea => [xMin, yMin, xMax, yMax: INTEGER], OperateOnSelected => [op: OperationMode, rel: Relation _ relative, x: INTEGER _ 0, y: INTEGER _ 0], SelectForAttrib => [mode: SelectMode, char: CHAR _ 'a], SelectWithPos => [x: INTEGER, y: INTEGER, mode: SelectMode _ change], SetCaret => [caret: CaretSet, x: INTEGER _ 0, y: INTEGER _ 0, mode: Relation], SetCursor => [caret: CaretSet _ mark], SetDefaultAttribs => [char: CHAR _ 'a], SetDetails => [detail: Details, char: CHAR _ 'a], ShowMacros => [char: CHAR _ 'a], StoreFile => [clip: BOOL _ TRUE, large: BOOL _ FALSE], SwapFonts => [], TrackMouse => [x: INTEGER, y: INTEGER], Undelete => [], UserChar => [c: CHAR _ 'a] ENDCASE ]; <> defaultGridSpacing: NAT = 4; InitTipTable: PROC [tipTable: TIPUser.TIPTable]; <> InitUserInput: PROC [data: SilData, viewer: ViewerClasses.Viewer]; <> <<>> DestroyUserInput: PROC [uiData: SilUIData]; <> <<>> SilNotify: ViewerClasses.NotifyProc; <<[self: Viewer, input: LIST OF REF ANY] The notify proc which the viewers package will call. This process will be placing user input records on the user input queue.>> <<>> <> SilModifyInputFocus: ViewerClasses.ModifyProc; <<[self: Viewer, change: ModifyAction] >> <> GetInputFocus: PROC[uiData: SilUIData]; <> <<>> HasInputFocus: PROC[] RETURNS [hasIt: BOOL]; <> <<>> Enque: PROC [UI: UInputRec, uiData: SilUIData]; <> <> <<>> Deque: PROC [uiData: SilUIData] RETURNS [UI: UInputRec]; <> <<>> InputAvailable: PROC [uiData: SilUIData] RETURNS [yes: BOOL]; <> <<>> AwaitUserInput: PROC [uiData: SilUIData]; <> <<>> <> SetCaretChange: PROC [uiData: SilUIData]; <> <<>> CaretHasChanged: PROC [uiData: SilUIData]; <> ShouldChangeCaret: PROC [uiData: SilUIData] RETURNS [changeIt: BOOL]; <> <<>> <> ChangeGridInterval: PROC [uiData: SilUIData, gridSpacing: NAT]; <> MagnifyGrid: PROC [uiData: SilUIData, xOffset, yOffset: REAL, magnification: NAT]; <> <<>> <> NotInputingRope: PROC [uiData: SilUIData]; <> InputingRope: PROC [uiData: SilUIData]; <> GetBiScroller: PROC [uiData: SilUIData] RETURNS [bs: BiScrollers.BiScroller]; <> <<>> END.