Last-minute fix for Jim H: don't die after del sys.stdout
[python/dscho.git] / Mac / Modules / qt / qtscan.py
blob3cef0f91c1306eb1b2fe69cce5c01a4de81613c2
1 # Scan an Apple header file, generating a Python file of generator calls.
3 import addpack
4 addpack.addpack(':tools:bgen:bgen')
5 from scantools import Scanner
6 from bgenlocations import TOOLBOXDIR
8 LONG = "QuickTime"
9 SHORT = "qt"
10 OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
12 def main():
13 input = "Movies.h"
14 output = SHORT + "gen.py"
15 defsoutput = TOOLBOXDIR + LONG + ".py"
16 scanner = MyScanner(input, output, defsoutput)
17 scanner.scan()
18 scanner.close()
19 print "=== Done scanning and generating, now importing the generated code... ==="
20 exec "import " + SHORT + "support"
21 print "=== Done. It's up to you to compile it now! ==="
23 class MyScanner(Scanner):
25 def destination(self, type, name, arglist):
26 classname = "Function"
27 listname = "functions"
28 if arglist:
29 t, n, m = arglist[0]
30 if t in OBJECTS and m == "InMode":
31 classname = "Method"
32 listname = t + "_methods"
33 return classname, listname
35 def makeblacklistnames(self):
36 return [
37 "DisposeMovie", # Done on python-object disposal
38 "DisposeMovieTrack", # ditto
39 "DisposeTrackMedia", # ditto
40 "DisposeUserData", # ditto
41 "DisposeTimeBase", # ditto
42 "DisposeMovieController", # ditto
44 # The following 4 use 'void *' in an uncontrolled way
45 # TBD when I've read the manual...
46 "GetUserDataItem",
47 "SetUserDataItem",
48 "SetTextSampleData",
49 "BeginFullScreen",
50 # bgen gets the argument in/out wrong..
51 "AddTextSample",
52 "AddTESample",
53 "AddHiliteSample",
54 "HiliteTextSample",
55 # Missing in CW11 quicktime library
56 "SpriteMediaGetDisplayedSampleNumber",
57 "SpriteMediaGetIndImageDescription",
58 "SpriteMediaCountImages",
59 "SpriteMediaCountSprites",
60 "SpriteMediaHitTestSprites",
61 "SpriteMediaGetProperty",
62 "SpriteMediaSetProperty",
63 "TextMediaSetTextSampleData",
64 "TextMediaHiliteTextSample",
65 "TextMediaFindNextText",
66 "TextMediaAddHiliteSample",
67 "TextMediaAddTESample",
68 "TextMediaAddTextSample",
69 "VideoMediaGetStatistics",
70 "VideoMediaResetStatistics",
71 "EndFullScreen",
72 "NewMovieFromDataRef",
73 "MCPtInController",
74 "MCRemoveAMovie",
75 "MCRemoveAllMovies",
76 "MCInvalidate",
77 "InvalidateMovieRegion",
78 "GetMovieCompositeBufferFlags",
79 "SetMovieCompositeBufferFlags",
80 "SetTrackSoundLocalizationSettings",
81 "GetTrackSoundLocalizationSettings",
82 "GetMovieNaturalBoundsRect",
85 def makeblacklisttypes(self):
86 return [
87 # I don't think we want to do these
88 "QTSyncTaskPtr",
89 # We dont do callbacks yet, so no need for these
90 "QTCallBack",
91 # Skipped for now, due to laziness
92 "TimeRecord",
93 "TimeRecord_ptr",
94 "TrackEditState",
95 "MovieEditState",
96 "MatrixRecord",
97 "MatrixRecord_ptr",
98 "SampleReferencePtr",
100 # Routine pointers, not yet.
101 "MoviesErrorUPP",
102 "MoviePreviewCallOutUPP",
103 "MovieDrawingCompleteUPP",
104 "QTCallBackUPP",
105 "TextMediaUPP",
106 "MovieProgressUPP",
107 "MovieRgnCoverUPP",
108 "MCActionFilterUPP",
109 "MCActionFilterWithRefConUPP",
110 "GetMovieUPP",
111 "ModalFilterUPP",
112 "TrackTransferUPP",
113 "QTAtomContainer",
114 "SpriteWorld",
115 "Sprite",
118 def makerepairinstructions(self):
119 return [
120 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
122 # Movie controller creation
123 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
124 [('MovieController', '*', 'ReturnMode')]),
126 # NewMovieFromFile
127 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
128 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
130 # MCDoAction and more
131 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
135 if __name__ == "__main__":
136 main()