blob: eb6d789025dd7900089eac2e241e8a8a4f963bb6 [file] [log] [blame]
Guido van Rossum17448e21995-01-30 11:53:55 +00001# Scan <Controls.h>, generating ctlgen.py.
Jack Jansen0c4d9471998-04-17 14:07:56 +00002import sys
3import os
Jack Jansenaaebdd62002-08-05 15:39:30 +00004from bgenlocations import TOOLBOXDIR, BGENDIR
Jack Jansen0c4d9471998-04-17 14:07:56 +00005sys.path.append(BGENDIR)
Guido van Rossum17448e21995-01-30 11:53:55 +00006
7from scantools import Scanner
8
9def main():
Jack Jansenf7d5aa62000-12-10 23:43:49 +000010# input = "Controls.h" # Universal Headers < 3.3
11 input = ["Controls.h", "ControlDefinitions.h"] # Universal Headers >= 3.3
Guido van Rossum17448e21995-01-30 11:53:55 +000012 output = "ctlgen.py"
Jack Jansenc574b431996-04-12 16:26:59 +000013 defsoutput = TOOLBOXDIR + "Controls.py"
Guido van Rossum17448e21995-01-30 11:53:55 +000014 scanner = MyScanner(input, output, defsoutput)
15 scanner.scan()
16 scanner.close()
Jack Jansen87eea882002-08-15 21:48:16 +000017 print "=== Testing definitions output code ==="
18 execfile(defsoutput, {}, {})
Guido van Rossum17448e21995-01-30 11:53:55 +000019 print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
20 import ctlsupport
21 print "=== Done. It's up to you to compile Ctlmodule.c ==="
22
23class MyScanner(Scanner):
24
25 def destination(self, type, name, arglist):
26 classname = "Function"
27 listname = "functions"
28 if arglist:
29 t, n, m = arglist[0]
Jack Jansenae8a68f1995-06-06 12:55:40 +000030 if t in ("ControlHandle", "ControlRef") and m == "InMode":
Guido van Rossum17448e21995-01-30 11:53:55 +000031 classname = "Method"
32 listname = "methods"
33 return classname, listname
34
Jack Jansen21f96871998-02-20 16:02:09 +000035 def writeinitialdefs(self):
36 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
Jack Jansen7ca993e2002-08-15 22:05:58 +000037 self.defsfile.write("from Carbon.TextEdit import *\n")
38 self.defsfile.write("from Carbon.QuickDraw import *\n")
39 self.defsfile.write("from Carbon.Dragconst import *\n")
40 self.defsfile.write("from Carbon.CarbonEvents import *\n")
41 self.defsfile.write("from Carbon.Appearance import *\n")
Just van Rossume0b9fdc2001-12-12 22:40:27 +000042 self.defsfile.write("kDataBrowserItemAnyState = -1\n")
43 self.defsfile.write("kControlBevelButtonCenterPopupGlyphTag = -1\n")
Jack Jansen7ca993e2002-08-15 22:05:58 +000044 self.defsfile.write("kDataBrowserClientPropertyFlagsMask = 0xFF000000\n")
Jack Jansen21f96871998-02-20 16:02:09 +000045 self.defsfile.write("\n")
46
Guido van Rossum17448e21995-01-30 11:53:55 +000047 def makeblacklistnames(self):
48 return [
Just van Rossum7ec1c852001-12-13 21:24:37 +000049 'FindControlUnderMouse', # Generated manually, returns an existing control, not a new one.
Jack Jansencfb60ee1996-10-01 10:46:46 +000050 'DisposeControl', # Generated manually
Guido van Rossum17448e21995-01-30 11:53:55 +000051 'KillControls', # Implied by close of dialog
52 'SetCtlAction',
Jack Jansen848250c1998-05-28 14:20:09 +000053 'TrackControl', # Generated manually
Jack Jansen229c0861999-12-09 16:03:50 +000054 'HandleControlClick', # Generated manually
55 'SetControlData', # Generated manually
56 'GetControlData', # Generated manually
Jack Jansen21f96871998-02-20 16:02:09 +000057 'kControlBevelButtonCenterPopupGlyphTag', # Constant with funny definition
Just van Rossume0b9fdc2001-12-12 22:40:27 +000058 'kDataBrowserClientPropertyFlagsMask', # ditto
59 'kDataBrowserItemAnyState', # and ditto
Jack Jansen21f96871998-02-20 16:02:09 +000060 # The following are unavailable for static 68k (appearance manager)
Jack Jansene79dc762000-06-02 21:35:07 +000061## 'GetBevelButtonMenuValue',
62## 'SetBevelButtonMenuValue',
63## 'GetBevelButtonMenuHandle',
64## 'SetBevelButtonTransform',
Jack Jansen21f96871998-02-20 16:02:09 +000065 'SetBevelButtonGraphicAlignment',
66 'SetBevelButtonTextAlignment',
67 'SetBevelButtonTextPlacement',
Jack Jansene79dc762000-06-02 21:35:07 +000068## 'SetImageWellTransform',
69## 'GetTabContentRect',
70## 'SetTabEnabled',
71## 'SetDisclosureTriangleLastValue',
Jack Jansena05ac601999-12-12 21:41:51 +000072## # Unavailable in CW Pro 3 libraries
73## 'SetUpControlTextColor',
74## # Unavailable in Jack's CW Pro 5.1 libraries
75## 'GetControlRegion',
76## 'RemoveControlProperty',
77## 'IsValidControlHandle',
78## 'SetControl32BitMinimum',
79## 'GetControl32BitMinimum',
80## 'SetControl32BitMaximum',
81## 'GetControl32BitMaximum',
82## 'SetControl32BitValue',
83## 'GetControl32BitValue',
84## 'SetControlViewSize',
85## 'GetControlViewSize',
Jack Jansen229c0861999-12-09 16:03:50 +000086 # Generally Bad News
87 'GetControlProperty',
88 'SetControlProperty',
89 'GetControlPropertySize',
Jack Jansenb8248d82001-06-20 21:31:28 +000090 'SendControlMessage', # Parameter changed from long to void* from UH3.3 to UH3.4
Just van Rossum66d78bf2001-12-18 12:47:47 +000091 'CreateTabsControl', # wrote manually
Just van Rossumcae6da62001-12-30 21:25:26 +000092 'GetControlAction', # too much effort for too little usefulness
Just van Rossum66d78bf2001-12-18 12:47:47 +000093
94 # too lazy for now
95 'GetImageWellContentInfo',
96 'GetBevelButtonContentInfo',
Guido van Rossum17448e21995-01-30 11:53:55 +000097 ]
98
Jack Jansene79dc762000-06-02 21:35:07 +000099 def makegreylist(self):
100 return [
Jack Jansen74a1e632000-07-14 22:37:27 +0000101 ('#if !TARGET_API_MAC_CARBON', [
Jack Jansene79dc762000-06-02 21:35:07 +0000102 'GetAuxiliaryControlRecord',
103 'SetControlColor',
Jack Jansen9d8b96c2000-07-14 22:16:45 +0000104 # These have suddenly disappeared in UH 3.3.2...
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000105## 'GetBevelButtonMenuValue',
106## 'SetBevelButtonMenuValue',
107## 'GetBevelButtonMenuHandle',
108## 'SetBevelButtonTransform',
109## 'SetImageWellTransform',
110## 'GetTabContentRect',
111## 'SetTabEnabled',
112## 'SetDisclosureTriangleLastValue',
113 ]),
114 ('#if TARGET_API_MAC_CARBON', [
115 'IsAutomaticControlDragTrackingEnabledForWindow',
116 'SetAutomaticControlDragTrackingEnabledForWindow',
Jack Jansen723ad8a2000-12-12 22:10:21 +0000117 'HandleControlDragReceive',
118 'HandleControlDragTracking',
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000119 'GetControlByID',
120 'IsControlDragTrackingEnabled',
121 'SetControlDragTrackingEnabled',
122 'GetControlPropertyAttributes',
123 'ChangeControlPropertyAttributes',
124 'GetControlID',
125 'SetControlID',
126 'HandleControlSetCursor',
127 'GetControlClickActivation',
128 'HandleControlContextualMenuClick',
Just van Rossum66d78bf2001-12-18 12:47:47 +0000129
Just van Rossum76335932001-12-31 09:50:32 +0000130 "CreateScrollBarControl",
131 "CreateSliderControl",
Just van Rossum66d78bf2001-12-18 12:47:47 +0000132 "CreateBevelButtonControl",
133 "CreateImageWellControl",
134 "CreatePictureControl",
135 "CreateIconControl",
136 "CreatePushButtonWithIconControl",
137 "SetBevelButtonContentInfo",
138 "SetImageWellContentInfo",
139 "AddDataBrowserListViewColumn",
140
Jack Jansen615e2502001-12-14 22:47:19 +0000141 "CreateDataBrowserControl",
142 "CreateScrollingTextBoxControl",
143 "CreateRadioGroupControl",
144 "CreatePopupButtonControl",
145 "CreateCheckBoxControl",
146 "CreateRadioButtonControl",
147 "CreatePushButtonControl",
148 "CreateWindowHeaderControl",
149 "CreateStaticTextControl",
150 "CreateEditTextControl",
151 "CreateUserPaneControl",
152 "CreateClockControl",
153 "CreatePlacardControl",
154 "CreatePopupArrowControl",
155 "CreatePopupGroupBoxControl",
156 "CreateCheckGroupBoxControl",
157 "CreateGroupBoxControl",
158 "CreateSeparatorControl",
159 "CreateChasingArrowsControl",
160 "CreateLittleArrowsControl",
161 "CreateProgressBarControl",
162 "CreateDisclosureTriangleControl",
163 "GetDataBrowserColumnViewDisplayType",
164 "SetDataBrowserColumnViewDisplayType",
165 "GetDataBrowserColumnViewPathLength",
166 "GetDataBrowserColumnViewPath",
167 "GetDataBrowserListViewDisclosureColumn",
168 "SetDataBrowserListViewDisclosureColumn",
169 "GetDataBrowserListViewUsePlainBackground",
170 "SetDataBrowserListViewUsePlainBackground",
171 "GetDataBrowserListViewHeaderBtnHeight",
172 "SetDataBrowserListViewHeaderBtnHeight",
173 "AutoSizeDataBrowserListViewColumns",
174 "GetDataBrowserTableViewColumnProperty",
175 "GetDataBrowserTableViewColumnPosition",
176 "SetDataBrowserTableViewColumnPosition",
177 "GetDataBrowserTableViewItemRow",
178 "SetDataBrowserTableViewItemRow",
179 "GetDataBrowserTableViewItemID",
180 "GetDataBrowserTableViewGeometry",
181 "SetDataBrowserTableViewGeometry",
182 "GetDataBrowserTableViewNamedColumnWidth",
183 "SetDataBrowserTableViewNamedColumnWidth",
184 "GetDataBrowserTableViewItemRowHeight",
185 "SetDataBrowserTableViewItemRowHeight",
186 "GetDataBrowserTableViewColumnWidth",
187 "SetDataBrowserTableViewColumnWidth",
188 "GetDataBrowserTableViewRowHeight",
189 "SetDataBrowserTableViewRowHeight",
190 "GetDataBrowserTableViewHiliteStyle",
191 "SetDataBrowserTableViewHiliteStyle",
192 "GetDataBrowserTableViewColumnCount",
193 "RemoveDataBrowserTableViewColumn",
194 "GetDataBrowserItemPartBounds",
195 "GetDataBrowserEditItem",
196 "SetDataBrowserEditItem",
197 "GetDataBrowserEditText",
198 "SetDataBrowserEditText",
199 "GetDataBrowserPropertyFlags",
200 "SetDataBrowserPropertyFlags",
201 "GetDataBrowserSelectionFlags",
202 "SetDataBrowserSelectionFlags",
203 "GetDataBrowserSortProperty",
204 "SetDataBrowserSortProperty",
205 "GetDataBrowserHasScrollBars",
206 "SetDataBrowserHasScrollBars",
207 "GetDataBrowserScrollPosition",
208 "SetDataBrowserScrollPosition",
209 "GetDataBrowserSortOrder",
210 "SetDataBrowserSortOrder",
211 "GetDataBrowserTarget",
212 "SetDataBrowserTarget",
213 "GetDataBrowserScrollBarInset",
214 "SetDataBrowserScrollBarInset",
215 "GetDataBrowserActiveItems",
216 "SetDataBrowserActiveItems",
217 "RevealDataBrowserItem",
218 "GetDataBrowserItemState",
219 "IsDataBrowserItemSelected",
220 "GetDataBrowserItemCount",
221 "GetDataBrowserItems",
222 "SortDataBrowserContainer",
223 "CloseDataBrowserContainer",
224 "OpenDataBrowserContainer",
225 "MoveDataBrowserSelectionAnchor",
226 "GetDataBrowserSelectionAnchor",
227 "ExecuteDataBrowserEditCommand",
228 "EnableDataBrowserEditCommand",
229 "SetDataBrowserViewStyle",
230 "GetDataBrowserViewStyle",
231 "GetControlCommandID",
232 "SetControlCommandID",
233 "CopyControlTitleAsCFString",
234 "SetControlTitleWithCFString",
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000235 ]),
236 ('#if ACCESSOR_CALLS_ARE_FUNCTIONS', [
237 # XXX These are silly, they should be #defined to access the fields
238 # directly. Later...
239 'GetControlBounds',
240 'IsControlHilited',
241 'GetControlHilite',
242 'GetControlOwner',
243 'GetControlDataHandle',
244 'GetControlPopupMenuHandle',
245 'GetControlPopupMenuID',
246 'SetControlDataHandle',
247 'SetControlBounds',
248 'SetControlPopupMenuHandle',
249 'SetControlPopupMenuID',
Just van Rossum7eb48e32001-12-18 20:15:27 +0000250 ]),
251 ('#if TARGET_API_MAC_OSX', [
252 'CreateRoundButtonControl',
253 'CreateDisclosureButtonControl',
254 'CreateRelevanceBarControl',
255 'DisableControl',
256 'EnableControl',
257 'IsControlEnabled',
258 'CreateEditUnicodeTextControl',
259 'CopyDataBrowserEditText',
260 ]),
261 ]
Jack Jansene79dc762000-06-02 21:35:07 +0000262
Guido van Rossum17448e21995-01-30 11:53:55 +0000263 def makeblacklisttypes(self):
264 return [
265 'ProcPtr',
Just van Rossumcae6da62001-12-30 21:25:26 +0000266# 'ControlActionUPP',
Jack Jansen21f96871998-02-20 16:02:09 +0000267 'Ptr',
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000268 'ControlDefSpec', # Don't know how to do this yet
269 'ControlDefSpec_ptr', # ditto
270 'Collection', # Ditto
Just van Rossume0b9fdc2001-12-12 22:40:27 +0000271 # not-yet-supported stuff in Universal Headers 3.4:
272 'ControlColorUPP',
273 'ControlKind', # XXX easy: 2-tuple containing 2 OSType's
Just van Rossum66d78bf2001-12-18 12:47:47 +0000274# 'ControlTabEntry_ptr', # XXX needed for tabs
275# 'ControlButtonContentInfoPtr',
276# 'ControlButtonContentInfo', # XXX ugh: a union
277# 'ControlButtonContentInfo_ptr', # XXX ugh: a union
Just van Rossume0b9fdc2001-12-12 22:40:27 +0000278 'ListDefSpec_ptr', # XXX see _Listmodule.c, tricky but possible
279 'DataBrowserItemID_ptr', # XXX array of UInt32, for BrowserView
280 'DataBrowserItemUPP',
281 'DataBrowserItemDataRef', # XXX void *
282 'DataBrowserCallbacks', # difficult struct
283 'DataBrowserCallbacks_ptr',
284 'DataBrowserCustomCallbacks',
285 'DataBrowserCustomCallbacks_ptr',
Just van Rossum66d78bf2001-12-18 12:47:47 +0000286## 'DataBrowserTableViewColumnDesc',
287## 'DataBrowserListViewColumnDesc',
Just van Rossume0b9fdc2001-12-12 22:40:27 +0000288 'CFDataRef',
Guido van Rossum17448e21995-01-30 11:53:55 +0000289 ]
290
291 def makerepairinstructions(self):
292 return [
293 ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
294 [("InBuffer", "*", "*")]),
Jack Jansen229c0861999-12-09 16:03:50 +0000295
Guido van Rossum17448e21995-01-30 11:53:55 +0000296 ([("void", "*", "OutMode"), ("long", "*", "InMode"),
297 ("long", "*", "OutMode")],
298 [("VarVarOutBuffer", "*", "InOutMode")]),
Jack Jansen229c0861999-12-09 16:03:50 +0000299
Jack Jansen848250c1998-05-28 14:20:09 +0000300## # For TrackControl
301## ([("ProcPtr", "actionProc", "InMode")],
302## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
303## ([("ControlActionUPP", "actionProc", "InMode")],
304## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
Jack Jansen229c0861999-12-09 16:03:50 +0000305
Jack Jansen41009001999-03-07 20:05:20 +0000306 # For GetControlTitle
307 ([('Str255', 'title', 'InMode')],
308 [('Str255', 'title', 'OutMode')]),
Jack Jansen229c0861999-12-09 16:03:50 +0000309
Guido van Rossum17448e21995-01-30 11:53:55 +0000310 ([("ControlHandle", "*", "OutMode")],
311 [("ExistingControlHandle", "*", "*")]),
Jack Jansenae8a68f1995-06-06 12:55:40 +0000312 ([("ControlRef", "*", "OutMode")], # Ditto, for Universal Headers
313 [("ExistingControlHandle", "*", "*")]),
Jack Jansena9e3db32001-01-09 22:10:16 +0000314
315 ([("Rect_ptr", "*", "ReturnMode")], # GetControlBounds
316 [("void", "*", "ReturnMode")]),
Just van Rossum66d78bf2001-12-18 12:47:47 +0000317
318 ([("DataBrowserListViewColumnDesc", "*", "OutMode")],
319 [("DataBrowserListViewColumnDesc", "*", "InMode")]),
320
321 ([("ControlButtonContentInfoPtr", 'outContent', "InMode")],
322 [("ControlButtonContentInfoPtr", '*', "OutMode")]),
323
324 ([("ControlButtonContentInfo", '*', "OutMode")],
325 [("ControlButtonContentInfo", '*', "InMode")]),
Just van Rossumcae6da62001-12-30 21:25:26 +0000326
327 ([("ControlActionUPP", 'liveTrackingProc', "InMode")],
328 [("ControlActionUPPNewControl", 'liveTrackingProc', "InMode")]),
Guido van Rossum17448e21995-01-30 11:53:55 +0000329 ]
330
331if __name__ == "__main__":
332 main()