wxPython 2.3.0 is now available for download. Unfortunately the shell server at sourceforge is down for a few days and so I can't update the wxPython.org web page, but in the meantime you can get the files directly from
Sources and binaries for win32 and Linux for Python 1.5.2, 2.0 and 2.1 are available. (The win32 binaries with "-hybrid" in the name are built with extra debugging code enabled so some things that caused mysterious problems before will now pop-up a slightly less mysterious message dialog.)
There have been a large number of changes for this release. I'll include the relevant portion of CHANGES.txt here:
Removed initial startup dependency on the OpenGL DLLs so only the glcanvasc.pyd depends on them, (on wxMSW.)
Changed wxFont, wxPen, wxBrush to not implicitly use the wxThe[Font|Pen|Brush]List objects behind the scenes, but to use normal ctor and dtors.
Exposed the wxThe[Font|Pen|Brush]List to wxPython.
Also added wxTheColourDatabase and added a library module (in the wxPython.lib.colourdb module) to load LOTS more colour names into the colour database.
Added wxWakeUpMainThread, wxMutexGuiEnter, wxMutexGuiLeave, wxMutexGuiLocker and wxThread_IsMain to assist with dealing with GUI access from non-GUI threads.
wxPyOnDemandOutputWindow is now (more) thread safe if non-GUI threads use print, sys.stdout.write, etc.
Added CreateTextSizer and CreateButtonSizer to wxDialog
Added wxPython/lib/infoframe.py from Chris Fama. It contains a class that can be used in place of wxPyOnDemandOutputWindow.
Added colourselect.py, imagebrowser.py and an updated calendar.py to wxPython/lib from Lorne White.
Added patch to wxPoint_LIST_helper from Tim Hochberg that should make it gobs faster in certain situations.
Added tools that will take an image file in a wx supported format and convert it to data embedded in a Python source file. The image is converted to XPM format which is essentially a list of strings containing info about each pixel. The image's transparency mask is included, if there is one, or a mask can be added if a mask colour is specified on the command line. It is then pickled and optionally compressed and written to a Python source file along with functions to convert it to either a wxBitmap or a wxImage. See wxPython/demo/images.py for examples, and wxPython/Tools/img2py.py for the implementation.
Fixed wxStyledTextCtrl to be much faster on wxGTK. There was some experimental code that got left in place that ended up causing way too many refreshes.
A couple more hacks in my_distutils.py so wxPython can be built with the distutils that comes with Python 2.1.
Added a ton of missing methods for wxPrintData.
Switched to InnoSetup for MSW distributions.
Fixed bug that prevented wxTreeCtrl.OnCompareItems from being called.
Added some methods to wxGrid: GetCellHighlightPenWidth GetCellHighlightROPenWidth SetCellHighlightPenWidth SetCellHighlightROPenWidth GetGridWindow GetGridRowLabelWindow GetGridColLabelWindow GetGridCornerLabelWindow
Added wxGetClientDisplayRect which on wxMSW returns a wxRect representing the area on screen not occupied by the taskbar and such. On other platforms it is equivallent to wxGetDisplaySize.
***---***---***---***---***---***---***---***---***---***---***--- Implemented the first phase of OOR (Original Object Return). See the text in the demo for more details of what this means, but in a nutshell methods such as wxWindow.GetParent or FindWindowById will now return a shadow object of the proper type if it can. By "proper type" I mean that if the wxWindow pointer returned from FindWindowById really points to a wxButton then the Python object constructed will be of a wxButtonPtr class instead of wxWindowPtr as before. This should reduce or eliminiate the need for wxPyTypeCast. (Woo Hoo!) The objects returned are still not the original Python object, but that is the next step. (Although it will probably only work on Python 2.1 and beyond because it will use weak references.)
This first phase of the OOR plan is fairly significant and has required a lot of changes all over wxPython, most of which should be transparent to you, however I'm not 100% sure that it didn't introduce any new bugs that are hiding somewhere and didn't get stomped on during my testing. So please be sure to test everything thoroughly when you install this version and be sure to report any object-type related oddities to me. ***---***---***---***---***---***---***---***---***---***---***---
There is now a wxObject class that most other classes derive from like in C++, but the methods provided don't really match but are wxPython specific. It could have been added long ago but OOR required it so it finally got done.
Finally added wxPyLineShape.GetLineControlPoints, which has been on my list for a while. The above OOR modification made this easier.
Fixed the __cmp__ methods for wxPoint and others.
Added the wxPython.lib.mixins package to the library, it is where useful mix-in classes can be placed. Currently there is one to help make the columns in a wxListCtrl sortable, and the MagicIMageList from Mike Fletcher. If you have any custom code that can be factored out of existing classes into a mix-in that would be useful to others please send it to me for inclusion in this package.
Added a few little sample applications to help newbies to get started by having smaller functional apps to play with. They can be found in wxPython/samples.
-- Robin Dunn Software Craftsman robin@AllDunn.com Java give you jitters? http://wxPython.org Relax with wxPython!