From b96c7a38a84ff9f6dfecd3885fba1971d30b9c0b Mon Sep 17 00:00:00 2001
From: Robin Dunn <robin@alldunn.com>
Date: Tue, 26 Mar 2002 21:55:33 +0000
Subject: [PATCH] Updates to match recent CVS changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14810 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 wxPython/CHANGES.txt               |  62 ++--
 wxPython/b.bat                     |   4 +-
 wxPython/demo/wxCalendarCtrl.py    |  11 +-
 wxPython/demo/wxDialog.py          |   2 +-
 wxPython/demo/wxTimer.py           |  19 +-
 wxPython/distrib/make_installer.py |  11 +-
 wxPython/setup.py                  |   6 +-
 wxPython/src/__version__.py        |   2 +-
 wxPython/src/_defs.i               |   6 +-
 wxPython/src/image.i               |  22 +-
 wxPython/src/misc2.i               |   9 +-
 wxPython/src/msw/image.cpp         | 105 ++++---
 wxPython/src/msw/image.py          |  12 +-
 wxPython/src/msw/misc2.cpp         |   7 +-
 wxPython/src/msw/misc2.py          |   3 +
 wxPython/src/msw/stattool.cpp      | 443 +++++++++++++++++++++++------
 wxPython/src/msw/stattool.py       |   9 +
 wxPython/src/msw/wx.cpp            |  36 +--
 wxPython/src/msw/wx.py             |   8 +-
 wxPython/src/stattool.i            | 118 +++++---
 wxPython/src/wx.i                  |   2 -
 wxPython/wxPython/.cvsignore       |   3 +-
 22 files changed, 649 insertions(+), 251 deletions(-)

diff --git a/wxPython/CHANGES.txt b/wxPython/CHANGES.txt
index 5183ee0e53..623386fb63 100644
--- a/wxPython/CHANGES.txt
+++ b/wxPython/CHANGES.txt
@@ -34,29 +34,45 @@ Added wxBufferedDC.
 
 Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45
 
-***---***---***---***---***---***---***---***---***---***---***---
-    UNICODE!
-
-    wxWindows and wxPython can be compiled with unicode support
-    enabled or disabled.  Previous to wxPython 2.3.3 non-unicode mode
-    was always used.  Starting with 2.3.3 either mode is supported,
-    but only if it is also available in wxWindow on the platform.
-    Currently wxWindows only supports unicode on MS Windows platforms,
-    but with the recent release of GTK+ 2.0 it is only a matter of
-    time until it can be done on wxGTK (Linux and other unixes) as
-    well.
-
-    When unicode is enabled, then all functions and methods in
-    wxPython that return a wxString from the C++ function will return
-    a Python unicode object, and parameters to C++ functions/methods
-    that expect a wxString can accept either a Python string or
-    unicode object.  If a string object is passed then it will be
-    decoded into unicode using the converter pointed to by
-    wxConvCurrent, which will use the default system encoding.  If you
-    need to use a string in some other encoding then you should
-    convert it to unicode using the Python codecs first and then pass
-    the unicode to the wxPython method.
-***---***---***---***---***---***---***---***---***---***---***---
+UNICODE!
+
+    wxWindows/wxPython can be compiled with unicode support enabled or
+    disabled.  Previous to wxPython 2.3.3 non-unicode mode was always
+    used.  Starting with 2.3.3 either mode is supported, but only if
+    it is also available in wxWindow on the platform.  Currently
+    wxWindows only supports unicode on MS Windows platforms, but with
+    the recent release of GTK+ 2.0 it is only a matter of time until
+    it can be done on wxGTK (Linux and other unixes) as well.
+
+    Unicode works best on platforms in the NT branch of the Windows
+    family tree (NT, win2k, XP) but it is now also possible to use the
+    same unicode binaries on win95/98/ME platforms as well!  This is
+    done by using a special library and DLL in the application called
+    MSLU, (Microsoft Layer for Unicode).  It simply gets out of the
+    way if the app is run on an NT box, or if run on a win9x box it
+    loads a special DLL that provides the unicode versions of the
+    windows API.  So far I have not been able to get this to work on
+    win9x with the stock python.exe and pythonw.exe executables.
+    Instead I've had to rebuild the Python loaders linked with this
+    MSLU library from Microsoft.  I'd like to find a way to build
+    wxWindows/wxPython such that this is not needed...
+
+    So how do you use it?  It's very simple.  When unicode is enabled,
+    then all functions and methods in wxPython that return a wxString
+    from the C++ function will return a Python unicode object, and
+    parameters to C++ functions/methods that expect a wxString can
+    accept either a Python string or unicode object.  If a string
+    object is passed then it will be decoded into unicode using the
+    converter pointed to by wxConvCurrent, which will use the default
+    system encoding.  If you need to use a string in some other
+    encoding then you should convert it to unicode using the Python
+    codecs first and then pass the unicode string to the wxPython
+    method.
+
+
+Bad news: The API for adding tools to toolbars has changed again.
+Good news: Toolbar tools can now have labels!
+
 
 
 
diff --git a/wxPython/b.bat b/wxPython/b.bat
index bac1570059..2fd5dedc5c 100755
--- a/wxPython/b.bat
+++ b/wxPython/b.bat
@@ -26,7 +26,7 @@ set SETUP=%PYTHON% -u setup.py
 rem "c" --> clean
 iff "%1" == "c" then
 	shift
-	set CMD=%SETUP% %FLAGS% clean
+	set CMD=%SETUP% %FLAGS% clean %1 %2 %3 %4 %5 %6 %7 %8 %9
 	set OTHERCMD=del wxPython\*.pyd
 
 rem just remove the *.pyd's
@@ -48,7 +48,7 @@ elseiff "%1" == "i" then
 rem "r" --> make installer
 elseiff "%1" == "r" then
 	shift
-	set CMD=%PYTHON% distrib\make_installer.py
+	set CMD=%PYTHON% distrib\make_installer.py %1 %2 %3 %4 %5 %6 %7 %8 %9
 
 rem "s" --> source dist
 elseiff "%1" == "s" then
diff --git a/wxPython/demo/wxCalendarCtrl.py b/wxPython/demo/wxCalendarCtrl.py
index b38be582b4..02c771ad33 100644
--- a/wxPython/demo/wxCalendarCtrl.py
+++ b/wxPython/demo/wxCalendarCtrl.py
@@ -10,11 +10,18 @@ class TestPanel(wxPanel):
         wxPanel.__init__(self, parent, ID)
         self.log = log
 
-        cal = wxCalendarCtrl(self, 101, wxDateTime_Now(), pos = (25,50),
+        cal = wxCalendarCtrl(self, -1, wxDateTime_Now(), pos = (25,50),
                              style = wxCAL_SHOW_HOLIDAYS | wxCAL_SUNDAY_FIRST)
 
-        EVT_CALENDAR(self, 101, self.OnCalSelected)
+        EVT_CALENDAR(self, cal.GetId(), self.OnCalSelected)
 
+        b = wxButton(self, -1, "Destroy the Calendar", pos = (250, 50))
+        EVT_BUTTON(self, b.GetId(), self.OnButton)
+        self.cal = cal
+
+    def OnButton(self, evt):
+        self.cal.Destroy()
+        self.cal = None
 
     def OnCalSelected(self, evt):
         self.log.write('OnCalSelected: %s\n' % evt.GetDate())
diff --git a/wxPython/demo/wxDialog.py b/wxPython/demo/wxDialog.py
index a46db26119..8d614756e1 100644
--- a/wxPython/demo/wxDialog.py
+++ b/wxPython/demo/wxDialog.py
@@ -4,7 +4,7 @@ from wxPython.wx import *
 #---------------------------------------------------------------------------
 
 def runTest(frame, nb, log):
-    win = wxDialog(frame, -1, "This is a wxDialog", size=wxSize(350, 200))
+    win = wxDialog(frame, -1, "This is a wxDialog", size=wxSize(350, 200), style=wxCAPTION)
 
     sizer = wxBoxSizer(wxVERTICAL)
 
diff --git a/wxPython/demo/wxTimer.py b/wxPython/demo/wxTimer.py
index a6430ebaad..b58a628a1d 100644
--- a/wxPython/demo/wxTimer.py
+++ b/wxPython/demo/wxTimer.py
@@ -16,9 +16,10 @@ import time
 
 #---------------------------------------------------------------------------
 
-ID_Start = wxNewId()
-ID_Stop  = wxNewId()
-ID_Timer = wxNewId()
+ID_Start  = wxNewId()
+ID_Stop   = wxNewId()
+ID_Timer  = wxNewId()
+ID_Timer2 = wxNewId()
 
 class TestTimerWin(wxPanel):
     def __init__(self, parent, log):
@@ -34,22 +35,32 @@ class TestTimerWin(wxPanel):
         self.timer = wxTimer(self,      # object to send the event to
                              ID_Timer)  # event id to use
 
+        self.timer2 = wxTimer(self,      # object to send the event to
+                             ID_Timer2)  # event id to use
+
         EVT_BUTTON(self, ID_Start, self.OnStart)
         EVT_BUTTON(self, ID_Stop,  self.OnStop)
         EVT_TIMER(self,  ID_Timer, self.OnTimer)
-
+        EVT_TIMER(self,  ID_Timer2, self.OnTimer2)
 
     def OnStart(self, event):
         self.timer.Start(1000)
+        self.timer2.Start(1500)
 
     def OnStop(self, event):
         self.timer.Stop()
+        self.timer2.Stop()
 
     def OnTimer(self, event):
         wxBell()
         if self.log:
             self.log.WriteText('beep!\n')
 
+    def OnTimer2(self, event):
+        wxBell()
+        if self.log:
+            self.log.WriteText('beep 2!\n')
+
 #---------------------------------------------------------------------------
 
 def runTest(frame, nb, log):
diff --git a/wxPython/distrib/make_installer.py b/wxPython/distrib/make_installer.py
index 981b51d1bf..f8b14332ae 100644
--- a/wxPython/distrib/make_installer.py
+++ b/wxPython/distrib/make_installer.py
@@ -7,9 +7,10 @@ will be created.
 """
 
 
-import os, string
+import sys, os, string
 
 KEEP_TEMPS = 0
+ISCC = r"C:\TOOLS\InnoSetup2Ex\ISCC.exe %s"
 
 #----------------------------------------------------------------------
 
@@ -68,12 +69,12 @@ Source: "%(SYSDIR)s\MSVCRT.dll";            DestDir: "{sys}"; CopyMode: alwayssk
 Source: "%(SYSDIR)s\MSVCIRT.dll";           DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: sharedfile uninsneveruninstall restartreplace; Components: core
 
 Source: "%(WXDIR)s\lib\%(WXDLL)s";          DestDir: "{app}\wxPython"; Components: core
+;;%(MSLU)s
 Source: "wxPython\wxc.pyd";                 DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\wxc.pyd.manifest";        DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\gridc.pyd";               DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\helpc.pyd";               DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\htmlc.pyd";               DestDir: "{app}\wxPython"; Components: core
-Source: "wxPython\utilsc.pyd";              DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\calendarc.pyd";           DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\glcanvasc.pyd";           DestDir: "{app}\wxPython"; Components: core
 Source: "wxPython\oglc.pyd";                DestDir: "{app}\wxPython"; Components: core
@@ -308,6 +309,10 @@ def main():
     if string.find(WXDLL, "h") != -1:
         PYVER = PYVER + "-hybrid"
 
+    MSLU=''
+##     if len(sys.argv) > 1 and sys.argv[1] == "UNICODE=1":
+##         MSLU=r'Source: "%(WXDIR)s\lib\unicows.dll";  DestDir: "{app}\wxPython"; Components: core' % vars()
+
     f = open(ISSFILE, "w")
     f.write(ISS_Template % vars())
     f.close()
@@ -316,7 +321,7 @@ def main():
     f.write(IFS_Template % vars())
     f.close()
 
-    os.system(r"C:\TOOLS\InnoSetup2Ex\ISCC.exe %s" % ISSFILE)
+    os.system(ISCC % ISSFILE)
 
     if not KEEP_TEMPS:
         os.remove(ISSFILE)
diff --git a/wxPython/setup.py b/wxPython/setup.py
index ae094c25f0..d68ad98d98 100755
--- a/wxPython/setup.py
+++ b/wxPython/setup.py
@@ -13,7 +13,7 @@ from my_distutils import run_swig, contrib_copy_tree
 # flags and values that affect this script
 #----------------------------------------------------------------------
 
-VERSION          = "2.3.3pre"
+VERSION          = "2.3.3pre2u"
 DESCRIPTION      = "Cross platform GUI toolkit for Python"
 AUTHOR           = "Robin Dunn"
 AUTHOR_EMAIL     = "Robin Dunn <robin@alldunn.com>"
@@ -267,7 +267,7 @@ if os.name == 'nt':
 
     elif bcpp_compiling and not FINAL:
         cflags = cflags + ['/Od', '/v', '/y']
-        lflags = lflags + ['/v', ]   ## '/PDB:NONE']
+        lflags = lflags + ['/v', ]
 
 
 
@@ -365,7 +365,7 @@ if not GL_ONLY:
 
     copy_file('src/__init__.py', PKGDIR, update=1, verbose=0)
     copy_file('src/__version__.py', PKGDIR, update=1, verbose=0)
-
+    copy_file('src/wxc.pyd.manifest', PKGDIR, update=1, verbose=0)
 
     if IN_CVS_TREE:   # update the licence files
         mkpath('licence')
diff --git a/wxPython/src/__version__.py b/wxPython/src/__version__.py
index 31b847682e..eb749d7dc6 100644
--- a/wxPython/src/__version__.py
+++ b/wxPython/src/__version__.py
@@ -1 +1 @@
-ver = '2.3.3pre'
+ver = '2.3.3pre2u'
diff --git a/wxPython/src/_defs.i b/wxPython/src/_defs.i
index 5b6d7a5c8d..cd4edfd161 100644
--- a/wxPython/src/_defs.i
+++ b/wxPython/src/_defs.i
@@ -233,11 +233,15 @@ enum {
 
     wxRETAINED,
     wxBACKINGSTORE,
-    wxTB_3DBUTTONS,
+
     wxTB_HORIZONTAL,
     wxTB_VERTICAL,
+    wxTB_3DBUTTONS,
     wxTB_FLAT,
     wxTB_DOCKABLE,
+    wxTB_NOICONS,
+    wxTB_TEXT,
+
     wxCOLOURED,
     wxFIXED_LENGTH,
     wxALIGN_LEFT,
diff --git a/wxPython/src/image.i b/wxPython/src/image.i
index ba3f7ecb15..c38b899a59 100644
--- a/wxPython/src/image.i
+++ b/wxPython/src/image.i
@@ -116,10 +116,6 @@ public:
     wxImage( const wxString& name, long type = wxBITMAP_TYPE_ANY, int index = -1 );
     ~wxImage();
 
-    wxBitmap ConvertToBitmap(); // deprecated
-#ifdef __WXGTK__
-    wxBitmap ConvertToMonoBitmap( unsigned char red, unsigned char green, unsigned char blue ) const;
-#endif
     void Create( int width, int height );
     void Destroy();
 
@@ -207,6 +203,22 @@ public:
     static void AddHandler( wxImageHandler *handler );
     static void InsertHandler( wxImageHandler *handler );
     static bool RemoveHandler( const wxString& name );
+
+
+    %addmethods {
+        wxBitmap ConvertToBitmap() {
+            wxBitmap bitmap(*self);
+            return bitmap;
+        }
+
+        wxBitmap ConvertToMonoBitmap( unsigned char red,
+                                      unsigned char green,
+                                      unsigned char blue ) {
+            wxImage mono = self->ConvertToMono( red, green, blue );
+            wxBitmap bitmap( mono, 1 );
+            return bitmap;
+        }
+    }
 };
 
 
@@ -233,7 +245,7 @@ public:
 
 
     wxImage* wxImageFromBitmap(const wxBitmap &bitmap) {
-        return new wxImage(bitmap);
+        return new wxImage(bitmap.ConvertToImage());
     }
 
 
diff --git a/wxPython/src/misc2.i b/wxPython/src/misc2.i
index f174454e57..1b32485f91 100644
--- a/wxPython/src/misc2.i
+++ b/wxPython/src/misc2.i
@@ -806,9 +806,16 @@ public:
 };
 
 
+enum {
+    wxEXEC_ASYNC    = 0,    // execute the process asynchronously
+    wxEXEC_SYNC     = 1,    //                     synchronously
+    wxEXEC_NOHIDE   = 2     // under Windows, don't hide the child even if it's
+                            // IO is redirected (this is done by default)
+};
+
 
 long wxExecute(const wxString& command,
-               int sync = FALSE,
+               int flags = wxEXEC_ASYNC,
                wxPyProcess *process = NULL);
 
 //----------------------------------------------------------------------
diff --git a/wxPython/src/msw/image.cpp b/wxPython/src/msw/image.cpp
index c36af8933e..ef61408063 100644
--- a/wxPython/src/msw/image.cpp
+++ b/wxPython/src/msw/image.cpp
@@ -100,7 +100,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) {
 
 
     wxImage* wxImageFromBitmap(const wxBitmap &bitmap) {
-        return new wxImage(bitmap);
+        return new wxImage(bitmap.ConvertToImage());
     }
 
 
@@ -1333,36 +1333,6 @@ static PyObject *_wrap_delete_wxImage(PyObject *self, PyObject *args, PyObject *
     return _resultobj;
 }
 
-#define wxImage_ConvertToBitmap(_swigobj)  (_swigobj->ConvertToBitmap())
-static PyObject *_wrap_wxImage_ConvertToBitmap(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    wxBitmap * _result;
-    wxImage * _arg0;
-    PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxImage_ConvertToBitmap",_kwnames,&_argo0)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImage_ConvertToBitmap. Expected _wxImage_p.");
-        return NULL;
-        }
-    }
-{
-    PyThreadState* __tstate = wxPyBeginAllowThreads();
-    _result = new wxBitmap (wxImage_ConvertToBitmap(_arg0));
-
-    wxPyEndAllowThreads(__tstate);
-    if (PyErr_Occurred()) return NULL;
-}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
-    return _resultobj;
-}
-
 #define wxImage_Create(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Create(_swigarg0,_swigarg1))
 static PyObject *_wrap_wxImage_Create(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -2962,7 +2932,79 @@ static PyObject *_wrap_wxImage_RemoveHandler(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
+static wxBitmap  wxImage_ConvertToBitmap(wxImage *self) {
+            wxBitmap bitmap(*self);
+            return bitmap;
+        }
+static PyObject *_wrap_wxImage_ConvertToBitmap(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxBitmap * _result;
+    wxImage * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxImage_ConvertToBitmap",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImage_ConvertToBitmap. Expected _wxImage_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = new wxBitmap (wxImage_ConvertToBitmap(_arg0));
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p");
+    _resultobj = Py_BuildValue("s",_ptemp);
+    return _resultobj;
+}
+
+static wxBitmap  wxImage_ConvertToMonoBitmap(wxImage *self,unsigned char  red,unsigned char  green,unsigned char  blue) {
+            wxImage mono = self->ConvertToMono( red, green, blue );
+            wxBitmap bitmap( mono, 1 );
+            return bitmap;
+        }
+static PyObject *_wrap_wxImage_ConvertToMonoBitmap(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxBitmap * _result;
+    wxImage * _arg0;
+    unsigned char  _arg1;
+    unsigned char  _arg2;
+    unsigned char  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","red","green","blue", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Obbb:wxImage_ConvertToMonoBitmap",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImage_ConvertToMonoBitmap. Expected _wxImage_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = new wxBitmap (wxImage_ConvertToMonoBitmap(_arg0,_arg1,_arg2,_arg3));
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p");
+    _resultobj = Py_BuildValue("s",_ptemp);
+    return _resultobj;
+}
+
 static PyMethodDef imagecMethods[] = {
+	 { "wxImage_ConvertToMonoBitmap", (PyCFunction) _wrap_wxImage_ConvertToMonoBitmap, METH_VARARGS | METH_KEYWORDS },
+	 { "wxImage_ConvertToBitmap", (PyCFunction) _wrap_wxImage_ConvertToBitmap, METH_VARARGS | METH_KEYWORDS },
 	 { "wxImage_RemoveHandler", (PyCFunction) _wrap_wxImage_RemoveHandler, METH_VARARGS | METH_KEYWORDS },
 	 { "wxImage_InsertHandler", (PyCFunction) _wrap_wxImage_InsertHandler, METH_VARARGS | METH_KEYWORDS },
 	 { "wxImage_AddHandler", (PyCFunction) _wrap_wxImage_AddHandler, METH_VARARGS | METH_KEYWORDS },
@@ -3008,7 +3050,6 @@ static PyMethodDef imagecMethods[] = {
 	 { "wxImage_Scale", (PyCFunction) _wrap_wxImage_Scale, METH_VARARGS | METH_KEYWORDS },
 	 { "wxImage_Destroy", (PyCFunction) _wrap_wxImage_Destroy, METH_VARARGS | METH_KEYWORDS },
 	 { "wxImage_Create", (PyCFunction) _wrap_wxImage_Create, METH_VARARGS | METH_KEYWORDS },
-	 { "wxImage_ConvertToBitmap", (PyCFunction) _wrap_wxImage_ConvertToBitmap, METH_VARARGS | METH_KEYWORDS },
 	 { "delete_wxImage", (PyCFunction) _wrap_delete_wxImage, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxImage", (PyCFunction) _wrap_new_wxImage, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxTIFFHandler", (PyCFunction) _wrap_new_wxTIFFHandler, METH_VARARGS | METH_KEYWORDS },
diff --git a/wxPython/src/msw/image.py b/wxPython/src/msw/image.py
index f725822176..8f88163842 100644
--- a/wxPython/src/msw/image.py
+++ b/wxPython/src/msw/image.py
@@ -193,10 +193,6 @@ class wxImagePtr(wxObjectPtr):
     def __del__(self,imagec=imagec):
         if self.thisown == 1 :
             imagec.delete_wxImage(self)
-    def ConvertToBitmap(self, *_args, **_kwargs):
-        val = apply(imagec.wxImage_ConvertToBitmap,(self,) + _args, _kwargs)
-        if val: val = wxBitmapPtr(val) ; val.thisown = 1
-        return val
     def Create(self, *_args, **_kwargs):
         val = apply(imagec.wxImage_Create,(self,) + _args, _kwargs)
         return val
@@ -322,6 +318,14 @@ class wxImagePtr(wxObjectPtr):
     def CountColours(self, *_args, **_kwargs):
         val = apply(imagec.wxImage_CountColours,(self,) + _args, _kwargs)
         return val
+    def ConvertToBitmap(self, *_args, **_kwargs):
+        val = apply(imagec.wxImage_ConvertToBitmap,(self,) + _args, _kwargs)
+        if val: val = wxBitmapPtr(val) ; val.thisown = 1
+        return val
+    def ConvertToMonoBitmap(self, *_args, **_kwargs):
+        val = apply(imagec.wxImage_ConvertToMonoBitmap,(self,) + _args, _kwargs)
+        if val: val = wxBitmapPtr(val) ; val.thisown = 1
+        return val
     def __repr__(self):
         return "<C wxImage instance at %s>" % (self.this,)
 class wxImage(wxImagePtr):
diff --git a/wxPython/src/msw/misc2.cpp b/wxPython/src/msw/misc2.cpp
index b2a2447034..11b2ab8172 100644
--- a/wxPython/src/msw/misc2.cpp
+++ b/wxPython/src/msw/misc2.cpp
@@ -2247,11 +2247,11 @@ static PyObject *_wrap_wxExecute(PyObject *self, PyObject *args, PyObject *kwarg
     PyObject * _resultobj;
     long  _result;
     wxString * _arg0;
-    int  _arg1 = (int ) FALSE;
+    int  _arg1 = (int ) (wxEXEC_ASYNC);
     wxPyProcess * _arg2 = (wxPyProcess *) NULL;
     PyObject * _obj0 = 0;
     PyObject * _argo2 = 0;
-    char *_kwnames[] = { "command","sync","process", NULL };
+    char *_kwnames[] = { "command","flags","process", NULL };
 
     self = self;
     if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iO:wxExecute",_kwnames,&_obj0,&_arg1,&_argo2)) 
@@ -10558,6 +10558,9 @@ SWIGEXPORT(void) initmisc2c() {
 	 PyDict_SetItemString(d,"wxLOG_Progress", PyInt_FromLong((long) wxLOG_Progress));
 	 PyDict_SetItemString(d,"wxLOG_User", PyInt_FromLong((long) wxLOG_User));
 	 PyDict_SetItemString(d,"wxEVT_END_PROCESS", PyInt_FromLong((long) wxEVT_END_PROCESS));
+	 PyDict_SetItemString(d,"wxEXEC_ASYNC", PyInt_FromLong((long) wxEXEC_ASYNC));
+	 PyDict_SetItemString(d,"wxEXEC_SYNC", PyInt_FromLong((long) wxEXEC_SYNC));
+	 PyDict_SetItemString(d,"wxEXEC_NOHIDE", PyInt_FromLong((long) wxEXEC_NOHIDE));
 	 PyDict_SetItemString(d,"wxMAILCAP_STANDARD", PyInt_FromLong((long) wxMAILCAP_STANDARD));
 	 PyDict_SetItemString(d,"wxMAILCAP_NETSCAPE", PyInt_FromLong((long) wxMAILCAP_NETSCAPE));
 	 PyDict_SetItemString(d,"wxMAILCAP_KDE", PyInt_FromLong((long) wxMAILCAP_KDE));
diff --git a/wxPython/src/msw/misc2.py b/wxPython/src/msw/misc2.py
index 3d7239666a..b45015ede5 100644
--- a/wxPython/src/msw/misc2.py
+++ b/wxPython/src/msw/misc2.py
@@ -1306,6 +1306,9 @@ wxLOG_Trace = misc2c.wxLOG_Trace
 wxLOG_Progress = misc2c.wxLOG_Progress
 wxLOG_User = misc2c.wxLOG_User
 wxEVT_END_PROCESS = misc2c.wxEVT_END_PROCESS
+wxEXEC_ASYNC = misc2c.wxEXEC_ASYNC
+wxEXEC_SYNC = misc2c.wxEXEC_SYNC
+wxEXEC_NOHIDE = misc2c.wxEXEC_NOHIDE
 wxMAILCAP_STANDARD = misc2c.wxMAILCAP_STANDARD
 wxMAILCAP_NETSCAPE = misc2c.wxMAILCAP_NETSCAPE
 wxMAILCAP_KDE = misc2c.wxMAILCAP_KDE
diff --git a/wxPython/src/msw/stattool.cpp b/wxPython/src/msw/stattool.cpp
index bc4d3ba928..c600fd4dae 100644
--- a/wxPython/src/msw/stattool.cpp
+++ b/wxPython/src/msw/stattool.cpp
@@ -784,6 +784,34 @@ static PyObject *_wrap_wxToolBarToolBase_GetStyle(PyObject *self, PyObject *args
     return _resultobj;
 }
 
+#define wxToolBarToolBase_GetKind(_swigobj)  (_swigobj->GetKind())
+static PyObject *_wrap_wxToolBarToolBase_GetKind(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxItemKind  _result;
+    wxToolBarToolBase * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxToolBarToolBase_GetKind",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarToolBase_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarToolBase_GetKind. Expected _wxToolBarToolBase_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = (wxItemKind )wxToolBarToolBase_GetKind(_arg0);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
 #define wxToolBarToolBase_IsEnabled(_swigobj)  (_swigobj->IsEnabled())
 static PyObject *_wrap_wxToolBarToolBase_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -1533,34 +1561,36 @@ static void *SwigwxToolBarBaseTowxObject(void *ptr) {
     return (void *) dest;
 }
 
-static wxToolBarToolBase * wxToolBarBase_AddTool(wxToolBarBase *self,int  id,const wxBitmap & bitmap,const wxBitmap & pushedBitmap,int  isToggle,PyObject * clientData,const wxString & shortHelpString,const wxString & longHelpString) {
+static wxToolBarToolBase * wxToolBarBase_AddTool(wxToolBarBase *self,int  id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind  kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) {
             wxPyUserData* udata = NULL;
             if (clientData)
                 udata = new wxPyUserData(clientData);
-            return self->AddTool(id, bitmap, pushedBitmap, (bool)isToggle,
-                                 udata, shortHelpString, longHelpString);
+            return self->AddTool(id, label, bitmap, bmpDisabled, kind,
+                                 shortHelp, longHelp, udata);
         }
 static PyObject *_wrap_wxToolBarBase_AddTool(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxToolBarToolBase * _result;
     wxToolBarBase * _arg0;
     int  _arg1;
-    wxBitmap * _arg2;
-    wxBitmap * _arg3 = (wxBitmap *) &wxNullBitmap;
-    int  _arg4 = (int ) FALSE;
-    PyObject * _arg5 = (PyObject *) NULL;
+    wxString * _arg2;
+    wxBitmap * _arg3;
+    wxBitmap * _arg4;
+    wxItemKind  _arg5 = (wxItemKind ) wxITEM_NORMAL;
     wxString * _arg6 = (wxString *) &wxPyEmptyString;
     wxString * _arg7 = (wxString *) &wxPyEmptyString;
+    PyObject * _arg8 = (PyObject *) NULL;
     PyObject * _argo0 = 0;
-    PyObject * _argo2 = 0;
+    PyObject * _obj2 = 0;
     PyObject * _argo3 = 0;
-    PyObject * _obj5 = 0;
+    PyObject * _argo4 = 0;
     PyObject * _obj6 = 0;
     PyObject * _obj7 = 0;
-    char *_kwnames[] = { "self","id","bitmap","pushedBitmap","isToggle","clientData","shortHelpString","longHelpString", NULL };
+    PyObject * _obj8 = 0;
+    char *_kwnames[] = { "self","id","label","bitmap","bmpDisabled","kind","shortHelp","longHelp","clientData", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO|OiOOO:wxToolBarBase_AddTool",_kwnames,&_argo0,&_arg1,&_argo2,&_argo3,&_arg4,&_obj5,&_obj6,&_obj7)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOOO|iOOO:wxToolBarBase_AddTool",_kwnames,&_argo0,&_arg1,&_obj2,&_argo3,&_argo4,&_arg5,&_obj6,&_obj7,&_obj8)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -1569,13 +1599,11 @@ static PyObject *_wrap_wxToolBarBase_AddTool(PyObject *self, PyObject *args, PyO
         return NULL;
         }
     }
-    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 wxToolBarBase_AddTool. Expected _wxBitmap_p.");
+{
+    _arg2 = wxString_in_helper(_obj2);
+    if (_arg2 == NULL)
         return NULL;
-        }
-    }
+}
     if (_argo3) {
         if (_argo3 == Py_None) { _arg3 = NULL; }
         else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) {
@@ -1583,10 +1611,13 @@ static PyObject *_wrap_wxToolBarBase_AddTool(PyObject *self, PyObject *args, PyO
         return NULL;
         }
     }
-    if (_obj5)
-{
-  _arg5 = _obj5;
-}
+    if (_argo4) {
+        if (_argo4 == Py_None) { _arg4 = NULL; }
+        else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_AddTool. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
     if (_obj6)
 {
     _arg6 = wxString_in_helper(_obj6);
@@ -1598,14 +1629,22 @@ static PyObject *_wrap_wxToolBarBase_AddTool(PyObject *self, PyObject *args, PyO
     _arg7 = wxString_in_helper(_obj7);
     if (_arg7 == NULL)
         return NULL;
+}
+    if (_obj8)
+{
+  _arg8 = _obj8;
 }
 {
     PyThreadState* __tstate = wxPyBeginAllowThreads();
-    _result = (wxToolBarToolBase *)wxToolBarBase_AddTool(_arg0,_arg1,*_arg2,*_arg3,_arg4,_arg5,*_arg6,*_arg7);
+    _result = (wxToolBarToolBase *)wxToolBarBase_AddTool(_arg0,_arg1,*_arg2,*_arg3,*_arg4,_arg5,*_arg6,*_arg7,_arg8);
 
     wxPyEndAllowThreads(__tstate);
     if (PyErr_Occurred()) return NULL;
 }{ _resultobj = wxPyMake_wxObject(_result); }
+{
+    if (_obj2)
+        delete _arg2;
+}
 {
     if (_obj6)
         delete _arg6;
@@ -1617,27 +1656,29 @@ static PyObject *_wrap_wxToolBarBase_AddTool(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
-static wxToolBarToolBase * wxToolBarBase_AddSimpleTool(wxToolBarBase *self,int  id,const wxBitmap & bitmap,const wxString & shortHelpString,const wxString & longHelpString,int  isToggle) {
-            return self->AddTool(id, bitmap, wxNullBitmap, isToggle, NULL,
-                                 shortHelpString, longHelpString);
+static wxToolBarToolBase * wxToolBarBase_AddSimpleTool(wxToolBarBase *self,int  id,const wxString & label,const wxBitmap & bitmap,const wxString & shortHelp,const wxString & longHelp,wxItemKind  kind) {
+            return self->AddTool(id, label, bitmap, wxNullBitmap, kind,
+                                 shortHelp, longHelp, NULL);
         }
 static PyObject *_wrap_wxToolBarBase_AddSimpleTool(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxToolBarToolBase * _result;
     wxToolBarBase * _arg0;
     int  _arg1;
-    wxBitmap * _arg2;
-    wxString * _arg3 = (wxString *) &wxPyEmptyString;
+    wxString * _arg2;
+    wxBitmap * _arg3;
     wxString * _arg4 = (wxString *) &wxPyEmptyString;
-    int  _arg5 = (int ) FALSE;
+    wxString * _arg5 = (wxString *) &wxPyEmptyString;
+    wxItemKind  _arg6 = (wxItemKind ) wxITEM_NORMAL;
     PyObject * _argo0 = 0;
-    PyObject * _argo2 = 0;
-    PyObject * _obj3 = 0;
+    PyObject * _obj2 = 0;
+    PyObject * _argo3 = 0;
     PyObject * _obj4 = 0;
-    char *_kwnames[] = { "self","id","bitmap","shortHelpString","longHelpString","isToggle", NULL };
+    PyObject * _obj5 = 0;
+    char *_kwnames[] = { "self","id","label","bitmap","shortHelp","longHelp","kind", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO|OOi:wxToolBarBase_AddSimpleTool",_kwnames,&_argo0,&_arg1,&_argo2,&_obj3,&_obj4,&_arg5)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO|OOi:wxToolBarBase_AddSimpleTool",_kwnames,&_argo0,&_arg1,&_obj2,&_argo3,&_obj4,&_obj5,&_arg6)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -1646,99 +1687,299 @@ static PyObject *_wrap_wxToolBarBase_AddSimpleTool(PyObject *self, PyObject *arg
         return NULL;
         }
     }
-    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 wxToolBarBase_AddSimpleTool. Expected _wxBitmap_p.");
-        return NULL;
-        }
-    }
-    if (_obj3)
 {
-    _arg3 = wxString_in_helper(_obj3);
-    if (_arg3 == NULL)
+    _arg2 = wxString_in_helper(_obj2);
+    if (_arg2 == NULL)
         return NULL;
 }
+    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 wxToolBarBase_AddSimpleTool. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
     if (_obj4)
 {
     _arg4 = wxString_in_helper(_obj4);
     if (_arg4 == NULL)
         return NULL;
+}
+    if (_obj5)
+{
+    _arg5 = wxString_in_helper(_obj5);
+    if (_arg5 == NULL)
+        return NULL;
 }
 {
     PyThreadState* __tstate = wxPyBeginAllowThreads();
-    _result = (wxToolBarToolBase *)wxToolBarBase_AddSimpleTool(_arg0,_arg1,*_arg2,*_arg3,*_arg4,_arg5);
+    _result = (wxToolBarToolBase *)wxToolBarBase_AddSimpleTool(_arg0,_arg1,*_arg2,*_arg3,*_arg4,*_arg5,_arg6);
 
     wxPyEndAllowThreads(__tstate);
     if (PyErr_Occurred()) return NULL;
 }{ _resultobj = wxPyMake_wxObject(_result); }
 {
-    if (_obj3)
-        delete _arg3;
+    if (_obj2)
+        delete _arg2;
 }
 {
     if (_obj4)
         delete _arg4;
+}
+{
+    if (_obj5)
+        delete _arg5;
 }
     return _resultobj;
 }
 
-static wxToolBarToolBase * wxToolBarBase_InsertTool(wxToolBarBase *self,size_t  pos,int  id,const wxBitmap & bitmap,const wxBitmap & pushedBitmap,int  isToggle,PyObject * clientData,const wxString & shortHelpString,const wxString & longHelpString) {
+static wxToolBarToolBase * wxToolBarBase_AddCheckTool(wxToolBarBase *self,int  id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) {
             wxPyUserData* udata = NULL;
             if (clientData)
                 udata = new wxPyUserData(clientData);
-            return self->InsertTool(pos, id, bitmap, pushedBitmap, (bool)isToggle,
-                                    udata, shortHelpString, longHelpString);
+            return self->AddCheckTool(id, label, bitmap, bmpDisabled,
+                                      shortHelp, longHelp, udata);
         }
-static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, PyObject *kwargs) {
+static PyObject *_wrap_wxToolBarBase_AddCheckTool(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxToolBarToolBase * _result;
     wxToolBarBase * _arg0;
-    size_t  _arg1;
-    int  _arg2;
+    int  _arg1;
+    wxString * _arg2;
     wxBitmap * _arg3;
     wxBitmap * _arg4 = (wxBitmap *) &wxNullBitmap;
-    int  _arg5 = (int ) FALSE;
-    PyObject * _arg6 = (PyObject *) NULL;
-    wxString * _arg7 = (wxString *) &wxPyEmptyString;
-    wxString * _arg8 = (wxString *) &wxPyEmptyString;
+    wxString * _arg5 = (wxString *) &wxEmptyString;
+    wxString * _arg6 = (wxString *) &wxEmptyString;
+    PyObject * _arg7 = (PyObject *) NULL;
     PyObject * _argo0 = 0;
+    PyObject * _obj2 = 0;
     PyObject * _argo3 = 0;
     PyObject * _argo4 = 0;
+    PyObject * _obj5 = 0;
     PyObject * _obj6 = 0;
     PyObject * _obj7 = 0;
-    PyObject * _obj8 = 0;
-    char *_kwnames[] = { "self","pos","id","bitmap","pushedBitmap","isToggle","clientData","shortHelpString","longHelpString", NULL };
+    char *_kwnames[] = { "self","id","label","bitmap","bmpDisabled","shortHelp","longHelp","clientData", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiO|OiOOO:wxToolBarBase_InsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_argo3,&_argo4,&_arg5,&_obj6,&_obj7,&_obj8)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO|OOOO:wxToolBarBase_AddCheckTool",_kwnames,&_argo0,&_arg1,&_obj2,&_argo3,&_argo4,&_obj5,&_obj6,&_obj7)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarBase_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_InsertTool. Expected _wxToolBarBase_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_AddCheckTool. Expected _wxToolBarBase_p.");
         return NULL;
         }
     }
+{
+    _arg2 = wxString_in_helper(_obj2);
+    if (_arg2 == NULL)
+        return NULL;
+}
     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 wxToolBarBase_InsertTool. Expected _wxBitmap_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxToolBarBase_AddCheckTool. Expected _wxBitmap_p.");
         return NULL;
         }
     }
     if (_argo4) {
         if (_argo4 == Py_None) { _arg4 = NULL; }
         else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_InsertTool. Expected _wxBitmap_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_AddCheckTool. Expected _wxBitmap_p.");
         return NULL;
         }
     }
+    if (_obj5)
+{
+    _arg5 = wxString_in_helper(_obj5);
+    if (_arg5 == NULL)
+        return NULL;
+}
     if (_obj6)
 {
-  _arg6 = _obj6;
+    _arg6 = wxString_in_helper(_obj6);
+    if (_arg6 == NULL)
+        return NULL;
 }
     if (_obj7)
+{
+  _arg7 = _obj7;
+}
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = (wxToolBarToolBase *)wxToolBarBase_AddCheckTool(_arg0,_arg1,*_arg2,*_arg3,*_arg4,*_arg5,*_arg6,_arg7);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}{ _resultobj = wxPyMake_wxObject(_result); }
+{
+    if (_obj2)
+        delete _arg2;
+}
+{
+    if (_obj5)
+        delete _arg5;
+}
+{
+    if (_obj6)
+        delete _arg6;
+}
+    return _resultobj;
+}
+
+static wxToolBarToolBase * wxToolBarBase_AddRadioTool(wxToolBarBase *self,int  id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) {
+            wxPyUserData* udata = NULL;
+            if (clientData)
+                udata = new wxPyUserData(clientData);
+            return self->AddRadioTool(id, label, bitmap, bmpDisabled,
+                                      shortHelp, longHelp, udata);
+        }
+static PyObject *_wrap_wxToolBarBase_AddRadioTool(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxToolBarToolBase * _result;
+    wxToolBarBase * _arg0;
+    int  _arg1;
+    wxString * _arg2;
+    wxBitmap * _arg3;
+    wxBitmap * _arg4 = (wxBitmap *) &wxNullBitmap;
+    wxString * _arg5 = (wxString *) &wxEmptyString;
+    wxString * _arg6 = (wxString *) &wxEmptyString;
+    PyObject * _arg7 = (PyObject *) NULL;
+    PyObject * _argo0 = 0;
+    PyObject * _obj2 = 0;
+    PyObject * _argo3 = 0;
+    PyObject * _argo4 = 0;
+    PyObject * _obj5 = 0;
+    PyObject * _obj6 = 0;
+    PyObject * _obj7 = 0;
+    char *_kwnames[] = { "self","id","label","bitmap","bmpDisabled","shortHelp","longHelp","clientData", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO|OOOO:wxToolBarBase_AddRadioTool",_kwnames,&_argo0,&_arg1,&_obj2,&_argo3,&_argo4,&_obj5,&_obj6,&_obj7)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarBase_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_AddRadioTool. Expected _wxToolBarBase_p.");
+        return NULL;
+        }
+    }
+{
+    _arg2 = wxString_in_helper(_obj2);
+    if (_arg2 == NULL)
+        return NULL;
+}
+    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 wxToolBarBase_AddRadioTool. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+    if (_argo4) {
+        if (_argo4 == Py_None) { _arg4 = NULL; }
+        else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_AddRadioTool. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+    if (_obj5)
+{
+    _arg5 = wxString_in_helper(_obj5);
+    if (_arg5 == NULL)
+        return NULL;
+}
+    if (_obj6)
+{
+    _arg6 = wxString_in_helper(_obj6);
+    if (_arg6 == NULL)
+        return NULL;
+}
+    if (_obj7)
+{
+  _arg7 = _obj7;
+}
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = (wxToolBarToolBase *)wxToolBarBase_AddRadioTool(_arg0,_arg1,*_arg2,*_arg3,*_arg4,*_arg5,*_arg6,_arg7);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}{ _resultobj = wxPyMake_wxObject(_result); }
+{
+    if (_obj2)
+        delete _arg2;
+}
+{
+    if (_obj5)
+        delete _arg5;
+}
+{
+    if (_obj6)
+        delete _arg6;
+}
+    return _resultobj;
+}
+
+static wxToolBarToolBase * wxToolBarBase_InsertTool(wxToolBarBase *self,size_t  pos,int  id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind  kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) {
+            wxPyUserData* udata = NULL;
+            if (clientData)
+                udata = new wxPyUserData(clientData);
+            return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind,
+                                    shortHelp, longHelp, udata);
+        }
+static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxToolBarToolBase * _result;
+    wxToolBarBase * _arg0;
+    size_t  _arg1;
+    int  _arg2;
+    wxString * _arg3;
+    wxBitmap * _arg4;
+    wxBitmap * _arg5 = (wxBitmap *) &wxNullBitmap;
+    wxItemKind  _arg6 = (wxItemKind ) wxITEM_NORMAL;
+    wxString * _arg7 = (wxString *) &wxEmptyString;
+    wxString * _arg8 = (wxString *) &wxEmptyString;
+    PyObject * _arg9 = (PyObject *) NULL;
+    PyObject * _argo0 = 0;
+    PyObject * _obj3 = 0;
+    PyObject * _argo4 = 0;
+    PyObject * _argo5 = 0;
+    PyObject * _obj7 = 0;
+    PyObject * _obj8 = 0;
+    PyObject * _obj9 = 0;
+    char *_kwnames[] = { "self","pos","id","label","bitmap","bmpDisabled","kind","shortHelp","longHelp","clientData", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_InsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarBase_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_InsertTool. Expected _wxToolBarBase_p.");
+        return NULL;
+        }
+    }
+{
+    _arg3 = wxString_in_helper(_obj3);
+    if (_arg3 == NULL)
+        return NULL;
+}
+    if (_argo4) {
+        if (_argo4 == Py_None) { _arg4 = NULL; }
+        else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_InsertTool. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+    if (_argo5) {
+        if (_argo5 == Py_None) { _arg5 = NULL; }
+        else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_InsertTool. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+    if (_obj7)
 {
     _arg7 = wxString_in_helper(_obj7);
     if (_arg7 == NULL)
@@ -1749,14 +1990,22 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args,
     _arg8 = wxString_in_helper(_obj8);
     if (_arg8 == NULL)
         return NULL;
+}
+    if (_obj9)
+{
+  _arg9 = _obj9;
 }
 {
     PyThreadState* __tstate = wxPyBeginAllowThreads();
-    _result = (wxToolBarToolBase *)wxToolBarBase_InsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,_arg5,_arg6,*_arg7,*_arg8);
+    _result = (wxToolBarToolBase *)wxToolBarBase_InsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9);
 
     wxPyEndAllowThreads(__tstate);
     if (PyErr_Occurred()) return NULL;
 }{ _resultobj = wxPyMake_wxObject(_result); }
+{
+    if (_obj3)
+        delete _arg3;
+}
 {
     if (_obj7)
         delete _arg7;
@@ -1768,9 +2017,9 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args,
     return _resultobj;
 }
 
-static wxToolBarToolBase * wxToolBarBase_InsertSimpleTool(wxToolBarBase *self,size_t  pos,int  id,const wxBitmap & bitmap,const wxString & shortHelpString,const wxString & longHelpString,int  isToggle) {
-            return self->InsertTool(pos, id, bitmap, wxNullBitmap, isToggle, NULL,
-                                    shortHelpString, longHelpString);
+static wxToolBarToolBase * wxToolBarBase_InsertSimpleTool(wxToolBarBase *self,size_t  pos,int  id,const wxString & label,const wxBitmap & bitmap,wxItemKind  kind,const wxString & shortHelp,const wxString & longHelp) {
+            return self->InsertTool(pos, id, label, bitmap, wxNullBitmap, kind,
+                                    shortHelp, longHelp);
         }
 static PyObject *_wrap_wxToolBarBase_InsertSimpleTool(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -1778,18 +2027,20 @@ static PyObject *_wrap_wxToolBarBase_InsertSimpleTool(PyObject *self, PyObject *
     wxToolBarBase * _arg0;
     size_t  _arg1;
     int  _arg2;
-    wxBitmap * _arg3;
-    wxString * _arg4 = (wxString *) &wxPyEmptyString;
-    wxString * _arg5 = (wxString *) &wxPyEmptyString;
-    int  _arg6 = (int ) FALSE;
+    wxString * _arg3;
+    wxBitmap * _arg4;
+    wxItemKind  _arg5 = (wxItemKind ) wxITEM_NORMAL;
+    wxString * _arg6 = (wxString *) &wxEmptyString;
+    wxString * _arg7 = (wxString *) &wxEmptyString;
     PyObject * _argo0 = 0;
-    PyObject * _argo3 = 0;
-    PyObject * _obj4 = 0;
-    PyObject * _obj5 = 0;
-    char *_kwnames[] = { "self","pos","id","bitmap","shortHelpString","longHelpString","isToggle", NULL };
+    PyObject * _obj3 = 0;
+    PyObject * _argo4 = 0;
+    PyObject * _obj6 = 0;
+    PyObject * _obj7 = 0;
+    char *_kwnames[] = { "self","pos","id","label","bitmap","kind","shortHelp","longHelp", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiO|OOi:wxToolBarBase_InsertSimpleTool",_kwnames,&_argo0,&_arg1,&_arg2,&_argo3,&_obj4,&_obj5,&_arg6)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|iOO:wxToolBarBase_InsertSimpleTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_arg5,&_obj6,&_obj7)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -1798,39 +2049,48 @@ static PyObject *_wrap_wxToolBarBase_InsertSimpleTool(PyObject *self, PyObject *
         return NULL;
         }
     }
-    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 wxToolBarBase_InsertSimpleTool. Expected _wxBitmap_p.");
+{
+    _arg3 = wxString_in_helper(_obj3);
+    if (_arg3 == NULL)
+        return NULL;
+}
+    if (_argo4) {
+        if (_argo4 == Py_None) { _arg4 = NULL; }
+        else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_InsertSimpleTool. Expected _wxBitmap_p.");
         return NULL;
         }
     }
-    if (_obj4)
+    if (_obj6)
 {
-    _arg4 = wxString_in_helper(_obj4);
-    if (_arg4 == NULL)
+    _arg6 = wxString_in_helper(_obj6);
+    if (_arg6 == NULL)
         return NULL;
 }
-    if (_obj5)
+    if (_obj7)
 {
-    _arg5 = wxString_in_helper(_obj5);
-    if (_arg5 == NULL)
+    _arg7 = wxString_in_helper(_obj7);
+    if (_arg7 == NULL)
         return NULL;
 }
 {
     PyThreadState* __tstate = wxPyBeginAllowThreads();
-    _result = (wxToolBarToolBase *)wxToolBarBase_InsertSimpleTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6);
+    _result = (wxToolBarToolBase *)wxToolBarBase_InsertSimpleTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,_arg5,*_arg6,*_arg7);
 
     wxPyEndAllowThreads(__tstate);
     if (PyErr_Occurred()) return NULL;
 }{ _resultobj = wxPyMake_wxObject(_result); }
 {
-    if (_obj4)
-        delete _arg4;
+    if (_obj3)
+        delete _arg3;
 }
 {
-    if (_obj5)
-        delete _arg5;
+    if (_obj6)
+        delete _arg6;
+}
+{
+    if (_obj7)
+        delete _arg7;
 }
     return _resultobj;
 }
@@ -3517,6 +3777,8 @@ static PyMethodDef stattoolcMethods[] = {
 	 { "wxToolBarBase_AddControl", (PyCFunction) _wrap_wxToolBarBase_AddControl, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarBase_InsertSimpleTool", (PyCFunction) _wrap_wxToolBarBase_InsertSimpleTool, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarBase_InsertTool", (PyCFunction) _wrap_wxToolBarBase_InsertTool, METH_VARARGS | METH_KEYWORDS },
+	 { "wxToolBarBase_AddRadioTool", (PyCFunction) _wrap_wxToolBarBase_AddRadioTool, METH_VARARGS | METH_KEYWORDS },
+	 { "wxToolBarBase_AddCheckTool", (PyCFunction) _wrap_wxToolBarBase_AddCheckTool, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarBase_AddSimpleTool", (PyCFunction) _wrap_wxToolBarBase_AddSimpleTool, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarBase_AddTool", (PyCFunction) _wrap_wxToolBarBase_AddTool, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarToolBase_SetClientData", (PyCFunction) _wrap_wxToolBarToolBase_SetClientData, METH_VARARGS | METH_KEYWORDS },
@@ -3540,6 +3802,7 @@ static PyMethodDef stattoolcMethods[] = {
 	 { "wxToolBarToolBase_CanBeToggled", (PyCFunction) _wrap_wxToolBarToolBase_CanBeToggled, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarToolBase_IsToggled", (PyCFunction) _wrap_wxToolBarToolBase_IsToggled, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarToolBase_IsEnabled", (PyCFunction) _wrap_wxToolBarToolBase_IsEnabled, METH_VARARGS | METH_KEYWORDS },
+	 { "wxToolBarToolBase_GetKind", (PyCFunction) _wrap_wxToolBarToolBase_GetKind, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarToolBase_GetStyle", (PyCFunction) _wrap_wxToolBarToolBase_GetStyle, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarToolBase_IsSeparator", (PyCFunction) _wrap_wxToolBarToolBase_IsSeparator, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolBarToolBase_IsControl", (PyCFunction) _wrap_wxToolBarToolBase_IsControl, METH_VARARGS | METH_KEYWORDS },
diff --git a/wxPython/src/msw/stattool.py b/wxPython/src/msw/stattool.py
index 4e8be2301b..2dc9618b78 100644
--- a/wxPython/src/msw/stattool.py
+++ b/wxPython/src/msw/stattool.py
@@ -93,6 +93,9 @@ class wxToolBarToolBasePtr(wxObjectPtr):
     def GetStyle(self, *_args, **_kwargs):
         val = apply(stattoolc.wxToolBarToolBase_GetStyle,(self,) + _args, _kwargs)
         return val
+    def GetKind(self, *_args, **_kwargs):
+        val = apply(stattoolc.wxToolBarToolBase_GetKind,(self,) + _args, _kwargs)
+        return val
     def IsEnabled(self, *_args, **_kwargs):
         val = apply(stattoolc.wxToolBarToolBase_IsEnabled,(self,) + _args, _kwargs)
         return val
@@ -184,6 +187,12 @@ class wxToolBarBasePtr(wxControlPtr):
     def AddSimpleTool(self, *_args, **_kwargs):
         val = apply(stattoolc.wxToolBarBase_AddSimpleTool,(self,) + _args, _kwargs)
         return val
+    def AddCheckTool(self, *_args, **_kwargs):
+        val = apply(stattoolc.wxToolBarBase_AddCheckTool,(self,) + _args, _kwargs)
+        return val
+    def AddRadioTool(self, *_args, **_kwargs):
+        val = apply(stattoolc.wxToolBarBase_AddRadioTool,(self,) + _args, _kwargs)
+        return val
     def InsertTool(self, *_args, **_kwargs):
         val = apply(stattoolc.wxToolBarBase_InsertTool,(self,) + _args, _kwargs)
         return val
diff --git a/wxPython/src/msw/wx.cpp b/wxPython/src/msw/wx.cpp
index dacf8b9d46..a3849d2674 100644
--- a/wxPython/src/msw/wx.cpp
+++ b/wxPython/src/msw/wx.cpp
@@ -1709,39 +1709,7 @@ static PyObject *_wrap_wxPyApp_SetUseBestVisual(PyObject *self, PyObject *args,
     return _resultobj;
 }
 
-#define wxPyApp_GetStdIcon(_swigobj,_swigarg0)  (_swigobj->GetStdIcon(_swigarg0))
-static PyObject *_wrap_wxPyApp_GetStdIcon(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    wxIcon * _result;
-    wxPyApp * _arg0;
-    int  _arg1;
-    PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","which", NULL };
-    char _ptemp[128];
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxPyApp_GetStdIcon",_kwnames,&_argo0,&_arg1)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_GetStdIcon. Expected _wxPyApp_p.");
-        return NULL;
-        }
-    }
-{
-    PyThreadState* __tstate = wxPyBeginAllowThreads();
-    _result = new wxIcon (wxPyApp_GetStdIcon(_arg0,_arg1));
-
-    wxPyEndAllowThreads(__tstate);
-    if (PyErr_Occurred()) return NULL;
-}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxIcon_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
-    return _resultobj;
-}
-
 static PyMethodDef wxcMethods[] = {
-	 { "wxPyApp_GetStdIcon", (PyCFunction) _wrap_wxPyApp_GetStdIcon, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPyApp_SetUseBestVisual", (PyCFunction) _wrap_wxPyApp_SetUseBestVisual, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPyApp_SetVendorName", (PyCFunction) _wrap_wxPyApp_SetVendorName, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPyApp_SetTopWindow", (PyCFunction) _wrap_wxPyApp_SetTopWindow, METH_VARARGS | METH_KEYWORDS },
@@ -1955,11 +1923,13 @@ SWIGEXPORT(void) initwxc() {
 	 PyDict_SetItemString(d,"wxCLIP_SIBLINGS", PyInt_FromLong((long) wxCLIP_SIBLINGS));
 	 PyDict_SetItemString(d,"wxRETAINED", PyInt_FromLong((long) wxRETAINED));
 	 PyDict_SetItemString(d,"wxBACKINGSTORE", PyInt_FromLong((long) wxBACKINGSTORE));
-	 PyDict_SetItemString(d,"wxTB_3DBUTTONS", PyInt_FromLong((long) wxTB_3DBUTTONS));
 	 PyDict_SetItemString(d,"wxTB_HORIZONTAL", PyInt_FromLong((long) wxTB_HORIZONTAL));
 	 PyDict_SetItemString(d,"wxTB_VERTICAL", PyInt_FromLong((long) wxTB_VERTICAL));
+	 PyDict_SetItemString(d,"wxTB_3DBUTTONS", PyInt_FromLong((long) wxTB_3DBUTTONS));
 	 PyDict_SetItemString(d,"wxTB_FLAT", PyInt_FromLong((long) wxTB_FLAT));
 	 PyDict_SetItemString(d,"wxTB_DOCKABLE", PyInt_FromLong((long) wxTB_DOCKABLE));
+	 PyDict_SetItemString(d,"wxTB_NOICONS", PyInt_FromLong((long) wxTB_NOICONS));
+	 PyDict_SetItemString(d,"wxTB_TEXT", PyInt_FromLong((long) wxTB_TEXT));
 	 PyDict_SetItemString(d,"wxCOLOURED", PyInt_FromLong((long) wxCOLOURED));
 	 PyDict_SetItemString(d,"wxFIXED_LENGTH", PyInt_FromLong((long) wxFIXED_LENGTH));
 	 PyDict_SetItemString(d,"wxALIGN_LEFT", PyInt_FromLong((long) wxALIGN_LEFT));
diff --git a/wxPython/src/msw/wx.py b/wxPython/src/msw/wx.py
index 9c69c16ae5..582e861ce2 100644
--- a/wxPython/src/msw/wx.py
+++ b/wxPython/src/msw/wx.py
@@ -113,10 +113,6 @@ class wxPyAppPtr(wxEvtHandlerPtr):
     def SetUseBestVisual(self, *_args, **_kwargs):
         val = apply(wxc.wxPyApp_SetUseBestVisual,(self,) + _args, _kwargs)
         return val
-    def GetStdIcon(self, *_args, **_kwargs):
-        val = apply(wxc.wxPyApp_GetStdIcon,(self,) + _args, _kwargs)
-        if val: val = wxIconPtr(val) ; val.thisown = 1
-        return val
     def __repr__(self):
         return "<C wxPyApp instance at %s>" % (self.this,)
 class wxPyApp(wxPyAppPtr):
@@ -216,11 +212,13 @@ wxCLIP_CHILDREN = wxc.wxCLIP_CHILDREN
 wxCLIP_SIBLINGS = wxc.wxCLIP_SIBLINGS
 wxRETAINED = wxc.wxRETAINED
 wxBACKINGSTORE = wxc.wxBACKINGSTORE
-wxTB_3DBUTTONS = wxc.wxTB_3DBUTTONS
 wxTB_HORIZONTAL = wxc.wxTB_HORIZONTAL
 wxTB_VERTICAL = wxc.wxTB_VERTICAL
+wxTB_3DBUTTONS = wxc.wxTB_3DBUTTONS
 wxTB_FLAT = wxc.wxTB_FLAT
 wxTB_DOCKABLE = wxc.wxTB_DOCKABLE
+wxTB_NOICONS = wxc.wxTB_NOICONS
+wxTB_TEXT = wxc.wxTB_TEXT
 wxCOLOURED = wxc.wxCOLOURED
 wxFIXED_LENGTH = wxc.wxFIXED_LENGTH
 wxALIGN_LEFT = wxc.wxALIGN_LEFT
diff --git a/wxPython/src/stattool.i b/wxPython/src/stattool.i
index d26338a596..d209ba87e7 100644
--- a/wxPython/src/stattool.i
+++ b/wxPython/src/stattool.i
@@ -94,13 +94,13 @@ class wxToolBarToolBase : public wxObject {
 public:
 //      wxToolBarToolBase(wxToolBarBase *tbar = (wxToolBarBase *)NULL,
 //                        int id = wxID_SEPARATOR,
-//                        const wxBitmap& bitmap1 = wxNullBitmap,
-//                        const wxBitmap& bitmap2 = wxNullBitmap,
-//                        bool toggle = FALSE,
+//                        const wxString& label = wxEmptyString,
+//                        const wxBitmap& bmpNormal = wxNullBitmap,
+//                        const wxBitmap& bmpDisabled = wxNullBitmap,
+//                        wxItemKind kind = wxITEM_NORMAL,
 //                        wxObject *clientData = (wxObject *) NULL,
-//                        const wxString& shortHelpString = wxPyEmptyString,
-//                        const wxString& longHelpString = wxPyEmptyString);
-//      wxToolBarToolBase(wxToolBarBase *tbar, wxControl *control);
+//                        const wxString& shortHelpString = wxEmptyString,
+//                        const wxString& longHelpString = wxEmptyString)
 //      ~wxToolBarToolBase();
 
     %addmethods { void Destroy() { delete self; } }
@@ -112,6 +112,7 @@ public:
     int IsControl();
     int IsSeparator();
     int GetStyle();
+    wxItemKind GetKind();
     bool IsEnabled();
     bool IsToggled();
     bool CanBeToggled();
@@ -167,57 +168,102 @@ public:
     // This is an Abstract Base Class
 
     %addmethods {
-        // wrap ClientData in a class that knows about PyObjects
+
+        // the full AddTool() function
+        //
+        // If bmpDisabled is wxNullBitmap, a shadowed version of the normal bitmap
+        // is created and used as the disabled image.
         wxToolBarToolBase *AddTool(int id,
+                                   const wxString& label,
                                    const wxBitmap& bitmap,
-                                   const wxBitmap& pushedBitmap = wxNullBitmap,
-                                   int isToggle = FALSE,
-                                   PyObject *clientData = NULL,
-                                   const wxString& shortHelpString = wxPyEmptyString,
-                                   const wxString& longHelpString = wxPyEmptyString) {
+                                   const wxBitmap& bmpDisabled,
+                                   wxItemKind kind = wxITEM_NORMAL,
+                                   const wxString& shortHelp = wxPyEmptyString,
+                                   const wxString& longHelp = wxPyEmptyString,
+                                   PyObject *clientData = NULL)
+        {
             wxPyUserData* udata = NULL;
             if (clientData)
                 udata = new wxPyUserData(clientData);
-            return self->AddTool(id, bitmap, pushedBitmap, (bool)isToggle,
-                                 udata, shortHelpString, longHelpString);
+            return self->AddTool(id, label, bitmap, bmpDisabled, kind,
+                                 shortHelp, longHelp, udata);
         }
 
-        // This one is easier to use...
+        // The most common version of AddTool
         wxToolBarToolBase *AddSimpleTool(int id,
+                                         const wxString& label,
                                          const wxBitmap& bitmap,
-                                         const wxString& shortHelpString = wxPyEmptyString,
-                                         const wxString& longHelpString = wxPyEmptyString,
-                                         int isToggle = FALSE) {
-            return self->AddTool(id, bitmap, wxNullBitmap, isToggle, NULL,
-                                 shortHelpString, longHelpString);
+                                         const wxString& shortHelp = wxPyEmptyString,
+                                         const wxString& longHelp = wxPyEmptyString,
+                                         wxItemKind kind = wxITEM_NORMAL)
+        {
+            return self->AddTool(id, label, bitmap, wxNullBitmap, kind,
+                                 shortHelp, longHelp, NULL);
+        }
+
+        // add a check tool, i.e. a tool which can be toggled
+        wxToolBarToolBase *AddCheckTool(int id,
+                                        const wxString& label,
+                                        const wxBitmap& bitmap,
+                                        const wxBitmap& bmpDisabled = wxNullBitmap,
+                                        const wxString& shortHelp = wxEmptyString,
+                                        const wxString& longHelp = wxEmptyString,
+                                        PyObject *clientData = NULL)
+        {
+            wxPyUserData* udata = NULL;
+            if (clientData)
+                udata = new wxPyUserData(clientData);
+            return self->AddCheckTool(id, label, bitmap, bmpDisabled,
+                                      shortHelp, longHelp, udata);
         }
 
+        // add a radio tool, i.e. a tool which can be toggled and releases any
+        // other toggled radio tools in the same group when it happens
+        wxToolBarToolBase *AddRadioTool(int id,
+                                    const wxString& label,
+                                    const wxBitmap& bitmap,
+                                    const wxBitmap& bmpDisabled = wxNullBitmap,
+                                    const wxString& shortHelp = wxEmptyString,
+                                    const wxString& longHelp = wxEmptyString,
+                                    PyObject *clientData = NULL)
+        {
+            wxPyUserData* udata = NULL;
+            if (clientData)
+                udata = new wxPyUserData(clientData);
+            return self->AddRadioTool(id, label, bitmap, bmpDisabled,
+                                      shortHelp, longHelp, udata);
+        }
 
-        // wrap ClientData in a class that knows about PyObjects
+        // insert the new tool at the given position, if pos == GetToolsCount(), it
+        // is equivalent to AddTool()
         wxToolBarToolBase *InsertTool(size_t pos,
                                       int id,
+                                      const wxString& label,
                                       const wxBitmap& bitmap,
-                                      const wxBitmap& pushedBitmap = wxNullBitmap,
-                                      int isToggle = FALSE,
-                                      PyObject *clientData = NULL,
-                                      const wxString& shortHelpString = wxPyEmptyString,
-                                      const wxString& longHelpString = wxPyEmptyString) {
+                                      const wxBitmap& bmpDisabled = wxNullBitmap,
+                                      wxItemKind kind = wxITEM_NORMAL,
+                                      const wxString& shortHelp = wxEmptyString,
+                                      const wxString& longHelp = wxEmptyString,
+                                      PyObject *clientData = NULL)
+        {
             wxPyUserData* udata = NULL;
             if (clientData)
                 udata = new wxPyUserData(clientData);
-            return self->InsertTool(pos, id, bitmap, pushedBitmap, (bool)isToggle,
-                                    udata, shortHelpString, longHelpString);
+            return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind,
+                                    shortHelp, longHelp, udata);
         }
 
-        // This one is easier to use...
+        // A simpler InsertTool
         wxToolBarToolBase *InsertSimpleTool(size_t pos,
-                                            int id,
-                                            const wxBitmap& bitmap,
-                                            const wxString& shortHelpString = wxPyEmptyString,
-                                            const wxString& longHelpString = wxPyEmptyString,
-                                            int isToggle = FALSE) {
-            return self->InsertTool(pos, id, bitmap, wxNullBitmap, isToggle, NULL,
-                                    shortHelpString, longHelpString);
+                                      int id,
+                                      const wxString& label,
+                                      const wxBitmap& bitmap,
+                                      wxItemKind kind = wxITEM_NORMAL,
+                                      const wxString& shortHelp = wxEmptyString,
+                                      const wxString& longHelp = wxEmptyString)
+        {
+            return self->InsertTool(pos, id, label, bitmap, wxNullBitmap, kind,
+                                    shortHelp, longHelp);
         }
     }
 
diff --git a/wxPython/src/wx.i b/wxPython/src/wx.i
index 7497d86703..55ce3915ae 100644
--- a/wxPython/src/wx.i
+++ b/wxPython/src/wx.i
@@ -16,7 +16,6 @@
 #include "helpers.h"
 %}
 
-
 //----------------------------------------------------------------------
 // This is where we include the other wrapper definition files for SWIG
 //----------------------------------------------------------------------
@@ -102,7 +101,6 @@ public:
     void SetTopWindow(wxWindow* window);
     void SetVendorName(const wxString& name);
     void SetUseBestVisual(bool flag);
-    wxIcon GetStdIcon(int which);
 };
 
 %inline %{
diff --git a/wxPython/wxPython/.cvsignore b/wxPython/wxPython/.cvsignore
index 3ca2ed886a..e037117e42 100644
--- a/wxPython/wxPython/.cvsignore
+++ b/wxPython/wxPython/.cvsignore
@@ -1,3 +1,4 @@
+*.py
 *.pyc
 *.pyd
-*.py
+wxc.pyd.manifest
-- 
2.47.2