--- /dev/null
+"""API generator for decorator classes.
+"""
+
+__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
+__cvsid__ = "$Id$"
+__revision__ = "$Revision$"[11:-2]
+
+
+import inspect
+import os
+import sys
+import types
+
+
+header = '''\
+"""wxPython decorator classes.
+
+This file is automatically generated, and these are not the real
+wxPython classes. These are Python versions for API documentation
+purposes only.
+
+Please send corrections, questions, and suggestions to:
+
+Patrick K. O'Brien <pobrien@orbtech.com>
+"""
+
+__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
+
+from wxd import Parameters as wx
+
+try:
+ True
+except NameError:
+ True = 1==1
+ False = 1==0
+'''
+
+modlist = [
+ 'Base',
+ 'Window',
+ 'Frames',
+ 'Accelerators',
+ 'App',
+ 'ClipDragDrop',
+ 'Config',
+ 'Controls',
+ 'DataStructures',
+ 'DateTime',
+ 'Dialogs',
+ 'Drawing',
+ 'Errors',
+ 'EventFunctions',
+ 'Events',
+ 'FileSystem',
+ 'Functions',
+ 'Help',
+ 'ImageHandlers',
+ 'Joystick',
+ 'LayoutConstraints',
+ 'Logging',
+ 'Menus',
+ 'MimeTypes',
+ 'Misc',
+ 'Panel',
+ 'Printing',
+ 'Process',
+ 'SashSplitter',
+ 'Sizers',
+ 'Streams',
+ 'Threading',
+ 'ToolBar',
+ 'Tree',
+ 'Validators',
+ ]
+
+dir = os.path.realpath('api/wx/')
+filename = os.path.join(dir, '__init__.py')
+
+def main():
+ modules = {}
+ f = file(filename, 'w')
+ f.write(header)
+ for modname in modlist:
+ modules[modname] = __import__(modname, globals())
+ for modname in modlist:
+ module = modules[modname]
+ try:
+ source = inspect.getsource(module)
+ except IOError:
+ print 'No source for', module
+ else:
+ # Remove everything up to the first class or function definition.
+ splitter = '\n\nclass '
+ parts = source.split(splitter, 1)
+ if len(parts) == 2:
+ source = splitter + parts[1]
+ else:
+ splitter = '\n\ndef '
+ parts = source.split(splitter, 1)
+ if len(parts) == 2:
+ source = splitter + parts[1]
+ source = '\n\n\n' + source.strip()
+ f.write(source)
+ print 'Writing', modname
+ f.write('\n')
+ f.close()
+
+ # Add constants and any other missing stuff.
+ f = file(filename, 'a')
+ f.write('\n\n## Other Stuff:\n\n')
+ import wx as old
+ old = old.__dict__
+ sys.path.insert(0, dir) # Munge the sys.path so that we can
+ import __init__ # import the file we just created.
+ new = __init__.__dict__
+ l = [(k, v) for (k, v) in old.items() if (not k.startswith('_')
+ and not k.endswith('Ptr')
+ and not (k == 'cvar'))]
+ l.sort()
+ from wxPython import wx
+ for key, value in l:
+ if key not in new:
+ if (inspect.isclass(value)
+ or inspect.isroutine(value)
+ or type(value) is types.InstanceType):
+ value = repr(value)
+ text = '%s = %r' % (key, value)
+ f.write(text + '\n')
+ print 'Writing', text
+ f.close()
+
+if __name__ == '__main__':
+ main()