]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/config.py
Redo (again) how the stock objects are initialized in wxPython.
[wxWidgets.git] / wxPython / config.py
index 0746e7f2fe3b81d319580b3ae08446f46a204980..c25ce4f35dadb5fbaf84619ff24ef20cc5a7ab48 100644 (file)
@@ -155,12 +155,12 @@ WX_CONFIG = None   # Usually you shouldn't need to touch this, but you can set
 
 SYS_WX_CONFIG = None # When installing an in tree build, setup.py uses wx-config
                      # for two different purposes.  First, to determine the prefix
-                    # where files will be installed, and secondly, to initialise
-                    # build_options.py with the correct options for it.
-                    # WX_CONFIG is used for the first task.  SYS_WX_CONFIG may
-                    # be set independently, to the value that should appear in
-                    # build_options.py, if it is different to that.  The default
-                    # is to use the value of WX_CONFIG.
+                     # where files will be installed, and secondly, to initialise
+                     # build_options.py with the correct options for it.
+                     # WX_CONFIG is used for the first task.  SYS_WX_CONFIG may
+                     # be set independently, to the value that should appear in
+                     # build_options.py, if it is different to that.  The default
+                     # is to use the value of WX_CONFIG.
 
 WXPORT = 'gtk2'    # On Linux/Unix there are several ports of wxWidgets available.
                    # Setting this value lets you select which will be used for
@@ -434,6 +434,18 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args,
     return sources
 
 
+def swig_version():
+    # It may come on either stdout or stderr, depending on the
+    # version, so read both.
+    i, o, e = os.popen3(SWIG + ' -version', 't')
+    stext = o.read() + e.read()
+    import re
+    match = re.search(r'[0-9]+\.[0-9]+\.[0-9]+$', stext, re.MULTILINE)
+    if not match:
+        raise 'NotFound'
+    SVER = match.group(0)
+    return SVER
+
 
 # Specializations of some distutils command classes
 class wx_smart_install_data(distutils.command.install_data.install_data):
@@ -700,6 +712,7 @@ if os.name == 'nt':
                 ('WXUSINGDLL', '1'),
 
                 ('SWIG_TYPE_TABLE', WXPYTHON_TYPE_TABLE),
+                ('SWIG_PYTHON_OUTPUT_TUPLE', None),
                 ('WXP_USE_THREAD', '1'),
                 ]
 
@@ -712,6 +725,9 @@ if os.name == 'nt':
     if not FINAL or HYBRID:
         defines.append( ('__WXDEBUG__', None) )
 
+    if UNICODE:
+        defines.append( ('wxUSE_UNICODE', 1) )
+
     libdirs = [ opj(WXDIR, 'lib', 'vc_dll') ]
     if MONOLITHIC:
         libs = makeLibName('')
@@ -754,7 +770,7 @@ elif os.name == 'posix':
     WXDIR = '..'
     includes = ['include', 'src']
     defines = [('SWIG_TYPE_TABLE', WXPYTHON_TYPE_TABLE),
-               ('HAVE_CONFIG_H', None),
+               ('SWIG_PYTHON_OUTPUT_TUPLE', None),
                ('WXP_USE_THREAD', '1'),
                ]
     if UNDEF_NDEBUG:
@@ -873,13 +889,22 @@ i_files_includes = [ '-I' + opj(WXPY_SRC, 'src'),
 swig_cmd = SWIG
 swig_force = force
 swig_args = ['-c++',
-             '-Wall',
-             '-nodefault',
+             #'-Wall',
              '-python',
              '-new_repr',
              '-modern',
              '-D'+WXPLAT,
              ] + i_files_includes
+
+if USE_SWIG:
+    SVER = swig_version()
+    if int(SVER[-2:]) >= 29:
+        swig_args += [ '-fastdispatch',
+                       '-fvirtual',
+                       '-fastinit',
+                       '-fastunpack',
+                       #'-outputtuple',  Currently setting this with a -D define above
+                       ]
              
 if UNICODE:
     swig_args.append('-DwxUSE_UNICODE')
@@ -1026,7 +1051,6 @@ class BuildRenamers:
         # do a depth first iteration over what's left
         for node in topnode:
             doRename = False
-            doPtr = False
             addWX = False
             revOnly = False
     
@@ -1035,7 +1059,6 @@ class BuildRenamers:
                 lastClassName = name = self.GetAttr(node, "name")
                 lastClassSymName = sym_name = self.GetAttr(node, "sym_name")
                 doRename = True
-                doPtr = True
                 if sym_name != name:
                     name = sym_name
                     addWX = True
@@ -1093,8 +1116,6 @@ class BuildRenamers:
                 if addWX and not old.startswith('wx'):
                     old = 'wx'+old
                 pyFile.write("%s = wx.%s.%s\n" % (old, modname, new))
-                if doPtr:
-                    pyFile.write("%sPtr = wx.%s.%sPtr\n" % (old, modname, new))
                 
     
     #---------------------------------------------------------------------------