Recent Changes for wxPython
=====================================================================
-2.7.0.0
+2.9.0.0
-------
-*
+*
+
+wxGTK: Implemented support for underlined fonts in wx.StaticText
+
+wxGTK: wx.TopLevelWindow.SetSizeHints size increments now work
+
+Added wx.EventBlocker class
+
+wxGTK: make wx.TopLevelWindow.GetSize() return the size of the window
+including the decorations and updated SetSize() to account for this as
+well.
+
+wxMSW: For consistency with wxGTK, when a top level window is
+minimized the size returned from GetSize will be the restored size,
+not the size of the icon window.
+
+wxGTK: For consistency with wxMSW, when a top level window is
+minimized the size returned from GetClientSize will be (0,0).
+
+wxGTK: Color cursors now supported.
+
+Added wx.DC.StretchBlit() for wxMac and wxMSW (Vince Harron)
+
+Added support for labels for toolbar controls (Vince Harron)
+
+wxGTK: Implemented support for underlined fonts in wx.StaticText.
+
+wxGTK: Setting foreground colour of single line wx.TextCtrl now works.
+
+wxMac: Corrected top border size for wxStaticBox with empty label (nusi)
+
+wx.Window.IsEnabled() now returns false even if the window parent, and
+not the window itself, is disabled and added IsThisEnabled()
+implementing the old IsEnabled() behaviour.
+
+wxGTK: Now using the native tab traversal functions instead of
+simulating it ourselves.
+
+Generating wx.NavigationKeyEvent events doesn't work any more under
+wxGTK (and other platforms in the future), use wx.Window.Navigate() or
+NavigateIn() instead.
+
+
+
+
+
+
+2.8.3.1
+-------
+*
+
+wxGTK: Make wx.NO_BORDER style work with wx.RadioBox (patch 1525406)
+
+Update to 0.9.1 of TreeMixin.
+
+
+
+
+2.8.3.0
+-------
+* 22-March-2007
+
+Added wx.ToolBar.SetToolNormalBitmap and SetToolDisabledBitmap
+methods. (Keep in mind however that the disabled bitmap is currently
+generated on the fly by most native toolbar widgets, so this
+SetToolDisabledBitmap method won't have any affect on them...)
+
+Refactored the inspection tool such that it can be used as a wx.App
+mix-in class as it was used before (with the wx.lib.mixins.inspect
+module) and also as a non mix-in tool (using wx.lib.inspect.InspectionTool).
+
+Add wx.lib.mixins.treemixin from Frank Niessink.
+
+Added the wx.SizerFlags class, and also added AddF, InsertF and
+PrependF methods to wx.Sizer. The wxSizerFlags class provides a
+convienient and easier to read way to add items to a sizer. It was
+added as a new set of methods of the wx.Sizer class so as to not
+disturb existing code. For example, instead of writing::
+
+ sizer.Add(ctrl, 0, wx.EXPAND | wx.ALL, 10)
+
+you can now write::
+
+ sizer.AddF(ctrl, wx.SizerFlags().Expand().Border(wx.ALL,10))
+
+
+Will Sadkin provided a patch for the wx.lib.masked package that fixes
+its support for using the navigation keys on the numeric keypad.
+
+wx.lib.plot: patch #1663937 to allow user to turn off scientific
+notation on plot.
+
+wxGTK: Most of the remaining TODOs for the wx.GraphicsContext on wxGTK
+have been done. This includes implementations for GetTextExtent,
+Clip, DrawBitmap, fixing the drawing position of text to be at the
+upper left corner instead of the baseline, etc.
+
+wx.lib.customtreectrl patches from Andrea:
+
+ 1. ExpandAll has been renamed as ExpandAllChildren, and the new
+ ExpandAll now takes no input arguments (consistent with
+ wx.TreeCtrl)
+
+ 2. ctstyle keyword is now defaulted to 0: every style related to
+ CustomTreeCtrl and the underlying wx.PyScrolledWindow should be
+ declared using the keyword "style" only. For backward
+ compatibility, ctstyle continues to work as I merged ctstyle and
+ style in the __init__ method.
+
+ 3. GetClassDefaultAttributes is now a classmethod.
+
+ 4. UnselectAll bug fixed.
+
+
+Renamed the wx.lib.inspect and wx.lib.mixins.inspect modules to
+inspection, in order to avoid conflicts with the inspect module in the
+standard Python library.
+
+Lots of changes to XRCed from Roman Rolinsky:
+
+ * Preferences for default "sizeritem" parameters for new panels and
+ controls can be configured ("File">"Preferences...").
+
+ * Implemented comment object for including simple one-line comments and
+ comment directives as tree nodes. No validation is performed for a
+ valid XML string so comments must not contain "-->". Comment directive
+ is a special comment starting with '%' character, followed by a line
+ of python code. It is executed using 'exec' when the resource file is
+ opened. This is useful to import plugin modules containing custom
+ handlers which are specific to the resource file, hovewer this is of
+ course a security hole if you use foreign XRC files. A warning is
+ displayed if the preference option 'ask' is selected (by default).
+
+ * Added support for custom controls and plugin modules. Refer to this
+ wxPythonWiki for the details: http://wiki.wxpython.org/index.cgi/XRCed#custom
+
+ * Tool panel sections can be collapsed/expanded by clicking on the
+ label of a tool group.
+
+ * Some undo/redo and other fixes.
+
+ * Fixes for wxMSW (notebook highlighting, control sizes, tree Unselect).
+
+ * Notebook page highlighting fix. Highlight resizes when the window
+ is resized. ParamUnit spin button detects event handler re-entry
+ (wxGTK probably has a bug in wxSpinButton with repeated events).
+
+ * Fix for dealing with empty 'growable' property, using MiniFrame
+ for properties panel, the panel is restored together with the
+ main window.
+
+
+
+
+2.8.1.1
+-------
+* 19-Jan-2007
+
+wxMSW: Fix lack of spin control update event when control lost focus
+
+Added a typeId property to the PyEventBinder class that holds the
+eventType ID used for that event. So when you need the eventType
+(such as when sending your own instance of standard events) you can
+use, for example, wx.EVT_BUTTON.typeId instead of
+wx.wxEVT_COMMAND_BUTTON_CLICKED. Note that there are a few composite
+events, such as EVT_MOUSE and EVT_SCROLL, that will actually bind
+multiple event types at once, and in these cases the typeId property
+may not give you what you want. You should use te component events in
+these cases.
+
+PyCrust now has an option for showing/hiding the notebook.
+
+wxMSW: Corrected drawing of bitmaps for disabled menu items.
+
+Enhanced the wx.lib.mixins.inspect module. In addition to showing a
+PyCrust window it is now a widget browser, which provides a tree
+loaded up with all the widgets in the app, optionally with the sizers
+too, and also a panel displaying the properties of the selected
+window. Run the demo and type Ctrl-Alt-I keystroke (or Cmd-Alt-I on
+the Mac) to see how it works. You can add this to your own apps with
+just a few lines of code.
+
+Added wx.SearchCtrl.[Get|Set]DescriptiveText
+
+wxMac: Added support for the wx.FRAME_FLOAT_ON_PARENT style.
+
+wxMac: the popups used for call tips and autocomplete lists in
+StyledTextCtrl (such as in PyShell) are now top-level float-on-parent
+windows so they are no longer clipped by the bounds of the stc window.
+
+
+
+
+
+2.8.1.0
+-------
+* 8-Jan-2007
+
+Added EVT_TASKBAR_CLICK and use it to show taskbar icon menu on right
+button release, not press, under MSW (bug 1623761)
+
+Added wx.TreeCtrl.CollapseAll[Children]() and IsEmpty() methods
+
+Fix wx.MDIChidFrame.GetPosition() (patch 1626610)
+
+Fix attribute memory leak in wx.grid.Grid::ShowCellEditControl() (patch
+1629949)
+
+wxGTK: Fix for controls on a toolbar being the full height of the
+toolbar instead of their natural height.
+
+wx.lib.customtreectrl patches from Andrea Gavana.
+
+wxMac: Applied patch #1622389, fixing two memory leaks in
+GetPartialTextExtents.
+
+More fixes for the native wx.ListCtrl on Mac.
+
+Added wx.aui.AuiNotebook.GetAuiManager().
+
+Added wx.aui.AuiMDIParentFrame and wx.aui.AuiMDIChildFrame, which
+essentially implement the MDI interface using a normal wx.Frame and a
+wx.aui.AuiNotebook.
+
+
+
+
+2.8.0.1
+-------
+* 11-Dec-2006
+
+Lots of fixes and updates to the AUI classes.
+
+Added wx.CollapsiblePane. On wxGTK it uses a native expander widget,
+on the other platforms a regular button is used to control the
+collapsed/expanded state.
+
+Added the wx.combo module, which contains the ComboCtrl and ComboPopup
+classes. These classes allow you to implement a wx.ComboBox-like
+widget where the popup can be nearly any kind of widget, and where you
+have a lot of control over other aspects of the combo widget as well.
+It works very well on GTK and MSW, using native renderers for drawing
+the combo button, but is unfortunatly still a bit klunky on OSX...
+
+Use system default paper size for printing instead of A4 by default.
+
+Added wx.combo.OwnerDrawnComboBox, which is a ComboCtrl that delegates
+the drawing of the items in the popup and in the control itself to
+overridden methods of a derived class, similarly to how wx.VListBox
+works.
+
+Added wx.combo.BitmapComboBox which is a combobox that displays a
+bitmap in front of the list items.
+
+Added the wx.lib.mixins.inspect module. It contains the InspectMixin
+class which can be mixed with a wx.App class and provides a PyCrust
+window that can be activated with a Ctrl-Alt-I keystroke (or Cmd-Alt-I
+on the Mac.)
+
+Added some modules from Riaan Booysen:
+
+ * wx.lib.flagart: contains icons of the flags of many countries.
+
+ * wx.lib.art.img2pyartprov: makes images embedded in a python file
+ with img2py available via the wx.ArtProvider.
+
+ * wx.lib.langlistctrl: A wx.ListCtrl for selecting a language,
+ which uses the country flag icons.
+
+ * An I18N sample for the demo.
+
+wx.lib.masked: Patch from Will Sadkin. Includes Unicode fixes, plus
+more helpful exceptions and ability to designate fields in mask
+without intervening fixed characters.
+
+Added wx.SearchCtrl, which is a composite of a wx.TextCtrl with optional
+bitmap buttons and a drop-down menu. Controls like this can typically
+be found on a toolbar of applications that support some form of search
+functionality. On the Mac this control is implemented using the
+native HISearchField control, on the other platforms a generic control
+is used, although that may change in the future as more platforms
+introduce native search widgets.
+
+Added a set of button classes to wx.lib.buttons from David Hughes that
+uses the native renderer to draw the button.
+
+
+
+
+2.7.2.0
+-------
+* 7-Nov-2006
+
+Patch [ 1583183 ] Fixes printing/print preview inconsistencies
+
+Add events API to wxHtmlWindow (patch #1504493 by Francesco Montorsi)
+
+Added wxTB_RIGHT style for right-aligned toolbars (Igor Korot)
+
+Added New Zealand NZST and NZDT timezone support to wx.DateTime.
+
+wx.Window.GetAdjustedBestSize is deprecated. In every conceivable
+scenario GetEffectiveMinSize is probably what you want to use instead.
+
+wx.Image: Gained support for TGA image file format.
+
+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.
+
+ FrameManager --> AuiManager
+ FrameManagerEvent --> AuiManagerEvent
+ PaneInfo --> AuiPaneInfo
+ FloatingPane --> AuiFloatingPane
+ DockArt --> AuiDockArt
+ TabArt --> AuiTabArt
+ AuiMultiNotebook --> AuiNotebook
+ AuiNotebookEvent --> AuiNotebookEvent
+
+wx.lib.customtreectrl: A patch from Frank Niessink which adds an
+additional style (TR_AUTO_CHECK_PARENT) that (un)checks a parent when
+all children are (un)checked.
+
+wx.animate.AnimationCtrl fixed to display inactive bitmap at start
+(patch 1590192)
+
+Patch from Dj Gilcrease adding the FNB_HIDE_ON_SINGLE_TAB style flag
+for wx.lib.flatnotebook.
+
+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.
+
+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.)
+
+
+
+
+
+
+2.7.1.3
+-------
+* 26-Oct-2006
+
+wxGTK: The wx.ALWAYS_SHOW_SB style is now supported.
+
+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.
+
+Fixed wx.glcanvas.GLCanvas.SetCurrent to be compatible with prevoius
+versons.
+
+Added wx.StandardPaths.GetTmpDir.
+
+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.
+
+Added a sample to the demo that shows some of what can be done with
+the new wx.GraphicsContext and wx.GraphicsPath classes.
+
+
+
+
+2.7.1.2
+-------
+* 21-Oct-2006
+
+Fixed a bug in the MaskedEdit controls caused by conflicting IsEmpty
+methods.
+
+Patch #1579280: Some mimetype optimizations on unix-like systems.
+
+wxMac: Several wx.webkit.WebKitCtrl enhancements/fixes, including:
+
+ - new methods for increasing/decreasing text size, getting
+ selection, getting/setting scroll position, printing, enabling
+ editing, and running JavaScripts on the page.
+
+ - added new event (wx.webkit.WebKitBeforeLoadEvent) for catching, and
+ possibly vetoing, load events before they occur.
+
+ - wx.webkit.WebKitCtrl now fires mouse events for certain events
+ that it was eating before. This improves wxSplitterWindow
+ resizing behavior.
+
+ - refactoring of the sizing logic to move the Cocoa view. Tested
+ with splitter windows, panels, notebooks and all position
+ correctly with this.
+
+Some improvements to the drawing code in CustomTreeCtrl.
+
+Fixed refcount leak in wx.Window.GetChildren.
+
+
+
+
+
+2.7.1.1
+-------
+* 18-Oct-2006
The following deprecated items have been removed:
your overridden methods like this::
def OnBeginDocument(self, start, end):
- # do something here
- return self.base_OnBeginDocument(start, end)
+ # do something here
+ return self.base_OnBeginDocument(start, end)
You can now call the base class method the normal way, like this::
def OnBeginDocument(self, start, end):
- # do something here
- return Printout.OnBeginDocument(self, start, end)
+ # do something here
+ return Printout.OnBeginDocument(self, start, end)
Or like this with super()::
def OnBeginDocument(self, start, end):
- # do something here
- return super(MyPrintout, self).OnBeginDocument(start, end)
-
+ # do something here
+ return super(MyPrintout, self).OnBeginDocument(start, end)
Note that the old way with the "base_*" function still works, but you
will get a DeprecationWarning from calling base_OnBeginDocument. The
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 obhect is initialized.
+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
Added wx.lib.combotreebox from Frank Niessink
Added wx.ImageFromBuffer, wx.BitmapFromBuffer and
-wx.BitmapFromBufferRGBA factory functions. They enable loading of am
+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.
-Added wx.App.DisplayAvailable() which can be used to determine if a
+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...)
+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.
+
+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.
+
+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.
+
+The beginnings of support for RTL languages has been added, thanks to
+a Google SoC project.
+
+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.
+
+Applied patch 1551409: Adds support for indeterminate mode gauges.
+
+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.
+
+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.
+
+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.
+
+Added wx.lib.delayedresult from Oliver Schoenborn.
+
+Added wx.lib.expando, a multi-line textctrl that expands as more lines
+are needed.
+
+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.
+
+Added the wx.lib.buttonpanel module, which is a tweaked version of
+Andrea Gavana's FancyButtonPanel module.
+
+Added the wx.lib.flatnotebook module, from Andrea Gavana.
+
+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.
+
+Added the wx.lib.customtreectrl module from Andrea Gavana.
+
+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.
+
+Added wx.TextCtrl.ChangeValue() which is the same as SetValue() but
+doesn't send the text changed event.
+
+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
+
+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.
+
+The code in the animate contrib has been moved into the core 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.
+
+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.
+
+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.
+
+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.
+
+
+
TypeError if the compared object is not compatible, but to just return
a boolean as expected. For example::
- wx.Colour(64,0,64) == 123 ==> False
+ wx.Colour(64,0,64) == 123 ==> False
wxMSW: Fixed (again) sizing/positioning issues of calling Realize on
a wx.ToolBar that is not manaaged directly by a frame and that is
want to force the options to be required then you can just add a True
parameter, like this::
- import wxversion
- wxversion.select("2.6-unicode", True)
- import wx
+ import wxversion
+ wxversion.select("2.6-unicode", True)
+ import wx
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
sample. For example, load the Button sample and then do the following
in the PyShell::
- >>> b = frame.demoPage.GetChildren()[0]
- >>> for x in range(0, 500, 10):
- ... b.Move((x, 50))
- ... app.Yield(True)
- ... wx.MilliSleep(10)
+ >>> b = frame.demoPage.GetChildren()[0]
+ >>> for x in range(0, 500, 10):
+ ... b.Move((x, 50))
+ ... app.Yield(True)
+ ... wx.MilliSleep(10)
wxGTK: Applied wxNO_BORDER patch (#1098374) for text control and combo