]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/msw/gdi.cpp
removed a test value left in by accident
[wxWidgets.git] / utils / wxPython / src / msw / gdi.cpp
index 9d4eb20f02007719cf05d99155886200e62d0757..df658b8553f676e699bc23b31c5e8c13d0cf932e 100644 (file)
@@ -3,7 +3,7 @@
  * 
  * This file was automatically generated by :
  * Simplified Wrapper and Interface Generator (SWIG)
- * Version 1.1 (Patch 5)
+ * Version 1.1 (Patch 6)
  * 
  * Portions Copyright (c) 1995-1998
  * The University of Utah and The Regents of the University of California.
 /* Definitions for Windows/Unix exporting */
 #if defined(__WIN32__)
 #   if defined(_MSC_VER)
-#      define SWIGEXPORT(a,b) __declspec(dllexport) a b
+#      define SWIGEXPORT(a) __declspec(dllexport) a
 #   else
 #      if defined(__BORLANDC__)
-#          define SWIGEXPORT(a,b) a _export b
+#          define SWIGEXPORT(a) a _export 
 #      else
-#          define SWIGEXPORT(a,b) a b
+#          define SWIGEXPORT(a) a 
 #      endif
 #   endif
 #else
-#   define SWIGEXPORT(a,b) a b
+#   define SWIGEXPORT(a) a 
 #endif
 
 #ifdef __cplusplus
@@ -43,12 +43,12 @@ extern "C" {
 extern void SWIG_MakePtr(char *, void *, char *);
 extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
 extern char *SWIG_GetPtr(char *, void **, char *);
+extern char *SWIG_GetPtrObj(PyObject *, void **, char *);
 extern void SWIG_addvarlink(PyObject *, char *, PyObject *(*)(void), int (*)(PyObject *));
 extern PyObject *SWIG_newvarlink(void);
 #ifdef __cplusplus
 }
 #endif
-
 #define SWIG_init    initgdic
 
 #define SWIG_name    "gdic"
@@ -62,12 +62,13 @@ extern PyObject *SWIG_newvarlink(void);
 
 static PyObject* l_output_helper(PyObject* target, PyObject* o) {
     PyObject*   o2;
-    if (!target) {
+    PyObject*   o3;
+    if (!target) {                   
         target = o;
-    } else if (target == Py_None) {
+    } else if (target == Py_None) {  
         Py_DECREF(Py_None);
         target = o;
-    } else {
+    } else {                         
         if (!PyList_Check(target)) {
             o2 = target;
             target = PyList_New(0);
@@ -84,23 +85,23 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) {
     PyObject*   o2;
     PyObject*   o3;
 
-    if (!target) {
+    if (!target) {                   
         target = o;
-    } else if (target == Py_None) {
+    } else if (target == Py_None) {  
         Py_DECREF(Py_None);
         target = o;
-    } else {
+    } else {                         
         if (!PyTuple_Check(target)) {
             o2 = target;
             target = PyTuple_New(1);
             PyTuple_SetItem(target, 0, o2);
         }
-        o3 = PyTuple_New(1);
-        PyTuple_SetItem(o3, 0, o);
+        o3 = PyTuple_New(1);            
+        PyTuple_SetItem(o3, 0, o);      
 
         o2 = target;
-        target = PySequence_Concat(o2, o3);
-        Py_DECREF(o2);
+        target = PySequence_Concat(o2, o3); 
+        Py_DECREF(o2);                      
         Py_DECREF(o3);
     }
     return target;
@@ -123,13 +124,21 @@ static char* wxStringErrorMsg = "string type is required for parameter";
         return new wxBitmap(width, height, depth);
     }
 
-                                // This one won't own the reference, so Python won't call
-                                // the dtor, this is good for toolbars and such where
-                                // the parent will manage the bitmap.
+                                // This one won't own the reference, so Python
+                                // won't call the dtor, this is good for
+                                // toolbars and such where the parent will
+                                // manage the bitmap.
     wxBitmap* wxNoRefBitmap(char* name, long flags) {
         return new wxBitmap(name, flags);
     }
 
+#ifdef __WXMSW__
+    wxBitmap* wxBitmapFromData(char* data, long type,
+                               int width, int height, int depth = 1) {
+        return new wxBitmap((void*)data, type, width, height, depth);
+    }
+#endif
+
     wxMask* wxMaskColour(const wxBitmap& bitmap, const wxColour& colour) {
         return new wxMask(bitmap, colour);
     }
@@ -190,21 +199,33 @@ extern wxPalette  wxNullPalette;
 extern wxFont  wxNullFont; 
 extern wxColour  wxNullColour; 
 
+#endif
+#ifdef __cplusplus
+extern "C" {
 #endif
 static PyObject *_wrap_wxEmptyBitmap(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _result;
     int  _arg0;
     int  _arg1;
-    int  _arg2 = -1;
+    int  _arg2 = (int ) -1;
     char _ptemp[128];
 
     self = self;
     if(!PyArg_ParseTuple(args,"ii|i:wxEmptyBitmap",&_arg0,&_arg1,&_arg2)) 
         return NULL;
-    _result = (wxBitmap *)wxEmptyBitmap(_arg0,_arg1,_arg2);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmap *)wxEmptyBitmap(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -218,9 +239,46 @@ static PyObject *_wrap_wxNoRefBitmap(PyObject *self, PyObject *args) {
     self = self;
     if(!PyArg_ParseTuple(args,"sl:wxNoRefBitmap",&_arg0,&_arg1)) 
         return NULL;
-    _result = (wxBitmap *)wxNoRefBitmap(_arg0,_arg1);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmap *)wxNoRefBitmap(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+static PyObject *_wrap_wxBitmapFromData(PyObject *self, PyObject *args) {
+    PyObject * _resultobj;
+    wxBitmap * _result;
+    char * _arg0;
+    long  _arg1;
+    int  _arg2;
+    int  _arg3;
+    int  _arg4 = (int ) 1;
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTuple(args,"slii|i:wxBitmapFromData",&_arg0,&_arg1,&_arg2,&_arg3,&_arg4)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmap *)wxBitmapFromData(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -229,28 +287,39 @@ static PyObject *_wrap_wxMaskColour(PyObject *self, PyObject *args) {
     wxMask * _result;
     wxBitmap * _arg0;
     wxColour * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxMaskColour",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxMaskColour",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMaskColour. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxColour_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMaskColour. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (wxMask *)wxMaskColour(*_arg0,*_arg1);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMask_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMask *)wxMaskColour(*_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMask_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -263,9 +332,18 @@ static PyObject *_wrap_wxStockCursor(PyObject *self, PyObject *args) {
     self = self;
     if(!PyArg_ParseTuple(args,"i:wxStockCursor",&_arg0)) 
         return NULL;
-    _result = (wxCursor *)wxPyStockCursor(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxCursor *)wxPyStockCursor(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -284,11 +362,20 @@ static PyObject *_wrap_wxNamedColour(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg0 = new wxString(PyString_AsString(_obj0));
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
 }
-    _result = (wxColour *)wxNamedColour(*_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxColour *)wxNamedColour(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     if (_obj0)
         delete _arg0;
@@ -300,21 +387,31 @@ static PyObject *_wrap_wxMemoryDCFromDC(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMemoryDC * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxMemoryDCFromDC",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxMemoryDCFromDC",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMemoryDCFromDC. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (wxMemoryDC *)wxMemoryDCFromDC(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMemoryDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMemoryDC *)wxMemoryDCFromDC(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMemoryDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -965,11 +1062,20 @@ static PyObject *_wrap_new_wxBitmap(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg0 = new wxString(PyString_AsString(_obj0));
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
 }
-    _result = (wxBitmap *)new_wxBitmap(*_arg0,_arg1);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmap *)new_wxBitmap(*_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     if (_obj0)
         delete _arg0;
@@ -981,19 +1087,24 @@ static PyObject *_wrap_new_wxBitmap(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxBitmap(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxBitmap",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxBitmap",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxBitmap. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    delete_wxBitmap(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxBitmap(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1004,20 +1115,25 @@ static PyObject *_wrap_wxBitmap_Create(PyObject *self, PyObject *args) {
     wxBitmap * _arg0;
     int  _arg1;
     int  _arg2;
-    int  _arg3 = -1;
-    char * _argc0 = 0;
+    int  _arg3 = (int ) -1;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sii|i:wxBitmap_Create",&_argc0,&_arg1,&_arg2,&_arg3)) 
+    if(!PyArg_ParseTuple(args,"Oii|i:wxBitmap_Create",&_argo0,&_arg1,&_arg2,&_arg3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_Create. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxBitmap_Create(_arg0,_arg1,_arg2,_arg3);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmap_Create(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1027,19 +1143,24 @@ static PyObject *_wrap_wxBitmap_GetDepth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBitmap_GetDepth",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBitmap_GetDepth",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_GetDepth. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (int )wxBitmap_GetDepth(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxBitmap_GetDepth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1048,19 +1169,24 @@ static PyObject *_wrap_wxBitmap_GetHeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBitmap_GetHeight",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBitmap_GetHeight",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_GetHeight. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (int )wxBitmap_GetHeight(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxBitmap_GetHeight(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1069,21 +1195,31 @@ static PyObject *_wrap_wxBitmap_GetPalette(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPalette * _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBitmap_GetPalette",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBitmap_GetPalette",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_GetPalette. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (wxPalette *)wxBitmap_GetPalette(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxPalette_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPalette *)wxBitmap_GetPalette(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPalette_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -1092,21 +1228,31 @@ static PyObject *_wrap_wxBitmap_GetMask(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMask * _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBitmap_GetMask",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBitmap_GetMask",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_GetMask. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (wxMask *)wxBitmap_GetMask(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMask_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMask *)wxBitmap_GetMask(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMask_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -1115,19 +1261,24 @@ static PyObject *_wrap_wxBitmap_GetWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBitmap_GetWidth",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBitmap_GetWidth",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_GetWidth. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (int )wxBitmap_GetWidth(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxBitmap_GetWidth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1138,14 +1289,15 @@ static PyObject *_wrap_wxBitmap_LoadFile(PyObject *self, PyObject *args) {
     wxBitmap * _arg0;
     wxString * _arg1;
     long  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sOl:wxBitmap_LoadFile",&_argc0,&_obj1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"OOl:wxBitmap_LoadFile",&_argo0,&_obj1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_LoadFile. Expected _wxBitmap_p.");
         return NULL;
         }
@@ -1155,10 +1307,14 @@ static PyObject *_wrap_wxBitmap_LoadFile(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    _result = (bool )wxBitmap_LoadFile(_arg0,*_arg1,_arg2);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxBitmap_LoadFile(_arg0,*_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
 {
     if (_obj1)
         delete _arg1;
@@ -1171,19 +1327,24 @@ static PyObject *_wrap_wxBitmap_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBitmap_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBitmap_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_Ok. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (bool )wxBitmap_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxBitmap_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1194,16 +1355,17 @@ static PyObject *_wrap_wxBitmap_SaveFile(PyObject *self, PyObject *args) {
     wxBitmap * _arg0;
     wxString * _arg1;
     int  _arg2;
-    wxPalette * _arg3 = NULL;
-    char * _argc0 = 0;
+    wxPalette * _arg3 = (wxPalette *) NULL;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
-    char * _argc3 = 0;
+    PyObject * _argo3 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sOi|s:wxBitmap_SaveFile",&_argc0,&_obj1,&_arg2,&_argc3)) 
+    if(!PyArg_ParseTuple(args,"OOi|O:wxBitmap_SaveFile",&_argo0,&_obj1,&_arg2,&_argo3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_SaveFile. Expected _wxBitmap_p.");
         return NULL;
         }
@@ -1213,16 +1375,21 @@ static PyObject *_wrap_wxBitmap_SaveFile(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    if (_argc3) {
-        if (SWIG_GetPtr(_argc3,(void **) &_arg3,"_wxPalette_p")) {
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxBitmap_SaveFile. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    _result = (bool )wxBitmap_SaveFile(_arg0,*_arg1,_arg2,_arg3);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxBitmap_SaveFile(_arg0,*_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
 {
     if (_obj1)
         delete _arg1;
@@ -1235,19 +1402,24 @@ static PyObject *_wrap_wxBitmap_SetDepth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxBitmap_SetDepth",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxBitmap_SetDepth",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_SetDepth. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxBitmap_SetDepth(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmap_SetDepth(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1257,19 +1429,24 @@ static PyObject *_wrap_wxBitmap_SetHeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxBitmap_SetHeight",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxBitmap_SetHeight",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_SetHeight. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxBitmap_SetHeight(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmap_SetHeight(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1279,26 +1456,32 @@ static PyObject *_wrap_wxBitmap_SetMask(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _arg0;
     wxMask * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxBitmap_SetMask",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxBitmap_SetMask",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_SetMask. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxMask_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMask_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_SetMask. Expected _wxMask_p.");
         return NULL;
         }
     }
-    wxBitmap_SetMask(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmap_SetMask(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1308,26 +1491,32 @@ static PyObject *_wrap_wxBitmap_SetPalette(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _arg0;
     wxPalette * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxBitmap_SetPalette",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxBitmap_SetPalette",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_SetPalette. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxPalette_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_SetPalette. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    wxBitmap_SetPalette(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmap_SetPalette(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1337,19 +1526,24 @@ static PyObject *_wrap_wxBitmap_SetWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxBitmap_SetWidth",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxBitmap_SetWidth",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmap_SetWidth. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxBitmap_SetWidth(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmap_SetWidth(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1359,21 +1553,31 @@ static PyObject *_wrap_new_wxMask(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMask * _result;
     wxBitmap * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:new_wxMask",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:new_wxMask",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBitmap_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxMask. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (wxMask *)new_wxMask(*_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMask_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMask *)new_wxMask(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMask_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -1381,19 +1585,24 @@ static PyObject *_wrap_new_wxMask(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxMask(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMask * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxMask",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxMask",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxMask_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMask_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxMask. Expected _wxMask_p.");
         return NULL;
         }
     }
-    delete_wxMask(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxMask(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1412,8 +1621,8 @@ static PyObject *_wrap_new_wxIcon(PyObject *self, PyObject *args) {
     wxIcon * _result;
     wxString * _arg0;
     long  _arg1;
-    int  _arg2 = -1;
-    int  _arg3 = -1;
+    int  _arg2 = (int ) -1;
+    int  _arg3 = (int ) -1;
     PyObject * _obj0 = 0;
     char _ptemp[128];
 
@@ -1425,11 +1634,20 @@ static PyObject *_wrap_new_wxIcon(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg0 = new wxString(PyString_AsString(_obj0));
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
 }
-    _result = (wxIcon *)new_wxIcon(*_arg0,_arg1,_arg2,_arg3);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxIcon_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxIcon *)new_wxIcon(*_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxIcon_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     if (_obj0)
         delete _arg0;
@@ -1441,19 +1659,24 @@ static PyObject *_wrap_new_wxIcon(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxIcon(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxIcon * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxIcon",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxIcon",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxIcon. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    delete_wxIcon(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxIcon(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1463,19 +1686,24 @@ static PyObject *_wrap_wxIcon_GetDepth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxIcon * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxIcon_GetDepth",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxIcon_GetDepth",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_GetDepth. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    _result = (int )wxIcon_GetDepth(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxIcon_GetDepth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1484,19 +1712,24 @@ static PyObject *_wrap_wxIcon_GetHeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxIcon * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxIcon_GetHeight",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxIcon_GetHeight",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_GetHeight. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    _result = (int )wxIcon_GetHeight(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxIcon_GetHeight(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1505,19 +1738,24 @@ static PyObject *_wrap_wxIcon_GetWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxIcon * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxIcon_GetWidth",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxIcon_GetWidth",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_GetWidth. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    _result = (int )wxIcon_GetWidth(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxIcon_GetWidth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1528,14 +1766,15 @@ static PyObject *_wrap_wxIcon_LoadFile(PyObject *self, PyObject *args) {
     wxIcon * _arg0;
     wxString * _arg1;
     long  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sOl:wxIcon_LoadFile",&_argc0,&_obj1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"OOl:wxIcon_LoadFile",&_argo0,&_obj1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_LoadFile. Expected _wxIcon_p.");
         return NULL;
         }
@@ -1545,10 +1784,14 @@ static PyObject *_wrap_wxIcon_LoadFile(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    _result = (bool )wxIcon_LoadFile(_arg0,*_arg1,_arg2);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxIcon_LoadFile(_arg0,*_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
 {
     if (_obj1)
         delete _arg1;
@@ -1561,19 +1804,24 @@ static PyObject *_wrap_wxIcon_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxIcon * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxIcon_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxIcon_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_Ok. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    _result = (bool )wxIcon_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxIcon_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1582,19 +1830,24 @@ static PyObject *_wrap_wxIcon_SetDepth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxIcon * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxIcon_SetDepth",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxIcon_SetDepth",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_SetDepth. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    wxIcon_SetDepth(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxIcon_SetDepth(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1604,19 +1857,24 @@ static PyObject *_wrap_wxIcon_SetHeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxIcon * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxIcon_SetHeight",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxIcon_SetHeight",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_SetHeight. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    wxIcon_SetHeight(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxIcon_SetHeight(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1626,19 +1884,24 @@ static PyObject *_wrap_wxIcon_SetWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxIcon * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxIcon_SetWidth",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxIcon_SetWidth",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxIcon_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIcon_SetWidth. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    wxIcon_SetWidth(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxIcon_SetWidth(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1657,8 +1920,8 @@ static PyObject *_wrap_new_wxCursor(PyObject *self, PyObject *args) {
     wxCursor * _result;
     wxString * _arg0;
     long  _arg1;
-    int  _arg2 = 0;
-    int  _arg3 = 0;
+    int  _arg2 = (int ) 0;
+    int  _arg3 = (int ) 0;
     PyObject * _obj0 = 0;
     char _ptemp[128];
 
@@ -1670,11 +1933,20 @@ static PyObject *_wrap_new_wxCursor(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg0 = new wxString(PyString_AsString(_obj0));
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
 }
-    _result = (wxCursor *)new_wxCursor(*_arg0,_arg1,_arg2,_arg3);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxCursor *)new_wxCursor(*_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     if (_obj0)
         delete _arg0;
@@ -1686,19 +1958,24 @@ static PyObject *_wrap_new_wxCursor(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxCursor(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxCursor * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxCursor",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxCursor",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxCursor_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxCursor. Expected _wxCursor_p.");
         return NULL;
         }
     }
-    delete_wxCursor(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxCursor(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1708,19 +1985,24 @@ static PyObject *_wrap_wxCursor_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxCursor * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxCursor_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxCursor_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxCursor_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCursor_Ok. Expected _wxCursor_p.");
         return NULL;
         }
     }
-    _result = (bool )wxCursor_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxCursor_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1737,16 +2019,25 @@ static PyObject *_wrap_new_wxFont(PyObject *self, PyObject *args) {
     int  _arg1;
     int  _arg2;
     int  _arg3;
-    int  _arg4 = (0);
-    char * _arg5 = "";
+    int  _arg4 = (int ) FALSE;
+    char * _arg5 = (char *) "";
     char _ptemp[128];
 
     self = self;
     if(!PyArg_ParseTuple(args,"iiii|is:new_wxFont",&_arg0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) 
         return NULL;
-    _result = (wxFont *)new_wxFont(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxFont *)new_wxFont(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -1755,19 +2046,24 @@ static PyObject *_wrap_wxFont_GetFaceName(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxString * _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetFaceName",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetFaceName",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetFaceName. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = new wxString (wxFont_GetFaceName(_arg0));
 {
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxString (wxFont_GetFaceName(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}{
     _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
 }
 {
@@ -1781,19 +2077,24 @@ static PyObject *_wrap_wxFont_GetFamily(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetFamily",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetFamily",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetFamily. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = (int )wxFont_GetFamily(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxFont_GetFamily(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1802,19 +2103,24 @@ static PyObject *_wrap_wxFont_GetFontId(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetFontId",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetFontId",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetFontId. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = (int )wxFont_GetFontId(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxFont_GetFontId(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1823,19 +2129,24 @@ static PyObject *_wrap_wxFont_GetPointSize(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetPointSize",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetPointSize",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetPointSize. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = (int )wxFont_GetPointSize(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxFont_GetPointSize(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1844,19 +2155,24 @@ static PyObject *_wrap_wxFont_GetStyle(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetStyle",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetStyle",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetStyle. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = (int )wxFont_GetStyle(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxFont_GetStyle(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1865,19 +2181,24 @@ static PyObject *_wrap_wxFont_GetUnderlined(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetUnderlined",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetUnderlined",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetUnderlined. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = (bool )wxFont_GetUnderlined(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxFont_GetUnderlined(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1886,19 +2207,24 @@ static PyObject *_wrap_wxFont_GetWeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxFont * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxFont_GetWeight",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxFont_GetWeight",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetWeight. Expected _wxFont_p.");
         return NULL;
         }
     }
-    _result = (int )wxFont_GetWeight(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxFont_GetWeight(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -1907,14 +2233,15 @@ static PyObject *_wrap_wxFont_SetFaceName(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _arg0;
     wxString * _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sO:wxFont_SetFaceName",&_argc0,&_obj1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxFont_SetFaceName",&_argo0,&_obj1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetFaceName. Expected _wxFont_p.");
         return NULL;
         }
@@ -1924,10 +2251,14 @@ static PyObject *_wrap_wxFont_SetFaceName(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    wxFont_SetFaceName(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont_SetFaceName(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     if (_obj1)
@@ -1941,19 +2272,24 @@ static PyObject *_wrap_wxFont_SetFamily(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxFont_SetFamily",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxFont_SetFamily",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetFamily. Expected _wxFont_p.");
         return NULL;
         }
     }
-    wxFont_SetFamily(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont_SetFamily(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1963,19 +2299,24 @@ static PyObject *_wrap_wxFont_SetPointSize(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxFont_SetPointSize",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxFont_SetPointSize",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetPointSize. Expected _wxFont_p.");
         return NULL;
         }
     }
-    wxFont_SetPointSize(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont_SetPointSize(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -1985,19 +2326,24 @@ static PyObject *_wrap_wxFont_SetStyle(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxFont_SetStyle",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxFont_SetStyle",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetStyle. Expected _wxFont_p.");
         return NULL;
         }
     }
-    wxFont_SetStyle(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont_SetStyle(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2007,21 +2353,26 @@ static PyObject *_wrap_wxFont_SetUnderlined(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _arg0;
     bool  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     int tempbool1;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxFont_SetUnderlined",&_argc0,&tempbool1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxFont_SetUnderlined",&_argo0,&tempbool1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetUnderlined. Expected _wxFont_p.");
         return NULL;
         }
     }
     _arg1 = (bool ) tempbool1;
-    wxFont_SetUnderlined(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont_SetUnderlined(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2031,19 +2382,24 @@ static PyObject *_wrap_wxFont_SetWeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxFont_SetWeight",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxFont_SetWeight",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxFont_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetWeight. Expected _wxFont_p.");
         return NULL;
         }
     }
-    wxFont_SetWeight(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont_SetWeight(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2052,17 +2408,26 @@ static PyObject *_wrap_wxFont_SetWeight(PyObject *self, PyObject *args) {
 static PyObject *_wrap_new_wxColour(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxColour * _result;
-    unsigned char  _arg0 = 0;
-    unsigned char  _arg1 = 0;
-    unsigned char  _arg2 = 0;
+    unsigned char  _arg0 = (unsigned char ) 0;
+    unsigned char  _arg1 = (unsigned char ) 0;
+    unsigned char  _arg2 = (unsigned char ) 0;
     char _ptemp[128];
 
     self = self;
     if(!PyArg_ParseTuple(args,"|bbb:new_wxColour",&_arg0,&_arg1,&_arg2)) 
         return NULL;
-    _result = (wxColour *)new_wxColour(_arg0,_arg1,_arg2);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxColour *)new_wxColour(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2070,19 +2435,24 @@ static PyObject *_wrap_new_wxColour(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxColour(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxColour * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxColour",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxColour",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxColour. Expected _wxColour_p.");
         return NULL;
         }
     }
-    delete_wxColour(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxColour(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2092,19 +2462,24 @@ static PyObject *_wrap_wxColour_Red(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     unsigned char  _result;
     wxColour * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxColour_Red",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxColour_Red",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxColour_Red. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (unsigned char )wxColour_Red(_arg0);
-    _resultobj = Py_BuildValue("b",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (unsigned char )wxColour_Red(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("b",_result);
     return _resultobj;
 }
 
@@ -2113,19 +2488,24 @@ static PyObject *_wrap_wxColour_Green(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     unsigned char  _result;
     wxColour * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxColour_Green",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxColour_Green",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxColour_Green. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (unsigned char )wxColour_Green(_arg0);
-    _resultobj = Py_BuildValue("b",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (unsigned char )wxColour_Green(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("b",_result);
     return _resultobj;
 }
 
@@ -2134,19 +2514,24 @@ static PyObject *_wrap_wxColour_Blue(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     unsigned char  _result;
     wxColour * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxColour_Blue",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxColour_Blue",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxColour_Blue. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (unsigned char )wxColour_Blue(_arg0);
-    _resultobj = Py_BuildValue("b",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (unsigned char )wxColour_Blue(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("b",_result);
     return _resultobj;
 }
 
@@ -2155,19 +2540,24 @@ static PyObject *_wrap_wxColour_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxColour * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxColour_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxColour_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxColour_Ok. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (bool )wxColour_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxColour_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2178,19 +2568,24 @@ static PyObject *_wrap_wxColour_Set(PyObject *self, PyObject *args) {
     unsigned char  _arg1;
     unsigned char  _arg2;
     unsigned char  _arg3;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sbbb:wxColour_Set",&_argc0,&_arg1,&_arg2,&_arg3)) 
+    if(!PyArg_ParseTuple(args,"Obbb:wxColour_Set",&_argo0,&_arg1,&_arg2,&_arg3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxColour_Set. Expected _wxColour_p.");
         return NULL;
         }
     }
-    wxColour_Set(_arg0,_arg1,_arg2,_arg3);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxColour_Set(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2206,19 +2601,24 @@ static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     PyObject * _result;
     wxColour * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxColour_Get",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxColour_Get",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxColour_Get. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (PyObject *)wxColour_Get(_arg0);
 {
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (PyObject *)wxColour_Get(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}{
   _resultobj = _result;
 }
     return _resultobj;
@@ -2232,23 +2632,33 @@ static PyObject *_wrap_new_wxPen(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _result;
     wxColour * _arg0;
-    int  _arg1 = 1;
-    int  _arg2 = (wxSOLID);
-    char * _argc0 = 0;
+    int  _arg1 = (int ) 1;
+    int  _arg2 = (int ) wxSOLID;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s|ii:new_wxPen",&_argc0,&_arg1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"O|ii:new_wxPen",&_argo0,&_arg1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPen. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (wxPen *)new_wxPen(_arg0,_arg1,_arg2);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxPen_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPen *)new_wxPen(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPen_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2257,19 +2667,24 @@ static PyObject *_wrap_wxPen_GetCap(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_GetCap",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_GetCap",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetCap. Expected _wxPen_p.");
         return NULL;
         }
     }
-    _result = (int )wxPen_GetCap(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxPen_GetCap(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2278,22 +2693,32 @@ static PyObject *_wrap_wxPen_GetColour(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxColour * _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_GetColour",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_GetColour",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetColour. Expected _wxPen_p.");
         return NULL;
         }
     }
-    wxColour & _result_ref = wxPen_GetColour(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxColour & _result_ref = wxPen_GetColour(_arg0);
     _result = (wxColour *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2302,19 +2727,24 @@ static PyObject *_wrap_wxPen_GetJoin(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_GetJoin",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_GetJoin",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetJoin. Expected _wxPen_p.");
         return NULL;
         }
     }
-    _result = (int )wxPen_GetJoin(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxPen_GetJoin(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2323,19 +2753,24 @@ static PyObject *_wrap_wxPen_GetStyle(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_GetStyle",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_GetStyle",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetStyle. Expected _wxPen_p.");
         return NULL;
         }
     }
-    _result = (int )wxPen_GetStyle(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxPen_GetStyle(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2344,19 +2779,24 @@ static PyObject *_wrap_wxPen_GetWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_GetWidth",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_GetWidth",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetWidth. Expected _wxPen_p.");
         return NULL;
         }
     }
-    _result = (int )wxPen_GetWidth(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxPen_GetWidth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2365,19 +2805,24 @@ static PyObject *_wrap_wxPen_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_Ok. Expected _wxPen_p.");
         return NULL;
         }
     }
-    _result = (bool )wxPen_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxPen_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2386,19 +2831,24 @@ static PyObject *_wrap_wxPen_SetCap(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxPen_SetCap",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxPen_SetCap",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetCap. Expected _wxPen_p.");
         return NULL;
         }
     }
-    wxPen_SetCap(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetCap(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2408,26 +2858,32 @@ static PyObject *_wrap_wxPen_SetColour(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _arg0;
     wxColour * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxPen_SetColour",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxPen_SetColour",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetColour. Expected _wxPen_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxColour_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPen_SetColour. Expected _wxColour_p.");
         return NULL;
         }
     }
-    wxPen_SetColour(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetColour(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2437,19 +2893,24 @@ static PyObject *_wrap_wxPen_SetJoin(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxPen_SetJoin",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxPen_SetJoin",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetJoin. Expected _wxPen_p.");
         return NULL;
         }
     }
-    wxPen_SetJoin(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetJoin(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2459,19 +2920,24 @@ static PyObject *_wrap_wxPen_SetStyle(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxPen_SetStyle",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxPen_SetStyle",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetStyle. Expected _wxPen_p.");
         return NULL;
         }
     }
-    wxPen_SetStyle(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetStyle(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2481,19 +2947,24 @@ static PyObject *_wrap_wxPen_SetWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxPen_SetWidth",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxPen_SetWidth",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetWidth. Expected _wxPen_p.");
         return NULL;
         }
     }
-    wxPen_SetWidth(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetWidth(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2504,26 +2975,32 @@ static PyObject *_wrap_wxPen_GetDashes(PyObject *self, PyObject *args) {
     int  _result;
     wxPen * _arg0;
     wxDash ** _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxPen_GetDashes",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxPen_GetDashes",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetDashes. Expected _wxPen_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxDash_pp")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDash_pp")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPen_GetDashes. Expected _wxDash_pp.");
         return NULL;
         }
     }
-    _result = (int )wxPen_GetDashes(_arg0,_arg1);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxPen_GetDashes(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2532,21 +3009,31 @@ static PyObject *_wrap_wxPen_GetStipple(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _result;
     wxPen * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPen_GetStipple",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPen_GetStipple",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_GetStipple. Expected _wxPen_p.");
         return NULL;
         }
     }
-    _result = (wxBitmap *)wxPen_GetStipple(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmap *)wxPen_GetStipple(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2556,14 +3043,15 @@ static PyObject *_wrap_wxPen_SetDashes(PyObject *self, PyObject *args) {
     wxPen * _arg0;
     int  _arg1;
     wxDash * _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sO:wxPen_SetDashes",&_argc0,&_obj2)) 
+    if(!PyArg_ParseTuple(args,"OO:wxPen_SetDashes",&_argo0,&_obj2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetDashes. Expected _wxPen_p.");
         return NULL;
         }
@@ -2576,10 +3064,19 @@ static PyObject *_wrap_wxPen_SetDashes(PyObject *self, PyObject *args) {
     }
 }
 {
-    _arg1 = PyList_Size(_obj2);
+    if (_obj2) {
+        _arg1 = PyList_Size(_obj2);
+    }
+    else {
+        _arg1 = 0;
+    }
 }
-    wxPen_SetDashes(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetDashes(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     delete [] _arg2;
@@ -2592,26 +3089,32 @@ static PyObject *_wrap_wxPen_SetStipple(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _arg0;
     wxBitmap * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxPen_SetStipple",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxPen_SetStipple",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPen_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPen_SetStipple. Expected _wxPen_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBitmap_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPen_SetStipple. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxPen_SetStipple(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen_SetStipple(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2624,22 +3127,32 @@ static PyObject *_wrap_new_wxBrush(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBrush * _result;
     wxColour * _arg0;
-    int  _arg1 = (wxSOLID);
-    char * _argc0 = 0;
+    int  _arg1 = (int ) wxSOLID;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s|i:new_wxBrush",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"O|i:new_wxBrush",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxColour_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxBrush. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (wxBrush *)new_wxBrush(_arg0,_arg1);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBrush_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBrush *)new_wxBrush(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBrush_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2648,22 +3161,32 @@ static PyObject *_wrap_wxBrush_GetColour(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxColour * _result;
     wxBrush * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBrush_GetColour",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBrush_GetColour",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_GetColour. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    wxColour & _result_ref = wxBrush_GetColour(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxColour & _result_ref = wxBrush_GetColour(_arg0);
     _result = (wxColour *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2672,21 +3195,31 @@ static PyObject *_wrap_wxBrush_GetStipple(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBitmap * _result;
     wxBrush * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBrush_GetStipple",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBrush_GetStipple",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_GetStipple. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    _result = (wxBitmap *)wxBrush_GetStipple(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmap *)wxBrush_GetStipple(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmap_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -2695,19 +3228,24 @@ static PyObject *_wrap_wxBrush_GetStyle(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxBrush * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBrush_GetStyle",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBrush_GetStyle",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_GetStyle. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    _result = (int )wxBrush_GetStyle(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxBrush_GetStyle(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2716,19 +3254,24 @@ static PyObject *_wrap_wxBrush_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxBrush * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxBrush_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxBrush_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_Ok. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    _result = (bool )wxBrush_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxBrush_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2737,26 +3280,32 @@ static PyObject *_wrap_wxBrush_SetColour(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBrush * _arg0;
     wxColour * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxBrush_SetColour",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxBrush_SetColour",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_SetColour. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxColour_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBrush_SetColour. Expected _wxColour_p.");
         return NULL;
         }
     }
-    wxBrush_SetColour(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBrush_SetColour(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2766,26 +3315,32 @@ static PyObject *_wrap_wxBrush_SetStipple(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBrush * _arg0;
     wxBitmap * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxBrush_SetStipple",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxBrush_SetStipple",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_SetStipple. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBitmap_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBrush_SetStipple. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxBrush_SetStipple(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBrush_SetStipple(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2795,19 +3350,24 @@ static PyObject *_wrap_wxBrush_SetStyle(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBrush * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxBrush_SetStyle",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxBrush_SetStyle",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxBrush_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBrush_SetStyle. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    wxBrush_SetStyle(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBrush_SetStyle(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2816,19 +3376,24 @@ static PyObject *_wrap_wxBrush_SetStyle(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxDC(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxDC",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxDC",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxDC. Expected _wxDC_p.");
         return NULL;
         }
     }
-    delete_wxDC(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxDC(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2837,20 +3402,25 @@ static PyObject *_wrap_delete_wxDC(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_BeginDrawing(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_BeginDrawing",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_BeginDrawing",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_BeginDrawing. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_BeginDrawing(_arg0);
-    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_BeginDrawing(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
     return _resultobj;
 }
 
@@ -2867,26 +3437,32 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args) {
     long  _arg6;
     long  _arg7;
     long  _arg8;
-    char * _argc0 = 0;
-    char * _argc5 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo5 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllllslll:wxDC_Blit",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4,&_argc5,&_arg6,&_arg7,&_arg8)) 
+    if(!PyArg_ParseTuple(args,"OllllOlll:wxDC_Blit",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_Blit. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc5) {
-        if (SWIG_GetPtr(_argc5,(void **) &_arg5,"_wxDC_p")) {
+    if (_argo5) {
+        if (_argo5 == Py_None) { _arg5 = NULL; }
+        else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxDC_Blit. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (bool )wxDC_Blit(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6,_arg7,_arg8);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDC_Blit(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6,_arg7,_arg8);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -2894,19 +3470,24 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_Clear(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_Clear",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_Clear",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_Clear. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_Clear(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_Clear(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2917,19 +3498,24 @@ static PyObject *_wrap_wxDC_CrossHair(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     long  _arg1;
     long  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sll:wxDC_CrossHair",&_argc0,&_arg1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"Oll:wxDC_CrossHair",&_argo0,&_arg1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_CrossHair. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_CrossHair(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_CrossHair(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2938,19 +3524,24 @@ static PyObject *_wrap_wxDC_CrossHair(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_DestroyClippingRegion(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_DestroyClippingRegion",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_DestroyClippingRegion",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DestroyClippingRegion. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DestroyClippingRegion(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DestroyClippingRegion(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -2961,19 +3552,24 @@ static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args) {
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_DeviceToLogicalX",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_DeviceToLogicalX",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DeviceToLogicalX. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_DeviceToLogicalX(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_DeviceToLogicalX(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -2983,19 +3579,24 @@ static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args)
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_DeviceToLogicalXRel",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_DeviceToLogicalXRel",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DeviceToLogicalXRel. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_DeviceToLogicalXRel(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_DeviceToLogicalXRel(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -3005,19 +3606,24 @@ static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args) {
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_DeviceToLogicalY",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_DeviceToLogicalY",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DeviceToLogicalY. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_DeviceToLogicalY(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_DeviceToLogicalY(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -3027,19 +3633,24 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args)
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_DeviceToLogicalYRel",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_DeviceToLogicalYRel",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DeviceToLogicalYRel. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_DeviceToLogicalYRel(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_DeviceToLogicalYRel(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -3053,19 +3664,53 @@ static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args) {
     long  _arg4;
     long  _arg5;
     long  _arg6;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllllll:wxDC_DrawArc",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) 
+    if(!PyArg_ParseTuple(args,"Ollllll:wxDC_DrawArc",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawArc. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawArc(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawArc(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDC_DrawCircle(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->DrawCircle(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args) {
+    PyObject * _resultobj;
+    wxDC * _arg0;
+    long  _arg1;
+    long  _arg2;
+    long  _arg3;
+    PyObject * _argo0 = 0;
+
+    self = self;
+    if(!PyArg_ParseTuple(args,"Olll:wxDC_DrawCircle",&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawCircle. Expected _wxDC_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawCircle(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3078,19 +3723,24 @@ static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args) {
     long  _arg2;
     long  _arg3;
     long  _arg4;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllll:wxDC_DrawEllipse",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4)) 
+    if(!PyArg_ParseTuple(args,"Ollll:wxDC_DrawEllipse",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawEllipse. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawEllipse(_arg0,_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawEllipse(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3105,19 +3755,24 @@ static PyObject *_wrap_wxDC_DrawEllipticArc(PyObject *self, PyObject *args) {
     long  _arg4;
     long  _arg5;
     long  _arg6;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllllll:wxDC_DrawEllipticArc",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) 
+    if(!PyArg_ParseTuple(args,"Ollllll:wxDC_DrawEllipticArc",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawEllipticArc. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawEllipticArc(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawEllipticArc(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3129,26 +3784,32 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args) {
     wxIcon * _arg1;
     long  _arg2;
     long  _arg3;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ssll:wxDC_DrawIcon",&_argc0,&_argc1,&_arg2,&_arg3)) 
+    if(!PyArg_ParseTuple(args,"OOll:wxDC_DrawIcon",&_argo0,&_argo1,&_arg2,&_arg3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawIcon. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxIcon_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawIcon. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    wxDC_DrawIcon(_arg0,*_arg1,_arg2,_arg3);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawIcon(_arg0,*_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3161,19 +3822,24 @@ static PyObject *_wrap_wxDC_DrawLine(PyObject *self, PyObject *args) {
     long  _arg2;
     long  _arg3;
     long  _arg4;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllll:wxDC_DrawLine",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4)) 
+    if(!PyArg_ParseTuple(args,"Ollll:wxDC_DrawLine",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawLine. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawLine(_arg0,_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawLine(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3184,16 +3850,17 @@ static PyObject *_wrap_wxDC_DrawLines(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     int  _arg1;
     wxPoint * _arg2;
-    long  _arg3 = 0;
-    long  _arg4 = 0;
-    char * _argc0 = 0;
+    long  _arg3 = (long ) 0;
+    long  _arg4 = (long ) 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sO|ll:wxDC_DrawLines",&_argc0,&_obj2,&_arg3,&_arg4)) 
+    if(!PyArg_ParseTuple(args,"OO|ll:wxDC_DrawLines",&_argo0,&_obj2,&_arg3,&_arg4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawLines. Expected _wxDC_p.");
         return NULL;
         }
@@ -3206,10 +3873,19 @@ static PyObject *_wrap_wxDC_DrawLines(PyObject *self, PyObject *args) {
     }
 }
 {
-    _arg1 = PyList_Size(_obj2);
+    if (_obj2) {
+        _arg1 = PyList_Size(_obj2);
+    }
+    else {
+        _arg1 = 0;
+    }
 }
-    wxDC_DrawLines(_arg0,_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawLines(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     delete [] _arg2;
@@ -3223,17 +3899,18 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     int  _arg1;
     wxPoint * _arg2;
-    long  _arg3 = 0;
-    long  _arg4 = 0;
-    int  _arg5 = (wxODDEVEN_RULE);
-    char * _argc0 = 0;
+    long  _arg3 = (long ) 0;
+    long  _arg4 = (long ) 0;
+    int  _arg5 = (int ) wxODDEVEN_RULE;
+    PyObject * _argo0 = 0;
     PyObject * _obj2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sO|lli:wxDC_DrawPolygon",&_argc0,&_obj2,&_arg3,&_arg4,&_arg5)) 
+    if(!PyArg_ParseTuple(args,"OO|lli:wxDC_DrawPolygon",&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawPolygon. Expected _wxDC_p.");
         return NULL;
         }
@@ -3246,10 +3923,19 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args) {
     }
 }
 {
-    _arg1 = PyList_Size(_obj2);
+    if (_obj2) {
+        _arg1 = PyList_Size(_obj2);
+    }
+    else {
+        _arg1 = 0;
+    }
 }
-    wxDC_DrawPolygon(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawPolygon(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     delete [] _arg2;
@@ -3263,19 +3949,24 @@ static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     long  _arg1;
     long  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sll:wxDC_DrawPoint",&_argc0,&_arg1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"Oll:wxDC_DrawPoint",&_argo0,&_arg1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawPoint. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawPoint(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawPoint(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3288,19 +3979,24 @@ static PyObject *_wrap_wxDC_DrawRectangle(PyObject *self, PyObject *args) {
     long  _arg2;
     long  _arg3;
     long  _arg4;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllll:wxDC_DrawRectangle",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4)) 
+    if(!PyArg_ParseTuple(args,"Ollll:wxDC_DrawRectangle",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawRectangle. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawRectangle(_arg0,_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawRectangle(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3313,20 +4009,25 @@ static PyObject *_wrap_wxDC_DrawRoundedRectangle(PyObject *self, PyObject *args)
     long  _arg2;
     long  _arg3;
     long  _arg4;
-    long  _arg5 = 20;
-    char * _argc0 = 0;
+    long  _arg5 = (long ) 20;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllll|l:wxDC_DrawRoundedRectangle",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) 
+    if(!PyArg_ParseTuple(args,"Ollll|l:wxDC_DrawRoundedRectangle",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawRoundedRectangle. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_DrawRoundedRectangle(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawRoundedRectangle(_arg0,_arg1,_arg2,_arg3,_arg4,_arg5);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3337,14 +4038,15 @@ static PyObject *_wrap_wxDC_DrawSpline(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     int  _arg1;
     wxPoint * _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sO:wxDC_DrawSpline",&_argc0,&_obj2)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_DrawSpline",&_argo0,&_obj2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawSpline. Expected _wxDC_p.");
         return NULL;
         }
@@ -3357,10 +4059,19 @@ static PyObject *_wrap_wxDC_DrawSpline(PyObject *self, PyObject *args) {
     }
 }
 {
-    _arg1 = PyList_Size(_obj2);
+    if (_obj2) {
+        _arg1 = PyList_Size(_obj2);
+    }
+    else {
+        _arg1 = 0;
+    }
 }
-    wxDC_DrawSpline(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawSpline(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     delete [] _arg2;
@@ -3375,14 +4086,15 @@ static PyObject *_wrap_wxDC_DrawText(PyObject *self, PyObject *args) {
     wxString * _arg1;
     long  _arg2;
     long  _arg3;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sOll:wxDC_DrawText",&_argc0,&_obj1,&_arg2,&_arg3)) 
+    if(!PyArg_ParseTuple(args,"OOll:wxDC_DrawText",&_argo0,&_obj1,&_arg2,&_arg3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawText. Expected _wxDC_p.");
         return NULL;
         }
@@ -3392,10 +4104,14 @@ static PyObject *_wrap_wxDC_DrawText(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    wxDC_DrawText(_arg0,*_arg1,_arg2,_arg3);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawText(_arg0,*_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     if (_obj1)
@@ -3408,19 +4124,24 @@ static PyObject *_wrap_wxDC_DrawText(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_EndDoc(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_EndDoc",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_EndDoc",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_EndDoc. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_EndDoc(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_EndDoc(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3429,19 +4150,24 @@ static PyObject *_wrap_wxDC_EndDoc(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_EndDrawing(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_EndDrawing",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_EndDrawing",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_EndDrawing. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_EndDrawing(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_EndDrawing(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3450,19 +4176,24 @@ static PyObject *_wrap_wxDC_EndDrawing(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_EndPage(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_EndPage",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_EndPage",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_EndPage. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_EndPage(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_EndPage(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3474,27 +4205,33 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args) {
     long  _arg1;
     long  _arg2;
     wxColour * _arg3;
-    int  _arg4 = (wxFLOOD_SURFACE);
-    char * _argc0 = 0;
-    char * _argc3 = 0;
+    int  _arg4 = (int ) wxFLOOD_SURFACE;
+    PyObject * _argo0 = 0;
+    PyObject * _argo3 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"slls|i:wxDC_FloodFill",&_argc0,&_arg1,&_arg2,&_argc3,&_arg4)) 
+    if(!PyArg_ParseTuple(args,"OllO|i:wxDC_FloodFill",&_argo0,&_arg1,&_arg2,&_argo3,&_arg4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_FloodFill. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc3) {
-        if (SWIG_GetPtr(_argc3,(void **) &_arg3,"_wxColour_p")) {
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDC_FloodFill. Expected _wxColour_p.");
         return NULL;
         }
     }
-    wxDC_FloodFill(_arg0,_arg1,_arg2,*_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_FloodFill(_arg0,_arg1,_arg2,*_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -3504,22 +4241,32 @@ static PyObject *_wrap_wxDC_GetBackground(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBrush * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetBackground",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetBackground",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetBackground. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxBrush & _result_ref = wxDC_GetBackground(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBrush & _result_ref = wxDC_GetBackground(_arg0);
     _result = (wxBrush *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBrush_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBrush_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -3528,22 +4275,32 @@ static PyObject *_wrap_wxDC_GetBrush(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxBrush * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetBrush",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetBrush",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetBrush. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxBrush & _result_ref = wxDC_GetBrush(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBrush & _result_ref = wxDC_GetBrush(_arg0);
     _result = (wxBrush *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxBrush_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBrush_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -3552,19 +4309,24 @@ static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     long  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetCharHeight",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetCharHeight",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetCharHeight. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_GetCharHeight(_arg0);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_GetCharHeight(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -3573,19 +4335,24 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     long  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetCharWidth",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetCharWidth",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetCharWidth. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_GetCharWidth(_arg0);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_GetCharWidth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -3601,7 +4368,7 @@ static PyObject *_wrap_wxDC_GetClippingBox(PyObject *self, PyObject *args) {
     long  temp1;
     long * _arg4;
     long  temp2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
 {
@@ -3616,16 +4383,21 @@ static PyObject *_wrap_wxDC_GetClippingBox(PyObject *self, PyObject *args) {
 {
   _arg4 = &temp2;
 }
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetClippingBox",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetClippingBox",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetClippingBox. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_GetClippingBox(_arg0,_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_GetClippingBox(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     PyObject *o;
@@ -3655,22 +4427,32 @@ static PyObject *_wrap_wxDC_GetFont(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxFont * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetFont",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetFont",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetFont. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxFont & _result_ref = wxDC_GetFont(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFont & _result_ref = wxDC_GetFont(_arg0);
     _result = (wxFont *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -3679,19 +4461,24 @@ static PyObject *_wrap_wxDC_GetLogicalFunction(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetLogicalFunction",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetLogicalFunction",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetLogicalFunction. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (int )wxDC_GetLogicalFunction(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxDC_GetLogicalFunction(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -3700,19 +4487,24 @@ static PyObject *_wrap_wxDC_GetMapMode(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     int  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetMapMode",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetMapMode",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetMapMode. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (int )wxDC_GetMapMode(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxDC_GetMapMode(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -3721,19 +4513,24 @@ static PyObject *_wrap_wxDC_GetOptimization(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetOptimization",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetOptimization",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetOptimization. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (bool )wxDC_GetOptimization(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDC_GetOptimization(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -3742,22 +4539,32 @@ static PyObject *_wrap_wxDC_GetPen(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPen * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetPen",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetPen",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetPen. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxPen & _result_ref = wxDC_GetPen(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPen & _result_ref = wxDC_GetPen(_arg0);
     _result = (wxPen *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxPen_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPen_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -3772,33 +4579,43 @@ static PyObject *_wrap_wxDC_GetPixel(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     long  _arg1;
     long  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sll:wxDC_GetPixel",&_argc0,&_arg1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"Oll:wxDC_GetPixel",&_argo0,&_arg1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetPixel. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (wxColour *)wxDC_GetPixel(_arg0,_arg1,_arg2);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxColour *)wxDC_GetPixel(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-#define wxDC_GetSize(_swigobj,_swigarg0,_swigarg1)  (_swigobj->GetSize(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxDC_GetSize(PyObject *self, PyObject *args) {
+#define wxDC_GetSizeTuple(_swigobj,_swigarg0,_swigarg1)  (_swigobj->GetSize(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxDC_GetSizeTuple(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     int * _arg1;
     int  temp;
     int * _arg2;
     int  temp0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
 {
@@ -3807,16 +4624,21 @@ static PyObject *_wrap_wxDC_GetSize(PyObject *self, PyObject *args) {
 {
   _arg2 = &temp0;
 }
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetSize",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetSizeTuple",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetSize. Expected _wxDC_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetSizeTuple. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_GetSize(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_GetSizeTuple(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     PyObject *o;
@@ -3831,27 +4653,65 @@ static PyObject *_wrap_wxDC_GetSize(PyObject *self, PyObject *args) {
     return _resultobj;
 }
 
+#define wxDC_GetSize(_swigobj)  (_swigobj->GetSize())
+static PyObject *_wrap_wxDC_GetSize(PyObject *self, PyObject *args) {
+    PyObject * _resultobj;
+    wxSize * _result;
+    wxDC * _arg0;
+    PyObject * _argo0 = 0;
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetSize",&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetSize. Expected _wxDC_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxSize (wxDC_GetSize(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p");
+    _resultobj = Py_BuildValue("s",_ptemp);
+    return _resultobj;
+}
+
 #define wxDC_GetTextBackground(_swigobj)  (_swigobj->GetTextBackground())
 static PyObject *_wrap_wxDC_GetTextBackground(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxColour * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetTextBackground",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetTextBackground",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetTextBackground. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxColour & _result_ref = wxDC_GetTextBackground(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxColour & _result_ref = wxDC_GetTextBackground(_arg0);
     _result = (wxColour *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -3864,7 +4724,7 @@ static PyObject *_wrap_wxDC_GetTextExtent(PyObject *self, PyObject *args) {
     long  temp;
     long * _arg3;
     long  temp0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
 
     self = self;
@@ -3874,10 +4734,11 @@ static PyObject *_wrap_wxDC_GetTextExtent(PyObject *self, PyObject *args) {
 {
   _arg3 = &temp0;
 }
-    if(!PyArg_ParseTuple(args,"sO:wxDC_GetTextExtent",&_argc0,&_obj1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_GetTextExtent",&_argo0,&_obj1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetTextExtent. Expected _wxDC_p.");
         return NULL;
         }
@@ -3887,10 +4748,14 @@ static PyObject *_wrap_wxDC_GetTextExtent(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    wxDC_GetTextExtent(_arg0,*_arg1,_arg2,_arg3);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_GetTextExtent(_arg0,*_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     PyObject *o;
@@ -3922,10 +4787,10 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args) {
     long  temp1;
     long * _arg5;
     long  temp2;
-    wxFont * _arg6 = NULL;
-    char * _argc0 = 0;
+    wxFont * _arg6 = (wxFont *) NULL;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
-    char * _argc6 = 0;
+    PyObject * _argo6 = 0;
 
     self = self;
 {
@@ -3940,10 +4805,11 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args) {
 {
   _arg5 = &temp2;
 }
-    if(!PyArg_ParseTuple(args,"sO|s:wxDC_GetFullTextExtent",&_argc0,&_obj1,&_argc6)) 
+    if(!PyArg_ParseTuple(args,"OO|O:wxDC_GetFullTextExtent",&_argo0,&_obj1,&_argo6)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetFullTextExtent. Expected _wxDC_p.");
         return NULL;
         }
@@ -3953,16 +4819,21 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    if (_argc6) {
-        if (SWIG_GetPtr(_argc6,(void **) &_arg6,"_wxFont_p")) {
+    if (_argo6) {
+        if (_argo6 == Py_None) { _arg6 = NULL; }
+        else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxDC_GetFullTextExtent. Expected _wxFont_p.");
         return NULL;
         }
     }
-    wxDC_GetFullTextExtent(_arg0,*_arg1,_arg2,_arg3,_arg4,_arg5,_arg6);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_GetFullTextExtent(_arg0,*_arg1,_arg2,_arg3,_arg4,_arg5,_arg6);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
 {
     PyObject *o;
@@ -3996,22 +4867,32 @@ static PyObject *_wrap_wxDC_GetTextForeground(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxColour * _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_GetTextForeground",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_GetTextForeground",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetTextForeground. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxColour & _result_ref = wxDC_GetTextForeground(_arg0);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxColour & _result_ref = wxDC_GetTextForeground(_arg0);
     _result = (wxColour *) &_result_ref;
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxColour_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -4021,19 +4902,24 @@ static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args) {
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_LogicalToDeviceX",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_LogicalToDeviceX",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_LogicalToDeviceX. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_LogicalToDeviceX(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_LogicalToDeviceX(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4043,19 +4929,24 @@ static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args)
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_LogicalToDeviceXRel",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_LogicalToDeviceXRel",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_LogicalToDeviceXRel. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_LogicalToDeviceXRel(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_LogicalToDeviceXRel(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4065,19 +4956,24 @@ static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args) {
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_LogicalToDeviceY",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_LogicalToDeviceY",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_LogicalToDeviceY. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_LogicalToDeviceY(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_LogicalToDeviceY(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4087,19 +4983,24 @@ static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args)
     long  _result;
     wxDC * _arg0;
     long  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sl:wxDC_LogicalToDeviceYRel",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Ol:wxDC_LogicalToDeviceYRel",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_LogicalToDeviceYRel. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_LogicalToDeviceYRel(_arg0,_arg1);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_LogicalToDeviceYRel(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4108,19 +5009,24 @@ static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     long  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_MaxX",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_MaxX",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_MaxX. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_MaxX(_arg0);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_MaxX(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4129,19 +5035,24 @@ static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     long  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_MaxY",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_MaxY",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_MaxY. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_MaxY(_arg0);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_MaxY(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4150,19 +5061,24 @@ static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     long  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_MinX",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_MinX",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_MinX. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_MinX(_arg0);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_MinX(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4171,19 +5087,24 @@ static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     long  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_MinY",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_MinY",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_MinY. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (long )wxDC_MinY(_arg0);
-    _resultobj = Py_BuildValue("l",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (long )wxDC_MinY(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
@@ -4192,19 +5113,24 @@ static PyObject *_wrap_wxDC_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_Ok. Expected _wxDC_p.");
         return NULL;
         }
     }
-    _result = (bool )wxDC_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDC_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -4214,19 +5140,24 @@ static PyObject *_wrap_wxDC_SetDeviceOrigin(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     long  _arg1;
     long  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sll:wxDC_SetDeviceOrigin",&_argc0,&_arg1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"Oll:wxDC_SetDeviceOrigin",&_argo0,&_arg1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetDeviceOrigin. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_SetDeviceOrigin(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetDeviceOrigin(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4236,26 +5167,32 @@ static PyObject *_wrap_wxDC_SetBackground(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxBrush * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetBackground",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetBackground",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetBackground. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBrush_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBackground. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    wxDC_SetBackground(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetBackground(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4265,19 +5202,24 @@ static PyObject *_wrap_wxDC_SetBackgroundMode(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxDC_SetBackgroundMode",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxDC_SetBackgroundMode",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetBackgroundMode. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_SetBackgroundMode(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetBackgroundMode(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4290,19 +5232,24 @@ static PyObject *_wrap_wxDC_SetClippingRegion(PyObject *self, PyObject *args) {
     long  _arg2;
     long  _arg3;
     long  _arg4;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sllll:wxDC_SetClippingRegion",&_argc0,&_arg1,&_arg2,&_arg3,&_arg4)) 
+    if(!PyArg_ParseTuple(args,"Ollll:wxDC_SetClippingRegion",&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetClippingRegion. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_SetClippingRegion(_arg0,_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetClippingRegion(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4312,26 +5259,32 @@ static PyObject *_wrap_wxDC_SetPalette(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxPalette * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetPalette",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetPalette",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetPalette. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxPalette_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPalette. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    wxDC_SetPalette(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetPalette(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4341,26 +5294,32 @@ static PyObject *_wrap_wxDC_SetBrush(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxBrush * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetBrush",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetBrush",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetBrush. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBrush_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBrush. Expected _wxBrush_p.");
         return NULL;
         }
     }
-    wxDC_SetBrush(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetBrush(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4370,26 +5329,32 @@ static PyObject *_wrap_wxDC_SetFont(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxFont * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetFont",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetFont",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetFont. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxFont_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetFont. Expected _wxFont_p.");
         return NULL;
         }
     }
-    wxDC_SetFont(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetFont(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4399,19 +5364,24 @@ static PyObject *_wrap_wxDC_SetLogicalFunction(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxDC_SetLogicalFunction",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxDC_SetLogicalFunction",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetLogicalFunction. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_SetLogicalFunction(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetLogicalFunction(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4421,19 +5391,24 @@ static PyObject *_wrap_wxDC_SetMapMode(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxDC_SetMapMode",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxDC_SetMapMode",&_argo0,&_arg1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetMapMode. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_SetMapMode(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetMapMode(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4443,21 +5418,26 @@ static PyObject *_wrap_wxDC_SetOptimization(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     bool  _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     int tempbool1;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxDC_SetOptimization",&_argc0,&tempbool1)) 
+    if(!PyArg_ParseTuple(args,"Oi:wxDC_SetOptimization",&_argo0,&tempbool1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetOptimization. Expected _wxDC_p.");
         return NULL;
         }
     }
     _arg1 = (bool ) tempbool1;
-    wxDC_SetOptimization(_arg0,_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetOptimization(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4467,26 +5447,32 @@ static PyObject *_wrap_wxDC_SetPen(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxPen * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetPen",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetPen",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetPen. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxPen_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPen. Expected _wxPen_p.");
         return NULL;
         }
     }
-    wxDC_SetPen(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetPen(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4496,26 +5482,32 @@ static PyObject *_wrap_wxDC_SetTextBackground(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxColour * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetTextBackground",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetTextBackground",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetTextBackground. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxColour_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetTextBackground. Expected _wxColour_p.");
         return NULL;
         }
     }
-    wxDC_SetTextBackground(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetTextBackground(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4525,26 +5517,32 @@ static PyObject *_wrap_wxDC_SetTextForeground(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
     wxColour * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxDC_SetTextForeground",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_SetTextForeground",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetTextForeground. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxColour_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetTextForeground. Expected _wxColour_p.");
         return NULL;
         }
     }
-    wxDC_SetTextForeground(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetTextForeground(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4555,19 +5553,24 @@ static PyObject *_wrap_wxDC_SetUserScale(PyObject *self, PyObject *args) {
     wxDC * _arg0;
     double  _arg1;
     double  _arg2;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sdd:wxDC_SetUserScale",&_argc0,&_arg1,&_arg2)) 
+    if(!PyArg_ParseTuple(args,"Odd:wxDC_SetUserScale",&_argo0,&_arg1,&_arg2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_SetUserScale. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_SetUserScale(_arg0,_arg1,_arg2);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_SetUserScale(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4578,14 +5581,15 @@ static PyObject *_wrap_wxDC_StartDoc(PyObject *self, PyObject *args) {
     bool  _result;
     wxDC * _arg0;
     wxString * _arg1;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sO:wxDC_StartDoc",&_argc0,&_obj1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxDC_StartDoc",&_argo0,&_obj1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_StartDoc. Expected _wxDC_p.");
         return NULL;
         }
@@ -4595,10 +5599,14 @@ static PyObject *_wrap_wxDC_StartDoc(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    _result = (bool )wxDC_StartDoc(_arg0,*_arg1);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDC_StartDoc(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
 {
     if (_obj1)
         delete _arg1;
@@ -4610,19 +5618,24 @@ static PyObject *_wrap_wxDC_StartDoc(PyObject *self, PyObject *args) {
 static PyObject *_wrap_wxDC_StartPage(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxDC_StartPage",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxDC_StartPage",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_StartPage. Expected _wxDC_p.");
         return NULL;
         }
     }
-    wxDC_StartPage(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_StartPage(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4630,8 +5643,10 @@ static PyObject *_wrap_wxDC_StartPage(PyObject *self, PyObject *args) {
 static void  wxDC_DrawBitmap(wxDC *self,wxBitmap & bitmap,long  x,long  y,bool  swapPalette) {
             wxMemoryDC* memDC = new wxMemoryDC;
             memDC->SelectObject(bitmap);
+#ifdef __WXMSW__
             if (swapPalette)
                 self->SetPalette(*bitmap.GetPalette());
+#endif
             self->Blit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), memDC,
                     0, 0, self->GetLogicalFunction());
             memDC->SelectObject(wxNullBitmap);
@@ -4643,29 +5658,35 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args) {
     wxBitmap * _arg1;
     long  _arg2;
     long  _arg3;
-    bool  _arg4 = (1);
-    char * _argc0 = 0;
-    char * _argc1 = 0;
-    int tempbool4;
+    bool  _arg4 = (bool ) TRUE;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    int tempbool4 = (int) TRUE;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ssll|i:wxDC_DrawBitmap",&_argc0,&_argc1,&_arg2,&_arg3,&tempbool4)) 
+    if(!PyArg_ParseTuple(args,"OOll|i:wxDC_DrawBitmap",&_argo0,&_argo1,&_arg2,&_arg3,&tempbool4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_DrawBitmap. Expected _wxDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBitmap_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawBitmap. Expected _wxBitmap_p.");
         return NULL;
         }
     }
     _arg4 = (bool ) tempbool4;
-    wxDC_DrawBitmap(_arg0,*_arg1,_arg2,_arg3,_arg4);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDC_DrawBitmap(_arg0,*_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4687,9 +5708,18 @@ static PyObject *_wrap_new_wxMemoryDC(PyObject *self, PyObject *args) {
     self = self;
     if(!PyArg_ParseTuple(args,":new_wxMemoryDC")) 
         return NULL;
-    _result = (wxMemoryDC *)new_wxMemoryDC();
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMemoryDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMemoryDC *)new_wxMemoryDC();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMemoryDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -4698,26 +5728,32 @@ static PyObject *_wrap_wxMemoryDC_SelectObject(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMemoryDC * _arg0;
     wxBitmap * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxMemoryDC_SelectObject",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxMemoryDC_SelectObject",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxMemoryDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMemoryDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMemoryDC_SelectObject. Expected _wxMemoryDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBitmap_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryDC_SelectObject. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    wxMemoryDC_SelectObject(_arg0,*_arg1);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxMemoryDC_SelectObject(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -4739,9 +5775,18 @@ static PyObject *_wrap_new_wxScreenDC(PyObject *self, PyObject *args) {
     self = self;
     if(!PyArg_ParseTuple(args,":new_wxScreenDC")) 
         return NULL;
-    _result = (wxScreenDC *)new_wxScreenDC();
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxScreenDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxScreenDC *)new_wxScreenDC();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxScreenDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -4751,26 +5796,32 @@ static PyObject *_wrap_wxScreenDC_StartDrawingOnTop(PyObject *self, PyObject *ar
     bool  _result;
     wxScreenDC * _arg0;
     wxWindow * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxScreenDC_StartDrawingOnTop",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxScreenDC_StartDrawingOnTop",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxScreenDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxScreenDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxScreenDC_StartDrawingOnTop. Expected _wxScreenDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxWindow_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxScreenDC_StartDrawingOnTop. Expected _wxWindow_p.");
         return NULL;
         }
     }
-    _result = (bool )wxScreenDC_StartDrawingOnTop(_arg0,_arg1);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxScreenDC_StartDrawingOnTop(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -4779,27 +5830,33 @@ static PyObject *_wrap_wxScreenDC_StartDrawingOnTopRect(PyObject *self, PyObject
     PyObject * _resultobj;
     bool  _result;
     wxScreenDC * _arg0;
-    wxRect * _arg1 = NULL;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    wxRect * _arg1 = (wxRect *) NULL;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s|s:wxScreenDC_StartDrawingOnTopRect",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"O|O:wxScreenDC_StartDrawingOnTopRect",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxScreenDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxScreenDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxScreenDC_StartDrawingOnTopRect. Expected _wxScreenDC_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxRect_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRect_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxScreenDC_StartDrawingOnTopRect. Expected _wxRect_p.");
         return NULL;
         }
     }
-    _result = (bool )wxScreenDC_StartDrawingOnTopRect(_arg0,_arg1);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxScreenDC_StartDrawingOnTopRect(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -4808,19 +5865,24 @@ static PyObject *_wrap_wxScreenDC_EndDrawingOnTop(PyObject *self, PyObject *args
     PyObject * _resultobj;
     bool  _result;
     wxScreenDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxScreenDC_EndDrawingOnTop",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxScreenDC_EndDrawingOnTop",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxScreenDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxScreenDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxScreenDC_EndDrawingOnTop. Expected _wxScreenDC_p.");
         return NULL;
         }
     }
-    _result = (bool )wxScreenDC_EndDrawingOnTop(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxScreenDC_EndDrawingOnTop(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -4837,21 +5899,31 @@ static PyObject *_wrap_new_wxClientDC(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxClientDC * _result;
     wxWindow * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:new_wxClientDC",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:new_wxClientDC",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxWindow_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxClientDC. Expected _wxWindow_p.");
         return NULL;
         }
     }
-    _result = (wxClientDC *)new_wxClientDC(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxClientDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxClientDC *)new_wxClientDC(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxClientDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -4868,21 +5940,31 @@ static PyObject *_wrap_new_wxPaintDC(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPaintDC * _result;
     wxWindow * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:new_wxPaintDC",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:new_wxPaintDC",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxWindow_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPaintDC. Expected _wxWindow_p.");
         return NULL;
         }
     }
-    _result = (wxPaintDC *)new_wxPaintDC(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxPaintDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPaintDC *)new_wxPaintDC(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPaintDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -4899,21 +5981,31 @@ static PyObject *_wrap_new_wxWindowDC(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxWindowDC * _result;
     wxWindow * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:new_wxWindowDC",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:new_wxWindowDC",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxWindow_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxWindowDC. Expected _wxWindow_p.");
         return NULL;
         }
     }
-    _result = (wxWindowDC *)new_wxWindowDC(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxWindowDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxWindowDC *)new_wxWindowDC(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxWindowDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -4932,12 +6024,12 @@ static PyObject *_wrap_new_wxPrinterDC(PyObject *self, PyObject *args) {
     wxString * _arg0;
     wxString * _arg1;
     wxString * _arg2;
-    bool  _arg3 = (1);
-    int  _arg4 = (wxPORTRAIT);
+    bool  _arg3 = (bool ) TRUE;
+    int  _arg4 = (int ) wxPORTRAIT;
     PyObject * _obj0 = 0;
     PyObject * _obj1 = 0;
     PyObject * _obj2 = 0;
-    int tempbool3;
+    int tempbool3 = (int) TRUE;
     char _ptemp[128];
 
     self = self;
@@ -4948,26 +6040,35 @@ static PyObject *_wrap_new_wxPrinterDC(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg0 = new wxString(PyString_AsString(_obj0));
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
 }
 {
     if (!PyString_Check(_obj1)) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg1 = new wxString(PyString_AsString(_obj1));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
 {
     if (!PyString_Check(_obj2)) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg2 = new wxString(PyString_AsString(_obj2));
+    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
 }
     _arg3 = (bool ) tempbool3;
-    _result = (wxPrinterDC *)new_wxPrinterDC(*_arg0,*_arg1,*_arg2,_arg3,_arg4);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxPrinterDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPrinterDC *)new_wxPrinterDC(*_arg0,*_arg1,*_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPrinterDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     if (_obj0)
         delete _arg0;
@@ -4995,7 +6096,7 @@ static void *SwigwxMetaFileDCTowxDC(void *ptr) {
 static PyObject *_wrap_new_wxMetaFileDC(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMetaFileDC * _result;
-    wxString * _arg0 = &wxPyEmptyStr;
+    wxString * _arg0 = (wxString *) &wxPyEmptyStr;
     PyObject * _obj0 = 0;
     char _ptemp[128];
 
@@ -5008,11 +6109,20 @@ static PyObject *_wrap_new_wxMetaFileDC(PyObject *self, PyObject *args) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg0 = new wxString(PyString_AsString(_obj0));
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
 }
-    _result = (wxMetaFileDC *)new_wxMetaFileDC(*_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMetaFileDC_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMetaFileDC *)new_wxMetaFileDC(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMetaFileDC_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     if (_obj0)
         delete _arg0;
@@ -5025,21 +6135,31 @@ static PyObject *_wrap_wxMetaFileDC_Close(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxMetaFile * _result;
     wxMetaFileDC * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxMetaFileDC_Close",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxMetaFileDC_Close",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxMetaFileDC_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMetaFileDC_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMetaFileDC_Close. Expected _wxMetaFileDC_p.");
         return NULL;
         }
     }
-    _result = (wxMetaFile *)wxMetaFileDC_Close(_arg0);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxMetaFile_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMetaFile *)wxMetaFileDC_Close(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMetaFile_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -5079,11 +6199,25 @@ static PyObject *_wrap_new_wxPalette(PyObject *self, PyObject *args) {
     }
 }
 {
-    _arg0 = PyList_Size(_obj1);
+    if (_obj1) {
+        _arg0 = PyList_Size(_obj1);
+    }
+    else {
+        _arg0 = 0;
+    }
 }
-    _result = (wxPalette *)new_wxPalette(_arg0,_arg1,_arg2,_arg3);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxPalette_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPalette *)new_wxPalette(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPalette_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
 {
     delete [] _arg1;
 }
@@ -5100,19 +6234,24 @@ static PyObject *_wrap_new_wxPalette(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxPalette(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxPalette * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxPalette",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxPalette",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPalette_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxPalette. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    delete_wxPalette(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxPalette(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -5125,19 +6264,24 @@ static PyObject *_wrap_wxPalette_GetPixel(PyObject *self, PyObject *args) {
     byte  _arg1;
     byte  _arg2;
     byte  _arg3;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sbbb:wxPalette_GetPixel",&_argc0,&_arg1,&_arg2,&_arg3)) 
+    if(!PyArg_ParseTuple(args,"Obbb:wxPalette_GetPixel",&_argo0,&_arg1,&_arg2,&_arg3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPalette_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPalette_GetPixel. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    _result = (int )wxPalette_GetPixel(_arg0,_arg1,_arg2,_arg3);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxPalette_GetPixel(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -5150,40 +6294,48 @@ static PyObject *_wrap_wxPalette_GetRGB(PyObject *self, PyObject *args) {
     byte * _arg2;
     byte * _arg3;
     byte * _arg4;
-    char * _argc0 = 0;
-    char * _argc2 = 0;
-    char * _argc3 = 0;
-    char * _argc4 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
+    PyObject * _argo3 = 0;
+    PyObject * _argo4 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sisss:wxPalette_GetRGB",&_argc0,&_arg1,&_argc2,&_argc3,&_argc4)) 
+    if(!PyArg_ParseTuple(args,"OiOOO:wxPalette_GetRGB",&_argo0,&_arg1,&_argo2,&_argo3,&_argo4)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPalette_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPalette_GetRGB. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    if (_argc2) {
-        if (SWIG_GetPtr(_argc2,(void **) &_arg2,"_byte_p")) {
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_byte_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxPalette_GetRGB. Expected _byte_p.");
         return NULL;
         }
     }
-    if (_argc3) {
-        if (SWIG_GetPtr(_argc3,(void **) &_arg3,"_byte_p")) {
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_byte_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxPalette_GetRGB. Expected _byte_p.");
         return NULL;
         }
     }
-    if (_argc4) {
-        if (SWIG_GetPtr(_argc4,(void **) &_arg4,"_byte_p")) {
+    if (_argo4) {
+        if (_argo4 == Py_None) { _arg4 = NULL; }
+        else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_byte_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxPalette_GetRGB. Expected _byte_p.");
         return NULL;
         }
     }
-    _result = (bool )wxPalette_GetRGB(_arg0,_arg1,_arg2,_arg3,_arg4);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxPalette_GetRGB(_arg0,_arg1,_arg2,_arg3,_arg4);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -5192,19 +6344,24 @@ static PyObject *_wrap_wxPalette_Ok(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxPalette * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxPalette_Ok",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxPalette_Ok",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxPalette_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPalette_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPalette_Ok. Expected _wxPalette_p.");
         return NULL;
         }
     }
-    _result = (bool )wxPalette_Ok(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxPalette_Ok(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -5214,18 +6371,27 @@ static PyObject *_wrap_new_wxImageList(PyObject *self, PyObject *args) {
     wxImageList * _result;
     int  _arg0;
     int  _arg1;
-    bool  _arg2 = (1);
-    int  _arg3 = 1;
-    int tempbool2;
+    bool  _arg2 = (bool ) TRUE;
+    int  _arg3 = (int ) 1;
+    int tempbool2 = (int) TRUE;
     char _ptemp[128];
 
     self = self;
     if(!PyArg_ParseTuple(args,"ii|ii:new_wxImageList",&_arg0,&_arg1,&tempbool2,&_arg3)) 
         return NULL;
     _arg2 = (bool ) tempbool2;
-    _result = (wxImageList *)new_wxImageList(_arg0,_arg1,_arg2,_arg3);
-    SWIG_MakePtr(_ptemp, (char *) _result,"_wxImageList_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxImageList *)new_wxImageList(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxImageList_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -5233,19 +6399,24 @@ static PyObject *_wrap_new_wxImageList(PyObject *self, PyObject *args) {
 static PyObject *_wrap_delete_wxImageList(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     wxImageList * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:delete_wxImageList",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:delete_wxImageList",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxImageList. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    delete_wxImageList(_arg0);
-    Py_INCREF(Py_None);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxImageList(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
     _resultobj = Py_None;
     return _resultobj;
 }
@@ -5256,34 +6427,41 @@ static PyObject *_wrap_wxImageList_Add(PyObject *self, PyObject *args) {
     int  _result;
     wxImageList * _arg0;
     wxBitmap * _arg1;
-    wxBitmap * _arg2 = &wxNullBitmap;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
-    char * _argc2 = 0;
+    wxBitmap * _arg2 = (wxBitmap *) &wxNullBitmap;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    PyObject * _argo2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss|s:wxImageList_Add",&_argc0,&_argc1,&_argc2)) 
+    if(!PyArg_ParseTuple(args,"OO|O:wxImageList_Add",&_argo0,&_argo1,&_argo2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Add. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBitmap_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_Add. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    if (_argc2) {
-        if (SWIG_GetPtr(_argc2,(void **) &_arg2,"_wxBitmap_p")) {
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Add. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _result = (int )wxImageList_Add(_arg0,*_arg1,*_arg2);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxImageList_Add(_arg0,*_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -5294,33 +6472,40 @@ static PyObject *_wrap_wxImageList_AddWithColourMask(PyObject *self, PyObject *a
     wxImageList * _arg0;
     wxBitmap * _arg1;
     wxColour * _arg2;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
-    char * _argc2 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    PyObject * _argo2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sss:wxImageList_AddWithColourMask",&_argc0,&_argc1,&_argc2)) 
+    if(!PyArg_ParseTuple(args,"OOO:wxImageList_AddWithColourMask",&_argo0,&_argo1,&_argo2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_AddWithColourMask. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxBitmap_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddWithColourMask. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    if (_argc2) {
-        if (SWIG_GetPtr(_argc2,(void **) &_arg2,"_wxColour_p")) {
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxColour_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_AddWithColourMask. Expected _wxColour_p.");
         return NULL;
         }
     }
-    _result = (int )wxImageList_AddWithColourMask(_arg0,*_arg1,*_arg2);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxImageList_AddWithColourMask(_arg0,*_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
@@ -5330,384 +6515,594 @@ static PyObject *_wrap_wxImageList_AddIcon(PyObject *self, PyObject *args) {
     int  _result;
     wxImageList * _arg0;
     wxIcon * _arg1;
-    char * _argc0 = 0;
-    char * _argc1 = 0;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"ss:wxImageList_AddIcon",&_argc0,&_argc1)) 
+    if(!PyArg_ParseTuple(args,"OO:wxImageList_AddIcon",&_argo0,&_argo1)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_AddIcon. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    if (_argc1) {
-        if (SWIG_GetPtr(_argc1,(void **) &_arg1,"_wxIcon_p")) {
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) {
             PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddIcon. Expected _wxIcon_p.");
         return NULL;
         }
     }
-    _result = (int )wxImageList_AddIcon(_arg0,*_arg1);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxImageList_AddIcon(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxImageList_Draw(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5)  (_swigobj->Draw(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5))
-static PyObject *_wrap_wxImageList_Draw(PyObject *self, PyObject *args) {
+#define wxImageList_Replace(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->Replace(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxImageList_Replace(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxImageList * _arg0;
     int  _arg1;
-    wxDC * _arg2;
-    int  _arg3;
-    int  _arg4;
-    int  _arg5 = (wxIMAGELIST_DRAW_NORMAL);
-    bool  _arg6 = (0);
-    char * _argc0 = 0;
-    char * _argc2 = 0;
-    int tempbool6;
+    wxBitmap * _arg2;
+    wxBitmap * _arg3 = (wxBitmap *) &wxNullBitmap;
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
+    PyObject * _argo3 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sisii|ii:wxImageList_Draw",&_argc0,&_arg1,&_argc2,&_arg3,&_arg4,&_arg5,&tempbool6)) 
+    if(!PyArg_ParseTuple(args,"OiO|O:wxImageList_Replace",&_argo0,&_arg1,&_argo2,&_argo3)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Draw. Expected _wxImageList_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Replace. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    if (_argc2) {
-        if (SWIG_GetPtr(_argc2,(void **) &_arg2,"_wxDC_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Draw. Expected _wxDC_p.");
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Replace. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    _arg6 = (bool ) tempbool6;
-    _result = (bool )wxImageList_Draw(_arg0,_arg1,*_arg2,_arg3,_arg4,_arg5,_arg6);
-    _resultobj = Py_BuildValue("i",_result);
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxImageList_Replace. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxImageList_Replace(_arg0,_arg1,*_arg2,*_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxImageList_GetImageCount(_swigobj)  (_swigobj->GetImageCount())
-static PyObject *_wrap_wxImageList_GetImageCount(PyObject *self, PyObject *args) {
+#define wxImageList_ReplaceIcon(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Replace(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxImageList_ReplaceIcon(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
-    int  _result;
+    bool  _result;
     wxImageList * _arg0;
-    char * _argc0 = 0;
+    int  _arg1;
+    wxIcon * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxImageList_GetImageCount",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"OiO:wxImageList_ReplaceIcon",&_argo0,&_arg1,&_argo2)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_GetImageCount. Expected _wxImageList_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_ReplaceIcon. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    _result = (int )wxImageList_GetImageCount(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxIcon_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_ReplaceIcon. Expected _wxIcon_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxImageList_ReplaceIcon(_arg0,_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxImageList_Remove(_swigobj,_swigarg0)  (_swigobj->Remove(_swigarg0))
-static PyObject *_wrap_wxImageList_Remove(PyObject *self, PyObject *args) {
+#define wxImageList_Draw(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5)  (_swigobj->Draw(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5))
+static PyObject *_wrap_wxImageList_Draw(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxImageList * _arg0;
     int  _arg1;
-    char * _argc0 = 0;
+    wxDC * _arg2;
+    int  _arg3;
+    int  _arg4;
+    int  _arg5 = (int ) (wxIMAGELIST_DRAW_NORMAL);
+    bool  _arg6 = (bool ) FALSE;
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
+    int tempbool6 = (int) FALSE;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"si:wxImageList_Remove",&_argc0,&_arg1)) 
+    if(!PyArg_ParseTuple(args,"OiOii|ii:wxImageList_Draw",&_argo0,&_arg1,&_argo2,&_arg3,&_arg4,&_arg5,&tempbool6)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Remove. Expected _wxImageList_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Draw. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    _result = (bool )wxImageList_Remove(_arg0,_arg1);
-    _resultobj = Py_BuildValue("i",_result);
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Draw. Expected _wxDC_p.");
+        return NULL;
+        }
+    }
+    _arg6 = (bool ) tempbool6;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxImageList_Draw(_arg0,_arg1,*_arg2,_arg3,_arg4,_arg5,_arg6);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxImageList_RemoveAll(_swigobj)  (_swigobj->RemoveAll())
-static PyObject *_wrap_wxImageList_RemoveAll(PyObject *self, PyObject *args) {
+#define wxImageList_GetImageCount(_swigobj)  (_swigobj->GetImageCount())
+static PyObject *_wrap_wxImageList_GetImageCount(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
-    bool  _result;
+    int  _result;
     wxImageList * _arg0;
-    char * _argc0 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"s:wxImageList_RemoveAll",&_argc0)) 
+    if(!PyArg_ParseTuple(args,"O:wxImageList_GetImageCount",&_argo0)) 
         return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_RemoveAll. Expected _wxImageList_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_GetImageCount. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    _result = (bool )wxImageList_RemoveAll(_arg0);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxImageList_GetImageCount(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxImageList_Replace(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->Replace(_swigarg0,_swigarg1,_swigarg2))
-static PyObject *_wrap_wxImageList_Replace(PyObject *self, PyObject *args) {
+#define wxImageList_Remove(_swigobj,_swigarg0)  (_swigobj->Remove(_swigarg0))
+static PyObject *_wrap_wxImageList_Remove(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxImageList * _arg0;
     int  _arg1;
-    wxBitmap * _arg2;
-    wxBitmap * _arg3 = &wxNullBitmap;
-    char * _argc0 = 0;
-    char * _argc2 = 0;
-    char * _argc3 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sis|s:wxImageList_Replace",&_argc0,&_arg1,&_argc2,&_argc3)) 
-        return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Replace. Expected _wxImageList_p.");
-        return NULL;
-        }
-    }
-    if (_argc2) {
-        if (SWIG_GetPtr(_argc2,(void **) &_arg2,"_wxBitmap_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Replace. Expected _wxBitmap_p.");
+    if(!PyArg_ParseTuple(args,"Oi:wxImageList_Remove",&_argo0,&_arg1)) 
         return NULL;
-        }
-    }
-    if (_argc3) {
-        if (SWIG_GetPtr(_argc3,(void **) &_arg3,"_wxBitmap_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxImageList_Replace. Expected _wxBitmap_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_Remove. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    _result = (bool )wxImageList_Replace(_arg0,_arg1,*_arg2,*_arg3);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxImageList_Remove(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxImageList_ReplaceIcon(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Replace(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxImageList_ReplaceIcon(PyObject *self, PyObject *args) {
+#define wxImageList_RemoveAll(_swigobj)  (_swigobj->RemoveAll())
+static PyObject *_wrap_wxImageList_RemoveAll(PyObject *self, PyObject *args) {
     PyObject * _resultobj;
     bool  _result;
     wxImageList * _arg0;
-    int  _arg1;
-    wxIcon * _arg2;
-    char * _argc0 = 0;
-    char * _argc2 = 0;
+    PyObject * _argo0 = 0;
 
     self = self;
-    if(!PyArg_ParseTuple(args,"sis:wxImageList_ReplaceIcon",&_argc0,&_arg1,&_argc2)) 
-        return NULL;
-    if (_argc0) {
-        if (SWIG_GetPtr(_argc0,(void **) &_arg0,"_wxImageList_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_ReplaceIcon. Expected _wxImageList_p.");
+    if(!PyArg_ParseTuple(args,"O:wxImageList_RemoveAll",&_argo0)) 
         return NULL;
-        }
-    }
-    if (_argc2) {
-        if (SWIG_GetPtr(_argc2,(void **) &_arg2,"_wxIcon_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_ReplaceIcon. Expected _wxIcon_p.");
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImageList_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageList_RemoveAll. Expected _wxImageList_p.");
         return NULL;
         }
     }
-    _result = (bool )wxImageList_ReplaceIcon(_arg0,_arg1,*_arg2);
-    _resultobj = Py_BuildValue("i",_result);
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxImageList_RemoveAll(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
 static PyMethodDef gdicMethods[] = {
-        { "wxImageList_ReplaceIcon", _wrap_wxImageList_ReplaceIcon, 1 },
-        { "wxImageList_Replace", _wrap_wxImageList_Replace, 1 },
-        { "wxImageList_RemoveAll", _wrap_wxImageList_RemoveAll, 1 },
-        { "wxImageList_Remove", _wrap_wxImageList_Remove, 1 },
-        { "wxImageList_GetImageCount", _wrap_wxImageList_GetImageCount, 1 },
-        { "wxImageList_Draw", _wrap_wxImageList_Draw, 1 },
-        { "wxImageList_AddIcon", _wrap_wxImageList_AddIcon, 1 },
-        { "wxImageList_AddWithColourMask", _wrap_wxImageList_AddWithColourMask, 1 },
-        { "wxImageList_Add", _wrap_wxImageList_Add, 1 },
-        { "delete_wxImageList", _wrap_delete_wxImageList, 1 },
-        { "new_wxImageList", _wrap_new_wxImageList, 1 },
-        { "wxPalette_Ok", _wrap_wxPalette_Ok, 1 },
-        { "wxPalette_GetRGB", _wrap_wxPalette_GetRGB, 1 },
-        { "wxPalette_GetPixel", _wrap_wxPalette_GetPixel, 1 },
-        { "delete_wxPalette", _wrap_delete_wxPalette, 1 },
-        { "new_wxPalette", _wrap_new_wxPalette, 1 },
-        { "wxMetaFileDC_Close", _wrap_wxMetaFileDC_Close, 1 },
-        { "new_wxMetaFileDC", _wrap_new_wxMetaFileDC, 1 },
-        { "new_wxPrinterDC", _wrap_new_wxPrinterDC, 1 },
-        { "new_wxWindowDC", _wrap_new_wxWindowDC, 1 },
-        { "new_wxPaintDC", _wrap_new_wxPaintDC, 1 },
-        { "new_wxClientDC", _wrap_new_wxClientDC, 1 },
-        { "wxScreenDC_EndDrawingOnTop", _wrap_wxScreenDC_EndDrawingOnTop, 1 },
-        { "wxScreenDC_StartDrawingOnTopRect", _wrap_wxScreenDC_StartDrawingOnTopRect, 1 },
-        { "wxScreenDC_StartDrawingOnTop", _wrap_wxScreenDC_StartDrawingOnTop, 1 },
-        { "new_wxScreenDC", _wrap_new_wxScreenDC, 1 },
-        { "wxMemoryDC_SelectObject", _wrap_wxMemoryDC_SelectObject, 1 },
-        { "new_wxMemoryDC", _wrap_new_wxMemoryDC, 1 },
-        { "wxDC_DrawBitmap", _wrap_wxDC_DrawBitmap, 1 },
-        { "wxDC_StartPage", _wrap_wxDC_StartPage, 1 },
-        { "wxDC_StartDoc", _wrap_wxDC_StartDoc, 1 },
-        { "wxDC_SetUserScale", _wrap_wxDC_SetUserScale, 1 },
-        { "wxDC_SetTextForeground", _wrap_wxDC_SetTextForeground, 1 },
-        { "wxDC_SetTextBackground", _wrap_wxDC_SetTextBackground, 1 },
-        { "wxDC_SetPen", _wrap_wxDC_SetPen, 1 },
-        { "wxDC_SetOptimization", _wrap_wxDC_SetOptimization, 1 },
-        { "wxDC_SetMapMode", _wrap_wxDC_SetMapMode, 1 },
-        { "wxDC_SetLogicalFunction", _wrap_wxDC_SetLogicalFunction, 1 },
-        { "wxDC_SetFont", _wrap_wxDC_SetFont, 1 },
-        { "wxDC_SetBrush", _wrap_wxDC_SetBrush, 1 },
-        { "wxDC_SetPalette", _wrap_wxDC_SetPalette, 1 },
-        { "wxDC_SetClippingRegion", _wrap_wxDC_SetClippingRegion, 1 },
-        { "wxDC_SetBackgroundMode", _wrap_wxDC_SetBackgroundMode, 1 },
-        { "wxDC_SetBackground", _wrap_wxDC_SetBackground, 1 },
-        { "wxDC_SetDeviceOrigin", _wrap_wxDC_SetDeviceOrigin, 1 },
-        { "wxDC_Ok", _wrap_wxDC_Ok, 1 },
-        { "wxDC_MinY", _wrap_wxDC_MinY, 1 },
-        { "wxDC_MinX", _wrap_wxDC_MinX, 1 },
-        { "wxDC_MaxY", _wrap_wxDC_MaxY, 1 },
-        { "wxDC_MaxX", _wrap_wxDC_MaxX, 1 },
-        { "wxDC_LogicalToDeviceYRel", _wrap_wxDC_LogicalToDeviceYRel, 1 },
-        { "wxDC_LogicalToDeviceY", _wrap_wxDC_LogicalToDeviceY, 1 },
-        { "wxDC_LogicalToDeviceXRel", _wrap_wxDC_LogicalToDeviceXRel, 1 },
-        { "wxDC_LogicalToDeviceX", _wrap_wxDC_LogicalToDeviceX, 1 },
-        { "wxDC_GetTextForeground", _wrap_wxDC_GetTextForeground, 1 },
-        { "wxDC_GetFullTextExtent", _wrap_wxDC_GetFullTextExtent, 1 },
-        { "wxDC_GetTextExtent", _wrap_wxDC_GetTextExtent, 1 },
-        { "wxDC_GetTextBackground", _wrap_wxDC_GetTextBackground, 1 },
-        { "wxDC_GetSize", _wrap_wxDC_GetSize, 1 },
-        { "wxDC_GetPixel", _wrap_wxDC_GetPixel, 1 },
-        { "wxDC_GetPen", _wrap_wxDC_GetPen, 1 },
-        { "wxDC_GetOptimization", _wrap_wxDC_GetOptimization, 1 },
-        { "wxDC_GetMapMode", _wrap_wxDC_GetMapMode, 1 },
-        { "wxDC_GetLogicalFunction", _wrap_wxDC_GetLogicalFunction, 1 },
-        { "wxDC_GetFont", _wrap_wxDC_GetFont, 1 },
-        { "wxDC_GetClippingBox", _wrap_wxDC_GetClippingBox, 1 },
-        { "wxDC_GetCharWidth", _wrap_wxDC_GetCharWidth, 1 },
-        { "wxDC_GetCharHeight", _wrap_wxDC_GetCharHeight, 1 },
-        { "wxDC_GetBrush", _wrap_wxDC_GetBrush, 1 },
-        { "wxDC_GetBackground", _wrap_wxDC_GetBackground, 1 },
-        { "wxDC_FloodFill", _wrap_wxDC_FloodFill, 1 },
-        { "wxDC_EndPage", _wrap_wxDC_EndPage, 1 },
-        { "wxDC_EndDrawing", _wrap_wxDC_EndDrawing, 1 },
-        { "wxDC_EndDoc", _wrap_wxDC_EndDoc, 1 },
-        { "wxDC_DrawText", _wrap_wxDC_DrawText, 1 },
-        { "wxDC_DrawSpline", _wrap_wxDC_DrawSpline, 1 },
-        { "wxDC_DrawRoundedRectangle", _wrap_wxDC_DrawRoundedRectangle, 1 },
-        { "wxDC_DrawRectangle", _wrap_wxDC_DrawRectangle, 1 },
-        { "wxDC_DrawPoint", _wrap_wxDC_DrawPoint, 1 },
-        { "wxDC_DrawPolygon", _wrap_wxDC_DrawPolygon, 1 },
-        { "wxDC_DrawLines", _wrap_wxDC_DrawLines, 1 },
-        { "wxDC_DrawLine", _wrap_wxDC_DrawLine, 1 },
-        { "wxDC_DrawIcon", _wrap_wxDC_DrawIcon, 1 },
-        { "wxDC_DrawEllipticArc", _wrap_wxDC_DrawEllipticArc, 1 },
-        { "wxDC_DrawEllipse", _wrap_wxDC_DrawEllipse, 1 },
-        { "wxDC_DrawArc", _wrap_wxDC_DrawArc, 1 },
-        { "wxDC_DeviceToLogicalYRel", _wrap_wxDC_DeviceToLogicalYRel, 1 },
-        { "wxDC_DeviceToLogicalY", _wrap_wxDC_DeviceToLogicalY, 1 },
-        { "wxDC_DeviceToLogicalXRel", _wrap_wxDC_DeviceToLogicalXRel, 1 },
-        { "wxDC_DeviceToLogicalX", _wrap_wxDC_DeviceToLogicalX, 1 },
-        { "wxDC_DestroyClippingRegion", _wrap_wxDC_DestroyClippingRegion, 1 },
-        { "wxDC_CrossHair", _wrap_wxDC_CrossHair, 1 },
-        { "wxDC_Clear", _wrap_wxDC_Clear, 1 },
-        { "wxDC_Blit", _wrap_wxDC_Blit, 1 },
-        { "wxDC_BeginDrawing", _wrap_wxDC_BeginDrawing, 1 },
-        { "delete_wxDC", _wrap_delete_wxDC, 1 },
-        { "wxBrush_SetStyle", _wrap_wxBrush_SetStyle, 1 },
-        { "wxBrush_SetStipple", _wrap_wxBrush_SetStipple, 1 },
-        { "wxBrush_SetColour", _wrap_wxBrush_SetColour, 1 },
-        { "wxBrush_Ok", _wrap_wxBrush_Ok, 1 },
-        { "wxBrush_GetStyle", _wrap_wxBrush_GetStyle, 1 },
-        { "wxBrush_GetStipple", _wrap_wxBrush_GetStipple, 1 },
-        { "wxBrush_GetColour", _wrap_wxBrush_GetColour, 1 },
-        { "new_wxBrush", _wrap_new_wxBrush, 1 },
-        { "wxPen_SetStipple", _wrap_wxPen_SetStipple, 1 },
-        { "wxPen_SetDashes", _wrap_wxPen_SetDashes, 1 },
-        { "wxPen_GetStipple", _wrap_wxPen_GetStipple, 1 },
-        { "wxPen_GetDashes", _wrap_wxPen_GetDashes, 1 },
-        { "wxPen_SetWidth", _wrap_wxPen_SetWidth, 1 },
-        { "wxPen_SetStyle", _wrap_wxPen_SetStyle, 1 },
-        { "wxPen_SetJoin", _wrap_wxPen_SetJoin, 1 },
-        { "wxPen_SetColour", _wrap_wxPen_SetColour, 1 },
-        { "wxPen_SetCap", _wrap_wxPen_SetCap, 1 },
-        { "wxPen_Ok", _wrap_wxPen_Ok, 1 },
-        { "wxPen_GetWidth", _wrap_wxPen_GetWidth, 1 },
-        { "wxPen_GetStyle", _wrap_wxPen_GetStyle, 1 },
-        { "wxPen_GetJoin", _wrap_wxPen_GetJoin, 1 },
-        { "wxPen_GetColour", _wrap_wxPen_GetColour, 1 },
-        { "wxPen_GetCap", _wrap_wxPen_GetCap, 1 },
-        { "new_wxPen", _wrap_new_wxPen, 1 },
-        { "wxColour_Get", _wrap_wxColour_Get, 1 },
-        { "wxColour_Set", _wrap_wxColour_Set, 1 },
-        { "wxColour_Ok", _wrap_wxColour_Ok, 1 },
-        { "wxColour_Blue", _wrap_wxColour_Blue, 1 },
-        { "wxColour_Green", _wrap_wxColour_Green, 1 },
-        { "wxColour_Red", _wrap_wxColour_Red, 1 },
-        { "delete_wxColour", _wrap_delete_wxColour, 1 },
-        { "new_wxColour", _wrap_new_wxColour, 1 },
-        { "wxFont_SetWeight", _wrap_wxFont_SetWeight, 1 },
-        { "wxFont_SetUnderlined", _wrap_wxFont_SetUnderlined, 1 },
-        { "wxFont_SetStyle", _wrap_wxFont_SetStyle, 1 },
-        { "wxFont_SetPointSize", _wrap_wxFont_SetPointSize, 1 },
-        { "wxFont_SetFamily", _wrap_wxFont_SetFamily, 1 },
-        { "wxFont_SetFaceName", _wrap_wxFont_SetFaceName, 1 },
-        { "wxFont_GetWeight", _wrap_wxFont_GetWeight, 1 },
-        { "wxFont_GetUnderlined", _wrap_wxFont_GetUnderlined, 1 },
-        { "wxFont_GetStyle", _wrap_wxFont_GetStyle, 1 },
-        { "wxFont_GetPointSize", _wrap_wxFont_GetPointSize, 1 },
-        { "wxFont_GetFontId", _wrap_wxFont_GetFontId, 1 },
-        { "wxFont_GetFamily", _wrap_wxFont_GetFamily, 1 },
-        { "wxFont_GetFaceName", _wrap_wxFont_GetFaceName, 1 },
-        { "new_wxFont", _wrap_new_wxFont, 1 },
-        { "wxCursor_Ok", _wrap_wxCursor_Ok, 1 },
-        { "delete_wxCursor", _wrap_delete_wxCursor, 1 },
-        { "new_wxCursor", _wrap_new_wxCursor, 1 },
-        { "wxIcon_SetWidth", _wrap_wxIcon_SetWidth, 1 },
-        { "wxIcon_SetHeight", _wrap_wxIcon_SetHeight, 1 },
-        { "wxIcon_SetDepth", _wrap_wxIcon_SetDepth, 1 },
-        { "wxIcon_Ok", _wrap_wxIcon_Ok, 1 },
-        { "wxIcon_LoadFile", _wrap_wxIcon_LoadFile, 1 },
-        { "wxIcon_GetWidth", _wrap_wxIcon_GetWidth, 1 },
-        { "wxIcon_GetHeight", _wrap_wxIcon_GetHeight, 1 },
-        { "wxIcon_GetDepth", _wrap_wxIcon_GetDepth, 1 },
-        { "delete_wxIcon", _wrap_delete_wxIcon, 1 },
-        { "new_wxIcon", _wrap_new_wxIcon, 1 },
-        { "delete_wxMask", _wrap_delete_wxMask, 1 },
-        { "new_wxMask", _wrap_new_wxMask, 1 },
-        { "wxBitmap_SetWidth", _wrap_wxBitmap_SetWidth, 1 },
-        { "wxBitmap_SetPalette", _wrap_wxBitmap_SetPalette, 1 },
-        { "wxBitmap_SetMask", _wrap_wxBitmap_SetMask, 1 },
-        { "wxBitmap_SetHeight", _wrap_wxBitmap_SetHeight, 1 },
-        { "wxBitmap_SetDepth", _wrap_wxBitmap_SetDepth, 1 },
-        { "wxBitmap_SaveFile", _wrap_wxBitmap_SaveFile, 1 },
-        { "wxBitmap_Ok", _wrap_wxBitmap_Ok, 1 },
-        { "wxBitmap_LoadFile", _wrap_wxBitmap_LoadFile, 1 },
-        { "wxBitmap_GetWidth", _wrap_wxBitmap_GetWidth, 1 },
-        { "wxBitmap_GetMask", _wrap_wxBitmap_GetMask, 1 },
-        { "wxBitmap_GetPalette", _wrap_wxBitmap_GetPalette, 1 },
-        { "wxBitmap_GetHeight", _wrap_wxBitmap_GetHeight, 1 },
-        { "wxBitmap_GetDepth", _wrap_wxBitmap_GetDepth, 1 },
-        { "wxBitmap_Create", _wrap_wxBitmap_Create, 1 },
-        { "delete_wxBitmap", _wrap_delete_wxBitmap, 1 },
-        { "new_wxBitmap", _wrap_new_wxBitmap, 1 },
-        { "wxMemoryDCFromDC", _wrap_wxMemoryDCFromDC, 1 },
-        { "wxNamedColour", _wrap_wxNamedColour, 1 },
-        { "wxStockCursor", _wrap_wxStockCursor, 1 },
-        { "wxMaskColour", _wrap_wxMaskColour, 1 },
-        { "wxNoRefBitmap", _wrap_wxNoRefBitmap, 1 },
-        { "wxEmptyBitmap", _wrap_wxEmptyBitmap, 1 },
+        { "wxImageList_RemoveAll", _wrap_wxImageList_RemoveAll, METH_VARARGS },
+        { "wxImageList_Remove", _wrap_wxImageList_Remove, METH_VARARGS },
+        { "wxImageList_GetImageCount", _wrap_wxImageList_GetImageCount, METH_VARARGS },
+        { "wxImageList_Draw", _wrap_wxImageList_Draw, METH_VARARGS },
+        { "wxImageList_ReplaceIcon", _wrap_wxImageList_ReplaceIcon, METH_VARARGS },
+        { "wxImageList_Replace", _wrap_wxImageList_Replace, METH_VARARGS },
+        { "wxImageList_AddIcon", _wrap_wxImageList_AddIcon, METH_VARARGS },
+        { "wxImageList_AddWithColourMask", _wrap_wxImageList_AddWithColourMask, METH_VARARGS },
+        { "wxImageList_Add", _wrap_wxImageList_Add, METH_VARARGS },
+        { "delete_wxImageList", _wrap_delete_wxImageList, METH_VARARGS },
+        { "new_wxImageList", _wrap_new_wxImageList, METH_VARARGS },
+        { "wxPalette_Ok", _wrap_wxPalette_Ok, METH_VARARGS },
+        { "wxPalette_GetRGB", _wrap_wxPalette_GetRGB, METH_VARARGS },
+        { "wxPalette_GetPixel", _wrap_wxPalette_GetPixel, METH_VARARGS },
+        { "delete_wxPalette", _wrap_delete_wxPalette, METH_VARARGS },
+        { "new_wxPalette", _wrap_new_wxPalette, METH_VARARGS },
+        { "wxMetaFileDC_Close", _wrap_wxMetaFileDC_Close, METH_VARARGS },
+        { "new_wxMetaFileDC", _wrap_new_wxMetaFileDC, METH_VARARGS },
+        { "new_wxPrinterDC", _wrap_new_wxPrinterDC, METH_VARARGS },
+        { "new_wxWindowDC", _wrap_new_wxWindowDC, METH_VARARGS },
+        { "new_wxPaintDC", _wrap_new_wxPaintDC, METH_VARARGS },
+        { "new_wxClientDC", _wrap_new_wxClientDC, METH_VARARGS },
+        { "wxScreenDC_EndDrawingOnTop", _wrap_wxScreenDC_EndDrawingOnTop, METH_VARARGS },
+        { "wxScreenDC_StartDrawingOnTopRect", _wrap_wxScreenDC_StartDrawingOnTopRect, METH_VARARGS },
+        { "wxScreenDC_StartDrawingOnTop", _wrap_wxScreenDC_StartDrawingOnTop, METH_VARARGS },
+        { "new_wxScreenDC", _wrap_new_wxScreenDC, METH_VARARGS },
+        { "wxMemoryDC_SelectObject", _wrap_wxMemoryDC_SelectObject, METH_VARARGS },
+        { "new_wxMemoryDC", _wrap_new_wxMemoryDC, METH_VARARGS },
+        { "wxDC_DrawBitmap", _wrap_wxDC_DrawBitmap, METH_VARARGS },
+        { "wxDC_StartPage", _wrap_wxDC_StartPage, METH_VARARGS },
+        { "wxDC_StartDoc", _wrap_wxDC_StartDoc, METH_VARARGS },
+        { "wxDC_SetUserScale", _wrap_wxDC_SetUserScale, METH_VARARGS },
+        { "wxDC_SetTextForeground", _wrap_wxDC_SetTextForeground, METH_VARARGS },
+        { "wxDC_SetTextBackground", _wrap_wxDC_SetTextBackground, METH_VARARGS },
+        { "wxDC_SetPen", _wrap_wxDC_SetPen, METH_VARARGS },
+        { "wxDC_SetOptimization", _wrap_wxDC_SetOptimization, METH_VARARGS },
+        { "wxDC_SetMapMode", _wrap_wxDC_SetMapMode, METH_VARARGS },
+        { "wxDC_SetLogicalFunction", _wrap_wxDC_SetLogicalFunction, METH_VARARGS },
+        { "wxDC_SetFont", _wrap_wxDC_SetFont, METH_VARARGS },
+        { "wxDC_SetBrush", _wrap_wxDC_SetBrush, METH_VARARGS },
+        { "wxDC_SetPalette", _wrap_wxDC_SetPalette, METH_VARARGS },
+        { "wxDC_SetClippingRegion", _wrap_wxDC_SetClippingRegion, METH_VARARGS },
+        { "wxDC_SetBackgroundMode", _wrap_wxDC_SetBackgroundMode, METH_VARARGS },
+        { "wxDC_SetBackground", _wrap_wxDC_SetBackground, METH_VARARGS },
+        { "wxDC_SetDeviceOrigin", _wrap_wxDC_SetDeviceOrigin, METH_VARARGS },
+        { "wxDC_Ok", _wrap_wxDC_Ok, METH_VARARGS },
+        { "wxDC_MinY", _wrap_wxDC_MinY, METH_VARARGS },
+        { "wxDC_MinX", _wrap_wxDC_MinX, METH_VARARGS },
+        { "wxDC_MaxY", _wrap_wxDC_MaxY, METH_VARARGS },
+        { "wxDC_MaxX", _wrap_wxDC_MaxX, METH_VARARGS },
+        { "wxDC_LogicalToDeviceYRel", _wrap_wxDC_LogicalToDeviceYRel, METH_VARARGS },
+        { "wxDC_LogicalToDeviceY", _wrap_wxDC_LogicalToDeviceY, METH_VARARGS },
+        { "wxDC_LogicalToDeviceXRel", _wrap_wxDC_LogicalToDeviceXRel, METH_VARARGS },
+        { "wxDC_LogicalToDeviceX", _wrap_wxDC_LogicalToDeviceX, METH_VARARGS },
+        { "wxDC_GetTextForeground", _wrap_wxDC_GetTextForeground, METH_VARARGS },
+        { "wxDC_GetFullTextExtent", _wrap_wxDC_GetFullTextExtent, METH_VARARGS },
+        { "wxDC_GetTextExtent", _wrap_wxDC_GetTextExtent, METH_VARARGS },
+        { "wxDC_GetTextBackground", _wrap_wxDC_GetTextBackground, METH_VARARGS },
+        { "wxDC_GetSize", _wrap_wxDC_GetSize, METH_VARARGS },
+        { "wxDC_GetSizeTuple", _wrap_wxDC_GetSizeTuple, METH_VARARGS },
+        { "wxDC_GetPixel", _wrap_wxDC_GetPixel, METH_VARARGS },
+        { "wxDC_GetPen", _wrap_wxDC_GetPen, METH_VARARGS },
+        { "wxDC_GetOptimization", _wrap_wxDC_GetOptimization, METH_VARARGS },
+        { "wxDC_GetMapMode", _wrap_wxDC_GetMapMode, METH_VARARGS },
+        { "wxDC_GetLogicalFunction", _wrap_wxDC_GetLogicalFunction, METH_VARARGS },
+        { "wxDC_GetFont", _wrap_wxDC_GetFont, METH_VARARGS },
+        { "wxDC_GetClippingBox", _wrap_wxDC_GetClippingBox, METH_VARARGS },
+        { "wxDC_GetCharWidth", _wrap_wxDC_GetCharWidth, METH_VARARGS },
+        { "wxDC_GetCharHeight", _wrap_wxDC_GetCharHeight, METH_VARARGS },
+        { "wxDC_GetBrush", _wrap_wxDC_GetBrush, METH_VARARGS },
+        { "wxDC_GetBackground", _wrap_wxDC_GetBackground, METH_VARARGS },
+        { "wxDC_FloodFill", _wrap_wxDC_FloodFill, METH_VARARGS },
+        { "wxDC_EndPage", _wrap_wxDC_EndPage, METH_VARARGS },
+        { "wxDC_EndDrawing", _wrap_wxDC_EndDrawing, METH_VARARGS },
+        { "wxDC_EndDoc", _wrap_wxDC_EndDoc, METH_VARARGS },
+        { "wxDC_DrawText", _wrap_wxDC_DrawText, METH_VARARGS },
+        { "wxDC_DrawSpline", _wrap_wxDC_DrawSpline, METH_VARARGS },
+        { "wxDC_DrawRoundedRectangle", _wrap_wxDC_DrawRoundedRectangle, METH_VARARGS },
+        { "wxDC_DrawRectangle", _wrap_wxDC_DrawRectangle, METH_VARARGS },
+        { "wxDC_DrawPoint", _wrap_wxDC_DrawPoint, METH_VARARGS },
+        { "wxDC_DrawPolygon", _wrap_wxDC_DrawPolygon, METH_VARARGS },
+        { "wxDC_DrawLines", _wrap_wxDC_DrawLines, METH_VARARGS },
+        { "wxDC_DrawLine", _wrap_wxDC_DrawLine, METH_VARARGS },
+        { "wxDC_DrawIcon", _wrap_wxDC_DrawIcon, METH_VARARGS },
+        { "wxDC_DrawEllipticArc", _wrap_wxDC_DrawEllipticArc, METH_VARARGS },
+        { "wxDC_DrawEllipse", _wrap_wxDC_DrawEllipse, METH_VARARGS },
+        { "wxDC_DrawCircle", _wrap_wxDC_DrawCircle, METH_VARARGS },
+        { "wxDC_DrawArc", _wrap_wxDC_DrawArc, METH_VARARGS },
+        { "wxDC_DeviceToLogicalYRel", _wrap_wxDC_DeviceToLogicalYRel, METH_VARARGS },
+        { "wxDC_DeviceToLogicalY", _wrap_wxDC_DeviceToLogicalY, METH_VARARGS },
+        { "wxDC_DeviceToLogicalXRel", _wrap_wxDC_DeviceToLogicalXRel, METH_VARARGS },
+        { "wxDC_DeviceToLogicalX", _wrap_wxDC_DeviceToLogicalX, METH_VARARGS },
+        { "wxDC_DestroyClippingRegion", _wrap_wxDC_DestroyClippingRegion, METH_VARARGS },
+        { "wxDC_CrossHair", _wrap_wxDC_CrossHair, METH_VARARGS },
+        { "wxDC_Clear", _wrap_wxDC_Clear, METH_VARARGS },
+        { "wxDC_Blit", _wrap_wxDC_Blit, METH_VARARGS },
+        { "wxDC_BeginDrawing", _wrap_wxDC_BeginDrawing, METH_VARARGS },
+        { "delete_wxDC", _wrap_delete_wxDC, METH_VARARGS },
+        { "wxBrush_SetStyle", _wrap_wxBrush_SetStyle, METH_VARARGS },
+        { "wxBrush_SetStipple", _wrap_wxBrush_SetStipple, METH_VARARGS },
+        { "wxBrush_SetColour", _wrap_wxBrush_SetColour, METH_VARARGS },
+        { "wxBrush_Ok", _wrap_wxBrush_Ok, METH_VARARGS },
+        { "wxBrush_GetStyle", _wrap_wxBrush_GetStyle, METH_VARARGS },
+        { "wxBrush_GetStipple", _wrap_wxBrush_GetStipple, METH_VARARGS },
+        { "wxBrush_GetColour", _wrap_wxBrush_GetColour, METH_VARARGS },
+        { "new_wxBrush", _wrap_new_wxBrush, METH_VARARGS },
+        { "wxPen_SetStipple", _wrap_wxPen_SetStipple, METH_VARARGS },
+        { "wxPen_SetDashes", _wrap_wxPen_SetDashes, METH_VARARGS },
+        { "wxPen_GetStipple", _wrap_wxPen_GetStipple, METH_VARARGS },
+        { "wxPen_GetDashes", _wrap_wxPen_GetDashes, METH_VARARGS },
+        { "wxPen_SetWidth", _wrap_wxPen_SetWidth, METH_VARARGS },
+        { "wxPen_SetStyle", _wrap_wxPen_SetStyle, METH_VARARGS },
+        { "wxPen_SetJoin", _wrap_wxPen_SetJoin, METH_VARARGS },
+        { "wxPen_SetColour", _wrap_wxPen_SetColour, METH_VARARGS },
+        { "wxPen_SetCap", _wrap_wxPen_SetCap, METH_VARARGS },
+        { "wxPen_Ok", _wrap_wxPen_Ok, METH_VARARGS },
+        { "wxPen_GetWidth", _wrap_wxPen_GetWidth, METH_VARARGS },
+        { "wxPen_GetStyle", _wrap_wxPen_GetStyle, METH_VARARGS },
+        { "wxPen_GetJoin", _wrap_wxPen_GetJoin, METH_VARARGS },
+        { "wxPen_GetColour", _wrap_wxPen_GetColour, METH_VARARGS },
+        { "wxPen_GetCap", _wrap_wxPen_GetCap, METH_VARARGS },
+        { "new_wxPen", _wrap_new_wxPen, METH_VARARGS },
+        { "wxColour_Get", _wrap_wxColour_Get, METH_VARARGS },
+        { "wxColour_Set", _wrap_wxColour_Set, METH_VARARGS },
+        { "wxColour_Ok", _wrap_wxColour_Ok, METH_VARARGS },
+        { "wxColour_Blue", _wrap_wxColour_Blue, METH_VARARGS },
+        { "wxColour_Green", _wrap_wxColour_Green, METH_VARARGS },
+        { "wxColour_Red", _wrap_wxColour_Red, METH_VARARGS },
+        { "delete_wxColour", _wrap_delete_wxColour, METH_VARARGS },
+        { "new_wxColour", _wrap_new_wxColour, METH_VARARGS },
+        { "wxFont_SetWeight", _wrap_wxFont_SetWeight, METH_VARARGS },
+        { "wxFont_SetUnderlined", _wrap_wxFont_SetUnderlined, METH_VARARGS },
+        { "wxFont_SetStyle", _wrap_wxFont_SetStyle, METH_VARARGS },
+        { "wxFont_SetPointSize", _wrap_wxFont_SetPointSize, METH_VARARGS },
+        { "wxFont_SetFamily", _wrap_wxFont_SetFamily, METH_VARARGS },
+        { "wxFont_SetFaceName", _wrap_wxFont_SetFaceName, METH_VARARGS },
+        { "wxFont_GetWeight", _wrap_wxFont_GetWeight, METH_VARARGS },
+        { "wxFont_GetUnderlined", _wrap_wxFont_GetUnderlined, METH_VARARGS },
+        { "wxFont_GetStyle", _wrap_wxFont_GetStyle, METH_VARARGS },
+        { "wxFont_GetPointSize", _wrap_wxFont_GetPointSize, METH_VARARGS },
+        { "wxFont_GetFontId", _wrap_wxFont_GetFontId, METH_VARARGS },
+        { "wxFont_GetFamily", _wrap_wxFont_GetFamily, METH_VARARGS },
+        { "wxFont_GetFaceName", _wrap_wxFont_GetFaceName, METH_VARARGS },
+        { "new_wxFont", _wrap_new_wxFont, METH_VARARGS },
+        { "wxCursor_Ok", _wrap_wxCursor_Ok, METH_VARARGS },
+        { "delete_wxCursor", _wrap_delete_wxCursor, METH_VARARGS },
+        { "new_wxCursor", _wrap_new_wxCursor, METH_VARARGS },
+        { "wxIcon_SetWidth", _wrap_wxIcon_SetWidth, METH_VARARGS },
+        { "wxIcon_SetHeight", _wrap_wxIcon_SetHeight, METH_VARARGS },
+        { "wxIcon_SetDepth", _wrap_wxIcon_SetDepth, METH_VARARGS },
+        { "wxIcon_Ok", _wrap_wxIcon_Ok, METH_VARARGS },
+        { "wxIcon_LoadFile", _wrap_wxIcon_LoadFile, METH_VARARGS },
+        { "wxIcon_GetWidth", _wrap_wxIcon_GetWidth, METH_VARARGS },
+        { "wxIcon_GetHeight", _wrap_wxIcon_GetHeight, METH_VARARGS },
+        { "wxIcon_GetDepth", _wrap_wxIcon_GetDepth, METH_VARARGS },
+        { "delete_wxIcon", _wrap_delete_wxIcon, METH_VARARGS },
+        { "new_wxIcon", _wrap_new_wxIcon, METH_VARARGS },
+        { "delete_wxMask", _wrap_delete_wxMask, METH_VARARGS },
+        { "new_wxMask", _wrap_new_wxMask, METH_VARARGS },
+        { "wxBitmap_SetWidth", _wrap_wxBitmap_SetWidth, METH_VARARGS },
+        { "wxBitmap_SetPalette", _wrap_wxBitmap_SetPalette, METH_VARARGS },
+        { "wxBitmap_SetMask", _wrap_wxBitmap_SetMask, METH_VARARGS },
+        { "wxBitmap_SetHeight", _wrap_wxBitmap_SetHeight, METH_VARARGS },
+        { "wxBitmap_SetDepth", _wrap_wxBitmap_SetDepth, METH_VARARGS },
+        { "wxBitmap_SaveFile", _wrap_wxBitmap_SaveFile, METH_VARARGS },
+        { "wxBitmap_Ok", _wrap_wxBitmap_Ok, METH_VARARGS },
+        { "wxBitmap_LoadFile", _wrap_wxBitmap_LoadFile, METH_VARARGS },
+        { "wxBitmap_GetWidth", _wrap_wxBitmap_GetWidth, METH_VARARGS },
+        { "wxBitmap_GetMask", _wrap_wxBitmap_GetMask, METH_VARARGS },
+        { "wxBitmap_GetPalette", _wrap_wxBitmap_GetPalette, METH_VARARGS },
+        { "wxBitmap_GetHeight", _wrap_wxBitmap_GetHeight, METH_VARARGS },
+        { "wxBitmap_GetDepth", _wrap_wxBitmap_GetDepth, METH_VARARGS },
+        { "wxBitmap_Create", _wrap_wxBitmap_Create, METH_VARARGS },
+        { "delete_wxBitmap", _wrap_delete_wxBitmap, METH_VARARGS },
+        { "new_wxBitmap", _wrap_new_wxBitmap, METH_VARARGS },
+        { "wxMemoryDCFromDC", _wrap_wxMemoryDCFromDC, METH_VARARGS },
+        { "wxNamedColour", _wrap_wxNamedColour, METH_VARARGS },
+        { "wxStockCursor", _wrap_wxStockCursor, METH_VARARGS },
+        { "wxMaskColour", _wrap_wxMaskColour, METH_VARARGS },
+        { "wxBitmapFromData", _wrap_wxBitmapFromData, METH_VARARGS },
+        { "wxNoRefBitmap", _wrap_wxNoRefBitmap, METH_VARARGS },
+        { "wxEmptyBitmap", _wrap_wxEmptyBitmap, METH_VARARGS },
         { NULL, NULL }
 };
+#ifdef __cplusplus
+}
+#endif
+/*
+ * This table is used by the pointer type-checker
+ */
+static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
+    { "_wxAcceleratorTable","_class_wxAcceleratorTable",0},
+    { "_signed_long","_long",0},
+    { "_wxPrintQuality","_int",0},
+    { "_wxPrintQuality","_signed_int",0},
+    { "_wxPrintQuality","_unsigned_int",0},
+    { "_wxPrintQuality","_wxWindowID",0},
+    { "_wxPrintQuality","_uint",0},
+    { "_wxPrintQuality","_EBool",0},
+    { "_wxPrintQuality","_size_t",0},
+    { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_wxIndividualLayoutConstraint","_class_wxIndividualLayoutConstraint",0},
+    { "_wxCursor","_class_wxCursor",0},
+    { "_wxMask","_class_wxMask",0},
+    { "_wxPen","_class_wxPen",0},
+    { "_byte","_unsigned_char",0},
+    { "_long","_wxDash",0},
+    { "_long","_unsigned_long",0},
+    { "_long","_signed_long",0},
+    { "_wxImageList","_class_wxImageList",0},
+    { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_wxDC","_class_wxMetaFileDC",SwigwxMetaFileDCTowxDC},
+    { "_wxDC","_wxMetaFileDC",SwigwxMetaFileDCTowxDC},
+    { "_wxDC","_class_wxPrinterDC",SwigwxPrinterDCTowxDC},
+    { "_wxDC","_wxPrinterDC",SwigwxPrinterDCTowxDC},
+    { "_wxDC","_class_wxWindowDC",SwigwxWindowDCTowxDC},
+    { "_wxDC","_wxWindowDC",SwigwxWindowDCTowxDC},
+    { "_wxDC","_class_wxPaintDC",SwigwxPaintDCTowxDC},
+    { "_wxDC","_wxPaintDC",SwigwxPaintDCTowxDC},
+    { "_wxDC","_class_wxClientDC",SwigwxClientDCTowxDC},
+    { "_wxDC","_wxClientDC",SwigwxClientDCTowxDC},
+    { "_wxDC","_class_wxScreenDC",SwigwxScreenDCTowxDC},
+    { "_wxDC","_wxScreenDC",SwigwxScreenDCTowxDC},
+    { "_wxDC","_class_wxMemoryDC",SwigwxMemoryDCTowxDC},
+    { "_wxDC","_wxMemoryDC",SwigwxMemoryDCTowxDC},
+    { "_wxDC","_class_wxDC",0},
+    { "_size_t","_wxPrintQuality",0},
+    { "_size_t","_unsigned_int",0},
+    { "_size_t","_int",0},
+    { "_size_t","_wxWindowID",0},
+    { "_size_t","_uint",0},
+    { "_class_wxRealPoint","_wxRealPoint",0},
+    { "_wxPrinterDC","_class_wxPrinterDC",0},
+    { "_class_wxMask","_wxMask",0},
+    { "_wxColour","_class_wxColour",0},
+    { "_wxBrush","_class_wxBrush",0},
+    { "_uint","_wxPrintQuality",0},
+    { "_uint","_size_t",0},
+    { "_uint","_unsigned_int",0},
+    { "_uint","_int",0},
+    { "_uint","_wxWindowID",0},
+    { "_wxRect","_class_wxRect",0},
+    { "_wxPoint","_class_wxPoint",0},
+    { "_wxBitmap","_class_wxCursor",SwigwxCursorTowxBitmap},
+    { "_wxBitmap","_wxCursor",SwigwxCursorTowxBitmap},
+    { "_wxBitmap","_class_wxIcon",SwigwxIconTowxBitmap},
+    { "_wxBitmap","_wxIcon",SwigwxIconTowxBitmap},
+    { "_wxBitmap","_class_wxBitmap",0},
+    { "_wxPyTimer","_class_wxPyTimer",0},
+    { "_wxWindowDC","_class_wxWindowDC",0},
+    { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
+    { "_EBool","_wxPrintQuality",0},
+    { "_EBool","_signed_int",0},
+    { "_EBool","_int",0},
+    { "_EBool","_wxWindowID",0},
+    { "_class_wxRegion","_wxRegion",0},
+    { "_wxFont","_class_wxFont",0},
+    { "_unsigned_long","_wxDash",0},
+    { "_unsigned_long","_long",0},
+    { "_class_wxRect","_wxRect",0},
+    { "_class_wxDC","_class_wxMetaFileDC",SwigwxMetaFileDCTowxDC},
+    { "_class_wxDC","_wxMetaFileDC",SwigwxMetaFileDCTowxDC},
+    { "_class_wxDC","_class_wxPrinterDC",SwigwxPrinterDCTowxDC},
+    { "_class_wxDC","_wxPrinterDC",SwigwxPrinterDCTowxDC},
+    { "_class_wxDC","_class_wxWindowDC",SwigwxWindowDCTowxDC},
+    { "_class_wxDC","_wxWindowDC",SwigwxWindowDCTowxDC},
+    { "_class_wxDC","_class_wxPaintDC",SwigwxPaintDCTowxDC},
+    { "_class_wxDC","_wxPaintDC",SwigwxPaintDCTowxDC},
+    { "_class_wxDC","_class_wxClientDC",SwigwxClientDCTowxDC},
+    { "_class_wxDC","_wxClientDC",SwigwxClientDCTowxDC},
+    { "_class_wxDC","_class_wxScreenDC",SwigwxScreenDCTowxDC},
+    { "_class_wxDC","_wxScreenDC",SwigwxScreenDCTowxDC},
+    { "_class_wxDC","_class_wxMemoryDC",SwigwxMemoryDCTowxDC},
+    { "_class_wxDC","_wxMemoryDC",SwigwxMemoryDCTowxDC},
+    { "_class_wxDC","_wxDC",0},
+    { "_class_wxPyTimer","_wxPyTimer",0},
+    { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
+    { "_signed_int","_wxPrintQuality",0},
+    { "_signed_int","_EBool",0},
+    { "_signed_int","_wxWindowID",0},
+    { "_signed_int","_int",0},
+    { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
+    { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_wxScreenDC","_class_wxScreenDC",0},
+    { "_WXTYPE","_short",0},
+    { "_WXTYPE","_signed_short",0},
+    { "_WXTYPE","_unsigned_short",0},
+    { "_class_wxBrush","_wxBrush",0},
+    { "_unsigned_short","_WXTYPE",0},
+    { "_unsigned_short","_short",0},
+    { "_class_wxFont","_wxFont",0},
+    { "_wxClientDC","_class_wxClientDC",0},
+    { "_class_wxPoint","_wxPoint",0},
+    { "_wxRealPoint","_class_wxRealPoint",0},
+    { "_signed_short","_WXTYPE",0},
+    { "_signed_short","_short",0},
+    { "_wxMemoryDC","_class_wxMemoryDC",0},
+    { "_wxPaintDC","_class_wxPaintDC",0},
+    { "_class_wxWindowDC","_wxWindowDC",0},
+    { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
+    { "_class_wxCursor","_wxCursor",0},
+    { "_unsigned_char","_byte",0},
+    { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_unsigned_int","_wxPrintQuality",0},
+    { "_unsigned_int","_size_t",0},
+    { "_unsigned_int","_uint",0},
+    { "_unsigned_int","_wxWindowID",0},
+    { "_unsigned_int","_int",0},
+    { "_wxIcon","_class_wxIcon",0},
+    { "_class_wxPen","_wxPen",0},
+    { "_short","_WXTYPE",0},
+    { "_short","_unsigned_short",0},
+    { "_short","_signed_short",0},
+    { "_class_wxImageList","_wxImageList",0},
+    { "_wxWindowID","_wxPrintQuality",0},
+    { "_wxWindowID","_size_t",0},
+    { "_wxWindowID","_EBool",0},
+    { "_wxWindowID","_uint",0},
+    { "_wxWindowID","_int",0},
+    { "_wxWindowID","_signed_int",0},
+    { "_wxWindowID","_unsigned_int",0},
+    { "_int","_wxPrintQuality",0},
+    { "_int","_size_t",0},
+    { "_int","_EBool",0},
+    { "_int","_uint",0},
+    { "_int","_wxWindowID",0},
+    { "_int","_unsigned_int",0},
+    { "_int","_signed_int",0},
+    { "_wxSize","_class_wxSize",0},
+    { "_wxRegionIterator","_class_wxRegionIterator",0},
+    { "_class_wxPrinterDC","_wxPrinterDC",0},
+    { "_class_wxPaintDC","_wxPaintDC",0},
+    { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxIcon","_wxIcon",0},
+    { "_class_wxColour","_wxColour",0},
+    { "_class_wxScreenDC","_wxScreenDC",0},
+    { "_wxPalette","_class_wxPalette",0},
+    { "_wxRegion","_class_wxRegion",0},
+    { "_class_wxClientDC","_wxClientDC",0},
+    { "_class_wxSize","_wxSize",0},
+    { "_class_wxBitmap","_class_wxCursor",SwigwxCursorTowxBitmap},
+    { "_class_wxBitmap","_wxCursor",SwigwxCursorTowxBitmap},
+    { "_class_wxBitmap","_class_wxIcon",SwigwxIconTowxBitmap},
+    { "_class_wxBitmap","_wxIcon",SwigwxIconTowxBitmap},
+    { "_class_wxBitmap","_wxBitmap",0},
+    { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxDash","_unsigned_long",0},
+    { "_wxDash","_long",0},
+    { "_class_wxPalette","_wxPalette",0},
+{0,0,0}};
+
 static PyObject *SWIG_globals;
 #ifdef __cplusplus
 extern "C" 
 #endif
-SWIGEXPORT(void,initgdic)() {
+SWIGEXPORT(void) initgdic() {
         PyObject *m, *d;
         SWIG_globals = SWIG_newvarlink();
         m = Py_InitModule("gdic", gdicMethods);
@@ -5762,146 +7157,9 @@ SWIGEXPORT(void,initgdic)() {
         PyDict_SetItemString(d,"wxIMAGE_LIST_NORMAL", PyInt_FromLong((long) wxIMAGE_LIST_NORMAL));
         PyDict_SetItemString(d,"wxIMAGE_LIST_SMALL", PyInt_FromLong((long) wxIMAGE_LIST_SMALL));
         PyDict_SetItemString(d,"wxIMAGE_LIST_STATE", PyInt_FromLong((long) wxIMAGE_LIST_STATE));
-/*
- * These are the pointer type-equivalency mappings. 
- * (Used by the SWIG pointer type-checker).
- */
-        SWIG_RegisterMapping("_wxAcceleratorTable","_class_wxAcceleratorTable",0);
-        SWIG_RegisterMapping("_signed_long","_long",0);
-        SWIG_RegisterMapping("_class_wxRegionIterator","_wxRegionIterator",0);
-        SWIG_RegisterMapping("_wxIndividualLayoutConstraint","_class_wxIndividualLayoutConstraint",0);
-        SWIG_RegisterMapping("_wxCursor","_class_wxCursor",0);
-        SWIG_RegisterMapping("_wxToolTip","_class_wxToolTip",0);
-        SWIG_RegisterMapping("_wxMask","_class_wxMask",0);
-        SWIG_RegisterMapping("_wxPen","_class_wxPen",0);
-        SWIG_RegisterMapping("_byte","_unsigned_char",0);
-        SWIG_RegisterMapping("_long","_wxDash",0);
-        SWIG_RegisterMapping("_long","_unsigned_long",0);
-        SWIG_RegisterMapping("_long","_signed_long",0);
-        SWIG_RegisterMapping("_wxImageList","_class_wxImageList",0);
-        SWIG_RegisterMapping("_class_wxAcceleratorTable","_wxAcceleratorTable",0);
-        SWIG_RegisterMapping("_wxDC","_class_wxMetaFileDC",SwigwxMetaFileDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxMetaFileDC",SwigwxMetaFileDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxPrinterDC",SwigwxPrinterDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxPrinterDC",SwigwxPrinterDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxWindowDC",SwigwxWindowDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxWindowDC",SwigwxWindowDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxPaintDC",SwigwxPaintDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxPaintDC",SwigwxPaintDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxClientDC",SwigwxClientDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxClientDC",SwigwxClientDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxScreenDC",SwigwxScreenDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxScreenDC",SwigwxScreenDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxMemoryDC",SwigwxMemoryDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_wxMemoryDC",SwigwxMemoryDCTowxDC);
-        SWIG_RegisterMapping("_wxDC","_class_wxDC",0);
-        SWIG_RegisterMapping("_class_wxRealPoint","_wxRealPoint",0);
-        SWIG_RegisterMapping("_wxPrinterDC","_class_wxPrinterDC",0);
-        SWIG_RegisterMapping("_class_wxToolTip","_wxToolTip",0);
-        SWIG_RegisterMapping("_class_wxMask","_wxMask",0);
-        SWIG_RegisterMapping("_wxColour","_class_wxColour",0);
-        SWIG_RegisterMapping("_wxBrush","_class_wxBrush",0);
-        SWIG_RegisterMapping("_uint","_unsigned_int",0);
-        SWIG_RegisterMapping("_uint","_int",0);
-        SWIG_RegisterMapping("_uint","_wxWindowID",0);
-        SWIG_RegisterMapping("_wxRect","_class_wxRect",0);
-        SWIG_RegisterMapping("_wxPoint","_class_wxPoint",0);
-        SWIG_RegisterMapping("_wxBitmap","_class_wxCursor",SwigwxCursorTowxBitmap);
-        SWIG_RegisterMapping("_wxBitmap","_wxCursor",SwigwxCursorTowxBitmap);
-        SWIG_RegisterMapping("_wxBitmap","_class_wxIcon",SwigwxIconTowxBitmap);
-        SWIG_RegisterMapping("_wxBitmap","_wxIcon",SwigwxIconTowxBitmap);
-        SWIG_RegisterMapping("_wxBitmap","_class_wxBitmap",0);
-        SWIG_RegisterMapping("_wxPyTimer","_class_wxPyTimer",0);
-        SWIG_RegisterMapping("_wxWindowDC","_class_wxWindowDC",0);
-        SWIG_RegisterMapping("_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0);
-        SWIG_RegisterMapping("_EBool","_signed_int",0);
-        SWIG_RegisterMapping("_EBool","_int",0);
-        SWIG_RegisterMapping("_EBool","_wxWindowID",0);
-        SWIG_RegisterMapping("_class_wxRegion","_wxRegion",0);
-        SWIG_RegisterMapping("_wxFont","_class_wxFont",0);
-        SWIG_RegisterMapping("_unsigned_long","_wxDash",0);
-        SWIG_RegisterMapping("_unsigned_long","_long",0);
-        SWIG_RegisterMapping("_class_wxRect","_wxRect",0);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxMetaFileDC",SwigwxMetaFileDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxMetaFileDC",SwigwxMetaFileDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxPrinterDC",SwigwxPrinterDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxPrinterDC",SwigwxPrinterDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxWindowDC",SwigwxWindowDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxWindowDC",SwigwxWindowDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxPaintDC",SwigwxPaintDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxPaintDC",SwigwxPaintDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxClientDC",SwigwxClientDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxClientDC",SwigwxClientDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxScreenDC",SwigwxScreenDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxScreenDC",SwigwxScreenDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_class_wxMemoryDC",SwigwxMemoryDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxMemoryDC",SwigwxMemoryDCTowxDC);
-        SWIG_RegisterMapping("_class_wxDC","_wxDC",0);
-        SWIG_RegisterMapping("_class_wxPyTimer","_wxPyTimer",0);
-        SWIG_RegisterMapping("_wxAcceleratorEntry","_class_wxAcceleratorEntry",0);
-        SWIG_RegisterMapping("_signed_int","_EBool",0);
-        SWIG_RegisterMapping("_signed_int","_wxWindowID",0);
-        SWIG_RegisterMapping("_signed_int","_int",0);
-        SWIG_RegisterMapping("_wxLayoutConstraints","_class_wxLayoutConstraints",0);
-        SWIG_RegisterMapping("_wxMetaFileDC","_class_wxMetaFileDC",0);
-        SWIG_RegisterMapping("_wxScreenDC","_class_wxScreenDC",0);
-        SWIG_RegisterMapping("_WXTYPE","_short",0);
-        SWIG_RegisterMapping("_WXTYPE","_signed_short",0);
-        SWIG_RegisterMapping("_WXTYPE","_unsigned_short",0);
-        SWIG_RegisterMapping("_class_wxBrush","_wxBrush",0);
-        SWIG_RegisterMapping("_unsigned_short","_WXTYPE",0);
-        SWIG_RegisterMapping("_unsigned_short","_short",0);
-        SWIG_RegisterMapping("_class_wxFont","_wxFont",0);
-        SWIG_RegisterMapping("_wxClientDC","_class_wxClientDC",0);
-        SWIG_RegisterMapping("_class_wxPoint","_wxPoint",0);
-        SWIG_RegisterMapping("_wxRealPoint","_class_wxRealPoint",0);
-        SWIG_RegisterMapping("_signed_short","_WXTYPE",0);
-        SWIG_RegisterMapping("_signed_short","_short",0);
-        SWIG_RegisterMapping("_wxMemoryDC","_class_wxMemoryDC",0);
-        SWIG_RegisterMapping("_wxPaintDC","_class_wxPaintDC",0);
-        SWIG_RegisterMapping("_class_wxWindowDC","_wxWindowDC",0);
-        SWIG_RegisterMapping("_class_wxAcceleratorEntry","_wxAcceleratorEntry",0);
-        SWIG_RegisterMapping("_class_wxCursor","_wxCursor",0);
-        SWIG_RegisterMapping("_unsigned_char","_byte",0);
-        SWIG_RegisterMapping("_class_wxMetaFileDC","_wxMetaFileDC",0);
-        SWIG_RegisterMapping("_unsigned_int","_uint",0);
-        SWIG_RegisterMapping("_unsigned_int","_wxWindowID",0);
-        SWIG_RegisterMapping("_unsigned_int","_int",0);
-        SWIG_RegisterMapping("_wxIcon","_class_wxIcon",0);
-        SWIG_RegisterMapping("_class_wxPen","_wxPen",0);
-        SWIG_RegisterMapping("_short","_WXTYPE",0);
-        SWIG_RegisterMapping("_short","_unsigned_short",0);
-        SWIG_RegisterMapping("_short","_signed_short",0);
-        SWIG_RegisterMapping("_class_wxImageList","_wxImageList",0);
-        SWIG_RegisterMapping("_wxWindowID","_EBool",0);
-        SWIG_RegisterMapping("_wxWindowID","_uint",0);
-        SWIG_RegisterMapping("_wxWindowID","_int",0);
-        SWIG_RegisterMapping("_wxWindowID","_signed_int",0);
-        SWIG_RegisterMapping("_wxWindowID","_unsigned_int",0);
-        SWIG_RegisterMapping("_int","_EBool",0);
-        SWIG_RegisterMapping("_int","_uint",0);
-        SWIG_RegisterMapping("_int","_wxWindowID",0);
-        SWIG_RegisterMapping("_int","_unsigned_int",0);
-        SWIG_RegisterMapping("_int","_signed_int",0);
-        SWIG_RegisterMapping("_wxSize","_class_wxSize",0);
-        SWIG_RegisterMapping("_wxRegionIterator","_class_wxRegionIterator",0);
-        SWIG_RegisterMapping("_class_wxPrinterDC","_wxPrinterDC",0);
-        SWIG_RegisterMapping("_class_wxPaintDC","_wxPaintDC",0);
-        SWIG_RegisterMapping("_class_wxLayoutConstraints","_wxLayoutConstraints",0);
-        SWIG_RegisterMapping("_class_wxIcon","_wxIcon",0);
-        SWIG_RegisterMapping("_class_wxColour","_wxColour",0);
-        SWIG_RegisterMapping("_class_wxScreenDC","_wxScreenDC",0);
-        SWIG_RegisterMapping("_wxPalette","_class_wxPalette",0);
-        SWIG_RegisterMapping("_wxRegion","_class_wxRegion",0);
-        SWIG_RegisterMapping("_class_wxClientDC","_wxClientDC",0);
-        SWIG_RegisterMapping("_class_wxSize","_wxSize",0);
-        SWIG_RegisterMapping("_class_wxBitmap","_class_wxCursor",SwigwxCursorTowxBitmap);
-        SWIG_RegisterMapping("_class_wxBitmap","_wxCursor",SwigwxCursorTowxBitmap);
-        SWIG_RegisterMapping("_class_wxBitmap","_class_wxIcon",SwigwxIconTowxBitmap);
-        SWIG_RegisterMapping("_class_wxBitmap","_wxIcon",SwigwxIconTowxBitmap);
-        SWIG_RegisterMapping("_class_wxBitmap","_wxBitmap",0);
-        SWIG_RegisterMapping("_class_wxMemoryDC","_wxMemoryDC",0);
-        SWIG_RegisterMapping("_wxDash","_unsigned_long",0);
-        SWIG_RegisterMapping("_wxDash","_long",0);
-        SWIG_RegisterMapping("_class_wxPalette","_wxPalette",0);
+{
+   int i;
+   for (i = 0; _swig_mapping[i].n1; i++)
+        SWIG_RegisterMapping(_swig_mapping[i].n1,_swig_mapping[i].n2,_swig_mapping[i].pcnv);
+}
 }