]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/CHANGES.txt
fix text scrolling in GTK2 (patch 703988)
[wxWidgets.git] / wxPython / CHANGES.txt
index 9b96d8c58aebf9fe93638a3425d7f3c722d465ff..156b77310fde2674e1a8d6753e3fb506167c2114 100644 (file)
@@ -2,7 +2,808 @@ CHANGES.txt for wxPython
 
 ----------------------------------------------------------------------
 
-2.3b2
+2.5.0.x
+-------
+
+Many, many little fixes, changes and additions done as part of the move
+to wxWindows 2.5 that I have forgotten about.
+
+Changed the import-startup-bootstrap process employed by wxPython such
+that wxWindows and the underlying gui toolkit are not initialized
+until the wxApp object is created (but before wxApp.OnInit is called.)
+This was required because of changes made to the C++ wxApp class.
+There are both benefits and potential problems with this change.  The
+benefits are that you can import wxPython without requiring access to
+a GUI (for checking version numbers, etc.) and that in a
+multi-threaded environment the thread that creates the app object will
+now be the GUI thread instead of the one that imports wxPython.  Some
+potential problems are that the C++ side of the "stock-objects"
+(wxBLUE_PEN, wxTheColourDatabase, etc.) are not initialized until the
+wxApp object is created, so you should not use them until then.  Also,
+you will probably not be able to do any kind of GUI operation unless
+you have an app object first, (even on Windows where most anything was
+possible beofre.)
+
+Added wxMirrorDC.
+
+Added wxIconLocation
+
+wxPython's setup.py script now expects to use existing libraries for
+the contribs (gizmos, stc, xrc, etc.) rather than building local
+copies of them.
+
+Added Python wrappers for the new wxVScrolledWindow, wxVListBox, and
+wxHtmlListBox classes.
+
+Added wrappers for wxBookCtrl and wxListbook.  wxNotebook now derives
+from wxBookCtrl.
+
+
+
+
+2.4.1.x
+-------
+
+Use wxSTC in the demo for displaying the soucre code of the samples.
+
+
+
+
+
+2.4.1.2
+-------
+
+Added wxScrolledPanel from Will Sadkin
+
+Added SetShape method to top level windows (e.g. wxFrame.)
+
+Changed wxSWIG to not generate Python code using apply, (since it will
+be deprecated in the future) wxSWIG will use spam(*args, **kw) syntax
+instead.  Also changed the generated __repr__ methods to be a bit more
+informative.
+
+Made the version number information more robust and uh, informative.
+Also added asserts to check that the major.minor versions of wxPython
+and wxWindows match.
+
+Added the new wx "renamer" package that will dynamically import from
+the wxPython package and rename wxFooBar --> FooBar.  That means that
+people can do imports without "import *" and can use names like
+wx.Frame instead of wx.wxFrame.  This is phase 1 of a full transition
+to the new namespace.
+
+Updated Scintilla to 1.52.  I also changed it to use wxListCtrl
+instead of wxListBox for the AutoComplete window, added the ability to
+use custom bitmaps in the margin and in the AutoComplete windows, and
+worked out how to do proper clipping of child windows on wxGTK.
+
+Patrick O'Brien's PyCrust package has been renamed to Py and now
+includes several new tools.  As part of the change the location of the
+pacakge has changed as well, it is now accessible as "from wxPython
+import py" (or "from wx import py" using the new namespace.)  There
+are still some transition modules in the wxPython.lib.PyCrust package
+that will issue a warning and then import what is needed from the new
+package.  These will be removed in a future release.
+
+Added __nonzero__ method to wxTreeItemId, wxBitmap, wxImage, wxFont,
+and most other classes that have an Ok or IsOK method.  This allows
+code like "if obj: ..." to be the same as "if obj.IsOk(): ..."
+
+Toolbars on wxMac can now have controls on them.
+
+Added wxPython.lib.analogclock module based on samples that were
+passed back and forth on wxPython-users a while back.
+
+Added masked edit controls (wxPython.lib.maskededit) by Jeff Childers
+and Will Sadkin.  Updated wxTimeCtrl to use MaskedEdit.
+
+When the __class__ of a dead object is replaced with _wxPyDeadObject
+the __del__ of the original class is now called first.
+
+Added wxTreeListCtrl.  (Looks like a wxTreeCtrl embedded in a
+wxListCtrl, but actually is just giving multiple columns to a
+wxTreeCtrl.)
+
+Added wxFutureCall, a subclass of wxTimer that makes it easy to delay
+a call to any Python callable object.
+
+Added wxPy versions of wxPrintPreview, wxPreviewFrame, and
+wxPreviewControlBar so they can be derived from in Python and be able
+to override the C++ virtual methods.
+
+Simplified how the wxSizer methods are wrapped, changed the name of
+the "option" parameter to "proportion" to match the docs ("option" is
+still accepted for compatibility, but this will go away in a future
+release,) SetItemMinSize can now take a wxSize (or 2-tuple) parameter,
+and Spacers can be specified with a wxSize (or 2-tuple) parameter
+
+Added wxCursorFromBits.
+
+
+
+
+
+2.4.0.7
+-------
+Gave up on generating a warning upon the use of the old true/false or
+TRUE/FALSE values.
+
+Fixed wxGenericTreeCtrl (used on wxGTK and wxMac for wxTreeCtrl) so
+that it can successfully handle lots of nodes instead of overflowing
+when the virtual height of the widget overflowed a 16-bit value.
+
+Fixed the typemap that converts strings to wxColours to also accept
+unicode.
+
+Fixed problem where the wrong class name could sometimes be used for
+OOR.
+
+Fixed an interpreter lock problem in the __eq__ and __ne__ methods in
+wxSize and etc.
+
+Updated PyCrust to version 0.9
+
+Instead of always logging C++ assertions, added wxPYAPP_ASSERT_LOG
+flag to turn it on.  In most cases turning it into an exception (the
+default behavior) is enough.  See below in the 2.3.4.1 notes for more
+details.
+
+
+
+
+2.4.0.6 (a.k.a. the I'm so stupid release)
+-------
+The new deprecation class for the old true/false symbols can now be
+returned from OnInit.  And I promise to be sure I am testing what I
+think I am testing in the future...
+
+
+
+2.4.0.5 (a.k.a. the blame it on Kevin release)
+-------
+A few little but annoying bug fixes.
+
+Updated pycolourchooser.
+
+Updated to 0.9b of PyCrust.
+
+
+
+2.4.0.4
+-------
+Added missing wxRect methods
+
+Add OOR support for wxApp objects too.
+
+Added wxCursorFromImage, which works on wxMSW and wxGTK so far.
+
+All platforms now send EVT_DESTROY_WINDOW.  Be warned that at the time
+the event is sent the window is in the process of being deconstructed,
+and so calling some (most?) methods of the window itself may cause
+problems.
+
+Fixed SF Bug #689481, a method in the OGL wrappers was using the wrong
+return type.
+
+Fixed SF Bug #689958, an endless loop in printout.py.
+
+Added EVT_WINDOW_CREATE_ID and EVT_WINDOW_DESTROY_ID so these events
+can be associated with a specific window ID and more easily caught by
+the parent window.
+
+Fixed copy-paste error in wxListCtrl.GetFirstSelected.
+
+Added missing Init method (and an overloading wrapper) to wxLocale
+wrapper.
+
+Added a wxBitmap.SetMaskColour convenience method.
+
+Changed how the dynamic event tables (used for all Python wx classes,
+C++ wx classes typically use static event tables) are searched such
+that they behave from a Python perspective more like the static tables
+in C++.  Namely that if there are identical event bindings in a base
+Python class and a derived Python class that the one in the derived
+class will be found first and that if Skip is called that the one in
+the base class will still be found instead of skipping directly to the
+static stable in the C++ class.
+
+Switched to using True/False in the wxPython lib and demo instead of
+true/false or TRUE/FALSE to prepare for the new boolean type and
+constants being added to Python.  Added code to wx.py to test for the
+existence of the new constants and to create suitable values if not
+present.
+
+Added some static wxApp functions that help with integration with the
+Mac UI.  They are no-ops on other platforms so it doesn't hurt to
+always call them.  The functions are:
+
+       wxApp_GetMacDefaultEncodingIsPC
+       wxApp_GetMacSupportPCMenuShortcuts
+       wxApp_GetMacAboutMenuItemId
+       wxApp_GetMacPreferencesMenuItemId
+       wxApp_GetMacExitMenuItemId
+       wxApp_GetMacHelpMenuTitleName
+       wxApp_SetMacDefaultEncodingIsPC
+       wxApp_SetMacSupportPCMenuShortcuts
+       wxApp_SetMacAboutMenuItemId
+       wxApp_SetMacPreferencesMenuItemId
+       wxApp_SetMacExitMenuItemId
+       wxApp_SetMacHelpMenuTitleName
+
+Refactored, enhanced and added capabilities for the DrawXXXList
+functions, inspired by code from Chris Barker.
+
+The wxWindows .mo language catalog files are now installed in a
+subdirectory of the wxPython package dir on MSW since that platform
+doesn't have a standard place for them.
+
+Added missing deselect methods for wxGrid.
+
+Fixed typemaps for wxGridCellCoordsArray.
+
+Updated to the 0.9a version of PyCrust
+
+
+
+2.4.0.2
+-------
+Several bug fixes.
+
+Added wxIntCtrl from Will Sadkin.
+
+Added wxPyColourChooser by Michael Gilfix.
+
+
+
+
+2.4.0.1
+-------
+No major new features since 2.3.4.2, mostly bug fixes and minor
+enhancements.
+
+Added function wrappers for the common dialogs from Kevin Altis.  See
+wxPython/lib/dialogs.py for more details.
+
+
+
+2.3.4.2
+-------
+Various bug fixes.
+
+
+
+2.3.4.1
+-------
+Updated XRCed and wxTimeCtrl contribs.
+
+Show a couple new wxGrid features in the demo.
+
+Several bug fixes in wxWindows.
+
+Added wxHtmlFilter.
+
+wxASSERT and related C++ runtime diagnostics are now converted to
+Python exceptions.  When an assert happens a wxPyAssertionError
+(which derives from AssertionError) exception is created and when
+control returns back to the Python code that invoked the C++ API it
+will be raised.  The same exception restrictions are in place as
+before, namely that exceptions can't cross from one Python layer
+through C++ to another Python layer.  That simply means that if you
+want to catch wxPyAssertionError or any other exception that you need
+to do it before control returns to C++ at the end of your event
+handler or callback code.  There is some test code in demo/wxButton.py
+you can use to play with this new feature.
+
+Added some methods to wxApp (SetAssertMode and GetAssertMode) that let
+you control how C++ assertions are processed.  Valid modes are:
+wxPYAPP_ASSERT_SUPPRESS, wxPYAPP_ASSERT_EXCEPTION, and
+wxPYAPP_ASSERT_DIALOG.  Using _SUPPRESS will give you behavior like
+the old "final" builds and the assert will be ignored, _EXCEPTION is
+the new default described above, and _DIALOG is like the default in
+2.3.3.1 and prior "hybrid" builds.  You can also combine _EXCEPTION
+and _DIALOG if you wish, although I don't know why you would.
+
+You can now overload OnInitGui, OnExit and OnAssert in your classes
+derived from wxApp.
+
+Added GetSelectedCells, GetSelectionBlockTopLeft,
+GetSelectionBlockBottomRight, GetSelectedRows, GetSelectedCols nethods
+to wxGrid.
+
+Added Python == and != operators for some basic classes
+
+Fixed the Python wrappers for wxInputStream so they no longer block
+when reading from a wxProcess on wxGTK.  They now work more or less as
+they did before 2.3.3.1 but the dual meaning of eof() has been
+removed.  There is now a CanRead() method that lets you know if there
+is data waiting to be read from the pipe.
+
+Fixed method name clash in wxIEHtmlWin, renamed Refresh to RefreshPage.
+
+Added Throbber from Cliff Wells to the library and the demo.
+
+Windows installer prompts to uninstall old version first.
+
+Added wxPython.lib.evtmgr by Robb Shecter, which is an easier, more
+"Pythonic" and more OO method of registering handlers for wxWindows
+events using the Publish/Subscribe pattern.
+
+Added wxPython.lib.popupctl by Gerrit van Dyk which is a combobox-like
+gizmo for poping up arbitrary controls.  It is currently using
+wxDialog because of some issues with wxPopupWindow...
+
+Added wxPython.lib.gridmovers by Gerrit van Dyk which facilitates the
+dragging of columns and/or rows in a wxGrid.
+
+Added wxPython.lib.multisash by Gerrit van Dyk which is a nice
+implementation of allowing the user to split a window any number of
+times either horizontally or vertically, and to close the split off
+windows when desired.
+
+Added helpviewer tool that displays HTML books similarly to how MS
+HTMLHelp viewer does.  Changed how the wxPythonDocs tarball is built
+and added a script to launch the doc viewer.
+
+
+
+
+2.3.3.1
+-------
+Added wxSplashScreen.
+
+Added wxGenericDirCtrl.
+
+Added wxMultiChoiceDialog.
+
+The calltip window and autocomplete window in wxSTC will now use a
+wxPopupWindow if available on the platform (and functioning correctly)
+so they can extend beyond the client area of the STC if needed.
+
+Finished wrapping and providing typemaps for wxInputStream and also
+added the stream ctor and other methods for wxImage so images can now
+be loaded from any Python "file-like" object.
+
+Changed the img2py tool to use PNG instead of XPM for embedding image
+data in Python source code, and the generated code now uses streams to
+convert the image data to wxImage, wxBitmap, or wxIcon.
+
+Added the wxPython.lib.rcsizer module which contains RowColSizer.
+This sizer is based on code from Niki Spahiev and lets you specify a
+row and column for each item, as well as optional column or row
+spanning.  Cells with no item assigned to it are just left blank.
+Stretchable rows or columns are specified and work the same as in
+wxFlexGridSizer.
+
+Updated XRCed from Roman Rolinsky
+
+Added wxBufferedDC.
+
+Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45, and then again
+to version 1.47, and one more time to 1.48! <wink>
+
+UNICODE!
+    wxWindows/wxPython can be compiled with unicode support enabled or
+    disabled.  Previous to wxPython 2.3.3 non-unicode mode was always
+    used.  Starting with 2.3.3 either mode is supported, but only if
+    it is also available in wxWindows on the platform.  Currently
+    wxWindows only supports unicode on MS Windows platforms, but with
+    the recent release of GTK+ 2.0 it is only a matter of time until
+    it can be done on wxGTK (Linux and other unixes) as well.
+
+    Unicode works best on platforms in the NT branch of the Windows
+    family tree (NT, win2k, XP) but it is now also possible to use the
+    same unicode binaries on win95/98/ME platforms as well!  This is
+    done by using a special library and DLL with the application
+    called MSLU, (Microsoft Layer for Unicode).  It simply gets out of
+    the way if the app is run on an NT box, otherwise if run on a
+    win9x box it loads a special DLL that provides the unicode
+    versions of the windows API.  So far I have not been able to get
+    this to work perfectly on win9x.  Most things work fine but
+    wxTaskBarIcon for example will cause a crash if used with the
+    unicode build on win95.
+
+    So how do you use it?  It's very simple.  When unicode is enabled,
+    then all functions and methods in wxPython that return a wxString
+    from the C++ function will return a Python unicode object, and
+    parameters to C++ functions/methods that expect a wxString can
+    accept either a Python string or unicode object.  If a string
+    object is passed then it will be decoded into unicode using the
+    converter pointed to by wxConvCurrent, which will use the default
+    system encoding.  If you need to use a string in some other
+    encoding then you should convert it to unicode using the Python
+    codecs first and then pass the unicode string to the wxPython
+    method.
+
+Added wxListCtrlAutoWidthMixin from Erik Westra.
+
+Added wxIconBundle and wxTopLevelWindow.SetIcons.
+
+Added wxLocale and wxEncodingConverter.
+
+A little black magic...  When the C++ object (for a window or
+whatever) is deleted there is no way to force the Python shadow object
+to also be destroyed and clean up all references to it.  This leads to
+crashes if the shadow object tries to call a method with the old C++
+pointer.  The black magic I've done is to replace the __class__ in the
+Python instance object with a class that raises an exception whenever
+a method call (or other attribute access) is attempted.  This works
+for any class that is OOR aware.
+
+Added OOR support for wxGridCellRenderer, wxGridCellEditor,
+wxGridCellAttr, wxGridCellAttrProvider, wxGridTableBase and their
+derived classes.
+
+Added wxImage.GetDataBuffer which returns an in-place edit buffer of
+the image data.  (Patch #546009)
+
+Added a sample that shows how to embed wxPython in a wxWindows C++
+application.
+
+Added wxPyWindow, wxPyPanel and wxPyControl which are just like their
+wx counterparts except they allow some of the more common C++ virtual
+methods to be overridden in Python derived classes.  The methods
+supported are:
+
+    DoMoveWindow
+    DoSetSize
+    DoSetClientSize
+    DoSetVirtualSize
+    DoGetSize
+    DoGetClientSize
+    DoGetPosition
+    DoGetVirtualSize
+    DoGetBestSize
+    InitDialog
+    TransferDataFromWindow
+    TransferDataToWindow
+    Validate
+    AcceptsFocus
+    AcceptsFocusFromKeyboard
+    GetMaxSize
+    AddChild
+    RemoveChild
+
+    If there are other methods that you think should be supported
+    please let me know.
+
+Changed wxGenButton to derive from wxPyControl and overload
+DoGetBestSize and AcceptsFocus.
+
+Added wxArtProvider.
+
+Added wxCallAfter which is a helper function that registers a function
+(or any callable Python object) to be called once the next time there
+are no pending events.  This is useful for when you need to do
+something but it can't be done during the current event handler.  The
+implementation is very simple, see wxPython/wx.py.
+
+Fixed a boatload of reference leaks.
+
+Added a demo of using a sizer in a wxScrolledWindow, in effect
+creating a ScrolledPanel.
+
+Added a sample to the demo that shows how to use radio menu items, and
+other menu stuff.
+
+Added wxIEHtmlWin.  This is essentially the same as using IE with the
+ActiveXWrapper already in the library, but it is implemented all in
+C++ and therefore does not need any of the modules from win32all and
+so it is less fragile in the face of changes.
+
+Fixed the ActiveXWrapper problem.  Looks like when the win32com
+modules make a "callback" that they (incorrectly, IMHO) allocate a
+transient thread state structure.  Since wxPython is now saving
+tstates for it's own callbacks it ended up using garbage after
+win32com got rid of the temporary tstate...
+
+Added a generic static text control to wxPython.lib.stattext.  This is
+so things like Boa and PythonCard can have a static text that can
+respond to mouse events and etc.
+
+Changed the wxDateTime.Parse* methods to return an int that will be -1
+on failure, and the index where parsing stopped otherwise.
+
+Moved tools to be a Python package in wxPython.tools, added scripts to
+import and launch each tool.  This will let you import and use the
+tools in your own scripts or apps as needed.  On Linux and OS X the
+tool scripts are installed to {prefix}/bin so you should be able to
+easily launch them from the command line.  For example, PyCrust can be
+started with just the "pycrust" command.
+
+Added a sample to the demo that catches various key events and
+displays the details of the event.
+
+Added wxWizard, wxWizardPage, wxWizardPageSimple and wxPyWizardPage.
+
+Added wxXmlResourceHandler which allows you to create custom handlers
+for nonstandard class types in XRC resources.  See the demo for an
+example.
+
+Added wxPython.lib.mixins.rubberband module from Robb Shecter.
+
+Added wxTimeCtrl from Will Sadkin.
+
+
+
+
+2.3.2.1
+-------
+Changed (again) how the Python global interpreter lock is handled as
+well as the Python thread state.  This time it works on SMP machines
+without barfing and is also still compatible with Python debuggers.
+
+Added some patches from library contributors.
+
+
+
+2.3.2
+-----
+Added EVT_HELP, EVT_HELP_RANGE, EVT_DETAILED_HELP,
+EVT_DETAILED_HELP_RANGE, EVT_CONTEXT_MENU, wxHelpEvent,
+wxContextMenuEvent, wxContextHelp, wxContextHelpButton, wxTipWindow,
+and a demo to show them in action.
+
+Deprecated PyShell and PyShellWindow, added a snapshot of PyCrust (see
+http://sourceforge.net/projects/pycrust/. )
+
+Added the new virtual list capabilities to wxListCtrl.
+
+Added a wxSTC style editor from Riaan Booysen to the sample apps.
+
+Added XRCed to the wxPython Tools directory, contributed by Roman
+Rolinsky.
+
+Added a new "constructor" to most of the window classes that calls the
+default C++ constructor, (the one with no parameters) and also added the
+corresponding  Create(...) method.  This allows you to do a 2-step
+creation of windows which is sometimes required for doing things such
+as setting extended style flags before the window is created, or for
+passing the object to the XRC resource system to be created from the
+resource.  The name of the new "constructor" is the original name of
+the class with a "Pre" in it.  For example, wxPreWindow, wxPreFrame,
+etc.
+
+Updated to version 1.40 of Scintilla and updated wxStyledTextCtrl
+accordingly.  While doing this update I dropped the wxLB_SORT style
+from the wxListBox created for the AutoComplete functionality.  This
+means that you will have to sort the keyword lists yourself, but you
+are free to do case sensitive or case insensitive sorts and set the
+wxSTC flag accordingly.
+
+Updated wxColumnSorterMixin to also be able to place sort icons on the
+column headers, and updated the wxListCtrl demo to show it off by
+using wxColumnSorterMixin.
+
+Added wxGenBitmapTextButton, TablePrint, etc. contribs from Lorne White.
+
+Added wxNativeFontInfo and wxFontMapper.
+
+Added pySketch to the samples.
+
+Significantly changed how the Python interpreter lock and thread state
+are managed, which should fix the problem of running on a
+multi-processor machine.
+
+Added wxPyLog so log targets can be created in Python to handle log
+messages however is wished.  See demo/Main.py for an example.
+
+Added wxFindReplaceDialog.
+
+The second phase of OOR is implemented for wxEvtHandler, wxSizer,
+wxShape and derived classes.  This means that functions and methods
+that return an object derived from wxEvtHandler that was originally
+created in Python, will return the original Python object (if it still
+exists) instead of letting SWIG wrap a new shadow object around the
+original C++ pointer.
+
+Added some optimization methods to wxDC: GetBoundingBox, DrawLineList,
+DrawPointList.
+
+Added a set of sophisticated Error Dialogs from Chris Fama.
+
+Added wxRightTextCtrl from Josu Oyanguren to wxPython.lib for aligning
+text in a wxTextCtrl to the right side.
+
+Added wxURLDataObject and an example showing drag and drop of URLs to
+and from web browsers.  It's still not 100% bullet-proof for all types
+of browsers, but it works for the majority of cases with the popular
+browsers on Windows.  On wxGTK it seems that only Netscape 4.x works,
+if anybody has any suggestions about this please bring it up on the
+wx-dev list.
+
+Added wxStopWatch.
+
+Added wxMimeTypesManager and wxFileType.
+
+Passing None for the handler parameter to one of the EVT_** functions
+will now Disconnect the event.
+
+Added wxPopupWindow and wxPopupTransientWindow.
+
+Added wxFileHistory.
+
+Added wxDynamicSashWindow, which allows you to endlessly split windows
+by dragging a little tab next to the scrollbars.  Added a demo to show
+this and also the ability of multiple wxStyledTextCtrls to share the
+same document.
+
+Added wxEditableListBox gizmo.
+
+Updated wxEditor with lots of enhancements from Steve Howell and Adam
+Feuer.
+
+Added the "SplitTree gizmos" which are a collection of classes that
+were designed to operate together and provide a tree control with
+additional columns for each item.  The classes are
+wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
+wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
+also be useful by themselves.
+
+Added wxDllWidget from Vaclav Slavik which allows wx widgets derived
+from wxWindow to be loaded from a C++ .dll (or .so) and be used in a
+wxPython program, without the widget having to be SWIGged first.  The
+visible API of the widget is limited to wxWindow methods plus a
+SendCommand method, but it is still quite powerful.  See
+wxPython/contrib/dllwidget and wxPython/demo/dllwidget for more
+details.
+
+
+
+
+2.3.1
+-----
+Added EVT_GRID_EDITOR_CREATED and wxGridEditorCreatedEvent so the user
+code can get access to the edit control when it is created, (to push
+on a custom event handler for example.)
+
+Added wxTextAttr class and SetStyle, SetDefaultStyle and
+GetDefaultStyle methods to wxTextCtrl.
+
+Added ability to use xml resource files.  Still need to add ability to
+subclass wxXmlResourceHandler, etc...
+
+Added wxGridAutoEditMixin to the mixins library package.
+
+Made ColourSelect be derived from wxButton.
+
+Fixed img2py to work correctly with Python 2.1.
+
+Added enhanced wxVTKRenderWindow by Prabhu Ramachandran
+
+
+
+2.3.0
+-----
+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.
+
+Added wxToggleButton.
+
+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 wxWave.
+
+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.
+
+
+
+
+2.2.6
+-----
+
+No changes happened in the Python wrappers for this release, only
+changes and fixes in the wxWindows library.
+
+
+
+2.2.5
 -----
 
 New typemaps for wxString when compiling for Python 2.0 and beyond
@@ -35,8 +836,8 @@ Fixed GOBS of reference leaks.
 
 Massive code changes and cleanup to allow wxPython to be split into
 multiple extension modules again.  A Python CObject is used to allow
-the "export" of SWIG and other common helper functions from the wxc
-module to other modules, even if they are in separate shared
+the "export" of SWIG functions and other common helper functions from
+the wxc module to other modules, even if they are in separate shared
 libraries.  Should also be usable from 3rd party code, just include
 wxPython/src/export.h
 
@@ -44,6 +845,22 @@ Changed the default setup so the following are built as separate
 extension modules:  calendar, glcanvas, grid, html, ogl, stc, and
 utils.  Will probably add more later.
 
+Changed the wxPrinterDC to use the new constructor taking a
+wxPrintData object.  The old ctor is still there using the
+wxPrinterDC2 name.
+
+Added wxPython.lib.anchors.py from Riaan Booysen.  It contains a class
+that implements Delphi's Anchors with wxLayoutConstraints.
+
+Added wxPython.lib.fancytext from Timothy Hochberg.
+
+Changed the GenericButtons to send their event in idle time, so the
+mouse won't be captured when the event handler is called.
+
+Added wxPython.lib.rpcMixin from Greg Landrum, although it's not
+integrated with the demo yet.  It allows a wxPython GUI to be an
+XML-RPC server.
+
 
 
 New in 2.2.2
@@ -274,7 +1091,7 @@ methods look like this:
                           toggle=FALSE)
 
 
-There are also coresponding InsertTool and InsertSimpleTool methods
+There are also corresponding InsertTool and InsertSimpleTool methods
 that additionally take an integer position as the first parameter.
 
 Added a wrapper for the new PCX and TIFF ImageHandlers.