From b1462dfa3496ba7288691376c1de4c890d90787c Mon Sep 17 00:00:00 2001
From: Robin Dunn <robin@alldunn.com>
Date: Sat, 6 Nov 1999 08:30:23 +0000
Subject: [PATCH] wxPython stuff:   1. Added Clipboard and Drag-and-Drop
 classes   2. Added wxFontEnumerator   3. Many changes to wxMenu, wxMenubar  
 4. Various other changes and additions   5. Updates to the demo   6.
 Documentation updates

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/bmpdatob.tex               |   21 +-
 docs/latex/wx/custdobj.tex               |   15 +-
 docs/latex/wx/dataobj.tex                |   38 +-
 docs/latex/wx/dobjsmpl.tex               |   26 +-
 docs/latex/wx/manual.tex                 |    2 +-
 docs/latex/wx/menu.tex                   |   13 +-
 docs/latex/wx/txtdatob.tex               |   23 +-
 utils/wxPython/README.txt                |   20 +-
 utils/wxPython/demo/CustomDragAndDrop.py |  237 ++
 utils/wxPython/demo/DragAndDrop.py       |  193 ++
 utils/wxPython/demo/FontEnumerator.py    |   56 +
 utils/wxPython/demo/Main.py              |    7 +-
 utils/wxPython/demo/wxSpinButton.py      |    3 +-
 utils/wxPython/demo/wxTreeCtrl.py        |   15 +-
 utils/wxPython/modules/html/_extras.py   |    4 +-
 utils/wxPython/modules/html/html.cpp     |  145 +-
 utils/wxPython/modules/html/html.i       |   95 -
 utils/wxPython/modules/html/html.py      |    7 +-
 utils/wxPython/modules/html/htmlhelp.cpp |    6 +
 utils/wxPython/src/_defs.i               |   10 +-
 utils/wxPython/src/_extras.py            |   11 +-
 utils/wxPython/src/build.cfg             |    2 +-
 utils/wxPython/src/clip_dnd.i            |  614 ++++
 utils/wxPython/src/controls.i            |    8 +
 utils/wxPython/src/controls2.i           |    9 +-
 utils/wxPython/src/events.i              |    2 +-
 utils/wxPython/src/helpers.h             |  136 +-
 utils/wxPython/src/misc2.i               |   29 +-
 utils/wxPython/src/msw/clip_dnd.cpp      | 3611 ++++++++++++++++++++++
 utils/wxPython/src/msw/clip_dnd.py       |  506 +++
 utils/wxPython/src/msw/cmndlgs.cpp       |   34 +
 utils/wxPython/src/msw/cmndlgs.py        |    2 +
 utils/wxPython/src/msw/controls.cpp      |  143 +
 utils/wxPython/src/msw/controls.py       |   11 +
 utils/wxPython/src/msw/controls2.cpp     |  151 +-
 utils/wxPython/src/msw/controls2.py      |   11 +
 utils/wxPython/src/msw/events.cpp        |   86 +-
 utils/wxPython/src/msw/events.py         |    6 +-
 utils/wxPython/src/msw/frames.cpp        |   34 +
 utils/wxPython/src/msw/frames.py         |    2 +
 utils/wxPython/src/msw/gdi.cpp           |   16 +
 utils/wxPython/src/msw/image.cpp         |   16 +
 utils/wxPython/src/msw/mdi.cpp           |   34 +
 utils/wxPython/src/msw/mdi.py            |    2 +
 utils/wxPython/src/msw/misc.cpp          |   16 +
 utils/wxPython/src/msw/misc2.cpp         |  317 +-
 utils/wxPython/src/msw/misc2.py          |   33 +
 utils/wxPython/src/msw/printfw.cpp       |   34 +
 utils/wxPython/src/msw/printfw.py        |    2 +
 utils/wxPython/src/msw/sizers.cpp        |   34 +
 utils/wxPython/src/msw/sizers.py         |    2 +
 utils/wxPython/src/msw/stattool.cpp      |   34 +
 utils/wxPython/src/msw/stattool.py       |    2 +
 utils/wxPython/src/msw/windows.cpp       | 2051 +++++++-----
 utils/wxPython/src/msw/windows.py        |  268 +-
 utils/wxPython/src/msw/windows2.cpp      |   34 +
 utils/wxPython/src/msw/windows2.py       |    2 +
 utils/wxPython/src/msw/windows3.cpp      |   34 +
 utils/wxPython/src/msw/windows3.py       |    2 +
 utils/wxPython/src/msw/wx.cpp            |  132 +-
 utils/wxPython/src/msw/wx.py             |   38 +-
 utils/wxPython/src/windows.i             |  161 +-
 utils/wxPython/src/wx.i                  |   27 +-
 63 files changed, 8231 insertions(+), 1404 deletions(-)
 create mode 100644 utils/wxPython/demo/CustomDragAndDrop.py
 create mode 100644 utils/wxPython/demo/DragAndDrop.py
 create mode 100644 utils/wxPython/demo/FontEnumerator.py
 create mode 100644 utils/wxPython/src/clip_dnd.i
 create mode 100644 utils/wxPython/src/msw/clip_dnd.cpp
 create mode 100644 utils/wxPython/src/msw/clip_dnd.py

diff --git a/docs/latex/wx/bmpdatob.tex b/docs/latex/wx/bmpdatob.tex
index 40ed2d256a..95b02fd9cf 100644
--- a/docs/latex/wx/bmpdatob.tex
+++ b/docs/latex/wx/bmpdatob.tex
@@ -1,15 +1,20 @@
 \section{\class{wxBitmapDataObject}}\label{wxbitmapdataobject}
 
 wxBitmapDataObject is a specialization of wxDataObject for bitmap data. It can
-be used without change to paste data into the 
+be used without change to paste data into the
 \helpref{wxClipboard}{wxclipboard} or a \helpref{wxDropSource}{wxdropsource}. A
 user may wish to derive a new class from this class for providing a bitmap
 on-demand in order to minimize memory consumption when offering data in several
 formats, such as a bitmap and GIF.
 
+\pythonnote{If you wish to create a derived wxBitmapDataObject class in
+wxPython you should derive the class from wxPyBitmapDataObject
+in order to get Python-aware capabilities for the various virtual
+methods.}
+
 \wxheading{Virtual functions to override}
 
-This class may be used as is, but 
+This class may be used as is, but
 \helpref{GetBitmap}{wxbitmapdataobjectgetbitmap} may be overridden to increase
 efficiency.
 
@@ -24,16 +29,16 @@ efficiency.
 
 \wxheading{See also}
 
-\helpref{Clipboard and drag and drop overview}{wxdndoverview}, 
-\helpref{wxDataObject}{wxdataobject}, 
-\helpref{wxDataObjectSimple}{wxdataobjectsimple}, 
-\helpref{wxFileDataObject}{wxfiledataobject}, 
-\helpref{wxTextDataObject}{wxtextdataobject}, 
+\helpref{Clipboard and drag and drop overview}{wxdndoverview},
+\helpref{wxDataObject}{wxdataobject},
+\helpref{wxDataObjectSimple}{wxdataobjectsimple},
+\helpref{wxFileDataObject}{wxfiledataobject},
+\helpref{wxTextDataObject}{wxtextdataobject},
 \helpref{wxDataObject}{wxdataobject}
 
 \func{}{wxBitmapDataObject}{\param{const wxBitmap\& }{bitmap = wxNullBitmap}}
 
-Constructor, optionally passing a bitmap (otherwise use 
+Constructor, optionally passing a bitmap (otherwise use
 \helpref{SetBitmap}{wxbitmapdataobjectsetbitmap} later)
 
 \membersection{wxBitmapDataObject::GetBitmap}\label{wxbitmapdataobjectgetbitmap}
diff --git a/docs/latex/wx/custdobj.tex b/docs/latex/wx/custdobj.tex
index d53cab7ef7..eb1bf4ab11 100644
--- a/docs/latex/wx/custdobj.tex
+++ b/docs/latex/wx/custdobj.tex
@@ -1,6 +1,6 @@
 \section{\class{wxCustomDataObject}}\label{wxcustomdataobject}
 
-wxCustomDataObject is a specialization of 
+wxCustomDataObject is a specialization of
 \helpref{wxDataObjectSimple}{wxdataobjectsimple} for some
 application-specific data in arbitrary (either custom or one of the standard
 ones). The only restriction is that it is supposed that this data can be
@@ -8,8 +8,8 @@ copied bitwise (i.e. with {\tt memcpy()}), so it would be a bad idea to make
 it contain a C++ object (though C struct is fine).
 
 By default, wxCustomDataObject stores the data inside in a buffer. To put the
-data into the buffer you may use either 
-\helpref{SetData}{wxcustomdataobjectsetdata} or 
+data into the buffer you may use either
+\helpref{SetData}{wxcustomdataobjectsetdata} or
 \helpref{TakeData}{wxcustomdataobjecttakedata} depending on whether you want
 the object to make a copy of data or not.
 
@@ -20,9 +20,9 @@ the virtual functions mentioned below.
 \wxheading{Virtual functions to override}
 
 This class may be used as is, but if you don't want store the data inside the
-object but provide it on demand instead, you should override 
+object but provide it on demand instead, you should override
 \helpref{GetSize}{wxcustomdataobjectgetsize},
-\helpref{GetData}{wxcustomdataobjectgetdata} and 
+\helpref{GetData}{wxcustomdataobjectgetdata} and
 \helpref{SetData}{wxcustomdataobjectsetdata} (or may be only the first two or
 only the last one if you only allow reading/writing the data)
 
@@ -46,7 +46,7 @@ only the last one if you only allow reading/writing the data)
 \func{}{wxCustomDataObject}{\param{const wxDataFormat\& }{format = wxFormatInvalid}}
 
 The constructor accepts a {\it format} argument which specifies the (single)
-format supported by this object. If it isn't set here, 
+format supported by this object. If it isn't set here,
 \helpref{SetFormat}{wxdataobjectsimplesetformat} should be used.
 
 \membersection{wxCustomDataObject::\destruct{wxCustomDataObject}}\label{wxcustomdataobjectdtor}
@@ -69,6 +69,9 @@ The default version just uses the operator new.
 
 \membersection{wxCustomDataObject::Free}\label{wxcustomdataobjectfree}
 
+\pythonnote{This method expects a string in wxPython.  You can pass
+nearly any object by pickling it first.}
+
 \func{virtual void}{Free}{\void}
 
 This function is called when the data is freed, you may override it to anything
diff --git a/docs/latex/wx/dataobj.tex b/docs/latex/wx/dataobj.tex
index e063f5c755..a7b595aea5 100644
--- a/docs/latex/wx/dataobj.tex
+++ b/docs/latex/wx/dataobj.tex
@@ -33,7 +33,7 @@ enum Direction
 };
 \end{verbatim}
 
-which allows to distinguish between them. See 
+which allows to distinguish between them. See
 \helpref{wxDataFormat}{wxdataformat} documentation for more about formats.
 
 Not surprizingly, being 'smart' comes at a price of added complexity. This is
@@ -42,8 +42,8 @@ but may be annoying if you only want to do something simple like cut and paste
 text.
 
 To provide a solution for both cases, wxWindows has two predefined classes
-which derive from wxDataObject: \helpref{wxDataObjectSimple}{wxdataobjectsimple} and 
-\helpref{wxDataObjectComposite}{wxdataobjectcomposite}. 
+which derive from wxDataObject: \helpref{wxDataObjectSimple}{wxdataobjectsimple} and
+\helpref{wxDataObjectComposite}{wxdataobjectcomposite}.
 \helpref{wxDataObjectSimple}{wxdataobjectsimple} is
 the simplest wxDataObject possible and only holds data in a single format (such
 as HTML or text) and \helpref{wxDataObjectComposite}{wxdataobjectcomposite} is
@@ -86,12 +86,12 @@ clipboard after having pressed 'Copy' - in reality it is only declared to be
 available.
 
 There are several predefined data object classes derived from
-wxDataObjectSimple: \helpref{wxFileDataObject}{wxfiledataobject}, 
-\helpref{wxTextDataObject}{wxtextdataobject} and 
+wxDataObjectSimple: \helpref{wxFileDataObject}{wxfiledataobject},
+\helpref{wxTextDataObject}{wxtextdataobject} and
 \helpref{wxBitmapDataObject}{wxbitmapdataobject} which can be used without
 change.
 
-You may also derive your own data object classes from 
+You may also derive your own data object classes from
 \helpref{wxCustomDataObject}{wxprivatedataobject} for user-defined types. The
 format of user-defined data is given as mime-type string literal, such as
 "application/word" or "image/png". These strings are used as they are under
@@ -100,13 +100,17 @@ Windows equivalent under Win32 (using the OLE IDataObject for data exchange to
 and from the clipboard and for drag and drop). Note that the format string
 translation under Windows is not yet finished.
 
+\pythonnote{At this time this class is directly usable from wxPython.
+Derive a class from \helpref{wxPyDataObjectSimple}{wxdataobjectsimple}
+instead.}
+
 \wxheading{Virtual functions to override}
 
 Each class derived directly from wxDataObject must override and implement all
 of its functions which are pure virtual in the base class.
 
 The data objects which only render their data or only set it (i.e. work in
-only one direction), should return 0 from 
+only one direction), should return 0 from
 \helpref{GetFormatCount}{wxdataobjectgetformatcount}.
 
 \wxheading{Derived from}
@@ -119,15 +123,15 @@ None
 
 \wxheading{See also}
 
-\helpref{Clipboard and drag and drop overview}{wxdndoverview}, 
-\helpref{DnD sample}{samplednd}, 
-\helpref{wxFileDataObject}{wxfiledataobject}, 
-\helpref{wxTextDataObject}{wxtextdataobject}, 
-\helpref{wxBitmapDataObject}{wxbitmapdataobject}, 
-\helpref{wxPrivateDataObject}{wxprivatedataobject}, 
-\helpref{wxDropTarget}{wxdroptarget}, 
-\helpref{wxDropSource}{wxdropsource}, 
-\helpref{wxTextDropTarget}{wxtextdroptarget}, 
+\helpref{Clipboard and drag and drop overview}{wxdndoverview},
+\helpref{DnD sample}{samplednd},
+\helpref{wxFileDataObject}{wxfiledataobject},
+\helpref{wxTextDataObject}{wxtextdataobject},
+\helpref{wxBitmapDataObject}{wxbitmapdataobject},
+\helpref{wxPrivateDataObject}{wxprivatedataobject},
+\helpref{wxDropTarget}{wxdroptarget},
+\helpref{wxDropSource}{wxdropsource},
+\helpref{wxTextDropTarget}{wxtextdroptarget},
 \helpref{wxFileDropTarget}{wxfiledroptarget}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
@@ -148,7 +152,7 @@ Destructor.
 
 \constfunc{virtual void}{GetAllFormats}{ \param{wxDataFormat *}{formats}, \param{Direction}{ dir = Get}}
 
-Copy all supported formats in the given direction to the array pointed to by 
+Copy all supported formats in the given direction to the array pointed to by
 {\it formats}. There is enough space for GetFormatCount(dir) formats in it.
 
 \membersection{wxDataObject::GetDataHere}\label{wxdataobjectgetdatahere}
diff --git a/docs/latex/wx/dobjsmpl.tex b/docs/latex/wx/dobjsmpl.tex
index 3770c66ad0..8a6c747ede 100644
--- a/docs/latex/wx/dobjsmpl.tex
+++ b/docs/latex/wx/dobjsmpl.tex
@@ -11,7 +11,7 @@
 
 \section{\class{wxDataObjectSimple}}\label{wxdataobjectsimple}
 
-This is the simplest possible implementation of 
+This is the simplest possible implementation of
 \helpref{wxDataObject}{wxdataobject} class. The data object of (a class derived
 from) this class only supports one format, so the number of virtual functions
 to be implemented is reduced.
@@ -19,10 +19,15 @@ to be implemented is reduced.
 Notice that this is still an abstract base class and cannot be used but should
 be derived from.
 
+\pythonnote{If you wish to create a derived wxDataObjectSimple class in
+wxPython you should derive the class from wxPyDataObjectSimple
+in order to get Python-aware capabilities for the various virtual
+methods.}
+
 \wxheading{Virtual functions to override}
 
-The objects supporting rendering the data must override 
-\helpref{GetDataSize}{wxdataobjectsimplegetdatasize} and 
+The objects supporting rendering the data must override
+\helpref{GetDataSize}{wxdataobjectsimplegetdatasize} and
 \helpref{GetDataHere}{wxdataobjectsimplegetdatahere} while the objects which
 may be set must override \helpref{SetData}{wxdataobjectsimplesetdata}. Of
 course, the objects supporting both operations must override all threee
@@ -38,10 +43,10 @@ methods.
 
 \wxheading{See also}
 
-\helpref{Clipboard and drag and drop overview}{wxdndoverview}, 
-\helpref{DnD sample}{samplednd}, 
-\helpref{wxFileDataObject}{wxfiledataobject}, 
-\helpref{wxTextDataObject}{wxtextdataobject}, 
+\helpref{Clipboard and drag and drop overview}{wxdndoverview},
+\helpref{DnD sample}{samplednd},
+\helpref{wxFileDataObject}{wxfiledataobject},
+\helpref{wxTextDataObject}{wxtextdataobject},
 \helpref{wxBitmapDataObject}{wxbitmapdataobject}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
@@ -80,6 +85,10 @@ object supports rendering its data.
 Copy the data to the buffer, return TRUE on success. Must be implemented in the
 derived class if the object supports rendering its data.
 
+\pythonnote{When implementing this method in wxPython, no additional
+parameters are required and the data should be returned from the
+method as a string.}
+
 \membersection{wxDataObjectSimple::SetData}\label{wxdataobjectsimplesetdata}
 
 \func{virtual bool}{SetData}{\param{size\_t }{len}, \param{const void }{*buf}}
@@ -87,4 +96,7 @@ derived class if the object supports rendering its data.
 Copy the data from the buffer, return TRUE on success. Must be implemented in
 the derived class if the object supports setting its data.
 
+\pythonnote{When implementing this method in wxPython, the data comes
+as a single string parameter rather than the two shown here.}
+
 
diff --git a/docs/latex/wx/manual.tex b/docs/latex/wx/manual.tex
index c0f4ba5883..73312a4bc7 100644
--- a/docs/latex/wx/manual.tex
+++ b/docs/latex/wx/manual.tex
@@ -25,7 +25,7 @@
 %\special{!/@scaleunit 1 def}
 \parskip=10pt
 \parindent=0pt
-\title{wxWindows 2.1: a portable C++ and Python GUI toolkit}
+\title{wxWindows 2.1: A portable C++ and Python GUI toolkit}
 \winhelponly{\author{by Julian Smart et al
 %\winhelponly{\\$$\image{1cm;0cm}{wxwin.wmf}$$}
 }}
diff --git a/docs/latex/wx/menu.tex b/docs/latex/wx/menu.tex
index 8846d7579b..fe20490bb5 100644
--- a/docs/latex/wx/menu.tex
+++ b/docs/latex/wx/menu.tex
@@ -41,8 +41,7 @@ this window.
 
 \membersection{wxMenu::wxMenu}\label{wxmenuconstr}
 
-\func{}{wxMenu}{\param{const wxString\& }{title = ""},
- \param{const wxFunction}{ func = NULL}, \param{long}{ style = 0}}
+\func{}{wxMenu}{\param{const wxString\& }{title = ""}, \param{long}{ style = 0}}
 
 Constructs a wxMenu object.
 
@@ -50,18 +49,8 @@ Constructs a wxMenu object.
 
 \docparam{title}{A title for the popup menu: the empty string denotes no title.}
 
-\docparam{func}{A callback function if the menu is used as a popup using \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu}.}
-
 \docparam{style}{If set to \tt{wxMENU_TEAROFF}, the menu will be detachable.}
 
-\pythonnote{The wxPython version of the \tt{wxMenu} constructor
-doesn't accept the callback argument because of reference counting
-issues.  There is a specialized wxMenu constructor called 
-\tt{wxPyMenu} which does and can be used for PopupMenus when callbacks
-are needed.  You must retain a reference to the menu while useing it
-otherwise your callback function will get dereferenced when the menu
-does.
-}
 
 \func{}{wxMenu}{\param{long}{ style}}
 
diff --git a/docs/latex/wx/txtdatob.tex b/docs/latex/wx/txtdatob.tex
index f25842b589..ee654e9156 100644
--- a/docs/latex/wx/txtdatob.tex
+++ b/docs/latex/wx/txtdatob.tex
@@ -1,20 +1,25 @@
 \section{\class{wxTextDataObject}}\label{wxtextdataobject}
 
 wxTextDataObject is a specialization of wxDataObject for text data. It can be
-used without change to paste data into the \helpref{wxClipboard}{wxclipboard} 
+used without change to paste data into the \helpref{wxClipboard}{wxclipboard}
 or a \helpref{wxDropSource}{wxdropsource}. A user may wish to derive a new
 class from this class for providing text on-demand in order to minimize memory
 consumption when offering data in several formats, such as plain text and RTF
 because by default the text is stored in a string in this class, but it might
-as well be generated when requested. For this, 
-\helpref{GetTextLength}{wxtextdataobjectgettextlength} and 
+as well be generated when requested. For this,
+\helpref{GetTextLength}{wxtextdataobjectgettextlength} and
 \helpref{GetText}{wxtextdataobjectgettext} will have to be overridden.
 
 Note that if you already have the text inside a string, you will not achieve
 any efficiency gain by overriding these functions because copying wxStrings is
-already a very efficient operation (data is not actualyl copied because
+already a very efficient operation (data is not actually copied because
 wxStrings are reference counted).
 
+\pythonnote{If you wish to create a derived wxTextDataObject class in
+wxPython you should derive the class from wxPyTextDataObject
+in order to get Python-aware capabilities for the various virtual
+methods.}
+
 \wxheading{Virtual functions to override}
 
 This class may be used as is, but all of data transfer functions may be
@@ -31,10 +36,10 @@ overridden to increase efficiency.
 
 \wxheading{See also}
 
-\helpref{Clipboard and drag and drop overview}{wxdndoverview}, 
-\helpref{wxDataObject}{wxdataobject}, 
-\helpref{wxDataObjectSimple}{wxdataobjectsimple}, 
-\helpref{wxFileDataObject}{wxfiledataobject}, 
+\helpref{Clipboard and drag and drop overview}{wxdndoverview},
+\helpref{wxDataObject}{wxdataobject},
+\helpref{wxDataObjectSimple}{wxdataobjectsimple},
+\helpref{wxFileDataObject}{wxfiledataobject},
 \helpref{wxBitmapDataObject}{wxbitmapdataobject}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
@@ -43,7 +48,7 @@ overridden to increase efficiency.
 
 \func{}{wxTextDataObject}{\param{const wxString\& }{text = wxEmptyString}}
 
-Constructor, may be used to initialise the text (otherwise 
+Constructor, may be used to initialise the text (otherwise
 \helpref{SetText}{wxtextdataobjectsettext} should be used later).
 
 \membersection{wxTextDataObject::GetTextLength}\label{wxtextdataobjectgettextlength}
diff --git a/utils/wxPython/README.txt b/utils/wxPython/README.txt
index 9ed963c449..f27b4a8427 100644
--- a/utils/wxPython/README.txt
+++ b/utils/wxPython/README.txt
@@ -45,8 +45,8 @@ Or you can send mail directly to the list using this address:
 
 ----------------------------------------------------------------------
 
-What's new in 2.1.6
--------------------
+What's new in 2.1.11
+--------------------
 wxImage.SetData now makes a copy of the image data before giving it to
 wxImage.  I mistakenly thought that wxImage would copy the data
 itself.
@@ -65,6 +65,22 @@ Fixed deadlock problem that happened when using threads.
 
 Added new HTML printing classes.
 
+Added wxWindow.GetHandle
+
+Apparently wxMouseEvent.Position has been depreciated in wxWindows as
+it is no longer available by default.  You can use GetPositionTuple
+(returning a tuple with x,y) instead, or GetPosition (returning a
+wxPoint.)
+
+Added wxPostEvent function that allows events to be posted and then
+processed later.  This is a thread-safe way to interact with the GUI
+thread from other threads.
+
+Added Clipboard and Drag-and-Drop classes.
+
+Added wxFontEnumerator.
+
+Many updates to wxMenu, wxMenuBar.
 
 
 
diff --git a/utils/wxPython/demo/CustomDragAndDrop.py b/utils/wxPython/demo/CustomDragAndDrop.py
new file mode 100644
index 0000000000..2756121871
--- /dev/null
+++ b/utils/wxPython/demo/CustomDragAndDrop.py
@@ -0,0 +1,237 @@
+
+from wxPython.wx import *
+
+import cPickle
+
+#----------------------------------------------------------------------
+
+
+class DoodlePad(wxWindow):
+    def __init__(self, parent, log):
+        wxWindow.__init__(self, parent, -1, style=wxSUNKEN_BORDER)
+        self.log = log
+        self.SetBackgroundColour(wxWHITE)
+        self.lines = []
+        self.x = self.y = 0
+        self.SetCursor(wxStockCursor(wxCURSOR_PENCIL))
+
+        EVT_LEFT_DOWN(self, self.OnLeftDown)
+        EVT_LEFT_UP(self, self.OnLeftUp)
+        EVT_RIGHT_UP(self, self.OnRightUp)
+        EVT_MOTION(self, self.OnMotion)
+
+
+    def OnPaint(self, event):
+        dc = wxPaintDC(self)
+        self.DrawSavedLines(dc)
+
+    def DrawSavedLines(self, dc):
+        dc.BeginDrawing()
+        dc.SetPen(wxPen(wxBLUE, 3))
+        for line in self.lines:
+            for coords in line:
+                apply(dc.DrawLine, coords)
+        dc.EndDrawing()
+
+
+    def OnLeftDown(self, event):
+        if event.ControlDown():
+            self.StartDragOpperation()
+        else:
+            self.curLine = []
+            self.x, self.y = event.GetPositionTuple()
+            self.CaptureMouse()
+
+
+    def OnLeftUp(self, event):
+        self.lines.append(self.curLine)
+        self.curLine = []
+        self.ReleaseMouse()
+
+    def OnRightUp(self, event):
+        self.lines = []
+        self.Refresh()
+
+    def OnMotion(self, event):
+        if event.Dragging() and not event.ControlDown():
+            dc = wxClientDC(self)
+            dc.BeginDrawing()
+            dc.SetPen(wxPen(wxBLUE, 3))
+            coords = (self.x, self.y) + event.GetPositionTuple()
+            self.curLine.append(coords)
+            apply(dc.DrawLine, coords)
+            self.x, self.y = event.GetPositionTuple()
+            dc.EndDrawing()
+
+
+    def StartDragOpperation(self):
+        # pickle the lines list
+        linesdata = cPickle.dumps(self.lines, 1)
+
+        # create our own data format and use it in a
+        # custom data object
+        ldata = wxCustomDataObject(wxCustomDataFormat("DoodleLines"))
+        ldata.SetData(linesdata)
+
+        # Also create a Bitmap version of the drawing
+        size = self.GetSize()
+        bmp = wxEmptyBitmap(size.width, size.height)
+        dc = wxMemoryDC()
+        dc.SelectObject(bmp)
+        dc.SetBackground(wxWHITE_BRUSH)
+        dc.Clear()
+        self.DrawSavedLines(dc)
+        dc.SelectObject(wxNullBitmap)
+
+        # Now make a data object for the bitmap and also a composite
+        # data object holding both of the others.
+        bdata = wxBitmapDataObject(bmp)
+        data = wxDataObjectComposite()
+        data.Add(ldata)
+        data.Add(bdata)
+
+        # And finally, create the drop source and begin the drag
+        # and drop opperation
+        dropSource = wxDropSource(self)
+        dropSource.SetData(data)
+        self.log.WriteText("Begining DragDrop\n")
+        result = dropSource.DoDragDrop()
+        self.log.WriteText("DragDrop completed: %d\n" % result)
+
+#----------------------------------------------------------------------
+
+
+class DoodleDropTarget(wxPyDropTarget):
+    def __init__(self, window, log):
+        wxPyDropTarget.__init__(self)
+        self.log = log
+        self.dv = window
+        self.data = wxCustomDataObject(wxCustomDataFormat("DoodleLines"))
+        self.SetDataObject(self.data)
+
+    def OnEnter(self, x, y, d):
+        self.log.WriteText("OnEnter: %d, %d, %d\n" % (x, y, d))
+        return wxDragCopy
+
+    def OnLeave(self):
+        self.log.WriteText("OnLeave\n")
+
+    def OnDrop(self, x, y):
+        self.log.WriteText("OnDrop: %d %d\n" % (x, y))
+        return true
+
+    def OnData(self, x, y, d):
+        self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d))
+        if self.GetData():
+            linesdata = self.data.GetData()
+            lines = cPickle.loads(linesdata)
+            self.dv.SetLines(lines)
+        return d
+
+    #def OnDragOver(self, x, y, d):
+    #    self.log.WriteText("OnDragOver: %d, %d, %d\n" % (x, y, d))
+    #    return wxDragCopy
+
+
+
+class DoodleViewer(wxWindow):
+    def __init__(self, parent, log):
+        wxWindow.__init__(self, parent, -1, style=wxSUNKEN_BORDER)
+        self.log = log
+        self.SetBackgroundColour(wxWHITE)
+        self.lines = []
+        self.x = self.y = 0
+        dt = DoodleDropTarget(self, log)
+        self.SetDropTarget(dt)
+
+    def SetLines(self, lines):
+        self.lines = lines
+        self.Refresh()
+
+    def OnPaint(self, event):
+        dc = wxPaintDC(self)
+        self.DrawSavedLines(dc)
+
+    def DrawSavedLines(self, dc):
+        dc.BeginDrawing()
+        dc.SetPen(wxPen(wxRED, 3))
+        for line in self.lines:
+            for coords in line:
+                apply(dc.DrawLine, coords)
+        dc.EndDrawing()
+
+#----------------------------------------------------------------------
+
+class CustomDnDPanel(wxPanel):
+    def __init__(self, parent, log):
+        wxPanel.__init__(self, parent, -1)
+
+        self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+
+        sizer = wxBoxSizer(wxHORIZONTAL)
+        sizer.Add(wxStaticText(self, -1,
+                               "Draw a little picture in this window\n"
+                               "then Ctrl-Drag it to the lower \n"
+                               "window or to another application\n"
+                               "that accepts BMP's as a drop target."),
+                  1, wxEXPAND|wxALL, 10)
+
+        insizer = wxBoxSizer(wxVERTICAL)
+        insizer.Add(DoodlePad(self, log), 1, wxEXPAND|wxALL, 5)
+        insizer.Add(DoodleViewer(self, log), 1, wxEXPAND|wxALL, 5)
+
+        sizer.Add(insizer, 1, wxEXPAND)
+        self.SetAutoLayout(true)
+        self.SetSizer(sizer)
+
+
+
+
+#----------------------------------------------------------------------
+#----------------------------------------------------------------------
+
+class TestPanel(wxPanel):
+    def __init__(self, parent, log):
+        wxPanel.__init__(self, parent, -1)
+
+        self.SetAutoLayout(true)
+        sizer = wxBoxSizer(wxVERTICAL)
+
+        text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE)
+        text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false))
+        text.SetLabel("Custom Drag-And-Drop")
+        text.SetForegroundColour(wxBLUE)
+        sizer.Add(text, 0, wxEXPAND|wxALL, 5)
+        sizer.Add(wxStaticLine(self, -1), 0, wxEXPAND)
+
+        sizer.Add(CustomDnDPanel(self, log), 1, wxEXPAND)
+
+        self.SetSizer(sizer)
+
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    win = TestPanel(nb, log)
+    return win
+
+#----------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+overview = """\
+This demo shows Drand and Drop using a custom data type and a custom data object.  A type called "DoodleLines" is created and a Python Pickle of a list is actually transfered in the drag and drop opperation.
+
+A second data object is also created containing a bitmap of the image and is made available to any drop target that accepts bitmaps, such as MS Word.
+
+The two data objects are combined in a wxDataObjectComposite and the rest is handled by the framework.
+"""
diff --git a/utils/wxPython/demo/DragAndDrop.py b/utils/wxPython/demo/DragAndDrop.py
new file mode 100644
index 0000000000..0fd84b781f
--- /dev/null
+++ b/utils/wxPython/demo/DragAndDrop.py
@@ -0,0 +1,193 @@
+
+from wxPython.wx import *
+
+#----------------------------------------------------------------------
+
+class ClipTextPanel(wxPanel):
+    def __init__(self, parent, log):
+        wxPanel.__init__(self, parent, -1)
+        self.log = log
+
+        self.do = wxTextDataObject()
+
+        #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+
+        sizer = wxBoxSizer(wxVERTICAL)
+        sizer.Add(wxStaticText(self, -1,
+                               "Copy/Paste text to/from\n"
+                               "this window and other apps"), 0, wxEXPAND|wxALL, 2)
+
+        self.text = wxTextCtrl(self, -1, "", style=wxTE_MULTILINE|wxHSCROLL)
+        sizer.Add(self.text, 1, wxEXPAND)
+
+        hsz = wxBoxSizer(wxHORIZONTAL)
+        hsz.Add(wxButton(self, 6050, " Copy "), 1, wxEXPAND|wxALL, 2)
+        hsz.Add(wxButton(self, 6051, " Paste "), 1, wxEXPAND|wxALL, 2)
+        sizer.Add(hsz, 0, wxEXPAND)
+        sizer.Add(wxButton(self, 6052, " Copy Bitmap "), 0, wxEXPAND|wxALL, 2)
+
+        EVT_BUTTON(self, 6050, self.OnCopy)
+        EVT_BUTTON(self, 6051, self.OnPaste)
+        EVT_BUTTON(self, 6052, self.OnCopyBitmap)
+
+        self.SetAutoLayout(true)
+        self.SetSizer(sizer)
+
+
+    def OnCopy(self, evt):
+        self.do.SetText(self.text.GetValue())
+        wxTheClipboard.Open()
+        wxTheClipboard.SetData(self.do)
+        wxTheClipboard.Close()
+
+
+    def OnPaste(self, evt):
+        wxTheClipboard.Open()
+        success = wxTheClipboard.GetData(self.do)
+        wxTheClipboard.Close()
+        if success:
+            self.text.SetValue(self.do.GetText())
+        else:
+            wxMessageBox("There is no data in the clipboard in the required format",
+                         "Error")
+
+    def OnCopyBitmap(self, evt):
+        dlg = wxFileDialog(self, "Choose a bitmap to copy", wildcard="*.bmp")
+        if dlg.ShowModal() == wxID_OK:
+            bmp = wxBitmap(dlg.GetFilename(), wxBITMAP_TYPE_BMP)
+            bmpdo = wxBitmapDataObject(bmp)
+            wxTheClipboard.Open()
+            wxTheClipboard.SetData(bmpdo)
+            wxTheClipboard.Close()
+
+            wxMessageBox("The bitmap is now in the Clipboard.  Switch to a graphics\n"
+                         "editor and try pasting it in...")
+        dlg.Destroy()
+
+#----------------------------------------------------------------------
+
+class OtherDropTarget(wxPyDropTarget):
+    def __init__(self, window, log):
+        wxPyDropTarget.__init__(self)
+        self.log = log
+        self.do = wxFileDataObject()
+        self.SetDataObject(self.do)
+
+    def OnEnter(self, x, y, d):
+        self.log.WriteText("OnEnter: %d, %d, %d\n" % (x, y, d))
+        return wxDragCopy
+
+    #def OnDragOver(self, x, y, d):
+    #    self.log.WriteText("OnDragOver: %d, %d, %d\n" % (x, y, d))
+    #    return wxDragCopy
+
+    def OnLeave(self):
+        self.log.WriteText("OnLeave\n")
+
+    def OnDrop(self, x, y):
+        self.log.WriteText("OnDrop: %d %d\n" % (x, y))
+        return true
+
+    def OnData(self, x, y, d):
+        self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d))
+        self.GetData()
+        self.log.WriteText("%s\n" % self.do.GetFilenames())
+        return d
+
+
+
+
+class MyFileDropTarget(wxFileDropTarget):
+    def __init__(self, window, log):
+        wxFileDropTarget.__init__(self)
+        self.window = window
+        self.log = log
+
+    def OnDropFiles(self, x, y, filenames):
+        self.window.SetInsertionPointEnd()
+        self.window.WriteText("\n%d file(s) dropped at %d,%d:\n" %
+                              (len(filenames), x, y))
+        for file in filenames:
+            self.window.WriteText(file + '\n')
+
+
+
+class FileDropPanel(wxPanel):
+    def __init__(self, parent, log):
+        wxPanel.__init__(self, parent, -1)
+
+        #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+
+        sizer = wxBoxSizer(wxVERTICAL)
+        sizer.Add(wxStaticText(self, -1, " \nDrag some files here:"),
+                  0, wxEXPAND|wxALL, 2)
+
+        self.text = wxTextCtrl(self, -1, "",
+                               style = wxTE_MULTILINE|wxHSCROLL|wxTE_READONLY)
+        dt = MyFileDropTarget(self, log)
+        self.text.SetDropTarget(dt)
+        sizer.Add(self.text, 1, wxEXPAND)
+
+        self.SetAutoLayout(true)
+        self.SetSizer(sizer)
+
+
+    def WriteText(self, text):
+        self.text.WriteText(text)
+
+    def SetInsertionPointEnd(self):
+        self.text.SetInsertionPointEnd()
+
+
+#----------------------------------------------------------------------
+#----------------------------------------------------------------------
+
+class TestPanel(wxPanel):
+    def __init__(self, parent, log):
+        wxPanel.__init__(self, parent, -1)
+
+        self.SetAutoLayout(true)
+        outsideSizer = wxBoxSizer(wxVERTICAL)
+
+        text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE)
+        text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false))
+        text.SetLabel("Clipboard / Drag-And-Drop")
+        text.SetForegroundColour(wxBLUE)
+        outsideSizer.Add(text, 0, wxEXPAND|wxALL, 5)
+        outsideSizer.Add(wxStaticLine(self, -1), 0, wxEXPAND)
+
+        inSizer = wxBoxSizer(wxHORIZONTAL)
+        inSizer.Add(ClipTextPanel(self, log), 1, wxEXPAND)
+        inSizer.Add(FileDropPanel(self, log), 1, wxEXPAND)
+
+        outsideSizer.Add(inSizer, 1, wxEXPAND)
+        self.SetSizer(outsideSizer)
+
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    win = TestPanel(nb, log)
+    return win
+
+#----------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+overview = """\
+This demo shows some examples of data transfer through clipboard or drag and drop. In wxWindows, these two ways to transfer data (either between different applications or inside one and the same) are very similar which allows to implement both of them using almost the same code - or, in other words, if you implement drag and drop support for your application, you get clipboard support for free and vice versa.
+
+At the heart of both clipboard and drag and drop operations lies the wxDataObject class. The objects of this class (or, to be precise, classes derived from it) represent the data which is being carried by the mouse during drag and drop operation or copied to or pasted from the clipboard. wxDataObject is a "smart" piece of data because it knows which formats it supports (see GetFormatCount and GetAllFormats) and knows how to render itself in any of them (see GetDataHere). It can also receive its value from the outside in a format it supports if it implements the SetData method. Please see the documentation of this class for more details.
+
+Both clipboard and drag and drop operations have two sides: the source and target, the data provider and the data receiver. These which may be in the same application and even the same window when, for example, you drag some text from one position to another in a word processor. Let us describe what each of them should do.
+
+"""
diff --git a/utils/wxPython/demo/FontEnumerator.py b/utils/wxPython/demo/FontEnumerator.py
new file mode 100644
index 0000000000..eff193fc0c
--- /dev/null
+++ b/utils/wxPython/demo/FontEnumerator.py
@@ -0,0 +1,56 @@
+
+from wxPython.wx import *
+
+#----------------------------------------------------------------------
+
+class MyFontEnumerator(wxFontEnumerator):
+    def __init__(self, list):
+        wxFontEnumerator.__init__(self)
+        self.list = list
+
+    def OnFacename(self, face):
+        self.list.append(face)
+        return true
+
+
+
+class TestPanel(wxPanel):
+    def __init__(self, parent, log):
+        wxPanel.__init__(self, parent, -1)
+
+        list = []
+        e = MyFontEnumerator(list)
+        e.EnumerateFacenames()
+        list.sort()
+
+        wxStaticText(self, -1, "Face names:", wxPoint(15, 50), wxSize(65, 18))
+        self.lb1 = wxListBox(self, 60, wxPoint(80, 50), wxSize(200, 250),
+                             list, wxLB_SINGLE)
+        self.lb1.SetSelection(0)
+
+
+
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    win = TestPanel(nb, log)
+    return win
+
+#----------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+overview = """\
+wxFontEnumerator enumerates either all available fonts on the system or only the ones with given attributes - either only fixed-width (suited for use in programs such as terminal emulators and the like) or the fonts available in the given encoding.
+
+"""
diff --git a/utils/wxPython/demo/Main.py b/utils/wxPython/demo/Main.py
index 21c5db7bc5..bb29364565 100644
--- a/utils/wxPython/demo/Main.py
+++ b/utils/wxPython/demo/Main.py
@@ -23,7 +23,7 @@ _useNestedSplitter = true
 _treeList = [
     ('Managed Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame']),
 
-    ('Miscellaneous Windows', ['wxGrid', 'wxSashWindow',
+    ('Non-Managed Windows', ['wxGrid', 'wxSashWindow',
                                'wxScrolledWindow', 'wxSplitterWindow',
                                'wxStatusBar', 'wxToolBar', 'wxNotebook',
                                'wxHtmlWindow']),
@@ -40,8 +40,9 @@ _treeList = [
 
     ('Window Layout', ['wxLayoutConstraints', 'Sizers', 'OldSizers']),
 
-    ('Miscellaneous', ['wxTimer', 'wxValidator', 'wxGLCanvas', 'DialogUnits',
-                       'wxImage', 'PrintFramework', 'wxOGL']),
+    ('Miscellaneous', [ 'DragAndDrop', 'CustomDragAndDrop', 'FontEnumerator',
+                        'wxTimer', 'wxValidator', 'wxGLCanvas', 'DialogUnits',
+                        'wxImage', 'PrintFramework', 'wxOGL']),
 
     ('wxPython Library', ['OldSizers', 'Layoutf', 'wxScrolledMessageDialog',
                           'wxMultipleChoiceDialog', 'wxPlotCanvas', 'wxFloatBar',
diff --git a/utils/wxPython/demo/wxSpinButton.py b/utils/wxPython/demo/wxSpinButton.py
index 4974e1cef0..67308b41d0 100644
--- a/utils/wxPython/demo/wxSpinButton.py
+++ b/utils/wxPython/demo/wxSpinButton.py
@@ -17,7 +17,8 @@ class TestPanel(wxPanel):
 
         self.text = wxTextCtrl(self, -1, "1", wxPoint(30, 50), wxSize(60, -1))
         h = self.text.GetSize().height
-        self.spin = wxSpinButton(self, 20, wxPoint(92, 50), wxSize(h*2, h))
+        self.spin = wxSpinButton(self, 20, wxPoint(92, 50), wxSize(h, h),
+                                 wxSP_VERTICAL)
         self.spin.SetRange(1, 100)
         self.spin.SetValue(1)
 
diff --git a/utils/wxPython/demo/wxTreeCtrl.py b/utils/wxPython/demo/wxTreeCtrl.py
index 1535f6543b..7288f30ec3 100644
--- a/utils/wxPython/demo/wxTreeCtrl.py
+++ b/utils/wxPython/demo/wxTreeCtrl.py
@@ -13,11 +13,12 @@ class TestTreeCtrlPanel(wxPanel):
         tID = NewId()
 
         self.tree = wxTreeCtrl(self, tID, wxDefaultPosition, wxDefaultSize,
-                               wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS) #| wxTR_MULTIPLE)
+                               wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS)# | wxTR_MULTIPLE)
 
         self.root = self.tree.AddRoot("The Root Item")
         for x in range(15):
             child = self.tree.AppendItem(self.root, "Item %d" % x)
+            #self.tree.SelectItem(child)
             for y in range(5):
                 last = self.tree.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y)))
                 for z in range(5):
@@ -35,14 +36,14 @@ class TestTreeCtrlPanel(wxPanel):
         EVT_RIGHT_UP(self.tree, self.OnRightUp)
 
     def OnRightClick(self, event):
-        (x,y) = event.Position();
-        item = self.tree.HitTest(wxPoint(x,y))
+        pt = event.GetPosition();
+        item = self.tree.HitTest(pt)
         self.log.WriteText("OnRightClick: %s\n" % self.tree.GetItemText(item))
         self.tree.SelectItem(item)
 
     def OnRightUp(self, event):
-        (x,y) = event.Position();
-        item = self.tree.HitTest(wxPoint(x,y))
+        pt = event.GetPosition();
+        item = self.tree.HitTest(pt)
         self.log.WriteText("OnRightUp: %s (manually starting label edit)\n"
                            % self.tree.GetItemText(item))
         self.tree.EditLabel(item)
@@ -69,8 +70,8 @@ class TestTreeCtrlPanel(wxPanel):
 
 
     def OnLeftDClick(self, event):
-        (x,y) = event.Position();
-        item = self.tree.HitTest(wxPoint(x,y))
+        pt = event.GetPosition();
+        item = self.tree.HitTest(pt)
         self.log.WriteText("OnLeftDClick: %s\n" % self.tree.GetItemText(item))
 
 
diff --git a/utils/wxPython/modules/html/_extras.py b/utils/wxPython/modules/html/_extras.py
index 6514f173f3..54bbb390ac 100644
--- a/utils/wxPython/modules/html/_extras.py
+++ b/utils/wxPython/modules/html/_extras.py
@@ -1,7 +1,7 @@
 
 # Stuff these names into the wx namespace so wxPyConstructObject can find them
 import wx
-wx.wxHtmlTagPtr             = wxHtmlTag
+wx.wxHtmlTagPtr             = wxHtmlTagPtr
 wx.wxHtmlParserPtr          = wxHtmlParserPtr
 wx.wxHtmlWinParserPtr       = wxHtmlWinParserPtr
 wx.wxHtmlTagHandlerPtr      = wxHtmlTagHandlerPtr
@@ -9,5 +9,5 @@ wx.wxHtmlWinTagHandlerPtr   = wxHtmlWinTagHandlerPtr
 wx.wxHtmlCellPtr            = wxHtmlCellPtr
 wx.wxHtmlContainerCellPtr   = wxHtmlContainerCellPtr
 wx.wxHtmlWidgetCellPtr      = wxHtmlWidgetCellPtr
-wx.HtmlHistoryItemPtr     = HtmlHistoryItemPtr
+wx.HtmlHistoryItemPtr       = HtmlHistoryItemPtr
 wx.wxHtmlWindowPtr          = wxHtmlWindowPtr
diff --git a/utils/wxPython/modules/html/html.cpp b/utils/wxPython/modules/html/html.cpp
index f735c8e52c..db0b0f3cca 100644
--- a/utils/wxPython/modules/html/html.cpp
+++ b/utils/wxPython/modules/html/html.cpp
@@ -118,87 +118,6 @@ wxPoint wxPyDefaultPosition(wxDefaultPosition);
 wxSize wxPyDefaultSize(wxDefaultSize);
 #endif
 
-
-#if 0
-static PyObject* mod_dict = NULL; // will be set by init
-
-#include <wx/html/mod_templ.h>
-
-TAG_HANDLER_BEGIN(PYTHONTAG, "PYTHON")
-    TAG_HANDLER_PROC(tag)
-    {
-        wxWindow *wnd;
-        wxString errmsg;
-        char pbuf[256];
-
-        int fl = 0;
-
-        bool doSave = wxPyRestoreThread();
-        while (1) {
-           if (tag.HasParam("FLOAT"))
-               tag.ScanParam("FLOAT", "%i", &fl);
-           PyObject* pyfunc = PyDict_GetItemString(mod_dict, "WidgetStarter");
-           if (pyfunc == NULL) {
-               errmsg = "Could not find object WidgetStarter";
-               break;
-           }
-           if (! PyCallable_Check(pyfunc)) {
-               errmsg = "WidgetStarter does not appear to be callable";
-               break;
-           }
-           SWIG_MakePtr(pbuf, m_WParser->GetWindow(), "_wxPyHtmlWindow_p");
-           PyObject* arglist = Py_BuildValue("(s,s)", pbuf,
-                               (const char*)tag.GetAllParams());
-           if (! arglist) {
-               errmsg = "Failed making argument list";
-               break;
-           }
-           PyObject* ret = PyEval_CallObject(pyfunc, arglist);
-           Py_DECREF(arglist);
-           if (ret == NULL) {
-              errmsg = "An error occured while calling WidgetStarter";
-              if (PyErr_Occurred())
-                 PyErr_Print();
-              break;
-           }
-           wnd = NULL;
-           if (PyString_Check(ret)) {
-              char* thisc = PyString_AsString(ret);
-              SWIG_GetPtr(thisc, (void**)&wnd, "_wxWindow_p");
-           }
-           Py_DECREF(ret);
-           if (! wnd) {
-               errmsg = "Could not make a wxWindow pointer from return ptr";
-               break;
-           }
-           wxPySaveThread(doSave);
-           wnd -> Show(TRUE);
-           m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, fl));
-           return FALSE;
-        }
-
-        wxPySaveThread(doSave);
-
-        /* we got out of the loop. Must be an error. Show a box stating it. */
-        wnd = new wxTextCtrl( m_WParser -> GetWindow(), -1,
-                              errmsg, wxPoint(0,0),
-                              wxSize(300, 100), wxTE_MULTILINE );
-        wnd -> Show(TRUE);
-        m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, 100));
-        return FALSE;
-    }
-
-TAG_HANDLER_END(PYTHONTAG)
-
-TAGS_MODULE_BEGIN(PythonTag)
-
-    TAGS_MODULE_ADD(PYTHONTAG)
-
-TAGS_MODULE_END(PythonTag)
-
-// Note: see also the init function where we add the module!
-#endif
-
 class wxPyHtmlTagHandler : public wxHtmlTagHandler {
 public:
     wxPyHtmlTagHandler() : wxHtmlTagHandler() {};
@@ -5499,9 +5418,12 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
     { "_class_wxJPEGHandler","_wxJPEGHandler",0},
+    { "_wxPyBitmapDataObject","_class_wxPyBitmapDataObject",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
     { "_wxBMPHandler","_class_wxBMPHandler",0},
     { "_wxImage","_class_wxImage",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -5509,10 +5431,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_wxFontData","_class_wxFontData",0},
-    { "___wxPyCleanup","_class___wxPyCleanup",0},
     { "_class_HtmlHistoryItem","_HtmlHistoryItem",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxPyTreeItemData","_wxPyTreeItemData",0},
     { "_class_wxStaticBoxSizer","_wxStaticBoxSizer",0},
@@ -5540,7 +5463,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
+    { "_wxPyDataObjectSimple","_class_wxPyDataObjectSimple",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
     { "_wxNotebookEvent","_class_wxNotebookEvent",0},
@@ -5551,16 +5476,19 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_wxSashWindow","_class_wxSashWindow",0},
     { "_class_wxSizer","_wxSizer",0},
     { "_class_wxPrintDialogData","_wxPrintDialogData",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_class_wxSashEvent","_wxSashEvent",0},
     { "_wxDC","_class_wxDC",0},
     { "_wxSizerItem","_class_wxSizerItem",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxListEvent","_class_wxListEvent",0},
     { "_class_wxSingleChoiceDialog","_wxSingleChoiceDialog",0},
     { "_wxProgressDialog","_class_wxProgressDialog",0},
@@ -5568,6 +5496,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintPreview","_class_wxPrintPreview",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
     { "_wxSashLayoutWindow","_class_wxSashLayoutWindow",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -5592,6 +5521,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxToolTip","_wxToolTip",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_class_wxGrid","_wxGrid",0},
@@ -5601,9 +5531,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxBusyCursor","_class_wxBusyCursor",0},
     { "_wxPageSetupDialog","_class_wxPageSetupDialog",0},
     { "_class_wxPrinter","_wxPrinter",0},
+    { "_class_wxFileDataObject","_wxFileDataObject",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxCaret","_class_wxCaret",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_class_wxLayoutAlgorithm","_wxLayoutAlgorithm",0},
@@ -5614,8 +5546,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPyPrintout","_class_wxHtmlPrintout",SwigwxHtmlPrintoutTowxPyPrintout},
     { "_class_wxPyPrintout","_wxHtmlPrintout",SwigwxHtmlPrintoutTowxPyPrintout},
     { "_class_wxPyPrintout","_wxPyPrintout",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_class_wxSashWindow","_wxSashWindow",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -5637,7 +5572,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxFontData","_wxFontData",0},
     { "_class_wxPNMHandler","_wxPNMHandler",0},
     { "_wxBoxSizer","_class_wxBoxSizer",0},
-    { "_class___wxPyCleanup","___wxPyCleanup",0},
     { "_wxHtmlCell","_class_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxHtmlCell},
     { "_wxHtmlCell","_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxHtmlCell},
     { "_wxHtmlCell","_class_wxHtmlContainerCell",SwigwxHtmlContainerCellTowxHtmlCell},
@@ -5666,23 +5600,27 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMDIChildFrame","_class_wxMDIChildFrame",0},
     { "_wxListItem","_class_wxListItem",0},
     { "_class_wxToolBar","_wxToolBar",0},
+    { "_wxDropTarget","_class_wxDropTarget",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
     { "_wxCalculateLayoutEvent","_class_wxCalculateLayoutEvent",0},
     { "_wxPyHtmlTagHandler","_class_wxPyHtmlWinTagHandler",SwigwxPyHtmlWinTagHandlerTowxPyHtmlTagHandler},
     { "_wxPyHtmlTagHandler","_wxPyHtmlWinTagHandler",SwigwxPyHtmlWinTagHandlerTowxPyHtmlTagHandler},
     { "_wxPyHtmlTagHandler","_class_wxPyHtmlTagHandler",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_class_wxPreviewFrame","_wxPreviewFrame",0},
     { "_wxHtmlContainerCell","_class_wxHtmlContainerCell",0},
     { "_wxStaticText","_class_wxStaticText",0},
     { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
     { "_wxCloseEvent","_class_wxCloseEvent",0},
     { "_class_wxSplitterEvent","_wxSplitterEvent",0},
     { "_wxNotebook","_class_wxNotebook",0},
@@ -5712,12 +5650,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxRadioButton","_class_wxRadioButton",0},
     { "_class_wxMessageDialog","_wxMessageDialog",0},
     { "_wxHtmlTag","_class_wxHtmlTag",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
     { "_signed_int","_int",0},
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -5728,6 +5668,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_WXTYPE","_signed_short",0},
     { "_WXTYPE","_unsigned_short",0},
     { "_wxFileDialog","_class_wxFileDialog",0},
+    { "_class_wxDropTarget","_wxDropTarget",0},
     { "_class_wxCaret","_wxCaret",0},
     { "_class_wxMDIClientWindow","_wxMDIClientWindow",0},
     { "_class_wxBrush","_wxBrush",0},
@@ -5743,12 +5684,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticText","_wxStaticText",0},
     { "_wxPrintDialogData","_class_wxPrintDialogData",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxSashEvent","_class_wxSashEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
     { "_class_wxMenuEvent","_wxMenuEvent",0},
     { "_wxPaletteChangedEvent","_class_wxPaletteChangedEvent",0},
+    { "_class_wxPyBitmapDataObject","_wxPyBitmapDataObject",0},
     { "_wxClientDC","_class_wxClientDC",0},
     { "_wxMouseEvent","_class_wxMouseEvent",0},
     { "_wxListCtrl","_class_wxListCtrl",0},
@@ -5767,6 +5710,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_signed_short","_WXTYPE",0},
     { "_signed_short","_short",0},
     { "_wxMemoryDC","_class_wxMemoryDC",0},
+    { "_wxPyTextDataObject","_class_wxPyTextDataObject",0},
     { "_class_wxPrintDialog","_wxPrintDialog",0},
     { "_wxPaintDC","_class_wxPaintDC",0},
     { "_class_wxWindowDC","_wxWindowDC",0},
@@ -5777,6 +5721,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
     { "_wxPostScriptDC","_class_wxPostScriptDC",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
     { "_class_wxImageHandler","_wxImageHandler",0},
     { "_class_wxHtmlTag","_wxHtmlTag",0},
     { "_wxScrolledWindow","_class_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxScrolledWindow},
@@ -5784,9 +5729,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_wxTreeItemId","_class_wxTreeItemId",0},
     { "_unsigned_char","_byte",0},
+    { "_wxDropSource","_class_wxDropSource",0},
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -5804,6 +5751,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticBox","_wxStaticBox",0},
     { "_wxLayoutAlgorithm","_class_wxLayoutAlgorithm",0},
     { "_wxHtmlPrintout","_class_wxHtmlPrintout",0},
+    { "_class_wxPyDataObjectSimple","_wxPyDataObjectSimple",0},
     { "_class_wxScrollEvent","_wxScrollEvent",0},
     { "_wxJoystickEvent","_class_wxJoystickEvent",0},
     { "_class_wxChoice","_wxChoice",0},
@@ -5817,6 +5765,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
     { "_class_wxNotebook","_wxNotebook",0},
     { "_wxJPEGHandler","_class_wxJPEGHandler",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -5826,6 +5775,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
     { "_class_wxSizerItem","_wxSizerItem",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -5845,12 +5795,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPyApp","_wxPyApp",0},
     { "_wxSize","_class_wxSize",0},
     { "_wxRegionIterator","_class_wxRegionIterator",0},
+    { "_class_wxPyTextDataObject","_wxPyTextDataObject",0},
     { "_class_wxMDIParentFrame","_wxMDIParentFrame",0},
     { "_wxPyTreeItemData","_class_wxPyTreeItemData",0},
     { "_wxStaticBoxSizer","_class_wxStaticBoxSizer",0},
     { "_wxHtmlDCRenderer","_class_wxHtmlDCRenderer",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
     { "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
@@ -5858,6 +5810,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTreeItemId","_wxTreeItemId",0},
     { "_wxTreeCtrl","_class_wxTreeCtrl",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxDropSource","_wxDropSource",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
     { "_class_wxControl","_wxControl",0},
     { "_wxStaticBitmap","_class_wxStaticBitmap",0},
@@ -5867,7 +5820,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPageSetupDialog","_wxPageSetupDialog",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxFontDialog","_class_wxFontDialog",0},
@@ -5877,6 +5839,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxSizer","_class_wxSizer",0},
     { "_class_wxShowEvent","_wxShowEvent",0},
     { "_class_wxPCXHandler","_wxPCXHandler",0},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
     { "_wxActivateEvent","_class_wxActivateEvent",0},
     { "_wxGauge","_class_wxGauge",0},
     { "_class_wxCheckListBox","_wxCheckListBox",0},
@@ -5890,11 +5853,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxSizeEvent","_wxSizeEvent",0},
     { "_class_wxListCtrl","_wxListCtrl",0},
     { "_class_wxPyHtmlWinTagHandler","_wxPyHtmlWinTagHandler",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxGridCell","_wxGridCell",0},
     { "_HtmlHistoryItem","_class_HtmlHistoryItem",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
     { "_wxMenuBar","_class_wxMenuBar",0},
     { "_wxTreeEvent","_class_wxTreeEvent",0},
     { "_wxDirDialog","_class_wxDirDialog",0},
@@ -5919,9 +5884,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPageSetupDialogData","_class_wxPageSetupDialogData",0},
     { "_wxPyHtmlWindow","_class_wxPyHtmlWindow",0},
     { "_class_wxPalette","_wxPalette",0},
+    { "_wxFileDataObject","_class_wxFileDataObject",0},
     { "_class_wxQueryLayoutInfoEvent","_wxQueryLayoutInfoEvent",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
     { "_wxMDIClientWindow","_class_wxMDIClientWindow",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_class_wxFontDialog","_wxFontDialog",0},
     { "_wxWindow","_class_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxWindow},
     { "_wxWindow","_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxWindow},
@@ -5963,23 +5930,11 @@ SWIGEXPORT(void) inithtmlc() {
 	 PyDict_SetItemString(d,"wxPAGE_ALL", PyInt_FromLong((long) wxPAGE_ALL));
 
 
-#if 0
-    /* This is a bit cheesy. SWIG happens to call the dictionary d...
-     * I save it here, 'cause I don't know how to get it back later! */
-    mod_dict = d;
-#endif
-
     inithtmlhelpc();
 
     wxClassInfo::CleanUpClasses();
     wxClassInfo::InitializeClasses();
 
-#if 0
-    /* specifically add our python tag handler; it doesn't seem to
-     * happen by itself... */
-    wxHtmlWinParser::AddModule(new HTML_ModulePythonTag());
-#endif
-
     // Until wxFileSystem is wrapped...
     #if wxUSE_FS_ZIP
        wxFileSystem::AddHandler(new wxZipFSHandler);
diff --git a/utils/wxPython/modules/html/html.i b/utils/wxPython/modules/html/html.i
index f5eb1cf7f8..c5832770a3 100644
--- a/utils/wxPython/modules/html/html.i
+++ b/utils/wxPython/modules/html/html.i
@@ -51,90 +51,7 @@ wxSize wxPyDefaultSize(wxDefaultSize);
 %}
 
 %pragma(python) code = "import wx"
-%pragma(python) code = "widget = htmlc"
 
-%{
-
-#if 0
-static PyObject* mod_dict = NULL; // will be set by init
-
-#include <wx/html/mod_templ.h>
-
-TAG_HANDLER_BEGIN(PYTHONTAG, "PYTHON")
-    TAG_HANDLER_PROC(tag)
-    {
-        wxWindow *wnd;
-        wxString errmsg;
-        char pbuf[256];
-
-        int fl = 0;
-
-        bool doSave = wxPyRestoreThread();
-        while (1) {
-           if (tag.HasParam("FLOAT"))
-               tag.ScanParam("FLOAT", "%i", &fl);
-           PyObject* pyfunc = PyDict_GetItemString(mod_dict, "WidgetStarter");
-           if (pyfunc == NULL) {
-               errmsg = "Could not find object WidgetStarter";
-               break;
-           }
-           if (! PyCallable_Check(pyfunc)) {
-               errmsg = "WidgetStarter does not appear to be callable";
-               break;
-           }
-           SWIG_MakePtr(pbuf, m_WParser->GetWindow(), "_wxPyHtmlWindow_p");
-           PyObject* arglist = Py_BuildValue("(s,s)", pbuf,
-                               (const char*)tag.GetAllParams());
-           if (! arglist) {
-               errmsg = "Failed making argument list";
-               break;
-           }
-           PyObject* ret = PyEval_CallObject(pyfunc, arglist);
-           Py_DECREF(arglist);
-           if (ret == NULL) {
-              errmsg = "An error occured while calling WidgetStarter";
-              if (PyErr_Occurred())
-                 PyErr_Print();
-              break;
-           }
-           wnd = NULL;
-           if (PyString_Check(ret)) {
-              char* thisc = PyString_AsString(ret);
-              SWIG_GetPtr(thisc, (void**)&wnd, "_wxWindow_p");
-           }
-           Py_DECREF(ret);
-           if (! wnd) {
-               errmsg = "Could not make a wxWindow pointer from return ptr";
-               break;
-           }
-           wxPySaveThread(doSave);
-           wnd -> Show(TRUE);
-           m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, fl));
-           return FALSE;
-        }
-
-        wxPySaveThread(doSave);
-
-        /* we got out of the loop. Must be an error. Show a box stating it. */
-        wnd = new wxTextCtrl( m_WParser -> GetWindow(), -1,
-                              errmsg, wxPoint(0,0),
-                              wxSize(300, 100), wxTE_MULTILINE );
-        wnd -> Show(TRUE);
-        m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, 100));
-        return FALSE;
-    }
-
-TAG_HANDLER_END(PYTHONTAG)
-
-TAGS_MODULE_BEGIN(PythonTag)
-
-    TAGS_MODULE_ADD(PYTHONTAG)
-
-TAGS_MODULE_END(PythonTag)
-
-// Note: see also the init function where we add the module!
-#endif
-%}
 
 //---------------------------------------------------------------------------
 
@@ -606,23 +523,11 @@ public:
 
 %init %{
 
-#if 0
-    /* This is a bit cheesy. SWIG happens to call the dictionary d...
-     * I save it here, 'cause I don't know how to get it back later! */
-    mod_dict = d;
-#endif
-
     inithtmlhelpc();
 
     wxClassInfo::CleanUpClasses();
     wxClassInfo::InitializeClasses();
 
-#if 0
-    /* specifically add our python tag handler; it doesn't seem to
-     * happen by itself... */
-    wxHtmlWinParser::AddModule(new HTML_ModulePythonTag());
-#endif
-
     // Until wxFileSystem is wrapped...
     #if wxUSE_FS_ZIP
        wxFileSystem::AddHandler(new wxZipFSHandler);
diff --git a/utils/wxPython/modules/html/html.py b/utils/wxPython/modules/html/html.py
index d416cbe864..2683d98413 100644
--- a/utils/wxPython/modules/html/html.py
+++ b/utils/wxPython/modules/html/html.py
@@ -9,6 +9,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from events import *
 
 from mdi import *
@@ -33,7 +35,6 @@ from printfw import *
 
 from sizers import *
 import wx
-widget = htmlc
 class wxHtmlTagPtr :
     def __init__(self,this):
         self.this = this
@@ -685,7 +686,7 @@ wxPAGE_ALL = htmlc.wxPAGE_ALL
 
 # Stuff these names into the wx namespace so wxPyConstructObject can find them
 import wx
-wx.wxHtmlTagPtr             = wxHtmlTag
+wx.wxHtmlTagPtr             = wxHtmlTagPtr
 wx.wxHtmlParserPtr          = wxHtmlParserPtr
 wx.wxHtmlWinParserPtr       = wxHtmlWinParserPtr
 wx.wxHtmlTagHandlerPtr      = wxHtmlTagHandlerPtr
@@ -693,5 +694,5 @@ wx.wxHtmlWinTagHandlerPtr   = wxHtmlWinTagHandlerPtr
 wx.wxHtmlCellPtr            = wxHtmlCellPtr
 wx.wxHtmlContainerCellPtr   = wxHtmlContainerCellPtr
 wx.wxHtmlWidgetCellPtr      = wxHtmlWidgetCellPtr
-wx.HtmlHistoryItemPtr     = HtmlHistoryItemPtr
+wx.HtmlHistoryItemPtr       = HtmlHistoryItemPtr
 wx.wxHtmlWindowPtr          = wxHtmlWindowPtr
diff --git a/utils/wxPython/modules/html/htmlhelp.cpp b/utils/wxPython/modules/html/htmlhelp.cpp
index b571252404..2e5114e414 100644
--- a/utils/wxPython/modules/html/htmlhelp.cpp
+++ b/utils/wxPython/modules/html/htmlhelp.cpp
@@ -2900,6 +2900,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxPyTreeItemData","_wxPyTreeItemData",0},
     { "_class_wxStaticBoxSizer","_wxStaticBoxSizer",0},
+    { "_class_wxHtmlDCRenderer","_wxHtmlDCRenderer",0},
     { "_wxHtmlHelpData","_class_wxHtmlHelpData",0},
     { "_class_wxEvtHandler","_class_wxHtmlHelpController",SwigwxHtmlHelpControllerTowxEvtHandler},
     { "_class_wxEvtHandler","_wxHtmlHelpController",SwigwxHtmlHelpControllerTowxEvtHandler},
@@ -2919,6 +2920,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxToolTip","_class_wxToolTip",0},
     { "_wxGrid","_class_wxGrid",0},
     { "_wxPNGHandler","_class_wxPNGHandler",0},
+    { "_class_wxHtmlEasyPrinting","_wxHtmlEasyPrinting",0},
     { "_class_wxColourData","_wxColourData",0},
     { "_class_wxPageSetupDialogData","_wxPageSetupDialogData",0},
     { "_wxPrinter","_class_wxPrinter",0},
@@ -2989,6 +2991,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxCaret","_class_wxCaret",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_class_wxLayoutAlgorithm","_wxLayoutAlgorithm",0},
+    { "_class_wxHtmlPrintout","_wxHtmlPrintout",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_wxMiniFrame","_class_wxMiniFrame",0},
     { "_class_wxNotebookEvent","_wxNotebookEvent",0},
@@ -3174,6 +3177,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_short","_signed_short",0},
     { "_class_wxStaticBox","_wxStaticBox",0},
     { "_wxLayoutAlgorithm","_class_wxLayoutAlgorithm",0},
+    { "_wxHtmlPrintout","_class_wxHtmlPrintout",0},
     { "_class_wxScrollEvent","_wxScrollEvent",0},
     { "_wxJoystickEvent","_class_wxJoystickEvent",0},
     { "_class_wxChoice","_wxChoice",0},
@@ -3221,6 +3225,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMDIParentFrame","_wxMDIParentFrame",0},
     { "_wxPyTreeItemData","_class_wxPyTreeItemData",0},
     { "_wxStaticBoxSizer","_class_wxStaticBoxSizer",0},
+    { "_wxHtmlDCRenderer","_class_wxHtmlDCRenderer",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
     { "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
@@ -3285,6 +3290,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxConfig","_wxConfig",0},
     { "_wxKeyEvent","_class_wxKeyEvent",0},
     { "_wxMoveEvent","_class_wxMoveEvent",0},
+    { "_wxHtmlEasyPrinting","_class_wxHtmlEasyPrinting",0},
     { "_wxColourData","_class_wxColourData",0},
     { "_wxPageSetupDialogData","_class_wxPageSetupDialogData",0},
     { "_wxPyHtmlWindow","_class_wxPyHtmlWindow",0},
diff --git a/utils/wxPython/src/_defs.i b/utils/wxPython/src/_defs.i
index 49412a7a8f..98c6124f09 100644
--- a/utils/wxPython/src/_defs.i
+++ b/utils/wxPython/src/_defs.i
@@ -157,6 +157,8 @@ typedef unsigned int    uint;
 typedef signed   int    EBool;
 typedef unsigned int    size_t
 typedef int             wxPrintQuality;
+typedef int             wxCoord;
+
 
 //---------------------------------------------------------------------------
 
@@ -352,14 +354,6 @@ enum {
     wxSIZE_AUTO,
     wxSIZE_USE_EXISTING,
     wxSIZE_ALLOW_MINUS_ONE,
-#ifndef __WXGTK__
-    wxDF_TEXT,
-    wxDF_BITMAP,
-    wxDF_METAFILE,
-    wxDF_DIB,
-    wxDF_OEMTEXT,
-    wxDF_FILENAME,
-#endif
     wxPORTRAIT,
     wxLANDSCAPE,
     wxPRINT_QUALITY_HIGH,
diff --git a/utils/wxPython/src/_extras.py b/utils/wxPython/src/_extras.py
index 068413ea1b..cdff6809b3 100644
--- a/utils/wxPython/src/_extras.py
+++ b/utils/wxPython/src/_extras.py
@@ -781,7 +781,16 @@ class wxApp(wxPyApp):
 
 #----------------------------------------------------------------------------
 # DO NOT hold any other references to this object.  This is how we know when
-# to cleanup system resources that wxWin is holding...
+# to cleanup system resources that wxWin is holding.  When this module is
+# unloaded, the refcount on __cleanMeUp goes to zero and it calls the
+# wxApp_CleanUp function.
+
+class __wxPyCleanup:
+    def __init__(self):
+        self.cleanup = wxc.wxApp_CleanUp
+    def __del__(self):
+        self.cleanup()
+
 __cleanMeUp = __wxPyCleanup()
 #----------------------------------------------------------------------------
 
diff --git a/utils/wxPython/src/build.cfg b/utils/wxPython/src/build.cfg
index c4b2ccd76c..5c48af31bc 100644
--- a/utils/wxPython/src/build.cfg
+++ b/utils/wxPython/src/build.cfg
@@ -5,7 +5,7 @@ MODULE = 'wxc'
 SWIGFILES = ['wx.i', 'windows.i', 'windows2.i', 'windows3.i', 'events.i',
              'misc.i', 'misc2.i', 'gdi.i', 'mdi.i', 'controls.i',
              'controls2.i', 'cmndlgs.i', 'stattool.i', 'frames.i',
-             'image.i', 'printfw.i', 'sizers.i',
+             'image.i', 'printfw.i', 'sizers.i', 'clip_dnd.i'
              ]
 
 PYFILES = ['__init__.py', '__version__.py']
diff --git a/utils/wxPython/src/clip_dnd.i b/utils/wxPython/src/clip_dnd.i
new file mode 100644
index 0000000000..7def4d37df
--- /dev/null
+++ b/utils/wxPython/src/clip_dnd.i
@@ -0,0 +1,614 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        clip_dnd.i
+// Purpose:     SWIG definitions for the Clipboard and Drag-n-drop classes
+//
+// Author:      Robin Dunn
+//
+// Created:     31-October-1999
+// RCS-ID:      $Id$
+// Copyright:   (c) 1999 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+
+%module clip_dnd
+
+%{
+#include "helpers.h"
+#include <wx/dataobj.h>
+#include <wx/clipbrd.h>
+#include <wx/dnd.h>
+%}
+
+//----------------------------------------------------------------------
+
+%include typemaps.i
+%include my_typemaps.i
+
+// Import some definitions of other classes, etc.
+%import _defs.i
+%import misc.i
+%import gdi.i
+
+
+%pragma(python) code = "import wx"
+
+//----------------------------------------------------------------------
+
+
+enum wxDataFormatId
+{
+    wxDF_INVALID =          0,
+    wxDF_TEXT =             1,  /* CF_TEXT */
+    wxDF_BITMAP =           2,  /* CF_BITMAP */
+    wxDF_METAFILE =         3,  /* CF_METAFILEPICT */
+    wxDF_SYLK =             4,
+    wxDF_DIF =              5,
+    wxDF_TIFF =             6,
+    wxDF_OEMTEXT =          7,  /* CF_OEMTEXT */
+    wxDF_DIB =              8,  /* CF_DIB */
+    wxDF_PALETTE =          9,
+    wxDF_PENDATA =          10,
+    wxDF_RIFF =             11,
+    wxDF_WAVE =             12,
+    wxDF_UNICODETEXT =      13,
+    wxDF_ENHMETAFILE =      14,
+    wxDF_FILENAME =         15, /* CF_HDROP */
+    wxDF_LOCALE =           16,
+    wxDF_PRIVATE =          20,
+    wxDF_MAX
+};
+
+//----------------------------------------------------------------------
+
+class wxDataFormat {
+public:
+    wxDataFormat( wxDataFormatId type );
+    ~wxDataFormat();
+
+    void SetType(wxDataFormatId format);
+    wxDataFormatId GetType() const;
+
+    wxString GetId() const;
+    void SetId(const char *format);
+};
+
+%new wxDataFormat* wxCustomDataFormat(const wxString &id);
+%{  // An alternate constructor...
+    wxDataFormat* wxCustomDataFormat(const wxString &id) {
+        return new wxDataFormat(id);
+    }
+%}
+
+
+%{
+wxDataFormat wxPyFormatInvalid;
+%}
+%readonly
+%name(wxFormatInvalid) wxDataFormat wxPyFormatInvalid;
+%readwrite
+
+
+//----------------------------------------------------------------------
+
+
+
+class wxDataObject {      //  An abstract base class
+public:
+    enum Direction {
+        Get  = 0x01,    // format is supported by GetDataHere()
+        Set  = 0x02,    // format is supported by SetData()
+        Both = 0x03     // format is supported by both (unused currently)
+    };
+
+    ~wxDataObject();
+
+    wxDataFormat GetPreferredFormat(Direction dir = wxDataObject::Get);
+    size_t GetFormatCount(Direction dir = wxDataObject::Get);
+    void GetAllFormats(wxDataFormat *formats,
+                       Direction dir = wxDataObject::Get);
+    size_t GetDataSize(const wxDataFormat& format);
+    bool GetDataHere(const wxDataFormat& format, void *buf);
+    bool SetData(const wxDataFormat& format,
+                 size_t len, const void * buf);
+    bool IsSupportedFormat(const wxDataFormat& format);
+};
+
+//----------------------------------------------------------------------
+
+class wxDataObjectSimple : public wxDataObject {
+public:
+    wxDataObjectSimple(const wxDataFormat& format = wxPyFormatInvalid);
+
+    const wxDataFormat& GetFormat();
+    void SetFormat(const wxDataFormat& format);
+
+};
+
+
+%{  // Create a new class for wxPython to use
+class wxPyDataObjectSimple : public wxDataObjectSimple {
+public:
+    wxPyDataObjectSimple(const wxDataFormat& format = wxPyFormatInvalid)
+        : wxDataObjectSimple(format) {}
+
+    DEC_PYCALLBACK_SIZET_(GetDataSize);
+    bool GetDataHere(void *buf);
+    bool SetData(size_t len, const void *buf);
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_SIZET_(wxPyDataObjectSimple, wxDataObjectSimple, GetDataSize);
+
+bool wxPyDataObjectSimple::GetDataHere(void *buf) {
+    // We need to get the data for this object and write it to buf.  I think
+    // the best way to do this for wxPython is to have the Python method
+    // return either a string or None and then act appropriately with the
+    // C++ version.
+
+    bool rval = FALSE;
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("GetDataHere")) {
+        PyObject* ro;
+        ro = m_myInst.callCallbackObj(Py_BuildValue("()"));
+        rval = (ro != Py_None && PyString_Check(ro));
+        if (rval)
+            memcpy(buf, PyString_AsString(ro), PyString_Size(ro));
+    }
+    wxPySaveThread(doSave);
+    return rval;
+}
+
+bool wxPyDataObjectSimple::SetData(size_t len, const void *buf) {
+    // For this one we simply need to make a string from buf and len
+    // and send it to the Python method.
+    bool rval = FALSE;
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("SetData")) {
+        PyObject* data = PyString_FromStringAndSize((char*)buf, len);
+        rval = m_myInst.callCallback(Py_BuildValue("(O)", data));
+        Py_DECREF(data);
+    }
+    wxPySaveThread(doSave);
+    return rval;
+}
+%}
+
+
+
+// Now define it for SWIG
+class wxPyDataObjectSimple : public wxDataObjectSimple {
+public:
+    wxPyDataObjectSimple(const wxDataFormat& format = wxPyFormatInvalid);
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+};
+
+//----------------------------------------------------------------------
+
+class wxDataObjectComposite : public wxDataObject {
+public:
+    wxDataObjectComposite();
+
+    void Add(wxDataObjectSimple *dataObject, int preferred = FALSE);
+    %pragma(python) addtomethod = "Add:_args[0].thisown = 0"
+
+};
+
+
+//----------------------------------------------------------------------
+
+class wxTextDataObject : public wxDataObjectSimple {
+public:
+    wxTextDataObject(const wxString& text = wxEmptyString);
+
+    size_t GetTextLength();
+    wxString GetText();
+    void SetText(const wxString& text);
+};
+
+
+
+%{  // Create a new class for wxPython to use
+class wxPyTextDataObject : public wxTextDataObject {
+public:
+    wxPyTextDataObject(const wxString& text = wxEmptyString)
+        : wxTextDataObject(text) {}
+
+    DEC_PYCALLBACK_SIZET_(GetTextLength);
+    DEC_PYCALLBACK_STRING_(GetText);
+    DEC_PYCALLBACK__STRING(SetText);
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_SIZET_(wxPyTextDataObject, wxTextDataObject, GetTextLength);
+IMP_PYCALLBACK_STRING_(wxPyTextDataObject, wxTextDataObject, GetText);
+IMP_PYCALLBACK__STRING(wxPyTextDataObject, wxTextDataObject, SetText);
+
+%}
+
+
+// Now define it for SWIG
+class wxPyTextDataObject : public wxTextDataObject {
+public:
+    wxPyTextDataObject(const wxString& text = wxEmptyString);
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+};
+
+//----------------------------------------------------------------------
+
+class wxBitmapDataObject : public wxDataObjectSimple {
+public:
+    wxBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap);
+
+    wxBitmap GetBitmap();
+    void SetBitmap(const wxBitmap& bitmap);
+};
+
+
+
+%{  // Create a new class for wxPython to use
+class wxPyBitmapDataObject : public wxBitmapDataObject {
+public:
+    wxPyBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap)
+        : wxBitmapDataObject(bitmap) {}
+
+    wxBitmap GetBitmap();
+    void SetBitmap(const wxBitmap& bitmap);
+    PYPRIVATE;
+};
+
+wxBitmap wxPyBitmapDataObject::GetBitmap() {
+    wxBitmap* rval = &wxNullBitmap;
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("GetBitmap")) {
+        PyObject* ro;
+        wxBitmap* ptr;
+        ro = m_myInst.callCallbackObj(Py_BuildValue("()"));
+        if (! SWIG_GetPtrObj(ro, (void **)&ptr, "_wxBitmap_p"))
+            rval = ptr;
+    }
+    wxPySaveThread(doSave);
+    return *rval;
+}
+
+void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) {
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("SetBitmap")) {
+        m_myInst.callCallback(Py_BuildValue("(O)",
+                              wxPyConstructObject((void*)&bitmap, "wxBitmap")));
+    }
+    wxPySaveThread(doSave);
+}
+%}
+
+
+
+// Now define it for SWIG
+class wxPyBitmapDataObject : public wxBitmapDataObject {
+public:
+    wxPyBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap);
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+};
+
+
+//----------------------------------------------------------------------
+
+class wxFileDataObject : public wxDataObjectSimple
+{
+public:
+    wxFileDataObject();
+
+    //const wxArrayString& GetFilenames();
+    %addmethods {
+        PyObject* GetFilenames() {
+            const wxArrayString& strings = self->GetFilenames();
+            PyObject* list = PyList_New(0);
+            for (size_t x=0; x<strings.GetCount(); x++)
+                PyList_Append(list, PyString_FromString(strings[x]));
+            return list;
+        }
+    }
+
+    //void AddFile(const wxString &filename);
+};
+
+
+//----------------------------------------------------------------------
+
+class wxCustomDataObject : public wxDataObjectSimple {
+public:
+    wxCustomDataObject(const wxDataFormat& format = wxPyFormatInvalid);
+
+    //void TakeData(size_t size, void *data);
+    //bool SetData(size_t size, const void *buf);
+    %addmethods {
+        void TakeData(PyObject* data) {
+            if (PyString_Check(data)) {
+                self->SetData(PyString_Size(data), PyString_AsString(data));
+            }
+        }
+        bool SetData(PyObject* data) {
+            if (PyString_Check(data)) {
+                return self->SetData(PyString_Size(data), PyString_AsString(data));
+            }
+            return FALSE;
+        }
+    }
+
+    size_t GetSize();
+    //void *GetData();
+    %addmethods {
+        PyObject* GetData() {
+            return PyString_FromStringAndSize((char*)self->GetData(), self->GetSize());
+        }
+    }
+
+
+};
+
+
+
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+
+class wxClipboard {
+public:
+    wxClipboard();
+
+    bool Open();
+    void Close();
+    bool IsOpened() const;
+
+    bool AddData( wxDataObject *data );
+    %pragma(python) addtomethod = "AddData:_args[0].thisown = 0"
+    bool SetData( wxDataObject *data );
+    %pragma(python) addtomethod = "SetData:_args[0].thisown = 0"
+
+    bool IsSupported( const wxDataFormat& format );
+    bool GetData( wxDataObject& data );
+    void Clear();
+    bool Flush();
+    void UsePrimarySelection( int primary = FALSE );
+};
+
+%{
+    wxClipboard* wxPyTheClipboard;
+%}
+%readonly
+%name(wxTheClipboard) wxClipboard* wxPyTheClipboard;
+%readwrite
+
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+
+enum wxDragResult
+{
+    wxDragError,    // error prevented the d&d operation from completing
+    wxDragNone,     // drag target didn't accept the data
+    wxDragCopy,     // the data was successfully copied
+    wxDragMove,     // the data was successfully moved (MSW only)
+    wxDragCancel    // the operation was cancelled by user (not an error)
+};
+
+bool wxIsDragResultOk(wxDragResult res);
+
+//----------------------------------------------------------------------
+%{
+class wxPyDropSource : public wxDropSource {
+public:
+    wxPyDropSource(wxWindow *win = NULL,
+                   const wxCursor &cursorCopy = wxNullCursor,
+                   const wxCursor &cursorMove = wxNullCursor,
+                   const wxCursor &cursorStop = wxNullCursor)
+        : wxDropSource(win, cursorCopy, cursorMove, cursorStop) {}
+
+    DEC_PYCALLBACK_BOOL_DR(GiveFeedback);
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_BOOL_DR(wxPyDropSource, wxDropSource, GiveFeedback);
+
+%}
+
+
+%name(wxDropSource) class wxPyDropSource {
+public:
+    wxPyDropSource(wxWindow *win = NULL,
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+    ~wxPyDropSource();
+
+    void SetData(wxDataObject& data);
+    wxDataObject *GetDataObject();
+    void SetCursor(wxDragResult res, const wxCursor& cursor);
+    wxDragResult DoDragDrop(int bAllowMove = FALSE);
+
+    bool base_GiveFeedback(wxDragResult effect);
+};
+
+//----------------------------------------------------------------------
+
+// Just a place holder for the type system.  The real base class for
+// wxPython is wxPyDropTarget
+class wxDropTarget {
+public:
+};
+
+
+%{
+class wxPyDropTarget : public wxDropTarget {
+public:
+    wxPyDropTarget(wxDataObject *dataObject = NULL)
+        : wxDropTarget(dataObject) {}
+
+//      DEC_PYCALLBACK_SIZET_(GetFormatCount);
+//      DEC_PYCALLBACK_DATAFMT_SIZET(GetFormat);
+
+    DEC_PYCALLBACK__(OnLeave);
+    DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+    DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+    DEC_PYCALLBACK_DR_2WXCDR_pure(OnData);
+    DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+    PYPRIVATE;
+};
+
+//  IMP_PYCALLBACK_SIZET_(wxPyDropTarget, wxDropTarget, GetFormatCount);
+//  IMP__PYCALLBACK_DATAFMT_SIZET(wxPyDropTarget, wxDropTarget, GetFormat);
+
+IMP_PYCALLBACK__(wxPyDropTarget, wxDropTarget, OnLeave);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyDropTarget, wxDropTarget, OnEnter);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyDropTarget, wxDropTarget, OnDragOver);
+IMP_PYCALLBACK_DR_2WXCDR_pure(wxPyDropTarget, wxDropTarget, OnData);
+IMP_PYCALLBACK_BOOL_INTINT(wxPyDropTarget, wxDropTarget, OnDrop);
+
+%}
+
+
+class wxPyDropTarget : public wxDropTarget {
+public:
+    wxPyDropTarget(wxDataObject *dataObject = NULL);
+    %pragma(python) addtomethod = "__init__:if _args:_args[0].thisown = 0"
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+    ~wxPyDropTarget();
+
+    wxDataObject *GetDataObject();
+    void SetDataObject(wxDataObject *dataObject);
+    %pragma(python) addtomethod = "SetDataObject:if _args:_args[0].thisown = 0"
+
+//      size_t base_GetFormatCount();
+//      wxDataFormat base_GetFormat(size_t n);
+
+    wxDragResult base_OnEnter(wxCoord x, wxCoord y, wxDragResult def);
+    wxDragResult base_OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
+    void base_OnLeave();
+    bool base_OnDrop(wxCoord x, wxCoord y);
+    //wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def) = 0;
+
+    // **** not sure about this one
+    bool GetData();
+
+};
+
+
+//----------------------------------------------------------------------
+
+%{
+class wxPyTextDropTarget : public wxTextDropTarget {
+public:
+    wxPyTextDropTarget() {}
+
+    DEC_PYCALLBACK_BOOL_INTINTSTR_pure(OnDropText);
+
+    DEC_PYCALLBACK__(OnLeave);
+    DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+    DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+    DEC_PYCALLBACK_DR_2WXCDR(OnData);
+    DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_BOOL_INTINTSTR_pure(wxPyTextDropTarget, wxTextDropTarget, OnDropText);
+IMP_PYCALLBACK__(wxPyTextDropTarget, wxTextDropTarget, OnLeave);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyTextDropTarget, wxTextDropTarget, OnEnter);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyTextDropTarget, wxTextDropTarget, OnDragOver);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyTextDropTarget, wxTextDropTarget, OnData);
+IMP_PYCALLBACK_BOOL_INTINT(wxPyTextDropTarget, wxTextDropTarget, OnDrop);
+
+%}
+
+%name(wxTextDropTarget) class wxPyTextDropTarget : public wxPyDropTarget {
+public:
+    wxPyTextDropTarget();
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+    //bool OnDropText(wxCoord x, wxCoord y, const wxString& text) = 0;
+    wxDragResult base_OnEnter(wxCoord x, wxCoord y, wxDragResult def);
+    wxDragResult base_OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
+    void base_OnLeave();
+    bool base_OnDrop(wxCoord x, wxCoord y);
+    wxDragResult base_OnData(wxCoord x, wxCoord y, wxDragResult def);
+};
+
+//----------------------------------------------------------------------
+%{
+class wxPyFileDropTarget : public wxFileDropTarget {
+public:
+    wxPyFileDropTarget() {}
+
+    virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames);
+
+    DEC_PYCALLBACK__(OnLeave);
+    DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+    DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+    DEC_PYCALLBACK_DR_2WXCDR(OnData);
+    DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+    PYPRIVATE;
+};
+
+bool wxPyFileDropTarget::OnDropFiles(wxCoord x, wxCoord y,
+                                     const wxArrayString& filenames) {
+    bool rval = FALSE;
+    bool doSave = wxPyRestoreThread();
+    PyObject* list = PyList_New(0);
+    for (size_t i=0; i<filenames.GetCount(); i++) {
+        PyObject* str = PyString_FromString(filenames[i].c_str());
+        PyList_Append(list, str);
+    }
+    if (m_myInst.findCallback("OnDropFiles"))
+        rval = m_myInst.callCallback(Py_BuildValue("(iiO)",x,y,list));
+    Py_DECREF(list);
+    wxPySaveThread(doSave);
+    return rval;
+}
+
+
+
+IMP_PYCALLBACK__(wxPyFileDropTarget, wxFileDropTarget, OnLeave);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyFileDropTarget, wxFileDropTarget, OnEnter);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyFileDropTarget, wxFileDropTarget, OnDragOver);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyFileDropTarget, wxFileDropTarget, OnData);
+IMP_PYCALLBACK_BOOL_INTINT(wxPyFileDropTarget, wxFileDropTarget, OnDrop);
+
+%}
+
+
+%name(wxFileDropTarget) class wxPyFileDropTarget : public wxPyDropTarget
+{
+public:
+    wxPyFileDropTarget();
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+//    bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames) = 0;
+    wxDragResult base_OnEnter(wxCoord x, wxCoord y, wxDragResult def);
+    wxDragResult base_OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
+    void base_OnLeave();
+    bool base_OnDrop(wxCoord x, wxCoord y);
+    wxDragResult base_OnData(wxCoord x, wxCoord y, wxDragResult def);
+};
+
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+
+%init %{
+
+    wxPyTheClipboard = wxTheClipboard;
+
+%}
+
+//----------------------------------------------------------------------
+
diff --git a/utils/wxPython/src/controls.i b/utils/wxPython/src/controls.i
index dbdce2edec..57875bd049 100644
--- a/utils/wxPython/src/controls.i
+++ b/utils/wxPython/src/controls.i
@@ -375,6 +375,14 @@ public:
     bool CanUndo();
     void GetSelection(long* OUTPUT, long* OUTPUT);
     bool IsEditable();
+    void Undo();
+    void Redo();
+
+    %addmethods {
+        void write(const wxString& text) {
+            self->AppendText(text + '\n');
+        }
+    }
 };
 
 //----------------------------------------------------------------------
diff --git a/utils/wxPython/src/controls2.i b/utils/wxPython/src/controls2.i
index fc11aa7df3..53b96048e6 100644
--- a/utils/wxPython/src/controls2.i
+++ b/utils/wxPython/src/controls2.i
@@ -320,6 +320,9 @@ public:
     void SetImageList(wxImageList *imageList);
     void SetStateImageList(wxImageList *imageList);
 
+    unsigned int GetSpacing();
+    void SetSpacing(unsigned int spacing);
+
     wxString GetItemText(const wxTreeItemId& item);
     int GetItemImage(const wxTreeItemId& item);
     int GetItemSelectedImage(const wxTreeItemId& item);
@@ -440,17 +443,19 @@ public:
 #ifdef __WXMSW__
     wxTextCtrl* EditLabel(const wxTreeItemId& item);
     wxTextCtrl* GetEditControl();
-    void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE);
+    void EndEditLabel(const wxTreeItemId& item, int discardChanges = FALSE);
 #else
     void EditLabel(const wxTreeItemId& item);
 #endif
 
     void SortChildren(const wxTreeItemId& item);
 
-    void SetItemBold(const wxTreeItemId& item, bool bold = TRUE);
+    void SetItemBold(const wxTreeItemId& item, int bold = TRUE);
     bool IsBold(const wxTreeItemId& item) const;
     wxTreeItemId HitTest(const wxPoint& point);
 
+    void SetItemDropHighlight(const wxTreeItemId& item, int highlight = TRUE);
+
 #ifdef __WXMSW__
     //bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect, int textOnly = FALSE)
     %addmethods {
diff --git a/utils/wxPython/src/events.i b/utils/wxPython/src/events.i
index fdc2a8ccfe..90aaa54017 100644
--- a/utils/wxPython/src/events.i
+++ b/utils/wxPython/src/events.i
@@ -145,8 +145,8 @@ public:
     bool Moving();
     bool Entering();
     bool Leaving();
-    void Position(long *OUTPUT, long *OUTPUT);
     wxPoint GetPosition();
+    %name(GetPositionTuple)void GetPosition(long *OUTPUT, long *OUTPUT);
     wxPoint GetLogicalPosition(const wxDC& dc);
     long GetX();
     long GetY();
diff --git a/utils/wxPython/src/helpers.h b/utils/wxPython/src/helpers.h
index fbe3318fcd..9540e728e4 100644
--- a/utils/wxPython/src/helpers.h
+++ b/utils/wxPython/src/helpers.h
@@ -1,4 +1,4 @@
-/////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
 // Name:        helpers.h
 // Purpose:     Helper functions/classes for the wxPython extenaion module
 //
@@ -186,7 +186,7 @@ private:
 //---------------------------------------------------------------------------
 // These macros are used to implement the virtual methods that should
 // redirect to a Python method if one exists.  The names designate the
-// return type, if any as well as any parameter types.
+// return type, if any, as well as any parameter types.
 //---------------------------------------------------------------------------
 
 #define PYPRIVATE                                       \
@@ -664,12 +664,12 @@ private:
             rval = PyString_AsString(PyObject_Str(ro));                         \
         }                                                                       \
         else                                                                    \
-            rval = PCLASS::CBNAME(a);                                           \
+            rval = PCLASS::CBNAME();                                            \
         wxPySaveThread(doSave);                                                 \
         return rval;                                                            \
     }                                                                           \
-    bool CLASS::base_##CBNAME(const wxString& a) {                              \
-        return PCLASS::CBNAME(a);                                               \
+    wxString CLASS::base_##CBNAME() {                                           \
+        return PCLASS::CBNAME();                                                \
     }
 
 //---------------------------------------------------------------------------
@@ -788,6 +788,131 @@ private:
         return PCLASS::CBNAME();                                        \
     }
 
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_DR_2WXCDR(CBNAME)                 \
+    wxDragResult CBNAME(wxCoord x, wxCoord y, wxDragResult def);    \
+    wxDragResult base_##CBNAME(wxCoord x, wxCoord y, wxDragResult def);
+
+
+#define IMP_PYCALLBACK_DR_2WXCDR(CLASS, PCLASS, CBNAME)                 \
+    wxDragResult CLASS::CBNAME(wxCoord a, wxCoord b, wxDragResult c) {  \
+        bool doSave = wxPyRestoreThread();                              \
+        int rval;                                                       \
+        if (m_myInst.findCallback(#CBNAME))                             \
+            rval = m_myInst.callCallback(Py_BuildValue("(iii)", a,b,c));\
+        else                                                            \
+            rval = PCLASS::CBNAME(a, b, c);                             \
+        wxPySaveThread(doSave);                                         \
+        return (wxDragResult)rval;                                      \
+    }                                                                   \
+    wxDragResult CLASS::base_##CBNAME(wxCoord a, wxCoord b, wxDragResult c) { \
+        return PCLASS::CBNAME(a, b, c);                                       \
+    }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_BOOL_DR(CBNAME)                  \
+    bool CBNAME(wxDragResult a);                        \
+    bool base_##CBNAME(wxDragResult a);
+
+
+#define IMP_PYCALLBACK_BOOL_DR(CLASS, PCLASS, CBNAME)                   \
+    bool CLASS::CBNAME(wxDragResult a) {                                \
+        bool doSave = wxPyRestoreThread();                              \
+        bool rval;                                                      \
+        if (m_myInst.findCallback(#CBNAME))                             \
+            rval = m_myInst.callCallback(Py_BuildValue("(i)", a));      \
+        else                                                            \
+            rval = PCLASS::CBNAME(a);                                   \
+        wxPySaveThread(doSave);                                         \
+        return rval;                                                    \
+    }                                                                   \
+    bool CLASS::base_##CBNAME(wxDragResult a) {                         \
+        return PCLASS::CBNAME(a);                                       \
+    }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_DR_2WXCDR_pure(CBNAME)   \
+    wxDragResult CBNAME(wxCoord x, wxCoord y, wxDragResult def);
+
+
+#define IMP_PYCALLBACK_DR_2WXCDR_pure(CLASS, PCLASS, CBNAME)            \
+    wxDragResult CLASS::CBNAME(wxCoord a, wxCoord b, wxDragResult c) {  \
+        bool doSave = wxPyRestoreThread();                              \
+        int rval;                                                       \
+        if (m_myInst.findCallback(#CBNAME))                             \
+            rval = m_myInst.callCallback(Py_BuildValue("(iii)", a,b,c));\
+        wxPySaveThread(doSave);                                         \
+        return (wxDragResult)rval;                                      \
+    }                                                                   \
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_BOOL_INTINTSTR_pure(CBNAME)                      \
+    bool CBNAME(int a, int b, const wxString& c);
+
+
+#define IMP_PYCALLBACK_BOOL_INTINTSTR_pure(CLASS, PCLASS, CBNAME)       \
+    bool CLASS::CBNAME(int a, int b, const wxString& c) {               \
+        bool rval;                                                      \
+        bool doSave = wxPyRestoreThread();                              \
+        if (m_myInst.findCallback(#CBNAME))                             \
+            rval = m_myInst.callCallback(Py_BuildValue("(iis)",a,b,c.c_str()));\
+        wxPySaveThread(doSave);                                         \
+        return rval;                                                    \
+    }                                                                   \
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_SIZET_(CBNAME)                  \
+    size_t CBNAME();                                   \
+    size_t base_##CBNAME();
+
+
+#define IMP_PYCALLBACK_SIZET_(CLASS, PCLASS, CBNAME)                            \
+    size_t CLASS::CBNAME() {                                                    \
+        size_t rval;                                                            \
+        bool doSave = wxPyRestoreThread();                                      \
+        if (m_myInst.findCallback(#CBNAME))                                     \
+            rval = m_myInst.callCallback(Py_BuildValue("()"));                  \
+        else                                                                    \
+            rval = PCLASS::CBNAME();                                            \
+        wxPySaveThread(doSave);                                                 \
+        return rval;                                                            \
+    }                                                                           \
+    size_t CLASS::base_##CBNAME() {                                             \
+        return PCLASS::CBNAME();                                                \
+    }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_DATAFMT_SIZET(CBNAME)                  \
+    wxDataFormat  CBNAME();                                        \
+    wxDataFormat  base_##CBNAME();
+
+
+#define IMP_PYCALLBACK_DATAFMT_SIZET(CLASS, PCLASS, CBNAME)                     \
+    wxDataFormat CLASS::CBNAME(size_t a) {                                      \
+        wxDataFormat rval;                                                      \
+        bool doSave = wxPyRestoreThread();                                      \
+        if (m_myInst.findCallback(#CBNAME)) {                                   \
+            PyObject* ro;                                                       \
+            wxDataFormat* ptr;                                                  \
+            ro = m_myInst.callCallbackObj(Py_BuildValue("(i)", a));             \
+            if (! SWIG_GetPtrObj(ro, (void **)&ptr, "_wxDataFormat_p"))         \
+                rval = *ptr;                                                    \
+        }                                                                       \
+        else                                                                    \
+            rval = PCLASS::CBNAME(a);                                           \
+        wxPySaveThread(doSave);                                                 \
+        return rval;                                                            \
+    }                                                                           \
+    wxDataFormat  CLASS::base_##CBNAME(size_t a) {                              \
+        return PCLASS::CBNAME(a);                                               \
+    }
+
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -796,3 +921,4 @@ private:
 
 
 
+
diff --git a/utils/wxPython/src/misc2.i b/utils/wxPython/src/misc2.i
index b5064caa19..8ca4431d38 100644
--- a/utils/wxPython/src/misc2.i
+++ b/utils/wxPython/src/misc2.i
@@ -19,9 +19,7 @@
 #include <wx/resource.h>
 #include <wx/tooltip.h>
 #include <wx/caret.h>
-#ifdef NOT_READY_YET
 #include <wx/fontenum.h>
-#endif
 %}
 
 //----------------------------------------------------------------------
@@ -34,6 +32,7 @@
 %import windows.i
 %import misc.i
 %import gdi.i
+%import events.i
 
 //---------------------------------------------------------------------------
 // Dialog Functions
@@ -292,7 +291,6 @@ public:
 %}
 
 //----------------------------------------------------------------------
-#ifdef NOT_READY_YET
 
 %{
 class wxPyFontEnumerator : public wxFontEnumerator {
@@ -300,34 +298,29 @@ public:
     wxPyFontEnumerator() {}
     ~wxPyFontEnumerator() {}
 
-    bool EnumerateFamilies(int fixedWidthOnly = FALSE);
-    bool EnumerateEncodings(const char* family = "");
-
-    DEC_PYCALLBACK_BOOL_STRING(OnFontFamily);
+    DEC_PYCALLBACK_BOOL_STRING(OnFacename);
     DEC_PYCALLBACK_BOOL_STRINGSTRING(OnFontEncoding);
 
     PYPRIVATE;
 };
 
-IMP_PYCALLBACK_BOOL_STRING(wxPyFontEnumerator, wxFontEnumerator, OnFontFamily);
+IMP_PYCALLBACK_BOOL_STRING(wxPyFontEnumerator, wxFontEnumerator, OnFacename);
 IMP_PYCALLBACK_BOOL_STRINGSTRING(wxPyFontEnumerator, wxFontEnumerator, OnFontEncoding);
 
 %}
 
 %name(wxFontEnumerator) class wxPyFontEnumerator {
 public:
-    wxPyFontEnumerator() {}
-    ~wxPyFontEnumerator() {}
+    wxPyFontEnumerator();
+    ~wxPyFontEnumerator();
+    void _setSelf(PyObject* self);
     %pragma(python) addtomethod = "__init__:self._setSelf(self)"
 
-    bool EnumerateFamilies(int fixedWidthOnly = FALSE);
-    bool EnumerateEncodings(const char* family = "");
-
-    bool base_OnFontFamily(const wxString& family);
-    bool base_OnFontEncoding(const wxString& family,
-                             const wxString& encoding);
+    bool EnumerateFacenames(
+        wxFontEncoding encoding = wxFONTENCODING_SYSTEM, // all
+        bool fixedWidthOnly = FALSE);
+    bool EnumerateEncodings(const char* facename = "");
 };
-#endif
 
 //----------------------------------------------------------------------
 
@@ -337,7 +330,9 @@ public:
     ~wxBusyCursor();
 };
 
+//----------------------------------------------------------------------
 
+void wxPostEvent(wxEvtHandler *dest, wxEvent& event);
 
 //----------------------------------------------------------------------
 //----------------------------------------------------------------------
diff --git a/utils/wxPython/src/msw/clip_dnd.cpp b/utils/wxPython/src/msw/clip_dnd.cpp
new file mode 100644
index 0000000000..7818d82b81
--- /dev/null
+++ b/utils/wxPython/src/msw/clip_dnd.cpp
@@ -0,0 +1,3611 @@
+/*
+ * FILE : msw/clip_dnd.cpp
+ * 
+ * This file was automatically generated by :
+ * Simplified Wrapper and Interface Generator (SWIG)
+ * Version 1.1 (Build 810)
+ * 
+ * Portions Copyright (c) 1995-1998
+ * The University of Utah and The Regents of the University of California.
+ * Permission is granted to distribute this file in any manner provided
+ * this notice remains intact.
+ * 
+ * Do not make changes to this file--changes will be lost!
+ *
+ */
+
+
+#define SWIGCODE
+/* Implementation : PYTHON */
+
+#define SWIGPYTHON
+#include <string.h>
+#include <stdlib.h>
+/* Definitions for Windows/Unix exporting */
+#if defined(__WIN32__)
+#   if defined(_MSC_VER)
+#	define SWIGEXPORT(a) __declspec(dllexport) a
+#   else
+#	if defined(__BORLANDC__)
+#	    define SWIGEXPORT(a) a _export 
+#	else
+#	    define SWIGEXPORT(a) a 
+#	endif
+#   endif
+#else
+#   define SWIGEXPORT(a) a 
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "Python.h"
+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    initclip_dndc
+
+#define SWIG_name    "clip_dndc"
+
+#include "helpers.h"
+#include <wx/dataobj.h>
+#include <wx/clipbrd.h>
+#include <wx/dnd.h>
+
+static PyObject* l_output_helper(PyObject* target, PyObject* o) {
+    PyObject*   o2;
+    PyObject*   o3;
+    if (!target) {                   
+        target = o;
+    } else if (target == Py_None) {  
+        Py_DECREF(Py_None);
+        target = o;
+    } else {                         
+        if (!PyList_Check(target)) {
+            o2 = target;
+            target = PyList_New(0);
+            PyList_Append(target, o2);
+	    Py_XDECREF(o2);
+        }
+        PyList_Append(target,o);
+	Py_XDECREF(o);
+    }
+    return target;
+}
+
+static PyObject* t_output_helper(PyObject* target, PyObject* o) {
+    PyObject*   o2;
+    PyObject*   o3;
+
+    if (!target) {                   
+        target = o;
+    } else if (target == Py_None) {  
+        Py_DECREF(Py_None);
+        target = o;
+    } 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);      
+
+        o2 = target;
+        target = PySequence_Concat(o2, o3); 
+        Py_DECREF(o2);                      
+        Py_DECREF(o3);
+    }
+    return target;
+}
+
+static char* wxStringErrorMsg = "string type is required for parameter";
+  // An alternate constructor...
+    wxDataFormat* wxCustomDataFormat(const wxString &id) {
+        return new wxDataFormat(id);
+    }
+
+wxDataFormat wxPyFormatInvalid;
+  // Create a new class for wxPython to use
+class wxPyDataObjectSimple : public wxDataObjectSimple {
+public:
+    wxPyDataObjectSimple(const wxDataFormat& format = wxPyFormatInvalid)
+        : wxDataObjectSimple(format) {}
+
+    DEC_PYCALLBACK_SIZET_(GetDataSize);
+    bool GetDataHere(void *buf);
+    bool SetData(size_t len, const void *buf);
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_SIZET_(wxPyDataObjectSimple, wxDataObjectSimple, GetDataSize);
+
+bool wxPyDataObjectSimple::GetDataHere(void *buf) {
+    // We need to get the data for this object and write it to buf.  I think
+    // the best way to do this for wxPython is to have the Python method
+    // return either a string or None and then act appropriately with the
+    // C++ version.
+
+    bool rval = FALSE;
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("GetDataHere")) {
+        PyObject* ro;
+        ro = m_myInst.callCallbackObj(Py_BuildValue("()"));
+        rval = (ro != Py_None && PyString_Check(ro));
+        if (rval)
+            memcpy(buf, PyString_AsString(ro), PyString_Size(ro));
+    }
+    wxPySaveThread(doSave);
+    return rval;
+}
+
+bool wxPyDataObjectSimple::SetData(size_t len, const void *buf) {
+    // For this one we simply need to make a string from buf and len
+    // and send it to the Python method.
+    bool rval = FALSE;
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("SetData")) {
+        PyObject* data = PyString_FromStringAndSize((char*)buf, len);
+        rval = m_myInst.callCallback(Py_BuildValue("(O)", data));
+        Py_DECREF(data);
+    }
+    wxPySaveThread(doSave);
+    return rval;
+}
+  // Create a new class for wxPython to use
+class wxPyTextDataObject : public wxTextDataObject {
+public:
+    wxPyTextDataObject(const wxString& text = wxEmptyString)
+        : wxTextDataObject(text) {}
+
+    DEC_PYCALLBACK_SIZET_(GetTextLength);
+    DEC_PYCALLBACK_STRING_(GetText);
+    DEC_PYCALLBACK__STRING(SetText);
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_SIZET_(wxPyTextDataObject, wxTextDataObject, GetTextLength);
+IMP_PYCALLBACK_STRING_(wxPyTextDataObject, wxTextDataObject, GetText);
+IMP_PYCALLBACK__STRING(wxPyTextDataObject, wxTextDataObject, SetText);
+
+  // Create a new class for wxPython to use
+class wxPyBitmapDataObject : public wxBitmapDataObject {
+public:
+    wxPyBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap)
+        : wxBitmapDataObject(bitmap) {}
+
+    wxBitmap GetBitmap();
+    void SetBitmap(const wxBitmap& bitmap);
+    PYPRIVATE;
+};
+
+wxBitmap wxPyBitmapDataObject::GetBitmap() {
+    wxBitmap* rval = &wxNullBitmap;
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("GetBitmap")) {
+        PyObject* ro;
+        wxBitmap* ptr;
+        ro = m_myInst.callCallbackObj(Py_BuildValue("()"));
+        if (! SWIG_GetPtrObj(ro, (void **)&ptr, "_wxBitmap_p"))
+            rval = ptr;
+    }
+    wxPySaveThread(doSave);
+    return *rval;
+}
+
+void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) {
+    bool doSave = wxPyRestoreThread();
+    if (m_myInst.findCallback("SetBitmap")) {
+        m_myInst.callCallback(Py_BuildValue("(O)",
+                              wxPyConstructObject((void*)&bitmap, "wxBitmap")));
+    }
+    wxPySaveThread(doSave);
+}
+
+    wxClipboard* wxPyTheClipboard;
+
+class wxPyDropSource : public wxDropSource {
+public:
+    wxPyDropSource(wxWindow *win = NULL,
+                   const wxCursor &cursorCopy = wxNullCursor,
+                   const wxCursor &cursorMove = wxNullCursor,
+                   const wxCursor &cursorStop = wxNullCursor)
+        : wxDropSource(win, cursorCopy, cursorMove, cursorStop) {}
+
+    DEC_PYCALLBACK_BOOL_DR(GiveFeedback);
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_BOOL_DR(wxPyDropSource, wxDropSource, GiveFeedback);
+
+
+class wxPyDropTarget : public wxDropTarget {
+public:
+    wxPyDropTarget(wxDataObject *dataObject = NULL)
+        : wxDropTarget(dataObject) {}
+
+//      DEC_PYCALLBACK_SIZET_(GetFormatCount);
+//      DEC_PYCALLBACK_DATAFMT_SIZET(GetFormat);
+
+    DEC_PYCALLBACK__(OnLeave);
+    DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+    DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+    DEC_PYCALLBACK_DR_2WXCDR_pure(OnData);
+    DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+    PYPRIVATE;
+};
+
+//  IMP_PYCALLBACK_SIZET_(wxPyDropTarget, wxDropTarget, GetFormatCount);
+//  IMP__PYCALLBACK_DATAFMT_SIZET(wxPyDropTarget, wxDropTarget, GetFormat);
+
+IMP_PYCALLBACK__(wxPyDropTarget, wxDropTarget, OnLeave);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyDropTarget, wxDropTarget, OnEnter);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyDropTarget, wxDropTarget, OnDragOver);
+IMP_PYCALLBACK_DR_2WXCDR_pure(wxPyDropTarget, wxDropTarget, OnData);
+IMP_PYCALLBACK_BOOL_INTINT(wxPyDropTarget, wxDropTarget, OnDrop);
+
+
+class wxPyTextDropTarget : public wxTextDropTarget {
+public:
+    wxPyTextDropTarget() {}
+
+    DEC_PYCALLBACK_BOOL_INTINTSTR_pure(OnDropText);
+
+    DEC_PYCALLBACK__(OnLeave);
+    DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+    DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+    DEC_PYCALLBACK_DR_2WXCDR(OnData);
+    DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_BOOL_INTINTSTR_pure(wxPyTextDropTarget, wxTextDropTarget, OnDropText);
+IMP_PYCALLBACK__(wxPyTextDropTarget, wxTextDropTarget, OnLeave);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyTextDropTarget, wxTextDropTarget, OnEnter);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyTextDropTarget, wxTextDropTarget, OnDragOver);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyTextDropTarget, wxTextDropTarget, OnData);
+IMP_PYCALLBACK_BOOL_INTINT(wxPyTextDropTarget, wxTextDropTarget, OnDrop);
+
+
+class wxPyFileDropTarget : public wxFileDropTarget {
+public:
+    wxPyFileDropTarget() {}
+
+    virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames);
+
+    DEC_PYCALLBACK__(OnLeave);
+    DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+    DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+    DEC_PYCALLBACK_DR_2WXCDR(OnData);
+    DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+    PYPRIVATE;
+};
+
+bool wxPyFileDropTarget::OnDropFiles(wxCoord x, wxCoord y,
+                                     const wxArrayString& filenames) {
+    bool rval = FALSE;
+    bool doSave = wxPyRestoreThread();
+    PyObject* list = PyList_New(0);
+    for (size_t i=0; i<filenames.GetCount(); i++) {
+        PyObject* str = PyString_FromString(filenames[i].c_str());
+        PyList_Append(list, str);
+    }
+    if (m_myInst.findCallback("OnDropFiles"))
+        rval = m_myInst.callCallback(Py_BuildValue("(iiO)",x,y,list));
+    Py_DECREF(list);
+    wxPySaveThread(doSave);
+    return rval;
+}
+
+
+
+IMP_PYCALLBACK__(wxPyFileDropTarget, wxFileDropTarget, OnLeave);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyFileDropTarget, wxFileDropTarget, OnEnter);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyFileDropTarget, wxFileDropTarget, OnDragOver);
+IMP_PYCALLBACK_DR_2WXCDR(wxPyFileDropTarget, wxFileDropTarget, OnData);
+IMP_PYCALLBACK_BOOL_INTINT(wxPyFileDropTarget, wxFileDropTarget, OnDrop);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_wxCustomDataFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _result;
+    wxString * _arg0;
+    PyObject * _obj0 = 0;
+    char *_kwnames[] = { "id", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCustomDataFormat",_kwnames,&_obj0)) 
+        return NULL;
+{
+    if (!PyString_Check(_obj0)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataFormat *)wxCustomDataFormat(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataFormat_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+{
+    if (_obj0)
+        delete _arg0;
+}
+    return _resultobj;
+}
+
+static int _wrap_wxPyFormatInvalid_set(PyObject *val) {
+
+    PyErr_SetString(PyExc_TypeError,"Variable wxFormatInvalid is read-only.");
+    return 1;
+}
+
+static PyObject *_wrap_wxPyFormatInvalid_get() {
+    PyObject * pyobj;
+    char ptemp[128];
+
+    SWIG_MakePtr(ptemp,(char *) &wxPyFormatInvalid,"_wxDataFormat_p");
+    pyobj = PyString_FromString(ptemp);
+    return pyobj;
+}
+
+static int _wrap_wxPyTheClipboard_set(PyObject *val) {
+
+    PyErr_SetString(PyExc_TypeError,"Variable wxTheClipboard is read-only.");
+    return 1;
+}
+
+static PyObject *_wrap_wxPyTheClipboard_get() {
+    PyObject * pyobj;
+    char ptemp[128];
+
+    SWIG_MakePtr(ptemp, (char *) wxPyTheClipboard,"_wxClipboard_p");
+    pyobj = PyString_FromString(ptemp);
+    return pyobj;
+}
+
+static PyObject *_wrap_wxIsDragResultOk(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxDragResult  _arg0;
+    char *_kwnames[] = { "res", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxIsDragResultOk",_kwnames,&_arg0)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxIsDragResultOk(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define new_wxDataFormat(_swigarg0) (new wxDataFormat(_swigarg0))
+static PyObject *_wrap_new_wxDataFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _result;
+    wxDataFormatId  _arg0;
+    char *_kwnames[] = { "type", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:new_wxDataFormat",_kwnames,&_arg0)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataFormat *)new_wxDataFormat(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataFormat_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define delete_wxDataFormat(_swigobj) (delete _swigobj)
+static PyObject *_wrap_delete_wxDataFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:delete_wxDataFormat",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxDataFormat. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxDataFormat(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDataFormat_SetType(_swigobj,_swigarg0)  (_swigobj->SetType(_swigarg0))
+static PyObject *_wrap_wxDataFormat_SetType(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _arg0;
+    wxDataFormatId  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDataFormat_SetType",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataFormat_SetType. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDataFormat_SetType(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDataFormat_GetType(_swigobj)  (_swigobj->GetType())
+static PyObject *_wrap_wxDataFormat_GetType(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormatId  _result;
+    wxDataFormat * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxDataFormat_GetType",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataFormat_GetType. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataFormatId )wxDataFormat_GetType(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxDataFormat_GetId(_swigobj)  (_swigobj->GetId())
+static PyObject *_wrap_wxDataFormat_GetId(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    wxDataFormat * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxDataFormat_GetId",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataFormat_GetId. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxString (wxDataFormat_GetId(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
+    return _resultobj;
+}
+
+#define wxDataFormat_SetId(_swigobj,_swigarg0)  (_swigobj->SetId(_swigarg0))
+static PyObject *_wrap_wxDataFormat_SetId(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _arg0;
+    char * _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxDataFormat_SetId",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataFormat_SetId. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDataFormat_SetId(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define delete_wxDataObject(_swigobj) (delete _swigobj)
+static PyObject *_wrap_delete_wxDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:delete_wxDataObject",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxDataObject. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxDataObject(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDataObject_GetPreferredFormat(_swigobj,_swigarg0)  (_swigobj->GetPreferredFormat(_swigarg0))
+static PyObject *_wrap_wxDataObject_GetPreferredFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _result;
+    wxDataObject * _arg0;
+    wxDataObject::Direction  _arg1 = (wxDataObject::Direction ) wxDataObject::Get;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","dir", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxDataObject_GetPreferredFormat",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetPreferredFormat. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxDataFormat (wxDataObject_GetPreferredFormat(_arg0,_arg1));
+
+    wxPy_END_ALLOW_THREADS;
+}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxDataFormat_p");
+    _resultobj = Py_BuildValue("s",_ptemp);
+    return _resultobj;
+}
+
+#define wxDataObject_GetFormatCount(_swigobj,_swigarg0)  (_swigobj->GetFormatCount(_swigarg0))
+static PyObject *_wrap_wxDataObject_GetFormatCount(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    size_t  _result;
+    wxDataObject * _arg0;
+    wxDataObject::Direction  _arg1 = (wxDataObject::Direction ) wxDataObject::Get;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","dir", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxDataObject_GetFormatCount",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetFormatCount. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (size_t )wxDataObject_GetFormatCount(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxDataObject_GetAllFormats(_swigobj,_swigarg0,_swigarg1)  (_swigobj->GetAllFormats(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxDataObject_GetAllFormats(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObject * _arg0;
+    wxDataFormat * _arg1;
+    wxDataObject::Direction  _arg2 = (wxDataObject::Direction ) wxDataObject::Get;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","formats","dir", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxDataObject_GetAllFormats",_kwnames,&_argo0,&_argo1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetAllFormats. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetAllFormats. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDataObject_GetAllFormats(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDataObject_GetDataSize(_swigobj,_swigarg0)  (_swigobj->GetDataSize(_swigarg0))
+static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    size_t  _result;
+    wxDataObject * _arg0;
+    wxDataFormat * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxDataObject_GetDataHere(_swigobj,_swigarg0,_swigarg1)  (_swigobj->GetDataHere(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxDataObject * _arg0;
+    wxDataFormat * _arg1;
+    void * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    PyObject * _argo2 = 0;
+    char *_kwnames[] = { "self","format","buf", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDataObject_GetDataHere",_kwnames,&_argo0,&_argo1,&_argo2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataHere. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataHere. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,(char *) 0 )) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDataObject_GetDataHere. Expected _void_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDataObject_GetDataHere(_arg0,*_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxDataObject_SetData(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->SetData(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxDataObject * _arg0;
+    wxDataFormat * _arg1;
+    size_t  _arg2;
+    void * _arg3;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    PyObject * _argo3 = 0;
+    char *_kwnames[] = { "self","format","len","buf", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOiO:wxDataObject_SetData",_kwnames,&_argo0,&_argo1,&_arg2,&_argo3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_SetData. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_SetData. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,(char *) 0 )) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDataObject_SetData. Expected _void_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDataObject_SetData(_arg0,*_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxDataObject_IsSupportedFormat(_swigobj,_swigarg0)  (_swigobj->IsSupportedFormat(_swigarg0))
+static PyObject *_wrap_wxDataObject_IsSupportedFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxDataObject * _arg0;
+    wxDataFormat * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_IsSupportedFormat",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_IsSupportedFormat. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_IsSupportedFormat. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDataObject_IsSupportedFormat(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static void *SwigwxDataObjectSimpleTowxDataObject(void *ptr) {
+    wxDataObjectSimple *src;
+    wxDataObject *dest;
+    src = (wxDataObjectSimple *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxDataObjectSimple(_swigarg0) (new wxDataObjectSimple(_swigarg0))
+static PyObject *_wrap_new_wxDataObjectSimple(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObjectSimple * _result;
+    wxDataFormat * _arg0 = (wxDataFormat *) &wxPyFormatInvalid;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "format", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxDataObjectSimple",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDataObjectSimple. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataObjectSimple *)new_wxDataObjectSimple(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataObjectSimple_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxDataObjectSimple_GetFormat(_swigobj)  (_swigobj->GetFormat())
+static PyObject *_wrap_wxDataObjectSimple_GetFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataFormat * _result;
+    wxDataObjectSimple * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxDataObjectSimple_GetFormat",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObjectSimple_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObjectSimple_GetFormat. Expected _wxDataObjectSimple_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        const wxDataFormat & _result_ref = wxDataObjectSimple_GetFormat(_arg0);
+    _result = (wxDataFormat *) &_result_ref;
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataFormat_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxDataObjectSimple_SetFormat(_swigobj,_swigarg0)  (_swigobj->SetFormat(_swigarg0))
+static PyObject *_wrap_wxDataObjectSimple_SetFormat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObjectSimple * _arg0;
+    wxDataFormat * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObjectSimple_SetFormat",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObjectSimple_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObjectSimple_SetFormat. Expected _wxDataObjectSimple_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObjectSimple_SetFormat. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDataObjectSimple_SetFormat(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void *SwigwxPyDataObjectSimpleTowxDataObjectSimple(void *ptr) {
+    wxPyDataObjectSimple *src;
+    wxDataObjectSimple *dest;
+    src = (wxPyDataObjectSimple *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyDataObjectSimpleTowxDataObject(void *ptr) {
+    wxPyDataObjectSimple *src;
+    wxDataObject *dest;
+    src = (wxPyDataObjectSimple *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxPyDataObjectSimple(_swigarg0) (new wxPyDataObjectSimple(_swigarg0))
+static PyObject *_wrap_new_wxPyDataObjectSimple(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDataObjectSimple * _result;
+    wxDataFormat * _arg0 = (wxDataFormat *) &wxPyFormatInvalid;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "format", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyDataObjectSimple",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyDataObjectSimple. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyDataObjectSimple *)new_wxPyDataObjectSimple(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyDataObjectSimple_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxPyDataObjectSimple__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxPyDataObjectSimple__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDataObjectSimple * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyDataObjectSimple__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDataObjectSimple_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDataObjectSimple__setSelf. Expected _wxPyDataObjectSimple_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPyDataObjectSimple__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void *SwigwxDataObjectCompositeTowxDataObject(void *ptr) {
+    wxDataObjectComposite *src;
+    wxDataObject *dest;
+    src = (wxDataObjectComposite *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxDataObjectComposite() (new wxDataObjectComposite())
+static PyObject *_wrap_new_wxDataObjectComposite(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObjectComposite * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxDataObjectComposite",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataObjectComposite *)new_wxDataObjectComposite();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataObjectComposite_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxDataObjectComposite_Add(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Add(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxDataObjectComposite_Add(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObjectComposite * _arg0;
+    wxDataObjectSimple * _arg1;
+    int  _arg2 = (int ) FALSE;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","dataObject","preferred", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxDataObjectComposite_Add",_kwnames,&_argo0,&_argo1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObjectComposite_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObjectComposite_Add. Expected _wxDataObjectComposite_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObjectSimple_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObjectComposite_Add. Expected _wxDataObjectSimple_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDataObjectComposite_Add(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void *SwigwxTextDataObjectTowxDataObjectSimple(void *ptr) {
+    wxTextDataObject *src;
+    wxDataObjectSimple *dest;
+    src = (wxTextDataObject *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxTextDataObjectTowxDataObject(void *ptr) {
+    wxTextDataObject *src;
+    wxDataObject *dest;
+    src = (wxTextDataObject *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxTextDataObject(_swigarg0) (new wxTextDataObject(_swigarg0))
+static PyObject *_wrap_new_wxTextDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTextDataObject * _result;
+    wxString * _arg0 = (wxString *) &wxEmptyString;
+    PyObject * _obj0 = 0;
+    char *_kwnames[] = { "text", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxTextDataObject",_kwnames,&_obj0)) 
+        return NULL;
+    if (_obj0)
+{
+    if (!PyString_Check(_obj0)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxTextDataObject *)new_wxTextDataObject(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxTextDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+{
+    if (_obj0)
+        delete _arg0;
+}
+    return _resultobj;
+}
+
+#define wxTextDataObject_GetTextLength(_swigobj)  (_swigobj->GetTextLength())
+static PyObject *_wrap_wxTextDataObject_GetTextLength(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    size_t  _result;
+    wxTextDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTextDataObject_GetTextLength",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDataObject_GetTextLength. Expected _wxTextDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (size_t )wxTextDataObject_GetTextLength(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxTextDataObject_GetText(_swigobj)  (_swigobj->GetText())
+static PyObject *_wrap_wxTextDataObject_GetText(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    wxTextDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTextDataObject_GetText",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDataObject_GetText. Expected _wxTextDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxString (wxTextDataObject_GetText(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
+    return _resultobj;
+}
+
+#define wxTextDataObject_SetText(_swigobj,_swigarg0)  (_swigobj->SetText(_swigarg0))
+static PyObject *_wrap_wxTextDataObject_SetText(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTextDataObject * _arg0;
+    wxString * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","text", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTextDataObject_SetText",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDataObject_SetText. Expected _wxTextDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    if (!PyString_Check(_obj1)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTextDataObject_SetText(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+{
+    if (_obj1)
+        delete _arg1;
+}
+    return _resultobj;
+}
+
+static void *SwigwxPyTextDataObjectTowxTextDataObject(void *ptr) {
+    wxPyTextDataObject *src;
+    wxTextDataObject *dest;
+    src = (wxPyTextDataObject *) ptr;
+    dest = (wxTextDataObject *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyTextDataObjectTowxDataObjectSimple(void *ptr) {
+    wxPyTextDataObject *src;
+    wxDataObjectSimple *dest;
+    src = (wxPyTextDataObject *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyTextDataObjectTowxDataObject(void *ptr) {
+    wxPyTextDataObject *src;
+    wxDataObject *dest;
+    src = (wxPyTextDataObject *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxPyTextDataObject(_swigarg0) (new wxPyTextDataObject(_swigarg0))
+static PyObject *_wrap_new_wxPyTextDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyTextDataObject * _result;
+    wxString * _arg0 = (wxString *) &wxEmptyString;
+    PyObject * _obj0 = 0;
+    char *_kwnames[] = { "text", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyTextDataObject",_kwnames,&_obj0)) 
+        return NULL;
+    if (_obj0)
+{
+    if (!PyString_Check(_obj0)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg0 = new wxString(PyString_AsString(_obj0), PyString_Size(_obj0));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyTextDataObject *)new_wxPyTextDataObject(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyTextDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+{
+    if (_obj0)
+        delete _arg0;
+}
+    return _resultobj;
+}
+
+#define wxPyTextDataObject__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxPyTextDataObject__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyTextDataObject * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyTextDataObject__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyTextDataObject__setSelf. Expected _wxPyTextDataObject_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPyTextDataObject__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void *SwigwxBitmapDataObjectTowxDataObjectSimple(void *ptr) {
+    wxBitmapDataObject *src;
+    wxDataObjectSimple *dest;
+    src = (wxBitmapDataObject *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxBitmapDataObjectTowxDataObject(void *ptr) {
+    wxBitmapDataObject *src;
+    wxDataObject *dest;
+    src = (wxBitmapDataObject *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxBitmapDataObject(_swigarg0) (new wxBitmapDataObject(_swigarg0))
+static PyObject *_wrap_new_wxBitmapDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxBitmapDataObject * _result;
+    wxBitmap * _arg0 = (wxBitmap *) &wxNullBitmap;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "bitmap", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxBitmapDataObject",_kwnames,&_argo0)) 
+        return NULL;
+    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_wxBitmapDataObject. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxBitmapDataObject *)new_wxBitmapDataObject(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxBitmapDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxBitmapDataObject_GetBitmap(_swigobj)  (_swigobj->GetBitmap())
+static PyObject *_wrap_wxBitmapDataObject_GetBitmap(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxBitmap * _result;
+    wxBitmapDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxBitmapDataObject_GetBitmap",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmapDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapDataObject_GetBitmap. Expected _wxBitmapDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxBitmap (wxBitmapDataObject_GetBitmap(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p");
+    _resultobj = Py_BuildValue("s",_ptemp);
+    return _resultobj;
+}
+
+#define wxBitmapDataObject_SetBitmap(_swigobj,_swigarg0)  (_swigobj->SetBitmap(_swigarg0))
+static PyObject *_wrap_wxBitmapDataObject_SetBitmap(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxBitmapDataObject * _arg0;
+    wxBitmap * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","bitmap", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxBitmapDataObject_SetBitmap",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmapDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapDataObject_SetBitmap. Expected _wxBitmapDataObject_p.");
+        return NULL;
+        }
+    }
+    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 wxBitmapDataObject_SetBitmap. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxBitmapDataObject_SetBitmap(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void *SwigwxPyBitmapDataObjectTowxBitmapDataObject(void *ptr) {
+    wxPyBitmapDataObject *src;
+    wxBitmapDataObject *dest;
+    src = (wxPyBitmapDataObject *) ptr;
+    dest = (wxBitmapDataObject *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyBitmapDataObjectTowxDataObjectSimple(void *ptr) {
+    wxPyBitmapDataObject *src;
+    wxDataObjectSimple *dest;
+    src = (wxPyBitmapDataObject *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyBitmapDataObjectTowxDataObject(void *ptr) {
+    wxPyBitmapDataObject *src;
+    wxDataObject *dest;
+    src = (wxPyBitmapDataObject *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxPyBitmapDataObject(_swigarg0) (new wxPyBitmapDataObject(_swigarg0))
+static PyObject *_wrap_new_wxPyBitmapDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyBitmapDataObject * _result;
+    wxBitmap * _arg0 = (wxBitmap *) &wxNullBitmap;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "bitmap", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyBitmapDataObject",_kwnames,&_argo0)) 
+        return NULL;
+    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_wxPyBitmapDataObject. Expected _wxBitmap_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyBitmapDataObject *)new_wxPyBitmapDataObject(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyBitmapDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxPyBitmapDataObject__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxPyBitmapDataObject__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyBitmapDataObject * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyBitmapDataObject__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyBitmapDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyBitmapDataObject__setSelf. Expected _wxPyBitmapDataObject_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPyBitmapDataObject__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void *SwigwxFileDataObjectTowxDataObjectSimple(void *ptr) {
+    wxFileDataObject *src;
+    wxDataObjectSimple *dest;
+    src = (wxFileDataObject *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxFileDataObjectTowxDataObject(void *ptr) {
+    wxFileDataObject *src;
+    wxDataObject *dest;
+    src = (wxFileDataObject *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxFileDataObject() (new wxFileDataObject())
+static PyObject *_wrap_new_wxFileDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxFileDataObject * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxFileDataObject",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxFileDataObject *)new_wxFileDataObject();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxFileDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+static PyObject * wxFileDataObject_GetFilenames(wxFileDataObject *self) {
+            const wxArrayString& strings = self->GetFilenames();
+            PyObject* list = PyList_New(0);
+            for (size_t x=0; x<strings.GetCount(); x++)
+                PyList_Append(list, PyString_FromString(strings[x]));
+            return list;
+        }
+static PyObject *_wrap_wxFileDataObject_GetFilenames(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    PyObject * _result;
+    wxFileDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxFileDataObject_GetFilenames",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDataObject_GetFilenames. Expected _wxFileDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (PyObject *)wxFileDataObject_GetFilenames(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}{
+  _resultobj = _result;
+}
+    return _resultobj;
+}
+
+static void *SwigwxCustomDataObjectTowxDataObjectSimple(void *ptr) {
+    wxCustomDataObject *src;
+    wxDataObjectSimple *dest;
+    src = (wxCustomDataObject *) ptr;
+    dest = (wxDataObjectSimple *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxCustomDataObjectTowxDataObject(void *ptr) {
+    wxCustomDataObject *src;
+    wxDataObject *dest;
+    src = (wxCustomDataObject *) ptr;
+    dest = (wxDataObject *) src;
+    return (void *) dest;
+}
+
+#define new_wxCustomDataObject(_swigarg0) (new wxCustomDataObject(_swigarg0))
+static PyObject *_wrap_new_wxCustomDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxCustomDataObject * _result;
+    wxDataFormat * _arg0 = (wxDataFormat *) &wxPyFormatInvalid;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "format", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxCustomDataObject",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxCustomDataObject. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxCustomDataObject *)new_wxCustomDataObject(*_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxCustomDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+static void  wxCustomDataObject_TakeData(wxCustomDataObject *self,PyObject * data) {
+            if (PyString_Check(data)) {
+                self->SetData(PyString_Size(data), PyString_AsString(data));
+            }
+        }
+static PyObject *_wrap_wxCustomDataObject_TakeData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxCustomDataObject * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","data", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxCustomDataObject_TakeData",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCustomDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCustomDataObject_TakeData. Expected _wxCustomDataObject_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxCustomDataObject_TakeData(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static bool  wxCustomDataObject_SetData(wxCustomDataObject *self,PyObject * data) {
+            if (PyString_Check(data)) {
+                return self->SetData(PyString_Size(data), PyString_AsString(data));
+            }
+            return FALSE;
+        }
+static PyObject *_wrap_wxCustomDataObject_SetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxCustomDataObject * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","data", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxCustomDataObject_SetData",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCustomDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCustomDataObject_SetData. Expected _wxCustomDataObject_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxCustomDataObject_SetData(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxCustomDataObject_GetSize(_swigobj)  (_swigobj->GetSize())
+static PyObject *_wrap_wxCustomDataObject_GetSize(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    size_t  _result;
+    wxCustomDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCustomDataObject_GetSize",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCustomDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCustomDataObject_GetSize. Expected _wxCustomDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (size_t )wxCustomDataObject_GetSize(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static PyObject * wxCustomDataObject_GetData(wxCustomDataObject *self) {
+            return PyString_FromStringAndSize((char*)self->GetData(), self->GetSize());
+        }
+static PyObject *_wrap_wxCustomDataObject_GetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    PyObject * _result;
+    wxCustomDataObject * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCustomDataObject_GetData",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCustomDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCustomDataObject_GetData. Expected _wxCustomDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (PyObject *)wxCustomDataObject_GetData(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}{
+  _resultobj = _result;
+}
+    return _resultobj;
+}
+
+#define new_wxClipboard() (new wxClipboard())
+static PyObject *_wrap_new_wxClipboard(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxClipboard * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxClipboard",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxClipboard *)new_wxClipboard();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxClipboard_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxClipboard_Open(_swigobj)  (_swigobj->Open())
+static PyObject *_wrap_wxClipboard_Open(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxClipboard_Open",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_Open. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_Open(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_Close(_swigobj)  (_swigobj->Close())
+static PyObject *_wrap_wxClipboard_Close(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxClipboard * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxClipboard_Close",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_Close. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxClipboard_Close(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxClipboard_IsOpened(_swigobj)  (_swigobj->IsOpened())
+static PyObject *_wrap_wxClipboard_IsOpened(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxClipboard_IsOpened",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_IsOpened. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_IsOpened(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_AddData(_swigobj,_swigarg0)  (_swigobj->AddData(_swigarg0))
+static PyObject *_wrap_wxClipboard_AddData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    wxDataObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","data", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxClipboard_AddData",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_AddData. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_AddData. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_AddData(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_SetData(_swigobj,_swigarg0)  (_swigobj->SetData(_swigarg0))
+static PyObject *_wrap_wxClipboard_SetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    wxDataObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","data", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxClipboard_SetData",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_SetData. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_SetData. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_SetData(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_IsSupported(_swigobj,_swigarg0)  (_swigobj->IsSupported(_swigarg0))
+static PyObject *_wrap_wxClipboard_IsSupported(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    wxDataFormat * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxClipboard_IsSupported",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_IsSupported. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_IsSupported. Expected _wxDataFormat_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_IsSupported(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_GetData(_swigobj,_swigarg0)  (_swigobj->GetData(_swigarg0))
+static PyObject *_wrap_wxClipboard_GetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    wxDataObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","data", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxClipboard_GetData",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_GetData. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_GetData. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_GetData(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_Clear(_swigobj)  (_swigobj->Clear())
+static PyObject *_wrap_wxClipboard_Clear(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxClipboard * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxClipboard_Clear",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_Clear. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxClipboard_Clear(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxClipboard_Flush(_swigobj)  (_swigobj->Flush())
+static PyObject *_wrap_wxClipboard_Flush(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxClipboard * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxClipboard_Flush",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_Flush. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxClipboard_Flush(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxClipboard_UsePrimarySelection(_swigobj,_swigarg0)  (_swigobj->UsePrimarySelection(_swigarg0))
+static PyObject *_wrap_wxClipboard_UsePrimarySelection(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxClipboard * _arg0;
+    int  _arg1 = (int ) FALSE;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","primary", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxClipboard_UsePrimarySelection",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxClipboard_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxClipboard_UsePrimarySelection. Expected _wxClipboard_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxClipboard_UsePrimarySelection(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define new_wxDropSource(_swigarg0,_swigarg1,_swigarg2,_swigarg3) (new wxPyDropSource(_swigarg0,_swigarg1,_swigarg2,_swigarg3))
+static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropSource * _result;
+    wxWindow * _arg0 = (wxWindow *) NULL;
+    wxCursor * _arg1 = (wxCursor *) &wxNullCursor;
+    wxCursor * _arg2 = (wxCursor *) &wxNullCursor;
+    wxCursor * _arg3 = (wxCursor *) &wxNullCursor;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    PyObject * _argo2 = 0;
+    PyObject * _argo3 = 0;
+    char *_kwnames[] = { "win","cursorCopy","cursorMove","cursorStop", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OOOO:new_wxDropSource",_kwnames,&_argo0,&_argo1,&_argo2,&_argo3)) 
+        return NULL;
+    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_wxDropSource. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDropSource. Expected _wxCursor_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxDropSource. Expected _wxCursor_p.");
+        return NULL;
+        }
+    }
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxCursor_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxDropSource. Expected _wxCursor_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyDropSource *)new_wxDropSource(_arg0,*_arg1,*_arg2,*_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyDropSource_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxDropSource__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxDropSource__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropSource * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDropSource__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDropSource__setSelf. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDropSource__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define delete_wxPyDropSource(_swigobj) (delete _swigobj)
+static PyObject *_wrap_delete_wxDropSource(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropSource * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:delete_wxDropSource",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxDropSource. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxPyDropSource(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDropSource_SetData(_swigobj,_swigarg0)  (_swigobj->SetData(_swigarg0))
+static PyObject *_wrap_wxDropSource_SetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropSource * _arg0;
+    wxDataObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","data", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDropSource_SetData",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDropSource_SetData. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDropSource_SetData. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDropSource_SetData(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDropSource_GetDataObject(_swigobj)  (_swigobj->GetDataObject())
+static PyObject *_wrap_wxDropSource_GetDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObject * _result;
+    wxPyDropSource * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxDropSource_GetDataObject",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDropSource_GetDataObject. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataObject *)wxDropSource_GetDataObject(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxDropSource_SetCursor(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetCursor(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxDropSource_SetCursor(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropSource * _arg0;
+    wxDragResult  _arg1;
+    wxCursor * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
+    char *_kwnames[] = { "self","res","cursor", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxDropSource_SetCursor",_kwnames,&_argo0,&_arg1,&_argo2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDropSource_SetCursor. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDropSource_SetCursor. Expected _wxCursor_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxDropSource_SetCursor(_arg0,_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxDropSource_DoDragDrop(_swigobj,_swigarg0)  (_swigobj->DoDragDrop(_swigarg0))
+static PyObject *_wrap_wxDropSource_DoDragDrop(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyDropSource * _arg0;
+    int  _arg1 = (int ) FALSE;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","bAllowMove", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxDropSource_DoDragDrop",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDropSource_DoDragDrop. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxDropSource_DoDragDrop(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxDropSource_base_GiveFeedback(_swigobj,_swigarg0)  (_swigobj->base_GiveFeedback(_swigarg0))
+static PyObject *_wrap_wxDropSource_base_GiveFeedback(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyDropSource * _arg0;
+    wxDragResult  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","effect", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDropSource_base_GiveFeedback",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropSource_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDropSource_base_GiveFeedback. Expected _wxPyDropSource_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxDropSource_base_GiveFeedback(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static void *SwigwxPyDropTargetTowxDropTarget(void *ptr) {
+    wxPyDropTarget *src;
+    wxDropTarget *dest;
+    src = (wxPyDropTarget *) ptr;
+    dest = (wxDropTarget *) src;
+    return (void *) dest;
+}
+
+#define new_wxPyDropTarget(_swigarg0) (new wxPyDropTarget(_swigarg0))
+static PyObject *_wrap_new_wxPyDropTarget(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropTarget * _result;
+    wxDataObject * _arg0 = (wxDataObject *) NULL;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "dataObject", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyDropTarget",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyDropTarget. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyDropTarget *)new_wxPyDropTarget(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyDropTarget_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxPyDropTarget__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxPyDropTarget__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropTarget * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyDropTarget__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget__setSelf. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPyDropTarget__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define delete_wxPyDropTarget(_swigobj) (delete _swigobj)
+static PyObject *_wrap_delete_wxPyDropTarget(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropTarget * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:delete_wxPyDropTarget",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxPyDropTarget. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxPyDropTarget(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxPyDropTarget_GetDataObject(_swigobj)  (_swigobj->GetDataObject())
+static PyObject *_wrap_wxPyDropTarget_GetDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDataObject * _result;
+    wxPyDropTarget * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyDropTarget_GetDataObject",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_GetDataObject. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDataObject *)wxPyDropTarget_GetDataObject(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDataObject_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxPyDropTarget_SetDataObject(_swigobj,_swigarg0)  (_swigobj->SetDataObject(_swigarg0))
+static PyObject *_wrap_wxPyDropTarget_SetDataObject(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropTarget * _arg0;
+    wxDataObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","dataObject", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyDropTarget_SetDataObject",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_SetDataObject. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDropTarget_SetDataObject. Expected _wxDataObject_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPyDropTarget_SetDataObject(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxPyDropTarget_base_OnEnter(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnEnter(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxPyDropTarget_base_OnEnter(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxPyDropTarget_base_OnEnter",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_base_OnEnter. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxPyDropTarget_base_OnEnter(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxPyDropTarget_base_OnDragOver(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnDragOver(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxPyDropTarget_base_OnDragOver(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxPyDropTarget_base_OnDragOver",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_base_OnDragOver. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxPyDropTarget_base_OnDragOver(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxPyDropTarget_base_OnLeave(_swigobj)  (_swigobj->base_OnLeave())
+static PyObject *_wrap_wxPyDropTarget_base_OnLeave(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyDropTarget * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyDropTarget_base_OnLeave",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_base_OnLeave. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPyDropTarget_base_OnLeave(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxPyDropTarget_base_OnDrop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->base_OnDrop(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxPyDropTarget_base_OnDrop(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxPyDropTarget_base_OnDrop",_kwnames,&_argo0,&_arg1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_base_OnDrop. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxPyDropTarget_base_OnDrop(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxPyDropTarget_GetData(_swigobj)  (_swigobj->GetData())
+static PyObject *_wrap_wxPyDropTarget_GetData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyDropTarget * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyDropTarget_GetData",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyDropTarget_GetData. Expected _wxPyDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxPyDropTarget_GetData(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static void *SwigwxPyTextDropTargetTowxPyDropTarget(void *ptr) {
+    wxPyTextDropTarget *src;
+    wxPyDropTarget *dest;
+    src = (wxPyTextDropTarget *) ptr;
+    dest = (wxPyDropTarget *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyTextDropTargetTowxDropTarget(void *ptr) {
+    wxPyTextDropTarget *src;
+    wxDropTarget *dest;
+    src = (wxPyTextDropTarget *) ptr;
+    dest = (wxDropTarget *) src;
+    return (void *) dest;
+}
+
+#define new_wxTextDropTarget() (new wxPyTextDropTarget())
+static PyObject *_wrap_new_wxTextDropTarget(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyTextDropTarget * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxTextDropTarget",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyTextDropTarget *)new_wxTextDropTarget();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyTextDropTarget_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxTextDropTarget__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxTextDropTarget__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyTextDropTarget * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTextDropTarget__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDropTarget__setSelf. Expected _wxPyTextDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTextDropTarget__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxTextDropTarget_base_OnEnter(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnEnter(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxTextDropTarget_base_OnEnter(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyTextDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxTextDropTarget_base_OnEnter",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDropTarget_base_OnEnter. Expected _wxPyTextDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxTextDropTarget_base_OnEnter(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxTextDropTarget_base_OnDragOver(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnDragOver(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxTextDropTarget_base_OnDragOver(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyTextDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxTextDropTarget_base_OnDragOver",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDropTarget_base_OnDragOver. Expected _wxPyTextDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxTextDropTarget_base_OnDragOver(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxTextDropTarget_base_OnLeave(_swigobj)  (_swigobj->base_OnLeave())
+static PyObject *_wrap_wxTextDropTarget_base_OnLeave(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyTextDropTarget * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTextDropTarget_base_OnLeave",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDropTarget_base_OnLeave. Expected _wxPyTextDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTextDropTarget_base_OnLeave(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxTextDropTarget_base_OnDrop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->base_OnDrop(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxTextDropTarget_base_OnDrop(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyTextDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxTextDropTarget_base_OnDrop",_kwnames,&_argo0,&_arg1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDropTarget_base_OnDrop. Expected _wxPyTextDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxTextDropTarget_base_OnDrop(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxTextDropTarget_base_OnData(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnData(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxTextDropTarget_base_OnData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyTextDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxTextDropTarget_base_OnData",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTextDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextDropTarget_base_OnData. Expected _wxPyTextDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxTextDropTarget_base_OnData(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static void *SwigwxPyFileDropTargetTowxPyDropTarget(void *ptr) {
+    wxPyFileDropTarget *src;
+    wxPyDropTarget *dest;
+    src = (wxPyFileDropTarget *) ptr;
+    dest = (wxPyDropTarget *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyFileDropTargetTowxDropTarget(void *ptr) {
+    wxPyFileDropTarget *src;
+    wxDropTarget *dest;
+    src = (wxPyFileDropTarget *) ptr;
+    dest = (wxDropTarget *) src;
+    return (void *) dest;
+}
+
+#define new_wxFileDropTarget() (new wxPyFileDropTarget())
+static PyObject *_wrap_new_wxFileDropTarget(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyFileDropTarget * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxFileDropTarget",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyFileDropTarget *)new_wxFileDropTarget();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyFileDropTarget_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxFileDropTarget__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxFileDropTarget__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyFileDropTarget * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxFileDropTarget__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFileDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDropTarget__setSelf. Expected _wxPyFileDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFileDropTarget__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxFileDropTarget_base_OnEnter(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnEnter(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxFileDropTarget_base_OnEnter(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyFileDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxFileDropTarget_base_OnEnter",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFileDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDropTarget_base_OnEnter. Expected _wxPyFileDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxFileDropTarget_base_OnEnter(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxFileDropTarget_base_OnDragOver(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnDragOver(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxFileDropTarget_base_OnDragOver(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyFileDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxFileDropTarget_base_OnDragOver",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFileDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDropTarget_base_OnDragOver. Expected _wxPyFileDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxFileDropTarget_base_OnDragOver(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxFileDropTarget_base_OnLeave(_swigobj)  (_swigobj->base_OnLeave())
+static PyObject *_wrap_wxFileDropTarget_base_OnLeave(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyFileDropTarget * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxFileDropTarget_base_OnLeave",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFileDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDropTarget_base_OnLeave. Expected _wxPyFileDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFileDropTarget_base_OnLeave(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxFileDropTarget_base_OnDrop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->base_OnDrop(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxFileDropTarget_base_OnDrop(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyFileDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxFileDropTarget_base_OnDrop",_kwnames,&_argo0,&_arg1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFileDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDropTarget_base_OnDrop. Expected _wxPyFileDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxFileDropTarget_base_OnDrop(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxFileDropTarget_base_OnData(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->base_OnData(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxFileDropTarget_base_OnData(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDragResult  _result;
+    wxPyFileDropTarget * _arg0;
+    wxCoord  _arg1;
+    wxCoord  _arg2;
+    wxDragResult  _arg3;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","x","y","def", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxFileDropTarget_base_OnData",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFileDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFileDropTarget_base_OnData. Expected _wxPyFileDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDragResult )wxFileDropTarget_base_OnData(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static PyMethodDef clip_dndcMethods[] = {
+	 { "wxFileDropTarget_base_OnData", (PyCFunction) _wrap_wxFileDropTarget_base_OnData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFileDropTarget_base_OnDrop", (PyCFunction) _wrap_wxFileDropTarget_base_OnDrop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFileDropTarget_base_OnLeave", (PyCFunction) _wrap_wxFileDropTarget_base_OnLeave, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFileDropTarget_base_OnDragOver", (PyCFunction) _wrap_wxFileDropTarget_base_OnDragOver, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFileDropTarget_base_OnEnter", (PyCFunction) _wrap_wxFileDropTarget_base_OnEnter, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFileDropTarget__setSelf", (PyCFunction) _wrap_wxFileDropTarget__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxFileDropTarget", (PyCFunction) _wrap_new_wxFileDropTarget, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDropTarget_base_OnData", (PyCFunction) _wrap_wxTextDropTarget_base_OnData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDropTarget_base_OnDrop", (PyCFunction) _wrap_wxTextDropTarget_base_OnDrop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDropTarget_base_OnLeave", (PyCFunction) _wrap_wxTextDropTarget_base_OnLeave, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDropTarget_base_OnDragOver", (PyCFunction) _wrap_wxTextDropTarget_base_OnDragOver, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDropTarget_base_OnEnter", (PyCFunction) _wrap_wxTextDropTarget_base_OnEnter, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDropTarget__setSelf", (PyCFunction) _wrap_wxTextDropTarget__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxTextDropTarget", (PyCFunction) _wrap_new_wxTextDropTarget, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_GetData", (PyCFunction) _wrap_wxPyDropTarget_GetData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_base_OnDrop", (PyCFunction) _wrap_wxPyDropTarget_base_OnDrop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_base_OnLeave", (PyCFunction) _wrap_wxPyDropTarget_base_OnLeave, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_base_OnDragOver", (PyCFunction) _wrap_wxPyDropTarget_base_OnDragOver, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_base_OnEnter", (PyCFunction) _wrap_wxPyDropTarget_base_OnEnter, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_SetDataObject", (PyCFunction) _wrap_wxPyDropTarget_SetDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget_GetDataObject", (PyCFunction) _wrap_wxPyDropTarget_GetDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "delete_wxPyDropTarget", (PyCFunction) _wrap_delete_wxPyDropTarget, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDropTarget__setSelf", (PyCFunction) _wrap_wxPyDropTarget__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxPyDropTarget", (PyCFunction) _wrap_new_wxPyDropTarget, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDropSource_base_GiveFeedback", (PyCFunction) _wrap_wxDropSource_base_GiveFeedback, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDropSource_DoDragDrop", (PyCFunction) _wrap_wxDropSource_DoDragDrop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDropSource_SetCursor", (PyCFunction) _wrap_wxDropSource_SetCursor, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDropSource_GetDataObject", (PyCFunction) _wrap_wxDropSource_GetDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDropSource_SetData", (PyCFunction) _wrap_wxDropSource_SetData, METH_VARARGS | METH_KEYWORDS },
+	 { "delete_wxDropSource", (PyCFunction) _wrap_delete_wxDropSource, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDropSource__setSelf", (PyCFunction) _wrap_wxDropSource__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxDropSource", (PyCFunction) _wrap_new_wxDropSource, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_UsePrimarySelection", (PyCFunction) _wrap_wxClipboard_UsePrimarySelection, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_Flush", (PyCFunction) _wrap_wxClipboard_Flush, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_Clear", (PyCFunction) _wrap_wxClipboard_Clear, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_GetData", (PyCFunction) _wrap_wxClipboard_GetData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_IsSupported", (PyCFunction) _wrap_wxClipboard_IsSupported, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_SetData", (PyCFunction) _wrap_wxClipboard_SetData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_AddData", (PyCFunction) _wrap_wxClipboard_AddData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_IsOpened", (PyCFunction) _wrap_wxClipboard_IsOpened, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_Close", (PyCFunction) _wrap_wxClipboard_Close, METH_VARARGS | METH_KEYWORDS },
+	 { "wxClipboard_Open", (PyCFunction) _wrap_wxClipboard_Open, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxClipboard", (PyCFunction) _wrap_new_wxClipboard, METH_VARARGS | METH_KEYWORDS },
+	 { "wxCustomDataObject_GetData", (PyCFunction) _wrap_wxCustomDataObject_GetData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxCustomDataObject_GetSize", (PyCFunction) _wrap_wxCustomDataObject_GetSize, METH_VARARGS | METH_KEYWORDS },
+	 { "wxCustomDataObject_SetData", (PyCFunction) _wrap_wxCustomDataObject_SetData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxCustomDataObject_TakeData", (PyCFunction) _wrap_wxCustomDataObject_TakeData, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxCustomDataObject", (PyCFunction) _wrap_new_wxCustomDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFileDataObject_GetFilenames", (PyCFunction) _wrap_wxFileDataObject_GetFilenames, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxFileDataObject", (PyCFunction) _wrap_new_wxFileDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyBitmapDataObject__setSelf", (PyCFunction) _wrap_wxPyBitmapDataObject__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxPyBitmapDataObject", (PyCFunction) _wrap_new_wxPyBitmapDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxBitmapDataObject_SetBitmap", (PyCFunction) _wrap_wxBitmapDataObject_SetBitmap, METH_VARARGS | METH_KEYWORDS },
+	 { "wxBitmapDataObject_GetBitmap", (PyCFunction) _wrap_wxBitmapDataObject_GetBitmap, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxBitmapDataObject", (PyCFunction) _wrap_new_wxBitmapDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyTextDataObject__setSelf", (PyCFunction) _wrap_wxPyTextDataObject__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxPyTextDataObject", (PyCFunction) _wrap_new_wxPyTextDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDataObject_SetText", (PyCFunction) _wrap_wxTextDataObject_SetText, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDataObject_GetText", (PyCFunction) _wrap_wxTextDataObject_GetText, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextDataObject_GetTextLength", (PyCFunction) _wrap_wxTextDataObject_GetTextLength, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxTextDataObject", (PyCFunction) _wrap_new_wxTextDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObjectComposite_Add", (PyCFunction) _wrap_wxDataObjectComposite_Add, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxDataObjectComposite", (PyCFunction) _wrap_new_wxDataObjectComposite, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPyDataObjectSimple__setSelf", (PyCFunction) _wrap_wxPyDataObjectSimple__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxPyDataObjectSimple", (PyCFunction) _wrap_new_wxPyDataObjectSimple, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObjectSimple_SetFormat", (PyCFunction) _wrap_wxDataObjectSimple_SetFormat, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObjectSimple_GetFormat", (PyCFunction) _wrap_wxDataObjectSimple_GetFormat, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxDataObjectSimple", (PyCFunction) _wrap_new_wxDataObjectSimple, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_IsSupportedFormat", (PyCFunction) _wrap_wxDataObject_IsSupportedFormat, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_SetData", (PyCFunction) _wrap_wxDataObject_SetData, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_GetDataSize", (PyCFunction) _wrap_wxDataObject_GetDataSize, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_GetAllFormats", (PyCFunction) _wrap_wxDataObject_GetAllFormats, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_GetFormatCount", (PyCFunction) _wrap_wxDataObject_GetFormatCount, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataObject_GetPreferredFormat", (PyCFunction) _wrap_wxDataObject_GetPreferredFormat, METH_VARARGS | METH_KEYWORDS },
+	 { "delete_wxDataObject", (PyCFunction) _wrap_delete_wxDataObject, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataFormat_SetId", (PyCFunction) _wrap_wxDataFormat_SetId, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataFormat_GetId", (PyCFunction) _wrap_wxDataFormat_GetId, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataFormat_GetType", (PyCFunction) _wrap_wxDataFormat_GetType, METH_VARARGS | METH_KEYWORDS },
+	 { "wxDataFormat_SetType", (PyCFunction) _wrap_wxDataFormat_SetType, METH_VARARGS | METH_KEYWORDS },
+	 { "delete_wxDataFormat", (PyCFunction) _wrap_delete_wxDataFormat, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxDataFormat", (PyCFunction) _wrap_new_wxDataFormat, METH_VARARGS | METH_KEYWORDS },
+	 { "wxIsDragResultOk", (PyCFunction) _wrap_wxIsDragResultOk, METH_VARARGS | METH_KEYWORDS },
+	 { "wxCustomDataFormat", (PyCFunction) _wrap_wxCustomDataFormat, METH_VARARGS | METH_KEYWORDS },
+	 { 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},
+    { "_wxPyBitmapDataObject","_class_wxPyBitmapDataObject",0},
+    { "_wxBitmapDataObject","_class_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxBitmapDataObject},
+    { "_wxBitmapDataObject","_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxBitmapDataObject},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
+    { "_wxPrintQuality","_wxCoord",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_wxCustomDataObject","_wxCustomDataObject",0},
+    { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
+    { "_wxIndividualLayoutConstraint","_class_wxIndividualLayoutConstraint",0},
+    { "_wxCursor","_class_wxCursor",0},
+    { "_wxMask","_class_wxMask",0},
+    { "_wxPen","_class_wxPen",0},
+    { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObject},
+    { "_wxDataObject","_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObject},
+    { "_wxDataObject","_class_wxFileDataObject",SwigwxFileDataObjectTowxDataObject},
+    { "_wxDataObject","_wxFileDataObject",SwigwxFileDataObjectTowxDataObject},
+    { "_wxDataObject","_class_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObject},
+    { "_wxDataObject","_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObject},
+    { "_wxDataObject","_class_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObject},
+    { "_wxDataObject","_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObject},
+    { "_wxDataObject","_class_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObject},
+    { "_wxDataObject","_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObject},
+    { "_wxDataObject","_class_wxTextDataObject",SwigwxTextDataObjectTowxDataObject},
+    { "_wxDataObject","_wxTextDataObject",SwigwxTextDataObjectTowxDataObject},
+    { "_wxDataObject","_class_wxDataObjectComposite",SwigwxDataObjectCompositeTowxDataObject},
+    { "_wxDataObject","_wxDataObjectComposite",SwigwxDataObjectCompositeTowxDataObject},
+    { "_wxDataObject","_class_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObject},
+    { "_wxDataObject","_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObject},
+    { "_wxDataObject","_class_wxDataObjectSimple",SwigwxDataObjectSimpleTowxDataObject},
+    { "_wxDataObject","_wxDataObjectSimple",SwigwxDataObjectSimpleTowxDataObject},
+    { "_wxDataObject","_class_wxDataObject",0},
+    { "_wxPyDataObjectSimple","_class_wxPyDataObjectSimple",0},
+    { "_wxPyDropSource","_class_wxPyDropSource",0},
+    { "_long","_wxDash",0},
+    { "_long","_unsigned_long",0},
+    { "_long","_signed_long",0},
+    { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxFileDataObject",SwigwxFileDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxFileDataObject",SwigwxFileDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxTextDataObject",SwigwxTextDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxTextDataObject",SwigwxTextDataObjectTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObjectSimple},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
+    { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
+    { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_class_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxBitmapDataObject},
+    { "_class_wxBitmapDataObject","_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxBitmapDataObject},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
+    { "_size_t","_wxCoord",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},
+    { "_wxTextDataObject","_class_wxPyTextDataObject",SwigwxPyTextDataObjectTowxTextDataObject},
+    { "_wxTextDataObject","_wxPyTextDataObject",SwigwxPyTextDataObjectTowxTextDataObject},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
+    { "_wxColour","_class_wxColour",0},
+    { "_class_wxFileDataObject","_wxFileDataObject",0},
+    { "_class_wxDataObject","_class_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObject},
+    { "_class_wxDataObject","_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObject},
+    { "_class_wxDataObject","_class_wxFileDataObject",SwigwxFileDataObjectTowxDataObject},
+    { "_class_wxDataObject","_wxFileDataObject",SwigwxFileDataObjectTowxDataObject},
+    { "_class_wxDataObject","_class_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObject},
+    { "_class_wxDataObject","_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObject},
+    { "_class_wxDataObject","_class_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObject},
+    { "_class_wxDataObject","_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObject},
+    { "_class_wxDataObject","_class_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObject},
+    { "_class_wxDataObject","_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObject},
+    { "_class_wxDataObject","_class_wxTextDataObject",SwigwxTextDataObjectTowxDataObject},
+    { "_class_wxDataObject","_wxTextDataObject",SwigwxTextDataObjectTowxDataObject},
+    { "_class_wxDataObject","_class_wxDataObjectComposite",SwigwxDataObjectCompositeTowxDataObject},
+    { "_class_wxDataObject","_wxDataObjectComposite",SwigwxDataObjectCompositeTowxDataObject},
+    { "_class_wxDataObject","_class_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObject},
+    { "_class_wxDataObject","_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObject},
+    { "_class_wxDataObject","_class_wxDataObjectSimple",SwigwxDataObjectSimpleTowxDataObject},
+    { "_class_wxDataObject","_wxDataObjectSimple",SwigwxDataObjectSimpleTowxDataObject},
+    { "_class_wxDataObject","_wxDataObject",0},
+    { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_class_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxCustomDataObject",SwigwxCustomDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_class_wxFileDataObject",SwigwxFileDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxFileDataObject",SwigwxFileDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_class_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxPyBitmapDataObject",SwigwxPyBitmapDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_class_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxBitmapDataObject",SwigwxBitmapDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_class_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxPyTextDataObject",SwigwxPyTextDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_class_wxTextDataObject",SwigwxTextDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxTextDataObject",SwigwxTextDataObjectTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_class_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxPyDataObjectSimple",SwigwxPyDataObjectSimpleTowxDataObjectSimple},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
+    { "_uint","_wxCoord",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_wxBitmap",0},
+    { "_wxPyTimer","_class_wxPyTimer",0},
+    { "_wxWindowDC","_class_wxWindowDC",0},
+    { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
+    { "_wxDropTarget","_class_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxDropTarget},
+    { "_wxDropTarget","_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxDropTarget},
+    { "_wxDropTarget","_class_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxDropTarget},
+    { "_wxDropTarget","_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxDropTarget},
+    { "_wxDropTarget","_class_wxPyDropTarget",SwigwxPyDropTargetTowxDropTarget},
+    { "_wxDropTarget","_wxPyDropTarget",SwigwxPyDropTargetTowxDropTarget},
+    { "_wxDropTarget","_class_wxDropTarget",0},
+    { "_EBool","_wxCoord",0},
+    { "_EBool","_wxPrintQuality",0},
+    { "_EBool","_signed_int",0},
+    { "_EBool","_int",0},
+    { "_EBool","_wxWindowID",0},
+    { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
+    { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_class_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxPyDropTarget},
+    { "_class_wxPyDropTarget","_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxPyDropTarget},
+    { "_class_wxPyDropTarget","_class_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxPyDropTarget},
+    { "_class_wxPyDropTarget","_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxPyDropTarget},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
+    { "_unsigned_long","_wxDash",0},
+    { "_unsigned_long","_long",0},
+    { "_class_wxRect","_wxRect",0},
+    { "_class_wxDC","_wxDC",0},
+    { "_class_wxPyTimer","_wxPyTimer",0},
+    { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
+    { "_signed_int","_wxCoord",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},
+    { "_class_wxTextDataObject","_class_wxPyTextDataObject",SwigwxPyTextDataObjectTowxTextDataObject},
+    { "_class_wxTextDataObject","_wxPyTextDataObject",SwigwxPyTextDataObjectTowxTextDataObject},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
+    { "_wxScreenDC","_class_wxScreenDC",0},
+    { "_WXTYPE","_short",0},
+    { "_WXTYPE","_signed_short",0},
+    { "_WXTYPE","_unsigned_short",0},
+    { "_class_wxDropTarget","_class_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxDropTarget},
+    { "_class_wxDropTarget","_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxDropTarget},
+    { "_class_wxDropTarget","_class_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxDropTarget},
+    { "_class_wxDropTarget","_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxDropTarget},
+    { "_class_wxDropTarget","_class_wxPyDropTarget",SwigwxPyDropTargetTowxDropTarget},
+    { "_class_wxDropTarget","_wxPyDropTarget",SwigwxPyDropTargetTowxDropTarget},
+    { "_class_wxDropTarget","_wxDropTarget",0},
+    { "_class_wxBrush","_wxBrush",0},
+    { "_unsigned_short","_WXTYPE",0},
+    { "_unsigned_short","_short",0},
+    { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
+    { "_wxBusyInfo","_class_wxBusyInfo",0},
+    { "_class_wxPyBitmapDataObject","_wxPyBitmapDataObject",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},
+    { "_wxPyTextDataObject","_class_wxPyTextDataObject",0},
+    { "_wxPaintDC","_class_wxPaintDC",0},
+    { "_class_wxWindowDC","_wxWindowDC",0},
+    { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
+    { "_class_wxCursor","_wxCursor",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
+    { "_unsigned_char","_byte",0},
+    { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_unsigned_int","_wxCoord",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_wxPyDataObjectSimple","_wxPyDataObjectSimple",0},
+    { "_class_wxPyDropSource","_wxPyDropSource",0},
+    { "_class_wxImageList","_wxImageList",0},
+    { "_wxWindowID","_wxCoord",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","_wxCoord",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_wxPyTextDataObject","_wxPyTextDataObject",0},
+    { "_class_wxPaintDC","_wxPaintDC",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
+    { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxIcon","_wxIcon",0},
+    { "_class_wxColour","_wxColour",0},
+    { "_class_wxScreenDC","_wxScreenDC",0},
+    { "_wxPalette","_class_wxPalette",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
+    { "_wxRegion","_class_wxRegion",0},
+    { "_wxPyDropTarget","_class_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxPyDropTarget},
+    { "_wxPyDropTarget","_wxPyFileDropTarget",SwigwxPyFileDropTargetTowxPyDropTarget},
+    { "_wxPyDropTarget","_class_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxPyDropTarget},
+    { "_wxPyDropTarget","_wxPyTextDropTarget",SwigwxPyTextDropTargetTowxPyDropTarget},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
+    { "_class_wxBusyInfo","_wxBusyInfo",0},
+    { "_class_wxClientDC","_wxClientDC",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
+    { "_class_wxSize","_wxSize",0},
+    { "_class_wxBitmap","_wxBitmap",0},
+    { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
+    { "_wxDash","_unsigned_long",0},
+    { "_wxDash","_long",0},
+    { "_class_wxPalette","_wxPalette",0},
+    { "_wxFileDataObject","_class_wxFileDataObject",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
+{0,0,0}};
+
+static PyObject *SWIG_globals;
+#ifdef __cplusplus
+extern "C" 
+#endif
+SWIGEXPORT(void) initclip_dndc() {
+	 PyObject *m, *d;
+	 SWIG_globals = SWIG_newvarlink();
+	 m = Py_InitModule("clip_dndc", clip_dndcMethods);
+	 d = PyModule_GetDict(m);
+	 PyDict_SetItemString(d,"wxDF_INVALID", PyInt_FromLong((long) wxDF_INVALID));
+	 PyDict_SetItemString(d,"wxDF_TEXT", PyInt_FromLong((long) wxDF_TEXT));
+	 PyDict_SetItemString(d,"wxDF_BITMAP", PyInt_FromLong((long) wxDF_BITMAP));
+	 PyDict_SetItemString(d,"wxDF_METAFILE", PyInt_FromLong((long) wxDF_METAFILE));
+	 PyDict_SetItemString(d,"wxDF_SYLK", PyInt_FromLong((long) wxDF_SYLK));
+	 PyDict_SetItemString(d,"wxDF_DIF", PyInt_FromLong((long) wxDF_DIF));
+	 PyDict_SetItemString(d,"wxDF_TIFF", PyInt_FromLong((long) wxDF_TIFF));
+	 PyDict_SetItemString(d,"wxDF_OEMTEXT", PyInt_FromLong((long) wxDF_OEMTEXT));
+	 PyDict_SetItemString(d,"wxDF_DIB", PyInt_FromLong((long) wxDF_DIB));
+	 PyDict_SetItemString(d,"wxDF_PALETTE", PyInt_FromLong((long) wxDF_PALETTE));
+	 PyDict_SetItemString(d,"wxDF_PENDATA", PyInt_FromLong((long) wxDF_PENDATA));
+	 PyDict_SetItemString(d,"wxDF_RIFF", PyInt_FromLong((long) wxDF_RIFF));
+	 PyDict_SetItemString(d,"wxDF_WAVE", PyInt_FromLong((long) wxDF_WAVE));
+	 PyDict_SetItemString(d,"wxDF_UNICODETEXT", PyInt_FromLong((long) wxDF_UNICODETEXT));
+	 PyDict_SetItemString(d,"wxDF_ENHMETAFILE", PyInt_FromLong((long) wxDF_ENHMETAFILE));
+	 PyDict_SetItemString(d,"wxDF_FILENAME", PyInt_FromLong((long) wxDF_FILENAME));
+	 PyDict_SetItemString(d,"wxDF_LOCALE", PyInt_FromLong((long) wxDF_LOCALE));
+	 PyDict_SetItemString(d,"wxDF_PRIVATE", PyInt_FromLong((long) wxDF_PRIVATE));
+	 PyDict_SetItemString(d,"wxDF_MAX", PyInt_FromLong((long) wxDF_MAX));
+	 PyDict_SetItemString(d,"cvar", SWIG_globals);
+	 SWIG_addvarlink(SWIG_globals,"wxFormatInvalid",_wrap_wxPyFormatInvalid_get, _wrap_wxPyFormatInvalid_set);
+	 SWIG_addvarlink(SWIG_globals,"wxTheClipboard",_wrap_wxPyTheClipboard_get, _wrap_wxPyTheClipboard_set);
+	 PyDict_SetItemString(d,"wxDragError", PyInt_FromLong((long) wxDragError));
+	 PyDict_SetItemString(d,"wxDragNone", PyInt_FromLong((long) wxDragNone));
+	 PyDict_SetItemString(d,"wxDragCopy", PyInt_FromLong((long) wxDragCopy));
+	 PyDict_SetItemString(d,"wxDragMove", PyInt_FromLong((long) wxDragMove));
+	 PyDict_SetItemString(d,"wxDragCancel", PyInt_FromLong((long) wxDragCancel));
+
+
+    wxPyTheClipboard = wxTheClipboard;
+
+	 PyDict_SetItemString(d,"wxDataObject_Get", PyInt_FromLong((long) wxDataObject::Get));
+	 PyDict_SetItemString(d,"wxDataObject_Set", PyInt_FromLong((long) wxDataObject::Set));
+	 PyDict_SetItemString(d,"wxDataObject_Both", PyInt_FromLong((long) wxDataObject::Both));
+{
+   int i;
+   for (i = 0; _swig_mapping[i].n1; i++)
+        SWIG_RegisterMapping(_swig_mapping[i].n1,_swig_mapping[i].n2,_swig_mapping[i].pcnv);
+}
+}
diff --git a/utils/wxPython/src/msw/clip_dnd.py b/utils/wxPython/src/msw/clip_dnd.py
new file mode 100644
index 0000000000..7ebfabdb1a
--- /dev/null
+++ b/utils/wxPython/src/msw/clip_dnd.py
@@ -0,0 +1,506 @@
+# This file was created automatically by SWIG.
+import clip_dndc
+
+from misc import *
+
+from gdi import *
+import wx
+class wxDataFormatPtr :
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def __del__(self,clip_dndc=clip_dndc):
+        if self.thisown == 1 :
+            clip_dndc.delete_wxDataFormat(self)
+    def SetType(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataFormat_SetType,(self,) + _args, _kwargs)
+        return val
+    def GetType(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataFormat_GetType,(self,) + _args, _kwargs)
+        return val
+    def GetId(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataFormat_GetId,(self,) + _args, _kwargs)
+        return val
+    def SetId(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataFormat_SetId,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxDataFormat instance at %s>" % (self.this,)
+class wxDataFormat(wxDataFormatPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxDataFormat,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxDataObjectPtr :
+    Get = clip_dndc.wxDataObject_Get
+    Set = clip_dndc.wxDataObject_Set
+    Both = clip_dndc.wxDataObject_Both
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def __del__(self,clip_dndc=clip_dndc):
+        if self.thisown == 1 :
+            clip_dndc.delete_wxDataObject(self)
+    def GetPreferredFormat(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_GetPreferredFormat,(self,) + _args, _kwargs)
+        if val: val = wxDataFormatPtr(val) ; val.thisown = 1
+        return val
+    def GetFormatCount(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_GetFormatCount,(self,) + _args, _kwargs)
+        return val
+    def GetAllFormats(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_GetAllFormats,(self,) + _args, _kwargs)
+        return val
+    def GetDataSize(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs)
+        return val
+    def GetDataHere(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_GetDataHere,(self,) + _args, _kwargs)
+        return val
+    def SetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_SetData,(self,) + _args, _kwargs)
+        return val
+    def IsSupportedFormat(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObject_IsSupportedFormat,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxDataObject instance at %s>" % (self.this,)
+class wxDataObject(wxDataObjectPtr):
+    def __init__(self,this):
+        self.this = this
+
+
+
+
+class wxDataObjectSimplePtr(wxDataObjectPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def GetFormat(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObjectSimple_GetFormat,(self,) + _args, _kwargs)
+        if val: val = wxDataFormatPtr(val) 
+        return val
+    def SetFormat(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObjectSimple_SetFormat,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxDataObjectSimple instance at %s>" % (self.this,)
+class wxDataObjectSimple(wxDataObjectSimplePtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxDataObjectSimple,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxPyDataObjectSimplePtr(wxDataObjectSimplePtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDataObjectSimple__setSelf,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxPyDataObjectSimple instance at %s>" % (self.this,)
+class wxPyDataObjectSimple(wxPyDataObjectSimplePtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxPyDataObjectSimple,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
+class wxDataObjectCompositePtr(wxDataObjectPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def Add(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDataObjectComposite_Add,(self,) + _args, _kwargs)
+        _args[0].thisown = 0
+        return val
+    def __repr__(self):
+        return "<C wxDataObjectComposite instance at %s>" % (self.this,)
+class wxDataObjectComposite(wxDataObjectCompositePtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxDataObjectComposite,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxTextDataObjectPtr(wxDataObjectSimplePtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def GetTextLength(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDataObject_GetTextLength,(self,) + _args, _kwargs)
+        return val
+    def GetText(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDataObject_GetText,(self,) + _args, _kwargs)
+        return val
+    def SetText(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDataObject_SetText,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxTextDataObject instance at %s>" % (self.this,)
+class wxTextDataObject(wxTextDataObjectPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxTextDataObject,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxPyTextDataObjectPtr(wxTextDataObjectPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyTextDataObject__setSelf,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxPyTextDataObject instance at %s>" % (self.this,)
+class wxPyTextDataObject(wxPyTextDataObjectPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxPyTextDataObject,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
+class wxBitmapDataObjectPtr(wxDataObjectSimplePtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def GetBitmap(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxBitmapDataObject_GetBitmap,(self,) + _args, _kwargs)
+        if val: val = wxBitmapPtr(val) ; val.thisown = 1
+        return val
+    def SetBitmap(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxBitmapDataObject_SetBitmap,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxBitmapDataObject instance at %s>" % (self.this,)
+class wxBitmapDataObject(wxBitmapDataObjectPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxBitmapDataObject,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxPyBitmapDataObjectPtr(wxBitmapDataObjectPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyBitmapDataObject__setSelf,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxPyBitmapDataObject instance at %s>" % (self.this,)
+class wxPyBitmapDataObject(wxPyBitmapDataObjectPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxPyBitmapDataObject,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
+class wxFileDataObjectPtr(wxDataObjectSimplePtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def GetFilenames(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDataObject_GetFilenames,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxFileDataObject instance at %s>" % (self.this,)
+class wxFileDataObject(wxFileDataObjectPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxFileDataObject,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxCustomDataObjectPtr(wxDataObjectSimplePtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def TakeData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxCustomDataObject_TakeData,(self,) + _args, _kwargs)
+        return val
+    def SetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxCustomDataObject_SetData,(self,) + _args, _kwargs)
+        return val
+    def GetSize(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxCustomDataObject_GetSize,(self,) + _args, _kwargs)
+        return val
+    def GetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxCustomDataObject_GetData,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxCustomDataObject instance at %s>" % (self.this,)
+class wxCustomDataObject(wxCustomDataObjectPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxCustomDataObject,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxClipboardPtr :
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def Open(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_Open,(self,) + _args, _kwargs)
+        return val
+    def Close(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_Close,(self,) + _args, _kwargs)
+        return val
+    def IsOpened(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_IsOpened,(self,) + _args, _kwargs)
+        return val
+    def AddData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_AddData,(self,) + _args, _kwargs)
+        _args[0].thisown = 0
+        return val
+    def SetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_SetData,(self,) + _args, _kwargs)
+        _args[0].thisown = 0
+        return val
+    def IsSupported(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_IsSupported,(self,) + _args, _kwargs)
+        return val
+    def GetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_GetData,(self,) + _args, _kwargs)
+        return val
+    def Clear(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_Clear,(self,) + _args, _kwargs)
+        return val
+    def Flush(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_Flush,(self,) + _args, _kwargs)
+        return val
+    def UsePrimarySelection(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxClipboard_UsePrimarySelection,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxClipboard instance at %s>" % (self.this,)
+class wxClipboard(wxClipboardPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxClipboard,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxDropSourcePtr :
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDropSource__setSelf,(self,) + _args, _kwargs)
+        return val
+    def __del__(self,clip_dndc=clip_dndc):
+        if self.thisown == 1 :
+            clip_dndc.delete_wxDropSource(self)
+    def SetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDropSource_SetData,(self,) + _args, _kwargs)
+        return val
+    def GetDataObject(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDropSource_GetDataObject,(self,) + _args, _kwargs)
+        if val: val = wxDataObjectPtr(val) 
+        return val
+    def SetCursor(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDropSource_SetCursor,(self,) + _args, _kwargs)
+        return val
+    def DoDragDrop(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDropSource_DoDragDrop,(self,) + _args, _kwargs)
+        return val
+    def base_GiveFeedback(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxDropSource_base_GiveFeedback,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxDropSource instance at %s>" % (self.this,)
+class wxDropSource(wxDropSourcePtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxDropSource,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
+class wxDropTargetPtr :
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def __repr__(self):
+        return "<C wxDropTarget instance at %s>" % (self.this,)
+class wxDropTarget(wxDropTargetPtr):
+    def __init__(self,this):
+        self.this = this
+
+
+
+
+class wxPyDropTargetPtr(wxDropTargetPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget__setSelf,(self,) + _args, _kwargs)
+        return val
+    def __del__(self,clip_dndc=clip_dndc):
+        if self.thisown == 1 :
+            clip_dndc.delete_wxPyDropTarget(self)
+    def GetDataObject(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_GetDataObject,(self,) + _args, _kwargs)
+        if val: val = wxDataObjectPtr(val) 
+        return val
+    def SetDataObject(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_SetDataObject,(self,) + _args, _kwargs)
+        if _args:_args[0].thisown = 0
+        return val
+    def base_OnEnter(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_base_OnEnter,(self,) + _args, _kwargs)
+        return val
+    def base_OnDragOver(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_base_OnDragOver,(self,) + _args, _kwargs)
+        return val
+    def base_OnLeave(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_base_OnLeave,(self,) + _args, _kwargs)
+        return val
+    def base_OnDrop(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_base_OnDrop,(self,) + _args, _kwargs)
+        return val
+    def GetData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxPyDropTarget_GetData,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxPyDropTarget instance at %s>" % (self.this,)
+class wxPyDropTarget(wxPyDropTargetPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxPyDropTarget,_args,_kwargs)
+        self.thisown = 1
+        if _args:_args[0].thisown = 0
+        self._setSelf(self)
+
+
+
+
+class wxTextDropTargetPtr(wxPyDropTargetPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDropTarget__setSelf,(self,) + _args, _kwargs)
+        return val
+    def base_OnEnter(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDropTarget_base_OnEnter,(self,) + _args, _kwargs)
+        return val
+    def base_OnDragOver(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDropTarget_base_OnDragOver,(self,) + _args, _kwargs)
+        return val
+    def base_OnLeave(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDropTarget_base_OnLeave,(self,) + _args, _kwargs)
+        return val
+    def base_OnDrop(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDropTarget_base_OnDrop,(self,) + _args, _kwargs)
+        return val
+    def base_OnData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxTextDropTarget_base_OnData,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxTextDropTarget instance at %s>" % (self.this,)
+class wxTextDropTarget(wxTextDropTargetPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxTextDropTarget,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
+class wxFileDropTargetPtr(wxPyDropTargetPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDropTarget__setSelf,(self,) + _args, _kwargs)
+        return val
+    def base_OnEnter(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDropTarget_base_OnEnter,(self,) + _args, _kwargs)
+        return val
+    def base_OnDragOver(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDropTarget_base_OnDragOver,(self,) + _args, _kwargs)
+        return val
+    def base_OnLeave(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDropTarget_base_OnLeave,(self,) + _args, _kwargs)
+        return val
+    def base_OnDrop(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDropTarget_base_OnDrop,(self,) + _args, _kwargs)
+        return val
+    def base_OnData(self, *_args, **_kwargs):
+        val = apply(clip_dndc.wxFileDropTarget_base_OnData,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxFileDropTarget instance at %s>" % (self.this,)
+class wxFileDropTarget(wxFileDropTargetPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(clip_dndc.new_wxFileDropTarget,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
+
+
+#-------------- FUNCTION WRAPPERS ------------------
+
+def wxCustomDataFormat(*_args, **_kwargs):
+    val = apply(clip_dndc.wxCustomDataFormat,_args,_kwargs)
+    if val: val = wxDataFormatPtr(val); val.thisown = 1
+    return val
+
+wxIsDragResultOk = clip_dndc.wxIsDragResultOk
+
+
+
+#-------------- VARIABLE WRAPPERS ------------------
+
+wxDF_INVALID = clip_dndc.wxDF_INVALID
+wxDF_TEXT = clip_dndc.wxDF_TEXT
+wxDF_BITMAP = clip_dndc.wxDF_BITMAP
+wxDF_METAFILE = clip_dndc.wxDF_METAFILE
+wxDF_SYLK = clip_dndc.wxDF_SYLK
+wxDF_DIF = clip_dndc.wxDF_DIF
+wxDF_TIFF = clip_dndc.wxDF_TIFF
+wxDF_OEMTEXT = clip_dndc.wxDF_OEMTEXT
+wxDF_DIB = clip_dndc.wxDF_DIB
+wxDF_PALETTE = clip_dndc.wxDF_PALETTE
+wxDF_PENDATA = clip_dndc.wxDF_PENDATA
+wxDF_RIFF = clip_dndc.wxDF_RIFF
+wxDF_WAVE = clip_dndc.wxDF_WAVE
+wxDF_UNICODETEXT = clip_dndc.wxDF_UNICODETEXT
+wxDF_ENHMETAFILE = clip_dndc.wxDF_ENHMETAFILE
+wxDF_FILENAME = clip_dndc.wxDF_FILENAME
+wxDF_LOCALE = clip_dndc.wxDF_LOCALE
+wxDF_PRIVATE = clip_dndc.wxDF_PRIVATE
+wxDF_MAX = clip_dndc.wxDF_MAX
+cvar = clip_dndc.cvar
+wxFormatInvalid = wxDataFormatPtr(clip_dndc.cvar.wxFormatInvalid)
+wxTheClipboard = wxClipboardPtr(clip_dndc.cvar.wxTheClipboard)
+wxDragError = clip_dndc.wxDragError
+wxDragNone = clip_dndc.wxDragNone
+wxDragCopy = clip_dndc.wxDragCopy
+wxDragMove = clip_dndc.wxDragMove
+wxDragCancel = clip_dndc.wxDragCancel
diff --git a/utils/wxPython/src/msw/cmndlgs.cpp b/utils/wxPython/src/msw/cmndlgs.cpp
index 363956484f..1f869a9ece 100644
--- a/utils/wxPython/src/msw/cmndlgs.cpp
+++ b/utils/wxPython/src/msw/cmndlgs.cpp
@@ -2682,7 +2682,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -2690,6 +2692,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_wxFontData","_class_wxFontData",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
@@ -2719,6 +2722,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -2726,14 +2730,18 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_class_wxSingleChoiceDialog","_wxSingleChoiceDialog",0},
     { "_wxProgressDialog","_class_wxProgressDialog",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -2764,9 +2772,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_class_wxMessageDialog",SwigwxMessageDialogTowxDialog},
@@ -2787,10 +2797,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_wxMiniFrame","_class_wxMiniFrame",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -2824,11 +2838,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBar","_wxToolBar",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -2867,6 +2883,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
     { "_class_wxMessageDialog","_wxMessageDialog",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -2874,6 +2891,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -2904,6 +2922,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -2932,6 +2951,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -2969,6 +2989,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxFrame","_wxProgressDialog",SwigwxProgressDialogTowxFrame},
     { "_wxFrame","_class_wxFrame",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -2977,6 +2998,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -2998,6 +3020,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -3008,7 +3031,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxFontDialog","_class_wxFontDialog",0},
@@ -3021,6 +3053,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
@@ -3055,6 +3088,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxColourData","_class_wxColourData",0},
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_class_wxFontDialog","_wxFontDialog",0},
     { "_wxWindow","_class_wxProgressDialog",SwigwxProgressDialogTowxWindow},
     { "_wxWindow","_wxProgressDialog",SwigwxProgressDialogTowxWindow},
diff --git a/utils/wxPython/src/msw/cmndlgs.py b/utils/wxPython/src/msw/cmndlgs.py
index 52e107501a..1935f27a3e 100644
--- a/utils/wxPython/src/msw/cmndlgs.py
+++ b/utils/wxPython/src/msw/cmndlgs.py
@@ -7,6 +7,8 @@ from gdi import *
 
 from windows import *
 
+from clip_dnd import *
+
 from frames import *
 
 from stattool import *
diff --git a/utils/wxPython/src/msw/controls.cpp b/utils/wxPython/src/msw/controls.cpp
index 2132a5e93b..684f1a9868 100644
--- a/utils/wxPython/src/msw/controls.cpp
+++ b/utils/wxPython/src/msw/controls.cpp
@@ -4863,6 +4863,102 @@ static PyObject *_wrap_wxTextCtrl_IsEditable(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
+#define wxTextCtrl_Undo(_swigobj)  (_swigobj->Undo())
+static PyObject *_wrap_wxTextCtrl_Undo(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTextCtrl * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTextCtrl_Undo",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextCtrl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextCtrl_Undo. Expected _wxTextCtrl_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTextCtrl_Undo(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxTextCtrl_Redo(_swigobj)  (_swigobj->Redo())
+static PyObject *_wrap_wxTextCtrl_Redo(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTextCtrl * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTextCtrl_Redo",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextCtrl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextCtrl_Redo. Expected _wxTextCtrl_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTextCtrl_Redo(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+static void  wxTextCtrl_write(wxTextCtrl *self,const wxString & text) {
+            self->AppendText(text + '\n');
+        }
+static PyObject *_wrap_wxTextCtrl_write(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTextCtrl * _arg0;
+    wxString * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","text", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTextCtrl_write",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextCtrl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextCtrl_write. Expected _wxTextCtrl_p.");
+        return NULL;
+        }
+    }
+{
+    if (!PyString_Check(_obj1)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTextCtrl_write(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+{
+    if (_obj1)
+        delete _arg1;
+}
+    return _resultobj;
+}
+
 static void *SwigwxScrollBarTowxControl(void *ptr) {
     wxScrollBar *src;
     wxControl *dest;
@@ -6907,6 +7003,9 @@ static PyMethodDef controlscMethods[] = {
 	 { "wxScrollBar_GetPageSize", (PyCFunction) _wrap_wxScrollBar_GetPageSize, METH_VARARGS | METH_KEYWORDS },
 	 { "wxScrollBar_GetRange", (PyCFunction) _wrap_wxScrollBar_GetRange, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxScrollBar", (PyCFunction) _wrap_new_wxScrollBar, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextCtrl_write", (PyCFunction) _wrap_wxTextCtrl_write, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextCtrl_Redo", (PyCFunction) _wrap_wxTextCtrl_Redo, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTextCtrl_Undo", (PyCFunction) _wrap_wxTextCtrl_Undo, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTextCtrl_IsEditable", (PyCFunction) _wrap_wxTextCtrl_IsEditable, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTextCtrl_GetSelection", (PyCFunction) _wrap_wxTextCtrl_GetSelection, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTextCtrl_CanUndo", (PyCFunction) _wrap_wxTextCtrl_CanUndo, METH_VARARGS | METH_KEYWORDS },
@@ -7043,7 +7142,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -7051,7 +7152,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxSlider",SwigwxSliderTowxEvtHandler},
     { "_class_wxEvtHandler","_wxSlider",SwigwxSliderTowxEvtHandler},
@@ -7100,6 +7203,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxComboBox",SwigwxComboBoxTowxChoice},
     { "_wxChoice","_wxComboBox",SwigwxComboBoxTowxChoice},
@@ -7109,12 +7213,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -7133,14 +7241,20 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
+    { "_class_wxFileDataObject","_wxFileDataObject",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -7168,17 +7282,21 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPyEvent","_wxPyEvent",0},
     { "_class_wxIconizeEvent","_wxIconizeEvent",0},
     { "_class_wxStaticBitmap","_wxStaticBitmap",0},
+    { "_wxDropTarget","_class_wxDropTarget",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
     { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
     { "_wxCloseEvent","_class_wxCloseEvent",0},
     { "_unsigned_long","_wxDash",0},
     { "_unsigned_long","_long",0},
@@ -7196,6 +7314,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -7203,6 +7322,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxCheckListBox",SwigwxCheckListBoxTowxListBox},
@@ -7212,6 +7332,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_WXTYPE","_short",0},
     { "_WXTYPE","_signed_short",0},
     { "_WXTYPE","_unsigned_short",0},
+    { "_class_wxDropTarget","_wxDropTarget",0},
     { "_class_wxBrush","_wxBrush",0},
     { "_unsigned_short","_WXTYPE",0},
     { "_unsigned_short","_short",0},
@@ -7256,6 +7377,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -7275,9 +7397,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMaximizeEvent","_wxMaximizeEvent",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_wxDropSource","_class_wxDropSource",0},
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxSlider",SwigwxSliderTowxControl},
     { "_wxControl","_wxSlider",SwigwxSliderTowxControl},
@@ -7319,6 +7443,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxListBox","_class_wxCheckListBox",SwigwxCheckListBoxTowxListBox},
     { "_class_wxListBox","_wxCheckListBox",SwigwxCheckListBoxTowxListBox},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -7340,6 +7465,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxImageList","_wxImageList",0},
     { "_class_wxBitmapButton","_wxBitmapButton",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -7348,6 +7474,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -7368,11 +7495,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPrinterDC","_wxPrinterDC",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
     { "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxDropSource","_wxDropSource",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
     { "_class_wxControl","_class_wxSlider",SwigwxSliderTowxControl},
     { "_class_wxControl","_wxSlider",SwigwxSliderTowxControl},
@@ -7417,10 +7546,20 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxShowEvent","_wxShowEvent",0},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
     { "_wxActivateEvent","_class_wxActivateEvent",0},
     { "_wxGauge","_class_wxGauge",0},
     { "_class_wxCheckListBox","_wxCheckListBox",0},
@@ -7428,9 +7567,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
     { "_wxMenuBar","_class_wxMenuBar",0},
     { "_wxEvtHandler","_class_wxSlider",SwigwxSliderTowxEvtHandler},
     { "_wxEvtHandler","_wxSlider",SwigwxSliderTowxEvtHandler},
@@ -7479,7 +7620,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxKeyEvent","_class_wxKeyEvent",0},
     { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
+    { "_wxFileDataObject","_class_wxFileDataObject",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxSlider",SwigwxSliderTowxWindow},
     { "_wxWindow","_wxSlider",SwigwxSliderTowxWindow},
     { "_wxWindow","_class_wxRadioButton",SwigwxRadioButtonTowxWindow},
diff --git a/utils/wxPython/src/msw/controls.py b/utils/wxPython/src/msw/controls.py
index 6a10d4ced2..5cb2cae1a2 100644
--- a/utils/wxPython/src/msw/controls.py
+++ b/utils/wxPython/src/msw/controls.py
@@ -7,6 +7,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from events import *
 import wx
 class wxControlPtr(wxWindowPtr):
@@ -523,6 +525,15 @@ class wxTextCtrlPtr(wxControlPtr):
     def IsEditable(self, *_args, **_kwargs):
         val = apply(controlsc.wxTextCtrl_IsEditable,(self,) + _args, _kwargs)
         return val
+    def Undo(self, *_args, **_kwargs):
+        val = apply(controlsc.wxTextCtrl_Undo,(self,) + _args, _kwargs)
+        return val
+    def Redo(self, *_args, **_kwargs):
+        val = apply(controlsc.wxTextCtrl_Redo,(self,) + _args, _kwargs)
+        return val
+    def write(self, *_args, **_kwargs):
+        val = apply(controlsc.wxTextCtrl_write,(self,) + _args, _kwargs)
+        return val
     def __repr__(self):
         return "<C wxTextCtrl instance at %s>" % (self.this,)
 class wxTextCtrl(wxTextCtrlPtr):
diff --git a/utils/wxPython/src/msw/controls2.cpp b/utils/wxPython/src/msw/controls2.cpp
index 35ffd9c87c..d91163293e 100644
--- a/utils/wxPython/src/msw/controls2.cpp
+++ b/utils/wxPython/src/msw/controls2.cpp
@@ -3705,6 +3705,61 @@ static PyObject *_wrap_wxTreeCtrl_SetStateImageList(PyObject *self, PyObject *ar
     return _resultobj;
 }
 
+#define wxTreeCtrl_GetSpacing(_swigobj)  (_swigobj->GetSpacing())
+static PyObject *_wrap_wxTreeCtrl_GetSpacing(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    unsigned int  _result;
+    wxTreeCtrl * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTreeCtrl_GetSpacing",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetSpacing. Expected _wxTreeCtrl_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (unsigned int )wxTreeCtrl_GetSpacing(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxTreeCtrl_SetSpacing(_swigobj,_swigarg0)  (_swigobj->SetSpacing(_swigarg0))
+static PyObject *_wrap_wxTreeCtrl_SetSpacing(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTreeCtrl * _arg0;
+    unsigned int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","spacing", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxTreeCtrl_SetSpacing",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_SetSpacing. Expected _wxTreeCtrl_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTreeCtrl_SetSpacing(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 #define wxTreeCtrl_GetItemText(_swigobj,_swigarg0)  (_swigobj->GetItemText(_swigarg0))
 static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -5543,14 +5598,13 @@ static PyObject *_wrap_wxTreeCtrl_EndEditLabel(PyObject *self, PyObject *args, P
     PyObject * _resultobj;
     wxTreeCtrl * _arg0;
     wxTreeItemId * _arg1;
-    bool  _arg2 = (bool ) FALSE;
+    int  _arg2 = (int ) FALSE;
     PyObject * _argo0 = 0;
     PyObject * _argo1 = 0;
-    int tempbool2 = (int) FALSE;
     char *_kwnames[] = { "self","item","discardChanges", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxTreeCtrl_EndEditLabel",_kwnames,&_argo0,&_argo1,&tempbool2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxTreeCtrl_EndEditLabel",_kwnames,&_argo0,&_argo1,&_arg2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -5566,7 +5620,6 @@ static PyObject *_wrap_wxTreeCtrl_EndEditLabel(PyObject *self, PyObject *args, P
         return NULL;
         }
     }
-    _arg2 = (bool ) tempbool2;
 {
     wxPy_BEGIN_ALLOW_THREADS;
         wxTreeCtrl_EndEditLabel(_arg0,*_arg1,_arg2);
@@ -5618,14 +5671,13 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBold(PyObject *self, PyObject *args, Py
     PyObject * _resultobj;
     wxTreeCtrl * _arg0;
     wxTreeItemId * _arg1;
-    bool  _arg2 = (bool ) TRUE;
+    int  _arg2 = (int ) TRUE;
     PyObject * _argo0 = 0;
     PyObject * _argo1 = 0;
-    int tempbool2 = (int) TRUE;
     char *_kwnames[] = { "self","item","bold", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxTreeCtrl_SetItemBold",_kwnames,&_argo0,&_argo1,&tempbool2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxTreeCtrl_SetItemBold",_kwnames,&_argo0,&_argo1,&_arg2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -5641,7 +5693,6 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBold(PyObject *self, PyObject *args, Py
         return NULL;
         }
     }
-    _arg2 = (bool ) tempbool2;
 {
     wxPy_BEGIN_ALLOW_THREADS;
         wxTreeCtrl_SetItemBold(_arg0,*_arg1,_arg2);
@@ -5725,6 +5776,43 @@ static PyObject *_wrap_wxTreeCtrl_HitTest(PyObject *self, PyObject *args, PyObje
     return _resultobj;
 }
 
+#define wxTreeCtrl_SetItemDropHighlight(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetItemDropHighlight(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxTreeCtrl_SetItemDropHighlight(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxTreeCtrl * _arg0;
+    wxTreeItemId * _arg1;
+    int  _arg2 = (int ) TRUE;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","item","highlight", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxTreeCtrl_SetItemDropHighlight",_kwnames,&_argo0,&_argo1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_SetItemDropHighlight. Expected _wxTreeCtrl_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemDropHighlight. Expected _wxTreeItemId_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxTreeCtrl_SetItemDropHighlight(_arg0,*_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 static PyObject * wxTreeCtrl_GetBoundingRect(wxTreeCtrl *self,const wxTreeItemId & item,int  textOnly) {
             wxRect rect;
             if (self->GetBoundingRect(item, rect, textOnly))
@@ -5774,6 +5862,7 @@ static PyObject *_wrap_wxTreeCtrl_GetBoundingRect(PyObject *self, PyObject *args
 
 static PyMethodDef controls2cMethods[] = {
 	 { "wxTreeCtrl_GetBoundingRect", (PyCFunction) _wrap_wxTreeCtrl_GetBoundingRect, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTreeCtrl_SetItemDropHighlight", (PyCFunction) _wrap_wxTreeCtrl_SetItemDropHighlight, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_HitTest", (PyCFunction) _wrap_wxTreeCtrl_HitTest, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_IsBold", (PyCFunction) _wrap_wxTreeCtrl_IsBold, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_SetItemBold", (PyCFunction) _wrap_wxTreeCtrl_SetItemBold, METH_VARARGS | METH_KEYWORDS },
@@ -5825,6 +5914,8 @@ static PyMethodDef controls2cMethods[] = {
 	 { "wxTreeCtrl_GetItemSelectedImage", (PyCFunction) _wrap_wxTreeCtrl_GetItemSelectedImage, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_GetItemImage", (PyCFunction) _wrap_wxTreeCtrl_GetItemImage, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_GetItemText", (PyCFunction) _wrap_wxTreeCtrl_GetItemText, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTreeCtrl_SetSpacing", (PyCFunction) _wrap_wxTreeCtrl_SetSpacing, METH_VARARGS | METH_KEYWORDS },
+	 { "wxTreeCtrl_GetSpacing", (PyCFunction) _wrap_wxTreeCtrl_GetSpacing, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_SetStateImageList", (PyCFunction) _wrap_wxTreeCtrl_SetStateImageList, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_SetImageList", (PyCFunction) _wrap_wxTreeCtrl_SetImageList, METH_VARARGS | METH_KEYWORDS },
 	 { "wxTreeCtrl_GetStateImageList", (PyCFunction) _wrap_wxTreeCtrl_GetStateImageList, METH_VARARGS | METH_KEYWORDS },
@@ -5952,7 +6043,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -5960,7 +6053,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxPyTreeItemData","_wxPyTreeItemData",0},
     { "_class_wxEvtHandler","_class_wxTreeCtrl",SwigwxTreeCtrlTowxEvtHandler},
@@ -5979,6 +6074,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -5986,13 +6082,17 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxListEvent","_class_wxListEvent",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -6011,14 +6111,20 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
+    { "_class_wxFileDataObject","_wxFileDataObject",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -6055,17 +6161,21 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxIconizeEvent","_wxIconizeEvent",0},
     { "_class_wxStaticBitmap","_wxStaticBitmap",0},
     { "_wxListItem","_class_wxListItem",0},
+    { "_wxDropTarget","_class_wxDropTarget",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
     { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
     { "_wxCloseEvent","_class_wxCloseEvent",0},
     { "_unsigned_long","_wxDash",0},
     { "_unsigned_long","_long",0},
@@ -6084,6 +6194,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -6091,6 +6202,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -6098,6 +6210,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_WXTYPE","_short",0},
     { "_WXTYPE","_signed_short",0},
     { "_WXTYPE","_unsigned_short",0},
+    { "_class_wxDropTarget","_wxDropTarget",0},
     { "_class_wxBrush","_wxBrush",0},
     { "_unsigned_short","_WXTYPE",0},
     { "_unsigned_short","_short",0},
@@ -6108,6 +6221,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -6128,10 +6242,12 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMaximizeEvent","_wxMaximizeEvent",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_wxTreeItemId","_class_wxTreeItemId",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_wxDropSource","_class_wxDropSource",0},
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxTreeCtrl",SwigwxTreeCtrlTowxControl},
     { "_wxControl","_wxTreeCtrl",SwigwxTreeCtrlTowxControl},
@@ -6139,6 +6255,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxControl","_wxListCtrl",SwigwxListCtrlTowxControl},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -6159,6 +6276,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxImageList","_wxImageList",0},
     { "_class_wxBitmapButton","_wxBitmapButton",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -6167,6 +6285,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -6187,6 +6306,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPyTreeItemData","_class_wxPyTreeItemData",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
     { "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
@@ -6194,6 +6314,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTreeItemId","_wxTreeItemId",0},
     { "_wxTreeCtrl","_class_wxTreeCtrl",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxDropSource","_wxDropSource",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
     { "_class_wxControl","_class_wxTreeCtrl",SwigwxTreeCtrlTowxControl},
     { "_class_wxControl","_wxTreeCtrl",SwigwxTreeCtrlTowxControl},
@@ -6206,10 +6327,20 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxShowEvent","_wxShowEvent",0},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
     { "_wxActivateEvent","_class_wxActivateEvent",0},
     { "_wxGauge","_class_wxGauge",0},
     { "_class_wxCheckListBox","_wxCheckListBox",0},
@@ -6222,9 +6353,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
     { "_class_wxListCtrl","_wxListCtrl",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
     { "_wxMenuBar","_class_wxMenuBar",0},
     { "_wxTreeEvent","_class_wxTreeEvent",0},
     { "_wxEvtHandler","_class_wxTreeCtrl",SwigwxTreeCtrlTowxEvtHandler},
@@ -6240,7 +6373,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxKeyEvent","_class_wxKeyEvent",0},
     { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
+    { "_wxFileDataObject","_class_wxFileDataObject",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxTreeCtrl",SwigwxTreeCtrlTowxWindow},
     { "_wxWindow","_wxTreeCtrl",SwigwxTreeCtrlTowxWindow},
     { "_wxWindow","_class_wxListCtrl",SwigwxListCtrlTowxWindow},
diff --git a/utils/wxPython/src/msw/controls2.py b/utils/wxPython/src/msw/controls2.py
index e08cc47726..ee15e0d20d 100644
--- a/utils/wxPython/src/msw/controls2.py
+++ b/utils/wxPython/src/msw/controls2.py
@@ -7,6 +7,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from events import *
 
 from controls import *
@@ -414,6 +416,12 @@ class wxTreeCtrlPtr(wxControlPtr):
     def SetStateImageList(self, *_args, **_kwargs):
         val = apply(controls2c.wxTreeCtrl_SetStateImageList,(self,) + _args, _kwargs)
         return val
+    def GetSpacing(self, *_args, **_kwargs):
+        val = apply(controls2c.wxTreeCtrl_GetSpacing,(self,) + _args, _kwargs)
+        return val
+    def SetSpacing(self, *_args, **_kwargs):
+        val = apply(controls2c.wxTreeCtrl_SetSpacing,(self,) + _args, _kwargs)
+        return val
     def GetItemText(self, *_args, **_kwargs):
         val = apply(controls2c.wxTreeCtrl_GetItemText,(self,) + _args, _kwargs)
         return val
@@ -584,6 +592,9 @@ class wxTreeCtrlPtr(wxControlPtr):
         val = apply(controls2c.wxTreeCtrl_HitTest,(self,) + _args, _kwargs)
         if val: val = wxTreeItemIdPtr(val) ; val.thisown = 1
         return val
+    def SetItemDropHighlight(self, *_args, **_kwargs):
+        val = apply(controls2c.wxTreeCtrl_SetItemDropHighlight,(self,) + _args, _kwargs)
+        return val
     def GetBoundingRect(self, *_args, **_kwargs):
         val = apply(controls2c.wxTreeCtrl_GetBoundingRect,(self,) + _args, _kwargs)
         return val
diff --git a/utils/wxPython/src/msw/events.cpp b/utils/wxPython/src/msw/events.cpp
index df358499ba..a6b5acea46 100644
--- a/utils/wxPython/src/msw/events.cpp
+++ b/utils/wxPython/src/msw/events.cpp
@@ -1994,8 +1994,37 @@ static PyObject *_wrap_wxMouseEvent_Leaving(PyObject *self, PyObject *args, PyOb
     return _resultobj;
 }
 
-#define wxMouseEvent_Position(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Position(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMouseEvent_Position(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMouseEvent_GetPosition(_swigobj)  (_swigobj->GetPosition())
+static PyObject *_wrap_wxMouseEvent_GetPosition(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPoint * _result;
+    wxMouseEvent * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMouseEvent_GetPosition",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMouseEvent_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMouseEvent_GetPosition. Expected _wxMouseEvent_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxPoint (wxMouseEvent_GetPosition(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxPoint_p");
+    _resultobj = Py_BuildValue("s",_ptemp);
+    return _resultobj;
+}
+
+#define wxMouseEvent_GetPositionTuple(_swigobj,_swigarg0,_swigarg1)  (_swigobj->GetPosition(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMouseEvent_GetPositionTuple(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxMouseEvent * _arg0;
     long * _arg1;
@@ -2012,18 +2041,18 @@ static PyObject *_wrap_wxMouseEvent_Position(PyObject *self, PyObject *args, PyO
 {
   _arg2 = &temp0;
 }
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMouseEvent_Position",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMouseEvent_GetPositionTuple",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMouseEvent_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMouseEvent_Position. Expected _wxMouseEvent_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMouseEvent_GetPositionTuple. Expected _wxMouseEvent_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMouseEvent_Position(_arg0,_arg1,_arg2);
+        wxMouseEvent_GetPositionTuple(_arg0,_arg1,_arg2);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -2041,35 +2070,6 @@ static PyObject *_wrap_wxMouseEvent_Position(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
-#define wxMouseEvent_GetPosition(_swigobj)  (_swigobj->GetPosition())
-static PyObject *_wrap_wxMouseEvent_GetPosition(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    wxPoint * _result;
-    wxMouseEvent * _arg0;
-    PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMouseEvent_GetPosition",_kwnames,&_argo0)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMouseEvent_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMouseEvent_GetPosition. Expected _wxMouseEvent_p.");
-        return NULL;
-        }
-    }
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxPoint (wxMouseEvent_GetPosition(_arg0));
-
-    wxPy_END_ALLOW_THREADS;
-}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxPoint_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
-    return _resultobj;
-}
-
 #define wxMouseEvent_GetLogicalPosition(_swigobj,_swigarg0)  (_swigobj->GetLogicalPosition(_swigarg0))
 static PyObject *_wrap_wxMouseEvent_GetLogicalPosition(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -5040,8 +5040,8 @@ static PyMethodDef eventscMethods[] = {
 	 { "wxMouseEvent_GetY", (PyCFunction) _wrap_wxMouseEvent_GetY, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMouseEvent_GetX", (PyCFunction) _wrap_wxMouseEvent_GetX, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMouseEvent_GetLogicalPosition", (PyCFunction) _wrap_wxMouseEvent_GetLogicalPosition, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMouseEvent_GetPositionTuple", (PyCFunction) _wrap_wxMouseEvent_GetPositionTuple, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMouseEvent_GetPosition", (PyCFunction) _wrap_wxMouseEvent_GetPosition, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMouseEvent_Position", (PyCFunction) _wrap_wxMouseEvent_Position, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMouseEvent_Leaving", (PyCFunction) _wrap_wxMouseEvent_Leaving, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMouseEvent_Entering", (PyCFunction) _wrap_wxMouseEvent_Entering, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMouseEvent_Moving", (PyCFunction) _wrap_wxMouseEvent_Moving, METH_VARARGS | METH_KEYWORDS },
@@ -5181,6 +5181,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -5199,6 +5200,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -5215,6 +5217,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -5305,6 +5308,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxScrollEvent","_class_wxSpinEvent",SwigwxSpinEventTowxScrollEvent},
     { "_wxScrollEvent","_wxSpinEvent",SwigwxSpinEventTowxScrollEvent},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
@@ -5322,6 +5326,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxFocusEvent","_class_wxFocusEvent",0},
     { "_wxMaximizeEvent","_class_wxMaximizeEvent",0},
     { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -5346,6 +5351,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMaximizeEvent","_wxMaximizeEvent",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_unsigned_char","_byte",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -5359,6 +5365,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScrollEvent","_wxScrollEvent",0},
     { "_wxJoystickEvent","_class_wxJoystickEvent",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -5367,6 +5374,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -5386,6 +5394,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
diff --git a/utils/wxPython/src/msw/events.py b/utils/wxPython/src/msw/events.py
index 003b5c5060..7022af97fe 100644
--- a/utils/wxPython/src/msw/events.py
+++ b/utils/wxPython/src/msw/events.py
@@ -267,13 +267,13 @@ class wxMouseEventPtr(wxEventPtr):
     def Leaving(self, *_args, **_kwargs):
         val = apply(eventsc.wxMouseEvent_Leaving,(self,) + _args, _kwargs)
         return val
-    def Position(self, *_args, **_kwargs):
-        val = apply(eventsc.wxMouseEvent_Position,(self,) + _args, _kwargs)
-        return val
     def GetPosition(self, *_args, **_kwargs):
         val = apply(eventsc.wxMouseEvent_GetPosition,(self,) + _args, _kwargs)
         if val: val = wxPointPtr(val) ; val.thisown = 1
         return val
+    def GetPositionTuple(self, *_args, **_kwargs):
+        val = apply(eventsc.wxMouseEvent_GetPositionTuple,(self,) + _args, _kwargs)
+        return val
     def GetLogicalPosition(self, *_args, **_kwargs):
         val = apply(eventsc.wxMouseEvent_GetLogicalPosition,(self,) + _args, _kwargs)
         if val: val = wxPointPtr(val) ; val.thisown = 1
diff --git a/utils/wxPython/src/msw/frames.cpp b/utils/wxPython/src/msw/frames.cpp
index 92ef221397..1fdde14deb 100644
--- a/utils/wxPython/src/msw/frames.cpp
+++ b/utils/wxPython/src/msw/frames.cpp
@@ -980,7 +980,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -988,6 +990,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxMiniFrame",SwigwxMiniFrameTowxEvtHandler},
@@ -1003,6 +1006,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -1010,12 +1014,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -1032,19 +1040,25 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_wxMiniFrame","_class_wxMiniFrame",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -1074,11 +1088,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBar","_wxToolBar",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -1100,6 +1116,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -1107,6 +1124,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -1124,6 +1142,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -1151,6 +1170,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -1173,6 +1193,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxFrame","_wxMiniFrame",SwigwxMiniFrameTowxFrame},
     { "_wxFrame","_class_wxFrame",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -1181,6 +1202,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -1202,6 +1224,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -1212,7 +1235,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxRegion","_class_wxRegion",0},
@@ -1224,6 +1256,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
@@ -1242,6 +1275,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxMiniFrame",SwigwxMiniFrameTowxWindow},
     { "_wxWindow","_wxMiniFrame",SwigwxMiniFrameTowxWindow},
     { "_wxWindow","_class_wxFrame",SwigwxFrameTowxWindow},
diff --git a/utils/wxPython/src/msw/frames.py b/utils/wxPython/src/msw/frames.py
index 5a7e4fca36..401953ef13 100644
--- a/utils/wxPython/src/msw/frames.py
+++ b/utils/wxPython/src/msw/frames.py
@@ -7,6 +7,8 @@ from gdi import *
 
 from windows import *
 
+from clip_dnd import *
+
 from stattool import *
 
 from controls import *
diff --git a/utils/wxPython/src/msw/gdi.cpp b/utils/wxPython/src/msw/gdi.cpp
index 29b296e699..7b7a63d8f1 100644
--- a/utils/wxPython/src/msw/gdi.cpp
+++ b/utils/wxPython/src/msw/gdi.cpp
@@ -7301,6 +7301,7 @@ static PyMethodDef gdicMethods[] = {
 static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxAcceleratorTable","_class_wxAcceleratorTable",0},
     { "_signed_long","_long",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -7334,6 +7335,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxDC","_class_wxMemoryDC",SwigwxMemoryDCTowxDC},
     { "_wxDC","_wxMemoryDC",SwigwxMemoryDCTowxDC},
     { "_wxDC","_class_wxDC",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -7344,6 +7346,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMask","_wxMask",0},
     { "_wxColour","_class_wxColour",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -7359,6 +7362,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPyTimer","_class_wxPyTimer",0},
     { "_wxWindowDC","_class_wxWindowDC",0},
     { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
@@ -7385,6 +7389,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxDC","_wxDC",0},
     { "_class_wxPyTimer","_wxPyTimer",0},
     { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -7412,6 +7417,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCursor","_wxCursor",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -7423,6 +7429,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_short","_unsigned_short",0},
     { "_short","_signed_short",0},
     { "_class_wxImageList","_wxImageList",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -7430,6 +7437,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_int",0},
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -7446,6 +7454,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxColour","_wxColour",0},
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxBusyInfo","_wxBusyInfo",0},
     { "_class_wxClientDC","_wxClientDC",0},
diff --git a/utils/wxPython/src/msw/image.cpp b/utils/wxPython/src/msw/image.cpp
index 586d32f454..c20acf2686 100644
--- a/utils/wxPython/src/msw/image.cpp
+++ b/utils/wxPython/src/msw/image.cpp
@@ -1715,6 +1715,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxJPEGHandler","_wxJPEGHandler",0},
     { "_wxBMPHandler","_class_wxBMPHandler",0},
     { "_wxImage","_class_wxImage",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -1750,6 +1751,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
     { "_wxDC","_class_wxDC",0},
     { "_class_wxBMPHandler","_wxBMPHandler",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -1763,6 +1765,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPNGHandler","_wxPNGHandler",0},
     { "_wxColour","_class_wxColour",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -1776,6 +1779,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPyTimer","_class_wxPyTimer",0},
     { "_wxWindowDC","_class_wxWindowDC",0},
     { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
@@ -1788,6 +1792,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxDC","_wxDC",0},
     { "_class_wxPyTimer","_wxPyTimer",0},
     { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -1828,6 +1833,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxImageHandler","_wxImageHandler",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -1841,6 +1847,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxImageList","_wxImageList",0},
     { "_wxPCXHandler","_class_wxPCXHandler",0},
     { "_wxJPEGHandler","_class_wxJPEGHandler",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -1848,6 +1855,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_int",0},
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -1864,6 +1872,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxColour","_wxColour",0},
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxPCXHandler","_wxPCXHandler",0},
     { "_class_wxBusyInfo","_wxBusyInfo",0},
diff --git a/utils/wxPython/src/msw/mdi.cpp b/utils/wxPython/src/msw/mdi.cpp
index a63556ae82..f4f9469e46 100644
--- a/utils/wxPython/src/msw/mdi.cpp
+++ b/utils/wxPython/src/msw/mdi.cpp
@@ -728,7 +728,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -736,6 +738,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxMDIClientWindow",SwigwxMDIClientWindowTowxEvtHandler},
@@ -753,6 +756,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -760,12 +764,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -782,19 +790,25 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_wxMiniFrame","_class_wxMiniFrame",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -825,11 +839,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBar","_wxToolBar",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -852,6 +868,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -859,6 +876,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -880,6 +898,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -907,6 +926,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -931,6 +951,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxFrame","_wxMDIParentFrame",SwigwxMDIParentFrameTowxFrame},
     { "_wxFrame","_class_wxFrame",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -939,6 +960,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -961,6 +983,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -971,7 +994,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxRegion","_class_wxRegion",0},
@@ -983,6 +1015,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
@@ -1004,6 +1037,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
     { "_wxMDIClientWindow","_class_wxMDIClientWindow",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxMDIClientWindow",SwigwxMDIClientWindowTowxWindow},
     { "_wxWindow","_wxMDIClientWindow",SwigwxMDIClientWindowTowxWindow},
     { "_wxWindow","_class_wxMDIChildFrame",SwigwxMDIChildFrameTowxWindow},
diff --git a/utils/wxPython/src/msw/mdi.py b/utils/wxPython/src/msw/mdi.py
index e2bbea43bd..c9d1600d24 100644
--- a/utils/wxPython/src/msw/mdi.py
+++ b/utils/wxPython/src/msw/mdi.py
@@ -7,6 +7,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from frames import *
 
 from stattool import *
diff --git a/utils/wxPython/src/msw/misc.cpp b/utils/wxPython/src/msw/misc.cpp
index 580a2ca5ac..eb348bcc6b 100644
--- a/utils/wxPython/src/msw/misc.cpp
+++ b/utils/wxPython/src/msw/misc.cpp
@@ -4023,6 +4023,7 @@ static PyMethodDef misccMethods[] = {
 static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxAcceleratorTable","_class_wxAcceleratorTable",0},
     { "_signed_long","_long",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -4036,12 +4037,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_size_t","_wxCoord",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},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -4051,6 +4054,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPoint","_class_wxPoint",0},
     { "_wxPyTimer","_class_wxPyTimer",0},
     { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
@@ -4060,6 +4064,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxRect","_wxRect",0},
     { "_class_wxPyTimer","_wxPyTimer",0},
     { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -4077,6 +4082,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_signed_short","_short",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_unsigned_char","_byte",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -4085,6 +4091,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_short","_WXTYPE",0},
     { "_short","_unsigned_short",0},
     { "_short","_signed_short",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -4092,6 +4099,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_int",0},
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -4102,6 +4110,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxSize","_class_wxSize",0},
     { "_wxRegionIterator","_class_wxRegionIterator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxBusyInfo","_wxBusyInfo",0},
     { "_class_wxSize","_wxSize",0},
diff --git a/utils/wxPython/src/msw/misc2.cpp b/utils/wxPython/src/msw/misc2.cpp
index c9faa5a109..a65206fe19 100644
--- a/utils/wxPython/src/msw/misc2.cpp
+++ b/utils/wxPython/src/msw/misc2.cpp
@@ -57,9 +57,7 @@ extern PyObject *SWIG_newvarlink(void);
 #include <wx/resource.h>
 #include <wx/tooltip.h>
 #include <wx/caret.h>
-#ifdef NOT_READY_YET
 #include <wx/fontenum.h>
-#endif
 
 static PyObject* l_output_helper(PyObject* target, PyObject* o) {
     PyObject*   o2;
@@ -138,6 +136,21 @@ static char* wxStringErrorMsg = "string type is required for parameter";
     void wxCaret_SetBlinkTime(int milliseconds) {
         wxCaret::SetBlinkTime(milliseconds);
     }
+
+class wxPyFontEnumerator : public wxFontEnumerator {
+public:
+    wxPyFontEnumerator() {}
+    ~wxPyFontEnumerator() {}
+
+    DEC_PYCALLBACK_BOOL_STRING(OnFacename);
+    DEC_PYCALLBACK_BOOL_STRINGSTRING(OnFontEncoding);
+
+    PYPRIVATE;
+};
+
+IMP_PYCALLBACK_BOOL_STRING(wxPyFontEnumerator, wxFontEnumerator, OnFacename);
+IMP_PYCALLBACK_BOOL_STRINGSTRING(wxPyFontEnumerator, wxFontEnumerator, OnFontEncoding);
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -1088,6 +1101,41 @@ static PyObject *_wrap_wxCaret_SetBlinkTime(PyObject *self, PyObject *args, PyOb
     return _resultobj;
 }
 
+static PyObject *_wrap_wxPostEvent(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxEvtHandler * _arg0;
+    wxEvent * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "dest","event", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPostEvent",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxEvtHandler_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPostEvent. Expected _wxEvtHandler_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostEvent. Expected _wxEvent_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxPostEvent(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 #define new_wxToolTip(_swigarg0) (new wxToolTip(_swigarg0))
 static PyObject *_wrap_new_wxToolTip(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -1714,6 +1762,149 @@ static PyObject *_wrap_wxCaret_OnKillFocus(PyObject *self, PyObject *args, PyObj
     return _resultobj;
 }
 
+#define new_wxFontEnumerator() (new wxPyFontEnumerator())
+static PyObject *_wrap_new_wxFontEnumerator(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyFontEnumerator * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxFontEnumerator",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyFontEnumerator *)new_wxFontEnumerator();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyFontEnumerator_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define delete_wxPyFontEnumerator(_swigobj) (delete _swigobj)
+static PyObject *_wrap_delete_wxFontEnumerator(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyFontEnumerator * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:delete_wxFontEnumerator",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFontEnumerator_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete_wxFontEnumerator. Expected _wxPyFontEnumerator_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        delete_wxPyFontEnumerator(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxFontEnumerator__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxFontEnumerator__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyFontEnumerator * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxFontEnumerator__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFontEnumerator_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFontEnumerator__setSelf. Expected _wxPyFontEnumerator_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxFontEnumerator__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxFontEnumerator_EnumerateFacenames(_swigobj,_swigarg0,_swigarg1)  (_swigobj->EnumerateFacenames(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxFontEnumerator_EnumerateFacenames(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyFontEnumerator * _arg0;
+    wxFontEncoding  _arg1 = (wxFontEncoding ) wxFONTENCODING_SYSTEM;
+    bool  _arg2 = (bool ) FALSE;
+    PyObject * _argo0 = 0;
+    int tempbool2 = (int) FALSE;
+    char *_kwnames[] = { "self","encoding","fixedWidthOnly", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|ii:wxFontEnumerator_EnumerateFacenames",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFontEnumerator_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFontEnumerator_EnumerateFacenames. Expected _wxPyFontEnumerator_p.");
+        return NULL;
+        }
+    }
+    _arg2 = (bool ) tempbool2;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxFontEnumerator_EnumerateFacenames(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxFontEnumerator_EnumerateEncodings(_swigobj,_swigarg0)  (_swigobj->EnumerateEncodings(_swigarg0))
+static PyObject *_wrap_wxFontEnumerator_EnumerateEncodings(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyFontEnumerator * _arg0;
+    char * _arg1 = (char *) "";
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","facename", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|s:wxFontEnumerator_EnumerateEncodings",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyFontEnumerator_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFontEnumerator_EnumerateEncodings. Expected _wxPyFontEnumerator_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxFontEnumerator_EnumerateEncodings(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
 #define new_wxBusyCursor(_swigarg0) (new wxBusyCursor(_swigarg0))
 static PyObject *_wrap_new_wxBusyCursor(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -1778,6 +1969,11 @@ static PyObject *_wrap_delete_wxBusyCursor(PyObject *self, PyObject *args, PyObj
 static PyMethodDef misc2cMethods[] = {
 	 { "delete_wxBusyCursor", (PyCFunction) _wrap_delete_wxBusyCursor, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxBusyCursor", (PyCFunction) _wrap_new_wxBusyCursor, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFontEnumerator_EnumerateEncodings", (PyCFunction) _wrap_wxFontEnumerator_EnumerateEncodings, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFontEnumerator_EnumerateFacenames", (PyCFunction) _wrap_wxFontEnumerator_EnumerateFacenames, METH_VARARGS | METH_KEYWORDS },
+	 { "wxFontEnumerator__setSelf", (PyCFunction) _wrap_wxFontEnumerator__setSelf, METH_VARARGS | METH_KEYWORDS },
+	 { "delete_wxFontEnumerator", (PyCFunction) _wrap_delete_wxFontEnumerator, METH_VARARGS | METH_KEYWORDS },
+	 { "new_wxFontEnumerator", (PyCFunction) _wrap_new_wxFontEnumerator, METH_VARARGS | METH_KEYWORDS },
 	 { "wxCaret_OnKillFocus", (PyCFunction) _wrap_wxCaret_OnKillFocus, METH_VARARGS | METH_KEYWORDS },
 	 { "wxCaret_OnSetFocus", (PyCFunction) _wrap_wxCaret_OnSetFocus, METH_VARARGS | METH_KEYWORDS },
 	 { "wxCaret_Hide", (PyCFunction) _wrap_wxCaret_Hide, METH_VARARGS | METH_KEYWORDS },
@@ -1797,6 +1993,7 @@ static PyMethodDef misc2cMethods[] = {
 	 { "wxToolTip_GetTip", (PyCFunction) _wrap_wxToolTip_GetTip, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolTip_SetTip", (PyCFunction) _wrap_wxToolTip_SetTip, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxToolTip", (PyCFunction) _wrap_new_wxToolTip, METH_VARARGS | METH_KEYWORDS },
+	 { "wxPostEvent", (PyCFunction) _wrap_wxPostEvent, METH_VARARGS | METH_KEYWORDS },
 	 { "wxCaret_SetBlinkTime", (PyCFunction) _wrap_wxCaret_SetBlinkTime, METH_VARARGS | METH_KEYWORDS },
 	 { "wxCaret_GetBlinkTime", (PyCFunction) _wrap_wxCaret_GetBlinkTime, METH_VARARGS | METH_KEYWORDS },
 	 { "wxToolTip_SetDelay", (PyCFunction) _wrap_wxToolTip_SetDelay, METH_VARARGS | METH_KEYWORDS },
@@ -1836,7 +2033,14 @@ static PyMethodDef misc2cMethods[] = {
  */
 static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxAcceleratorTable","_class_wxAcceleratorTable",0},
+    { "_wxEvent","_class_wxEvent",0},
+    { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
+    { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxPyBitmapDataObject","_class_wxPyBitmapDataObject",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
+    { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -1844,97 +2048,162 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_wxEvtHandler",0},
+    { "_wxPaintEvent","_class_wxPaintEvent",0},
     { "_wxIndividualLayoutConstraint","_class_wxIndividualLayoutConstraint",0},
     { "_wxCursor","_class_wxCursor",0},
+    { "_wxNotifyEvent","_class_wxNotifyEvent",0},
     { "_wxMask","_class_wxMask",0},
     { "_wxToolTip","_class_wxToolTip",0},
     { "_wxPen","_class_wxPen",0},
+    { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
+    { "_class_wxPyFontEnumerator","_wxPyFontEnumerator",0},
+    { "_wxPyDataObjectSimple","_class_wxPyDataObjectSimple",0},
+    { "_wxPyDropSource","_class_wxPyDropSource",0},
     { "_long","_wxDash",0},
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
+    { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
+    { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",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},
+    { "_wxNavigationKeyEvent","_class_wxNavigationKeyEvent",0},
     { "_wxPrinterDC","_class_wxPrinterDC",0},
+    { "_wxWindowCreateEvent","_class_wxWindowCreateEvent",0},
     { "_class_wxMenuItem","_wxMenuItem",0},
+    { "_class_wxPaintEvent","_wxPaintEvent",0},
+    { "_wxSysColourChangedEvent","_class_wxSysColourChangedEvent",0},
     { "_wxPanel","_class_wxPanel",0},
+    { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
+    { "_wxPyEvent","_class_wxPyEvent",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
+    { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_class_wxToolTip","_wxToolTip",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
     { "_wxBusyCursor","_class_wxBusyCursor",0},
+    { "_class_wxFileDataObject","_wxFileDataObject",0},
+    { "_wxIdleEvent","_class_wxIdleEvent",0},
+    { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxCaret","_class_wxCaret",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
+    { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
     { "_uint","_int",0},
     { "_uint","_wxWindowID",0},
     { "_wxPyValidator","_class_wxPyValidator",0},
+    { "_class_wxEvent","_wxEvent",0},
     { "_wxRect","_class_wxRect",0},
+    { "_wxCommandEvent","_class_wxCommandEvent",0},
+    { "_wxSizeEvent","_class_wxSizeEvent",0},
     { "_wxPoint","_class_wxPoint",0},
     { "_wxBitmap","_class_wxBitmap",0},
     { "_wxPyTimer","_class_wxPyTimer",0},
     { "_wxWindowDC","_class_wxWindowDC",0},
     { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
+    { "_class_wxNotifyEvent","_wxNotifyEvent",0},
     { "_class_wxValidator","_wxValidator",0},
+    { "_class_wxPyEvent","_wxPyEvent",0},
+    { "_class_wxIconizeEvent","_wxIconizeEvent",0},
     { "_class_wxBusyCursor","_wxBusyCursor",0},
+    { "_wxDropTarget","_class_wxDropTarget",0},
+    { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
+    { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
+    { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
+    { "_wxCloseEvent","_class_wxCloseEvent",0},
     { "_unsigned_long","_wxDash",0},
     { "_unsigned_long","_long",0},
     { "_class_wxRect","_wxRect",0},
     { "_class_wxDC","_wxDC",0},
+    { "_wxScrollWinEvent","_class_wxScrollWinEvent",0},
+    { "_wxQueryNewPaletteEvent","_class_wxQueryNewPaletteEvent",0},
+    { "_class_wxWindowCreateEvent","_wxWindowCreateEvent",0},
     { "_class_wxPyTimer","_wxPyTimer",0},
+    { "_wxFocusEvent","_class_wxFocusEvent",0},
+    { "_wxMaximizeEvent","_class_wxMaximizeEvent",0},
     { "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
     { "_class_wxPanel","_wxPanel",0},
+    { "_signed_int","_wxCoord",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},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
+    { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxScreenDC","_class_wxScreenDC",0},
     { "_WXTYPE","_short",0},
     { "_WXTYPE","_signed_short",0},
     { "_WXTYPE","_unsigned_short",0},
+    { "_class_wxDropTarget","_wxDropTarget",0},
     { "_class_wxCaret","_wxCaret",0},
     { "_class_wxBrush","_wxBrush",0},
     { "_unsigned_short","_WXTYPE",0},
     { "_unsigned_short","_short",0},
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
+    { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
+    { "_class_wxMenuEvent","_wxMenuEvent",0},
+    { "_wxPaletteChangedEvent","_class_wxPaletteChangedEvent",0},
+    { "_class_wxPyBitmapDataObject","_wxPyBitmapDataObject",0},
     { "_wxClientDC","_class_wxClientDC",0},
+    { "_wxMouseEvent","_class_wxMouseEvent",0},
     { "_class_wxPoint","_wxPoint",0},
     { "_wxRealPoint","_class_wxRealPoint",0},
     { "_signed_short","_WXTYPE",0},
     { "_signed_short","_short",0},
     { "_wxMemoryDC","_class_wxMemoryDC",0},
+    { "_wxPyTextDataObject","_class_wxPyTextDataObject",0},
     { "_wxPaintDC","_class_wxPaintDC",0},
     { "_class_wxWindowDC","_wxWindowDC",0},
+    { "_class_wxFocusEvent","_wxFocusEvent",0},
+    { "_class_wxMaximizeEvent","_wxMaximizeEvent",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
     { "_class_wxMenu","_wxMenu",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -1946,7 +2215,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_short","_WXTYPE",0},
     { "_short","_unsigned_short",0},
     { "_short","_signed_short",0},
+    { "_class_wxPyDataObjectSimple","_wxPyDataObjectSimple",0},
+    { "_class_wxPyDropSource","_wxPyDropSource",0},
+    { "_class_wxScrollEvent","_wxScrollEvent",0},
+    { "_wxJoystickEvent","_class_wxJoystickEvent",0},
     { "_class_wxImageList","_wxImageList",0},
+    { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -1954,6 +2229,8 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_int",0},
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
+    { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -1961,30 +2238,66 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_int","_wxWindowID",0},
     { "_int","_unsigned_int",0},
     { "_int","_signed_int",0},
+    { "_class_wxMouseEvent","_wxMouseEvent",0},
+    { "_wxPyCommandEvent","_class_wxPyCommandEvent",0},
+    { "_class_wxSpinEvent","_wxSpinEvent",0},
+    { "_class_wxQueryNewPaletteEvent","_wxQueryNewPaletteEvent",0},
+    { "_class_wxNavigationKeyEvent","_wxNavigationKeyEvent",0},
     { "_wxSize","_class_wxSize",0},
     { "_wxRegionIterator","_class_wxRegionIterator",0},
     { "_class_wxPrinterDC","_wxPrinterDC",0},
+    { "_class_wxPyTextDataObject","_wxPyTextDataObject",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
+    { "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
+    { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_wxIconizeEvent","_class_wxIconizeEvent",0},
     { "_class_wxIcon","_wxIcon",0},
     { "_class_wxColour","_wxColour",0},
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
+    { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
+    { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
+    { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
+    { "_class_wxShowEvent","_wxShowEvent",0},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
+    { "_wxActivateEvent","_class_wxActivateEvent",0},
     { "_class_wxBusyInfo","_wxBusyInfo",0},
+    { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
+    { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
     { "_wxMenuBar","_class_wxMenuBar",0},
     { "_wxEvtHandler","_class_wxEvtHandler",0},
     { "_wxMenuItem","_class_wxMenuItem",0},
     { "_wxDash","_unsigned_long",0},
     { "_wxDash","_long",0},
     { "_class_wxScrolledWindow","_wxScrolledWindow",0},
+    { "_wxKeyEvent","_class_wxKeyEvent",0},
+    { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
+    { "_wxFileDataObject","_class_wxFileDataObject",0},
+    { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_wxPyFontEnumerator","_class_wxPyFontEnumerator",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxWindow",0},
+    { "_class_wxWindowDestroyEvent","_wxWindowDestroyEvent",0},
 {0,0,0}};
 
 static PyObject *SWIG_globals;
diff --git a/utils/wxPython/src/msw/misc2.py b/utils/wxPython/src/msw/misc2.py
index 03d970b9e5..557456b7d5 100644
--- a/utils/wxPython/src/msw/misc2.py
+++ b/utils/wxPython/src/msw/misc2.py
@@ -6,6 +6,10 @@ from windows import *
 from misc import *
 
 from gdi import *
+
+from clip_dnd import *
+
+from events import *
 class wxToolTipPtr :
     def __init__(self,this):
         self.this = this
@@ -89,6 +93,33 @@ class wxCaret(wxCaretPtr):
 
 
 
+class wxFontEnumeratorPtr :
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def __del__(self,misc2c=misc2c):
+        if self.thisown == 1 :
+            misc2c.delete_wxFontEnumerator(self)
+    def _setSelf(self, *_args, **_kwargs):
+        val = apply(misc2c.wxFontEnumerator__setSelf,(self,) + _args, _kwargs)
+        return val
+    def EnumerateFacenames(self, *_args, **_kwargs):
+        val = apply(misc2c.wxFontEnumerator_EnumerateFacenames,(self,) + _args, _kwargs)
+        return val
+    def EnumerateEncodings(self, *_args, **_kwargs):
+        val = apply(misc2c.wxFontEnumerator_EnumerateEncodings,(self,) + _args, _kwargs)
+        return val
+    def __repr__(self):
+        return "<C wxFontEnumerator instance at %s>" % (self.this,)
+class wxFontEnumerator(wxFontEnumeratorPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(misc2c.new_wxFontEnumerator,_args,_kwargs)
+        self.thisown = 1
+        self._setSelf(self)
+
+
+
+
 class wxBusyCursorPtr :
     def __init__(self,this):
         self.this = this
@@ -192,6 +223,8 @@ wxCaret_GetBlinkTime = misc2c.wxCaret_GetBlinkTime
 
 wxCaret_SetBlinkTime = misc2c.wxCaret_SetBlinkTime
 
+wxPostEvent = misc2c.wxPostEvent
+
 
 
 #-------------- VARIABLE WRAPPERS ------------------
diff --git a/utils/wxPython/src/msw/printfw.cpp b/utils/wxPython/src/msw/printfw.cpp
index 0faffa91d1..9a8e41f9b2 100644
--- a/utils/wxPython/src/msw/printfw.cpp
+++ b/utils/wxPython/src/msw/printfw.cpp
@@ -4349,7 +4349,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -4357,6 +4359,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_wxFontData","_class_wxFontData",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
@@ -4378,6 +4381,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -4386,16 +4390,20 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxPrintDialogData","_wxPrintDialogData",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_class_wxSingleChoiceDialog","_wxSingleChoiceDialog",0},
     { "_wxProgressDialog","_class_wxProgressDialog",0},
     { "_wxPrintPreview","_class_wxPrintPreview",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -4416,9 +4424,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_class_wxPrintDialog",SwigwxPrintDialogTowxDialog},
@@ -4431,11 +4441,15 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_wxMiniFrame","_class_wxMiniFrame",0},
     { "_class_wxPyPrintout","_wxPyPrintout",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -4471,11 +4485,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBar","_wxToolBar",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_class_wxPreviewFrame","_wxPreviewFrame",0},
@@ -4505,6 +4521,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
     { "_class_wxMessageDialog","_wxMessageDialog",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -4512,6 +4529,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -4533,6 +4551,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticText","_wxStaticText",0},
     { "_wxPrintDialogData","_class_wxPrintDialogData",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -4562,6 +4581,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -4589,6 +4609,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxFrame","_wxPreviewFrame",SwigwxPreviewFrameTowxFrame},
     { "_wxFrame","_class_wxFrame",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -4597,6 +4618,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -4619,6 +4641,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -4630,7 +4653,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPageSetupDialog","_wxPageSetupDialog",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxFontDialog","_class_wxFontDialog",0},
@@ -4644,6 +4676,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
@@ -4670,6 +4703,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPageSetupDialogData","_class_wxPageSetupDialogData",0},
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_class_wxFontDialog","_wxFontDialog",0},
     { "_wxWindow","_class_wxPreviewFrame",SwigwxPreviewFrameTowxWindow},
     { "_wxWindow","_wxPreviewFrame",SwigwxPreviewFrameTowxWindow},
diff --git a/utils/wxPython/src/msw/printfw.py b/utils/wxPython/src/msw/printfw.py
index df3356033f..aced8dc62b 100644
--- a/utils/wxPython/src/msw/printfw.py
+++ b/utils/wxPython/src/msw/printfw.py
@@ -7,6 +7,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from cmndlgs import *
 
 from frames import *
diff --git a/utils/wxPython/src/msw/sizers.cpp b/utils/wxPython/src/msw/sizers.cpp
index 518a707506..1e98f5a745 100644
--- a/utils/wxPython/src/msw/sizers.cpp
+++ b/utils/wxPython/src/msw/sizers.cpp
@@ -1420,7 +1420,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -1428,6 +1430,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxStaticBoxSizer","_wxStaticBoxSizer",0},
@@ -1441,6 +1444,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -1448,6 +1452,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxSizer","_class_wxStaticBoxSizer",SwigwxStaticBoxSizerTowxSizer},
@@ -1458,10 +1463,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxSizer","_wxPySizer",SwigwxPySizerTowxSizer},
     { "_class_wxSizer","_wxSizer",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
     { "_wxSizerItem","_class_wxSizerItem",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -1478,17 +1486,23 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -1519,11 +1533,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticBitmap","_wxStaticBitmap",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -1545,6 +1561,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -1552,6 +1569,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -1565,6 +1583,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -1593,6 +1612,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -1612,6 +1632,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxImageList","_wxImageList",0},
     { "_class_wxBitmapButton","_wxBitmapButton",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -1621,6 +1642,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
     { "_class_wxSizerItem","_wxSizerItem",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -1643,6 +1665,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -1653,7 +1676,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_wxSizer","_class_wxStaticBoxSizer",SwigwxStaticBoxSizerTowxSizer},
@@ -1671,6 +1703,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
@@ -1685,6 +1718,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxWindow",0},
     { "_class_wxWindowDestroyEvent","_wxWindowDestroyEvent",0},
 {0,0,0}};
diff --git a/utils/wxPython/src/msw/sizers.py b/utils/wxPython/src/msw/sizers.py
index 5793ece3b4..1a88027307 100644
--- a/utils/wxPython/src/msw/sizers.py
+++ b/utils/wxPython/src/msw/sizers.py
@@ -7,6 +7,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from controls import *
 
 from events import *
diff --git a/utils/wxPython/src/msw/stattool.cpp b/utils/wxPython/src/msw/stattool.cpp
index 1f6cd53d1c..b5e0e1a66c 100644
--- a/utils/wxPython/src/msw/stattool.cpp
+++ b/utils/wxPython/src/msw/stattool.cpp
@@ -2570,7 +2570,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -2578,6 +2580,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxToolBar",SwigwxToolBarTowxEvtHandler},
@@ -2593,6 +2596,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -2600,12 +2604,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -2622,18 +2630,24 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -2663,11 +2677,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBar","_wxToolBar",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -2689,6 +2705,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -2696,6 +2713,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -2713,6 +2731,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -2742,6 +2761,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxControl","_wxToolBar",SwigwxToolBarTowxControl},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -2761,6 +2781,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxImageList","_wxImageList",0},
     { "_class_wxBitmapButton","_wxBitmapButton",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -2769,6 +2790,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -2790,6 +2812,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -2802,7 +2825,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxShowEvent","_wxShowEvent",0},
@@ -2813,6 +2845,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
@@ -2831,6 +2864,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxToolBar",SwigwxToolBarTowxWindow},
     { "_wxWindow","_wxToolBar",SwigwxToolBarTowxWindow},
     { "_wxWindow","_class_wxStatusBar",SwigwxStatusBarTowxWindow},
diff --git a/utils/wxPython/src/msw/stattool.py b/utils/wxPython/src/msw/stattool.py
index 35d725612d..56b82cfc7a 100644
--- a/utils/wxPython/src/msw/stattool.py
+++ b/utils/wxPython/src/msw/stattool.py
@@ -7,6 +7,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from controls import *
 
 from events import *
diff --git a/utils/wxPython/src/msw/windows.cpp b/utils/wxPython/src/msw/windows.cpp
index 2155c0672b..1acc25645a 100644
--- a/utils/wxPython/src/msw/windows.cpp
+++ b/utils/wxPython/src/msw/windows.cpp
@@ -4420,6 +4420,76 @@ static PyObject *_wrap_wxWindow_SetValidator(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
+#define wxWindow_SetDropTarget(_swigobj,_swigarg0)  (_swigobj->SetDropTarget(_swigarg0))
+static PyObject *_wrap_wxWindow_SetDropTarget(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxWindow * _arg0;
+    wxDropTarget * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","target", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWindow_SetDropTarget",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    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 wxWindow_SetDropTarget. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDropTarget_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetDropTarget. Expected _wxDropTarget_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxWindow_SetDropTarget(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxWindow_GetDropTarget(_swigobj)  (_swigobj->GetDropTarget())
+static PyObject *_wrap_wxWindow_GetDropTarget(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxDropTarget * _result;
+    wxWindow * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetDropTarget",_kwnames,&_argo0)) 
+        return NULL;
+    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 wxWindow_GetDropTarget. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxDropTarget *)wxWindow_GetDropTarget(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDropTarget_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
 static void *SwigwxPanelTowxWindow(void *ptr) {
     wxPanel *src;
     wxWindow *dest;
@@ -5799,6 +5869,34 @@ static PyObject *_wrap_wxMenu_Check(PyObject *self, PyObject *args, PyObject *kw
     return _resultobj;
 }
 
+#define wxMenu_IsChecked(_swigobj,_swigarg0)  (_swigobj->IsChecked(_swigarg0))
+static PyObject *_wrap_wxMenu_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxMenu * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","id", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_IsChecked",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_IsChecked. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxMenu_IsChecked(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
 #define wxMenu_Enable(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Enable(_swigarg0,_swigarg1))
 static PyObject *_wrap_wxMenu_Enable(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -5830,6 +5928,34 @@ static PyObject *_wrap_wxMenu_Enable(PyObject *self, PyObject *args, PyObject *k
     return _resultobj;
 }
 
+#define wxMenu_IsEnabled(_swigobj,_swigarg0)  (_swigobj->IsEnabled(_swigarg0))
+static PyObject *_wrap_wxMenu_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxMenu * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","id", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_IsEnabled",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_IsEnabled. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxMenu_IsEnabled(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
 #define wxMenu_FindItem(_swigobj,_swigarg0)  (_swigobj->FindItem(_swigarg0))
 static PyObject *_wrap_wxMenu_FindItem(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -5870,6 +5996,41 @@ static PyObject *_wrap_wxMenu_FindItem(PyObject *self, PyObject *args, PyObject
     return _resultobj;
 }
 
+#define wxMenu_FindItemById(_swigobj,_swigarg0)  (_swigobj->FindItem(_swigarg0))
+static PyObject *_wrap_wxMenu_FindItemById(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuItem * _result;
+    wxMenu * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","id", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_FindItemById",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_FindItemById. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMenuItem *)wxMenu_FindItemById(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuItem_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
 #define wxMenu_GetTitle(_swigobj)  (_swigobj->GetTitle())
 static PyObject *_wrap_wxMenu_GetTitle(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -5942,76 +6103,82 @@ static PyObject *_wrap_wxMenu_SetTitle(PyObject *self, PyObject *args, PyObject
     return _resultobj;
 }
 
-#define wxMenu_FindItemForId(_swigobj,_swigarg0)  (_swigobj->FindItemForId(_swigarg0))
-static PyObject *_wrap_wxMenu_FindItemForId(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetLabel(_swigobj,_swigarg0)  (_swigobj->GetLabel(_swigarg0))
+static PyObject *_wrap_wxMenu_GetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuItem * _result;
+    wxString * _result;
     wxMenu * _arg0;
     int  _arg1;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self","id", NULL };
-    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_FindItemForId",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_GetLabel",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_FindItemForId. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetLabel. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxMenuItem *)wxMenu_FindItemForId(_arg0,_arg1);
+        _result = new wxString (wxMenu_GetLabel(_arg0,_arg1));
 
     wxPy_END_ALLOW_THREADS;
-}    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuItem_p");
-        _resultobj = Py_BuildValue("s",_ptemp);
-    } else {
-        Py_INCREF(Py_None);
-        _resultobj = Py_None;
-    }
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
     return _resultobj;
 }
 
-#define wxMenu_GetHelpString(_swigobj,_swigarg0)  (_swigobj->GetHelpString(_swigarg0))
-static PyObject *_wrap_wxMenu_GetHelpString(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_SetLabel(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetLabel(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenu_SetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
     wxMenu * _arg0;
     int  _arg1;
+    wxString * _arg2;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    PyObject * _obj2 = 0;
+    char *_kwnames[] = { "self","id","label", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_GetHelpString",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenu_SetLabel",_kwnames,&_argo0,&_arg1,&_obj2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetHelpString. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_SetLabel. Expected _wxMenu_p.");
         return NULL;
         }
     }
+{
+    if (!PyString_Check(_obj2)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
+}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxMenu_GetHelpString(_arg0,_arg1));
+        wxMenu_SetLabel(_arg0,_arg1,*_arg2);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
-}
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
 {
-    delete _result;
+    if (_obj2)
+        delete _arg2;
 }
     return _resultobj;
 }
 
-#define wxMenu_GetLabel(_swigobj,_swigarg0)  (_swigobj->GetLabel(_swigarg0))
-static PyObject *_wrap_wxMenu_GetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetHelpString(_swigobj,_swigarg0)  (_swigobj->GetHelpString(_swigarg0))
+static PyObject *_wrap_wxMenu_GetHelpString(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxString * _result;
     wxMenu * _arg0;
@@ -6020,18 +6187,18 @@ static PyObject *_wrap_wxMenu_GetLabel(PyObject *self, PyObject *args, PyObject
     char *_kwnames[] = { "self","id", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_GetLabel",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_GetHelpString",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetLabel. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetHelpString. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxMenu_GetLabel(_arg0,_arg1));
+        _result = new wxString (wxMenu_GetHelpString(_arg0,_arg1));
 
     wxPy_END_ALLOW_THREADS;
 }{
@@ -6084,36 +6251,44 @@ static PyObject *_wrap_wxMenu_SetHelpString(PyObject *self, PyObject *args, PyOb
     return _resultobj;
 }
 
-#define wxMenu_IsChecked(_swigobj,_swigarg0)  (_swigobj->IsChecked(_swigarg0))
-static PyObject *_wrap_wxMenu_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_UpdateUI(_swigobj,_swigarg0)  (_swigobj->UpdateUI(_swigarg0))
+static PyObject *_wrap_wxMenu_UpdateUI(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
     wxMenu * _arg0;
-    int  _arg1;
+    wxEvtHandler * _arg1 = (wxEvtHandler *) NULL;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","source", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_IsChecked",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:wxMenu_UpdateUI",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_IsChecked. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_UpdateUI. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvtHandler_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_UpdateUI. Expected _wxEvtHandler_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenu_IsChecked(_arg0,_arg1);
+        wxMenu_UpdateUI(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
     return _resultobj;
 }
 
-#define wxMenu_IsEnabled(_swigobj,_swigarg0)  (_swigobj->IsEnabled(_swigarg0))
-static PyObject *_wrap_wxMenu_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_Delete(_swigobj,_swigarg0)  (_swigobj->Delete(_swigarg0))
+static PyObject *_wrap_wxMenu_Delete(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     bool  _result;
     wxMenu * _arg0;
@@ -6122,155 +6297,167 @@ static PyObject *_wrap_wxMenu_IsEnabled(PyObject *self, PyObject *args, PyObject
     char *_kwnames[] = { "self","id", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_IsEnabled",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_Delete",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_IsEnabled. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_Delete. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenu_IsEnabled(_arg0,_arg1);
+        _result = (bool )wxMenu_Delete(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenu_SetLabel(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetLabel(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenu_SetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_DeleteItem(_swigobj,_swigarg0)  (_swigobj->Delete(_swigarg0))
+static PyObject *_wrap_wxMenu_DeleteItem(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    bool  _result;
     wxMenu * _arg0;
-    int  _arg1;
-    wxString * _arg2;
+    wxMenuItem * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _obj2 = 0;
-    char *_kwnames[] = { "self","id","label", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","item", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenu_SetLabel",_kwnames,&_argo0,&_arg1,&_obj2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenu_DeleteItem",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_SetLabel. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_DeleteItem. Expected _wxMenu_p.");
         return NULL;
         }
     }
-{
-    if (!PyString_Check(_obj2)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenuItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_DeleteItem. Expected _wxMenuItem_p.");
         return NULL;
+        }
     }
-    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenu_SetLabel(_arg0,_arg1,*_arg2);
+        _result = (bool )wxMenu_DeleteItem(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
-{
-    if (_obj2)
-        delete _arg2;
-}
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenu_UpdateUI(_swigobj,_swigarg0)  (_swigobj->UpdateUI(_swigarg0))
-static PyObject *_wrap_wxMenu_UpdateUI(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_Insert(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Insert(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenu_Insert(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    bool  _result;
     wxMenu * _arg0;
-    wxEvtHandler * _arg1 = (wxEvtHandler *) NULL;
+    size_t  _arg1;
+    wxMenuItem * _arg2;
     PyObject * _argo0 = 0;
-    PyObject * _argo1 = 0;
-    char *_kwnames[] = { "self","source", NULL };
+    PyObject * _argo2 = 0;
+    char *_kwnames[] = { "self","pos","item", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:wxMenu_UpdateUI",_kwnames,&_argo0,&_argo1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenu_Insert",_kwnames,&_argo0,&_arg1,&_argo2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_UpdateUI. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_Insert. Expected _wxMenu_p.");
         return NULL;
         }
     }
-    if (_argo1) {
-        if (_argo1 == Py_None) { _arg1 = NULL; }
-        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvtHandler_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_UpdateUI. Expected _wxEvtHandler_p.");
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxMenuItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxMenu_Insert. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenu_UpdateUI(_arg0,_arg1);
+        _result = (bool )wxMenu_Insert(_arg0,_arg1,_arg2);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-static void  wxMenu_Destroy(wxMenu *self) {
-            delete self;
-        }
-static PyObject *_wrap_wxMenu_Destroy(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_Remove(_swigobj,_swigarg0)  (_swigobj->Remove(_swigarg0))
+static PyObject *_wrap_wxMenu_Remove(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    wxMenuItem * _result;
     wxMenu * _arg0;
+    int  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    char *_kwnames[] = { "self","id", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_Destroy",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_Remove",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_Destroy. Expected _wxMenu_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_Remove. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenu_Destroy(_arg0);
+        _result = (wxMenuItem *)wxMenu_Remove(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuItem_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-static void *SwigwxMenuBarTowxEvtHandler(void *ptr) {
-    wxMenuBar *src;
-    wxEvtHandler *dest;
-    src = (wxMenuBar *) ptr;
-    dest = (wxEvtHandler *) src;
-    return (void *) dest;
-}
-
-#define new_wxMenuBar() (new wxMenuBar())
-static PyObject *_wrap_new_wxMenuBar(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_RemoveItem(_swigobj,_swigarg0)  (_swigobj->Remove(_swigarg0))
+static PyObject *_wrap_wxMenu_RemoveItem(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _result;
-    char *_kwnames[] = {  NULL };
+    wxMenuItem * _result;
+    wxMenu * _arg0;
+    wxMenuItem * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","item", NULL };
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxMenuBar",_kwnames)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenu_RemoveItem",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_RemoveItem. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenuItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_RemoveItem. Expected _wxMenuItem_p.");
         return NULL;
+        }
+    }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxMenuBar *)new_wxMenuBar();
+        _result = (wxMenuItem *)wxMenu_RemoveItem(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuBar_p");
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuItem_p");
         _resultobj = Py_BuildValue("s",_ptemp);
     } else {
         Py_INCREF(Py_None);
@@ -6279,253 +6466,220 @@ static PyObject *_wrap_new_wxMenuBar(PyObject *self, PyObject *args, PyObject *k
     return _resultobj;
 }
 
-#define wxMenuBar_Append(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Append(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_Append(PyObject *self, PyObject *args, PyObject *kwargs) {
+static void  wxMenu_Destroy(wxMenu *self) {
+            delete self;
+        }
+static PyObject *_wrap_wxMenu_Destroy(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _arg0;
-    wxMenu * _arg1;
-    wxString * _arg2;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    PyObject * _argo1 = 0;
-    PyObject * _obj2 = 0;
-    char *_kwnames[] = { "self","menu","title", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxMenuBar_Append",_kwnames,&_argo0,&_argo1,&_obj2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_Destroy",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Append. Expected _wxMenuBar_p.");
-        return NULL;
-        }
-    }
-    if (_argo1) {
-        if (_argo1 == Py_None) { _arg1 = NULL; }
-        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuBar_Append. Expected _wxMenu_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_Destroy. Expected _wxMenu_p.");
         return NULL;
         }
     }
-{
-    if (!PyString_Check(_obj2)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
-        return NULL;
-    }
-    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_Append(_arg0,_arg1,*_arg2);
+        wxMenu_Destroy(_arg0);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
     _resultobj = Py_None;
-{
-    if (_obj2)
-        delete _arg2;
-}
     return _resultobj;
 }
 
-#define wxMenuBar_Check(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Check(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_Check(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_DestroyId(_swigobj,_swigarg0)  (_swigobj->Destroy(_swigarg0))
+static PyObject *_wrap_wxMenu_DestroyId(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _arg0;
+    bool  _result;
+    wxMenu * _arg0;
     int  _arg1;
-    bool  _arg2;
     PyObject * _argo0 = 0;
-    int tempbool2;
-    char *_kwnames[] = { "self","id","flag", NULL };
+    char *_kwnames[] = { "self","id", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxMenuBar_Check",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenu_DestroyId",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Check. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_DestroyId. Expected _wxMenu_p.");
         return NULL;
         }
     }
-    _arg2 = (bool ) tempbool2;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_Check(_arg0,_arg1,_arg2);
+        _result = (bool )wxMenu_DestroyId(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuBar_Enable(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Enable(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_Enable(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_DestroyItem(_swigobj,_swigarg0)  (_swigobj->Destroy(_swigarg0))
+static PyObject *_wrap_wxMenu_DestroyItem(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _arg0;
-    int  _arg1;
-    bool  _arg2;
+    bool  _result;
+    wxMenu * _arg0;
+    wxMenuItem * _arg1;
     PyObject * _argo0 = 0;
-    int tempbool2;
-    char *_kwnames[] = { "self","id","enable", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","item", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxMenuBar_Enable",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenu_DestroyItem",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Enable. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_DestroyItem. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenuItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_DestroyItem. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
-    _arg2 = (bool ) tempbool2;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_Enable(_arg0,_arg1,_arg2);
+        _result = (bool )wxMenu_DestroyItem(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuBar_IsChecked(_swigobj,_swigarg0)  (_swigobj->IsChecked(_swigarg0))
-static PyObject *_wrap_wxMenuBar_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetMenuItemCount(_swigobj)  (_swigobj->GetMenuItemCount())
+static PyObject *_wrap_wxMenu_GetMenuItemCount(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxMenuBar * _arg0;
-    int  _arg1;
+    size_t  _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsChecked",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_GetMenuItemCount",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsChecked. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetMenuItemCount. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuBar_IsChecked(_arg0,_arg1);
+        _result = (size_t )wxMenu_GetMenuItemCount(_arg0);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuBar_IsEnabled(_swigobj,_swigarg0)  (_swigobj->IsEnabled(_swigarg0))
-static PyObject *_wrap_wxMenuBar_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
+static PyObject * wxMenu_GetMenuItems(wxMenu *self) {
+            wxMenuItemList& list = self->GetMenuItems();
+            return wxPy_ConvertList(&list, "wxMenuItem");
+        }
+static PyObject *_wrap_wxMenu_GetMenuItems(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxMenuBar * _arg0;
-    int  _arg1;
+    PyObject * _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsEnabled",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_GetMenuItems",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsEnabled. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetMenuItems. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuBar_IsEnabled(_arg0,_arg1);
+        _result = (PyObject *)wxMenu_GetMenuItems(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
+}{
+  _resultobj = _result;
+}
     return _resultobj;
 }
 
-#define wxMenuBar_FindMenuItem(_swigobj,_swigarg0,_swigarg1)  (_swigobj->FindMenuItem(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_FindMenuItem(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_SetEventHandler(_swigobj,_swigarg0)  (_swigobj->SetEventHandler(_swigarg0))
+static PyObject *_wrap_wxMenu_SetEventHandler(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    int  _result;
-    wxMenuBar * _arg0;
-    wxString * _arg1;
-    wxString * _arg2;
+    wxMenu * _arg0;
+    wxEvtHandler * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _obj1 = 0;
-    PyObject * _obj2 = 0;
-    char *_kwnames[] = { "self","menuString","itemString", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","handler", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxMenuBar_FindMenuItem",_kwnames,&_argo0,&_obj1,&_obj2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenu_SetEventHandler",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_FindMenuItem. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_SetEventHandler. Expected _wxMenu_p.");
         return NULL;
         }
     }
-{
-    if (!PyString_Check(_obj1)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
-        return NULL;
-    }
-    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
-}
-{
-    if (!PyString_Check(_obj2)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvtHandler_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_SetEventHandler. Expected _wxEvtHandler_p.");
         return NULL;
+        }
     }
-    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (int )wxMenuBar_FindMenuItem(_arg0,*_arg1,*_arg2);
+        wxMenu_SetEventHandler(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
-{
-    if (_obj1)
-        delete _arg1;
-}
-{
-    if (_obj2)
-        delete _arg2;
-}
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
     return _resultobj;
 }
 
-#define wxMenuBar_FindItemForId(_swigobj,_swigarg0)  (_swigobj->FindItemForId(_swigarg0))
-static PyObject *_wrap_wxMenuBar_FindItemForId(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetEventHandler(_swigobj)  (_swigobj->GetEventHandler())
+static PyObject *_wrap_wxMenu_GetEventHandler(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuItem * _result;
-    wxMenuBar * _arg0;
-    int  _arg1;
+    wxEvtHandler * _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    char *_kwnames[] = { "self", NULL };
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_FindItemForId",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_GetEventHandler",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_FindItemForId. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetEventHandler. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxMenuItem *)wxMenuBar_FindItemForId(_arg0,_arg1);
+        _result = (wxEvtHandler *)wxMenu_GetEventHandler(_arg0);
 
     wxPy_END_ALLOW_THREADS;
 }    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuItem_p");
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxEvtHandler_p");
         _resultobj = Py_BuildValue("s",_ptemp);
     } else {
         Py_INCREF(Py_None);
@@ -6534,235 +6688,267 @@ static PyObject *_wrap_wxMenuBar_FindItemForId(PyObject *self, PyObject *args, P
     return _resultobj;
 }
 
-#define wxMenuBar_SetLabel(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetLabel(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_SetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_SetInvokingWindow(_swigobj,_swigarg0)  (_swigobj->SetInvokingWindow(_swigarg0))
+static PyObject *_wrap_wxMenu_SetInvokingWindow(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _arg0;
-    int  _arg1;
-    wxString * _arg2;
+    wxMenu * _arg0;
+    wxWindow * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _obj2 = 0;
-    char *_kwnames[] = { "self","id","label", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","win", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenuBar_SetLabel",_kwnames,&_argo0,&_arg1,&_obj2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenu_SetInvokingWindow",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_SetLabel. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_SetInvokingWindow. Expected _wxMenu_p.");
         return NULL;
         }
     }
-{
-    if (!PyString_Check(_obj2)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+    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 wxMenu_SetInvokingWindow. Expected _wxWindow_p.");
         return NULL;
+        }
     }
-    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_SetLabel(_arg0,_arg1,*_arg2);
+        wxMenu_SetInvokingWindow(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
     _resultobj = Py_None;
-{
-    if (_obj2)
-        delete _arg2;
-}
     return _resultobj;
 }
 
-#define wxMenuBar_EnableTop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->EnableTop(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_EnableTop(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetInvokingWindow(_swigobj)  (_swigobj->GetInvokingWindow())
+static PyObject *_wrap_wxMenu_GetInvokingWindow(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _arg0;
-    int  _arg1;
-    bool  _arg2;
+    wxWindow * _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    int tempbool2;
-    char *_kwnames[] = { "self","pos","enable", NULL };
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxMenuBar_EnableTop",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_GetInvokingWindow",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_EnableTop. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetInvokingWindow. Expected _wxMenu_p.");
         return NULL;
         }
     }
-    _arg2 = (bool ) tempbool2;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_EnableTop(_arg0,_arg1,_arg2);
+        _result = (wxWindow *)wxMenu_GetInvokingWindow(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxWindow_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-#define wxMenuBar_GetHelpString(_swigobj,_swigarg0)  (_swigobj->GetHelpString(_swigarg0))
-static PyObject *_wrap_wxMenuBar_GetHelpString(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetStyle(_swigobj)  (_swigobj->GetStyle())
+static PyObject *_wrap_wxMenu_GetStyle(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
-    wxMenuBar * _arg0;
-    int  _arg1;
+    long  _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetHelpString",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_GetStyle",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetHelpString. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetStyle. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxMenuBar_GetHelpString(_arg0,_arg1));
+        _result = (long )wxMenu_GetStyle(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
-}
-{
-    delete _result;
-}
+}    _resultobj = Py_BuildValue("l",_result);
     return _resultobj;
 }
 
-#define wxMenuBar_GetLabel(_swigobj,_swigarg0)  (_swigobj->GetLabel(_swigarg0))
-static PyObject *_wrap_wxMenuBar_GetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_IsAttached(_swigobj)  (_swigobj->IsAttached())
+static PyObject *_wrap_wxMenu_IsAttached(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
-    wxMenuBar * _arg0;
-    int  _arg1;
+    bool  _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","id", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetLabel",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_IsAttached",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetLabel. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_IsAttached. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxMenuBar_GetLabel(_arg0,_arg1));
+        _result = (bool )wxMenu_IsAttached(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
-}
-{
-    delete _result;
-}
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuBar_SetHelpString(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetHelpString(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_SetHelpString(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_SetParent(_swigobj,_swigarg0)  (_swigobj->SetParent(_swigarg0))
+static PyObject *_wrap_wxMenu_SetParent(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuBar * _arg0;
-    int  _arg1;
-    wxString * _arg2;
+    wxMenu * _arg0;
+    wxMenu * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _obj2 = 0;
-    char *_kwnames[] = { "self","id","helpString", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","parent", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenuBar_SetHelpString",_kwnames,&_argo0,&_arg1,&_obj2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenu_SetParent",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_SetHelpString. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_SetParent. Expected _wxMenu_p.");
         return NULL;
         }
     }
-{
-    if (!PyString_Check(_obj2)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenu_SetParent. Expected _wxMenu_p.");
         return NULL;
+        }
     }
-    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_SetHelpString(_arg0,_arg1,*_arg2);
+        wxMenu_SetParent(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
     _resultobj = Py_None;
-{
-    if (_obj2)
-        delete _arg2;
-}
     return _resultobj;
 }
 
-#define wxMenuBar_GetLabelTop(_swigobj,_swigarg0)  (_swigobj->GetLabelTop(_swigarg0))
-static PyObject *_wrap_wxMenuBar_GetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenu_GetParent(_swigobj)  (_swigobj->GetParent())
+static PyObject *_wrap_wxMenu_GetParent(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
-    wxMenuBar * _arg0;
-    int  _arg1;
+    wxMenu * _result;
+    wxMenu * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","pos", NULL };
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetLabelTop",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenu_GetParent",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetLabelTop. Expected _wxMenuBar_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenu_GetParent. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxMenuBar_GetLabelTop(_arg0,_arg1));
+        _result = (wxMenu *)wxMenu_GetParent(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenu_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
 }
-{
-    delete _result;
+
+static void *SwigwxMenuBarTowxWindow(void *ptr) {
+    wxMenuBar *src;
+    wxWindow *dest;
+    src = (wxMenuBar *) ptr;
+    dest = (wxWindow *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxMenuBarTowxEvtHandler(void *ptr) {
+    wxMenuBar *src;
+    wxEvtHandler *dest;
+    src = (wxMenuBar *) ptr;
+    dest = (wxEvtHandler *) src;
+    return (void *) dest;
 }
+
+#define new_wxMenuBar() (new wxMenuBar())
+static PyObject *_wrap_new_wxMenuBar(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuBar * _result;
+    char *_kwnames[] = {  NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxMenuBar",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMenuBar *)new_wxMenuBar();
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuBar_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-#define wxMenuBar_SetLabelTop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetLabelTop(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_Append(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Append(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_Append(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    bool  _result;
     wxMenuBar * _arg0;
-    int  _arg1;
+    wxMenu * _arg1;
     wxString * _arg2;
     PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
     PyObject * _obj2 = 0;
-    char *_kwnames[] = { "self","pos","label", NULL };
+    char *_kwnames[] = { "self","menu","title", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenuBar_SetLabelTop",_kwnames,&_argo0,&_arg1,&_obj2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxMenuBar_Append",_kwnames,&_argo0,&_argo1,&_obj2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_SetLabelTop. Expected _wxMenuBar_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Append. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuBar_Append. Expected _wxMenu_p.");
         return NULL;
         }
     }
@@ -6775,11 +6961,10 @@ static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyO
 }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_SetLabelTop(_arg0,_arg1,*_arg2);
+        _result = (bool )wxMenuBar_Append(_arg0,_arg1,*_arg2);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    _resultobj = Py_BuildValue("i",_result);
 {
     if (_obj2)
         delete _arg2;
@@ -6787,92 +6972,115 @@ static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
-#define wxMenuBar_GetMenuCount(_swigobj)  (_swigobj->GetMenuCount())
-static PyObject *_wrap_wxMenuBar_GetMenuCount(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_Insert(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->Insert(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxMenuBar_Insert(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    int  _result;
+    bool  _result;
     wxMenuBar * _arg0;
+    size_t  _arg1;
+    wxMenu * _arg2;
+    wxString * _arg3;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    PyObject * _argo2 = 0;
+    PyObject * _obj3 = 0;
+    char *_kwnames[] = { "self","pos","menu","title", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuBar_GetMenuCount",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO:wxMenuBar_Insert",_kwnames,&_argo0,&_arg1,&_argo2,&_obj3)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetMenuCount. Expected _wxMenuBar_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Insert. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxMenuBar_Insert. Expected _wxMenu_p.");
         return NULL;
         }
     }
+{
+    if (!PyString_Check(_obj3)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg3 = new wxString(PyString_AsString(_obj3), PyString_Size(_obj3));
+}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (int )wxMenuBar_GetMenuCount(_arg0);
+        _result = (bool )wxMenuBar_Insert(_arg0,_arg1,_arg2,*_arg3);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
+{
+    if (_obj3)
+        delete _arg3;
+}
     return _resultobj;
 }
 
-#define wxMenuBar_GetMenu(_swigobj,_swigarg0)  (_swigobj->GetMenu(_swigarg0))
-static PyObject *_wrap_wxMenuBar_GetMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_GetMenuCount(_swigobj)  (_swigobj->GetMenuCount())
+static PyObject *_wrap_wxMenuBar_GetMenuCount(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenu * _result;
+    size_t  _result;
     wxMenuBar * _arg0;
-    int  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","i", NULL };
-    char _ptemp[128];
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetMenu",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuBar_GetMenuCount",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetMenu. Expected _wxMenuBar_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetMenuCount. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxMenu *)wxMenuBar_GetMenu(_arg0,_arg1);
+        _result = (size_t )wxMenuBar_GetMenuCount(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenu_p");
-        _resultobj = Py_BuildValue("s",_ptemp);
-    } else {
-        Py_INCREF(Py_None);
-        _resultobj = Py_None;
-    }
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuBar_Refresh(_swigobj)  (_swigobj->Refresh())
-static PyObject *_wrap_wxMenuBar_Refresh(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_GetMenu(_swigobj,_swigarg0)  (_swigobj->GetMenu(_swigarg0))
+static PyObject *_wrap_wxMenuBar_GetMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    wxMenu * _result;
     wxMenuBar * _arg0;
+    size_t  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    char *_kwnames[] = { "self","pos", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuBar_Refresh",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetMenu",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Refresh. Expected _wxMenuBar_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetMenu. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuBar_Refresh(_arg0);
+        _result = (wxMenu *)wxMenuBar_GetMenu(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenu_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -6968,35 +7176,57 @@ static PyObject *_wrap_wxMenuBar_Remove(PyObject *self, PyObject *args, PyObject
     return _resultobj;
 }
 
-#define new_wxMenuItem(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5) (new wxMenuItem(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5))
-static PyObject *_wrap_new_wxMenuItem(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_EnableTop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->EnableTop(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_EnableTop(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenuItem * _result;
-    wxMenu * _arg0 = (wxMenu *) NULL;
-    int  _arg1 = (int ) ID_SEPARATOR;
-    wxString * _arg2 = (wxString *) &wxPyEmptyStr;
-    wxString * _arg3 = (wxString *) &wxPyEmptyStr;
-    bool  _arg4 = (bool ) FALSE;
-    wxMenu * _arg5 = (wxMenu *) NULL;
+    wxMenuBar * _arg0;
+    size_t  _arg1;
+    bool  _arg2;
+    PyObject * _argo0 = 0;
+    int tempbool2;
+    char *_kwnames[] = { "self","pos","enable", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxMenuBar_EnableTop",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_EnableTop. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+    _arg2 = (bool ) tempbool2;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxMenuBar_EnableTop(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxMenuBar_SetLabelTop(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetLabelTop(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuBar * _arg0;
+    size_t  _arg1;
+    wxString * _arg2;
     PyObject * _argo0 = 0;
     PyObject * _obj2 = 0;
-    PyObject * _obj3 = 0;
-    int tempbool4 = (int) FALSE;
-    PyObject * _argo5 = 0;
-    char *_kwnames[] = { "parentMenu","id","text","helpString","checkable","subMenu", NULL };
-    char _ptemp[128];
+    char *_kwnames[] = { "self","pos","label", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OiOOiO:new_wxMenuItem",_kwnames,&_argo0,&_arg1,&_obj2,&_obj3,&tempbool4,&_argo5)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenuBar_SetLabelTop",_kwnames,&_argo0,&_arg1,&_obj2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxMenuItem. Expected _wxMenu_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_SetLabelTop. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
-    if (_obj2)
 {
     if (!PyString_Check(_obj2)) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
@@ -7004,25 +7234,129 @@ static PyObject *_wrap_new_wxMenuItem(PyObject *self, PyObject *args, PyObject *
     }
     _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
 }
-    if (_obj3)
 {
-    if (!PyString_Check(_obj3)) {
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxMenuBar_SetLabelTop(_arg0,_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+{
+    if (_obj2)
+        delete _arg2;
+}
+    return _resultobj;
+}
+
+#define wxMenuBar_GetLabelTop(_swigobj,_swigarg0)  (_swigobj->GetLabelTop(_swigarg0))
+static PyObject *_wrap_wxMenuBar_GetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    wxMenuBar * _arg0;
+    size_t  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","pos", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetLabelTop",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetLabelTop. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxString (wxMenuBar_GetLabelTop(_arg0,_arg1));
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
+    return _resultobj;
+}
+
+#define wxMenuBar_FindMenuItem(_swigobj,_swigarg0,_swigarg1)  (_swigobj->FindMenuItem(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_FindMenuItem(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    wxMenuBar * _arg0;
+    wxString * _arg1;
+    wxString * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    PyObject * _obj2 = 0;
+    char *_kwnames[] = { "self","menuString","itemString", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxMenuBar_FindMenuItem",_kwnames,&_argo0,&_obj1,&_obj2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_FindMenuItem. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+{
+    if (!PyString_Check(_obj1)) {
         PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
     }
-    _arg3 = new wxString(PyString_AsString(_obj3), PyString_Size(_obj3));
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
 }
-    _arg4 = (bool ) tempbool4;
-    if (_argo5) {
-        if (_argo5 == Py_None) { _arg5 = NULL; }
-        else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxMenuItem. Expected _wxMenu_p.");
+{
+    if (!PyString_Check(_obj2)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxMenuBar_FindMenuItem(_arg0,*_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+{
+    if (_obj1)
+        delete _arg1;
+}
+{
+    if (_obj2)
+        delete _arg2;
+}
+    return _resultobj;
+}
+
+#define wxMenuBar_FindItemById(_swigobj,_swigarg0)  (_swigobj->FindItem(_swigarg0))
+static PyObject *_wrap_wxMenuBar_FindItemById(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuItem * _result;
+    wxMenuBar * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","id", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_FindItemById",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_FindItemById. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxMenuItem *)new_wxMenuItem(_arg0,_arg1,*_arg2,*_arg3,_arg4,_arg5);
+        _result = (wxMenuItem *)wxMenuBar_FindItemById(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    if (_result) {
@@ -7032,176 +7366,381 @@ static PyObject *_wrap_new_wxMenuItem(PyObject *self, PyObject *args, PyObject *
         Py_INCREF(Py_None);
         _resultobj = Py_None;
     }
-{
-    if (_obj2)
-        delete _arg2;
+    return _resultobj;
 }
+
+#define wxMenuBar_Enable(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Enable(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_Enable(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuBar * _arg0;
+    int  _arg1;
+    bool  _arg2;
+    PyObject * _argo0 = 0;
+    int tempbool2;
+    char *_kwnames[] = { "self","id","enable", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxMenuBar_Enable",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Enable. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+    _arg2 = (bool ) tempbool2;
 {
-    if (_obj3)
-        delete _arg3;
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxMenuBar_Enable(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
 }
+
+#define wxMenuBar_Check(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Check(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_Check(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuBar * _arg0;
+    int  _arg1;
+    bool  _arg2;
+    PyObject * _argo0 = 0;
+    int tempbool2;
+    char *_kwnames[] = { "self","id","check", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxMenuBar_Check",_kwnames,&_argo0,&_arg1,&tempbool2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_Check. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+    _arg2 = (bool ) tempbool2;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxMenuBar_Check(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
     return _resultobj;
 }
 
-#define wxMenuItem_IsSeparator(_swigobj)  (_swigobj->IsSeparator())
-static PyObject *_wrap_wxMenuItem_IsSeparator(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_IsChecked(_swigobj,_swigarg0)  (_swigobj->IsChecked(_swigarg0))
+static PyObject *_wrap_wxMenuBar_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     bool  _result;
-    wxMenuItem * _arg0;
+    wxMenuBar * _arg0;
+    int  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    char *_kwnames[] = { "self","id", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsSeparator",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsChecked",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsSeparator. Expected _wxMenuItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsChecked. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuItem_IsSeparator(_arg0);
+        _result = (bool )wxMenuBar_IsChecked(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_IsEnabled(_swigobj)  (_swigobj->IsEnabled())
-static PyObject *_wrap_wxMenuItem_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_IsEnabled(_swigobj,_swigarg0)  (_swigobj->IsEnabled(_swigarg0))
+static PyObject *_wrap_wxMenuBar_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     bool  _result;
-    wxMenuItem * _arg0;
+    wxMenuBar * _arg0;
+    int  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    char *_kwnames[] = { "self","id", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsEnabled",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsEnabled",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsEnabled. Expected _wxMenuItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsEnabled. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuItem_IsEnabled(_arg0);
+        _result = (bool )wxMenuBar_IsEnabled(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_IsChecked(_swigobj)  (_swigobj->IsChecked())
-static PyObject *_wrap_wxMenuItem_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_SetLabel(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetLabel(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_SetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxMenuItem * _arg0;
+    wxMenuBar * _arg0;
+    int  _arg1;
+    wxString * _arg2;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    PyObject * _obj2 = 0;
+    char *_kwnames[] = { "self","id","label", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsChecked",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenuBar_SetLabel",_kwnames,&_argo0,&_arg1,&_obj2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsChecked. Expected _wxMenuItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_SetLabel. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
+{
+    if (!PyString_Check(_obj2)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
+}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuItem_IsChecked(_arg0);
+        wxMenuBar_SetLabel(_arg0,_arg1,*_arg2);
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+{
+    if (_obj2)
+        delete _arg2;
+}
     return _resultobj;
 }
 
-#define wxMenuItem_IsCheckable(_swigobj)  (_swigobj->IsCheckable())
-static PyObject *_wrap_wxMenuItem_IsCheckable(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuBar_GetLabel(_swigobj,_swigarg0)  (_swigobj->GetLabel(_swigarg0))
+static PyObject *_wrap_wxMenuBar_GetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxMenuItem * _arg0;
+    wxString * _result;
+    wxMenuBar * _arg0;
+    int  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    char *_kwnames[] = { "self","id", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsCheckable",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetLabel",_kwnames,&_argo0,&_arg1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsCheckable. Expected _wxMenuItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetLabel. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxString (wxMenuBar_GetLabel(_arg0,_arg1));
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
+    return _resultobj;
+}
+
+#define wxMenuBar_SetHelpString(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetHelpString(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxMenuBar_SetHelpString(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuBar * _arg0;
+    int  _arg1;
+    wxString * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _obj2 = 0;
+    char *_kwnames[] = { "self","id","helpString", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxMenuBar_SetHelpString",_kwnames,&_argo0,&_arg1,&_obj2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_SetHelpString. Expected _wxMenuBar_p.");
+        return NULL;
+        }
+    }
+{
+    if (!PyString_Check(_obj2)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxMenuBar_SetHelpString(_arg0,_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+{
+    if (_obj2)
+        delete _arg2;
+}
+    return _resultobj;
+}
+
+#define wxMenuBar_GetHelpString(_swigobj,_swigarg0)  (_swigobj->GetHelpString(_swigarg0))
+static PyObject *_wrap_wxMenuBar_GetHelpString(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    wxMenuBar * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","id", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_GetHelpString",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_GetHelpString. Expected _wxMenuBar_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuItem_IsCheckable(_arg0);
+        _result = new wxString (wxMenuBar_GetHelpString(_arg0,_arg1));
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
     return _resultobj;
 }
 
-#define wxMenuItem_IsSubMenu(_swigobj)  (_swigobj->IsSubMenu())
-static PyObject *_wrap_wxMenuItem_IsSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define new_wxMenuItem(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5) (new wxMenuItem(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5))
+static PyObject *_wrap_new_wxMenuItem(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxMenuItem * _arg0;
+    wxMenuItem * _result;
+    wxMenu * _arg0 = (wxMenu *) NULL;
+    int  _arg1 = (int ) ID_SEPARATOR;
+    wxString * _arg2 = (wxString *) &wxPyEmptyStr;
+    wxString * _arg3 = (wxString *) &wxPyEmptyStr;
+    bool  _arg4 = (bool ) FALSE;
+    wxMenu * _arg5 = (wxMenu *) NULL;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    PyObject * _obj2 = 0;
+    PyObject * _obj3 = 0;
+    int tempbool4 = (int) FALSE;
+    PyObject * _argo5 = 0;
+    char *_kwnames[] = { "parentMenu","id","text","help","isCheckable","subMenu", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsSubMenu",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OiOOiO:new_wxMenuItem",_kwnames,&_argo0,&_arg1,&_obj2,&_obj3,&tempbool4,&_argo5)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsSubMenu. Expected _wxMenuItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxMenuItem. Expected _wxMenu_p.");
+        return NULL;
+        }
+    }
+    if (_obj2)
+{
+    if (!PyString_Check(_obj2)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg2 = new wxString(PyString_AsString(_obj2), PyString_Size(_obj2));
+}
+    if (_obj3)
+{
+    if (!PyString_Check(_obj3)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg3 = new wxString(PyString_AsString(_obj3), PyString_Size(_obj3));
+}
+    _arg4 = (bool ) tempbool4;
+    if (_argo5) {
+        if (_argo5 == Py_None) { _arg5 = NULL; }
+        else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxMenuItem. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxMenuItem_IsSubMenu(_arg0);
+        _result = (wxMenuItem *)new_wxMenuItem(_arg0,_arg1,*_arg2,*_arg3,_arg4,_arg5);
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenuItem_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+{
+    if (_obj2)
+        delete _arg2;
+}
+{
+    if (_obj3)
+        delete _arg3;
+}
     return _resultobj;
 }
 
-#define wxMenuItem_GetId(_swigobj)  (_swigobj->GetId())
-static PyObject *_wrap_wxMenuItem_GetId(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetMenu(_swigobj)  (_swigobj->GetMenu())
+static PyObject *_wrap_wxMenuItem_GetMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    int  _result;
+    wxMenu * _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetId",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetMenu",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetId. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetMenu. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (int )wxMenuItem_GetId(_arg0);
+        _result = (wxMenu *)wxMenuItem_GetMenu(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenu_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
@@ -7233,88 +7772,76 @@ static PyObject *_wrap_wxMenuItem_SetId(PyObject *self, PyObject *args, PyObject
     return _resultobj;
 }
 
-#define wxMenuItem_GetSubMenu(_swigobj)  (_swigobj->GetSubMenu())
-static PyObject *_wrap_wxMenuItem_GetSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetId(_swigobj)  (_swigobj->GetId())
+static PyObject *_wrap_wxMenuItem_GetId(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxMenu * _result;
+    int  _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetSubMenu",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetId",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetSubMenu. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetId. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxMenu *)wxMenuItem_GetSubMenu(_arg0);
+        _result = (int )wxMenuItem_GetId(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenu_p");
-        _resultobj = Py_BuildValue("s",_ptemp);
-    } else {
-        Py_INCREF(Py_None);
-        _resultobj = Py_None;
-    }
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_GetHelp(_swigobj)  (_swigobj->GetHelp())
-static PyObject *_wrap_wxMenuItem_GetHelp(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_IsSeparator(_swigobj)  (_swigobj->IsSeparator())
+static PyObject *_wrap_wxMenuItem_IsSeparator(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
+    bool  _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetHelp",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsSeparator",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetHelp. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsSeparator. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxMenuItem_GetHelp(_arg0));
+        _result = (bool )wxMenuItem_IsSeparator(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
-}
-{
-    delete _result;
-}
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_SetHelp(_swigobj,_swigarg0)  (_swigobj->SetHelp(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetHelp(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_SetText(_swigobj,_swigarg0)  (_swigobj->SetText(_swigarg0))
+static PyObject *_wrap_wxMenuItem_SetText(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxMenuItem * _arg0;
     wxString * _arg1;
     PyObject * _argo0 = 0;
     PyObject * _obj1 = 0;
-    char *_kwnames[] = { "self","strHelp", NULL };
+    char *_kwnames[] = { "self","str", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetHelp",_kwnames,&_argo0,&_obj1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetText",_kwnames,&_argo0,&_obj1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetHelp. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetText. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
@@ -7327,7 +7854,7 @@ static PyObject *_wrap_wxMenuItem_SetHelp(PyObject *self, PyObject *args, PyObje
 }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetHelp(_arg0,*_arg1);
+        wxMenuItem_SetText(_arg0,*_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -7339,259 +7866,181 @@ static PyObject *_wrap_wxMenuItem_SetHelp(PyObject *self, PyObject *args, PyObje
     return _resultobj;
 }
 
-#define wxMenuItem_Enable(_swigobj,_swigarg0)  (_swigobj->Enable(_swigarg0))
-static PyObject *_wrap_wxMenuItem_Enable(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetLabel(_swigobj)  (_swigobj->GetLabel())
+static PyObject *_wrap_wxMenuItem_GetLabel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    wxString * _result;
     wxMenuItem * _arg0;
-    bool  _arg1 = (bool ) TRUE;
     PyObject * _argo0 = 0;
-    int tempbool1 = (int) TRUE;
-    char *_kwnames[] = { "self","bDoEnable", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxMenuItem_Enable",_kwnames,&_argo0,&tempbool1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetLabel",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_Enable. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetLabel. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
-    _arg1 = (bool ) tempbool1;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_Enable(_arg0,_arg1);
+        _result = new wxString (wxMenuItem_GetLabel(_arg0));
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
-    return _resultobj;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
 }
-
-#define wxMenuItem_Check(_swigobj,_swigarg0)  (_swigobj->Check(_swigarg0))
-static PyObject *_wrap_wxMenuItem_Check(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    wxMenuItem * _arg0;
-    bool  _arg1 = (bool ) TRUE;
-    PyObject * _argo0 = 0;
-    int tempbool1 = (int) TRUE;
-    char *_kwnames[] = { "self","bDoCheck", NULL };
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxMenuItem_Check",_kwnames,&_argo0,&tempbool1)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_Check. Expected _wxMenuItem_p.");
-        return NULL;
-        }
-    }
-    _arg1 = (bool ) tempbool1;
 {
-    wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_Check(_arg0,_arg1);
-
-    wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+    delete _result;
+}
     return _resultobj;
 }
 
-#define wxMenuItem_GetBackgroundColour(_swigobj)  (_swigobj->GetBackgroundColour())
-static PyObject *_wrap_wxMenuItem_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetText(_swigobj)  (_swigobj->GetText())
+static PyObject *_wrap_wxMenuItem_GetText(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxColour * _result;
+    wxString * _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetBackgroundColour",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetText",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetBackgroundColour. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetText. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxColour & _result_ref = wxMenuItem_GetBackgroundColour(_arg0);
-    _result = (wxColour *) &_result_ref;
+        const wxString & _result_ref = wxMenuItem_GetText(_arg0);
+    _result = (wxString *) &_result_ref;
 
     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;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
 }
-
-#define wxMenuItem_GetBitmap(_swigobj,_swigarg0)  (_swigobj->GetBitmap(_swigarg0))
-static PyObject *_wrap_wxMenuItem_GetBitmap(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    wxBitmap * _result;
-    wxMenuItem * _arg0;
-    bool  _arg1 = (bool ) TRUE;
-    PyObject * _argo0 = 0;
-    int tempbool1 = (int) TRUE;
-    char *_kwnames[] = { "self","checked", NULL };
-    char _ptemp[128];
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxMenuItem_GetBitmap",_kwnames,&_argo0,&tempbool1)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetBitmap. Expected _wxMenuItem_p.");
-        return NULL;
-        }
-    }
-    _arg1 = (bool ) tempbool1;
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxBitmap (wxMenuItem_GetBitmap(_arg0,_arg1));
-
-    wxPy_END_ALLOW_THREADS;
-}    SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p");
-    _resultobj = Py_BuildValue("s",_ptemp);
     return _resultobj;
 }
 
-#define wxMenuItem_GetFont(_swigobj)  (_swigobj->GetFont())
-static PyObject *_wrap_wxMenuItem_GetFont(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_SetCheckable(_swigobj,_swigarg0)  (_swigobj->SetCheckable(_swigarg0))
+static PyObject *_wrap_wxMenuItem_SetCheckable(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxFont * _result;
     wxMenuItem * _arg0;
+    bool  _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
+    int tempbool1;
+    char *_kwnames[] = { "self","checkable", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetFont",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuItem_SetCheckable",_kwnames,&_argo0,&tempbool1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetFont. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetCheckable. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
+    _arg1 = (bool ) tempbool1;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxFont & _result_ref = wxMenuItem_GetFont(_arg0);
-    _result = (wxFont *) &_result_ref;
+        wxMenuItem_SetCheckable(_arg0,_arg1);
 
     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;
-    }
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
     return _resultobj;
 }
 
-#define wxMenuItem_GetMarginWidth(_swigobj)  (_swigobj->GetMarginWidth())
-static PyObject *_wrap_wxMenuItem_GetMarginWidth(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_IsCheckable(_swigobj)  (_swigobj->IsCheckable())
+static PyObject *_wrap_wxMenuItem_IsCheckable(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    int  _result;
+    bool  _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetMarginWidth",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsCheckable",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetMarginWidth. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsCheckable. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (int )wxMenuItem_GetMarginWidth(_arg0);
+        _result = (bool )wxMenuItem_IsCheckable(_arg0);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_GetTextColour(_swigobj)  (_swigobj->GetTextColour())
-static PyObject *_wrap_wxMenuItem_GetTextColour(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_IsSubMenu(_swigobj)  (_swigobj->IsSubMenu())
+static PyObject *_wrap_wxMenuItem_IsSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxColour * _result;
+    bool  _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetTextColour",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsSubMenu",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetTextColour. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsSubMenu. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxColour & _result_ref = wxMenuItem_GetTextColour(_arg0);
-    _result = (wxColour *) &_result_ref;
+        _result = (bool )wxMenuItem_IsSubMenu(_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;
-    }
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_SetBackgroundColour(_swigobj,_swigarg0)  (_swigobj->SetBackgroundColour(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_SetSubMenu(_swigobj,_swigarg0)  (_swigobj->SetSubMenu(_swigarg0))
+static PyObject *_wrap_wxMenuItem_SetSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxMenuItem * _arg0;
-    wxColour * _arg1;
+    wxMenu * _arg1;
     PyObject * _argo0 = 0;
     PyObject * _argo1 = 0;
-    char *_kwnames[] = { "self","colour", NULL };
+    char *_kwnames[] = { "self","menu", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetBackgroundColour",_kwnames,&_argo0,&_argo1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetSubMenu",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetBackgroundColour. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetSubMenu. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
     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 wxMenuItem_SetBackgroundColour. Expected _wxColour_p.");
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenu_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetSubMenu. Expected _wxMenu_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetBackgroundColour(_arg0,*_arg1);
+        wxMenuItem_SetSubMenu(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -7599,44 +8048,63 @@ static PyObject *_wrap_wxMenuItem_SetBackgroundColour(PyObject *self, PyObject *
     return _resultobj;
 }
 
-#define wxMenuItem_SetBitmaps(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetBitmaps(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxMenuItem_SetBitmaps(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetSubMenu(_swigobj)  (_swigobj->GetSubMenu())
+static PyObject *_wrap_wxMenuItem_GetSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    wxMenu * _result;
     wxMenuItem * _arg0;
-    wxBitmap * _arg1;
-    wxBitmap * _arg2 = (wxBitmap *) &wxNullBitmap;
     PyObject * _argo0 = 0;
-    PyObject * _argo1 = 0;
-    PyObject * _argo2 = 0;
-    char *_kwnames[] = { "self","checked","unchecked", NULL };
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxMenuItem_SetBitmaps",_kwnames,&_argo0,&_argo1,&_argo2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetSubMenu",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetBitmaps. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetSubMenu. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
-    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 wxMenuItem_SetBitmaps. Expected _wxBitmap_p.");
-        return NULL;
-        }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxMenu *)wxMenuItem_GetSubMenu(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxMenu_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
     }
-    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 wxMenuItem_SetBitmaps. Expected _wxBitmap_p.");
+    return _resultobj;
+}
+
+#define wxMenuItem_Enable(_swigobj,_swigarg0)  (_swigobj->Enable(_swigarg0))
+static PyObject *_wrap_wxMenuItem_Enable(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxMenuItem * _arg0;
+    bool  _arg1 = (bool ) TRUE;
+    PyObject * _argo0 = 0;
+    int tempbool1 = (int) TRUE;
+    char *_kwnames[] = { "self","enable", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxMenuItem_Enable",_kwnames,&_argo0,&tempbool1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_Enable. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
+    _arg1 = (bool ) tempbool1;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetBitmaps(_arg0,*_arg1,*_arg2);
+        wxMenuItem_Enable(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -7644,63 +8112,56 @@ static PyObject *_wrap_wxMenuItem_SetBitmaps(PyObject *self, PyObject *args, PyO
     return _resultobj;
 }
 
-#define wxMenuItem_SetFont(_swigobj,_swigarg0)  (_swigobj->SetFont(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetFont(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_IsEnabled(_swigobj)  (_swigobj->IsEnabled())
+static PyObject *_wrap_wxMenuItem_IsEnabled(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    bool  _result;
     wxMenuItem * _arg0;
-    wxFont * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _argo1 = 0;
-    char *_kwnames[] = { "self","font", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetFont",_kwnames,&_argo0,&_argo1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsEnabled",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetFont. Expected _wxMenuItem_p.");
-        return NULL;
-        }
-    }
-    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 wxMenuItem_SetFont. Expected _wxFont_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsEnabled. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetFont(_arg0,*_arg1);
+        _result = (bool )wxMenuItem_IsEnabled(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_SetMarginWidth(_swigobj,_swigarg0)  (_swigobj->SetMarginWidth(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetMarginWidth(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_Check(_swigobj,_swigarg0)  (_swigobj->Check(_swigarg0))
+static PyObject *_wrap_wxMenuItem_Check(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxMenuItem * _arg0;
-    int  _arg1;
+    bool  _arg1 = (bool ) TRUE;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","width", NULL };
+    int tempbool1 = (int) TRUE;
+    char *_kwnames[] = { "self","check", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuItem_SetMarginWidth",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxMenuItem_Check",_kwnames,&_argo0,&tempbool1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetMarginWidth. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_Check. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
+    _arg1 = (bool ) tempbool1;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetMarginWidth(_arg0,_arg1);
+        wxMenuItem_Check(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -7708,198 +8169,193 @@ static PyObject *_wrap_wxMenuItem_SetMarginWidth(PyObject *self, PyObject *args,
     return _resultobj;
 }
 
-#define wxMenuItem_SetText(_swigobj,_swigarg0)  (_swigobj->SetText(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetText(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_IsChecked(_swigobj)  (_swigobj->IsChecked())
+static PyObject *_wrap_wxMenuItem_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    bool  _result;
     wxMenuItem * _arg0;
-    wxString * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _obj1 = 0;
-    char *_kwnames[] = { "self","str", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetText",_kwnames,&_argo0,&_obj1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_IsChecked",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetText. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_IsChecked. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
-{
-    if (!PyString_Check(_obj1)) {
-        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
-        return NULL;
-    }
-    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetText(_arg0,*_arg1);
+        _result = (bool )wxMenuItem_IsChecked(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
-{
-    if (_obj1)
-        delete _arg1;
-}
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxMenuItem_GetText(_swigobj)  (_swigobj->GetText())
-static PyObject *_wrap_wxMenuItem_GetText(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_Toggle(_swigobj)  (_swigobj->Toggle())
+static PyObject *_wrap_wxMenuItem_Toggle(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetText",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_Toggle",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetText. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_Toggle. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        const wxString & _result_ref = wxMenuItem_GetText(_arg0);
-    _result = (wxString *) &_result_ref;
+        wxMenuItem_Toggle(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
-}
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
     return _resultobj;
 }
 
-#define wxMenuItem_SetTextColour(_swigobj,_swigarg0)  (_swigobj->SetTextColour(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetTextColour(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_SetHelp(_swigobj,_swigarg0)  (_swigobj->SetHelp(_swigarg0))
+static PyObject *_wrap_wxMenuItem_SetHelp(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxMenuItem * _arg0;
-    wxColour * _arg1;
+    wxString * _arg1;
     PyObject * _argo0 = 0;
-    PyObject * _argo1 = 0;
-    char *_kwnames[] = { "self","colour", NULL };
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","str", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetTextColour",_kwnames,&_argo0,&_argo1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetHelp",_kwnames,&_argo0,&_obj1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetTextColour. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetHelp. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
-    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 wxMenuItem_SetTextColour. Expected _wxColour_p.");
+{
+    if (!PyString_Check(_obj1)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
         return NULL;
-        }
     }
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
+}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetTextColour(_arg0,*_arg1);
+        wxMenuItem_SetHelp(_arg0,*_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
     _resultobj = Py_None;
+{
+    if (_obj1)
+        delete _arg1;
+}
     return _resultobj;
 }
 
-#define wxMenuItem_DeleteSubMenu(_swigobj)  (_swigobj->DeleteSubMenu())
-static PyObject *_wrap_wxMenuItem_DeleteSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetHelp(_swigobj)  (_swigobj->GetHelp())
+static PyObject *_wrap_wxMenuItem_GetHelp(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    wxString * _result;
     wxMenuItem * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_DeleteSubMenu",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetHelp",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_DeleteSubMenu. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetHelp. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_DeleteSubMenu(_arg0);
+        const wxString & _result_ref = wxMenuItem_GetHelp(_arg0);
+    _result = (wxString *) &_result_ref;
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
+}
     return _resultobj;
 }
 
-#define wxMenuItem_SetCheckable(_swigobj,_swigarg0)  (_swigobj->SetCheckable(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetCheckable(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_GetAccel(_swigobj)  (_swigobj->GetAccel())
+static PyObject *_wrap_wxMenuItem_GetAccel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
+    wxAcceleratorEntry * _result;
     wxMenuItem * _arg0;
-    bool  _arg1;
     PyObject * _argo0 = 0;
-    int tempbool1;
-    char *_kwnames[] = { "self","checkable", NULL };
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuItem_SetCheckable",_kwnames,&_argo0,&tempbool1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxMenuItem_GetAccel",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetCheckable. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_GetAccel. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
-    _arg1 = (bool ) tempbool1;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetCheckable(_arg0,_arg1);
+        _result = (wxAcceleratorEntry *)wxMenuItem_GetAccel(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxAcceleratorEntry_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-#define wxMenuItem_SetSubMenu(_swigobj,_swigarg0)  (_swigobj->SetSubMenu(_swigarg0))
-static PyObject *_wrap_wxMenuItem_SetSubMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxMenuItem_SetAccel(_swigobj,_swigarg0)  (_swigobj->SetAccel(_swigarg0))
+static PyObject *_wrap_wxMenuItem_SetAccel(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxMenuItem * _arg0;
-    wxMenu * _arg1;
+    wxAcceleratorEntry * _arg1;
     PyObject * _argo0 = 0;
     PyObject * _argo1 = 0;
-    char *_kwnames[] = { "self","menu", NULL };
+    char *_kwnames[] = { "self","accel", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetSubMenu",_kwnames,&_argo0,&_argo1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMenuItem_SetAccel",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
         else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetSubMenu. Expected _wxMenuItem_p.");
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuItem_SetAccel. Expected _wxMenuItem_p.");
         return NULL;
         }
     }
     if (_argo1) {
         if (_argo1 == Py_None) { _arg1 = NULL; }
-        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMenu_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetSubMenu. Expected _wxMenu_p.");
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorEntry_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetAccel. Expected _wxAcceleratorEntry_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxMenuItem_SetSubMenu(_arg0,_arg1);
+        wxMenuItem_SetAccel(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -7908,67 +8364,78 @@ static PyObject *_wrap_wxMenuItem_SetSubMenu(PyObject *self, PyObject *args, PyO
 }
 
 static PyMethodDef windowscMethods[] = {
-	 { "wxMenuItem_SetSubMenu", (PyCFunction) _wrap_wxMenuItem_SetSubMenu, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetCheckable", (PyCFunction) _wrap_wxMenuItem_SetCheckable, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_DeleteSubMenu", (PyCFunction) _wrap_wxMenuItem_DeleteSubMenu, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetTextColour", (PyCFunction) _wrap_wxMenuItem_SetTextColour, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetText", (PyCFunction) _wrap_wxMenuItem_GetText, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetText", (PyCFunction) _wrap_wxMenuItem_SetText, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetMarginWidth", (PyCFunction) _wrap_wxMenuItem_SetMarginWidth, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetFont", (PyCFunction) _wrap_wxMenuItem_SetFont, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetBitmaps", (PyCFunction) _wrap_wxMenuItem_SetBitmaps, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetBackgroundColour", (PyCFunction) _wrap_wxMenuItem_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetTextColour", (PyCFunction) _wrap_wxMenuItem_GetTextColour, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetMarginWidth", (PyCFunction) _wrap_wxMenuItem_GetMarginWidth, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetFont", (PyCFunction) _wrap_wxMenuItem_GetFont, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetBitmap", (PyCFunction) _wrap_wxMenuItem_GetBitmap, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetBackgroundColour", (PyCFunction) _wrap_wxMenuItem_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_SetAccel", (PyCFunction) _wrap_wxMenuItem_SetAccel, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_GetAccel", (PyCFunction) _wrap_wxMenuItem_GetAccel, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_GetHelp", (PyCFunction) _wrap_wxMenuItem_GetHelp, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_SetHelp", (PyCFunction) _wrap_wxMenuItem_SetHelp, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_Toggle", (PyCFunction) _wrap_wxMenuItem_Toggle, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_IsChecked", (PyCFunction) _wrap_wxMenuItem_IsChecked, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuItem_Check", (PyCFunction) _wrap_wxMenuItem_Check, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_IsEnabled", (PyCFunction) _wrap_wxMenuItem_IsEnabled, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuItem_Enable", (PyCFunction) _wrap_wxMenuItem_Enable, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetHelp", (PyCFunction) _wrap_wxMenuItem_SetHelp, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetHelp", (PyCFunction) _wrap_wxMenuItem_GetHelp, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuItem_GetSubMenu", (PyCFunction) _wrap_wxMenuItem_GetSubMenu, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_SetId", (PyCFunction) _wrap_wxMenuItem_SetId, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_GetId", (PyCFunction) _wrap_wxMenuItem_GetId, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_SetSubMenu", (PyCFunction) _wrap_wxMenuItem_SetSubMenu, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuItem_IsSubMenu", (PyCFunction) _wrap_wxMenuItem_IsSubMenu, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuItem_IsCheckable", (PyCFunction) _wrap_wxMenuItem_IsCheckable, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_IsChecked", (PyCFunction) _wrap_wxMenuItem_IsChecked, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuItem_IsEnabled", (PyCFunction) _wrap_wxMenuItem_IsEnabled, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_SetCheckable", (PyCFunction) _wrap_wxMenuItem_SetCheckable, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_GetText", (PyCFunction) _wrap_wxMenuItem_GetText, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_GetLabel", (PyCFunction) _wrap_wxMenuItem_GetLabel, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_SetText", (PyCFunction) _wrap_wxMenuItem_SetText, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuItem_IsSeparator", (PyCFunction) _wrap_wxMenuItem_IsSeparator, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_GetId", (PyCFunction) _wrap_wxMenuItem_GetId, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_SetId", (PyCFunction) _wrap_wxMenuItem_SetId, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuItem_GetMenu", (PyCFunction) _wrap_wxMenuItem_GetMenu, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxMenuItem", (PyCFunction) _wrap_new_wxMenuItem, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_Remove", (PyCFunction) _wrap_wxMenuBar_Remove, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_Replace", (PyCFunction) _wrap_wxMenuBar_Replace, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_Refresh", (PyCFunction) _wrap_wxMenuBar_Refresh, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_GetMenu", (PyCFunction) _wrap_wxMenuBar_GetMenu, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_GetMenuCount", (PyCFunction) _wrap_wxMenuBar_GetMenuCount, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_SetLabelTop", (PyCFunction) _wrap_wxMenuBar_SetLabelTop, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_GetLabelTop", (PyCFunction) _wrap_wxMenuBar_GetLabelTop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_GetHelpString", (PyCFunction) _wrap_wxMenuBar_GetHelpString, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_SetHelpString", (PyCFunction) _wrap_wxMenuBar_SetHelpString, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_GetLabel", (PyCFunction) _wrap_wxMenuBar_GetLabel, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_GetHelpString", (PyCFunction) _wrap_wxMenuBar_GetHelpString, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_EnableTop", (PyCFunction) _wrap_wxMenuBar_EnableTop, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_SetLabel", (PyCFunction) _wrap_wxMenuBar_SetLabel, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_FindItemForId", (PyCFunction) _wrap_wxMenuBar_FindItemForId, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_FindMenuItem", (PyCFunction) _wrap_wxMenuBar_FindMenuItem, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_IsEnabled", (PyCFunction) _wrap_wxMenuBar_IsEnabled, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_IsChecked", (PyCFunction) _wrap_wxMenuBar_IsChecked, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenuBar_Enable", (PyCFunction) _wrap_wxMenuBar_Enable, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_Check", (PyCFunction) _wrap_wxMenuBar_Check, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_Enable", (PyCFunction) _wrap_wxMenuBar_Enable, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_FindItemById", (PyCFunction) _wrap_wxMenuBar_FindItemById, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_FindMenuItem", (PyCFunction) _wrap_wxMenuBar_FindMenuItem, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_GetLabelTop", (PyCFunction) _wrap_wxMenuBar_GetLabelTop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_SetLabelTop", (PyCFunction) _wrap_wxMenuBar_SetLabelTop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_EnableTop", (PyCFunction) _wrap_wxMenuBar_EnableTop, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_Remove", (PyCFunction) _wrap_wxMenuBar_Remove, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_Replace", (PyCFunction) _wrap_wxMenuBar_Replace, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_GetMenu", (PyCFunction) _wrap_wxMenuBar_GetMenu, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_GetMenuCount", (PyCFunction) _wrap_wxMenuBar_GetMenuCount, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenuBar_Insert", (PyCFunction) _wrap_wxMenuBar_Insert, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenuBar_Append", (PyCFunction) _wrap_wxMenuBar_Append, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxMenuBar", (PyCFunction) _wrap_new_wxMenuBar, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetParent", (PyCFunction) _wrap_wxMenu_GetParent, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_SetParent", (PyCFunction) _wrap_wxMenu_SetParent, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_IsAttached", (PyCFunction) _wrap_wxMenu_IsAttached, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetStyle", (PyCFunction) _wrap_wxMenu_GetStyle, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetInvokingWindow", (PyCFunction) _wrap_wxMenu_GetInvokingWindow, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_SetInvokingWindow", (PyCFunction) _wrap_wxMenu_SetInvokingWindow, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetEventHandler", (PyCFunction) _wrap_wxMenu_GetEventHandler, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_SetEventHandler", (PyCFunction) _wrap_wxMenu_SetEventHandler, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetMenuItems", (PyCFunction) _wrap_wxMenu_GetMenuItems, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetMenuItemCount", (PyCFunction) _wrap_wxMenu_GetMenuItemCount, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_DestroyItem", (PyCFunction) _wrap_wxMenu_DestroyItem, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_DestroyId", (PyCFunction) _wrap_wxMenu_DestroyId, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_Destroy", (PyCFunction) _wrap_wxMenu_Destroy, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_RemoveItem", (PyCFunction) _wrap_wxMenu_RemoveItem, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_Remove", (PyCFunction) _wrap_wxMenu_Remove, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_Insert", (PyCFunction) _wrap_wxMenu_Insert, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_DeleteItem", (PyCFunction) _wrap_wxMenu_DeleteItem, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_Delete", (PyCFunction) _wrap_wxMenu_Delete, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_UpdateUI", (PyCFunction) _wrap_wxMenu_UpdateUI, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenu_SetLabel", (PyCFunction) _wrap_wxMenu_SetLabel, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenu_IsEnabled", (PyCFunction) _wrap_wxMenu_IsEnabled, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenu_IsChecked", (PyCFunction) _wrap_wxMenu_IsChecked, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_SetHelpString", (PyCFunction) _wrap_wxMenu_SetHelpString, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenu_GetLabel", (PyCFunction) _wrap_wxMenu_GetLabel, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_GetHelpString", (PyCFunction) _wrap_wxMenu_GetHelpString, METH_VARARGS | METH_KEYWORDS },
-	 { "wxMenu_FindItemForId", (PyCFunction) _wrap_wxMenu_FindItemForId, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_SetLabel", (PyCFunction) _wrap_wxMenu_SetLabel, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_GetLabel", (PyCFunction) _wrap_wxMenu_GetLabel, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_SetTitle", (PyCFunction) _wrap_wxMenu_SetTitle, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_GetTitle", (PyCFunction) _wrap_wxMenu_GetTitle, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_FindItemById", (PyCFunction) _wrap_wxMenu_FindItemById, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_FindItem", (PyCFunction) _wrap_wxMenu_FindItem, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_IsEnabled", (PyCFunction) _wrap_wxMenu_IsEnabled, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_Enable", (PyCFunction) _wrap_wxMenu_Enable, METH_VARARGS | METH_KEYWORDS },
+	 { "wxMenu_IsChecked", (PyCFunction) _wrap_wxMenu_IsChecked, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_Check", (PyCFunction) _wrap_wxMenu_Check, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_Break", (PyCFunction) _wrap_wxMenu_Break, METH_VARARGS | METH_KEYWORDS },
 	 { "wxMenu_AppendSeparator", (PyCFunction) _wrap_wxMenu_AppendSeparator, METH_VARARGS | METH_KEYWORDS },
@@ -8004,6 +8471,8 @@ static PyMethodDef windowscMethods[] = {
 	 { "wxPanel_GetDefaultItem", (PyCFunction) _wrap_wxPanel_GetDefaultItem, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPanel_InitDialog", (PyCFunction) _wrap_wxPanel_InitDialog, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxPanel", (PyCFunction) _wrap_new_wxPanel, METH_VARARGS | METH_KEYWORDS },
+	 { "wxWindow_GetDropTarget", (PyCFunction) _wrap_wxWindow_GetDropTarget, METH_VARARGS | METH_KEYWORDS },
+	 { "wxWindow_SetDropTarget", (PyCFunction) _wrap_wxWindow_SetDropTarget, METH_VARARGS | METH_KEYWORDS },
 	 { "wxWindow_SetValidator", (PyCFunction) _wrap_wxWindow_SetValidator, METH_VARARGS | METH_KEYWORDS },
 	 { "wxWindow_GetValidator", (PyCFunction) _wrap_wxWindow_GetValidator, METH_VARARGS | METH_KEYWORDS },
 	 { "wxWindow_SetSizer", (PyCFunction) _wrap_wxWindow_SetSizer, METH_VARARGS | METH_KEYWORDS },
@@ -8143,6 +8612,8 @@ static PyMethodDef windowscMethods[] = {
 static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxAcceleratorTable","_class_wxAcceleratorTable",0},
     { "_signed_long","_long",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -8150,7 +8621,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxMenuBar",SwigwxMenuBarTowxEvtHandler},
     { "_class_wxEvtHandler","_wxMenuBar",SwigwxMenuBarTowxEvtHandler},
@@ -8174,12 +8647,17 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMask","_class_wxMask",0},
     { "_wxPen","_class_wxPen",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_long","_wxDash",0},
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -8194,9 +8672,15 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_wxDialog",SwigwxDialogTowxPanel},
     { "_wxPanel","_class_wxPanel",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
+    { "_class_wxFileDataObject","_wxFileDataObject",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxBrush","_class_wxBrush",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -8212,12 +8696,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxValidator","_class_wxPyValidator",SwigwxPyValidatorTowxValidator},
     { "_class_wxValidator","_wxPyValidator",SwigwxPyValidatorTowxValidator},
     { "_class_wxValidator","_wxValidator",0},
+    { "_wxDropTarget","_class_wxDropTarget",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
     { "_unsigned_long","_wxDash",0},
     { "_unsigned_long","_long",0},
     { "_class_wxRect","_wxRect",0},
@@ -8229,20 +8717,25 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPanel","_class_wxDialog",SwigwxDialogTowxPanel},
     { "_class_wxPanel","_wxDialog",SwigwxDialogTowxPanel},
     { "_class_wxPanel","_wxPanel",0},
+    { "_signed_int","_wxCoord",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},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_wxScreenDC","_class_wxScreenDC",0},
     { "_WXTYPE","_short",0},
     { "_WXTYPE","_signed_short",0},
     { "_WXTYPE","_unsigned_short",0},
+    { "_class_wxDropTarget","_wxDropTarget",0},
     { "_class_wxBrush","_wxBrush",0},
     { "_unsigned_short","_WXTYPE",0},
     { "_unsigned_short","_short",0},
+    { "_class_wxWindow","_class_wxMenuBar",SwigwxMenuBarTowxWindow},
+    { "_class_wxWindow","_wxMenuBar",SwigwxMenuBarTowxWindow},
     { "_class_wxWindow","_class_wxScrolledWindow",SwigwxScrolledWindowTowxWindow},
     { "_class_wxWindow","_wxScrolledWindow",SwigwxScrolledWindowTowxWindow},
     { "_class_wxWindow","_class_wxDialog",SwigwxDialogTowxWindow},
@@ -8251,6 +8744,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindow","_wxPanel",SwigwxPanelTowxWindow},
     { "_class_wxWindow","_wxWindow",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
     { "_wxClientDC","_class_wxClientDC",0},
@@ -8263,10 +8757,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxWindowDC","_wxWindowDC",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_wxDropSource","_class_wxDropSource",0},
     { "_class_wxMenu","_wxMenu",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -8279,6 +8776,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_short","_unsigned_short",0},
     { "_short","_signed_short",0},
     { "_class_wxImageList","_wxImageList",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -8286,6 +8784,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_int",0},
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -8297,20 +8796,34 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxRegionIterator","_class_wxRegionIterator",0},
     { "_class_wxPrinterDC","_wxPrinterDC",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
     { "_wxValidator","_class_wxPyValidator",SwigwxPyValidatorTowxValidator},
     { "_wxValidator","_wxPyValidator",SwigwxPyValidatorTowxValidator},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxDropSource","_wxDropSource",0},
     { "_class_wxIcon","_wxIcon",0},
     { "_class_wxColour","_wxColour",0},
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_wxRegion","_class_wxRegion",0},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
     { "_class_wxBusyInfo","_wxBusyInfo",0},
     { "_class_wxClientDC","_wxClientDC",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
     { "_wxMenuBar","_class_wxMenuBar",0},
     { "_wxEvtHandler","_class_wxMenuBar",SwigwxMenuBarTowxEvtHandler},
     { "_wxEvtHandler","_wxMenuBar",SwigwxMenuBarTowxEvtHandler},
@@ -8334,6 +8847,10 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxDash","_long",0},
     { "_class_wxScrolledWindow","_wxScrolledWindow",0},
     { "_class_wxPalette","_wxPalette",0},
+    { "_wxFileDataObject","_class_wxFileDataObject",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
+    { "_wxWindow","_class_wxMenuBar",SwigwxMenuBarTowxWindow},
+    { "_wxWindow","_wxMenuBar",SwigwxMenuBarTowxWindow},
     { "_wxWindow","_class_wxScrolledWindow",SwigwxScrolledWindowTowxWindow},
     { "_wxWindow","_wxScrolledWindow",SwigwxScrolledWindowTowxWindow},
     { "_wxWindow","_class_wxDialog",SwigwxDialogTowxWindow},
diff --git a/utils/wxPython/src/msw/windows.py b/utils/wxPython/src/msw/windows.py
index 227c5bc962..e4b71736f5 100644
--- a/utils/wxPython/src/msw/windows.py
+++ b/utils/wxPython/src/msw/windows.py
@@ -4,6 +4,8 @@ import windowsc
 from misc import *
 
 from gdi import *
+
+from clip_dnd import *
 import wx
 
 def wxDLG_PNT(win, point_or_x, y=None):
@@ -456,6 +458,14 @@ class wxWindowPtr(wxEvtHandlerPtr):
     def SetValidator(self, *_args, **_kwargs):
         val = apply(windowsc.wxWindow_SetValidator,(self,) + _args, _kwargs)
         return val
+    def SetDropTarget(self, *_args, **_kwargs):
+        val = apply(windowsc.wxWindow_SetDropTarget,(self,) + _args, _kwargs)
+        _args[0].thisown = 0
+        return val
+    def GetDropTarget(self, *_args, **_kwargs):
+        val = apply(windowsc.wxWindow_GetDropTarget,(self,) + _args, _kwargs)
+        if val: val = wxDropTargetPtr(val) 
+        return val
     def __repr__(self):
         return "<C wxWindow instance at %s>" % (self.this,)
 class wxWindow(wxWindowPtr):
@@ -618,46 +628,102 @@ class wxMenuPtr(wxEvtHandlerPtr):
     def Check(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_Check,(self,) + _args, _kwargs)
         return val
+    def IsChecked(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_IsChecked,(self,) + _args, _kwargs)
+        return val
     def Enable(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_Enable,(self,) + _args, _kwargs)
         return val
+    def IsEnabled(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_IsEnabled,(self,) + _args, _kwargs)
+        return val
     def FindItem(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_FindItem,(self,) + _args, _kwargs)
         return val
+    def FindItemById(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_FindItemById,(self,) + _args, _kwargs)
+        if val: val = wxMenuItemPtr(val) 
+        return val
     def GetTitle(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_GetTitle,(self,) + _args, _kwargs)
         return val
     def SetTitle(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_SetTitle,(self,) + _args, _kwargs)
         return val
-    def FindItemForId(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenu_FindItemForId,(self,) + _args, _kwargs)
-        if val: val = wxMenuItemPtr(val) 
+    def GetLabel(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetLabel,(self,) + _args, _kwargs)
+        return val
+    def SetLabel(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_SetLabel,(self,) + _args, _kwargs)
         return val
     def GetHelpString(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_GetHelpString,(self,) + _args, _kwargs)
         return val
-    def GetLabel(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenu_GetLabel,(self,) + _args, _kwargs)
-        return val
     def SetHelpString(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_SetHelpString,(self,) + _args, _kwargs)
         return val
-    def IsChecked(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenu_IsChecked,(self,) + _args, _kwargs)
+    def UpdateUI(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_UpdateUI,(self,) + _args, _kwargs)
         return val
-    def IsEnabled(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenu_IsEnabled,(self,) + _args, _kwargs)
+    def Delete(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_Delete,(self,) + _args, _kwargs)
         return val
-    def SetLabel(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenu_SetLabel,(self,) + _args, _kwargs)
+    def DeleteItem(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_DeleteItem,(self,) + _args, _kwargs)
         return val
-    def UpdateUI(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenu_UpdateUI,(self,) + _args, _kwargs)
+    def Insert(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_Insert,(self,) + _args, _kwargs)
+        return val
+    def Remove(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_Remove,(self,) + _args, _kwargs)
+        if val: val = wxMenuItemPtr(val) 
+        return val
+    def RemoveItem(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_RemoveItem,(self,) + _args, _kwargs)
+        if val: val = wxMenuItemPtr(val) 
         return val
     def Destroy(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenu_Destroy,(self,) + _args, _kwargs)
         return val
+    def DestroyId(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_DestroyId,(self,) + _args, _kwargs)
+        return val
+    def DestroyItem(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_DestroyItem,(self,) + _args, _kwargs)
+        return val
+    def GetMenuItemCount(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetMenuItemCount,(self,) + _args, _kwargs)
+        return val
+    def GetMenuItems(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetMenuItems,(self,) + _args, _kwargs)
+        return val
+    def SetEventHandler(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_SetEventHandler,(self,) + _args, _kwargs)
+        return val
+    def GetEventHandler(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetEventHandler,(self,) + _args, _kwargs)
+        if val: val = wxEvtHandlerPtr(val) 
+        return val
+    def SetInvokingWindow(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_SetInvokingWindow,(self,) + _args, _kwargs)
+        return val
+    def GetInvokingWindow(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetInvokingWindow,(self,) + _args, _kwargs)
+        if val: val = wxWindowPtr(val) 
+        return val
+    def GetStyle(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetStyle,(self,) + _args, _kwargs)
+        return val
+    def IsAttached(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_IsAttached,(self,) + _args, _kwargs)
+        return val
+    def SetParent(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_SetParent,(self,) + _args, _kwargs)
+        return val
+    def GetParent(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenu_GetParent,(self,) + _args, _kwargs)
+        if val: val = wxMenuPtr(val) 
+        return val
     def __repr__(self):
         return "<C wxMenu instance at %s>" % (self.this,)
 class wxMenu(wxMenuPtr):
@@ -668,70 +734,70 @@ class wxMenu(wxMenuPtr):
 
 
 
-class wxMenuBarPtr(wxEvtHandlerPtr):
+class wxMenuBarPtr(wxWindowPtr):
     def __init__(self,this):
         self.this = this
         self.thisown = 0
     def Append(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_Append,(self,) + _args, _kwargs)
         return val
-    def Check(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_Check,(self,) + _args, _kwargs)
+    def Insert(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_Insert,(self,) + _args, _kwargs)
+        return val
+    def GetMenuCount(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_GetMenuCount,(self,) + _args, _kwargs)
+        return val
+    def GetMenu(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_GetMenu,(self,) + _args, _kwargs)
+        if val: val = wxMenuPtr(val) 
+        return val
+    def Replace(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_Replace,(self,) + _args, _kwargs)
+        if val: val = wxMenuPtr(val) 
+        return val
+    def Remove(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_Remove,(self,) + _args, _kwargs)
+        if val: val = wxMenuPtr(val) 
+        return val
+    def EnableTop(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_EnableTop,(self,) + _args, _kwargs)
+        return val
+    def SetLabelTop(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_SetLabelTop,(self,) + _args, _kwargs)
+        return val
+    def GetLabelTop(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_GetLabelTop,(self,) + _args, _kwargs)
+        return val
+    def FindMenuItem(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_FindMenuItem,(self,) + _args, _kwargs)
+        return val
+    def FindItemById(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_FindItemById,(self,) + _args, _kwargs)
+        if val: val = wxMenuItemPtr(val) 
         return val
     def Enable(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_Enable,(self,) + _args, _kwargs)
         return val
+    def Check(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_Check,(self,) + _args, _kwargs)
+        return val
     def IsChecked(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_IsChecked,(self,) + _args, _kwargs)
         return val
     def IsEnabled(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_IsEnabled,(self,) + _args, _kwargs)
         return val
-    def FindMenuItem(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_FindMenuItem,(self,) + _args, _kwargs)
-        return val
-    def FindItemForId(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_FindItemForId,(self,) + _args, _kwargs)
-        if val: val = wxMenuItemPtr(val) 
-        return val
     def SetLabel(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_SetLabel,(self,) + _args, _kwargs)
         return val
-    def EnableTop(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_EnableTop,(self,) + _args, _kwargs)
-        return val
-    def GetHelpString(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_GetHelpString,(self,) + _args, _kwargs)
-        return val
     def GetLabel(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_GetLabel,(self,) + _args, _kwargs)
         return val
     def SetHelpString(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuBar_SetHelpString,(self,) + _args, _kwargs)
         return val
-    def GetLabelTop(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_GetLabelTop,(self,) + _args, _kwargs)
-        return val
-    def SetLabelTop(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_SetLabelTop,(self,) + _args, _kwargs)
-        return val
-    def GetMenuCount(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_GetMenuCount,(self,) + _args, _kwargs)
-        return val
-    def GetMenu(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_GetMenu,(self,) + _args, _kwargs)
-        if val: val = wxMenuPtr(val) 
-        return val
-    def Refresh(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_Refresh,(self,) + _args, _kwargs)
-        return val
-    def Replace(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_Replace,(self,) + _args, _kwargs)
-        if val: val = wxMenuPtr(val) 
-        return val
-    def Remove(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuBar_Remove,(self,) + _args, _kwargs)
-        if val: val = wxMenuPtr(val) 
+    def GetHelpString(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuBar_GetHelpString,(self,) + _args, _kwargs)
         return val
     def __repr__(self):
         return "<C wxMenuBar instance at %s>" % (self.this,)
@@ -747,14 +813,30 @@ class wxMenuItemPtr :
     def __init__(self,this):
         self.this = this
         self.thisown = 0
+    def GetMenu(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_GetMenu,(self,) + _args, _kwargs)
+        if val: val = wxMenuPtr(val) 
+        return val
+    def SetId(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_SetId,(self,) + _args, _kwargs)
+        return val
+    def GetId(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_GetId,(self,) + _args, _kwargs)
+        return val
     def IsSeparator(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuItem_IsSeparator,(self,) + _args, _kwargs)
         return val
-    def IsEnabled(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_IsEnabled,(self,) + _args, _kwargs)
+    def SetText(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_SetText,(self,) + _args, _kwargs)
         return val
-    def IsChecked(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_IsChecked,(self,) + _args, _kwargs)
+    def GetLabel(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_GetLabel,(self,) + _args, _kwargs)
+        return val
+    def GetText(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_GetText,(self,) + _args, _kwargs)
+        return val
+    def SetCheckable(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_SetCheckable,(self,) + _args, _kwargs)
         return val
     def IsCheckable(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuItem_IsCheckable,(self,) + _args, _kwargs)
@@ -762,76 +844,40 @@ class wxMenuItemPtr :
     def IsSubMenu(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuItem_IsSubMenu,(self,) + _args, _kwargs)
         return val
-    def GetId(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetId,(self,) + _args, _kwargs)
-        return val
-    def SetId(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetId,(self,) + _args, _kwargs)
+    def SetSubMenu(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_SetSubMenu,(self,) + _args, _kwargs)
         return val
     def GetSubMenu(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuItem_GetSubMenu,(self,) + _args, _kwargs)
         if val: val = wxMenuPtr(val) 
         return val
-    def GetHelp(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetHelp,(self,) + _args, _kwargs)
-        return val
-    def SetHelp(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetHelp,(self,) + _args, _kwargs)
-        return val
     def Enable(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuItem_Enable,(self,) + _args, _kwargs)
         return val
+    def IsEnabled(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_IsEnabled,(self,) + _args, _kwargs)
+        return val
     def Check(self, *_args, **_kwargs):
         val = apply(windowsc.wxMenuItem_Check,(self,) + _args, _kwargs)
         return val
-    def GetBackgroundColour(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetBackgroundColour,(self,) + _args, _kwargs)
-        if val: val = wxColourPtr(val) 
-        return val
-    def GetBitmap(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetBitmap,(self,) + _args, _kwargs)
-        if val: val = wxBitmapPtr(val) ; val.thisown = 1
-        return val
-    def GetFont(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetFont,(self,) + _args, _kwargs)
-        if val: val = wxFontPtr(val) 
-        return val
-    def GetMarginWidth(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetMarginWidth,(self,) + _args, _kwargs)
-        return val
-    def GetTextColour(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetTextColour,(self,) + _args, _kwargs)
-        if val: val = wxColourPtr(val) 
-        return val
-    def SetBackgroundColour(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetBackgroundColour,(self,) + _args, _kwargs)
-        return val
-    def SetBitmaps(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetBitmaps,(self,) + _args, _kwargs)
-        return val
-    def SetFont(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetFont,(self,) + _args, _kwargs)
-        return val
-    def SetMarginWidth(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetMarginWidth,(self,) + _args, _kwargs)
-        return val
-    def SetText(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetText,(self,) + _args, _kwargs)
+    def IsChecked(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_IsChecked,(self,) + _args, _kwargs)
         return val
-    def GetText(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_GetText,(self,) + _args, _kwargs)
+    def Toggle(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_Toggle,(self,) + _args, _kwargs)
         return val
-    def SetTextColour(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetTextColour,(self,) + _args, _kwargs)
+    def SetHelp(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_SetHelp,(self,) + _args, _kwargs)
         return val
-    def DeleteSubMenu(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_DeleteSubMenu,(self,) + _args, _kwargs)
+    def GetHelp(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_GetHelp,(self,) + _args, _kwargs)
         return val
-    def SetCheckable(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetCheckable,(self,) + _args, _kwargs)
+    def GetAccel(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_GetAccel,(self,) + _args, _kwargs)
+        if val: val = wxAcceleratorEntryPtr(val) 
         return val
-    def SetSubMenu(self, *_args, **_kwargs):
-        val = apply(windowsc.wxMenuItem_SetSubMenu,(self,) + _args, _kwargs)
+    def SetAccel(self, *_args, **_kwargs):
+        val = apply(windowsc.wxMenuItem_SetAccel,(self,) + _args, _kwargs)
         return val
     def __repr__(self):
         return "<C wxMenuItem instance at %s>" % (self.this,)
diff --git a/utils/wxPython/src/msw/windows2.cpp b/utils/wxPython/src/msw/windows2.cpp
index 8b150e16e3..675558e4e2 100644
--- a/utils/wxPython/src/msw/windows2.cpp
+++ b/utils/wxPython/src/msw/windows2.cpp
@@ -5388,7 +5388,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -5396,6 +5398,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxTaskBarIcon",SwigwxTaskBarIconTowxEvtHandler},
@@ -5418,6 +5421,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -5426,12 +5430,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -5449,19 +5457,25 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_class_wxGrid","_wxGrid",0},
     { "_wxColour","_class_wxColour",0},
     { "_class_wxDialog","_wxDialog",0},
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_class_wxNotebookEvent","_wxNotebookEvent",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -5504,11 +5518,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticBitmap","_wxStaticBitmap",0},
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -5534,6 +5550,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -5541,6 +5558,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -5561,6 +5579,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxSplitterWindow","_class_wxSplitterWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxBusyInfo","_class_wxBusyInfo",0},
@@ -5590,6 +5609,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxControl","_wxNotebook",SwigwxNotebookTowxControl},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -5610,6 +5630,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxBitmapButton","_wxBitmapButton",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
     { "_class_wxNotebook","_wxNotebook",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -5618,6 +5639,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -5639,6 +5661,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -5651,7 +5674,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_wxRegion","_class_wxRegion",0},
     { "_class_wxSplitterWindow","_wxSplitterWindow",0},
@@ -5668,6 +5700,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxGridCell","_wxGridCell",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
@@ -5691,6 +5724,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMoveEvent","_class_wxMoveEvent",0},
     { "_class_wxPalette","_wxPalette",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxSplitterWindow",SwigwxSplitterWindowTowxWindow},
     { "_wxWindow","_wxSplitterWindow",SwigwxSplitterWindowTowxWindow},
     { "_wxWindow","_class_wxNotebook",SwigwxNotebookTowxWindow},
diff --git a/utils/wxPython/src/msw/windows2.py b/utils/wxPython/src/msw/windows2.py
index 14287e7657..c79983a175 100644
--- a/utils/wxPython/src/msw/windows2.py
+++ b/utils/wxPython/src/msw/windows2.py
@@ -7,6 +7,8 @@ from gdi import *
 
 from windows import *
 
+from clip_dnd import *
+
 from controls import *
 
 from events import *
diff --git a/utils/wxPython/src/msw/windows3.cpp b/utils/wxPython/src/msw/windows3.cpp
index 0cbe60ffca..d4640d16ce 100644
--- a/utils/wxPython/src/msw/windows3.cpp
+++ b/utils/wxPython/src/msw/windows3.cpp
@@ -1745,7 +1745,9 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxActivateEvent","_wxActivateEvent",0},
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -1753,6 +1755,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxEvtHandler","_class_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxEvtHandler},
@@ -1769,6 +1772,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -1777,17 +1781,21 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_wxSashWindow","_class_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxSashWindow},
     { "_wxSashWindow","_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxSashWindow},
     { "_wxSashWindow","_class_wxSashWindow",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_class_wxSashEvent","_wxSashEvent",0},
     { "_wxDC","_class_wxDC",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
     { "_wxSashLayoutWindow","_class_wxSashLayoutWindow",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -1804,9 +1812,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_class_wxGrid","_wxGrid",0},
     { "_wxColour","_class_wxColour",0},
@@ -1814,15 +1824,19 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_class_wxLayoutAlgorithm","_wxLayoutAlgorithm",0},
     { "_wxBrush","_class_wxBrush",0},
     { "_class_wxNotebookEvent","_wxNotebookEvent",0},
     { "_wxMiniFrame","_class_wxMiniFrame",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_class_wxSashWindow","_class_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxSashWindow},
     { "_class_wxSashWindow","_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxSashWindow},
     { "_class_wxSashWindow","_wxSashWindow",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -1866,11 +1880,13 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
     { "_wxCalculateLayoutEvent","_class_wxCalculateLayoutEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_wxStaticText","_class_wxStaticText",0},
@@ -1895,6 +1911,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCheckBox","_wxCheckBox",0},
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -1902,6 +1919,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -1922,6 +1940,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxSplitterWindow","_class_wxSplitterWindow",0},
     { "_class_wxStaticText","_wxStaticText",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxSashEvent","_class_wxSashEvent",0},
@@ -1952,6 +1971,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -1976,6 +1996,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxFrame","_class_wxFrame",0},
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
     { "_class_wxNotebook","_wxNotebook",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -1984,6 +2005,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_signed_int",0},
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -2006,6 +2028,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
@@ -2016,7 +2039,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxScreenDC","_wxScreenDC",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxRegion","_class_wxRegion",0},
@@ -2032,6 +2064,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCommandEvent","_wxCommandEvent",0},
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxGridCell","_wxGridCell",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
@@ -2053,6 +2086,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxQueryLayoutInfoEvent","_wxQueryLayoutInfoEvent",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
     { "_wxMDIClientWindow","_class_wxMDIClientWindow",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_wxWindow","_class_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxWindow},
     { "_wxWindow","_wxSashLayoutWindow",SwigwxSashLayoutWindowTowxWindow},
     { "_wxWindow","_class_wxSashWindow",SwigwxSashWindowTowxWindow},
diff --git a/utils/wxPython/src/msw/windows3.py b/utils/wxPython/src/msw/windows3.py
index 82ea7fbd95..bd38484999 100644
--- a/utils/wxPython/src/msw/windows3.py
+++ b/utils/wxPython/src/msw/windows3.py
@@ -7,6 +7,8 @@ from gdi import *
 
 from windows import *
 
+from clip_dnd import *
+
 from windows2 import *
 
 from controls import *
diff --git a/utils/wxPython/src/msw/wx.cpp b/utils/wxPython/src/msw/wx.cpp
index f1b1a5a335..ae08397d81 100644
--- a/utils/wxPython/src/msw/wx.cpp
+++ b/utils/wxPython/src/msw/wx.cpp
@@ -614,11 +614,9 @@ PyObject *ptrfree(PyObject *_PTRVALUE) {
 }
 
 
-class __wxPyCleanup {
-public:
-    __wxPyCleanup()  { }
-    ~__wxPyCleanup() { wxApp::CleanUp(); }
-};
+    void wxApp_CleanUp() {
+        wxApp::CleanUp();
+    }
 
 extern "C" SWIGEXPORT(void) initwindowsc();
 extern "C" SWIGEXPORT(void) initwindows2c();
@@ -636,6 +634,7 @@ extern "C" SWIGEXPORT(void) initwindows3c();
 extern "C" SWIGEXPORT(void) initimagec();
 extern "C" SWIGEXPORT(void) initprintfwc();
 extern "C" SWIGEXPORT(void) initsizersc();
+extern "C" SWIGEXPORT(void) initclip_dndc();
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -862,6 +861,23 @@ static PyObject *_wrap_wxPyDefaultSize_get() {
     return pyobj;
 }
 
+static PyObject *_wrap_wxApp_CleanUp(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    char *_kwnames[] = {  NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxApp_CleanUp",_kwnames)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxApp_CleanUp();
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 static void *SwigwxPyAppTowxEvtHandler(void *ptr) {
     wxPyApp *src;
     wxEvtHandler *dest;
@@ -1573,61 +1589,7 @@ static PyObject *_wrap_wxPyApp_GetStdIcon(PyObject *self, PyObject *args, PyObje
     return _resultobj;
 }
 
-#define new___wxPyCleanup() (new __wxPyCleanup())
-static PyObject *_wrap_new___wxPyCleanup(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    __wxPyCleanup * _result;
-    char *_kwnames[] = {  NULL };
-    char _ptemp[128];
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new___wxPyCleanup",_kwnames)) 
-        return NULL;
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        _result = (__wxPyCleanup *)new___wxPyCleanup();
-
-    wxPy_END_ALLOW_THREADS;
-}    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"___wxPyCleanup_p");
-        _resultobj = Py_BuildValue("s",_ptemp);
-    } else {
-        Py_INCREF(Py_None);
-        _resultobj = Py_None;
-    }
-    return _resultobj;
-}
-
-#define delete___wxPyCleanup(_swigobj) (delete _swigobj)
-static PyObject *_wrap_delete___wxPyCleanup(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    __wxPyCleanup * _arg0;
-    PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:delete___wxPyCleanup",_kwnames,&_argo0)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"___wxPyCleanup_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of delete___wxPyCleanup. Expected ___wxPyCleanup_p.");
-        return NULL;
-        }
-    }
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        delete___wxPyCleanup(_arg0);
-
-    wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
-    return _resultobj;
-}
-
 static PyMethodDef wxcMethods[] = {
-	 { "delete___wxPyCleanup", (PyCFunction) _wrap_delete___wxPyCleanup, METH_VARARGS | METH_KEYWORDS },
-	 { "new___wxPyCleanup", (PyCFunction) _wrap_new___wxPyCleanup, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPyApp_GetStdIcon", (PyCFunction) _wrap_wxPyApp_GetStdIcon, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPyApp_SetVendorName", (PyCFunction) _wrap_wxPyApp_SetVendorName, METH_VARARGS | METH_KEYWORDS },
 	 { "wxPyApp_SetTopWindow", (PyCFunction) _wrap_wxPyApp_SetTopWindow, METH_VARARGS | METH_KEYWORDS },
@@ -1651,6 +1613,7 @@ static PyMethodDef wxcMethods[] = {
 	 { "wxPyApp_GetAppName", (PyCFunction) _wrap_wxPyApp_GetAppName, METH_VARARGS | METH_KEYWORDS },
 	 { "delete_wxPyApp", (PyCFunction) _wrap_delete_wxPyApp, METH_VARARGS | METH_KEYWORDS },
 	 { "new_wxPyApp", (PyCFunction) _wrap_new_wxPyApp, METH_VARARGS | METH_KEYWORDS },
+	 { "wxApp_CleanUp", (PyCFunction) _wrap_wxApp_CleanUp, METH_VARARGS | METH_KEYWORDS },
 	 { "_wxSetDictionary", (PyCFunction) __wxSetDictionary, METH_VARARGS | METH_KEYWORDS },
 	 { "_wxStart", (PyCFunction) __wxStart, METH_VARARGS | METH_KEYWORDS },
 	 { "ptrmap", (PyCFunction) _wrap_ptrmap, METH_VARARGS | METH_KEYWORDS },
@@ -1675,9 +1638,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_signed_long","_long",0},
     { "_wxMenuEvent","_class_wxMenuEvent",0},
     { "_class_wxJPEGHandler","_wxJPEGHandler",0},
+    { "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
     { "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
     { "_wxBMPHandler","_class_wxBMPHandler",0},
     { "_wxImage","_class_wxImage",0},
+    { "_wxPrintQuality","_wxCoord",0},
     { "_wxPrintQuality","_int",0},
     { "_wxPrintQuality","_signed_int",0},
     { "_wxPrintQuality","_unsigned_int",0},
@@ -1685,9 +1650,10 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintQuality","_uint",0},
     { "_wxPrintQuality","_EBool",0},
     { "_wxPrintQuality","_size_t",0},
+    { "_class_wxCustomDataObject","_wxCustomDataObject",0},
     { "_wxFontData","_class_wxFontData",0},
-    { "___wxPyCleanup","_class___wxPyCleanup",0},
     { "_class_wxRegionIterator","_wxRegionIterator",0},
+    { "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
     { "_class_wxMenuBar","_wxMenuBar",0},
     { "_class_wxPyTreeItemData","_wxPyTreeItemData",0},
     { "_class_wxStaticBoxSizer","_wxStaticBoxSizer",0},
@@ -1712,6 +1678,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPen","_class_wxPen",0},
     { "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
     { "_byte","_unsigned_char",0},
+    { "_wxDataObject","_class_wxDataObject",0},
     { "_wxStaticBox","_class_wxStaticBox",0},
     { "_wxChoice","_class_wxChoice",0},
     { "_wxSlider","_class_wxSlider",0},
@@ -1721,16 +1688,19 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_long","_unsigned_long",0},
     { "_long","_signed_long",0},
     { "_wxImageList","_class_wxImageList",0},
+    { "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
     { "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
     { "_wxBitmapButton","_class_wxBitmapButton",0},
     { "_wxSashWindow","_class_wxSashWindow",0},
     { "_class_wxSizer","_wxSizer",0},
     { "_class_wxPrintDialogData","_wxPrintDialogData",0},
     { "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
+    { "_class_wxClipboard","_wxClipboard",0},
     { "_class_wxGauge","_wxGauge",0},
     { "_class_wxSashEvent","_wxSashEvent",0},
     { "_wxDC","_class_wxDC",0},
     { "_wxSizerItem","_class_wxSizerItem",0},
+    { "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
     { "_wxListEvent","_class_wxListEvent",0},
     { "_class_wxSingleChoiceDialog","_wxSingleChoiceDialog",0},
     { "_wxProgressDialog","_class_wxProgressDialog",0},
@@ -1738,6 +1708,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPrintPreview","_class_wxPrintPreview",0},
     { "_wxSpinEvent","_class_wxSpinEvent",0},
     { "_wxSashLayoutWindow","_class_wxSashLayoutWindow",0},
+    { "_size_t","_wxCoord",0},
     { "_size_t","_wxPrintQuality",0},
     { "_size_t","_unsigned_int",0},
     { "_size_t","_int",0},
@@ -1757,9 +1728,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxPanel","_class_wxPanel",0},
     { "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
     { "_wxCheckBox","_class_wxCheckBox",0},
+    { "_wxFileDataObjectBase","_class_wxFileDataObjectBase",0},
     { "_wxPyEvent","_class_wxPyEvent",0},
     { "_wxTextCtrl","_class_wxTextCtrl",0},
     { "_class_wxMask","_wxMask",0},
+    { "_wxTextDataObject","_class_wxTextDataObject",0},
     { "_class_wxToolTip","_wxToolTip",0},
     { "_class_wxKeyEvent","_wxKeyEvent",0},
     { "_class_wxGrid","_wxGrid",0},
@@ -1772,6 +1745,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxIdleEvent","_class_wxIdleEvent",0},
     { "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
     { "_wxToolBar","_class_wxToolBar",0},
+    { "_class_wxDataObject","_wxDataObject",0},
     { "_wxCaret","_class_wxCaret",0},
     { "_wxStaticLine","_class_wxStaticLine",0},
     { "_class_wxLayoutAlgorithm","_wxLayoutAlgorithm",0},
@@ -1779,8 +1753,11 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxMiniFrame","_class_wxMiniFrame",0},
     { "_class_wxNotebookEvent","_wxNotebookEvent",0},
     { "_class_wxPyPrintout","_wxPyPrintout",0},
+    { "_wxDataFormat","_class_wxDataFormat",0},
+    { "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
     { "_class_wxSashWindow","_wxSashWindow",0},
     { "_wxShowEvent","_class_wxShowEvent",0},
+    { "_uint","_wxCoord",0},
     { "_uint","_wxPrintQuality",0},
     { "_uint","_size_t",0},
     { "_uint","_unsigned_int",0},
@@ -1802,7 +1779,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxFontData","_wxFontData",0},
     { "_class_wxPNMHandler","_wxPNMHandler",0},
     { "_wxBoxSizer","_class_wxBoxSizer",0},
-    { "_class___wxPyCleanup","___wxPyCleanup",0},
     { "_wxBitmap","_class_wxBitmap",0},
     { "_wxTaskBarIcon","_class_wxTaskBarIcon",0},
     { "_wxPrintDialog","_class_wxPrintDialog",0},
@@ -1828,16 +1804,19 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticLine","_wxStaticLine",0},
     { "_wxScrollEvent","_class_wxScrollEvent",0},
     { "_wxCalculateLayoutEvent","_class_wxCalculateLayoutEvent",0},
+    { "_EBool","_wxCoord",0},
     { "_EBool","_wxPrintQuality",0},
     { "_EBool","_signed_int",0},
     { "_EBool","_int",0},
     { "_EBool","_wxWindowID",0},
     { "_class_wxRegion","_wxRegion",0},
+    { "_class_wxDataFormat","_wxDataFormat",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
     { "_class_wxPreviewFrame","_wxPreviewFrame",0},
     { "_wxStaticText","_class_wxStaticText",0},
     { "_wxFont","_class_wxFont",0},
+    { "_class_wxPyDropTarget","_wxPyDropTarget",0},
     { "_wxCloseEvent","_class_wxCloseEvent",0},
     { "_class_wxSplitterEvent","_wxSplitterEvent",0},
     { "_wxNotebook","_class_wxNotebook",0},
@@ -1863,6 +1842,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxComboBox","_class_wxComboBox",0},
     { "_wxRadioButton","_class_wxRadioButton",0},
     { "_class_wxMessageDialog","_wxMessageDialog",0},
+    { "_signed_int","_wxCoord",0},
     { "_signed_int","_wxPrintQuality",0},
     { "_signed_int","_EBool",0},
     { "_signed_int","_wxWindowID",0},
@@ -1870,6 +1850,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
     { "_wxMetaFileDC","_class_wxMetaFileDC",0},
+    { "_class_wxTextDataObject","_wxTextDataObject",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -1889,6 +1870,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxStaticText","_wxStaticText",0},
     { "_wxPrintDialogData","_class_wxPrintDialogData",0},
     { "_class_wxFont","_wxFont",0},
+    { "_wxClipboard","_class_wxClipboard",0},
     { "_class_wxPyValidator","_wxPyValidator",0},
     { "_class_wxCloseEvent","_wxCloseEvent",0},
     { "_wxSashEvent","_class_wxSashEvent",0},
@@ -1917,14 +1899,17 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBarTool","_wxToolBarTool",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
+    { "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
     { "_class_wxImageHandler","_wxImageHandler",0},
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_wxTreeItemId","_class_wxTreeItemId",0},
     { "_unsigned_char","_byte",0},
     { "_class_wxMetaFileDC","_wxMetaFileDC",0},
+    { "_wxDropSource","_class_wxDropSource",0},
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
+    { "_unsigned_int","_wxCoord",0},
     { "_unsigned_int","_wxPrintQuality",0},
     { "_unsigned_int","_size_t",0},
     { "_unsigned_int","_uint",0},
@@ -1953,6 +1938,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
     { "_class_wxNotebook","_wxNotebook",0},
     { "_wxJPEGHandler","_class_wxJPEGHandler",0},
+    { "_wxWindowID","_wxCoord",0},
     { "_wxWindowID","_wxPrintQuality",0},
     { "_wxWindowID","_size_t",0},
     { "_wxWindowID","_EBool",0},
@@ -1962,6 +1948,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxWindowID","_unsigned_int",0},
     { "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
     { "_class_wxSizerItem","_wxSizerItem",0},
+    { "_int","_wxCoord",0},
     { "_int","_wxPrintQuality",0},
     { "_int","_size_t",0},
     { "_int","_EBool",0},
@@ -1986,13 +1973,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxStaticBoxSizer","_class_wxStaticBoxSizer",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
     { "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
+    { "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
     { "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
     { "_class_wxComboBox","_wxComboBox",0},
     { "_class_wxRadioButton","_wxRadioButton",0},
+    { "_class_wxFileDataObjectBase","_wxFileDataObjectBase",0},
     { "_wxValidator","_class_wxValidator",0},
     { "_class_wxTreeItemId","_wxTreeItemId",0},
     { "_wxTreeCtrl","_class_wxTreeCtrl",0},
     { "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
+    { "_class_wxDropSource","_wxDropSource",0},
     { "_wxIconizeEvent","_class_wxIconizeEvent",0},
     { "_class_wxControl","_wxControl",0},
     { "_wxStaticBitmap","_class_wxStaticBitmap",0},
@@ -2002,7 +1992,16 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPageSetupDialog","_wxPageSetupDialog",0},
     { "_wxPalette","_class_wxPalette",0},
     { "_class_wxIdleEvent","_wxIdleEvent",0},
+    { "_wxCoord","_int",0},
+    { "_wxCoord","_signed_int",0},
+    { "_wxCoord","_unsigned_int",0},
+    { "_wxCoord","_wxWindowID",0},
+    { "_wxCoord","_uint",0},
+    { "_wxCoord","_EBool",0},
+    { "_wxCoord","_size_t",0},
+    { "_wxCoord","_wxPrintQuality",0},
     { "_wxEraseEvent","_class_wxEraseEvent",0},
+    { "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
     { "_class_wxJoystickEvent","_wxJoystickEvent",0},
     { "_class_wxMiniFrame","_wxMiniFrame",0},
     { "_wxFontDialog","_class_wxFontDialog",0},
@@ -2012,6 +2011,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxSizer","_class_wxSizer",0},
     { "_class_wxShowEvent","_wxShowEvent",0},
     { "_class_wxPCXHandler","_wxPCXHandler",0},
+    { "_wxPyDropTarget","_class_wxPyDropTarget",0},
     { "_wxActivateEvent","_class_wxActivateEvent",0},
     { "_wxGauge","_class_wxGauge",0},
     { "_class_wxCheckListBox","_wxCheckListBox",0},
@@ -2021,10 +2021,12 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxClientDC","_wxClientDC",0},
     { "_class_wxSizeEvent","_wxSizeEvent",0},
     { "_class_wxListCtrl","_wxListCtrl",0},
+    { "_wxCustomDataObject","_class_wxCustomDataObject",0},
     { "_class_wxGridCell","_wxGridCell",0},
     { "_class_wxSize","_wxSize",0},
     { "_class_wxBitmap","_wxBitmap",0},
     { "_class_wxMemoryDC","_wxMemoryDC",0},
+    { "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
     { "_wxMenuBar","_class_wxMenuBar",0},
     { "_wxTreeEvent","_class_wxTreeEvent",0},
     { "_wxDirDialog","_class_wxDirDialog",0},
@@ -2047,6 +2049,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxQueryLayoutInfoEvent","_wxQueryLayoutInfoEvent",0},
     { "_class_wxEraseEvent","_wxEraseEvent",0},
     { "_wxMDIClientWindow","_class_wxMDIClientWindow",0},
+    { "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
     { "_class_wxFontDialog","_wxFontDialog",0},
     { "_wxWindow","_class_wxWindow",0},
     { "_class_wxWindowDestroyEvent","_wxWindowDestroyEvent",0},
@@ -2241,12 +2244,6 @@ SWIGEXPORT(void) initwxc() {
 	 PyDict_SetItemString(d,"wxSIZE_AUTO", PyInt_FromLong((long) wxSIZE_AUTO));
 	 PyDict_SetItemString(d,"wxSIZE_USE_EXISTING", PyInt_FromLong((long) wxSIZE_USE_EXISTING));
 	 PyDict_SetItemString(d,"wxSIZE_ALLOW_MINUS_ONE", PyInt_FromLong((long) wxSIZE_ALLOW_MINUS_ONE));
-	 PyDict_SetItemString(d,"wxDF_TEXT", PyInt_FromLong((long) wxDF_TEXT));
-	 PyDict_SetItemString(d,"wxDF_BITMAP", PyInt_FromLong((long) wxDF_BITMAP));
-	 PyDict_SetItemString(d,"wxDF_METAFILE", PyInt_FromLong((long) wxDF_METAFILE));
-	 PyDict_SetItemString(d,"wxDF_DIB", PyInt_FromLong((long) wxDF_DIB));
-	 PyDict_SetItemString(d,"wxDF_OEMTEXT", PyInt_FromLong((long) wxDF_OEMTEXT));
-	 PyDict_SetItemString(d,"wxDF_FILENAME", PyInt_FromLong((long) wxDF_FILENAME));
 	 PyDict_SetItemString(d,"wxPORTRAIT", PyInt_FromLong((long) wxPORTRAIT));
 	 PyDict_SetItemString(d,"wxLANDSCAPE", PyInt_FromLong((long) wxLANDSCAPE));
 	 PyDict_SetItemString(d,"wxPRINT_QUALITY_HIGH", PyInt_FromLong((long) wxPRINT_QUALITY_HIGH));
@@ -2757,6 +2754,7 @@ SWIGEXPORT(void) initwxc() {
     initimagec();
     initprintfwc();
     initsizersc();
+    initclip_dndc();
 {
    int i;
    for (i = 0; _swig_mapping[i].n1; i++)
diff --git a/utils/wxPython/src/msw/wx.py b/utils/wxPython/src/msw/wx.py
index 7650f7e6f1..c6f47acf82 100644
--- a/utils/wxPython/src/msw/wx.py
+++ b/utils/wxPython/src/msw/wx.py
@@ -9,6 +9,8 @@ from windows import *
 
 from gdi import *
 
+from clip_dnd import *
+
 from events import *
 
 from mdi import *
@@ -114,23 +116,6 @@ class wxPyApp(wxPyAppPtr):
 
 
 
-class __wxPyCleanupPtr :
-    def __init__(self,this):
-        self.this = this
-        self.thisown = 0
-    def __del__(self,wxc=wxc):
-        if self.thisown == 1 :
-            wxc.delete___wxPyCleanup(self)
-    def __repr__(self):
-        return "<C __wxPyCleanup instance at %s>" % (self.this,)
-class __wxPyCleanup(__wxPyCleanupPtr):
-    def __init__(self,*_args,**_kwargs):
-        self.this = apply(wxc.new___wxPyCleanup,_args,_kwargs)
-        self.thisown = 1
-
-
-
-
 
 
 #-------------- FUNCTION WRAPPERS ------------------
@@ -153,6 +138,8 @@ _wxStart = wxc._wxStart
 
 _wxSetDictionary = wxc._wxSetDictionary
 
+wxApp_CleanUp = wxc.wxApp_CleanUp
+
 
 
 #-------------- VARIABLE WRAPPERS ------------------
@@ -336,12 +323,6 @@ wxSIZE_AUTO_HEIGHT = wxc.wxSIZE_AUTO_HEIGHT
 wxSIZE_AUTO = wxc.wxSIZE_AUTO
 wxSIZE_USE_EXISTING = wxc.wxSIZE_USE_EXISTING
 wxSIZE_ALLOW_MINUS_ONE = wxc.wxSIZE_ALLOW_MINUS_ONE
-wxDF_TEXT = wxc.wxDF_TEXT
-wxDF_BITMAP = wxc.wxDF_BITMAP
-wxDF_METAFILE = wxc.wxDF_METAFILE
-wxDF_DIB = wxc.wxDF_DIB
-wxDF_OEMTEXT = wxc.wxDF_OEMTEXT
-wxDF_FILENAME = wxc.wxDF_FILENAME
 wxPORTRAIT = wxc.wxPORTRAIT
 wxLANDSCAPE = wxc.wxLANDSCAPE
 wxPRINT_QUALITY_HIGH = wxc.wxPRINT_QUALITY_HIGH
@@ -1615,7 +1596,16 @@ class wxApp(wxPyApp):
 
 #----------------------------------------------------------------------------
 # DO NOT hold any other references to this object.  This is how we know when
-# to cleanup system resources that wxWin is holding...
+# to cleanup system resources that wxWin is holding.  When this module is
+# unloaded, the refcount on __cleanMeUp goes to zero and it calls the
+# wxApp_CleanUp function.
+
+class __wxPyCleanup:
+    def __init__(self):
+        self.cleanup = wxc.wxApp_CleanUp
+    def __del__(self):
+        self.cleanup()
+
 __cleanMeUp = __wxPyCleanup()
 #----------------------------------------------------------------------------
 
diff --git a/utils/wxPython/src/windows.i b/utils/wxPython/src/windows.i
index d4ebce8bbd..34a42121c0 100644
--- a/utils/wxPython/src/windows.i
+++ b/utils/wxPython/src/windows.i
@@ -27,7 +27,7 @@
 %import _defs.i
 %import misc.i
 %import gdi.i
-
+%import clip_dnd.i
 
 %pragma(python) code = "import wx"
 
@@ -310,6 +310,9 @@ public:
     wxValidator* GetValidator();
     void SetValidator(const wxValidator& validator);
 
+    void SetDropTarget(wxDropTarget* target);
+    wxDropTarget* GetDropTarget();
+    %pragma(python) addtomethod = "SetDropTarget:_args[0].thisown = 0"
 };
 
 //%clear int* x, int* y;
@@ -453,66 +456,88 @@ public:
     void AppendSeparator();
     void Break();
     void Check(int id, bool flag);
+    bool IsChecked(int id);
     void Enable(int id, bool enable);
+    bool IsEnabled(int id);
+
     int FindItem(const wxString& itemString);
+    %name(FindItemById)wxMenuItem* FindItem(int id/*, wxMenu **menu = NULL*/);
+
     wxString GetTitle();
     void SetTitle(const wxString& title);
-    wxMenuItem* FindItemForId(int id);
-    wxString GetHelpString(int id);
+
     wxString GetLabel(int id);
-    void SetHelpString(int id, const wxString& helpString);
-    bool IsChecked(int id);
-    bool IsEnabled(int id);
     void SetLabel(int id, const wxString& label);
+
+    wxString GetHelpString(int id);
+    void SetHelpString(int id, const wxString& helpString);
     void UpdateUI(wxEvtHandler* source = NULL);
 
+    bool Delete(int id);
+    %name(DeleteItem)bool Delete(wxMenuItem *item);
+    bool Insert(size_t pos, wxMenuItem *item);
+    wxMenuItem *Remove(int id);
+    %name(RemoveItem) wxMenuItem *Remove(wxMenuItem *item);
+
     %addmethods {
         void Destroy() {
             delete self;
         }
     }
+    %name(DestroyId)bool Destroy(int id);
+    %name(DestroyItem)bool Destroy(wxMenuItem *item);
 
-};
+    size_t GetMenuItemCount();
+    //wxMenuItemList& GetMenuItems();
+    %addmethods {
+        PyObject* GetMenuItems() {
+            wxMenuItemList& list = self->GetMenuItems();
+            return wxPy_ConvertList(&list, "wxMenuItem");
+        }
+    }
 
+    void SetEventHandler(wxEvtHandler *handler);
+    wxEvtHandler *GetEventHandler();
+
+    void SetInvokingWindow(wxWindow *win);
+    wxWindow *GetInvokingWindow();
+
+    long GetStyle();
+
+    bool IsAttached();
+
+    void SetParent(wxMenu *parent);
+    wxMenu *GetParent();
+};
 
-//
-// This one knows how to set a callback and handle INC- and DECREFing it.  To
-// be used for PopupMenus, but you must retain a referece to it while using
-// it.
-//
-//  class wxPyMenu : public wxMenu {
-//  public:
-//      wxPyMenu(const wxString& title = wxPyEmptyStr, PyObject* func = NULL);
-//      ~wxPyMenu();
-//  };
 
 //----------------------------------------------------------------------
 
-class wxMenuBar : public wxEvtHandler {
+class wxMenuBar : public wxWindow {
 public:
     wxMenuBar();
 
-    void Append(wxMenu *menu, const wxString& title);
-    void Check(int id, bool flag);
-//    bool Checked(int id);
+    bool Append(wxMenu *menu, const wxString& title);
+    bool Insert(size_t pos, wxMenu *menu, const wxString& title);
+    size_t GetMenuCount();
+    wxMenu *GetMenu(size_t pos);
+    wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title);
+    wxMenu *Remove(size_t pos);
+    void EnableTop(size_t pos, bool enable);
+    void SetLabelTop(size_t pos, const wxString& label);
+    wxString GetLabelTop(size_t pos);
+    int FindMenuItem(const wxString& menuString, const wxString& itemString);
+    %name(FindItemById)wxMenuItem* FindItem(int id/*, wxMenu **menu = NULL*/);
     void Enable(int id, bool enable);
-//    bool Enabled(int id);
+    void Check(int id, bool check);
     bool IsChecked(int id);
     bool IsEnabled(int id);
-    int FindMenuItem(const wxString& menuString, const wxString& itemString);
-    wxMenuItem * FindItemForId(int id);
-    void SetLabel(int id, const wxString& label);
-    void EnableTop(int pos, bool enable);
-    wxString GetHelpString(int id);
+
+    void SetLabel(int id, const wxString &label);
     wxString GetLabel(int id);
+
     void SetHelpString(int id, const wxString& helpString);
-    wxString GetLabelTop(int pos);
-    void SetLabelTop(int pos, const wxString& label);
-    int GetMenuCount();
-    wxMenu* GetMenu(int i);
-    void Refresh();
-    wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title);
-    wxMenu *Remove(size_t pos);
+    wxString GetHelpString(int id);
 
 };
 
@@ -521,45 +546,51 @@ public:
 
 class wxMenuItem {
 public:
-//#ifndef __WXGTK__
     wxMenuItem(wxMenu* parentMenu=NULL, int id=ID_SEPARATOR,
                const wxString& text = wxPyEmptyStr,
-               const wxString& helpString = wxPyEmptyStr,
-               bool checkable = FALSE, wxMenu* subMenu = NULL);
-//#else
-//    wxMenuItem();
-//#endif
+               const wxString& help = wxPyEmptyStr,
+               bool isCheckable = FALSE, wxMenu* subMenu = NULL);
 
-    bool IsSeparator();
-    bool IsEnabled();
-    bool IsChecked();
-    bool IsCheckable();
-    bool IsSubMenu();
-    int  GetId();
+
+    wxMenu *GetMenu();
     void SetId(int id);
-    wxMenu* GetSubMenu();
-    wxString GetHelp();
-    void SetHelp(const wxString& strHelp);
-    void Enable(bool bDoEnable = TRUE);
-    void Check(bool bDoCheck = TRUE);
-
-//#ifdef __WXMSW__
-    wxColour& GetBackgroundColour();
-    wxBitmap GetBitmap(bool checked = TRUE);
-    wxFont& GetFont();
-    int GetMarginWidth();
-    wxColour& GetTextColour();
-    void SetBackgroundColour(const wxColour& colour);
-    void SetBitmaps(const wxBitmap& checked, const wxBitmap& unchecked = wxNullBitmap);
-    void SetFont(const wxFont& font);
-    void SetMarginWidth(int width);
+    int  GetId();
+    bool IsSeparator();
     void SetText(const wxString& str);
+    wxString GetLabel();
     const wxString& GetText();
-    void SetTextColour(const wxColour& colour);
-    void DeleteSubMenu();
     void SetCheckable(bool checkable);
+    bool IsCheckable();
+    bool IsSubMenu();
     void SetSubMenu(wxMenu *menu);
-//#endif
+    wxMenu *GetSubMenu();
+    void Enable(bool enable = TRUE);
+    bool IsEnabled();
+    void Check(bool check = TRUE);
+    bool IsChecked();
+    void Toggle();
+    void SetHelp(const wxString& str);
+    const wxString& GetHelp();
+    wxAcceleratorEntry *GetAccel();
+    void SetAccel(wxAcceleratorEntry *accel);
+
+//  #ifdef __WXMSW__
+//      wxColour& GetBackgroundColour();
+//      wxBitmap GetBitmap(bool checked = TRUE);
+//      wxFont& GetFont();
+//      int GetMarginWidth();
+//      wxColour& GetTextColour();
+//      void SetBackgroundColour(const wxColour& colour);
+//      void SetBitmaps(const wxBitmap& checked, const wxBitmap& unchecked = wxNullBitmap);
+//      void SetFont(const wxFont& font);
+//      void SetMarginWidth(int width);
+//      void SetText(const wxString& str);
+//      const wxString& GetText();
+//      void SetTextColour(const wxColour& colour);
+//      void DeleteSubMenu();
+//      void SetCheckable(bool checkable);
+//      void SetSubMenu(wxMenu *menu);
+//  #endif
 };
 
 //---------------------------------------------------------------------------
diff --git a/utils/wxPython/src/wx.i b/utils/wxPython/src/wx.i
index 256489467e..70535f3d1e 100644
--- a/utils/wxPython/src/wx.i
+++ b/utils/wxPython/src/wx.i
@@ -51,7 +51,7 @@
 //---------------------------------------------------------------------------
 
 
-#define __version__ "0.0.0"   // The real value is in build.py...
+#define __version__ "0.0.0"   // The real value is now in build.py...
 
 wxPoint     wxPyDefaultPosition;
 wxSize      wxPyDefaultSize;
@@ -104,27 +104,14 @@ public:
 
 
 //----------------------------------------------------------------------
-// An instance of this object is created in the main wx module.  As long
-// as there are no extra references to it then when the wx module is being
-// unloaded from memory then this object's destructor will be called. When
-// it is then we'll use that as a signal to clean up wxWindows
+// this is used to cleanup after wxWindows when Python shuts down.
 
-%{
-class __wxPyCleanup {
-public:
-    __wxPyCleanup()  { }
-    ~__wxPyCleanup() { wxApp::CleanUp(); }
-};
+%inline %{
+    void wxApp_CleanUp() {
+        wxApp::CleanUp();
+    }
 %}
 
-// now to swigify it...
-class __wxPyCleanup {
-public:
-    __wxPyCleanup();
-    ~__wxPyCleanup();
-};
-
-
 //----------------------------------------------------------------------
 // This code gets added to the module initialization function
 //----------------------------------------------------------------------
@@ -146,6 +133,7 @@ extern "C" SWIGEXPORT(void) initwindows3c();
 extern "C" SWIGEXPORT(void) initimagec();
 extern "C" SWIGEXPORT(void) initprintfwc();
 extern "C" SWIGEXPORT(void) initsizersc();
+extern "C" SWIGEXPORT(void) initclip_dndc();
 %}
 
 
@@ -174,6 +162,7 @@ extern "C" SWIGEXPORT(void) initsizersc();
     initimagec();
     initprintfwc();
     initsizersc();
+    initclip_dndc();
 %}
 
 //----------------------------------------------------------------------
-- 
2.50.0

