blob: 66b4f569d9849efc42019417b7e31b0efe82491d [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 Jansen21f96871998-02-20 16:02:09 +000045 'kControlBevelButtonCenterPopupGlyphTag', # Constant with funny definition
46 'kControlProgressBarIndeterminateTag', # ditto
47 # The following are unavailable for static 68k (appearance manager)
48 'GetBevelButtonMenuValue',
49 'SetBevelButtonMenuValue',
50 'GetBevelButtonMenuHandle',
51 'SetBevelButtonTransform',
52 'SetBevelButtonGraphicAlignment',
53 'SetBevelButtonTextAlignment',
54 'SetBevelButtonTextPlacement',
55 'SetImageWellTransform',
56 'GetTabContentRect',
57 'SetTabEnabled',
58 'SetDisclosureTriangleLastValue',
Jack Jansen1c4e6141998-04-21 15:23:55 +000059 # Unavailable in CW Pro 3 libraries
60 'SetUpControlTextColor',
Guido van Rossum17448e21995-01-30 11:53:55 +000061 ]
62
63 def makeblacklisttypes(self):
64 return [
65 'ProcPtr',
Jack Jansenae8a68f1995-06-06 12:55:40 +000066 'ControlActionUPP',
Jack Jansen21f96871998-02-20 16:02:09 +000067 'ControlButtonContentInfoPtr',
68 'Ptr',
Guido van Rossum17448e21995-01-30 11:53:55 +000069 ]
70
71 def makerepairinstructions(self):
72 return [
73 ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
74 [("InBuffer", "*", "*")]),
75
76 ([("void", "*", "OutMode"), ("long", "*", "InMode"),
77 ("long", "*", "OutMode")],
78 [("VarVarOutBuffer", "*", "InOutMode")]),
79
Jack Jansen848250c1998-05-28 14:20:09 +000080## # For TrackControl
81## ([("ProcPtr", "actionProc", "InMode")],
82## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
83## ([("ControlActionUPP", "actionProc", "InMode")],
84## [("FakeType('(ControlActionUPP)0')", "*", "*")]),
Guido van Rossum17448e21995-01-30 11:53:55 +000085
86 ([("ControlHandle", "*", "OutMode")],
87 [("ExistingControlHandle", "*", "*")]),
Jack Jansenae8a68f1995-06-06 12:55:40 +000088 ([("ControlRef", "*", "OutMode")], # Ditto, for Universal Headers
89 [("ExistingControlHandle", "*", "*")]),
Guido van Rossum17448e21995-01-30 11:53:55 +000090 ]
91
92if __name__ == "__main__":
93 main()