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
+
+
+
+
+2.8.1.2
+-------
+*
+
+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).
+
+
+
+
+
+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-2006
+
+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:
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
+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
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
+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:
Added GetResourcesDir and GetLocalizedResourcesDir to
wx.StandardPaths.
+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.
+
+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.
+
+Added wx.StandardPaths.GetDocumentsDir.
+
+Added wx.RendererNative.DrawCheckButton.
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+Added wx.HyperlinkCtrl.
+
+Added battery and power related functions and events (wxMSW only so
+far.) See wx.PowerEvent, wx.GetPowerType and wx.GetBatteryState.
+
+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.
+
+Added wrappers for wx.ColourPickerCtrl, wx.DirPickerCtrl,
+wx.FilePickerCtrl, and wx.FontPickerCtrl.
+
+Patch #1502016 wx.Image.ConvertToGreyscale now retains the alpha
+channel.
+
+Added wrappers for the wxAUI classes, in the wx.aui module.
+
+Added the PseudoDC class from Paul Lanier. It provides a way to
+record operations on a DC and then play them back later.
+
+Upgraded to Scintilla 1.70 for wx.stc.StyledTextCtrl.
+
+Added CanSetTransparent and SetTransparent methods to the
+wx.TopLevelWindow class, with implementations (so far) for wxMSW and
+wxMac.
+
+SetDefaultItem() and GetDefaultItem() are now members of
+wx.TopLevelWindow, not wx.Panel.
+
+wxGTK: Stock items (icons) will be used for menu items with stock
+IDs.
+
+Added wx.lib.combotreebox from Frank Niessink
+
+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.
+
+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.
+
+
+
+
+
+
+
+2.6.3.3
+-------
+* 15-July-2006
+
+wx.lib.pubsub updates from Oliver Schoenborn:
+ - fixed the hash problem with non-hashable objects
+ - now supports listeners that use \*args as an argument
+ (listener(\*args) was not passing the validity test)
+ - corrected some mistakes in documentation
+ - added some clarifications (hopefully useful for first time
+ users)
+ - changed the way singleton is implemented since old way prevented
+ pydoc etc from extracting docs for Publisher
+
+DocView and ActiveGrid IDE updates from Morgan Hua:
+ 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.
+
+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.
+
+Undeprecated wx.GetNumberFromUser and added wx.NumberEntryDialog.
+
+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.
+
+
2.6.3.2
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 be sure to use a matching SWIG. See wxPython/SWIG/README.txt
in the source tarball for details.
-wx.Image.Copy now also copies the alpha channel.
+wx.Image.Copy, Mirror, and GetSubImage now also do the right thing
+with the alpha channel.
wxMSW: Fixed problem in wx.TextCtrl where using SetValue and
wx.TE_RICH2 would cause the control to be shown if it was hidden.
XRCed updated to allow wxMenuBar to be created inside a wxFrame.
+Added wx.StandardPaths.GetDocumentsDir() (patch 1214360)
+
+
+
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