1 | # IBCarbonscan.py
|
---|
2 |
|
---|
3 | import sys
|
---|
4 | import MacOS
|
---|
5 | import sys
|
---|
6 |
|
---|
7 | from bgenlocations import TOOLBOXDIR, BGENDIR
|
---|
8 | sys.path.append(BGENDIR)
|
---|
9 |
|
---|
10 | from scantools import Scanner, Scanner_OSX
|
---|
11 |
|
---|
12 | def main():
|
---|
13 | print "---Scanning CarbonEvents.h---"
|
---|
14 | input = ["CarbonEvents.h"]
|
---|
15 | output = "CarbonEventsgen.py"
|
---|
16 | defsoutput = TOOLBOXDIR + "CarbonEvents.py"
|
---|
17 | scanner = CarbonEvents_Scanner(input, output, defsoutput)
|
---|
18 | scanner.scan()
|
---|
19 | scanner.close()
|
---|
20 | print "=== Testing definitions output code ==="
|
---|
21 | execfile(defsoutput, {}, {})
|
---|
22 | print "--done scanning, importing--"
|
---|
23 | import CarbonEvtsupport
|
---|
24 | print "done"
|
---|
25 |
|
---|
26 | RefObjectTypes = ["EventRef",
|
---|
27 | "EventQueueRef",
|
---|
28 | "EventLoopRef",
|
---|
29 | "EventLoopTimerRef",
|
---|
30 | "EventHandlerRef",
|
---|
31 | "EventHandlerCallRef",
|
---|
32 | "EventTargetRef",
|
---|
33 | "EventHotKeyRef",
|
---|
34 | ]
|
---|
35 |
|
---|
36 | class CarbonEvents_Scanner(Scanner_OSX):
|
---|
37 | def destination(self, type, name, arglist):
|
---|
38 | classname = "CarbonEventsFunction"
|
---|
39 | listname = "functions"
|
---|
40 | if arglist:
|
---|
41 | t, n, m = arglist[0]
|
---|
42 | if t in RefObjectTypes and m == "InMode":
|
---|
43 | if t == "EventHandlerRef":
|
---|
44 | classname = "EventHandlerRefMethod"
|
---|
45 | else:
|
---|
46 | classname = "CarbonEventsMethod"
|
---|
47 | listname = t + "methods"
|
---|
48 | #else:
|
---|
49 | # print "not method"
|
---|
50 | return classname, listname
|
---|
51 |
|
---|
52 | def writeinitialdefs(self):
|
---|
53 | self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
|
---|
54 | self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
|
---|
55 | self.defsfile.write("false = 0\n")
|
---|
56 | self.defsfile.write("true = 1\n")
|
---|
57 | self.defsfile.write("keyAEEventClass = FOUR_CHAR_CODE('evcl')\n")
|
---|
58 | self.defsfile.write("keyAEEventID = FOUR_CHAR_CODE('evti')\n")
|
---|
59 |
|
---|
60 | def makeblacklistnames(self):
|
---|
61 | return [
|
---|
62 | "sHandler",
|
---|
63 | "MacCreateEvent",
|
---|
64 | # "TrackMouseLocationWithOptions",
|
---|
65 | # "TrackMouseLocation",
|
---|
66 | # "TrackMouseRegion",
|
---|
67 | "RegisterToolboxObjectClass",
|
---|
68 | "UnregisterToolboxObjectClass",
|
---|
69 | "ProcessHICommand",
|
---|
70 | "GetCFRunLoopFromEventLoop",
|
---|
71 |
|
---|
72 | "InvokeEventHandlerUPP",
|
---|
73 | "InvokeEventComparatorUPP",
|
---|
74 | "InvokeEventLoopTimerUPP",
|
---|
75 | "NewEventComparatorUPP",
|
---|
76 | "NewEventLoopTimerUPP",
|
---|
77 | "NewEventHandlerUPP",
|
---|
78 | "DisposeEventComparatorUPP",
|
---|
79 | "DisposeEventLoopTimerUPP",
|
---|
80 | "DisposeEventHandlerUPP",
|
---|
81 |
|
---|
82 | # Wrote by hand
|
---|
83 | "InstallEventHandler",
|
---|
84 | "RemoveEventHandler",
|
---|
85 |
|
---|
86 | # Write by hand?
|
---|
87 | "GetEventParameter",
|
---|
88 | "FlushSpecificEventsFromQueue",
|
---|
89 | "FindSpecificEventInQueue",
|
---|
90 | "InstallEventLoopTimer",
|
---|
91 |
|
---|
92 | # Don't do these because they require a CFRelease
|
---|
93 | "CreateTypeStringWithOSType",
|
---|
94 | "CopyEvent",
|
---|
95 | ]
|
---|
96 |
|
---|
97 | # def makeblacklisttypes(self):
|
---|
98 | # return ["EventComparatorUPP",
|
---|
99 | # "EventLoopTimerUPP",
|
---|
100 | # #"EventHandlerUPP",
|
---|
101 | # "EventComparatorProcPtr",
|
---|
102 | # "EventLoopTimerProcPtr",
|
---|
103 | # "EventHandlerProcPtr",
|
---|
104 | # ]
|
---|
105 |
|
---|
106 | def makerepairinstructions(self):
|
---|
107 | return [
|
---|
108 | ([("UInt32", 'inSize', "InMode"), ("void_ptr", 'inDataPtr', "InMode")],
|
---|
109 | [("MyInBuffer", 'inDataPtr', "InMode")]),
|
---|
110 | ([("Boolean", 'ioWasInRgn', "OutMode")],
|
---|
111 | [("Boolean", 'ioWasInRgn', "InOutMode")]),
|
---|
112 | ]
|
---|
113 |
|
---|
114 | if __name__ == "__main__":
|
---|
115 | main()
|
---|