blob: b2a17d110f978cfb41470f805bf12e8f06c34f65 [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
4BGENDIR=os.path.join(sys.prefix, ':Tools:bgen:bgen')
5sys.path.append(BGENDIR)
Guido van Rossum17448e21995-01-30 11:53:55 +00006
7from scantools import Scanner
Jack Jansenc574b431996-04-12 16:26:59 +00008from bgenlocations import TOOLBOXDIR
Guido van Rossum17448e21995-01-30 11:53:55 +00009
10def main():
Jack Jansenf7d5aa62000-12-10 23:43:49 +000011# input = "Controls.h" # Universal Headers < 3.3
12 input = ["Controls.h", "ControlDefinitions.h"] # Universal Headers >= 3.3
Guido van Rossum17448e21995-01-30 11:53:55 +000013 output = "ctlgen.py"
Jack Jansenc574b431996-04-12 16:26:59 +000014 defsoutput = TOOLBOXDIR + "Controls.py"
Guido van Rossum17448e21995-01-30 11:53:55 +000015 scanner = MyScanner(input, output, defsoutput)
16 scanner.scan()
17 scanner.close()
18 print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
19 import ctlsupport
20 print "=== Done. It's up to you to compile Ctlmodule.c ==="
21
22class MyScanner(Scanner):
23
24 def destination(self, type, name, arglist):
25 classname = "Function"
26 listname = "functions"
27 if arglist:
28 t, n, m = arglist[0]
Jack Jansenae8a68f1995-06-06 12:55:40 +000029 if t in ("ControlHandle", "ControlRef") and m == "InMode":
Guido van Rossum17448e21995-01-30 11:53:55 +000030 classname = "Method"
31 listname = "methods"
32 return classname, listname
33
Jack Jansen21f96871998-02-20 16:02:09 +000034 def writeinitialdefs(self):
35 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
36 self.defsfile.write("from TextEdit import *\n")
37 self.defsfile.write("from QuickDraw import *\n")
Jack Jansen723ad8a2000-12-12 22:10:21 +000038 self.defsfile.write("from Dragconst import *\n")
Just van Rossume0b9fdc2001-12-12 22:40:27 +000039 self.defsfile.write("from CarbonEvents import *\n")
40 self.defsfile.write("from Appearance import *\n")
41 self.defsfile.write("kDataBrowserItemAnyState = -1\n")
42 self.defsfile.write("kControlBevelButtonCenterPopupGlyphTag = -1\n")
43 self.defsfile.write("kDataBrowserClientPropertyFlagsMask = 0xFF << 24 # kDataBrowserClientPropertyFlagsOffset\n")
Jack Jansen21f96871998-02-20 16:02:09 +000044 self.defsfile.write("\n")
45
Guido van Rossum17448e21995-01-30 11:53:55 +000046 def makeblacklistnames(self):
47 return [
Just van Rossum7ec1c852001-12-13 21:24:37 +000048 'FindControlUnderMouse', # Generated manually, returns an existing control, not a new one.
Jack Jansencfb60ee1996-10-01 10:46:46 +000049 'DisposeControl', # Generated manually
Guido van Rossum17448e21995-01-30 11:53:55 +000050 'KillControls', # Implied by close of dialog
51 'SetCtlAction',
Jack Jansen848250c1998-05-28 14:20:09 +000052 'TrackControl', # Generated manually
Jack Jansen229c0861999-12-09 16:03:50 +000053 'HandleControlClick', # Generated manually
54 'SetControlData', # Generated manually
55 'GetControlData', # Generated manually
Jack Jansen21f96871998-02-20 16:02:09 +000056 'kControlBevelButtonCenterPopupGlyphTag', # Constant with funny definition
Just van Rossume0b9fdc2001-12-12 22:40:27 +000057 'kDataBrowserClientPropertyFlagsMask', # ditto
58 'kDataBrowserItemAnyState', # and ditto
Jack Jansen21f96871998-02-20 16:02:09 +000059 # The following are unavailable for static 68k (appearance manager)
Jack Jansene79dc762000-06-02 21:35:07 +000060## 'GetBevelButtonMenuValue',
61## 'SetBevelButtonMenuValue',
62## 'GetBevelButtonMenuHandle',
63## 'SetBevelButtonTransform',
Jack Jansen21f96871998-02-20 16:02:09 +000064 'SetBevelButtonGraphicAlignment',
65 'SetBevelButtonTextAlignment',
66 'SetBevelButtonTextPlacement',
Jack Jansene79dc762000-06-02 21:35:07 +000067## 'SetImageWellTransform',
68## 'GetTabContentRect',
69## 'SetTabEnabled',
70## 'SetDisclosureTriangleLastValue',
Jack Jansena05ac601999-12-12 21:41:51 +000071## # Unavailable in CW Pro 3 libraries
72## 'SetUpControlTextColor',
73## # Unavailable in Jack's CW Pro 5.1 libraries
74## 'GetControlRegion',
75## 'RemoveControlProperty',
76## 'IsValidControlHandle',
77## 'SetControl32BitMinimum',
78## 'GetControl32BitMinimum',
79## 'SetControl32BitMaximum',
80## 'GetControl32BitMaximum',
81## 'SetControl32BitValue',
82## 'GetControl32BitValue',
83## 'SetControlViewSize',
84## 'GetControlViewSize',
Jack Jansen229c0861999-12-09 16:03:50 +000085 # Generally Bad News
86 'GetControlProperty',
87 'SetControlProperty',
88 'GetControlPropertySize',
Jack Jansenb8248d82001-06-20 21:31:28 +000089 'SendControlMessage', # Parameter changed from long to void* from UH3.3 to UH3.4
Just van Rossume0b9fdc2001-12-12 22:40:27 +000090 # unavailable in Just's CW6 + UH 3.4 libs
91 'CreateDisclosureButtonControl',
92 'CreateRelevanceBarControl',
93 'DisableControl',
94 'EnableControl',
95 'IsControlEnabled',
96 'CreateEditUnicodeTextControl',
97 'CopyDataBrowserEditText',
Guido van Rossum17448e21995-01-30 11:53:55 +000098 ]
99
Jack Jansene79dc762000-06-02 21:35:07 +0000100 def makegreylist(self):
101 return [
Jack Jansen74a1e632000-07-14 22:37:27 +0000102 ('#if !TARGET_API_MAC_CARBON', [
Jack Jansene79dc762000-06-02 21:35:07 +0000103 'GetAuxiliaryControlRecord',
104 'SetControlColor',
Jack Jansen9d8b96c2000-07-14 22:16:45 +0000105 # These have suddenly disappeared in UH 3.3.2...
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000106## 'GetBevelButtonMenuValue',
107## 'SetBevelButtonMenuValue',
108## 'GetBevelButtonMenuHandle',
109## 'SetBevelButtonTransform',
110## 'SetImageWellTransform',
111## 'GetTabContentRect',
112## 'SetTabEnabled',
113## 'SetDisclosureTriangleLastValue',
114 ]),
115 ('#if TARGET_API_MAC_CARBON', [
116 'IsAutomaticControlDragTrackingEnabledForWindow',
117 'SetAutomaticControlDragTrackingEnabledForWindow',
Jack Jansen723ad8a2000-12-12 22:10:21 +0000118 'HandleControlDragReceive',
119 'HandleControlDragTracking',
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000120 'GetControlByID',
121 'IsControlDragTrackingEnabled',
122 'SetControlDragTrackingEnabled',
123 'GetControlPropertyAttributes',
124 'ChangeControlPropertyAttributes',
125 'GetControlID',
126 'SetControlID',
127 'HandleControlSetCursor',
128 'GetControlClickActivation',
129 'HandleControlContextualMenuClick',
Jack Jansen615e2502001-12-14 22:47:19 +0000130 "CreateDataBrowserControl",
131 "CreateScrollingTextBoxControl",
132 "CreateRadioGroupControl",
133 "CreatePopupButtonControl",
134 "CreateCheckBoxControl",
135 "CreateRadioButtonControl",
136 "CreatePushButtonControl",
137 "CreateWindowHeaderControl",
138 "CreateStaticTextControl",
139 "CreateEditTextControl",
140 "CreateUserPaneControl",
141 "CreateClockControl",
142 "CreatePlacardControl",
143 "CreatePopupArrowControl",
144 "CreatePopupGroupBoxControl",
145 "CreateCheckGroupBoxControl",
146 "CreateGroupBoxControl",
147 "CreateSeparatorControl",
148 "CreateChasingArrowsControl",
149 "CreateLittleArrowsControl",
150 "CreateProgressBarControl",
151 "CreateDisclosureTriangleControl",
152 "GetDataBrowserColumnViewDisplayType",
153 "SetDataBrowserColumnViewDisplayType",
154 "GetDataBrowserColumnViewPathLength",
155 "GetDataBrowserColumnViewPath",
156 "GetDataBrowserListViewDisclosureColumn",
157 "SetDataBrowserListViewDisclosureColumn",
158 "GetDataBrowserListViewUsePlainBackground",
159 "SetDataBrowserListViewUsePlainBackground",
160 "GetDataBrowserListViewHeaderBtnHeight",
161 "SetDataBrowserListViewHeaderBtnHeight",
162 "AutoSizeDataBrowserListViewColumns",
163 "GetDataBrowserTableViewColumnProperty",
164 "GetDataBrowserTableViewColumnPosition",
165 "SetDataBrowserTableViewColumnPosition",
166 "GetDataBrowserTableViewItemRow",
167 "SetDataBrowserTableViewItemRow",
168 "GetDataBrowserTableViewItemID",
169 "GetDataBrowserTableViewGeometry",
170 "SetDataBrowserTableViewGeometry",
171 "GetDataBrowserTableViewNamedColumnWidth",
172 "SetDataBrowserTableViewNamedColumnWidth",
173 "GetDataBrowserTableViewItemRowHeight",
174 "SetDataBrowserTableViewItemRowHeight",
175 "GetDataBrowserTableViewColumnWidth",
176 "SetDataBrowserTableViewColumnWidth",
177 "GetDataBrowserTableViewRowHeight",
178 "SetDataBrowserTableViewRowHeight",
179 "GetDataBrowserTableViewHiliteStyle",
180 "SetDataBrowserTableViewHiliteStyle",
181 "GetDataBrowserTableViewColumnCount",
182 "RemoveDataBrowserTableViewColumn",
183 "GetDataBrowserItemPartBounds",
184 "GetDataBrowserEditItem",
185 "SetDataBrowserEditItem",
186 "GetDataBrowserEditText",
187 "SetDataBrowserEditText",
188 "GetDataBrowserPropertyFlags",
189 "SetDataBrowserPropertyFlags",
190 "GetDataBrowserSelectionFlags",
191 "SetDataBrowserSelectionFlags",
192 "GetDataBrowserSortProperty",
193 "SetDataBrowserSortProperty",
194 "GetDataBrowserHasScrollBars",
195 "SetDataBrowserHasScrollBars",
196 "GetDataBrowserScrollPosition",
197 "SetDataBrowserScrollPosition",
198 "GetDataBrowserSortOrder",
199 "SetDataBrowserSortOrder",
200 "GetDataBrowserTarget",
201 "SetDataBrowserTarget",
202 "GetDataBrowserScrollBarInset",
203 "SetDataBrowserScrollBarInset",
204 "GetDataBrowserActiveItems",
205 "SetDataBrowserActiveItems",
206 "RevealDataBrowserItem",
207 "GetDataBrowserItemState",
208 "IsDataBrowserItemSelected",
209 "GetDataBrowserItemCount",
210 "GetDataBrowserItems",
211 "SortDataBrowserContainer",
212 "CloseDataBrowserContainer",
213 "OpenDataBrowserContainer",
214 "MoveDataBrowserSelectionAnchor",
215 "GetDataBrowserSelectionAnchor",
216 "ExecuteDataBrowserEditCommand",
217 "EnableDataBrowserEditCommand",
218 "SetDataBrowserViewStyle",
219 "GetDataBrowserViewStyle",
220 "GetControlCommandID",
221 "SetControlCommandID",
222 "CopyControlTitleAsCFString",
223 "SetControlTitleWithCFString",
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000224 ]),
225 ('#if ACCESSOR_CALLS_ARE_FUNCTIONS', [
226 # XXX These are silly, they should be #defined to access the fields
227 # directly. Later...
228 'GetControlBounds',
229 'IsControlHilited',
230 'GetControlHilite',
231 'GetControlOwner',
232 'GetControlDataHandle',
233 'GetControlPopupMenuHandle',
234 'GetControlPopupMenuID',
235 'SetControlDataHandle',
236 'SetControlBounds',
237 'SetControlPopupMenuHandle',
238 'SetControlPopupMenuID',
Jack Jansene79dc762000-06-02 21:35:07 +0000239 ])]
240
Guido van Rossum17448e21995-01-30 11:53:55 +0000241 def makeblacklisttypes(self):
242 return [
243 'ProcPtr',
Jack Jansenae8a68f1995-06-06 12:55:40 +0000244 'ControlActionUPP',
Jack Jansen21f96871998-02-20 16:02:09 +0000245 'ControlButtonContentInfoPtr',
246 'Ptr',
Jack Jansenf7d5aa62000-12-10 23:43:49 +0000247 'ControlDefSpec', # Don't know how to do this yet
248 'ControlDefSpec_ptr', # ditto
249 'Collection', # Ditto
Just van Rossume0b9fdc2001-12-12 22:40:27 +0000250 # not-yet-supported stuff in Universal Headers 3.4:
251 'ControlColorUPP',
252 'ControlKind', # XXX easy: 2-tuple containing 2 OSType's
253 'ControlTabEntry_ptr', # XXX needed for tabs
254 'ControlButtonContentInfo', # XXX ugh: a union
255 'ControlButtonContentInfo_ptr', # XXX ugh: a union
256 'ListDefSpec_ptr', # XXX see _Listmodule.c, tricky but possible
257 'DataBrowserItemID_ptr', # XXX array of UInt32, for BrowserView
258 'DataBrowserItemUPP',
259 'DataBrowserItemDataRef', # XXX void *
260 'DataBrowserCallbacks', # difficult struct
261 'DataBrowserCallbacks_ptr',
262 'DataBrowserCustomCallbacks',
263 'DataBrowserCustomCallbacks_ptr',
264 'DataBrowserTableViewColumnDesc',
265 'DataBrowserListViewColumnDesc',
266 'CFDataRef',
Guido van Rossum17448e21995-01-30 11:53:55 +0000267 ]
268
269 def makerepairinstructions(self):
270 return [
271 ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
272 [("InBuffer", "*", "*")]),
Jack Jansen229c0861999-12-09 16:03:50 +0000273
Guido van Rossum17448e21995-01-30 11:53:55 +0000274 ([("void", "*", "OutMode"), ("long", "*", "InMode"),
275 ("long", "*", "OutMode")],
276 [("VarVarOutBuffer", "*", "InOutMode")]),
Jack Jansen229c0861999-12-09 16:03:50 +0000277
Jack Jansen848250c1998-05-28 14:20:09 +0000278## # For TrackControl
279## ([("ProcPtr", "actionProc", "InMode")],
280## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
281## ([("ControlActionUPP", "actionProc", "InMode")],
282## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
Jack Jansen229c0861999-12-09 16:03:50 +0000283
Jack Jansen41009001999-03-07 20:05:20 +0000284 # For GetControlTitle
285 ([('Str255', 'title', 'InMode')],
286 [('Str255', 'title', 'OutMode')]),
Jack Jansen229c0861999-12-09 16:03:50 +0000287
Guido van Rossum17448e21995-01-30 11:53:55 +0000288 ([("ControlHandle", "*", "OutMode")],
289 [("ExistingControlHandle", "*", "*")]),
Jack Jansenae8a68f1995-06-06 12:55:40 +0000290 ([("ControlRef", "*", "OutMode")], # Ditto, for Universal Headers
291 [("ExistingControlHandle", "*", "*")]),
Jack Jansena9e3db32001-01-09 22:10:16 +0000292
293 ([("Rect_ptr", "*", "ReturnMode")], # GetControlBounds
294 [("void", "*", "ReturnMode")]),
Guido van Rossum17448e21995-01-30 11:53:55 +0000295 ]
296
297if __name__ == "__main__":
298 main()