-- wwTIPTest.mesa -- Last Edited by Winiger, 28-Sep-81 17:07:44 DIRECTORY CedarLists USING [ListOfRefAny], CedarAtoms USING [GetPName], Real USING [FixI], TTY USING [Handle, Create, PutChar, PutCR, PutBlanks, PutString, PutLongString, PutLongDecimal, PutDecimal, GetString], TIPUser USING [CreateClient, InstantiateNewTIPTable, TIPButtonProc, TIPClient, TIPScreenCoords, TIPNotifyProc, TIPTable, PushTIPTable]; wwTIPTest: PROGRAM IMPORTS CedarAtoms, Real, TTY, TIPUser = BEGIN OPEN TTY; client: TIPUser.TIPClient; tty: Handle ← Create["wwTIPTest.log"]; tioga: BOOLEAN ← TRUE; tiogaTable: TIPUser.TIPTable; name: STRING ← [32]; -- the string terminating procedure for GetString: EndString: PROC [ch: CHARACTER] RETURNS [BOOLEAN] = { RETURN[ch = 15C]; }; GoForIt: PROCEDURE = BEGIN DO PutCR[tty]; PutString[tty, "enter new tip table name: "]; GetString[tty, name, EndString]; PutCR[tty]; tiogaTable ← TIPUser.InstantiateNewTIPTable[LOOPHOLE[LONG[name]]]; IF tiogaTable = NIL THEN BEGIN PutString[tty, "you better check your tiptable"]; PutCR[tty]; END ELSE BEGIN client ← TIPUser.CreateClient[notify: NotifyTestProc]; TIPUser.PushTIPTable[client, tiogaTable, FALSE]; END; ENDLOOP; END; NotifyTestProc: TIPUser.TIPNotifyProc = BEGIN WriteCoords: PROCEDURE [coords: TIPUser.TIPScreenCoords] = INLINE BEGIN PutChar[tty, '(]; PutDecimal[tty, Real.FixI[coords.x]]; PutString[tty, ", "]; PutDecimal[tty, Real.FixI[coords.y]]; PutChar[tty, ')]; END; params: CedarLists.ListOfRefAny; first: BOOLEAN ← TRUE; PutString[tty, " ["]; FOR params ← results, params.rest UNTIL params=NIL DO IF first THEN first ← FALSE ELSE PutString[tty, "; "]; WITH params.first SELECT FROM x: ATOM => PutLongString[tty, LOOPHOLE[CedarAtoms.GetPName[x]]]; x: REF CHARACTER => PutChar[tty, x↑]; x: REF LONG INTEGER => PutLongDecimal[tty, x↑]; x: REF TEXT => PutLongString[tty, LOOPHOLE[x]]; x: TIPUser.TIPScreenCoords => WriteCoords[x]; ENDCASE => PutString[tty, "(unknown parameter flavor)"]; ENDLOOP; PutString[tty, "]"]; PutCR[tty]; END; -- here do something to get the ball rolling GoForIt; END.