summaryrefslogtreecommitdiff
path: root/scipy/weave/wx_spec.py
diff options
context:
space:
mode:
authorTravis Oliphant <oliphant@enthought.com>2006-01-02 08:26:24 +0000
committerTravis Oliphant <oliphant@enthought.com>2006-01-02 08:26:24 +0000
commit4712a37b93832933a46376ee99339f9040ba3670 (patch)
tree8a3de8500925061b0f2368fae2d50159dbea206f /scipy/weave/wx_spec.py
parentb5ba0003def4cfa43b29d29df8f085d09609707b (diff)
downloadnumpy-4712a37b93832933a46376ee99339f9040ba3670.tar.gz
Moved weave to scipy
Diffstat (limited to 'scipy/weave/wx_spec.py')
-rw-r--r--scipy/weave/wx_spec.py170
1 files changed, 0 insertions, 170 deletions
diff --git a/scipy/weave/wx_spec.py b/scipy/weave/wx_spec.py
deleted file mode 100644
index 5e75877d2..000000000
--- a/scipy/weave/wx_spec.py
+++ /dev/null
@@ -1,170 +0,0 @@
-import common_info
-from c_spec import common_base_converter
-import sys,os
-
-# these may need user configuration.
-if sys.platform == "win32":
- wx_base = r'c:\third\wxpython-2.4.0.7'
-else:
- # probably should do some more discovery here.
- wx_base = '/usr/lib/wxPython'
-
-def get_wxconfig(flag):
- wxconfig = os.path.join(wx_base,'bin','wx-config')
- import commands
- res,settings = commands.getstatusoutput(wxconfig + ' --' + flag)
- if res:
- msg = wxconfig + ' failed. Impossible to learn wxPython settings'
- raise RuntimeError, msg
- return settings.split()
-
-wx_to_c_template = \
-"""
-class %(type_name)s_handler
-{
-public:
- %(c_type)s convert_to_%(type_name)s(PyObject* py_obj, const char* name)
- {
- %(c_type)s wx_ptr;
- // work on this error reporting...
- if (SWIG_GetPtrObj(py_obj,(void **) &wx_ptr,"_%(type_name)s_p"))
- handle_conversion_error(py_obj,"%(type_name)s", name);
- %(inc_ref_count)s
- return wx_ptr;
- }
-
- %(c_type)s py_to_%(type_name)s(PyObject* py_obj,const char* name)
- {
- %(c_type)s wx_ptr;
- // work on this error reporting...
- if (SWIG_GetPtrObj(py_obj,(void **) &wx_ptr,"_%(type_name)s_p"))
- handle_bad_type(py_obj,"%(type_name)s", name);
- %(inc_ref_count)s
- return wx_ptr;
- }
-};
-
-%(type_name)s_handler x__%(type_name)s_handler = %(type_name)s_handler();
-#define convert_to_%(type_name)s(py_obj,name) \\
- x__%(type_name)s_handler.convert_to_%(type_name)s(py_obj,name)
-#define py_to_%(type_name)s(py_obj,name) \\
- x__%(type_name)s_handler.py_to_%(type_name)s(py_obj,name)
-
-"""
-
-class wx_converter(common_base_converter):
- def __init__(self,class_name="undefined"):
- self.class_name = class_name
- common_base_converter.__init__(self)
-
- def init_info(self):
- common_base_converter.init_info(self)
- # These are generated on the fly instead of defined at
- # the class level.
- self.type_name = self.class_name
- self.c_type = self.class_name + "*"
- self.return_type = self.class_name + "*"
- self.to_c_return = None # not used
- self.check_func = None # not used
- self.headers.append('"wx/wx.h"')
- if sys.platform == "win32":
- # These will be used in many cases
- self.headers.append('<windows.h>')
-
- # These are needed for linking.
- self.libraries.extend(['kernel32','user32','gdi32','comdlg32',
- 'winspool', 'winmm', 'shell32',
- 'oldnames', 'comctl32', 'ctl3d32',
- 'odbc32', 'ole32', 'oleaut32',
- 'uuid', 'rpcrt4', 'advapi32', 'wsock32'])
-
- # not sure which of these macros are needed.
- self.define_macros.append(('WIN32', '1'))
- self.define_macros.append(('__WIN32__', '1'))
- self.define_macros.append(('_WINDOWS', '1'))
- self.define_macros.append(('STRICT', '1'))
- # I think this will only work on NT/2000/XP set
- # set to 0x0400 for earlier versions.
- # Hmmm. setting this breaks stuff
- #self.define_macros.append(('WINVER', '0x0350'))
-
- self.library_dirs.append(os.path.join(wx_base,'lib'))
- #self.include_dirs.append(os.path.join(wx_base,'include'))
- self.include_dirs.append(wx_base)
- self.include_dirs.append(os.path.join(wx_base,'include'))
- self.include_dirs.append(os.path.join(wx_base,'include','msw'))
- # how do I discover unicode or not unicode??
- # non-unicode
- self.libraries.append('wxmsw24h')
- self.include_dirs.append(os.path.join(wx_base,'lib'))
-
- # unicode
- #self.libraries.append('wxmswuh')
- #self.include_dirs.append(os.path.join(wx_base,'lib','mswdlluh'))
- #self.define_macros.append(('UNICODE', '1'))
- else:
- # make sure the gtk files are available
- # ?? Do I need to link to them?
- self.headers.append('"gdk/gdk.h"')
- # !! This shouldn't be hard coded.
- self.include_dirs.append("/usr/include/gtk-1.2")
- self.include_dirs.append("/usr/include/glib-1.2")
- self.include_dirs.append("/usr/lib/glib/include")
- cxxflags = get_wxconfig('cxxflags')
- libflags = get_wxconfig('libs') + get_wxconfig('gl-libs')
-
- #older versions of wx do not support the ldflags.
- try:
- ldflags = get_wxconfig('ldflags')
- except RuntimeError:
- ldflags = []
-
- self.extra_compile_args.extend(cxxflags)
- self.extra_link_args.extend(libflags)
- self.extra_link_args.extend(ldflags)
- self.support_code.append(common_info.swig_support_code)
-
- def type_match(self,value):
- is_match = 0
- try:
- wx_class = value.this.split('_')[-2]
- if wx_class[:2] == 'wx':
- is_match = 1
- except AttributeError:
- pass
- return is_match
-
- def generate_build_info(self):
- if self.class_name != "undefined":
- res = common_base_converter.generate_build_info(self)
- else:
- # if there isn't a class_name, we don't want the
- # we don't want the support_code to be included
- import base_info
- res = base_info.base_info()
- return res
-
- def py_to_c_code(self):
- return wx_to_c_template % self.template_vars()
-
- #def c_to_py_code(self):
- # return simple_c_to_py_template % self.template_vars()
-
- def type_spec(self,name,value):
- # factory
- class_name = value.this.split('_')[-2]
- new_spec = self.__class__(class_name)
- new_spec.name = name
- return new_spec
-
- def __cmp__(self,other):
- #only works for equal
- res = -1
- try:
- res = cmp(self.name,other.name) or \
- cmp(self.__class__, other.__class__) or \
- cmp(self.class_name, other.class_name) or \
- cmp(self.type_name,other.type_name)
- except:
- pass
- return res