blob: fd060c07af192cbc845d3558f9dfe1a9b3938ed8 [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():
11 input = "Controls.h"
12 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()
17 print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
18 import ctlsupport
19 print "=== Done. It's up to you to compile Ctlmodule.c ==="
20
21class MyScanner(Scanner):
22
23 def destination(self, type, name, arglist):
24 classname = "Function"
25 listname = "functions"
26 if arglist:
27 t, n, m = arglist[0]
Jack Jansenae8a68f1995-06-06 12:55:40 +000028 if t in ("ControlHandle", "ControlRef") and m == "InMode":
Guido van Rossum17448e21995-01-30 11:53:55 +000029 classname = "Method"
30 listname = "methods"
31 return classname, listname
32
Jack Jansen21f96871998-02-20 16:02:09 +000033 def writeinitialdefs(self):
34 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
35 self.defsfile.write("from TextEdit import *\n")
36 self.defsfile.write("from QuickDraw import *\n")
37 self.defsfile.write("\n")
38
Guido van Rossum17448e21995-01-30 11:53:55 +000039 def makeblacklistnames(self):
40 return [
Jack Jansencfb60ee1996-10-01 10:46:46 +000041 'DisposeControl', # Generated manually
Guido van Rossum17448e21995-01-30 11:53:55 +000042 'KillControls', # Implied by close of dialog
43 'SetCtlAction',
Jack Jansen848250c1998-05-28 14:20:09 +000044 'TrackControl', # Generated manually
Jack Jansen229c0861999-12-09 16:03:50 +000045 'HandleControlClick', # Generated manually
46 'SetControlData', # Generated manually
47 'GetControlData', # Generated manually
Jack Jansen21f96871998-02-20 16:02:09 +000048 'kControlBevelButtonCenterPopupGlyphTag', # Constant with funny definition
49 'kControlProgressBarIndeterminateTag', # ditto
50 # The following are unavailable for static 68k (appearance manager)
51 'GetBevelButtonMenuValue',
52 'SetBevelButtonMenuValue',
53 'GetBevelButtonMenuHandle',
54 'SetBevelButtonTransform',
55 'SetBevelButtonGraphicAlignment',
56 'SetBevelButtonTextAlignment',
57 'SetBevelButtonTextPlacement',
58 'SetImageWellTransform',
59 'GetTabContentRect',
60 'SetTabEnabled',
61 'SetDisclosureTriangleLastValue',
Jack Jansen1c4e6141998-04-21 15:23:55 +000062 # Unavailable in CW Pro 3 libraries
63 'SetUpControlTextColor',
Jack Jansen229c0861999-12-09 16:03:50 +000064 # Generally Bad News
65 'GetControlProperty',
66 'SetControlProperty',
67 'GetControlPropertySize',
Guido van Rossum17448e21995-01-30 11:53:55 +000068 ]
69
70 def makeblacklisttypes(self):
71 return [
72 'ProcPtr',
Jack Jansenae8a68f1995-06-06 12:55:40 +000073 'ControlActionUPP',
Jack Jansen21f96871998-02-20 16:02:09 +000074 'ControlButtonContentInfoPtr',
75 'Ptr',
Guido van Rossum17448e21995-01-30 11:53:55 +000076 ]
77
78 def makerepairinstructions(self):
79 return [
80 ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
81 [("InBuffer", "*", "*")]),
Jack Jansen229c0861999-12-09 16:03:50 +000082
Guido van Rossum17448e21995-01-30 11:53:55 +000083 ([("void", "*", "OutMode"), ("long", "*", "InMode"),
84 ("long", "*", "OutMode")],
85 [("VarVarOutBuffer", "*", "InOutMode")]),
Jack Jansen229c0861999-12-09 16:03:50 +000086
Jack Jansen848250c1998-05-28 14:20:09 +000087## # For TrackControl
88## ([("ProcPtr", "actionProc", "InMode")],
89## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
90## ([("ControlActionUPP", "actionProc", "InMode")],
91## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
Jack Jansen229c0861999-12-09 16:03:50 +000092
Jack Jansen41009001999-03-07 20:05:20 +000093 # For GetControlTitle
94 ([('Str255', 'title', 'InMode')],
95 [('Str255', 'title', 'OutMode')]),
Jack Jansen229c0861999-12-09 16:03:50 +000096
Guido van Rossum17448e21995-01-30 11:53:55 +000097 ([("ControlHandle", "*", "OutMode")],
98 [("ExistingControlHandle", "*", "*")]),
Jack Jansenae8a68f1995-06-06 12:55:40 +000099 ([("ControlRef", "*", "OutMode")], # Ditto, for Universal Headers
100 [("ExistingControlHandle", "*", "*")]),
Guido van Rossum17448e21995-01-30 11:53:55 +0000101 ]
102
103if __name__ == "__main__":
104 main()