home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / OpenStepConversion / ConversionScripts / EventConversion.tops < prev    next >
Encoding:
Text File  |  1996-01-23  |  14.8 KB  |  338 lines

  1. /*********** EventConversion: mark events in method imp ***********/
  2.  
  3. replace    "- <b arg1>:<structType><token theStruct><b arg2><w w2>{<scope body>}" with "- <arg1>:(NSEvent *)<theStruct> <arg2><w2>{<body>}"
  4.     where  "<structType>" isOneOf { 
  5.     "(NXEvent)",
  6.     "(NXEvent *)",
  7.     "(NXEventPtr)",
  8.     "(const NXEvent *)",
  9.     "(const NXEventPtr)",
  10.     "(NXEvent const *)",
  11.     "(NXEventPtr const)"
  12.     }
  13.     within ("<body>"){
  14.         replace "<t theStruct>" with "(TOPS__NSEvent)<theStruct>"
  15.     }
  16.  
  17. /*********** EventConversion: mark events in method dec ***********/
  18.  
  19. replace    ":<b structType><t theStruct>" with ":(NSEvent *)<theStruct>"
  20.     where  "<structType>" isOneOf { 
  21.     "(NXEvent)",
  22.     "(NXEvent *)",
  23.     "(NXEventPtr)",
  24.     "(const NXEvent *)",
  25.     "(const NXEventPtr)",
  26.     "(NXEvent const *)",
  27.     "(NXEventPtr const)"
  28.     }
  29.  
  30. /*********** EventConversion: mark method return types ***********/
  31.  
  32. replace    "- <structType><t methodName>" with "- (NSEvent *)<methodName>"
  33.     where  "<structType>" isOneOf { 
  34.     "(NXEvent)",
  35.     "(NXEvent *)",
  36.     "(NXEventPtr)",
  37.     "(const NXEvent *)",
  38.     "(const NXEventPtr)",
  39.     "(NXEvent const *)",
  40.     "(NXEventPtr const)"
  41.     }
  42.  
  43. /*********** EventConversion: mark events in function imp ***********/
  44.  
  45. replace    "<t fun>(<b arg1><type><t struct><b arg2>)<w w>{<scope body>}" with "<t fun>(<b arg1>NSEvent *<t struct><b arg2>)<w w>{<scope body>}"
  46.     where "<type>" isOneOf {
  47.     "NXEvent *",
  48.     "NXEvent",
  49.     "NXEventPtr",
  50.     "const NXEvent *",
  51.     "const NXEventPtr",
  52.     "NXEvent const *",
  53.     "NXEventPtr const"
  54.     }
  55.     within ("<body>"){
  56.         replace "<struct>" with "(TOPS__NSEvent)<struct>"
  57.     }
  58.  
  59. /*********** EventConversion: mark events in function dec ***********/
  60.  
  61. replace    "<t function>(<b arg1><structType><t theStruct><b arg2>);" with "<function>(<arg1> NSEvent *<theStruct><arg2>);"
  62.     where "<structType>" isOneOf {
  63.     "NXEvent *",
  64.     "NXEvent",
  65.     "NXEventPtr",
  66.     "const NXEvent *",
  67.     "const NXEventPtr",
  68.     "NXEvent const *",
  69.     "NXEventPtr const"
  70.     }
  71.  
  72. /*********** EventConversion: mark function return types ***********/
  73.  
  74. replace    "<structType><w W1><t function><w W2>(<b argList><w W3>)" with "NSEvent *<function><W2>(<argList><W3>)"
  75.     where "<structType>" isOneOf {
  76.     "NXEvent *",
  77.     "NXEvent",
  78.     "NXEventPtr",
  79.     "const NXEvent *",
  80.     "const NXEventPtr",
  81.     "NXEvent const *",
  82.     "NXEventPtr const"
  83.     }
  84.  
  85. /*********** EventConversion: mark local declarations ***********/
  86.  
  87. replace    "<b structType><b variables>;" with "NSEvent *(TOPSTEMP__NSEvent)<variables>;"
  88.     where "<structType>" isOneOf {
  89.     "NXEvent *",
  90.     "NXEvent",
  91.     "NXEventPtr",
  92.     "const NXEvent *" ,
  93.     "const NXEventPtr",
  94.     "NXEvent const *" ,
  95.     "NXEventPtr const"
  96.     }
  97.     within ("<variables>") {
  98.     replace ", <t theStruct>" with ", *(TOPSTEMP__NSEvent)<theStruct>"
  99.     replace    "**" with "*"
  100.     replace    "*(TOPSTEMP__NSEvent)*" with "*(TOPSTEMP__NSEvent)"
  101. }
  102.  
  103. /*********** EventConversion: mark local usage ***********/
  104.  
  105. replace    "(TOPSTEMP__NSEvent)<t theStruct><scope body>}" with same
  106.     within ("<body>"){
  107.     replace "<t theStruct>" with "(TOPS__NSEvent)<t theStruct>"
  108.     }
  109.  
  110. /*********** EventConversion: preperatory cleanup ***********/
  111.  
  112. replace    "&(TOPS__NSEvent)<t theStruct>" with "(TOPS__NSEvent)<theStruct>"
  113.  
  114. replace    "*(TOPS__NSEvent)<t theStruct>" with "(TOPS__NSEvent)<theStruct>"
  115.  
  116. replace    "((TOPS__NSEvent)<t theStruct>)." with "(TOPS__NSEvent)<theStruct>."
  117.  
  118. replace    "((TOPS__NSEvent)<t theStruct>)->" with "(TOPS__NSEvent)<theStruct>."
  119.  
  120. replace    "(TOPS__NSEvent)<t theStruct>->" with "(TOPS__NSEvent)<theStruct>."
  121.  
  122. /*********** EventConversion: convert to methods - simple ***********/
  123.  
  124. replace "(TOPS__NSEvent)<t theStruct>.<theStructStuff>" with "[(TOPS__NSEvent)<t theStruct> <t accessMethod>]"
  125.     where  ("<theStructStuff>", "<t accessMethod>") isOneOf {
  126.     ("type", "type"),
  127.     ("location", "locationInWindow"),
  128.     ("time", "timestamp"),
  129.     ("flags", "modifierFlags"),
  130.     ("window", "windowNumber"),
  131.     ("ctxt", "context"),
  132.     ("data.mouse.eventNum", "eventNumber"),
  133.     ("data.mouse.click", "clickCount"),
  134.     ("data.mouse.pressure", "float pressure"),
  135.     ("data.key.repeat", "isARepeat"),
  136.     ("data.tracking.eventNum", "eventNumber"),
  137.     ("data.tracking.trackingNum", "trackingNumber"),
  138.     ("data.traking.userData", "userData"),
  139.     ("data.compound.subtype", "subtype"),
  140.     ("data.key.keyCode", "keyCode"),
  141.     ("data.compound.misc.L[0]", "data1"),
  142.     ("data.compound.misc.L[1]", "data2"),
  143. }
  144.  
  145. /*********** EventConversion: convert to methods - exceptions ***********/
  146.  
  147. replace "(TOPS__NSEvent)<t theStruct>.data.mouse.pressure"
  148. with "([(TOPS__NSEvent)<t theStruct> pressure] * 255.0)"
  149.  
  150. replace "(TOPS__NSEvent)<t theStruct>.data.key.charCode" with "[(TOPS__NSEvent)<t theStruct> characters]"
  151.     error "EventConversion: the 'characters' method of NSEvent replaces the '.data.key.charCode' field of NXEvent. Use 'charactersIgnoringModifiers' to get the chars that would have been generated regardless of modifier keys (except shift)"
  152.  
  153. replace "(TOPS__NSEvent)<t theStruct>.data.key.charSet" with same 
  154.     error "EventConversion: the '.data.key.charSet' field of NXEvent does not have an exact translation to an NSEvent method.  Possibly use [[<theStruct> characters] canBeConvertedToEncoding:...]"
  155.  
  156. /*********** EventConversion: events are immutable ***********/
  157.  
  158. replace    "[(TOPS__NSEvent)<t theStruct> <b method>]<w w><t op>" with same
  159.     error "EventConversion: NSEvents are immutable."
  160.     where "<op>" isOneOf    {
  161.     "++", "--", "/=", "*=", "-=", "+=", "%=", "|=", "^=", "&=", "<<=", ">>=", "="
  162.     }
  163.  
  164. /*********** EventConversion: performKeyEquivalent: ***********/
  165.  
  166. replacemethod "commandKey:" with "performKeyEquivalent:"
  167.  
  168. /*********** EventConversion: getting events - guess event source ***********/
  169.  
  170. replace "[<rec> <method1>]<b code>[<rec> <method2>]" with same
  171.     where ("<method1>", "<method2>") isOneOf {
  172.     ("setEventMask:", "setEventMask:"),
  173.     ("addToEventMask:", "removeFromEventMask:"),    
  174.     ("removeFromEventMask:", "addToEventMask:")
  175.     }
  176.     within ("<b code>") {
  177.     replace    "NSGetOrPeekEvent(<context>, <theEvent>, <mask>, <timeout>, <threshold>, <peek>)" with "(<theEvent> = [<rec> nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:(!<peek>)])"
  178.     replace "[<rec2> getNextEvent:<mask> waitFor:<timeout> threshold:<level>]" with "[<rec> nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  179.     replace "[<rec2> getNextEvent:<mask>]" with "[<rec> nextEventMatchingMask:<mask>]"
  180.     replace "[<rec2> peekAndGetNextEvent:<mask>]" with "[<rec> nextEventMatchingMask:<mask> untilDate:[NSDate date] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  181.     replace "[<rec2> peekNextEvent:<mask> into:<theEvent> waitFor:<timeout> threshold:<level>]" with "(<theEvent> = [<rec> nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:NO])"
  182.     replace "[<rec2> peekNextEvent:<mask> into:<theEvent>]" with "(<theEvent> = [<rec> nextEventMatchingMask:<mask> untilDate:[NSDate date] inMode:NSEventTrackingRunLoopMode dequeue:NO])"
  183.     replace    "[<rec2> currentEvent]" with "[<rec> currentEvent]"
  184.     }
  185.  
  186. /*********** EventConversion: getting events - view subclass ***********/
  187.  
  188. replace "@implementation <isKindOf(NSView) class><w w1><any code><w w2>@end" with same
  189.     within ("<code>") {
  190.     replace    "NSGetOrPeekEvent(<context>, <theEvent>, <mask>, <timeout>, <threshold>, <peek>)" with "(<theEvent> = [window nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:(!<peek>)])"
  191.     replace "[<rec2> getNextEvent:<mask> waitFor:<timeout> threshold:<level>]" with "[window nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  192.     replace "[<rec2> getNextEvent:<mask>]" with "[window nextEventMatchingMask:<mask>]"
  193.     replace "[<rec2> peekAndGetNextEvent:<mask>]" with "[window nextEventMatchingMask:<mask> untilDate:[NSDate date] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  194.     replace "[<rec2> peekNextEvent:<mask> into:<theEvent> waitFor:<timeout> threshold:<level>]" with "(<theEvent> = [window nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:NO])"
  195.     replace "[<rec2> peekNextEvent:<mask> into:<theEvent>]" with "(<theEvent> = [window nextEventMatchingMask:<mask> untilDate:[NSDate date] inMode:NSEventTrackingRunLoopMode dequeue:NO])"
  196.     replace    "[<rec2> currentEvent]" with "[window currentEvent]"
  197.     }
  198.  
  199. /*********** EventConversion: getting events - anything else ***********/
  200.  
  201. replace    "NSGetOrPeekEvent(<context>, <theEvent>, <mask>, <timeout>, <threshold>, <peek>)" with "(<theEvent> = [NSApp nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:(!<peek>)])"
  202.  
  203. replace "[<rec> getNextEvent:<mask> waitFor:<timeout> threshold:<level>]" with "[<rec> nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  204.  
  205. replace "[<rec> getNextEvent:<mask>]" with "[<rec> nextEventMatchingMask:<mask> untilDate:[NSDate distantFuture] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  206.  
  207. replace "[<rec> peekAndGetNextEvent:<mask>]" with "[<rec> nextEventMatchingMask:<mask> untilDate:[NSDate date] inMode:NSEventTrackingRunLoopMode dequeue:YES]"
  208.  
  209. replace "[<rec> peekNextEvent:<mask> into:<theEvent> waitFor:<timeout> threshold:<level>]" with "(<theEvent> = [<rec> nextEventMatchingMask:<mask> untilDate:[NSDate dateWithTimeIntervalSinceNow:<timeout>] inMode:NSEventTrackingRunLoopMode dequeue:NO])"
  210.  
  211. replace "[<rec> peekNextEvent:<mask> into:<theEvent>]" with "(<theEvent> = [<rec> nextEventMatchingMask:<mask> untilDate:[NSDate date] inMode:NSEventTrackingRunLoopMode dequeue:NO])"
  212.  
  213. /****** EventConversion: timed events ******/
  214.  
  215. replace "<token var> = NXBeginTimer(<timer>, <delay>, <period>)" with "[NSEvent startPeriodicEventsAfterDelay:<delay> withPeriod:<period>]"
  216.  
  217. replace "NXBeginTimer(<timer>, <delay>, <period>)" with "[NSEvent startPeriodicEventsAfterDelay:<delay> withPeriod:<period>]"
  218.  
  219. replace "NXEndTimer(<b timer>)" with "[NSEvent stopPeriodicEvents]"
  220.  
  221. replace "NXTrackingTimer <b vars>;" with same
  222.     error "EventConversion: NXTrackingTimer is obsolete; use NSEvent 'startPeriodicEventsAfterDelay:withPeriod:' and 'stopPeriodicEvents'.  You can probably delete this variable and its uses."
  223.  
  224. /****** setEventMask, addToEventMask, removeFromEventMask, eventMask ******/
  225.  
  226. replace "[<rec> removeFromEventMask:<mask>]" with "[<rec> CONVERSIONremoveFromEventMask:NX_KEYDOWNMASK]"
  227.     error "EventConversion: 'removeFromEventMask:' is obsolete; you no longer need to use the eventMask methods; for mouse moved events, see 'setAcceptsMouseMovedEvents:' If this line is used to prevent <rec> from becoming the key window, either make <rec> a subclass of NSPanel and send it 'setBecomesKeyOnlyIfNeeded:YES', or overide the 'canBecomeKeyWindow' method in NSWindow"
  228.     where "<mask>" isOneOf {
  229.     "NX_KEYDOWNMASK",
  230.     "NX_KEYUPMASK",
  231.     "NX_KEYUPMASK|NX_KEYDOWNMASK",
  232.     "NX_KEYDOWNMASK|NX_KEYUPMASK",
  233.     "(NX_KEYUPMASK|NX_KEYDOWNMASK)",
  234.     "(NX_KEYDOWNMASK|NX_KEYUPMASK)"
  235.     }
  236.     
  237.  
  238. replacemethod "<sel>" with same
  239.     error "EventConversion: <sel>: is obsolete; you no longer need to use the eventMask methods; for mouse moved events, see 'setAcceptsMouseMovedEvents:'"
  240.     where "<sel>" isOneOf {
  241.     "setEventMask:",
  242.     "addToEventMask:",
  243.     "removeFromEventMask:",
  244.     "eventMask"
  245.     }
  246.  
  247. /****** EventConversion: #defines ******/
  248.  
  249. replace "<t oldEventDefine>" with "<t newEventEnum>" 
  250.     where ("<t oldEventDefine>", "<t newEventEnum>") isOneOf {
  251.     ("NX_LMOUSEDOWN", "NSLeftMouseDown"),
  252.     ("NX_LMOUSEUP", "NSLeftMouseUp"),
  253.     ("NX_RMOUSEDOWN", "NSRightMouseDown"),
  254.     ("NX_RMOUSEUP", "NSRightMouseUp"),
  255.     ("NX_MOUSEMOVED", "NSMouseMoved"),
  256.     ("NX_LMOUSEDRAGGED", "NSLeftMouseDragged"),
  257.     ("NX_RMOUSEDRAGGED", "NSRightMouseDragged"),
  258.     ("NX_MOUSEENTERED", "NSMouseEntered"),
  259.     ("NX_MOUSEEXITED", "NSMouseExited"),
  260.     ("NX_KEYDOWN", "NSKeyDown"),
  261.     ("NX_KEYUP", "NSKeyUp"),
  262.     ("NX_FLAGSCHANGED", "NSFlagsChanged"),
  263.     ("NX_KITDEFINED", "NSAppKitDefined"),
  264.     ("NX_SYSDEFINED", "NSSystemDefined"),
  265.     ("NX_APPDEFINED", "NSApplicationDefined"),
  266.     ("NX_TIMER", "NSPeriodic"),
  267.     ("NX_CURSORUPDATE", "NSCursorUpdate"),
  268.     ("NX_LMOUSEDOWNMASK", "NSLeftMouseDownMask"),
  269.     ("NX_LMOUSEUPMASK", "NSLeftMouseUpMask"),
  270.     ("NX_RMOUSEDOWNMASK", "NSRightMouseDownMask"),
  271.     ("NX_RMOUSEUPMASK", "NSRightMouseUpMask"),
  272.     ("NX_MOUSEMOVEDMASK", "NSMouseMovedMask"),
  273.     ("NX_LMOUSEDRAGGEDMASK", "NSLeftMouseDraggedMask"),
  274.     ("NX_RMOUSEDRAGGEDMASK", "NSRightMouseDraggedMask"),
  275.     ("NX_MOUSEENTEREDMASK", "NSMouseEnteredMask"),
  276.     ("NX_MOUSEEXITEDMASK", "NSMouseExitedMask"),
  277.     ("NX_KEYDOWNMASK", "NSKeyDownMask"),
  278.     ("NX_KEYUPMASK", "NSKeyUpMask"),
  279.     ("NX_FLAGSCHANGEDMASK", "NSFlagsChangedMask"),
  280.     ("NX_KITDEFINEDMASK", "NSAppkitDefinedMask"),    
  281.     ("NX_APPDEFINEDMASK", "NSSystemDefinedMask"),    
  282.     ("NX_SYSDEFINEDMASK", "NSApplicationDefinedMask"),
  283.     ("NX_TIMERMASK", "NSPeriodicMask"),
  284.     ("NX_CURSORUPDATEMASK", "NSCursorUpdateMask"),
  285.     ("NX_ALLEVENTS", "NSAnyEventMask"),
  286.     ("NX_ALPHASHIFTMASK", "NSAlphaShiftKeyMask"),
  287.     ("NX_SHIFTMASK", "NSShiftKeyMask"),
  288.     ("NX_CONTROLMASK", "NSControlKeyMask"),
  289.     ("NX_ALTERNATEMASK", "NSAlternateKeyMask"),
  290.     ("NX_COMMANDMASK", "NSCommandKeyMask"),
  291.     ("NX_NUMERICPADMASK", "NSNumericPadKeyMask"),
  292.     ("NX_HELPMASK", "NSHelpKeyMask"),
  293.     ("NX_MOUSEDOWNMASK", "NSLeftMouseDownMask"),
  294.     ("NX_MOUSEUPMASK", "NSLeftMouseUpMask"),
  295.     ("NX_MOUSEDRAGGEDMASK", "NSLeftMouseDraggedMask"),
  296.     ("NX_MOUSEDOWN", "NSLeftMouseDown"),
  297.     ("NX_MOUSEUP",  "NSLeftMouseUp"),
  298.     ("NX_MOUSEDRAGGED",  "NSLeftMouseDragged")
  299.     ("NX_NEXTCTRLKEYMASK", "NSControlKeyMask"),
  300.     ("NX_NEXTLSHIFTKEYMASK", "NSShiftKeyMask"),
  301.     ("NX_NEXTRSHIFTKEYMASK", "NSShiftKeyMask"),
  302.     ("NX_NEXTLCMDKEYMASK", "NSControlKeyMask"),
  303.     ("NX_NEXTRCMDKEYMASK", "NSControlKeyMask"),
  304.     ("NX_NEXTLALTKEYMASK", "NSAlternateKeyMask"),
  305.     ("NX_NEXTRALTKEYMASK", "NSAlternateKeyMask"),
  306.     ("NX_EVENTCODEMASK", "NSEventMaskFromType")
  307. }
  308.  
  309. replace    "<t oldEventDefine>" with same
  310.     error "EventCoversion: <oldEventDefine> is obsolete."
  311.     where "<t oldEventDefine>" isOneOf {
  312.     "NX_NULLEVENT",
  313.     "NX_FIRSTEVENT",
  314.     "NX_LASTEVENT",
  315.     "NX_NULLEVENTMASK",
  316.     "NX_STYLUSPROXIMITYMASK",
  317.     "NX_NONCOALSESCEDMASK"
  318. }
  319.  
  320. /****** EventConversion: DPS functions ******/
  321.  
  322. replace    "DPSPostEvent(<theEvent>, <atStart>)" with "[window postEvent:<theEvent> atStart:<atStart>]"
  323.  
  324. replace    "DPSDiscardEvents(<context>, <mask>)" with "[window discardEventsMatchingMask:<mask> beforeEvent:nil]"
  325.     error "EventConversion: 'discardEventsMatchingMask:beforeEvent:' used to be 'DPSDiscardEvents(...)'. To avoid a timing bug, you should pass the last event you received.  Only events that occurred before that event will be discarded."
  326.  
  327. /****** EventConversion: cleanup ******/
  328.  
  329. replace    "(TOPS__NSEvent)" with ""    
  330.  
  331. replace    "TOPS__NSEvent" with ""    
  332.  
  333. replace    "(TOPSTEMP__NSEvent)" with ""    
  334.  
  335. replace    "TOPSTEMP__NSEvent" with ""    
  336.  
  337. replace    "[NSDate dateWithTimeIntervalSinceNow:NX_FOREVER]" with "[NSDate distantFuture]"    
  338.