Commits

Amaury Forgeot d'Arc  committed 3dc8232

Update patches, the demo can run now

  • Participants
  • Parent commits cb7c48a

Comments (0)

Files changed (10)

File dict-keys.patch

 dict.keys() &co return a view
 
-diff -r cf015e317687 wxPython/build-wxpython.py
---- a/wxPython/build-wxpython.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/build-wxpython.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wx/build/tools/build-wxwidgets.py
+--- a/wx/build/tools/build-wxwidgets.py	Sat May 21 14:57:10 2011 +0200
++++ b/wx/build/tools/build-wxwidgets.py	Sat May 21 15:53:16 2011 +0200
+@@ -188,8 +188,7 @@
+         
+     parser = optparse.OptionParser(usage="usage: %prog [options]", version="%prog 1.0")
+ 
+-    keys = option_dict.keys()
+-    keys.sort()
++    keys = sorted(option_dict)
+     for opt in keys:
+         default = option_dict[opt][0]
+         action = "store"
+diff -r 5dd46ddfc099 wxPython/build-wxpython.py
+--- a/wxPython/build-wxpython.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/build-wxpython.py	Sat May 21 15:53:16 2011 +0200
 @@ -102,9 +102,7 @@
  
  parser = optparse.OptionParser(usage="usage: %prog [options]", version="%prog 1.0")
      default = option_dict[opt][0]
      action = "store"
      if isinstance(default, bool):
-diff -r cf015e317687 wxPython/demo/CheckListCtrlMixin.py
---- a/wxPython/demo/CheckListCtrlMixin.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/CheckListCtrlMixin.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/CheckListCtrlMixin.py
+--- a/wxPython/demo/CheckListCtrlMixin.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/CheckListCtrlMixin.py	Sat May 21 15:53:16 2011 +0200
 @@ -44,7 +44,7 @@
          self.list.InsertColumn(1, "Title", wx.LIST_FORMAT_RIGHT)
          self.list.InsertColumn(2, "Genre")
              index = self.list.InsertStringItem(wx.maxsize, data[0])
              self.list.SetStringItem(index, 1, data[1])
              self.list.SetStringItem(index, 2, data[2])
-diff -r cf015e317687 wxPython/demo/Cursor.py
---- a/wxPython/demo/Cursor.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/Cursor.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/Cursor.py
+--- a/wxPython/demo/Cursor.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/Cursor.py	Sat May 21 15:53:16 2011 +0200
 @@ -47,8 +47,7 @@
          wx.Panel.__init__(self, parent, -1)
  
  
          # create the controls
          self.cb = wx.ComboBox(self, -1, "wx.CURSOR_DEFAULT", choices=choices,
-diff -r cf015e317687 wxPython/demo/DVC_DataViewModel.py
---- a/wxPython/demo/DVC_DataViewModel.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/DVC_DataViewModel.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/DVC_CustomRenderer.py
+--- a/wxPython/demo/DVC_CustomRenderer.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/DVC_CustomRenderer.py	Sat May 21 15:53:16 2011 +0200
+@@ -152,8 +152,7 @@
+     # from a dictionary to a list of lists, including the dictionary key
+     # as the first element of each sublist.
+     import ListCtrl
+-    musicdata = ListCtrl.musicdata.items()
+-    musicdata.sort()
++    musicdata = sorted(ListCtrl.musicdata.items())
+     musicdata = [[str(k)] + list(v) for k,v in musicdata]
+ 
+     win = TestPanel(nb, log, data=musicdata)
+diff -r 5dd46ddfc099 wxPython/demo/DVC_DataViewModel.py
+--- a/wxPython/demo/DVC_DataViewModel.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/DVC_DataViewModel.py	Sat May 21 15:53:16 2011 +0200
 @@ -304,8 +304,7 @@
      # Reuse the music data in the ListCtrl sample, and put it in a
      # hierarchical structure so we can show it as a tree
  
      ## For testing Unicode
      #musicdata = {
-diff -r cf015e317687 wxPython/demo/DVC_IndexListModel.py
---- a/wxPython/demo/DVC_IndexListModel.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/DVC_IndexListModel.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/DVC_IndexListModel.py
+--- a/wxPython/demo/DVC_IndexListModel.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/DVC_IndexListModel.py	Sat May 21 15:53:16 2011 +0200
 @@ -221,9 +221,7 @@
      # from a dictionary to a list of lists, including the dictionary key
      # as the first element of each sublist.
  
      win = TestPanel(nb, log, data=musicdata)
      return win
-diff -r cf015e317687 wxPython/demo/DVC_ListCtrl.py
---- a/wxPython/demo/DVC_ListCtrl.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/DVC_ListCtrl.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/DVC_ListCtrl.py
+--- a/wxPython/demo/DVC_ListCtrl.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/DVC_ListCtrl.py	Sat May 21 15:53:16 2011 +0200
 @@ -6,9 +6,7 @@
  
  # Reuse the music data in the ListCtrl sample
  
  
  class TestPanel(wx.Panel):
-diff -r cf015e317687 wxPython/demo/GLCanvas.py
---- a/wxPython/demo/GLCanvas.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/GLCanvas.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/GLCanvas.py
+--- a/wxPython/demo/GLCanvas.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/GLCanvas.py	Sat May 21 15:53:16 2011 +0200
 @@ -32,9 +32,7 @@
  
          box = wx.BoxSizer(wx.VERTICAL)
              text = buttonDefs[k][1]
              btn = wx.Button(self, k, text)
              box.Add(btn, 0, wx.ALIGN_CENTER|wx.ALL, 15)
-diff -r cf015e317687 wxPython/demo/Grid.py
---- a/wxPython/demo/Grid.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/Grid.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/Grid.py
+--- a/wxPython/demo/Grid.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/Grid.py	Sat May 21 15:53:16 2011 +0200
 @@ -22,10 +22,8 @@
  
          box = wx.BoxSizer(wx.VERTICAL)
              text = buttonDefs[k][1]
              btn = wx.Button(self, k, text)
              box.Add(btn, 0, wx.ALIGN_CENTER|wx.ALL, 10)
-diff -r cf015e317687 wxPython/demo/Main.py
---- a/wxPython/demo/Main.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/Main.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/Main.py
+--- a/wxPython/demo/Main.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/Main.py	Sat May 21 15:53:16 2011 +0200
 @@ -431,8 +431,7 @@
  
  def FormatDocs(keyword, values, num):
          perspectivesMenu = wx.Menu()
          item = wx.MenuItem(perspectivesMenu, -1, DEFAULT_PERSPECTIVE, "Load startup default perspective", wx.ITEM_RADIO)
          self.Bind(wx.EVT_MENU, self.OnAUIPerspectives, item)
-diff -r cf015e317687 wxPython/demo/PropertyGrid.py
---- a/wxPython/demo/PropertyGrid.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/PropertyGrid.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/PropertyGrid.py
+--- a/wxPython/demo/PropertyGrid.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/PropertyGrid.py	Sat May 21 15:53:16 2011 +0200
 @@ -854,7 +854,7 @@
              d = self.pg.GetPropertyValues(inc_attributes=True)
  
              dlg = MemoDialog(self,"GetPropertyValues Result",
                               'Contents of resulting dictionary:\n\n'+'\n'.join(ss))
              dlg.ShowModal()
-diff -r cf015e317687 wxPython/demo/TablePrint.py
---- a/wxPython/demo/TablePrint.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/demo/TablePrint.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/demo/TablePrint.py
+--- a/wxPython/demo/TablePrint.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/demo/TablePrint.py	Sat May 21 15:53:16 2011 +0200
 @@ -23,10 +23,8 @@
  
          box = wx.BoxSizer(wx.VERTICAL)
              text = buttonDefs[k][1]
              btn = wx.Button(self, k, text)
              box.Add(btn, 0, wx.ALIGN_CENTER|wx.ALL, 15)
-diff -r cf015e317687 wxPython/distrib/propgrid/create_vcw.py
---- a/wxPython/distrib/propgrid/create_vcw.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/distrib/propgrid/create_vcw.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/distrib/propgrid/create_vcw.py
+--- a/wxPython/distrib/propgrid/create_vcw.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/distrib/propgrid/create_vcw.py	Sat May 21 15:53:16 2011 +0200
 @@ -684,7 +684,7 @@
          return
  
          sig_num, common_func_start, func_imp, sig_count = tpl
          if sig_count > 1:
              # Shared implementation
-diff -r cf015e317687 wxPython/src/propgrid.i
---- a/wxPython/src/propgrid.i	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/src/propgrid.i	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/src/propgrid.i
+--- a/wxPython/src/propgrid.i	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/src/propgrid.i	Sat May 21 15:53:16 2011 +0200
 @@ -1318,30 +1318,33 @@
              attr_dicts = []
  
                  self._AutoFillOne(cat,k,v)
  
  
-diff -r cf015e317687 wxPython/src/propgrid_cbacks.i
---- a/wxPython/src/propgrid_cbacks.i	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/src/propgrid_cbacks.i	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/src/propgrid_cbacks.i
+--- a/wxPython/src/propgrid_cbacks.i	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/src/propgrid_cbacks.i	Sat May 21 15:53:16 2011 +0200
 @@ -39,7 +39,7 @@
          cls = self.__class__
          if not hasattr(cls,'_pyswig_methods_registered'):
 -};
 \ No newline at end of file
 +};
-diff -r cf015e317687 wxPython/wx/lib/masked/maskededit.py
---- a/wxPython/wx/lib/masked/maskededit.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/wx/lib/masked/maskededit.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/wx/lib/masked/maskededit.py
+--- a/wxPython/wx/lib/masked/maskededit.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/wx/lib/masked/maskededit.py	Sat May 21 15:53:16 2011 +0200
 @@ -1763,7 +1763,8 @@
  
          # Validate legitimate set of parameters:
      exposed_basectrl_params.remove('index')
      exposed_basectrl_params.remove('extent')
      exposed_basectrl_params.remove('foregroundColour')   # (base class already has this)
-diff -r cf015e317687 wxPython/wx/lib/splitter.py
---- a/wxPython/wx/lib/splitter.py	Thu May 19 21:42:54 2011 +0200
-+++ b/wxPython/wx/lib/splitter.py	Thu May 19 21:43:33 2011 +0200
+diff -r 5dd46ddfc099 wxPython/wx/lib/splitter.py
+--- a/wxPython/wx/lib/splitter.py	Sat May 21 14:57:10 2011 +0200
++++ b/wxPython/wx/lib/splitter.py	Sat May 21 15:53:16 2011 +0200
 @@ -686,12 +686,12 @@
              return
  

File modern-has_key.patch

 dict.has_key() -> in
 
-diff -r 032d33777dde wxPython/build-wxpython.py
---- a/wxPython/build-wxpython.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/build-wxpython.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wx/build/tools/build-wxwidgets.py
+--- a/wx/build/tools/build-wxwidgets.py	Fri May 20 16:32:50 2011 +0200
++++ b/wx/build/tools/build-wxwidgets.py	Fri May 20 17:06:31 2011 +0200
+@@ -38,7 +38,7 @@
+     """
+     # Linux, Unix and MacOS:
+     if hasattr(os, "sysconf"):
+-        if os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"):
++        if "SC_NPROCESSORS_ONLN" in os.sysconf_names:
+             # Linux & Unix:
+             ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
+             if isinstance(ncpus, int) and ncpus > 0:
+@@ -48,7 +48,7 @@
+             return p.stdout.read()
+             
+     # Windows:
+-    if os.environ.has_key("NUMBER_OF_PROCESSORS"):
++    if "NUMBER_OF_PROCESSORS" in os.environ:
+             ncpus = int(os.environ["NUMBER_OF_PROCESSORS"]);
+             if ncpus > 0:
+                 return ncpus
+diff -r 7339eff58326 wxPython/build-wxpython.py
+--- a/wxPython/build-wxpython.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/build-wxpython.py	Fri May 20 17:06:31 2011 +0200
 @@ -25,7 +25,7 @@
  scriptName = os.path.basename(sys.argv[0])
  WXPYDIR = scriptDir
      SWIG_BIN = 'C:\\SWIG-1.3.29\\swig.exe'
  else:
      # WARNING: This is may not be the patched version of SWIG if the
-diff -r 032d33777dde wxPython/config.py
---- a/wxPython/config.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/config.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/config.py
+--- a/wxPython/config.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/config.py	Fri May 20 17:06:31 2011 +0200
 @@ -896,7 +896,7 @@
      # Set compile flags and such for MSVC.  These values are derived
      # from the wxWidgets makefiles for MSVC, other compilers settings
          WXDIR = os.environ['WXWIN']
      else:
          if os.path.exists('../wxWidgets'):
-diff -r 032d33777dde wxPython/demo/DrawXXXList.py
---- a/wxPython/demo/DrawXXXList.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/demo/DrawXXXList.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/demo/DrawXXXList.py
+--- a/wxPython/demo/DrawXXXList.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/demo/DrawXXXList.py	Fri May 20 17:06:31 2011 +0200
 @@ -105,10 +105,11 @@
          c = random.choice(colours)
          t = random.randint(1, 4)
              cache[c] = wx.Brush(c)
  
          brushes.append( cache[c] )
-diff -r 032d33777dde wxPython/demo/PseudoDC.py
---- a/wxPython/demo/PseudoDC.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/demo/PseudoDC.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/demo/PseudoDC.py
+--- a/wxPython/demo/PseudoDC.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/demo/PseudoDC.py	Fri May 20 17:06:31 2011 +0200
 @@ -122,14 +122,15 @@
      def RandomPen(self):
          c = random.choice(colours)
              self.brush_cache[c] = wx.Brush(c)
  
          return self.brush_cache[c]
-diff -r 032d33777dde wxPython/distrib/build_renamers.py
---- a/wxPython/distrib/build_renamers.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/distrib/build_renamers.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/distrib/build_renamers.py
+--- a/wxPython/distrib/build_renamers.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/distrib/build_renamers.py	Fri May 20 17:06:31 2011 +0200
 @@ -50,10 +50,7 @@
  # with the wx package.  We need to import modules from the wx package
  # here, then we'll put the wxPython.wx entry back in sys.modules.
  
  import wx.%s
  
-diff -r 032d33777dde wxPython/distrib/mac/buildpkg.py
---- a/wxPython/distrib/mac/buildpkg.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/distrib/mac/buildpkg.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/distrib/mac/buildpkg.py
+--- a/wxPython/distrib/mac/buildpkg.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/distrib/mac/buildpkg.py	Fri May 20 17:06:31 2011 +0200
 @@ -231,7 +231,7 @@
  
          info = ""
                  info = info + "%s %%(%s)s\n" % (f, f)
          info = info % self.packageInfo
          base = self.packageInfo["Title"] + ".info"
-diff -r 032d33777dde wxPython/distrib/mac/bundlebuilder.py
---- a/wxPython/distrib/mac/bundlebuilder.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/distrib/mac/bundlebuilder.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/distrib/mac/bundlebuilder.py
+--- a/wxPython/distrib/mac/bundlebuilder.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/distrib/mac/bundlebuilder.py	Fri May 20 17:06:31 2011 +0200
 @@ -465,7 +465,7 @@
                  if self.standalone or self.semi_standalone:
                      self.includeModules.append("argvemulator")
                      self.plist["CFBundleDocumentTypes"] = [
                          { "CFBundleTypeOSTypes" : [
                              "****",
-diff -r 032d33777dde wxPython/distrib/make_installer.py
---- a/wxPython/distrib/make_installer.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/distrib/make_installer.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/distrib/make_installer.py
+--- a/wxPython/distrib/make_installer.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/distrib/make_installer.py	Fri May 20 17:06:31 2011 +0200
 @@ -24,11 +24,11 @@
  
  KEEP_TEMPS = False
  
  
  #----------------------------------------------------------------------
-diff -r 032d33777dde wxPython/distrib/propgrid/create_vcw.py
---- a/wxPython/distrib/propgrid/create_vcw.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/distrib/propgrid/create_vcw.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/distrib/propgrid/create_vcw.py
+--- a/wxPython/distrib/propgrid/create_vcw.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/distrib/propgrid/create_vcw.py	Fri May 20 17:06:31 2011 +0200
 @@ -444,13 +444,13 @@
              if not base_t.startswith('const'):
                  t2 = "const %s"%base_t
                      tpl2 = ([(t2,'')],tm_tempdata,tm_content)
                      self.typemaps[tm_type][t2] = [tpl2]
  
-diff -r 032d33777dde wxPython/samples/StyleEditor/STCStyleEditor.py
---- a/wxPython/samples/StyleEditor/STCStyleEditor.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/StyleEditor/STCStyleEditor.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/StyleEditor/STCStyleEditor.py
+--- a/wxPython/samples/StyleEditor/STCStyleEditor.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/StyleEditor/STCStyleEditor.py	Fri May 20 17:06:31 2011 +0200
 @@ -879,8 +879,11 @@
          self.populateCombosWithCommonDefs()
  
      names, vals = parseProp(prop)
      if 'back' in names:
          bkCol = strToCol(vals['back']%commonDefs)
-diff -r 032d33777dde wxPython/samples/ide/activegrid/tool/DebuggerService.py
---- a/wxPython/samples/ide/activegrid/tool/DebuggerService.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/tool/DebuggerService.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/tool/DebuggerService.py
+--- a/wxPython/samples/ide/activegrid/tool/DebuggerService.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/tool/DebuggerService.py	Fri May 20 17:06:31 2011 +0200
 @@ -801,7 +801,7 @@
          phpIniPath = None
  
          self._lastPythonPath = config.Read(self.GetKey("LastPythonPath"), startval)
          self._pythonPathEntry = wx.TextCtrl(self, -1, self._lastPythonPath)
          self._pythonPathEntry.SetToolTipString(self._lastPythonPath)
-diff -r 032d33777dde wxPython/samples/ide/activegrid/tool/PHPDebugger.py
---- a/wxPython/samples/ide/activegrid/tool/PHPDebugger.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/tool/PHPDebugger.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/tool/PHPDebugger.py
+--- a/wxPython/samples/ide/activegrid/tool/PHPDebugger.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/tool/PHPDebugger.py	Fri May 20 17:06:31 2011 +0200
 @@ -508,7 +508,7 @@
          # Check to see if we have any new breakpoints added.
          #
              #
              # Not in our bp list?  Anyway, create one for it.
              #
-diff -r 032d33777dde wxPython/samples/ide/activegrid/tool/ProjectEditor.py
---- a/wxPython/samples/ide/activegrid/tool/ProjectEditor.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/tool/ProjectEditor.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/tool/ProjectEditor.py
+--- a/wxPython/samples/ide/activegrid/tool/ProjectEditor.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/tool/ProjectEditor.py	Fri May 20 17:06:31 2011 +0200
 @@ -777,7 +777,7 @@
          for projectFile in projectFiles:
              if (projectFile.type == basedocmgr.FILE_TYPE_SCHEMA):
              del self._mapToProject[key]
          
  
-diff -r 032d33777dde wxPython/samples/ide/activegrid/tool/SVNService.py
---- a/wxPython/samples/ide/activegrid/tool/SVNService.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/tool/SVNService.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/tool/SVNService.py
+--- a/wxPython/samples/ide/activegrid/tool/SVNService.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/tool/SVNService.py	Fri May 20 17:06:31 2011 +0200
 @@ -168,7 +168,7 @@
  
          sizer = wx.FlexGridSizer(cols = 2, hgap = 5, vgap = 5)
                  sizer.Add(wx.StaticText(dlg, -1, "%s:" % k), 0, wx.ALIGN_CENTER_VERTICAL)
                  sizer.Add(wx.StaticText(dlg, -1, "%s"  % trustDict[k]), 0, wx.ALIGN_CENTER_VERTICAL)
  
-diff -r 032d33777dde wxPython/samples/ide/activegrid/tool/checker.py
---- a/wxPython/samples/ide/activegrid/tool/checker.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/tool/checker.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/tool/checker.py
+--- a/wxPython/samples/ide/activegrid/tool/checker.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/tool/checker.py	Fri May 20 17:06:31 2011 +0200
 @@ -858,7 +858,7 @@
  ##    def _get_unique_warnings(warnings):
  ##        for i in range(len(warnings)-1, -1, -1):
  ##        pymodule = _orig__import__(name, globals, locals, fromlist)
  ##        if check :
  ##            try :
-diff -r 032d33777dde wxPython/samples/ide/activegrid/tool/process.py
---- a/wxPython/samples/ide/activegrid/tool/process.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/tool/process.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/tool/process.py
+--- a/wxPython/samples/ide/activegrid/tool/process.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/tool/process.py	Fri May 20 17:06:31 2011 +0200
 @@ -291,10 +291,7 @@
          else:
              return None
  
  
  def _whichFirstArg(cmd, env=None):
-diff -r 032d33777dde wxPython/samples/ide/activegrid/util/aglogging.py
---- a/wxPython/samples/ide/activegrid/util/aglogging.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/util/aglogging.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/util/aglogging.py
+--- a/wxPython/samples/ide/activegrid/util/aglogging.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/util/aglogging.py	Fri May 20 17:06:31 2011 +0200
 @@ -188,7 +188,7 @@
              setattr(e, EXCEPTION_INFO, {})
          except:
          e.exceptionInfo[key] = value
              
  def reportException(exception, out=None, stacktrace=False, diffable=False):
-diff -r 032d33777dde wxPython/samples/ide/activegrid/util/fileutils.py
---- a/wxPython/samples/ide/activegrid/util/fileutils.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/util/fileutils.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/util/fileutils.py
+--- a/wxPython/samples/ide/activegrid/util/fileutils.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/util/fileutils.py	Fri May 20 17:06:31 2011 +0200
 @@ -410,7 +410,7 @@
      if useEnv:
          for key, val in os.environ.items():
                  tokens[key] = val        
      
      f = open(infilepath, "r")
-diff -r 032d33777dde wxPython/samples/ide/activegrid/util/objutils.py
---- a/wxPython/samples/ide/activegrid/util/objutils.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/util/objutils.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/util/objutils.py
+--- a/wxPython/samples/ide/activegrid/util/objutils.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/util/objutils.py	Fri May 20 17:06:31 2011 +0200
 @@ -31,7 +31,7 @@
          return False
      if name != FUNCTION_HAS_ATTR and hasattr(obj, FUNCTION_HAS_ATTR):
          return __builtin__.__dict__[typeName]
      return None
      
-diff -r 032d33777dde wxPython/samples/ide/activegrid/util/utillang.py
---- a/wxPython/samples/ide/activegrid/util/utillang.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/util/utillang.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/util/utillang.py
+--- a/wxPython/samples/ide/activegrid/util/utillang.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/util/utillang.py	Fri May 20 17:06:31 2011 +0200
 @@ -75,9 +75,7 @@
      return tempfile.gettempdir()
  
                  return self.specialEntries[key]
              raise KeyError(e.args)
      def __setitem__(self, key, item): setattr(self.obj, key, item)
-diff -r 032d33777dde wxPython/samples/ide/activegrid/util/xmlmarshaller.py
---- a/wxPython/samples/ide/activegrid/util/xmlmarshaller.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/samples/ide/activegrid/util/xmlmarshaller.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/samples/ide/activegrid/util/xmlmarshaller.py
+--- a/wxPython/samples/ide/activegrid/util/xmlmarshaller.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/samples/ide/activegrid/util/xmlmarshaller.py	Fri May 20 17:06:31 2011 +0200
 @@ -242,7 +242,7 @@
              else:
                  self.__xmlname__ = xmlName[i+1:]
                  obj = tuple(obj)
          endIfDef()
              
-diff -r 032d33777dde wxPython/sandbox/test_widgetLayout.py
---- a/wxPython/sandbox/test_widgetLayout.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/sandbox/test_widgetLayout.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/sandbox/test_widgetLayout.py
+--- a/wxPython/sandbox/test_widgetLayout.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/sandbox/test_widgetLayout.py	Fri May 20 17:06:31 2011 +0200
 @@ -290,7 +290,7 @@
              postCreate = postCreate.replace('\r', '\n')
  
              try:
                  m = __import__(moduleName)
              except importError:
-diff -r 032d33777dde wxPython/src/_font.i
---- a/wxPython/src/_font.i	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/src/_font.i	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/src/_font.i
+--- a/wxPython/src/_font.i	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/src/_font.i	Fri May 20 17:06:31 2011 +0200
 @@ -532,7 +532,7 @@
  
  class wxFont : public wxGDIObject {
  
      DocCtorStr(
          wxFont( int pointSize,
-diff -r 032d33777dde wxPython/src/_radio.i
---- a/wxPython/src/_radio.i	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/src/_radio.i	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/src/_radio.i
+--- a/wxPython/src/_radio.i	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/src/_radio.i	Fri May 20 17:06:31 2011 +0200
 @@ -26,7 +26,7 @@
  class wxRadioBox : public wxControl
  {
      %pythonPrepend wxRadioBox()       ""
      %pythonAppend  wxRadioBox         "self._setOORInfo(self)"
      %pythonAppend  wxRadioBox()       ""
-diff -r 032d33777dde wxPython/src/_slider.i
---- a/wxPython/src/_slider.i	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/src/_slider.i	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/src/_slider.i
+--- a/wxPython/src/_slider.i	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/src/_slider.i	Fri May 20 17:06:31 2011 +0200
 @@ -47,7 +47,7 @@
  
  class wxSlider : public wxControl {
      %pythonPrepend wxSlider()       ""
      %pythonAppend  wxSlider         "self._setOORInfo(self)"
      %pythonAppend  wxSlider()       ""
-diff -r 032d33777dde wxPython/src/_splitter.i
---- a/wxPython/src/_splitter.i	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/src/_splitter.i	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/src/_splitter.i
+--- a/wxPython/src/_splitter.i	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/src/_splitter.i	Fri May 20 17:06:31 2011 +0200
 @@ -110,7 +110,7 @@
  class wxSplitterWindow: public wxWindow
  {
      %pythonPrepend wxSplitterWindow()       ""
      %pythonAppend  wxSplitterWindow         "self._setOORInfo(self)"
      %pythonAppend  wxSplitterWindow()       ""
-diff -r 032d33777dde wxPython/wx/lib/floatbar.py
---- a/wxPython/wx/lib/floatbar.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/floatbar.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/floatbar.py
+--- a/wxPython/wx/lib/floatbar.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/floatbar.py	Fri May 20 17:06:31 2011 +0200
 @@ -90,17 +90,11 @@
              """
              wx.ToolBar.__init__(self, parent, *_args, **_kwargs)
              self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouse)
  
  
-diff -r 032d33777dde wxPython/wx/lib/masked/combobox.py
---- a/wxPython/wx/lib/masked/combobox.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/masked/combobox.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/masked/combobox.py
+--- a/wxPython/wx/lib/masked/combobox.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/masked/combobox.py	Fri May 20 17:06:31 2011 +0200
 @@ -92,7 +92,7 @@
          kwargs['choices'] = choices                 ## set up maskededit to work with choice list too
  
                      self._keyhandlers[key](event)
                  # else pass
              else:
-diff -r 032d33777dde wxPython/wx/lib/masked/ctrl.py
---- a/wxPython/wx/lib/masked/ctrl.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/masked/ctrl.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/masked/ctrl.py
+--- a/wxPython/wx/lib/masked/ctrl.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/masked/ctrl.py	Fri May 20 17:06:31 2011 +0200
 @@ -80,11 +80,7 @@
      Actually a factory function providing a unifying
      interface for generating masked controls.
  
      if controlType == TEXT:
          return TextCtrl(*args, **kwargs)
-diff -r 032d33777dde wxPython/wx/lib/masked/ipaddrctrl.py
---- a/wxPython/wx/lib/masked/ipaddrctrl.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/masked/ipaddrctrl.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/masked/ipaddrctrl.py
+--- a/wxPython/wx/lib/masked/ipaddrctrl.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/masked/ipaddrctrl.py	Fri May 20 17:06:31 2011 +0200
 @@ -87,11 +87,11 @@
                    setupEventHandling = True,        ## setup event handling by default
                    **kwargs):
              kwargs['validRegex'] = "(  \d| \d\d|(1\d\d|2[0-4]\d|25[0-5]))(\.(  \d| \d\d|(1\d\d|2[0-4]\d|25[0-5]))){3}"
  
  
-diff -r 032d33777dde wxPython/wx/lib/masked/maskededit.py
---- a/wxPython/wx/lib/masked/maskededit.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/masked/maskededit.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/masked/maskededit.py
+--- a/wxPython/wx/lib/masked/maskededit.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/masked/maskededit.py	Fri May 20 17:06:31 2011 +0200
 @@ -1365,7 +1365,7 @@
          # populate initial parameter list for configuration:
          for key, value in Field.valid_params.items():
              # there's an override for default behavior; use override function instead
  ##            dbg('using supplied key handler:', self._keyhandlers[key])
              keep_processing = self._keyhandlers[key](event)
-diff -r 032d33777dde wxPython/wx/lib/masked/numctrl.py
---- a/wxPython/wx/lib/masked/numctrl.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/masked/numctrl.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/masked/numctrl.py
+--- a/wxPython/wx/lib/masked/numctrl.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/masked/numctrl.py	Fri May 20 17:06:31 2011 +0200
 @@ -550,7 +550,7 @@
  
          fields = {}
              text = old_numvalue
          
          if text != self._GetValue():
-diff -r 032d33777dde wxPython/wx/lib/masked/timectrl.py
---- a/wxPython/wx/lib/masked/timectrl.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/masked/timectrl.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/masked/timectrl.py
+--- a/wxPython/wx/lib/masked/timectrl.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/masked/timectrl.py	Fri May 20 17:06:31 2011 +0200
 @@ -389,28 +389,28 @@
          limited = self.__limited
          self.__posCurrent = 0
                  self.__displaySeconds = param_value
                  reset_format = True
  
-diff -r 032d33777dde wxPython/wx/lib/mvctree.py
---- a/wxPython/wx/lib/mvctree.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/mvctree.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/mvctree.py
+--- a/wxPython/wx/lib/mvctree.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/mvctree.py	Fri May 20 17:06:31 2011 +0200
 @@ -325,7 +325,7 @@
      def SetRoot(self, root):
          self.root = root
  
      def IsLeaf(self, node):
          return not os.path.isdir(node.path + os.sep + node.fileName)
-diff -r 032d33777dde wxPython/wx/lib/sized_controls.py
---- a/wxPython/wx/lib/sized_controls.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wx/lib/sized_controls.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wx/lib/sized_controls.py
+--- a/wxPython/wx/lib/sized_controls.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wx/lib/sized_controls.py	Fri May 20 17:06:31 2011 +0200
 @@ -499,37 +499,37 @@
              
          elif type == "table":
                  sizer.SetVGap(options['vgap'])
          if sizer:
              self._SetNewSizer(sizer)
-diff -r 032d33777dde wxPython/wxversion/wxversion.py
---- a/wxPython/wxversion/wxversion.py	Thu May 19 21:25:10 2011 +0200
-+++ b/wxPython/wxversion/wxversion.py	Thu May 19 21:26:19 2011 +0200
+diff -r 7339eff58326 wxPython/wxversion/wxversion.py
+--- a/wxPython/wxversion/wxversion.py	Fri May 20 16:32:50 2011 +0200
++++ b/wxPython/wxversion/wxversion.py	Fri May 20 17:06:31 2011 +0200
 @@ -140,7 +140,7 @@
  
      # If we get here then this is the first time wxversion is used, 

File modern-string-module.patch

-diff -r 51c960824b9e wxPython/demo/MaskedEditControls.py
---- a/wxPython/demo/MaskedEditControls.py	Mon Aug 30 17:26:16 2010 +0200
-+++ b/wxPython/demo/MaskedEditControls.py	Mon Aug 30 17:28:47 2010 +0200
+diff -r 6b22e8df0caa wx/build/tools/builder.py
+--- a/wx/build/tools/builder.py	Fri May 20 17:06:36 2011 +0200
++++ b/wx/build/tools/builder.py	Fri May 20 19:12:30 2011 +0200
+@@ -175,7 +175,7 @@
+             sys.stderr.write("Could not find configure script at %r. Have you run autoconf?\n" % dir)
+             return 1
+ 
+-        optionsStr = string.join(options, " ") if options else ""
++        optionsStr = " ".join(options) if options else ""
+         command = "%s %s" % (configure_cmd, optionsStr)
+         print command
+         result = os.system(command)
+diff -r 6b22e8df0caa wxPython/demo/MaskedEditControls.py
+--- a/wxPython/demo/MaskedEditControls.py	Fri May 20 17:06:36 2011 +0200
++++ b/wxPython/demo/MaskedEditControls.py	Fri May 20 19:12:30 2011 +0200
 @@ -1,5 +1,4 @@
  
 -import  string
          fieldsDict = {0: masked.Field(choices=numerators, choiceRequired=False),
                        1: masked.Field(choices=denominators, choiceRequired=True)}
          choices = []
-diff -r 51c960824b9e wxPython/demo/Validator.py
---- a/wxPython/demo/Validator.py	Mon Aug 30 17:26:16 2010 +0200
-+++ b/wxPython/demo/Validator.py	Mon Aug 30 17:28:47 2010 +0200
+diff -r 6b22e8df0caa wxPython/demo/Validator.py
+--- a/wxPython/demo/Validator.py	Fri May 20 17:06:36 2011 +0200
++++ b/wxPython/demo/Validator.py	Fri May 20 19:12:30 2011 +0200
 @@ -1,5 +1,4 @@
  
 -import  string
              event.Skip()
              return
  
-diff -r 51c960824b9e wxPython/wx/lib/masked/maskededit.py
---- a/wxPython/wx/lib/masked/maskededit.py	Mon Aug 30 17:26:16 2010 +0200
-+++ b/wxPython/wx/lib/masked/maskededit.py	Mon Aug 30 17:28:47 2010 +0200
+diff -r 6b22e8df0caa wxPython/wx/lib/masked/maskededit.py
+--- a/wxPython/wx/lib/masked/maskededit.py	Fri May 20 17:06:36 2011 +0200
++++ b/wxPython/wx/lib/masked/maskededit.py	Fri May 20 19:12:30 2011 +0200
 @@ -984,7 +984,7 @@
         "USSTATE": {
             'mask': "AA",
              s = s[:match.start(1)] + replacement + s[match.end(2)+1:]   #account for trailing '}'
              match = rex.search(s)                               # look for another such entry in mask
  
-@@ -2368,7 +2368,7 @@
+@@ -2369,7 +2369,7 @@
                  if 1 not in self._fields:
                      self._fields[1] = Field()
  
  ##                dbg('decimal pos =', self._decimalpos)
  
                  formatcodes = self._fields[0]._GetParameter('formatcodes')
-@@ -2556,7 +2556,7 @@
+@@ -2557,7 +2557,7 @@
          self._fields[-1]._template = self._template     # (for consistency)
  
          if curvalue:    # had an old value, put new one back together
          else:
              newvalue = None
  
-@@ -4411,7 +4411,7 @@
+@@ -4412,7 +4412,7 @@
  ##        dbg('intStr "%(intStr)s"' % locals())
  ##        dbg('lenInt:', lenInt)
  
  ##        dbg('right-justifed intStr = "%(intStr)s"' % locals())
          newvalue = intStr + self._decimalChar + fracStr
  
-@@ -4426,7 +4426,7 @@
+@@ -4427,7 +4427,7 @@
          newdecpos = newvalue.find(self._decimalChar)
          if newdecpos < self._decimalpos:
              padlen = self._decimalpos - newdecpos
  
          if self._signOk and self._useParens:
              if newvalue.find('(') != -1:
-@@ -4495,7 +4495,7 @@
+@@ -4496,7 +4496,7 @@
              year_field = 2
  
  ##        dbg('getYear: "%s"' % _getYear(text, self._datestyle))
          month   = _getMonth( text, self._datestyle)
          day     = _getDay( text, self._datestyle)
  ##        dbg('self._datestyle:', self._datestyle, 'year:', year, 'Month', month, 'day:', day)
-@@ -5058,7 +5058,7 @@
+@@ -5059,7 +5059,7 @@
                  else:
                      newvalue[i] = self._template[i]
  
  ##        dbg('new value: "%s"' % value)
  ##        dbg(indent=0)
          return value
-@@ -5940,7 +5940,7 @@
+@@ -5941,7 +5941,7 @@
  
              new_text = text[:sel_start] + replacement_text + text[replace_to:]
              if new_text:
              if signed:
                  new_text, signpos, right_signpos = self._getSignedValue(candidate=new_text)
                  if new_text:
-diff -r 51c960824b9e wxPython/wx/lib/masked/numctrl.py
---- a/wxPython/wx/lib/masked/numctrl.py	Mon Aug 30 17:26:16 2010 +0200
-+++ b/wxPython/wx/lib/masked/numctrl.py	Mon Aug 30 17:28:47 2010 +0200
+diff -r 6b22e8df0caa wxPython/wx/lib/masked/numctrl.py
+--- a/wxPython/wx/lib/masked/numctrl.py	Fri May 20 17:06:36 2011 +0200
++++ b/wxPython/wx/lib/masked/numctrl.py	Fri May 20 19:12:30 2011 +0200
 @@ -398,7 +398,6 @@
  """
  

File py3k-PyInt.patch

-diff -r ac64b1289dcc wxPython/contrib/activex/activex.i
---- a/wxPython/contrib/activex/activex.i	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/contrib/activex/activex.i	Wed Nov 24 19:40:49 2010 +0100
+diff -r 65a5ac9d6c4d wxPython/contrib/activex/activex.i
+--- a/wxPython/contrib/activex/activex.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/contrib/activex/activex.i	Sat May 21 10:39:02 2011 +0200
 @@ -154,7 +154,7 @@
          bool __nonzero__()          { return self->size() > 0; }
          int  __len__()              { return self->size(); }
  
      else if (PyFloat_Check(value))
          rval = PyFloat_AS_DOUBLE(value);
-diff -r ac64b1289dcc wxPython/distrib/propgrid/create_vcw.py
---- a/wxPython/distrib/propgrid/create_vcw.py	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/distrib/propgrid/create_vcw.py	Wed Nov 24 19:40:49 2010 +0100
+diff -r 65a5ac9d6c4d wxPython/distrib/propgrid/create_vcw.py
+--- a/wxPython/distrib/propgrid/create_vcw.py	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/distrib/propgrid/create_vcw.py	Sat May 21 10:39:02 2011 +0200
 @@ -410,11 +410,11 @@
          self.add_simple_typemap('out', 'unsigned long', '$result = PyInt_FromLong((long)$1);')
          self.add_simple_typemap('out', 'size_t', '$result = PyInt_FromLong((size_t)$1);')
          self.add_simple_typemap('in', 'bool', typemap_in_bool)
  
  
-diff -r ac64b1289dcc wxPython/include/wx/wxPython/wxPython_int.h
---- a/wxPython/include/wx/wxPython/wxPython_int.h	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/include/wx/wxPython/wxPython_int.h	Wed Nov 24 19:40:49 2010 +0100
-@@ -221,6 +221,13 @@
+diff -r 65a5ac9d6c4d wxPython/include/wx/wxPython/wxPython_int.h
+--- a/wxPython/include/wx/wxPython/wxPython_int.h	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/include/wx/wxPython/wxPython_int.h	Sat May 21 10:39:02 2011 +0200
+@@ -222,6 +222,14 @@
  typedef int Py_ssize_t;
  #endif
  
 +#if PY_VERSION_HEX >= 0x03000000
 +#define PyInt_Check(x) PyLong_Check(x)
++#define PyInt_CheckExact(x) PyLong_CheckExact(x)
 +#define PyInt_AsLong(x) PyLong_AsLong(x)
 +#define PyInt_FromLong(x) PyLong_FromLong(x)
 +#define PyNumber_Int(x) PyNumber_Long(x)
  
  #ifndef wxPyUSE_EXPORTED_API
  
-diff -r ac64b1289dcc wxPython/src/helpers.cpp
---- a/wxPython/src/helpers.cpp	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/src/helpers.cpp	Wed Nov 24 19:40:49 2010 +0100
+diff -r 65a5ac9d6c4d wxPython/src/helpers.cpp
+--- a/wxPython/src/helpers.cpp	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/helpers.cpp	Sat May 21 10:39:02 2011 +0200
 @@ -539,7 +539,6 @@
      bool        result;
      wxPyBlock_t blocked;
  
      // Only initialize wxWidgets once
      if (! haveInitialized) {
-@@ -636,12 +635,11 @@
+@@ -635,12 +634,11 @@
              // up to the wx.PyApp.__init__ scope.
              goto error;
  
      }
      else {
          // Is it okay if there is no OnInit?  Probably so...
-@@ -654,7 +652,6 @@
+@@ -653,7 +651,6 @@
  
   error:
      Py_XDECREF(retval);
  
      wxPyEndBlockThreads(blocked);
  };
-@@ -2489,7 +2486,7 @@
+@@ -2488,7 +2485,7 @@
  {
      // get the x value
      if (PyInt_Check(o1))
      else if (PyFloat_Check(o1))
          point->x = (int)PyFloat_AS_DOUBLE(o1);
      else if (PyNumber_Check(o1))
-@@ -2499,7 +2496,7 @@
+@@ -2498,7 +2495,7 @@
  
      // get the y value
      if (PyInt_Check(o2))
      else if (PyFloat_Check(o2))
          point->y = (int)PyFloat_AS_DOUBLE(o2);
      else if (PyNumber_Check(o2))
-@@ -2522,7 +2519,7 @@
+@@ -2521,7 +2518,7 @@
  {
      // get the x value
      if (PyInt_Check(o1))
      else if (PyFloat_Check(o1))
          point->m_x = (double)PyFloat_AS_DOUBLE(o1);
      else if (PyNumber_Check(o1))
-@@ -2532,7 +2529,7 @@
+@@ -2531,7 +2528,7 @@
  
      // get the y value
      if (PyInt_Check(o2))
      else if (PyFloat_Check(o2))
          point->m_y = (double)PyFloat_AS_DOUBLE(o2);
      else if (PyNumber_Check(o2))
-@@ -3357,7 +3354,7 @@
+@@ -3356,7 +3353,7 @@
      if (PyBool_Check(source))
          ret = (bool)(source == Py_True);
      else if (PyInt_Check(source))
      else if (PyFloat_Check(source))
          ret = PyFloat_AS_DOUBLE(source);
      else if (PyString_Check(source) || PyUnicode_Check(source))
-diff -r ac64b1289dcc wxPython/src/my_typemaps.i
---- a/wxPython/src/my_typemaps.i	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/src/my_typemaps.i	Wed Nov 24 19:40:49 2010 +0100
+diff -r 65a5ac9d6c4d wxPython/src/my_typemaps.i
+--- a/wxPython/src/my_typemaps.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/my_typemaps.i	Sat May 21 10:39:02 2011 +0200
 @@ -269,14 +269,12 @@
      int i, len=PySequence_Length($input);
      for (i=0; i<len; i++) {
      }
  }
  
-diff -r ac64b1289dcc wxPython/src/propgrid.i
---- a/wxPython/src/propgrid.i	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/src/propgrid.i	Wed Nov 24 19:40:49 2010 +0100
+diff -r 65a5ac9d6c4d wxPython/src/propgrid.i
+--- a/wxPython/src/propgrid.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/propgrid.i	Sat May 21 10:39:02 2011 +0200
 @@ -405,7 +405,7 @@
                      long val;
                      if ( PyInt_CheckExact(item) )
                      }
                      else if ( PyLong_CheckExact(item) )
                      {
-diff -r ac64b1289dcc wxPython/src/propgrid_cbacks.cpp
---- a/wxPython/src/propgrid_cbacks.cpp	Wed Nov 24 19:39:48 2010 +0100
-+++ b/wxPython/src/propgrid_cbacks.cpp	Wed Nov 24 19:40:49 2010 +0100
+diff -r 65a5ac9d6c4d wxPython/src/propgrid_cbacks.cpp
+--- a/wxPython/src/propgrid_cbacks.cpp	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/propgrid_cbacks.cpp	Sat May 21 10:39:02 2011 +0200
 @@ -239,7 +239,7 @@
      if (PyErr_Occurred()) SWIG_fail;
      {

File py3k-compatible-map.patch

+diff -r db1954603d98 wxPython/wx/lib/itemspicker.py
+--- a/wxPython/wx/lib/itemspicker.py	Sat May 21 15:58:55 2011 +0200
++++ b/wxPython/wx/lib/itemspicker.py	Sat May 21 16:03:35 2011 +0200
+@@ -133,7 +133,7 @@
+             
+     def _MoveItems(self,source,dest):
+         selections = source.GetSelections()
+-        selectedItems = map(source.GetString, selections)
++        selectedItems = [source.GetString(s) for s in selections]
+         dest.SetItems(dest.GetItems() + selectedItems)
+         selections = set(selections)
+         source.SetItems([item for i, item in enumerate(source.GetItems())\

File py3k-compatible-single-print.patch

-diff -r 13ea54f451ea wx/build/tools/build-wxwidgets.py
---- a/wx/build/tools/build-wxwidgets.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wx/build/tools/build-wxwidgets.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wx/build/tools/build-wxwidgets.py
+--- a/wx/build/tools/build-wxwidgets.py	Sat May 21 14:57:08 2011 +0200
++++ b/wx/build/tools/build-wxwidgets.py	Sat May 21 15:58:51 2011 +0200
 @@ -56,7 +56,7 @@
  
  def exitIfError(code, msg):
          run(cmd)
          
          os.chdir(options.mac_distdir)
-diff -r 13ea54f451ea wx/build/tools/builder.py
---- a/wx/build/tools/builder.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wx/build/tools/builder.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wx/build/tools/builder.py
+--- a/wx/build/tools/builder.py	Sat May 21 14:57:08 2011 +0200
++++ b/wx/build/tools/builder.py	Sat May 21 15:58:51 2011 +0200
 @@ -18,7 +18,7 @@
  
      commandStr = " ".join(command)
      if dir:
 @@ -177,7 +177,7 @@
  
-         optionsStr = string.join(options, " ") if options else ""
+         optionsStr = " ".join(options) if options else ""
          command = "%s %s" % (configure_cmd, optionsStr)
 -        print command
 +        print(command)
          result = os.system(command)
          #os.chdir(olddir)
          return result
-diff -r 13ea54f451ea wxPython/build-wxpython.py
---- a/wxPython/build-wxpython.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/build-wxpython.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/b
+--- a/wxPython/b	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/b	Sat May 21 15:58:51 2011 +0200
+@@ -33,7 +33,7 @@
+     fi
+ fi
+ echo "Using:" `which $PYTHON`
+-$PYTHON -c "import sys;print sys.version, '\n'"
++$PYTHON -c "import sys;print(sys.version + '\n')"
+ 
+ 
+ if [ "$SWIG" = "" ]; then
+diff -r dd7115ed8251 wxPython/build-wxpython.py
+--- a/wxPython/build-wxpython.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/build-wxpython.py	Sat May 21 15:58:51 2011 +0200
 @@ -39,7 +39,7 @@
      sys.path.insert(0, os.path.dirname(wxscript))
      wxbuild = __import__('build-wxwidgets')
 +print(" - Run python demo/demo.py")
 +print("")
  
-diff -r 13ea54f451ea wxPython/config.py
---- a/wxPython/config.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/config.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/config.py
+--- a/wxPython/config.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/config.py	Sat May 21 15:58:51 2011 +0200
 @@ -32,7 +32,7 @@
          ez_setup.use_setuptools()
          from setuptools import setup, Extension
      
  
  #----------------------------------------------------------------------
-diff -r 13ea54f451ea wxPython/demo/ComboBox.py
---- a/wxPython/demo/ComboBox.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/ComboBox.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/ComboBox.py
+--- a/wxPython/demo/ComboBox.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/ComboBox.py	Sat May 21 15:58:51 2011 +0200
 @@ -5,11 +5,11 @@
  
  class TestComboBox(wx.Panel):
          evt.Skip()
  
      def __init__(self, parent, log):
-diff -r 13ea54f451ea wxPython/demo/FloatBar.py
---- a/wxPython/demo/FloatBar.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/FloatBar.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/FloatBar.py
+--- a/wxPython/demo/FloatBar.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/FloatBar.py	Sat May 21 15:58:51 2011 +0200
 @@ -74,7 +74,7 @@
          self.log.WriteText("tool %s clicked\n" % event.GetId())
  
  
              if event.GetExtraLong():
                  self.tb.SetTitle("")
-diff -r 13ea54f451ea wxPython/demo/FloatCanvas.py
---- a/wxPython/demo/FloatCanvas.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/FloatCanvas.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/FloatCanvas.py
+--- a/wxPython/demo/FloatCanvas.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/FloatCanvas.py	Sat May 21 15:58:51 2011 +0200
 @@ -1384,11 +1384,11 @@
              for i in range(1000):
                  Point = (random.uniform(BigRange[0],BigRange[1]),random.uniform(BigRange[0],BigRange[1]))
              if AllLines:
                  Lines = []
                  for segment in Shorelines:
-diff -r 13ea54f451ea wxPython/demo/GridBagSizer.py
---- a/wxPython/demo/GridBagSizer.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/GridBagSizer.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/GridBagSizer.py
+--- a/wxPython/demo/GridBagSizer.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/GridBagSizer.py	Sat May 21 15:58:51 2011 +0200
 @@ -118,9 +118,9 @@
          pt = evt.GetPosition()
          item = self.gbs.FindItemAtPoint(pt)
  
          
  #---------------------------------------------------------------------------
-diff -r 13ea54f451ea wxPython/demo/GridCustTable.py
---- a/wxPython/demo/GridCustTable.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/GridCustTable.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/GridCustTable.py
+--- a/wxPython/demo/GridCustTable.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/GridCustTable.py	Sat May 21 15:58:51 2011 +0200
 @@ -154,10 +154,10 @@
          p.SetSizer(bs)
  
  
  
  #---------------------------------------------------------------------------
-diff -r 13ea54f451ea wxPython/demo/GridHugeTable.py
---- a/wxPython/demo/GridHugeTable.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/GridHugeTable.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/GridHugeTable.py
+--- a/wxPython/demo/GridHugeTable.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/GridHugeTable.py	Sat May 21 15:58:51 2011 +0200
 @@ -61,8 +61,8 @@
          self.Bind(gridlib.EVT_GRID_CELL_RIGHT_CLICK, self.OnRightDown)  
  
  
  
  #---------------------------------------------------------------------------
-diff -r 13ea54f451ea wxPython/demo/ListCtrl.py
---- a/wxPython/demo/ListCtrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/ListCtrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/ListCtrl.py
+--- a/wxPython/demo/ListCtrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/ListCtrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -335,8 +335,8 @@
  
      def OnPopupOne(self, event):
  
      def OnPopupSix(self, event):
          self.list.EditLabel(self.currentItem)
-diff -r 13ea54f451ea wxPython/demo/Main.py
---- a/wxPython/demo/Main.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/Main.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/Main.py
+--- a/wxPython/demo/Main.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/Main.py	Sat May 21 15:58:51 2011 +0200
 @@ -2466,10 +2466,10 @@
          app = wx.GetApp()
          if event.Checked():
  
  
      def OnAllowDownload(self, event):
-diff -r 13ea54f451ea wxPython/demo/MiniFrame.py
---- a/wxPython/demo/MiniFrame.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/MiniFrame.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/MiniFrame.py
+--- a/wxPython/demo/MiniFrame.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/MiniFrame.py	Sat May 21 15:58:51 2011 +0200
 @@ -20,7 +20,7 @@
          self.Close(True)
  
          self.Destroy()
  
  #---------------------------------------------------------------------------
-diff -r 13ea54f451ea wxPython/demo/OGL.py
---- a/wxPython/demo/OGL.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/OGL.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/OGL.py
+--- a/wxPython/demo/OGL.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/OGL.py	Sat May 21 15:58:51 2011 +0200
 @@ -181,7 +181,7 @@
  
  
          ogl.DividedShape.OnSizingEndDragLeft(self, pt, x, y, keys, attch)
          self.SetRegionSizes()
          self.ReformatRegions()
-diff -r 13ea54f451ea wxPython/demo/PlateButton.py
---- a/wxPython/demo/PlateButton.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/PlateButton.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/PlateButton.py
+--- a/wxPython/demo/PlateButton.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/PlateButton.py	Sat May 21 15:58:51 2011 +0200
 @@ -253,7 +253,7 @@
          pass
  
  
  #----------------------------------------------------------------------
  
-diff -r 13ea54f451ea wxPython/demo/SizedControls.py
---- a/wxPython/demo/SizedControls.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/SizedControls.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/SizedControls.py
+--- a/wxPython/demo/SizedControls.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/SizedControls.py	Sat May 21 15:58:51 2011 +0200
 @@ -270,7 +270,7 @@
          
  
          dlg = FormDialog(self, -1)
          dlg.CenterOnScreen()
  
-diff -r 13ea54f451ea wxPython/demo/StyledTextCtrl_1.py
---- a/wxPython/demo/StyledTextCtrl_1.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/StyledTextCtrl_1.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/StyledTextCtrl_1.py
+--- a/wxPython/demo/StyledTextCtrl_1.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/StyledTextCtrl_1.py	Sat May 21 15:58:51 2011 +0200
 @@ -268,27 +268,26 @@
  
      # some test stuff...
  
  
      wx.CallAfter(ed.GotoPos, 0)
-diff -r 13ea54f451ea wxPython/demo/SystemSettings.py
---- a/wxPython/demo/SystemSettings.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/SystemSettings.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/SystemSettings.py
+--- a/wxPython/demo/SystemSettings.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/SystemSettings.py	Sat May 21 15:58:51 2011 +0200
 @@ -301,7 +301,7 @@
          pass
  
  
  #----------------------------------------------------------------------
  
-diff -r 13ea54f451ea wxPython/demo/TextCtrl.py
---- a/wxPython/demo/TextCtrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/TextCtrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/TextCtrl.py
+--- a/wxPython/demo/TextCtrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/TextCtrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -6,13 +6,13 @@
  
  class TestPanel(wx.Panel):
          evt.Skip()
  
  
-diff -r 13ea54f451ea wxPython/demo/TimeCtrl.py
---- a/wxPython/demo/TimeCtrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/TimeCtrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/TimeCtrl.py
+--- a/wxPython/demo/TimeCtrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/TimeCtrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -205,7 +205,7 @@
              min, max = None, None
  
          if min and (min != cur_min): self.target_ctrl.SetMin( min )
          if max and (max != cur_max): self.target_ctrl.SetMax( max )
  
-diff -r 13ea54f451ea wxPython/demo/UIActionSimulator.py
---- a/wxPython/demo/UIActionSimulator.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/UIActionSimulator.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/UIActionSimulator.py
+--- a/wxPython/demo/UIActionSimulator.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/UIActionSimulator.py	Sat May 21 15:58:51 2011 +0200
 @@ -88,7 +88,7 @@
      def _setNextKeyEvent(self):
          evtType, key, modifiers, milli = self._playbackEvents.pop(0)
          wx.CallLater(milli, self._playbackKey, evtType, key, modifiers)
              
      
-diff -r 13ea54f451ea wxPython/demo/XMLtreeview.py
---- a/wxPython/demo/XMLtreeview.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/XMLtreeview.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/XMLtreeview.py
+--- a/wxPython/demo/XMLtreeview.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/XMLtreeview.py	Sat May 21 15:58:51 2011 +0200
 @@ -44,11 +44,11 @@
          self.draggingItem = None
  
              return
  
          # For this simple example just take the text of the source item
-diff -r 13ea54f451ea wxPython/demo/agw/ListCtrl.py
---- a/wxPython/demo/agw/ListCtrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/agw/ListCtrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/agw/ListCtrl.py
+--- a/wxPython/demo/agw/ListCtrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/agw/ListCtrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -335,8 +335,8 @@
  
      def OnPopupOne(self, event):
  
      def OnPopupSix(self, event):
          self.list.EditLabel(self.currentItem)
-diff -r 13ea54f451ea wxPython/demo/agw/run.py
---- a/wxPython/demo/agw/run.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/agw/run.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/agw/run.py
+--- a/wxPython/demo/agw/run.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/agw/run.py	Sat May 21 15:58:51 2011 +0200
 @@ -23,8 +23,8 @@
  import sys, os
  
          raise SystemExit
  
      name, ext  = os.path.splitext(argv[1])
-diff -r 13ea54f451ea wxPython/demo/dllwidget/test_prog.py
---- a/wxPython/demo/dllwidget/test_prog.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/dllwidget/test_prog.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/dllwidget/test_prog.py
+--- a/wxPython/demo/dllwidget/test_prog.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/dllwidget/test_prog.py	Sat May 21 15:58:51 2011 +0200
 @@ -38,7 +38,7 @@
  
          if dw.Ok():
  
              # This shows that we can give it a child from this side of things.
              # You can also call any wxWindow methods on it too.
-diff -r 13ea54f451ea wxPython/demo/infoframe.py
---- a/wxPython/demo/infoframe.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/infoframe.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/infoframe.py
+--- a/wxPython/demo/infoframe.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/infoframe.py	Sat May 21 15:58:51 2011 +0200
 @@ -51,7 +51,7 @@
          # Now point to the output object for stdout
          sys.stdout = self.output = output
              return True
  
      # *extremely important*
-diff -r 13ea54f451ea wxPython/demo/run.py
---- a/wxPython/demo/run.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/demo/run.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/demo/run.py
+--- a/wxPython/demo/run.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/demo/run.py	Sat May 21 15:58:51 2011 +0200
 @@ -23,10 +23,10 @@
  import sys, os
  
          raise SystemExit
  
      name, ext  = os.path.splitext(argv[1])
-diff -r 13ea54f451ea wxPython/distrib/makemo.py
---- a/wxPython/distrib/makemo.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/distrib/makemo.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/distrib/makemo.py
+--- a/wxPython/distrib/makemo.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/distrib/makemo.py	Sat May 21 15:58:51 2011 +0200
 @@ -9,8 +9,8 @@
     if mo != 'wxstd.mo':
         if newer(po, mo):
         else:
 -           print "%s is up to date" % mo
 +           print("%s is up to date" % mo)
-diff -r 13ea54f451ea wxPython/src/_xrc_ex.py
---- a/wxPython/src/_xrc_ex.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/src/_xrc_ex.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/src/_xrc_ex.py
+--- a/wxPython/src/_xrc_ex.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/src/_xrc_ex.py	Sat May 21 15:58:51 2011 +0200
 @@ -14,7 +14,7 @@
          mod = __import__(name)
      except ImportError:
          raise
      components = name.split('.')
      for comp in components[1:]:
-diff -r 13ea54f451ea wxPython/wx/lib/evtmgr.py
---- a/wxPython/wx/lib/evtmgr.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/evtmgr.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/evtmgr.py
+--- a/wxPython/wx/lib/evtmgr.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/evtmgr.py	Sat May 21 15:58:51 2011 +0200
 @@ -446,9 +446,9 @@
      def Destroy(self):
          try:
              eventManager.DeregisterWindow(frame)
  
      # Send togglebutton events to both the on/off code as well
-diff -r 13ea54f451ea wxPython/wx/lib/filebrowsebutton.py
---- a/wxPython/wx/lib/filebrowsebutton.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/filebrowsebutton.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/filebrowsebutton.py
+--- a/wxPython/wx/lib/filebrowsebutton.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/filebrowsebutton.py	Sat May 21 15:58:51 2011 +0200
 @@ -371,7 +371,7 @@
          def __init__( self, tag ):
              self.tag = tag
      test( )
  
  
-diff -r 13ea54f451ea wxPython/wx/lib/floatbar.py
---- a/wxPython/wx/lib/floatbar.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/floatbar.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/floatbar.py
+--- a/wxPython/wx/lib/floatbar.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/floatbar.py	Sat May 21 15:58:51 2011 +0200
 @@ -125,7 +125,7 @@
  
  
                      self.nullbar.Reparent(self.floatframe)
                      self.parentframe.SetToolBar(None)
                      size = self.parentframe.GetSize()
-diff -r 13ea54f451ea wxPython/wx/lib/intctrl.py
---- a/wxPython/wx/lib/intctrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/intctrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/intctrl.py
+--- a/wxPython/wx/lib/intctrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/intctrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -879,7 +879,7 @@
              self.Bind(EVT_INT, self.OnInt, self.int_ctrl)
  
              del dlg
              self.frame.Destroy()
  
-diff -r 13ea54f451ea wxPython/wx/lib/langlistctrl.py
---- a/wxPython/wx/lib/langlistctrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/langlistctrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/itemspicker.py
+--- a/wxPython/wx/lib/itemspicker.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/itemspicker.py	Sat May 21 15:58:51 2011 +0200
+@@ -234,7 +234,7 @@
+     d.SetSizer(d.sizer)
+     test.SetTopWindow(frame)
+     def callback(e):
+-        print 'selected items', e.GetItems()
++        print('selected items: %r' % (e.GetItems(),))
+     d.Bind(EVT_IP_SELECTION_CHANGED, callback)
+     d.ShowModal()
+     d.Destroy()
+diff -r dd7115ed8251 wxPython/wx/lib/langlistctrl.py
+--- a/wxPython/wx/lib/langlistctrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/langlistctrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -400,7 +400,7 @@
  if __name__ == '__main__':
      a = wx.PySimpleApp()
      
      f=wx.Frame(None, -1)
      f.p=wx.Panel(f, -1)
-diff -r 13ea54f451ea wxPython/wx/lib/layoutf.py
---- a/wxPython/wx/lib/layoutf.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/layoutf.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/layoutf.py
+--- a/wxPython/wx/lib/layoutf.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/layoutf.py	Sat May 21 15:58:51 2011 +0200
 @@ -174,11 +174,11 @@
                  attr = getattr(self, self.attr_d[g[0]])
                  func = getattr(attr, self.op_d[g[1]])
  
  if __name__=='__main__':
  
-diff -r 13ea54f451ea wxPython/wx/lib/masked/ipaddrctrl.py
---- a/wxPython/wx/lib/masked/ipaddrctrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/masked/ipaddrctrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/masked/ipaddrctrl.py
+--- a/wxPython/wx/lib/masked/ipaddrctrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/masked/ipaddrctrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -155,7 +155,7 @@
      def _OnCtrl_S(self, event):
  ##        dbg("IpAddrCtrl::_OnCtrl_S")
          return False
  
      def SetValue(self, value):
-diff -r 13ea54f451ea wxPython/wx/lib/masked/maskededit.py
---- a/wxPython/wx/lib/masked/maskededit.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/masked/maskededit.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/masked/maskededit.py
+--- a/wxPython/wx/lib/masked/maskededit.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/masked/maskededit.py	Sat May 21 15:58:51 2011 +0200
 @@ -3317,9 +3317,9 @@
          """ Default Ctrl-S handler; prints value information if demo enabled. """
  ##        dbg("MaskedEditMixin::_OnCtrl_S")
  
  ## ---------- ---------- ---------- ---------- ---------- ---------- ----------
  
-diff -r 13ea54f451ea wxPython/wx/lib/masked/numctrl.py
---- a/wxPython/wx/lib/masked/numctrl.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/masked/numctrl.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/masked/numctrl.py
+--- a/wxPython/wx/lib/masked/numctrl.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/masked/numctrl.py	Sat May 21 15:58:51 2011 +0200
 @@ -1856,7 +1856,7 @@
              self.Bind(EVT_NUM, self.OnChange, self.int_ctrl)
  
              del dlg
              self.frame.Destroy()
  
-diff -r 13ea54f451ea wxPython/wx/lib/printout.py
---- a/wxPython/wx/lib/printout.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/printout.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/printout.py
+--- a/wxPython/wx/lib/printout.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/printout.py	Sat May 21 15:58:51 2011 +0200
 @@ -319,16 +319,18 @@
                  self.column.append(pos_x)   # position of each column
  
              return
  
          for col in range(column_total):
-diff -r 13ea54f451ea wxPython/wx/lib/pubsub/__init__.py
---- a/wxPython/wx/lib/pubsub/__init__.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/pubsub/__init__.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/pubsub/__init__.py
+--- a/wxPython/wx/lib/pubsub/__init__.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/pubsub/__init__.py	Sat May 21 15:58:51 2011 +0200
 @@ -47,7 +47,7 @@
      import sys
      ll = [mod for mod in sys.modules.keys() if mod.find('pubsub') >= 0]
  
  
  def _tryAutoSetupV1():
-diff -r 13ea54f451ea wxPython/wx/lib/sized_controls.py
---- a/wxPython/wx/lib/sized_controls.py	Thu May 19 21:44:28 2011 +0200
-+++ b/wxPython/wx/lib/sized_controls.py	Thu May 19 21:49:18 2011 +0200
+diff -r dd7115ed8251 wxPython/wx/lib/sized_controls.py
+--- a/wxPython/wx/lib/sized_controls.py	Sat May 21 14:57:08 2011 +0200
++++ b/wxPython/wx/lib/sized_controls.py	Sat May 21 15:58:51 2011 +0200
 @@ -96,7 +96,7 @@
              return wx.Size(10, 10)
              

File py3k-unicode-builtin.patch

-diff -r 467eb7fc72ae wxPython/demo/PropertyGrid.py
---- a/wxPython/demo/PropertyGrid.py	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/demo/PropertyGrid.py	Mon Aug 30 20:01:09 2010 +0200
-@@ -945,7 +945,8 @@
+diff -r ef54d67fcc04 wxPython/demo/PropertyGrid.py
+--- a/wxPython/demo/PropertyGrid.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/demo/PropertyGrid.py	Sat May 21 15:57:37 2011 +0200
+@@ -950,7 +950,8 @@
  
          # Test setting unicode string
          log.write('Testing setting an unicode string value')
  
          #
          # Test some code that *should* fail (but not crash)
-diff -r 467eb7fc72ae wxPython/src/propgrid.i
---- a/wxPython/src/propgrid.i	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/src/propgrid.i	Mon Aug 30 20:01:09 2010 +0200
-@@ -1204,7 +1204,7 @@
+diff -r ef54d67fcc04 wxPython/src/propgrid.i
+--- a/wxPython/src/propgrid.i	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/src/propgrid.i	Sat May 21 15:57:37 2011 +0200
+@@ -1228,7 +1228,7 @@
                  _type2property = mappings
  
              mappings[str] = StringProperty
              mappings[int] = IntProperty
              mappings[float] = FloatProperty
              mappings[bool] = BoolProperty
-@@ -1416,12 +1416,12 @@
+@@ -1440,12 +1440,12 @@
              RegisterEditor(editor, editorName)
  
          def GetPropertyClientData(self, p):
                  p = self.GetPropertyByName(p)
              return p.SetClientData(data)
  
-diff -r 467eb7fc72ae wxPython/wx/lib/masked/maskededit.py
---- a/wxPython/wx/lib/masked/maskededit.py	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/wx/lib/masked/maskededit.py	Mon Aug 30 20:01:09 2010 +0200
+diff -r ef54d67fcc04 wxPython/wx/lib/itemspicker.py
+--- a/wxPython/wx/lib/itemspicker.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/wx/lib/itemspicker.py	Sat May 21 15:57:37 2011 +0200
+@@ -228,8 +228,8 @@
+                  0, wx.ALL, 10)
+     ip = ItemsPicker(d, -1, ['pop', 'cool', 'lame'],
+                       'Stuff:', 'Selected stuff:',IP_SORT_SELECTED|IP_SORT_CHOICES|IP_REMOVE_FROM_CHOICES)
+-    ip.add_button_label = u'left -> right'
+-    ip.remove_button_label = u'right -> left'
++    ip.add_button_label = wx.compat.unicode('left -> right')
++    ip.remove_button_label = wx.compat.unicode('right -> left')
+     d.sizer.Add(ip, 1, wx.EXPAND, 1)
+     d.SetSizer(d.sizer)
+     test.SetTopWindow(frame)
+diff -r ef54d67fcc04 wxPython/wx/lib/masked/maskededit.py
+--- a/wxPython/wx/lib/masked/maskededit.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/wx/lib/masked/maskededit.py	Sat May 21 15:57:37 2011 +0200
 @@ -829,6 +829,7 @@
  import  re
  import  string
                      c = wx.NamedColour(ctrl_kwargs[key])
                      if c.Get() == (-1, -1, -1):
                          raise TypeError('%s not a legal color specification for %s' % (repr(ctrl_kwargs[key]), key))
-@@ -4599,7 +4600,7 @@
+@@ -4600,7 +4601,7 @@
  
          # convert okchars to unicode if required; will force subsequent appendings to
          # result in unicode strings
              okchars = okchars.decode(self._defaultEncoding)
  
          field = self._FindField(pos)
-@@ -5187,7 +5188,7 @@
+@@ -5188,7 +5189,7 @@
                  left  = text[0:pos]
                  right   = text[pos+1:]
  
                  # convert the keyboard constant to a unicode value, to
                  # ensure it can be concatenated into the control value:
                  char = char.decode(self._defaultEncoding)
-@@ -5725,7 +5726,7 @@
+@@ -5726,7 +5727,7 @@
          else:
              item = 'selection'
  ##        dbg('maxlength:', maxlength)
              paste_text = paste_text.decode(self._defaultEncoding)
  
          length_considered = len(paste_text)
-@@ -5832,7 +5833,7 @@
+@@ -5833,7 +5834,7 @@
  
          if paste_text is not None:
  
                  paste_text = paste_text.decode(self._defaultEncoding)
  
  ##            dbg('paste text: "%s"' % paste_text)
-diff -r 467eb7fc72ae wxPython/wx/lib/masked/numctrl.py
---- a/wxPython/wx/lib/masked/numctrl.py	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/wx/lib/masked/numctrl.py	Mon Aug 30 20:01:09 2010 +0200
+diff -r ef54d67fcc04 wxPython/wx/lib/masked/numctrl.py
+--- a/wxPython/wx/lib/masked/numctrl.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/wx/lib/masked/numctrl.py	Sat May 21 15:57:37 2011 +0200
 @@ -1468,7 +1468,7 @@
              elif self._fractionWidth:
                  value = float(value)
                  else:
  ##                    dbg('exception occurred; returning None')
                      return None
-diff -r 467eb7fc72ae wxPython/wx/lib/masked/timectrl.py
---- a/wxPython/wx/lib/masked/timectrl.py	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/wx/lib/masked/timectrl.py	Mon Aug 30 20:01:09 2010 +0200
+diff -r ef54d67fcc04 wxPython/wx/lib/masked/timectrl.py
+--- a/wxPython/wx/lib/masked/timectrl.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/wx/lib/masked/timectrl.py	Sat May 21 15:57:37 2011 +0200
 @@ -714,11 +714,9 @@
              value = self.GetValue()
  ##            dbg('value = "%s"' % value)
  
              # Construct constant wxDateTime, then try to parse the string:
              wxdt = wx.DateTimeFromDMY(1, 0, 1970)
-diff -r 467eb7fc72ae wxPython/wx/lib/printout.py
---- a/wxPython/wx/lib/printout.py	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/wx/lib/printout.py	Mon Aug 30 20:01:09 2010 +0200
+diff -r ef54d67fcc04 wxPython/wx/lib/printout.py
+--- a/wxPython/wx/lib/printout.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/wx/lib/printout.py	Sat May 21 15:57:37 2011 +0200
 @@ -269,7 +269,7 @@
          self.column.append(pos_x)
  
                  vtxt = str(vtxt)
              self.region = self.column[self.col+1] - self.column[self.col]
              self.indent = self.column[self.col]
-diff -r 467eb7fc72ae wxPython/wx/tools/compat.py
---- a/wxPython/wx/tools/compat.py	Mon Aug 30 20:00:41 2010 +0200
-+++ b/wxPython/wx/tools/compat.py	Mon Aug 30 20:01:09 2010 +0200
+diff -r ef54d67fcc04 wxPython/wx/tools/compat.py
+--- a/wxPython/wx/tools/compat.py	Sat May 21 15:53:20 2011 +0200
++++ b/wxPython/wx/tools/compat.py	Sat May 21 15:57:37 2011 +0200
 @@ -28,4 +28,14 @@
  else:
      def asbytes(x):

File py3k-wxString-conversion.patch

-diff -r 1b1ccf55fbd9 wxPython/contrib/activex/activex.i
---- a/wxPython/contrib/activex/activex.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/contrib/activex/activex.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wx/build/tools/build-wxwidgets.py
+--- a/wx/build/tools/build-wxwidgets.py	Sat May 21 10:32:41 2011 +0200
++++ b/wx/build/tools/build-wxwidgets.py	Sat May 21 10:37:22 2011 +0200
+@@ -219,6 +219,7 @@
+         
+         if options.unicode:
+             configure_opts.append("--enable-unicode")
++            configure_opts.append("--disable-utf8") # use wchar_t instead
+             
+         if options.debug:
+             configure_opts.append("--enable-debug")
+diff -r 954e17625462 wxPython/contrib/activex/activex.i
+--- a/wxPython/contrib/activex/activex.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/contrib/activex/activex.i	Sat May 21 10:37:22 2011 +0200
 @@ -695,7 +695,7 @@
      else if (PyFloat_Check(value))
          rval = PyFloat_AS_DOUBLE(value);
          rval = Py2wxString(value);
  
      // TODO:    PyList of strings --> wxArrayString
-diff -r 1b1ccf55fbd9 wxPython/demo/Main.py
---- a/wxPython/demo/Main.py	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/demo/Main.py	Wed Nov 24 19:42:55 2010 +0100
-@@ -708,8 +708,6 @@
+diff -r 954e17625462 wxPython/demo/Main.py
+--- a/wxPython/demo/Main.py	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/demo/Main.py	Sat May 21 10:37:22 2011 +0200
+@@ -710,8 +710,6 @@
  
          # Some methods to make it compatible with how the wxTextCtrl is used
          def SetValue(self, value):
              val = self.GetReadOnly()
              self.SetReadOnly(False)
              self.SetText(value)
-@@ -1194,8 +1192,6 @@
+@@ -1196,8 +1194,6 @@
      fullText = fid.read()
      fid.close()
      
      if fullText.find(keyword) >= 0:
          return True
  
-@@ -2372,8 +2368,6 @@
+@@ -2374,8 +2370,6 @@
          lead = text[:6]
          if lead != '<html>' and lead != '<HTML>':
              text = '<br>'.join(text.split('\n'))
          self.ovr.SetPage(text)
          self.nb.SetPageText(0, os.path.split(name)[1])
  
-@@ -2466,9 +2460,6 @@
+@@ -2468,9 +2462,6 @@
  
          self.pickledData[itemText] = data
  
          self.StopDownload()
          self.ovr.SetPage(text)
          #print "load time: ", time.time() - start
-diff -r 1b1ccf55fbd9 wxPython/src/_about.i
---- a/wxPython/src/_about.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/_about.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/_about.i
+--- a/wxPython/src/_about.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/_about.i	Sat May 21 10:37:22 2011 +0200
 @@ -180,10 +180,10 @@
              either be a single string for the URL, to a 2-tuple of
              (URL, Description) strings.
                      
          def GetWebSite(self):
              """
-diff -r 1b1ccf55fbd9 wxPython/src/_datetime.i
---- a/wxPython/src/_datetime.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/_datetime.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/_datetime.i
+--- a/wxPython/src/_datetime.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/_datetime.i	Sat May 21 10:37:22 2011 +0200
 @@ -872,13 +872,13 @@
      %pythoncode {
      def __repr__(self):
          else:
              return "INVALID DateTime"
      }
-diff -r 1b1ccf55fbd9 wxPython/src/_intl.i
---- a/wxPython/src/_intl.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/_intl.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/_intl.i
+--- a/wxPython/src/_intl.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/_intl.i	Sat May 21 10:37:22 2011 +0200
 @@ -375,12 +375,11 @@
      
  
      }
  
      // Try to get user's (or OS's) prefered language setting.
-diff -r 1b1ccf55fbd9 wxPython/src/drawlist.cpp
---- a/wxPython/src/drawlist.cpp	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/drawlist.cpp	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/drawlist.cpp
+--- a/wxPython/src/drawlist.cpp	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/drawlist.cpp	Sat May 21 10:37:22 2011 +0200
 @@ -258,7 +258,7 @@
              else {
                  obj = PySequence_GetItem(textList, i);
                  Py_DECREF(obj);
                  goto err1;
              }
-diff -r 1b1ccf55fbd9 wxPython/src/grid.i
---- a/wxPython/src/grid.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/grid.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/grid.i
+--- a/wxPython/src/grid.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/grid.i	Sat May 21 10:37:22 2011 +0200
 @@ -1299,7 +1299,7 @@
              PyObject* ro;
              ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(ii)",row,col));
                      PyObject* old = ro;
                      ro = PyObject_Str(ro);
                      Py_DECREF(old);
-diff -r 1b1ccf55fbd9 wxPython/src/helpers.cpp
---- a/wxPython/src/helpers.cpp	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/helpers.cpp	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/helpers.cpp
+--- a/wxPython/src/helpers.cpp	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/helpers.cpp	Sat May 21 10:37:22 2011 +0200
 @@ -57,6 +57,13 @@
  #error Python must support Unicode to use wxWindows Unicode
  #endif
  //----------------------------------------------------------------------
  
  wxPyApp* wxPythonApp = NULL;  // Global instance of application object
-@@ -2191,8 +2198,8 @@
+@@ -2190,8 +2197,8 @@
  wxString* wxString_in_helper(PyObject* source) {
      wxString* target = NULL;
  
          return NULL;
      }
  #if wxUSE_UNICODE
-@@ -2200,7 +2207,7 @@
+@@ -2199,17 +2206,17 @@
      // wxString is to contain wchar_t's, so convert if needed to a Unicode
      // object and then extract the characters.    
      PyObject* uni = source;
          uni = PyUnicode_FromEncodedObject(source, wxPyDefaultEncoding, "strict");
          if (PyErr_Occurred()) return NULL;
      }
-@@ -2210,7 +2217,7 @@
-         PyUnicode_AsWideChar((PyUnicodeObject*)uni, wxStringBuffer(*target, len), len);
+     target = new wxString();
+     size_t len = PyUnicode_GET_SIZE(uni);
+     if (len) {
+-        PyUnicode_AsWideChar((PyUnicodeObject*)uni, wxStringBuffer(*target, len), len);
++        PyUnicode_AsWideChar(uni, wxStringBuffer(*target, len), len);
      }
  
 -    if (PyString_Check(source))
          Py_DECREF(uni);
  #else
      // wxString is to contain a utf-8 encoded byte string.  If source is
-@@ -2219,18 +2226,18 @@
+@@ -2218,18 +2225,18 @@
      char* tmpPtr; Py_ssize_t tmpSize;
      PyObject* str = NULL;
      PyObject* uni = NULL;
      }
      target = new wxString(tmpPtr, tmpSize);
      Py_XDECREF(str);
-@@ -2275,7 +2282,7 @@
+@@ -2274,7 +2281,7 @@
      // wxString is to contain wchar_t's, so convert if needed to a Unicode
      // object and then extract the characters.    
      PyObject* uni = source;
          uni = PyUnicode_FromEncodedObject(source, wxPyDefaultEncoding, "strict");
          if (PyErr_Occurred()) {
              PyErr_Clear();
-@@ -2481,11 +2488,11 @@
+@@ -2290,7 +2297,7 @@
+     }
+     size_t len = PyUnicode_GET_SIZE(uni);
+     if (len) {
+-        PyUnicode_AsWideChar((PyUnicodeObject*)uni, wxStringBuffer(target, len), len);
++        PyUnicode_AsWideChar(uni, wxStringBuffer(target, len), len);
+     }
+ 
+     if (!PyUnicode_Check(source))
+@@ -2480,11 +2487,11 @@
      }
      for (int x=0; x<count; x++) {
          PyObject* o = PyList_GetItem(source, x);
      }
      return temp;
  }
-@@ -2765,17 +2772,10 @@
+@@ -2764,17 +2771,10 @@
      }
      for (int x=0; x<count; x++) {
          PyObject* o = PyList_GetItem(source, x);
  
          wxString* pStr = wxString_in_helper(o);
          temp[x] = *pStr;
-@@ -3062,7 +3062,7 @@
+@@ -3061,7 +3061,7 @@
          return true;
      }
      // otherwise check for a string
          wxString spec = Py2wxString(source);
          if (spec.GetChar(0) == '#' 
              && (spec.length() == 7 || spec.length() == 9)) {  // It's  #RRGGBB[AA]
-@@ -3373,7 +3373,7 @@
+@@ -3372,7 +3372,7 @@
          ret = PyInt_AsLong(source);
      else if (PyFloat_Check(source))
          ret = PyFloat_AS_DOUBLE(source);
 -    else if (PyString_Check(source) || PyUnicode_Check(source))
 +    else if (PyBytes_Check(source) || PyUnicode_Check(source))
          ret = Py2wxString(source);
-     else
-         ret = new wxVariantDataPyObject(source);
-diff -r 1b1ccf55fbd9 wxPython/src/html.i
---- a/wxPython/src/html.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/html.i	Wed Nov 24 19:42:55 2010 +0100
+     else if (wxPySimple_typecheck(source, wxT("wxDateTime"), -1)) {
+         wxDateTime* ptr;
+diff -r 954e17625462 wxPython/src/html.i
+--- a/wxPython/src/html.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/html.i	Sat May 21 10:37:22 2011 +0200
 @@ -975,11 +975,7 @@
          PyObject* s = wx2PyString(url);
          ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(iO)", type, s));
              *redirect = Py2wxString(ro);
              rval = wxHTML_REDIRECT;
          }
-diff -r 1b1ccf55fbd9 wxPython/src/my_typemaps.i
---- a/wxPython/src/my_typemaps.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/my_typemaps.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/my_typemaps.i
+--- a/wxPython/src/my_typemaps.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/my_typemaps.i	Sat May 21 10:37:22 2011 +0200
 @@ -106,7 +106,7 @@
  }
  
  }
  
  
-diff -r 1b1ccf55fbd9 wxPython/src/propgrid.i
---- a/wxPython/src/propgrid.i	Wed Nov 24 19:40:54 2010 +0100
-+++ b/wxPython/src/propgrid.i	Wed Nov 24 19:42:55 2010 +0100
+diff -r 954e17625462 wxPython/src/propgrid.i
+--- a/wxPython/src/propgrid.i	Sat May 21 10:32:41 2011 +0200
++++ b/wxPython/src/propgrid.i	Sat May 21 10:37:22 2011 +0200
 @@ -323,7 +323,7 @@
          *v = (long) PyInt_AsLong(input);
          return true;
 py3k-compatible-no-cmp.patch
 py3k-compatible-imports.patch
 py3k-compatible-filter.patch
+py3k-compatible-map.patch
 py3k-compatible-zip.patch
 py3k-compatible-vm.patch
 py3k-io-bytes.patch

File swig-2.patch

-diff -r f5204a244cc3 wxPython/config.py
---- a/wxPython/config.py	Fri Aug 27 13:00:56 2010 +0200
-+++ b/wxPython/config.py	Fri Aug 27 13:09:57 2010 +0200
-@@ -419,10 +419,10 @@
+diff -r f6a89cc851f0 wxPython/config.py
+--- a/wxPython/config.py	Sat May 21 10:39:22 2011 +0200
++++ b/wxPython/config.py	Sat May 21 10:39:45 2011 +0200
+@@ -413,10 +413,10 @@
                   stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
      stext = p.stdout.read() + p.stderr.read()
      import re
      return SVER
  
  
-@@ -1187,7 +1187,7 @@
+@@ -1176,7 +1176,7 @@
  
  if USE_SWIG:
      SVER = swig_version()
          swig_args += [ '-fastdispatch',
                         '-fvirtual',
                         '-fastinit',
-diff -r f5204a244cc3 wxPython/setup.py
---- a/wxPython/setup.py	Fri Aug 27 13:00:56 2010 +0200
-+++ b/wxPython/setup.py	Fri Aug 27 13:09:57 2010 +0200
+diff -r f6a89cc851f0 wxPython/setup.py
+--- a/wxPython/setup.py	Sat May 21 10:39:22 2011 +0200
++++ b/wxPython/setup.py	Sat May 21 10:39:45 2011 +0200
 @@ -90,7 +90,7 @@
  
  if USE_SWIG:
          open('include/wx/wxPython/swigver.h', 'w').write('''\
  // This file was generated by setup.py
  
-diff -r f5204a244cc3 wxPython/src/_artprov.i
---- a/wxPython/src/_artprov.i	Fri Aug 27 13:00:56 2010 +0200