+<div class="section">
+<h1><a id="id1" name="id1">2.7.2.0</a></h1>
+<ul class="simple">
+<li>7-Nov-2006</li>
+</ul>
+<p>Patch [ 1583183 ] Fixes printing/print preview inconsistencies</p>
+<p>Add events API to wxHtmlWindow (patch #1504493 by Francesco Montorsi)</p>
+<p>Added wxTB_RIGHT style for right-aligned toolbars (Igor Korot)</p>
+<p>Added New Zealand NZST and NZDT timezone support to wx.DateTime.</p>
+<p>wx.Window.GetAdjustedBestSize is deprecated. In every conceivable
+scenario GetEffectiveMinSize is probably what you want to use instead.</p>
+<p>wx.Image: Gained support for TGA image file format.</p>
+<p>wx.aui: The classes in the wx.aui module have been renamed to be more
+consistent with each other, and make it easier to recognize in the
+docs and etc. that they belong together.</p>
+<blockquote>
+FrameManager --> AuiManager
+FrameManagerEvent --> AuiManagerEvent
+PaneInfo --> AuiPaneInfo
+FloatingPane --> AuiFloatingPane
+DockArt --> AuiDockArt
+TabArt --> AuiTabArt
+AuiMultiNotebook --> AuiNotebook
+AuiNotebookEvent --> AuiNotebookEvent</blockquote>
+<p>wx.lib.customtreectrl: A patch from Frame Niessink which adds an
+additional style (TR_AUTO_CHECK_PARENT) that (un)checks a parent when
+all children are (un)checked.</p>
+<p>wx.animate.AnimationCtrl fixed to display inactive bitmap at start
+(patch 1590192)</p>
+<p>Patch from Dj Gilcrease adding the FNB_HIDE_ON_SINGLE_TAB style flag
+for wx.lib.flatnotebook.</p>
+<p>wx.Window.GetBestFittingSize has been renamed to GetEffectiveMinSize.
+SetBestFittingSize has been renamed to SetInitialSize, since it is
+most often used only to set the initial (and minimal) size of a
+widget.</p>
+<p>The QuickTime backend for wx.media.MediaCtrl on MS Windows works
+again. Just pass szBackend=wx.media.MEDIABACKEND_QUICKTIME to the
+constructor to use it instead of the default ActiveMovie backend,
+(assuming the quicktime DLLs are available on the system.)</p>
+</div>
+<div class="section">
+<h1><a id="id2" name="id2">2.7.1.3</a></h1>
+<ul class="simple">
+<li>26-Oct-2006</li>
+</ul>
+<p>wxGTK: The wx.ALWAYS_SHOW_SB style is now supported.</p>
+<p>Fixed name errors in the old wxPython package namespace. As a
+reminder, use of this package is deprecated and you are encouraged to
+switch your programs over to the wx package.</p>
+<p>Fixed wx.glcanvas.GLCanvas.SetCurrent to be compatible with prevoius
+versons.</p>
+<p>Added wx.StandardPaths.GetTmpDir.</p>
+<p>Bug fixes in the wx.ListCtrl on Mac from Kevin Olivier, allowing it to
+send events properly again. There is also a new native implementation
+of wx.ListCtrl available, which will be used for wx.LC_REPORT style
+list controls if you set the "mac.listctrl.always_use_generic"
+SystemOption to zero. In a future release this will be the default.</p>
+<p>Added a sample to the demo that shows some of what can be done with
+the new wx.GraphicsContext and wx.GraphicsPath classes.</p>
+</div>
+<div class="section">
+<h1><a id="id3" name="id3">2.7.1.2</a></h1>
+<ul class="simple">
+<li>21-Oct-2006</li>
+</ul>
+<p>Fixed a bug in the MaskedEdit controls caused by conflicting IsEmpty
+methods.</p>
+<p>Patch #1579280: Some mimetype optimizations on unix-like systems.</p>
+<p>wxMac: Several wx.webkit.WebKitCtrl enhancements/fixes, including:</p>
+<blockquote>
+<ul class="simple">
+<li>new methods for increasing/decreasing text size, getting
+selection, getting/setting scroll position, printing, enabling
+editing, and running JavaScripts on the page.</li>
+<li>added new event (wx.webkit.WebKitBeforeLoadEvent) for catching, and
+possibly vetoing, load events before they occur.</li>
+<li>wx.webkit.WebKitCtrl now fires mouse events for certain events
+that it was eating before. This improves wxSplitterWindow
+resizing behavior.</li>
+<li>refactoring of the sizing logic to move the Cocoa view. Tested
+with splitter windows, panels, notebooks and all position
+correctly with this.</li>
+</ul>
+</blockquote>
+<p>Some improvements to the drawing code in CustomTreeCtrl.</p>
+<p>Fixed refcount leak in wx.Window.GetChildren.</p>
+</div>
+<div class="section">
+<h1><a id="id4" name="id4">2.7.1.1</a></h1>
+<ul class="simple">
+<li>18-Oct-2006</li>
+</ul>
+<p>The following deprecated items have been removed:</p>
+<blockquote>
+<ul class="simple">
+<li>wx.Bitmap SetQuality and GetQuality methods</li>
+<li>The wx.GetNumberFromUser function</li>
+<li>wx.EVT_LIST_GET_INFO and wx.EVT_LIST_SET_INFO</li>
+<li>wx.BookCtrlSizer and wx.NotebookSizer</li>
+<li>The PostScript-specific methods of wx.PrintData</li>
+<li>wx.PrintDialogData SetSetupDialog and GetSetupDialog methods</li>
+<li>wx.FontMapper SetConfig method</li>
+<li>wx.html.HtmlSearchStatus.GetContentsItem method</li>
+<li>wx.html.HtmlHelpData.GetContents, GetContentsCnt, GetIndex, and
+GetIndexCnt methods</li>
+</ul>
+</blockquote>
+<p>wx.EventLoop is now implemented for wxMac.</p>
+<p>Added wxPython wrappers for the new wx.Treebook and wx.Toolbook
+classes.</p>
+<p>wx.DC.BeginDrawing and EndDrawing have been deprecated in the C++
+code, so since they never really did anything before they are now just
+empty stubs in wxPython.</p>
+<p>Solved a problem that has been around for a very long time in how C++
+methods are virtualized for overriding in derived Python classes.
+Previously we couldn't do it for methods that needed to also exist in
+the base class wrappers such that they could be called normally. (The
+reasons are long and complex, but suffice it to say that it was due to
+mixing C++'s dynamic dispatch, and Python's runtime lookup of the
+method attributes resulting in endless recursion of function calls.)
+Because of this problem I used a hack that I have always hated, and
+that is renaming the base class methods with a "base_*" prefix, for
+example wx.Printout.base_OnBeginDocument. Now that the problem has
+finally been solved I have replaced all the base_Whatever() methods
+with the real Whatever() method as well as a simple wrapper named
+base_Whatever that is marked as deprecated. So now instead of writing
+your overridden methods like this:</p>
+<pre class="literal-block">
+def OnBeginDocument(self, start, end):
+ # do something here
+ return self.base_OnBeginDocument(start, end)
+</pre>
+<p>You can now call the base class method the normal way, like this:</p>
+<pre class="literal-block">
+def OnBeginDocument(self, start, end):
+ # do something here
+ return Printout.OnBeginDocument(self, start, end)
+</pre>
+<p>Or like this with super():</p>
+<pre class="literal-block">
+def OnBeginDocument(self, start, end):
+ # do something here
+ return super(MyPrintout, self).OnBeginDocument(start, end)
+</pre>
+<p>Note that the old way with the "base_*" function still works, but you
+will get a DeprecationWarning from calling base_OnBeginDocument. The
+classes affected by this are:</p>
+<blockquote>
+<ul class="simple">
+<li>wx.DropSource</li>
+<li>wx.DropTarget</li>
+<li>wx.TextDropTarget</li>
+<li>wx.FileDropTarget</li>
+<li>wx.PyLog (also added the ability to override Flush)</li>
+<li>wx.PyApp (also added the ability to override ExitMainLoop)</li>
+<li>wx.Printout</li>
+<li>wx.PyPrintPreview</li>
+<li>wx.PyPreviewFrame</li>
+<li>wx.PreviewControlBar</li>
+<li>wx.Process</li>
+<li>wx.PyControl</li>
+<li>wx.PyPanel</li>
+<li>wx.PyScrolledWindow</li>
+<li>wx.PyWindow</li>
+<li>wx.Timer</li>
+<li>wx.grid.PyGridCellRenderer</li>
+<li>wx.grid.PyGridCellEditor</li>
+<li>wx.grid.PyGridCellAttrProvider</li>
+<li>wx.grid.PyGridTableBase</li>
+<li>wx.html.HtmlWindow</li>
+<li>wx.wizard.PyWizardPage</li>
+</ul>
+</blockquote>
+<p>Added the wx.DC.GradientFillConcentric and wx.DC.GradientFillLinear
+methods.</p>
+<p>wxGTK: wx.ListBox and wx.CheckListBox are now using native GTK2
+widgets.</p>
+<p>Added wx.ListBox.HitTest() from patch 1446207</p>
+<p>Bumped up to SWIG 1.3.29. This provides some more runtime performance
+boosts, gets rid of the dreaded Ptr classes, and some other nice new
+things.</p>
+<p>Added wx.Window.GetScreenPosition and GetScreenRect which returns the
+position of the window in screen coordinates, even if the window is
+not a top-level window.</p>
+<p>Added GetResourcesDir and GetLocalizedResourcesDir to
+wx.StandardPaths.</p>
+<p>Added a GetReceivedFormat method to wx.DataObjectComposite. You can
+use this to find out what format of data object was recieved from the
+source of the clipboard or DnD operation, and then you'll know which
+of the component data objects to use to access the data.</p>
+<p>Changed how the stock objects (wx.RED, wx.RED_PEN, wx.RED_BRUSH, etc.)
+are initialized. They are now created as uninitialized instances
+using __new__. Then after the wx.App has been created, but before
+OnInit is called, the .this attribute of each object is initialized.
+This was needed because of some delayed initialization functionality
+that was implemented in wxWidgets, but the end result is cleaner for
+wxPython as well, and allowed me to remove some ugly code previously
+hidden under the covers.</p>
+<p>Added wx.StandardPaths.GetDocumentsDir.</p>
+<p>Added wx.RendererNative.DrawCheckButton.</p>
+<p>wx.ProgressDialog.Update now returns a tuple of two values. The first
+is a continue flag (what was returned before) and the second is a skip
+flag. If the dialog has the wx.PD_CAN_SKIP flag and if the Skip
+button is clicked, then the skip flag is set to True the next time
+Update is called.</p>
+<p>A DeprecationWarning is now issued when the old wxPython package is
+imported. If you are still using the old namespace please convert
+your code to use the new wx package instead.</p>
+<p>Added wrappers for Julian's new wxRichTextCtrl class, visible in
+wxPython as wx.richtext.RichTextCtrl window. It still needs some more
+work, but it is a great start.</p>
+<p>wx.lib.mixins.listctrl.TextEditMixin: Fixed the double END_LABEL_EDIT
+event problem in TextEditMixin by checking if the editor was already
+hidden before continuing with the CloseEditor method. Also added code
+to OpenEditor to send the BEGIN_LABEL_EDIT event and to not allow the
+opening of the editor to continue if the event handler doesn't allow
+it.</p>
+<p>wx.StaticBoxSizer now keeps better track of the wx.StaticBox, and it
+will destroy it if the sizer is destroyed before the parent window is.</p>
+<p>Added wx.HyperlinkCtrl.</p>
+<p>Added battery and power related functions and events (wxMSW only so
+far.) See wx.PowerEvent, wx.GetPowerType and wx.GetBatteryState.</p>
+<p>Added wx.ListCtrl.HitTestSubItem which returns the sub-item (i.e. the
+column in report mode) that was hit (if any) in addition to the item
+and flags.</p>
+<p>Added wrappers for wx.ColourPickerCtrl, wx.DirPickerCtrl,
+wx.FilePickerCtrl, and wx.FontPickerCtrl.</p>
+<p>Patch #1502016 wx.Image.ConvertToGreyscale now retains the alpha
+channel.</p>
+<p>Added wrappers for the wxAUI classes, in the wx.aui module.</p>
+<p>Added the PseudoDC class from Paul Lanier. It provides a way to
+record operations on a DC and then play them back later.</p>
+<p>Upgraded to Scintilla 1.70 for wx.stc.StyledTextCtrl.</p>
+<p>Added CanSetTransparent and SetTransparent methods to the
+wx.TopLevelWindow class, with implementations (so far) for wxMSW and
+wxMac.</p>
+<p>SetDefaultItem() and GetDefaultItem() are now members of
+wx.TopLevelWindow, not wx.Panel.</p>
+<p>wxGTK: Stock items (icons) will be used for menu items with stock
+IDs.</p>
+<p>Added wx.lib.combotreebox from Frank Niessink</p>
+<p>Added wx.ImageFromBuffer, wx.BitmapFromBuffer and
+wx.BitmapFromBufferRGBA factory functions. They enable loading of an
+image or bitmap directly from a Python object that implements the
+buffer interface, such as strings, arrays, etc.</p>
+<p>Added wx.App.IsDisplayAvailable() which can be used to determine if a
+GUI can be created in the current environment. (Still need an
+implementation for wxMSW...)</p>
+<p>The wx.html.HTML_FONT_SIZE_x constants are no longer available as the
+default sizes are now calculated at runtime based on the size of the
+normal GUI font.</p>
+<p>wx.Colour now includes an alpha component, which defaults to
+wx.ALPHA_OPAQUE. This is in preparation for allowing various new
+alpha blening functionality using wx.Colour objects, such as drawing
+with pens and brushes on a wx.DC.</p>
+<p>Added wx.NativePixelBuffer, wx.AlphPixelBuffer and related iterator
+and accessor classes. They allow platform independent direct access
+to the platform specific pixel buffer inside of a wx.Bitmap object.</p>
+<p>The beginnings of support for RTL languages has been added, thanks to
+a Google SoC project.</p>
+<p>Added wx.lib.dragscroller from Riaan Booysen. It provides a helper
+class that can used to scroll a wx.ScrolledWindow in response to a
+mouse drag.</p>
+<p>Applied patch 1551409: Adds support for indeterminate mode gauges.</p>
+<p>wxMac: I've turned on the compile option for using the native toolbar
+on the Mac now that it supports hosting of controls. If the toolbar
+is managed by the frame via either CreateToolBar() or SetToolBar()
+then the native toolbar will be used. Additional toolbars, or
+toolbars that are not children of the frame, are managed by sizers or
+what-not will still use the emulated toolbar because of platform
+restrictions in how/where the native toolbar can be used.</p>
+<p>Added Python properties for many of the getter/setter methods of wx
+classes. In order for the names to be predicatble for somebody
+already familiar with wxPython the property names are simply the name
+of the getter with the "Get" dropped. For example, wx.Window has a
+property named "Size" that maps to GetSize and SetSize. So far there
+is only one known name conflict using this naming convention, and that
+is wx.KeyEvent.KeyCode, however since KeyCode was formerly a
+compatibility alias for GetKeyCode (and has been for a long time) it
+was decided to just switch it to a property. If you want to use the
+method then change your calls to event.KeyCode() to
+event.GetKeyCode(), otherwise you can use it as a property just by
+dropping the parentheses.</p>
+<p>Updated the C++ code for wx.gizmos.TreeListCtrl from the wxCode
+project. This has resulted in some minor API changes, most of which
+were worked around in the wrapper code.</p>
+<p>Added wx.lib.delayedresult from Oliver Schoenborn.</p>
+<p>Added wx.lib.expando, a multi-line textctrl that exands as more lines
+are needed.</p>
+<p>wx.Image.Scale and Rescale methods now take an extra parameter
+specifying type of method to use for resampling the image. It
+defaults to the current behavior of just replicating pixels, if
+wx.IMAGE_QUALITY_HIGH is passed then it uses bicubic and box averaging
+resampling methods for upsampling and downsampling respectively.</p>
+<p>Added the wx.lib.buttonpanel module, which is a tweaked version of
+Andrea Gavana's FancyButtonPanel module.</p>
+<p>Added the wx.lib.flatnotebook module, from Andrea Gavana.</p>
+<p>Renamed wx.FutureCall to wx.CallLater so it is named more like
+wx.CallAfter. wx.FutureCall is now an empty subclass of wx.CallLater
+for compatibility of older code.</p>
+<p>Added the wx.lib.customtreectrl module from Andrea Gavana.</p>
+<p>Added ChangeSelection to wx.BookCtrl (the base class for wx.Notebook
+and other book controls) that is the same as SetSelection but doesn't
+send the change events.</p>
+<p>Added wx.TextCtrl.ChangeValue() which is the same as SetValue() but
+doesn't send the text changed event.</p>
+<p>For consistency, all classes having an Ok() method now also have
+IsOk(), use of the latter form is preferred although the former hasn't
+been deprecated yet</p>
+<p>Added the wx.AboutBox() function and wx.AboutDialogInfo class. They
+provide a way to show a standard About box for the application, which
+will either be a native dialog or a generic one depending on what info
+is provided and if it can all be shown with the native dialog.</p>
+<p>The code in the animate contrib has been moved into the code wxWidgets
+library, and refactored a bit along the way. For wxPython it still
+exists in the wx.animate module, but has basically been reduced to two
+classes, wx.animate.Animation, and wx.animate.AnimationCtrl. You load
+the animated GIF (and hopefully there will be other supported formats
+in the near future) in the Animation object, and then give that to the
+AnimatedCtrl for display. See the demo for an example. There is also
+still a GIFAnimationCtrl class that provides some level of backwards
+compatibility with the old implementation.</p>
+<p>wxMac: The compile option that turns on the use of CoreGraphics (a.k.a
+Quartz) for wxDC is now turned on by default. This means that all
+drawing via wxDC is done using the new APIs from apple, instead of the
+old Quick Draw API. There are, however, a few places where Quartz and
+wxDC don't fit together very well, mainly the lack of support for
+logical drawing operations such as XOR, but there is work in progress
+to provide other ways to do the same sort of thing that will work with
+Quartz and also on the other platforms.</p>
+<p>The first parts of a new 2D drawing API has been added with the
+wx.GraphicsPath and wx.GraphicsContext classes. They wrap GDI+ on
+Windows, Cairo on wxGTK and CoreGraphics on OS X. They allow path-based
+drawing with alpha-blending and anti-aliasing, and use a floating
+point cooridnate system. Currently they can only target drawing to
+windows, but other wx.DC backends are forthcoming. The APIs may
+evolve a bit more before they are finalaized with the 2.8 release, but
+there is enough there now to get a good feel for how things will work.
+There is also a transitional wx.GCDC class that provides the wx.DC API
+on top of wx.GraphicsContext. Docs and a demo are still MIA.</p>
+<p>Added a wx.AutoBufferedPaintDC that is a subclass of wx.PaintDC on
+platforms that do double buffering by default, and a subclass of
+wx.BufferedPaintDC on the platforms that don't. You can use this
+class to help avoid the overhead of buffering when it is not
+needed. There is also a wx.AutoBufferedPaintDCFactory function that
+does a little more and actually tests if the window has
+double-buffering enabled and then decides whether to return a
+wx.PaintDC or wx.BufferedPaintDC. This uses the new
+wx.Window.IsDoubleBuffered method.</p>
+</div>
+<div class="section">
+<h1><a id="id5" name="id5">2.6.3.3</a></h1>
+<ul class="simple">
+<li>15-July-2006</li>
+</ul>
+<dl class="docutils">
+<dt>wx.lib.pubsub updates from Oliver Schoenborn:</dt>
+<dd><ul class="first last simple">
+<li>fixed the hash problem with non-hashable objects</li>
+<li>now supports listeners that use *args as an argument
+(listener(*args) was not passing the validity test)</li>
+<li>corrected some mistakes in documentation</li>
+<li>added some clarifications (hopefully useful for first time
+users)</li>
+<li>changed the way singleton is implemented since old way prevented
+pydoc etc from extracting docs for Publisher</li>
+</ul>
+</dd>
+<dt>DocView and ActiveGrid IDE updates from Morgan Hua:</dt>
+<dd>New Features: In Tab-View mode, Ctrl-number will take the user to
+the numbered tab view. Modified files now show an '*' astrisk in
+the view title. Debugger framework can now support PHP debugging.
+Not important for python development, but at least that means the
+debugger framework is more generalized.</dd>
+</dl>
+<p>wx.lib.mixins.listctrl.TextEditMixin: Fixed the double END_LABEL_EDIT
+event problem in TextEditMixin by checking if the editor was already
+hidden before continuing with the CloseEditor method. Also added code
+to OpenEditor to send the BEGIN_LABEL_EDIT event and to not allow the
+opening of the editor to continue if the event handler doesn't allow
+it.</p>
+<p>Undeprecated wx.GetNumberFromUser and added wx.NumberEntryDialog.</p>
+<p>Made necessaary changes for building wxPython for Python 2.5. There
+may still be some issues related to the new Py_ssize_t type and 64-bit
+machines, but at least all compile errors and warnings related to it
+have been resolved.</p>
+</div>
+<div class="section">
+<h1><a id="id6" name="id6">2.6.3.2</a></h1>
+<ul class="simple">
+<li>3-April-2006</li>
+</ul>
+<p>Fixed reference leak in wx.gizmos.TreeListCtrl.GetSelections.</p>
+<p>wxMSW: Fixed sizing issue with wx.Choice and wx.ComboBox. This change
+was implemented by reverting a prior fix for a different problem
+(contiuous painting/resizing when a combobox is used as a widget in a
+wx.html.HtmlWindow) so a method to fix both problems is still being
+investigated.</p>
+<p>wxGTK: Fixed potential buffer overrun when pasting from the
+clipboard.</p>
+<p>Fixed problem in wx.lib.splitter when used on 64-bit platforms. Used
+the current length of the list for specifying an append instead of
+sys.maxint.</p>
+<p>wxMSW: Support added for XP themed owner drawn buttons and bitmap
+buttons. For example, if you change the foreground color of a button
+it will now be drawn with the XP themed style rather than an ugly
+generic button style.</p>
+<p>XRCed: Fix for Copy/Paste objects with international characters.</p>
+<p>Fixed the equality and inequality operators for some of the basic
+data types (wx.Point, wx.Size, wx.Colour, etc.) to no longer raise a
+TypeError if the compared object is not compatible, but to just return
+a boolean as expected. For example:</p>
+<pre class="literal-block">
+wx.Colour(64,0,64) == 123 ==> False
+</pre>
+<p>wxMSW: Fixed (again) sizing/positioning issues of calling Realize on
+a wx.ToolBar that is not manaaged directly by a frame and that is
+already shown.</p>
+<p>wxMSW: Fixed wx.Choice/wx.ComboBox so they send events when a new item
+is selected only with the keyboard.</p>
+</div>
+<div class="section">
+<h1><a id="id7" name="id7">2.6.3.0</a></h1>
+<ul class="simple">
+<li>27-March-2006</li>
+</ul>
+<p>Change the wx.ListCtrl InsertStringItem wrapper to use the form that
+takes an imageIndex, and set the default to -1. This ensures that on
+wxMSW that if there is an image list but they don't specify an image,
+the native control doesn't use one anyway.</p>
+<p>wxMSW: wx.ListCtrl in report mode is now able to support images in
+other columns besides the first one. Simply pass an image index to
+SetStringItem. For virtual list controls you can specify the image to
+use on the extra columns by overriding OnGetItemColumnImage in your
+derived class. It is passed the item number and the column number as
+parameters, and the default version simply calls OnGetItemImage for
+column zero, or returns -1 for other columns.</p>
+<p>Switched to using SWIG 1.3.27 for generating the wrapper code. There
+are some small changes needed to SWIG to work around some bugs that
+wxPython exposes, and to be able to generate code that matches that
+which wxPython is using. If you are building wxPython yourself and
+need to modify any of the *.i files or to add your own, then you will
+want to be sure to use a matching SWIG. See wxPython/SWIG/README.txt
+in the source tarball for details.</p>
+<p>wx.Image.Copy, Mirror, and GetSubImage now also do the right thing
+with the alpha channel.</p>
+<p>wxMSW: Fixed problem in wx.TextCtrl where using SetValue and
+wx.TE_RICH2 would cause the control to be shown if it was hidden.</p>
+<p>wxMSW: Numpad special keys are now distinguished from normal keys in
+key events.</p>
+<p>wxMSW: Multiline notebook tab label change now resizes the control
+correctly if an extra row is removed or added.</p>
+<p>wxMSW: On XP fall back to unthemed wxNotebook if specified orientation
+not available in the themed version.</p>
+<p>Added wx.Toolbar.GetToolsCount.</p>
+<p>Added wx.GridSizer.CalcRowsCols.</p>
+<p>Added wx.OutputStream.LastWrite.</p>
+<p>wxGTK: EVT_SET_CURSOR is now sent.</p>
+<p>wxGTK: Fix RequestMore for idle events.</p>
+<p>wxGTK: Implement user dashes for PS and GNOME printing.</p>
+<p>wxGTK: Correct update region code. Don't always invalidate the whole
+window upon resize. Reenable support for thewx.NO_FULL_REPAINT_ON_RESIZE
+flag. Also disable refreshing custom controls when focusing in and out.</p>
+<p>wx.lib.pubsub: Publisher is now able to parse a dotted notation string
+into a topic tuple. For example: subscribing to "timer.clock.seconds"
+is the same as subscribing to ("timer", "clock", "seconds").</p>
+<p>Applied patch #1441370: lib.plot - allow passing in wx.Colour()</p>
+<p>Added wx.CommandEvent.GetClientData.</p>
+<p>Updated wxStyledTextCtrl to use version 1.67 of Scintilla.
+NOTE: The STC_LEX_ASP and STC_LEX_PHP lexers have been deprecated,
+you should use STC_LEX_HTML instead.</p>
+<p>wxSTC: Implemented Fix for SF Bug #1436503. Delay the start of the
+DnD operation in case the user just intended to click, not drag.</p>
+<p>Updated the analogclock.py module to the new analogclock package from
+E. A. Tacao.</p>
+<p>Added the wx.lib.mixins.listctrl.CheckListCtrlMixin class from Bruce
+Who, which makes it easy to put checkboxes on list control items.</p>
+<p>Applied a patch from Christian Kristukat to wx.lib.plot that adds
+scrollbars when the plot is zoomed in, and also the ability to grab a
+zoomed plot and move it around with a mouse drag.</p>
+<p>XRCed updated to allow wxMenuBar to be created inside a wxFrame.</p>
+<p>Added wx.StandardPaths.GetDocumentsDir() (patch 1214360)</p>
+</div>
+<div class="section">
+<h1><a id="id8" name="id8">2.6.2.1</a></h1>
+<ul class="simple">
+<li>10-Jan-2006</li>
+</ul>
+<p>wxMSW: Fix for bug #1211907, popup menu indenting inconsistent with
+bitmaps.</p>
+<p>wxMac: Don't send an event for wx.RadioButton deselections, just the
+selections. This was done to make it consistent with the other
+platforms.</p>
+<p>wxMSW: Always set flat toolbar style, even under XP with themes: this
+is necessary or separators aren't shown at all.</p>
+<p>Fixes for bug #1217872, pydocview.DocService not correctly initialized.</p>
+<p>Fix for bug #1217874, Error in parameter name in DocManager.CreateView.</p>
+<p>Added wrappers for the wx.RendererNative class.</p>
+<p>Added the wx.lib.splitter module, which contains the
+MultiSplitterWindow class. This class is much like the standard
+wx.SplitterWindow class, except it allows more than one split, so it
+can manage more than two child windows.</p>
+<p>Docview and IDE patch from Morgan Hua with fix for bug #1217890
+"Closing view crashes Python" plus some new features:</p>
+<blockquote>
+New feature added to the IDE is 'Extensions'. Under
+Tools|Options|Extensions, you can add calls to external programs.
+For example you can add a "Notepad" extension (under windows) that
+will exec Notepad on the currently open file. A new "Notepad"
+menu item will appear under the Tools menu.</blockquote>
+<p>Some fixes to XRCed to make encoding errors a bit more user friendly.</p>
+<p>XRCed changes from Roman Rolinsky:</p>
+<blockquote>
+<ul class="simple">
+<li>Added new controls (Choicebook, Listbook, StatusBar,
+DatePicker), and completed style flags. Test window is opened
+for an available parent control if no specific view
+defined. Better handling of exceptions (highlighting does not
+'stick' anymore).</li>
+<li>Use system clipboard for Copy/Paste.</li>
+<li>Improved some dialogs (window styles, growable cols). Changed
+the range for wxSpinCtrl min/max to all integers (default 0/100
+is not always good).</li>
+</ul>
+</blockquote>
+<p>Updates for wx.lib.foldpanelbar and wx.lib.hyperlink from Andrea
+Gavana.</p>
+<p>Fix for Bug #1283496: wxPython TheClipboard class causes problems for
+pychecker. Ensure the app has been created before initializing
+wx.TheClipboard.</p>
+<p>Fix for Bug #1352602: FileBrowseButtonWithHistory can't type in Value.</p>
+<p>wxHTML: Added space after list item number.</p>
+<p>wx.lib.printout: Applied patch #1384440.</p>
+<p>wxMSW: Fix for Bug #1293225 Window_FromHWND crashes if parent is
+None.</p>
+<p>Fix for Bug #1261669, use a wx.TE_RICH2 style for the Process demo so
+it doesn't fill up too soon.</p>
+<p>Applied Patch #1354389: wxPython MenuItem SetBitmaps fix.</p>
+<p>Applied Patch #1239456: wxPython wx.DataObject.GetAllFormats fix.</p>
+<p>Applied Patch # #1230107 which allows image handlers to be written in
+Python by deriving from wx.PyImageHandler.</p>
+<p>Applied patch #1072210: generalize printout.py to allow text printing.</p>
+<p>Applied patch #1243907: Give Throbber much more flexibility by
+allowing the user to set the rest image, the direction, the current
+index, custom sequence. Allows user to manually step through the
+sequence with Next(), Previous(), Increment(), Decrement() &
+SetCurrent(). Very handy if you have multiple throbbers that you want
+to synchronize with a single timer.</p>
+<p>Fix for bug #1336711: wx.lib.calendar.CalenDlg can yield incorrect
+result.</p>
+<p>Applied patch from Morgan Hua for updates to ActiveGrid code
+(pydocview, ActiveGrid IDE, etc.)</p>
+<p>Applied patch #1326241: Supporting "setup.py install --install-headers=path"</p>
+<p>Applied patch from Morgan Hua to fix bug #1219423: CommandManager
+should not repeat old commands after a branch.</p>
+<p>Applied patch #1238825 adding search backward capabilities to the
+demo. Modified to use the up/down options in the wx.FindReplaceDialog
+instead of a separate menu item.</p>
+<p>Fix for bug #1266745 and #1387725 in the wx.FindReplaceDialog on MSW.
+Actually check we are using MSLU before doing the hack designed to
+workaround a bug in MSLU!</p>
+<p>wxMSW: wx.lib.iewin.IEHtmlWindow now properly handles tabbing, return
+and other special keys properly.</p>
+<p>Lots of PyCrust enhancments started by Franz Steinaeusler, Adi Sieker,
+and Sebastian Haase, and which in turn were further enhanced, fixed
+tweaked and finished up by me. The changes include the following:</p>
+<blockquote>
+<ul class="simple">
+<li>The Autocomplete and Calltip windows can now be opened manually
+with Ctrl-Space and Ctrl-Shift-Space.</li>
+<li>In the stand alone PyCrust app the various option settings,
+window size and position, and etc. are saved and restored at the
+next run.</li>
+<li>Added a help dialog bound to the F1 key that shows the key
+bindings.</li>
+<li>Added a new text completion function that suggests words from
+the history. Bound to Shift-Return.</li>
+<li>F11 will toggle the maximized state of the frame.</li>
+<li>switched to Bind() from wx.EVT_*().</li>
+<li>Display of line numbers can be toggled.</li>
+<li>F12 toggles a "free edit" mode of the shell buffer. This mode
+is useful, for example, if you would like to remove some output
+or errors or etc. from the buffer before doing a copy/paste.
+The free edit mode is designated by the use of a red,
+non-flashing caret.</li>
+<li>Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.</li>
+<li>General code cleanup and fixes.</li>
+<li>Use wx.StandardPaths to determine the location of the config
+files.</li>
+<li>Use wx.SP_LIVE_UPDATE on crust and filling windows.</li>
+<li>Extended the saving of the config info and other new features to
+the PyShell app too. Additionally, other apps that embed a
+PyCrust or a PyShell can pass their own wx.Config object and
+have the Py code save/restore its settings to/from there.</li>
+<li>All of the classes with config info get an opportunity to
+save/load their own settings instead of putting all the
+save/load code in one place that then has to reach all over the
+place to do anything.</li>
+<li>Enable editing of the startup python code, which will either be
+the file pointed to by PYTHONSTARTUP or a file in the config dir
+if PYTHONSTARTUP is not set in the environment.</li>
+<li>Added an option to skip the running of the startup code when
+PyShell or PyCrust starts.</li>
+<li>PyCrust adds a pp(item) function to the shell's namespace that
+pretty prints the item in the Display tab of the notebook.
+Added code to raise that tab when pp() is called.</li>
+<li>Added an option for whether to insert text for function
+parameters when popping up the call tip.</li>
+<li>Added Find and Find-Next functions that use the
+wx.FindReplaceDialog.</li>
+</ul>
+</blockquote>
+<p>Applied patches from Will Sadkin for wx.lib.masked modules:</p>
+<blockquote>
+<ul class="simple">
+<li>Now ignores kill focus events when being destroyed.</li>
+<li>Added missing call to set insertion point on changing fields.</li>
+<li>Modified SetKeyHandler() to accept None as means of removing
+one.</li>
+<li>Fixed keyhandler processing for group and decimal character
+changes.</li>
+<li>Fixed a problem that prevented input into the integer digit of a
+integerwidth=1 numctrl, if the current value was 0.</li>
+<li>Fixed logic involving processing of "_signOk" flag, to remove
+default sign key handlers if false, so that
+SetAllowNegative(False) in the NumCtrl works properly.</li>
+<li>Fixed selection logic for numeric controls so that if
+selectOnFieldEntry is true, and the integer portion of an
+integer format control is selected and the sign position is
+selected, the sign keys will always result in a negative value,
+rather than toggling the previous sign.</li>
+</ul>
+</blockquote>
+<p>wx.FontMapper.SetConfig is deprecated. You should instead just set an
+application-wide config object with wx.Config.Set, which wx.FontMapper
+will use by default.</p>
+<p>Added wx.GetMouseState which returns the current state of the mouse.
+It returns an instance of a wx.MouseState object that contains the
+current position of the mouse pointer in screen coordinants, as well
+as boolean values indicating the up/down status of the mouse buttons
+and the modifier keys.</p>
+<p>Added wx.SizerItem.SetUserData</p>
+<p>A variety of updates to wx.lib.floatcanvas, including Added
+DrawObjects, including a ScaledTextBox, with auto-wrapping, etc, and
+Scaled and Unscaled Bitmap Objects.</p>
+<blockquote>
+WARNING: Changed all DrawObjects to take an (x,y) pair rather
+than individual x,y parameters. Also changed rectangles and
+ellipses to take (w,h) pair. This is an API change, but should
+be easy to accommodate, all you need to do is add a parenthesis
+pair: (...x, y, ...) ---> (...(x,y), ...)</blockquote>
+</div>
+<div class="section">
+<h1><a id="id9" name="id9">2.6.1.0</a></h1>
+<ul class="simple">
+<li>4-June-2005</li>
+</ul>
+<p>wx.ListCtrl: patch #1210352, fixes editing in generic wx.ListCtrl with
+wx.LC_EDIT_LABELS.</p>
+<p>Applied patch #208286, MediaCtrl DirectShow rewrite.</p>
+<p>DocView patches from Morgan Hua: bug fixes, and additional SVN
+commands, also added a default template that uses the text editor for
+any unknown file type.</p>
+<p>wxMSW: Use the system IDC_HAND cursor for wx.CURSOR_HAND and only fallback
+to the strange wxWidgets version if the system one is not available.</p>
+<p>wx.grid.Grid: Merge the cell size attribute the same way that other
+attributes are merged, e.g., if it is already set to a non-default
+value in the current GridCellAttr object then don't merge from the
+other.</p>
+<p>wx.lib.evtmgr: Fixed to use wx._core._wxPyDeadObject</p>
+<p>wx.lib.gridmovers: Don't scroll when the mouse is dragged outside of
+the grid, unless the mouse is kept in motion.</p>
+<p>wxMSW: Applied patch #1213290 incorrect logic in
+wx.TopLevelWindow.ShowFullScreen.</p>
+<p>Applied patch #1213066 correct device names for Joystick in Linux.</p>
+<p>wxGTK: Applied patch #1207162 wx.TextCtrl.SetStyle fix for overlapping
+calls.</p>
+<p>wx.FileConfig: fixed DeleteEntry to set the dirty flag properly so the
+change will get written at the next flush.</p>
+</div>
+<div class="section">
+<h1><a id="id10" name="id10">2.6.0.1</a></h1>
+<ul class="simple">
+<li>30-May-2005</li>
+</ul>
+<p>Added wx.BrushFromBitmap to create a stippled brush in a single step.
+Also added missing brysh style flags: wx.STIPPLE_MASK
+wx.STIPPLE_MASK_OPAQUE.</p>
+<p>wxMSW: Fix for default control colours when the system text fg colour
+is not black.</p>
+<p>wxGTK: Patch #1171754, It is now possible to have a menu item that
+both has an icon and is a submenu.</p>
+<p>wxMSW: Patch #1197009, better refreshes when windows are moved and
+resized.</p>
+<p>wxMSW: Patch #1197468. Keeps track of pending size/position changes
+in case there is more than one adjustment for a window in a single
+DeferWindowPos set, then the pending values can be used for defaults
+instead of current values.</p>
+<p>Fixed the typemap that converts a Python list of strings to a
+wxArrayString so it uses the wxPython default encoding.</p>
+<p>Several docstrings added and updated. Lots more to go.</p>
+<p>wxMac: Strings added to the clipboard or used in DnD no longer have an
+extra null character at the end.</p>
+<p>Added wx.GetXDisplay that returns a raw swigified pointer for the X11
+Display, or None for the non-X11 platforms.</p>
+<p>wxMenu: Don't send an event when selecting an already selected radio
+item.</p>
+<p>Added wx.LaunchDefaultBrowser.</p>
+<p>wxMSW: Fixed erroneous selection of content in wx.ComboBox when within
+a wx.StaticBox.</p>
+<p>wxMSW: Fixed alpha blitting to take into account source position.</p>
+<p>Ensure that Python is still in an initialized state before doing any
+locking or unlocking in wxPyBeginBlockThreads and wxPyEndBlockThreads
+as these can be triggered after Python has been finalized in embedding
+situations.</p>
+<p>Added alternate constructors for wx.Font: wx.FontFromPixelSize,
+wx.FFont, wx.FFontFromPixelSize. See the docstrings or new api docs
+for details.</p>
+<p>Added wx.lib.hyperlink from Andrea Gavana. It is a control like
+static text that acts like a hyper-link, launching the system's
+default browser in response to the clicks.</p>
+<p>Added an optional parameter to wxversion.select that allows you to
+specify that the extra components specified in the version string are
+required. For example, if you ask for "2.6-unicode" but only the ansi
+version is installed then by default the ansi version will be selected
+as it considered close enough since the version numbers match. If you
+want to force the options to be required then you can just add a True
+parameter, like this:</p>
+<pre class="literal-block">
+import wxversion
+wxversion.select("2.6-unicode", True)
+import wx
+</pre>
+<p>Tweaked wx.lib.buttons such that flat buttons (e.g. have no bevel and
+a wx.BORDER_NONE style flag) paint themed backgrounds if there are
+transparent areas and the parent is displaying a theme.</p>
+<p>wxMSW: Fix for wrong sash colour of wx.SplitterWindow in the silver
+theme on XP.</p>
+<p>Added a wx.xrc.XmlResourceHandler for the Ticker class. See
+wx/lib/ticker_xrc.py</p>
+<p>wxSTC: Fixed CmdKeyAssign key bindings for Ctrl-Backspace.</p>
+<p>wxMSW: Fixed a bug in wx.TextCtrl where all the lines were being used
+to calculate the best size, instead of using a reasonable limit.</p>
+<p>XRCed: Use wx.GetDefaultPyEncoding/wx.SetDefaultPyEncoding for
+changing active encoding. Fixed pasting siblings (Ctrl key pressed
+while pasting).</p>
+<p>wx.lib.filebrowsebutton: Bug fix from Chad Netzer for when
+self.history is None.</p>
+<p>wx.ogl: Patch from Davide Salomoni that adds an optional point
+parameter to LineShape.InsertLineControlPoint allowing one to
+optionally specify where the new control point has to be drawn.</p>
+<p>wxMSW: setting foreground colour for wx.CheckBox now works when using
+XP themes.</p>
+<p>More updates to the docview library modules and sample apps from the
+ActiveGrid folks. Their sample IDE is now able to integrate with
+Subversion.</p>
+<p>wx.grid.Grid: Ensure that the grid gets the focus when it is
+left-clicked. Note that if you have custom widgets that handle the
+EVT_LEFT_DOWN event but do not call event.Skip() then you will
+probably want to add a call to self.SetFocus in the event handler.</p>
+<p>wxGTK: Add wxSTAY_ON_TOP support [Patch 1206023]</p>
+<p>wx.TreeCtrl: wx.EVT_TREE_ITEM_MENU event made consistent on all
+platforms. The location of the click or the item is included in the
+event as well.</p>
+<p>wxGTK: Setting background colour of a window now only affects the
+window itself, not the borders, scrollbars, etc. (Bug #1204069)</p>
+<p>Print framework: Add more paper sizes and code to fallback to an
+explicit paper size if a known paper size is not found for the
+printer.</p>
+<p>wxMac: Applied patch for bug #1206181 Option-key decodes are wrong,
+also applied patch for bug #1205691 Modified Fn keys don't work.</p>
+<p>wx.Image: Fixed to preserve alpha channel in Rotate90 method.</p>
+<p>wxMSW: Fixed incorrect background colour on wx.CheckListBox.</p>
+<p>wxMSW: Fixed drawing of owner drawn buttons with multiline labels</p>
+<p>Removed a bunch of unnecessary files, and removed or replaced images
+that we're not sure of their origin or license.</p>
+<p>The default DoGetBestSize is updated to not always return the current
+size if the window has no sizer, children, or minsize set. Instead
+the current size is set as the minsize. This solves the occasional
+problem where a sizer may cause a childless panel to grow but never
+shrink.</p>
+<p>wxMSW: When converting a wx.Icon to a bitmap check if the icon has an
+alpha channel and set the bitmap to use it.</p>
+<p>Fixed the wrong class name used in wx.PyScrolledWindow's call to
+_setCallbackInfo.</p>
+<p>wxMSW: patch #1207202, Fixes GDI leak when using stock cursors.</p>
+<p>wx.calendar.CalendarCtrl: Patch #1207531, Keeps the CalendarCtrl wide
+enough even when the weekday names for the locale are shorter than
+usual.</p>
+<p>Made GridCellNumberEditor.StartingKey also insert the typed char when
+there is a range of allowed values (so a wx.SpinCtrl is used instead
+of a wx.TextCtrl.)</p>
+</div>
+<div class="section">
+<h1><a id="id11" name="id11">2.6.0.0</a></h1>
+<ul class="simple">
+<li>26-Apr-2005</li>
+</ul>
+<p>wxMSW: Fixed wx.TransientPopupWindow (and therefore wx.TipWindow) to
+auto-dismiss when the mouse is clicked outside of the popup like it is
+supposed to.</p>
+<p>wxMSW: Fixed bug #1167891 wx.Notebook display problem with wx.NB_MULTILINE.</p>
+<p>wxMSW: Fixed bad cliping of hidden windows inside of wx.StaticBox.</p>
+<p>wxGTK: The configure flags for selecting GTK+ 1.2.x or 2.x has
+changed slightly. It is now --with-gtk[=VERSION] where VERSION is
+either '1', '2' or 'any'. The default is '2'.</p>
+<p>wx.stc.StyledTextCtrl: Added the following methods for alternate ways
+to set and fetch text from the document buffer. They work similarly
+to the existing methods of the same name, except that they don't go
+through the same string/unicode <--> wxString conversions. The "Raw"
+methods will do no conversions at all and in a unicode build of
+wxPython the strings will be in the utf-8 encoding and in an ansi
+build no assumption is made about the encoding. The "UTF8" functions
+will attempt to always get/set utf-8 text, which it will always be
+able to do in a unicode build, and in an ansi build it will depend on
+the content of the utf-8 used being compatible with the current
+encoding, (you'll get an exception otherwise.)</p>
+<blockquote>
+<table border="1" class="docutils">
+<colgroup>
+<col width="49%" />
+<col width="51%" />
+</colgroup>
+<tbody valign="top">
+<tr><td>AddTextRaw</td>
+<td>AddTextUTF8</td>
+</tr>
+<tr><td>InsertTextRaw</td>
+<td>InsertTextUTF8</td>
+</tr>
+<tr><td>GetCurLineRaw</td>
+<td>GetCurLineUTF8</td>
+</tr>
+<tr><td>GetLineRaw</td>
+<td>GetLineUTF8</td>
+</tr>
+<tr><td>GetSelectedTextRaw</td>
+<td>GetSelectedTextUTF8</td>
+</tr>
+<tr><td>GetTextRangeRaw</td>
+<td>GetTextRangeUTF8</td>
+</tr>
+<tr><td>SetTextRaw</td>
+<td>SetTextUTF8</td>
+</tr>
+<tr><td>GetTextRaw</td>
+<td>GetTextUTF8</td>
+</tr>
+<tr><td>AppendTextRaw</td>
+<td>AppendTextUTF8</td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+<p>wx.stc.StyledTextCtrl: Added the StyleSetFontEncoding(style, enc)
+method that allows you to set the encoding to be used by the font for
+a particular style.</p>
+<p>wxMac: Fixed wx.ComboBox to forward the EVT_CHAR, EVT_KEY_DOWN,
+EVT_KEY_UP and EVT_TEXT events from its embedded text control.</p>
+<p>wxMac: Corrected refresh bugs in wxGrid.</p>
+<dl class="docutils">
+<dt>XRCed: Updated to version 0.1.5.</dt>
+<dd><ul class="first last simple">
+<li>Added wxWizard, wxWizardPageSimple (only from pull-down menu).</li>
+<li>Hide command for test window.</li>
+<li>Replacing classes works better.</li>
+<li>Added Locate tool.</li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h1><a id="id12" name="id12">2.5.5.1</a></h1>
+<ul class="simple">
+<li>8-Apr-2005</li>
+</ul>
+<p>wxMSW: Fixed bug #1022383, 'several ComboBoxes appear selected'</p>
+<p>wx.grid.Grid: Fixed bug #1163384. Moved the code that handles
+activating the cell editors to a EVT_CHAR event handler. This is done
+so the character inserted into the editor will be the "cooked" char
+value (including accented or composed keys) rather than the raw code
+provided by the EVT_KEY_DOWN event.</p>
+<p>Added orient parameter to wx.MDIParentFrame.Tile()</p>
+<p>wxMSW: wxTextCtrl with wx.TE_RICH2 style now uses RichEdit 4.1 if
+available.</p>
+<p>Added GetCount, GetCountRGB, and GetCountColour methods to
+wx.ImageHistogram.</p>
+<p>wxMSW: wx.Window.Refresh changed to explicitly refresh all children as
+well as the parent. Previously it was implicitly done because parents
+did not clip their children by default. Now that they always clip
+children then Refresh needed to be fixed to do a recursive refresh.
+This also fixes the Freeze/Thaw problems that some people had with
+2.5.4.1.</p>
+<p>wx.SplitterWindow: Send EVT_SPLITTER_SASH_POS_CHANGED only once after
+end of dragging and not after each CHANGING event (modified patch
+#1076226)</p>
+<p>wx.glcanvas.GLCanvas: applied patch fixing problems with X server
+crash when using nVidia cards (patch 1155132)</p>
+<dl class="docutils">
+<dt>wx.lib.mixins.listctrl: Patches from Toni Brkic:</dt>
+<dd><ul class="first last simple">
+<li>Bugfix for TextEditMixin when the view can't be scrolled</li>
+<li>Enhancement for ListCtrlAutoWidthMixin, allowing it to manage
+the width of any column.</li>
+</ul>
+</dd>
+</dl>
+<p>wxMac: removal and reusing toolbar tools like the other platforms is
+now possible.</p>
+<p>wxMac: Correct radio tool selection after calling Realize a 2nd time.</p>
+<p>wxMSW: Applied patch #1166587, removes all flicker from wx.StaticBox</p>
+<p>Added wx.lib.foldpanelbar, Andrea Gavana's port of Jorgen Bodde's C++
+wxFoldPanelBar classes to Python.</p>
+<p>wxGTK: Applied patch #1173802, reimplementation of GtkFileChooser
+wxFileDialog by Mart Raudsepp. Note that this new file dialog is only
+used on GTK2 >= 2.4. For earlier GTK2 versions and GTK1 then the
+older generic file dialog is used.</p>
+<p>wxMSW: fixes to static box borders calculations (finalizes patch
+#1166587)</p>
+<p>wx.Image: Use Python's buffer interface API for all image data and
+alpha Set/Get methods and the ImageFromData* constructors. They all
+still copy the buffer except for SetDataBuffer and SetAlphaBuffer, but
+this gives more flexibility on where the data can come from.</p>
+<p>Added MDI support to XRC</p>
+<p>Added wx.animate module and a demo. The wx.animate module provides a
+control that is able to display an animated GIF file.</p>
+<p>wx.lib.plot.py: Applied patch from Werner F. Bruhin that allows either
+vertical and/or horizontal gridlines.</p>
+<p>wxMSW: Extra space given for top border of wx.StaticBoxSizer so the
+upper line is not cliped when there is no label.</p>
+<p>wxMSW: Restored old behaviour of wx.StaticBox.SetBackgroundColour only
+affecting the label.</p>
+<p>wxMSW: Fixed missing EVT_RIGHT_DOWN and EVT_TREE_ITEM_RIGHT_CLICK
+events in a wx.TreeCtrl.</p>
+<p>Added wx.GetTopLevelWindows() function which returns a copy of the
+list of top-level windows that currently exist in the application.</p>
+<p>Updated docview library modules and sample apps from the ActiveGrid
+folks.</p>
+<p>Added the ActiveGrid IDE as a sample application.</p>
+</div>
+<div class="section">
+<h1><a id="id13" name="id13">2.5.4.1</a></h1>
+<ul class="simple">
+<li>16-Mar-2005</li>
+</ul>
+<p>wx.Sizer Add, Insert, and Prepend functions now return a reference to the
+wx.SizerItem that was added to the sizer, and the wx.SizerItem has a
+GetRect accessor to give the position of the item on the parent window.</p>
+<p>Added wx.Sizer.GetItem method which returns the wx.SizerItem for the given
+wx.Window, wx.Sizer or position index.</p>
+<p>wxMSW: wx.RadioButtons in the same group no longer have to be
+consecutive (there may be intervening controls). Without this fix, an
+out-of-sync assert is generated when clicking on a radio button and
+then calling GetValue().</p>
+<dl class="docutils">
+<dt>Some XRC changes:</dt>
+<dd><ul class="first last simple">
+<li>Added 'icon' property to wxFrame and wxDialog</li>
+<li>No longer ignores menu bitmaps on non-MSW platforms</li>
+<li>Notebook page bitmaps are now supported</li>
+<li>added system colours and fonts support (based on patch #1038207)</li>
+</ul>
+</dd>
+</dl>
+<p>wxMSW: fix for [ 1052989 ] TextCtrl.SetBackgroundColour(wx.NullColour)
+bug.</p>
+<p>Added wx.PasswordEntryDialog analagous to wx.TextEntryDialog, allows
+detecting entering an empty string vs. cancel unlike the
+wx.GetPasswordFromUser dialog function.</p>
+<p>OGL patch from Shane Holloway:</p>
+<blockquote>
+<p>Two simple problems found in the new python ogl code. First is
+the patch for _canvas.py. Essentially:</p>
+<pre class="literal-block">
+dx = abs(dc.LogicalToDeviceX(x - self._firstDragX))
+dy = abs(dc.LogicalToDeviceY(y - self._firstDragY))
+</pre>
+<p>was incorrect because (x,y) and (self._firstDragX,
+self._firstDragY) are both already in Logical coordinates.
+Therefore the difference between the two is also in logical
+coordinates, and the conversion call is an error. This bug
+surfaces when you have OGL on a scrollwin, and you are far from
+the origin of the canvas.</p>
+<p>The second change in _composit.py basically removes the assumption
+that the child is in both self._children and self._divisions.
+Causes many problems when it's not. ;)</p>
+</blockquote>
+<p>Fixed GetSaveData and SetSaveData in wx.lib.multisash to not depend on
+the default way that class objectss are converted to strings.</p>
+<p>Fixed problem in StyledTextCtrl.Set[HV]ScrollBar that could leave the
+internal scrollbar visible.</p>
+<p>Added wx.StandardPaths which provides methods for determining standard
+system paths for each platform.</p>
+<p>wxMSW: The window background is now only erased by default if the
+background colour or background mode has been changed. This better
+allows the default system themed behaviour to show through for
+uncustomized windows. Explicit support added for using the correct
+theme texture for wx.Notebook pages and their children.</p>
+<p>wx.Image: Added support for alpha channels in interpolated and
+non-interpolated image rotation. Added ConvertAlphaToMask helper
+method for turning shades of grey into shades of alpha and a colour.</p>
+<p>wxGTK2: Reimplemented DoDrawRotatedText() by way of a rotation of an
+alpha blended text bitmap. It would be better if Pango could draw
+directly into an wxImage (as FreeType can,) but that is for later...</p>
+<p>Added wrappers and a demo for the wx.MediaCtrl class, which can play
+various forms of audio/video media using native codecs install on the
+system. So far it is only implemented for Windows and OSX.</p>
+<p>wxGTK: Patch applied for Freeze()/Thaw() for wxTextCtrtl.</p>
+<p>Added "gravity" for splitter window (patch 1046105). Gravity is a
+floating-point factor between 0.0 and 1.0 which controls position of
+sash while resizing the wx.SplitterWindow. The gravity specifies
+how much the left/top window will grow while resizing.</p>
+<p>wxMSW: wx.Slider's C++ implementation rewritten to be more
+maintainable and hopefully less buggy. The position of the labels has
+also been changed in order to better comply with Microsoft's examples
+of how to use the control.</p>
+<p>wxMSW: Fix wx.TreeCtrl to end label editing if the control loses
+focus (a slightly modified patch 1084592.)</p>
+<p>Added wx.EXEC_NODISABLE flag for wx.Execute, which will prevent all
+the app's windows being disabled while a synchronous child process is
+running.</p>
+<p>wxMSW: Much work to correct painting (or leaving transparent) of
+control backgrounds, properly using background themes on XP, etc.</p>
+<p>Fixed a circular reference problem with wx.Timer. It will now
+completely cleanup after itself when the last reference to the timer
+is removed. If you were previously using timer.Destroy() to cleanup
+your timers it will no longer work. Instead you should hold a
+reference to the timer and then del the reference when you are
+finished with the timer.</p>
+<p>Updated to 1.3.24 of SWIG. All of my big patches have been applied to
+the main SWIG source tree, but unfortunatly there were also some bugs
+added that affected the wxPython build and a few details in my
+original patch were changed/removed, so we are still not free of
+patches. A new patch for SWIG is located in the wxPython/SWIG
+directory of the wxPython source tree. SWIG 1.3.24 plus this patch
+should be used by anyone who is making custom modifications to
+wxPython's .i files, or building their own extension modules or
+etc. that need to interact with the wxPython swigged types. For the
+morbidly curious, here are a few more details:</p>
+<blockquote>
+<ul class="simple">
+<li>Since it is now possible easily and simply share the SWIG type
+tables across modules I reverted to always using the stock SWIG
+runtime instead of my slightly hacked up version of it exported
+via the wxPython C API.</li>
+<li>The %name directive is now deprecated so I replaced most uses of
+it with a custom %Rename macro that uses %rename internally.
+These will evetually need to be replaced with a DocDecl macro
+when docstrings are added for those items.</li>
+<li>The "this" attribute of all SWIGged classes is no longer a
+string containing a "swigified pointer", but rather a custom
+built-in type that holds the real C pointer to the object and
+the type info. It can be converted to a string like the old
+value using str() or to the long integer value of the pointer
+using long().</li>
+</ul>
+</blockquote>
+<p>Added SetDefaultPyEncoding and GetDefaultPyEncoding functions which
+will set/get the encoding used by wxPython to convert string or
+unicode objects to/from wxString objects. Previously the default
+Python encoding was always used, but unless the user had tweaked their
+sitecustomize.py file it is always "ascii", which would result in
+errors if the strings contained character codes >= 128.
+SetDefaultPyEncoding will now allow you to control which encoding will
+be used to do those conversions. The default encoding is set to the
+value of <cite>locale.getdefaultlocale()[1]</cite> when wxPython is first
+imported. Please see <a class="reference" href="http://www.alanwood.net/demos/charsetdiffs.html">http://www.alanwood.net/demos/charsetdiffs.html</a>
+for information on the differences between the common latin/roman
+encodings.</p>
+<p>Added wxStdDialogButtonSizer, which is a a special sizer that knows
+how to order and position standard buttons in order to conform to the
+current platform's standards. You simply need to add each <cite>wx.Button</cite>
+to the sizer, and be sure to create the buttons using the standard
+ID's. Then call <cite>Realize</cite> and the sizer will take care of the rest.</p>
+<p>wxMSW Toolbar: pass correct tool id (and not always -1) to the
+EVT_TOOL_RCLICKED handler</p>
+<p>wxGTK: Applied patch for combo box SELECTED events (no longer get
+lots of surplus events)</p>
+<p>wxGTK: Applied patch for proper menu highlight colour detection in
+wx.SystemSettings.</p>
+<p>wxGTK: Commited scrollbar patch #1093339 which sends lineup, linedown
+events based on intercepting the mouse down events.</p>
+<p>wxGTK: Applied patch #1102789 which solved conflicts between wxWidgets
+and GTK+'s context menu code.</p>
+<p>wxGTK: Applied patch #1100327 for correct feedback from DND actions
+(not all actions are allowed).</p>
+<p>Fixed memory leak in wxGrid::UpdateAttr[Rows][Or][Cols] (patch 1104355)</p>
+<p>For efficiency reasons, text controls no longer set the string for
+each text updated event, but rather query for the string value only
+when GetString is called from an event handler.</p>
+<p>Added wx.SL_INVERSE style which will cause wx.Slider to invert the min
+and max ends of the slider.</p>
+<p>Several patches applied, such as #1111174, #1110252 and others, that
+make the generic wx.TreeCtrl (used on wxGTK and wxMac) be more
+conistent with the wxMSW native wx.TreeCtrl.</p>
+<dl class="docutils">
+<dt>XRCed:</dt>
+<dd><ul class="first last simple">
+<li>Edit->Locate command (Ctrl-L) for quick selection of items.
+Works with event-handling controls (buttons, text fields) but
+not with labels/sizers.</li>
+<li>Some improvements: relative paths for files supplied as command-
+line argument work correctly, notebook panels are highlighted
+better.</li>
+</ul>
+</dd>
+</dl>
+<p>wxMac: Fixed a long-standing issue where wxSlider controls with a
+hardcoded size would misplace their labels behind the slider control.</p>
+<p>wx.HtmlListBox fixed so calling RefreshLine(s) will cause the data for
+that line to be refetched from the overridden methods in the derived
+class.</p>
+<p>The default DoGetBestSize now includes the difference (if any) between
+the client size and total size of the window, (such as the size of
+borders.) Code that sets the client size using the best size, or that
+added extra space to sizers to compensate for this bug may need to be
+changed.</p>
+<p>Can suppress themed notebook pages with the wxNB_NOPAGETHEME style or
+setting system option msw.notebook.themed-background to 0.</p>
+<p>wxSyledTextCtrl updated to use Scintilla 1.62.</p>
+<p>Can now set the msw.window.no-clip-children system option to 1 to
+eliminate weird refresh behaviour (delays between a window being
+erased and repainted, giving a ghostly gradual-redraw effect). May be
+a temporary 'fix' until properly fixed before 2.6.</p>
+<p>wxMac: Toolbar is now more native looking with borderless toolbar
+buttons.</p>
+<p>wxMac: Switched wx.Bitmap to use newer Quartz object types and APIs
+internally. This results in faster display and better alpha support.</p>
+<p>Added wx.DatePickerCtrl.</p>
+<p>wx.html.HtmlWindow now supports background images.</p>
+<p>Added wx.lib.gestures module from Daniel Pozmanter which supports
+using Mouse Gestures in an application.</p>
+<p>wxGTK2: ENTER and LEAVE mouse events are now sent for multi-line text
+controls.</p>
+<p>wxMSW: "Alt" key (VK_MENU) now results in WXK_ALT keyboard event, not
+WXK_MENU</p>
+<p>Added modules from Peter Yared and Morgan Hua that implement the wx
+Doc/View framework in pure Python code. See wx.lib.docview for the
+base implementation and wx.lib.pydocview for Python-specific
+extensions. There are also a couple sample applications located in
+samples/docview.</p>
+<p>Added GetBitmap, GetIcon to wx.ImageList.</p>
+<p>wxGTK wx.Button.SetLabel no longer invalidates/resets the font.</p>
+<p>wx.Sizer.AddWindow, AddSizer, AddSpacer and etc. have now been
+undeprecated at the request of Riaan Booysen, the Boa Constructor team
+lead. Boa needs them to help keep track of what kind of item is being
+managed by the sizer. They are now just simple compatibility aliases
+for Add, and etc.</p>
+<p>The old C++ version of the OGL lib is no longer built by default. Use
+the Python version in the wx.lib.ogl package instead.</p>
+<p>The wx.iewin module is no longer built by default. You can use the
+wx.lib.iewin version instead.</p>
+<p>Fixed wx.BufferedPaintDC for scrolled windows to work whether the
+buffer is covering only the client area or the full virtual area of
+the scrolled window. By default it will assume that only the client
+area is covered. This is different than the old behavior so to
+indicate that the entire virtual area is covered simply add a
+style=wx.BUFFER_VIRTUAL_AREA parameter.</p>
+<p>wx.gizmos.TreeListCtrl: Add support for the EVT_TREE_ITEM_GETTOOLTIP
+event.</p>
+<p>Added Resize, SetRGBRect, Size, and GetOrFindMaskColour methods to
+wx.Image.</p>
+<p>Added wx.Rect.IsEmpty</p>
+<dl class="docutils">
+<dt>wxGTK:</dt>
+<dd><ul class="first last simple">
+<li>Corrected wx.ListBox selection handling</li>
+<li>Corrected default button size handling for different themes</li>
+<li>Corrected splitter sash size and look for different themes</li>
+<li>Fixed keyboard input for dead-keys</li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section">
+<h1><a id="id14" name="id14">2.5.3.1</a></h1>
+<ul class="simple">
+<li>9-Nov-2004</li>
+</ul>
+<p>wxMac focus and border refreshes corrected.</p>
+<p>Updated internal PNG library.</p>
+<p>wxMac fix for metal appearance on wx.ToolBar.</p>
+<p>wx.grid.Grid fix allowing DoGetBestSize to be called before CreateGrid
+(which means that a min size doesn't need to be specified.)</p>
+<p>wxMac fix for not sending a native click to a control if it is not
+enabled (does an enable itself)</p>
+<p>Added wx.lib.ogl.DrawnShape, and fixed various little bugs in the new
+OGL.</p>
+<p>Added support to XRC and XRCed for the 3-state checkbox flags and also
+for wx.ToggleButton. Updated the generic window styles supported by
+XRCed.</p>
+<p>It is now possible to create "stock" buttons. Basically this means
+that you only have to provide one of the stock IDs (and either an
+empty label or a label that matches the stock label) when creating the
+button and wxWidgets will choose the stock label to go with it
+automatically. Additionally on the platforms that have a native
+concept of a stock button (currently only GTK2) then the native stock
+button will be used. For example, the following will result in a
+button with "Cancel" as the label and if run on wxGTK2 then there will
+also be an image of a red X:</p>
+<pre class="literal-block">
+b = wx.Button(parent, wx.ID_CANCEL)
+</pre>
+<p>Added wx.lib.ticker.Ticker class from Chris Mellon.</p>
+<p>Fix some incorrect clipping regions in wxSTC on wxGTK.</p>
+<p>Added wrapper for wx.grid.Grid.GetOrCreateCellAttr.</p>
+<p>Removed my copy of distutils from the wxPython source tree. Now that
+I am no longer doing builds on Python 2.1 the newest distutils is no
+longer needed. (There is still one small bug in Python 2.2 distutils
+on win32, but it is easily worked around.) This sovles the problem of
+incorrect builds on some systems where the system installed distutils
+has been patched to behave slightly differently, for example SuSE on
+x86_64 or Chandler's build.</p>
+<p>Updated to SWIG 1.3.22 (plus my patch.) See wxPython/SWIG/README.txt
+in the source tree if you need to use SWIG when building your own copy
+of wxPython, or other extension modules that need to integrate with
+the wxPython modules.</p>
+<p>Added wx.Frame.RequestUserAttention which, if the platform suports it,
+will do something (such as flash the task bar item) to suggest to the
+user that they should look at that window.</p>
+<p>"Fixed" wx.grid.Grid.SetDefaultEditor and SetDefaultRenderer by making
+them register the editor or renderer for the "string" data type.</p>
+<p>Added depth param to wx.Image.ConvertToBitmap.</p>
+<p>Extended the wx.calendar.CalendarCtrl class with methods that get/set
+a Python datetime or date object. (These will only work with Python
+2.3+) The methods are PySetDate, PyGetDate, PySetLowerDateLimit,
+PySetUpperDateLimit, PySetDateRange, PyGetLowerDateLimit, and
+PyGetUpperDateLimit. Also, CalendarEvent was extended with PySetDate
+and PyGetDate methods.</p>
+<p>wxMSW: SetBackgroundColour on a wx.Choice or a wx.ComboBox will now
+also set the colour of the dropdown.</p>
+<p>wxMac: MessageDialog now supports wx.NO_DEFAULT style</p>
+<p>wxMSW: added AssociateHandle and DissociateHandle to wx.Window</p>
+<p>wxMac: fix for toolbar tooltips</p>
+<p>wx.Sizer.Show (and Hide) now take an optional parameter specifying if
+the item to be shown should be searched for recursivly in subsizers,
+and return a boolean value indicating if the item was found.</p>
+<p>wxMSW: fixed MaximizeEvent generation in wx.Frame</p>
+<p>wxMSW: fixed sending duplicate EVT_COMBOBOX events</p>
+<p>Smoother time estimation updates in wx.ProgressDialog (patch 992813)</p>
+<p>Made wx.Listbook events more consistent with wx.Notebook ones (patch
+1001271)</p>
+<p>Fixed rounding errors in variable status bar panes widths computation
+(patch 1030021)</p>
+<p>Added possibility to specify printer bin (patch 910272)</p>
+<p>wxMSW: fixed wx.ListCtrl's SetWindowStyleFlag() to not remove
+WS_VISIBLE; also refresh the control automatically (closes bug
+1019440)</p>
+<p>Added wx.Choicebook, yet another notebook-like control.</p>
+<p>wxMSW: Make radiobutton tab behaviour the same on MSW as in standard
+MSW app, i.e. tab into the activated, not necessarily the first radio
+button.</p>
+<p>Added limited support for wxEventLoop (you can't derive from a
+wx.PyEventLoop version yet...) Updated and moved the sample showing
+how to replace the MainLoop to samples/mainloop/mainloop.py.</p>
+<p>The C++ xrc lib has been moved out of contrib and into the core, so it
+is always built by default. wxPython's build has also changed
+accordingly and will build the xrc module as part of the core set of
+modules built by default. If you were axplicitly using BUILD_XRC then
+it will no longer be recognized as a build option, otherwise you
+should notice no difference.</p>
+<p>wxMac: Fixed radio toolbar buttons to correctly untoggle the others
+when a new one is selected.</p>
+<p>wxMac: Fixed GetLineLength and GetLineText for MLTE text controls</p>
+<p>wxMac: wx.TaskBarIcon is implemented by allowing you to change the
+app's icon on the Dock and also specifying a menu that should be
+merged with the normal dock popup menu. See the MigrationGuide for
+more details and a warning.</p>
+<p>Added wx.TopLevelWindow.IsActive() which tells you if the frame or
+dialog is or containts the active window with the keyboard focus.</p>
+<p>Added ability to create a font based on pixel size rather than point
+size via the FontFromPixelSize constructor.</p>
+<p>Updated the Scintilla used by StyledTextCtrl to version 1.61</p>
+<p>Improved image HitTest for TreeListCtrl.</p>
+<p>Added wx.App.IsMainLoopRunning.</p>
+<p>wxGTK: Make wxComboBox spit out a bit fewer surplus events when
+holding down the mouse button.</p>
+<p>wxGTK: Enable key based navigation through notebook tabs as in the
+native control with Left and right keys. Support for vetoing.</p>
+<p>FloatCanvas updates from Chris Barker</p>
+<dl class="docutils">
+<dt>PyPlot updates from Gordon Williams:</dt>
+<dd><ul class="first last simple">
+<li>Added bar graph demo</li>
+<li>Modified line end shape from round to square.</li>
+<li>Removed FloatDCWrapper for conversion to ints and ints in
+arguments</li>
+<li>Imported modules given leading underscore to name.</li>
+<li>Added Cursor Line Tracking and User Point Labels.</li>
+<li>Demo for Cursor Line Tracking and Point Labels.</li>
+<li>Size of plot preview frame adjusted to show page better.</li>
+<li>Added helper functions PositionUserToScreen and
+PositionScreenToUser in PlotCanvas.</li>
+<li>Added functions GetClosestPoints (all curves) and GetClosestPoint
+(only closest curve) can be in either user coords or screen
+coords.</li>
+</ul>
+</dd>
+<dt>MaskedEdit updates from Will Sadkin:</dt>
+<dd><ul class="first last simple">
+<li>Added '*' mask char that means "all ansii chars" (ords 32-255)</li>
+<li>Added proper unicode support to masked controls and wx.tools.dbg</li>
+<li>Fixed two reported missing import bugs introduced by package
+creation</li>
+<li>Converted masked package doc strings to reST format for better
+epydoc support</li>
+<li>lots of doc string improvements and function hiding to better
+reflect package's public contents.</li>
+</ul>
+</dd>
+</dl>
+<p>Restructured the installer packages slightly to help facilitate having
+multiple versions of wxPython installed at the same time. See the
+Migrarion Guide for more information.</p>
+<dl class="docutils">
+<dt>Applied patch from Pim Van Heuven that modifies 4 files:</dt>
+<dd><ul class="first last simple">
+<li>wxPython/demo/ListCtrl_edit.py (new demo)</li>
+<li>wxPython/demo/Main.py (include new demo in demo app)</li>
+<li>wxPython/wx/lib/mixins/listctrl.py (several improvements to
+TextEditMixin)</li>
+<li>wxPython/wx/lib/wxpTag.py (some small fixes)</li>
+</ul>
+</dd>
+</dl>
+<p>Added (thanks to Kevin Ollivier!) wrappers for wx.WebKitCtrl for the
+OSX build. Other platforms will raise an exception if you try to use
+it.</p>
+<p>wxPython on OSX can now be built in Unicode mode, can support multiple
+version installs, and comes with an uninstaller script.</p>
+</div>
+<div class="section">
+<h1><a id="id15" name="id15">2.5.2.8</a></h1>
+<ul class="simple">
+<li>27-Aug-2004</li>
+</ul>
+<p>Predominantly a bug-fix release.</p>
+<blockquote>
+<ul class="simple">
+<li>Fixed fatal error due to improper wrapping of wx.FSFile.</li>
+<li>Fixed return type of EditableListBox.GetListCtrl</li>
+<li>Give generic tree and list controls a DoGetBestSize so they play
+nicer with sizers when there is no minimal size.</li>
+<li>Some tweaks in the demo and samples to correct layout, some
+flicker problems, and namespace use.</li>
+<li>Add wx.Image.ConvertAlphaToMask</li>
+<li>Minor corrections in wx.lib.dialogs</li>
+<li>wx.FileHistory constructor now accepts the documented 2nd
+parameter.</li>
+<li>Corrections for exceptions in the new ogl</li>
+<li>Fixed XRCed to not use reparenting of windows to implement caching
+of property panels, since Reparent on wxMac is not implemented.</li>
+<li>Add support for wxTAB_TRAVERSAL to the XRC handler for
+wxScrolledWindow.</li>
+<li>Add support for all wxListBox styles to the XRC handler for
+wxCheckListBox.</li>
+<li>Fix for wx.Listbook.DeleteAllPages to really delete everything.</li>
+<li>wxGTK2 now supports alpha blended bitmap drawing</li>
+<li>Made wx.grid.Grid play nicer with sizers.</li>
+<li>etc.</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h1><a id="id16" name="id16">2.5.2.7</a></h1>
+<ul class="simple">
+<li>14-Aug-2004</li>
+</ul>