DIRECTORY GGBasicTypes, GGInterfaceTypes, Menus, ViewerClasses; GGUserInput: CEDAR DEFINITIONS = BEGIN GGData: TYPE = GGInterfaceTypes.GGData; Point: TYPE = GGBasicTypes.Point; UserInputProc: TYPE = PROC [ggData: GGData, event: LIST OF REF]; Viewer: TYPE = ViewerClasses.Viewer; HandleMenuAction: Menus.ClickProc; InputNotify: ViewerClasses.NotifyProc; BiScrollerInputNotify: PROC [ggData: GGData, event: LIST OF REF]; EventNotify: PROC [clientData: REF, event: LIST OF REF]; UnQueuedEventNotify: PROC [clientData: REF, event: LIST OF REF]; PlayAction: PROC [clientData: REF, event: LIST OF REF]; ArgumentType: TYPE = {none, rope, rope2, refInt, refReal, refCard, refExt}; RegisterAction: PROC [atom: ATOM, eventProc: UserInputProc, argType: ArgumentType, causeMouseEventsToComplete: BOOL ¬ TRUE, ensureUnique: BOOL ¬ FALSE]; External: TYPE = REF ExternalRec; ExternalRec: TYPE = RECORD [ valid: BOOL ¬ FALSE, results: REF ]; WaitExternal: PROC [External]; BroadcastExternal: PROC [External]; NotifyExternal: PROC [External]; SetUserTraceOn: PROC [on: BOOL]; GetUserTraceOn: PROC RETURNS [on: BOOL]; RegisterRawInputHandler: PROC [rawInputHandler: RawInputHandlerProc]; RawInputHandlerProc: TYPE = PROC [self: Viewer, ggData: GGData, input: LIST OF REF, notify: PROC [LIST OF REF]]; END. n GGUserInput.mesa Copyright Σ 1985, 1987, 1989, 1991, 1992 by Xerox Corporation. All rights reserved. Author: Eric Bier on June 6, 1985 0:56:45 am PDT Contents: Procedures which handle user actions (menu buttons and mouse actions). Last edited by Bier on November 8, 1987 11:17:46 pm PST Bier, March 19, 1993 4:06 pm PST Pier, June 13, 1991 3:57 pm PDT Doug Wyatt, April 20, 1992 12:24 pm PDT An action has been received from the Gargoyle TIP table. An action has been received from BiScroller (e.g. from the ScrollBar). An action has been received from some other source. The clientData argument is passed to the EventProc that was registered for by RegisterAction for the ATOM event.first. event.first must be an ATOM. An action has been received from a Gargoyle playback script. For clients who wish to extend Gargoyle's input language. Once atom is registered, then clients may add such an action to the queue by calling EventNotify above. argType is the type of value that Gargoyle should expect in event.rest.first when EventNotify is called. If such a value is not present, Gargoyle will parse the current Tioga selection to make one (except for refExt). If causeMouseEventsToComplete is TRUE, Gargoyle will finish any mouse actions in progress before trying this action. causeMouseEventsToComplete should almost always be TRUE. If ensureUnique is TRUE Gargoyle will raise a SIGNAL if an action is register more than once. Future Values ExternalRec is used by applications external to Gargoyle to return results to those applications. Clients should call EventNotify with a registered external proc name and a REF to an ExternalRec on a two-element event list. Client should then call WaitExternal, which will return when Gargoyle completes the desired action, puts results in "results", and sets "valid" to TRUE. Gargoyle will use BroadcastExternal when actions complete. ΚΤ•NewlineDelimiter –(cedarcode) style™code™Kšœ ΟeœI™TKšΟnœ'Οk™0KšžœH™PKšœ7™7K™ Kšœ™K™'K™—šŸ ˜ K˜5K˜—Kšž œŸœŸ œŸ˜&˜KšœŸœ˜'KšœŸœ˜!Kš œŸœŸœŸœŸœŸœ˜@KšœŸœ˜$K˜—Kšžœ˜"šž œ˜&Kšœ.Ÿœ™8—š žœŸœŸœŸœŸœ˜AKšœF™F—Kš ž œŸœŸœ ŸœŸœŸœ˜8Kš žœŸœŸœ ŸœŸœŸœ˜@š ž œŸœŸœ ŸœŸœŸœ˜7KšœšŸœ&Ÿœ™ΙKšœ<™