<> <> <<>> DIRECTORY Interminal USING [KeyName, MousePosition, updown], Intime USING [EventTime, MsTicks]; TIPTables: CEDAR DEFINITIONS SHARES Intime = BEGIN <> TIPScreenCoords: TYPE = REF TIPScreenCoordsRec; TIPScreenCoordsRec: TYPE = Interminal.MousePosition; TIPTime: TYPE = REF Intime.EventTime; TIPTable: TYPE = REF TIPTableRec; TIPTableRec: TYPE = RECORD [ mouseTicks: Intime.MsTicks _ 50, opaque : BOOLEAN _ TRUE, link : TIPTable _ NIL, ignore : IgnoreBits _ IgnoreEverything, variants: SELECT flavor: * FROM small => [all: TIPChoiceSeries], fast => [mouse : TIPChoice, keyDown, keyUp : ARRAY Interminal.KeyName OF TIPChoice, time : TIPChoice], ENDCASE ]; IgnoreBits: TYPE = MACHINE DEPENDENT RECORD [ up, down, move: BOOLEAN, unused: [0..8192) ]; IgnoreEverything: IgnoreBits = [TRUE, TRUE, TRUE, 0]; TIPChoiceSeries: TYPE = LIST OF TIPChoice; TIPChoice: TYPE = LIST OF TIPTerm _ NIL; TIPTerm: TYPE = RECORD [ variants: SELECT flavor: * FROM keyTrigger => [keyState: TIPKeyState], mouseTrigger => NULL, timeTrigger => [flavor: TimeoutFlavor, mSecs: Intime.MsTicks], keyEnable => [keyState: TIPKeyState], key2Enable => [keyState1, keyState2: TIPKeyState], -- true if either keyEnableList => [lst: LIST OF TIPKeyState], -- true if any predEnable => [predicate: ATOM], char => [ch: REF CHARACTER], coords => [xy: TIPScreenCoords], time => [time: TIPTime], nested => [statement : TIPChoiceSeries], result => [list: TIPResults], ENDCASE ]; TIPResults: TYPE = LIST OF REF ANY _ NIL; <> TimeoutFlavor: TYPE = {gt, lt}; <> <> TIPKeyState: TYPE = RECORD [ key : Interminal.KeyName, state: Interminal.updown _ down ]; END.