[wxPython-dev] wxPython 4.0.0 final

Eric Fahlgren ericfahlgren at gmail.com
Wed Jan 31 20:45:01 EST 2018

Excellent work, Robin (and other committers)!  Thanks for all your
continued efforts to keep wxPython alive and growing.

On Wed, Jan 31, 2018 at 5:37 PM, Robin Dunn <robin at alldunn.com> wrote:

> Announcing wxPython 4.0.0
> =========================
> PyPI:   https://pypi.python.org/pypi/wxPython/4.0.0
> Extras: https://extras.wxPython.org/wxPython4/extras/
> Pip:    ``pip install wxPython==4.0.0``
> Changes in this release include the following:
> * Fixes in wx.aui to properly transfer ownership of the menubar, and
>   also some tweaks in the AUI_MDI sample in the demo. (#540)
> * Added a wx.BUILD_TYPE value to distinguish between development,
>   snapshot, and release builds. The value is also appended to
>   wx.PlatformInfo. (Thanks Mesalu!)
> * Fix crash when trying to fetch multiple items from a composite data
>   object in wx.DropTarget.OnData. (#550) Also fixed the
>   CustomDragAndDrop sample to not fail on Python 2.7.
> * Add ability for wxArray wrappers to return a copy of the item in the
>   ``__getitem__`` method. This solves problems where an array that is
>   the return value of some method call is indexed immediately and a
>   reference to the array is not held, which could result in garbage
>   values for the indexed item. Currently this is turned on for just
>   GridCellCoordsArray, but others can be switched in the future if
>   needed. (#297)
> * Add missing ``wx.GetLocale`` function. (#572)
> * Add methods to wx.TextCtrl for output "file-like"
>   compatibility. (#578)
> * Fix object ownership issue for menus added to toolbar items. (#580)
> * Updated SIP to version 4.19.5. One of the new features of this
>   version is that integer overflows are no longer silently truncated
>   and ignored. In other words, if a wrapped API has a parameter that
>   is a C int type, and you pass a value that is larger than what will
>   fit in that type of integer then an OverflowError exception will be
>   raised.
> * Fixed wx.richtext.RichTextBuffer.GetExtWildcard to return a tuple of
>   2 values, as was done in Classic. (#594)
> * Various fixes in UltimateListCtrl, HyperTreeList and
>   CheckListCtrlMixin.  (#592, #349, #612)
> * Fixes in TextEditMixin to ensure that the new value is passed in the
>   event. (#605)
> * Fix comparing DataViewItem and TreeListItem objects with
>   None. (#595)
> * Fix event type name in wx/lib/sheet.py (#613)
> * The wx.MessageDialog methods which take ButtonLabel parameters are
>   now able to accept either strings or stock IDs. (#607, #276)
> * Fix wx.EvtHandler.Unbind to work correctly when specifying the
>   handler and it is a bound method. (#624)
> * Fix OGL's ShapeCanvas to draw properly when the window is scrolled,
>   and to also adjust the mouse coordinates, etc. (#635)
> * Set a default background color for the generic buttons. (#651)
> * Fixed HtmlWindow's OnFoo virtual methods so calls to them are
>   propagated to the Python class. (#642)
> * Fixed wx.CallLater to explicitly hold a reference instead of
>   depending on an uncollectable cycle to keep the instance
>   around. Like before the cycle is broken and the saved reference is
>   deleted after the timer expires and the callable has been
>   called. (#457)
> * Although it's more or less just an implementation detail, add
>   wrappers for wx.aui.AuiTabCtrl so references to it will get the
>   correct type. (#664)
> * List-like wrapper classes generated for accessing wxLists and
>   wxArrays now support reverse indexing. (#669) For example::
>       child = panel.GetChildren()[-1]
> * Ported some of the classes in Classic's gizmos module from C++ to
>   Python, including LEDNumberCtrl, DynamicSashWindow, and
>   TreeListCtrl. The classes are now located in the wx.lib.gizmos
>   package, with a compatibility module at the old wx.gizmos
>   location. Please note that this TreeListCtrl class is a very
>   different implementation than wx.dataview.TreeListCtrl, although
>   there is some overlap in purpose. In addition, the new TreeListCtrl
>   class is not actually a port from the old gizmos.TreeListCtrl but
>   rather just a thin layer around AGW's HyperTreeList. This means that
>   if you are using a non- default style flag you'll need to pass it to
>   the agwStyle parameter instead of the style parameter.
> * Fix crash when deleting all wx.dataview.TreeListCtrl items with
>   wxGTK3.  (#679, #704)
> * Fix displaying '&' in the label of wx.RadioBox on GTK. (#39)
> * Fix problems of the wrong C++ method being called in
>   wx.ProgressDialog on MS Windows. (#701)
> * Fixed how the scrollbar events are captured in DynamicSashWindow in
>   order to fix regression in the sample. (#687)
> * Allow extra CLI args to be passed to build.py by setting
>   WXPYTHON_BUILD_ARGS in the environment.
> * Added context manager methods to wx.DC that explicitly destroys the
>   C++ part of the DC upon exit. Using DCs as context managers is not
>   required, but can be handy in the rare cases where something holds
>   on to a DC for too long, perhaps unintentionally. (#680)
> * Fixed crash due to too aggressive management of wxModules when we
>   load subordinate extensions that have their own wxModules (wx.html,
>   wx.adv, etc.)  (#688)
> * Fixed StyledTextCtrl.MarkerDefineRGBAImage and RegisterRGBAImage
>   methods to be able to accept any Python buffer compatible object for
>   the pixel data. (#716)
> What is wxPython?
> -----------------
> wxPython is a cross-platform GUI toolkit for the Python programming
> language.  It allows Python programmers to create programs with a
> robust, highly functional graphical user interface, simply and
> easily. It is implemented as a set of Python extension modules that
> wrap the GUI components of the popular wxWidgets cross platform
> library, which is written in C++. Supported platforms are Microsoft
> Windows, Mac OS X and macOS, and Linux or other unix-like systems with
> GTK2 or GTK3 libraries. In most cases the native widgets are used on
> each platform to provide a 100% native look and feel for the
> application.
> What is wxPython Phoenix?
> -------------------------
> wxPython's Project Phoenix is a new from-the-ground-up implementation
> of wxPython, created with the intent of making wxPython “better,
> stronger, faster than he was before.” In other words, this new
> implementation is focused on improving speed, maintainability and
> extensibility of wxPython, as well as removing most of the cruft that
> had accumulated over the long life of Classic wxPython.
> The project has been in development off and on, mostly behind the
> scenes, for many years. For the past few years automated snapshot
> builds have been available for those adventurous enough to try it, and
> many people eventually started using the snapshots in their projects,
> even for production releases.  While there are still some things on
> the periphery that need to be completed, the core of the new wxPython
> extension modules which wrap the wxWidgets code has been stable for a
> long time now.
> Due to some things being cleaned up, reorganized, simplified and
> dehackified wxPython Phoenix is not completely backwards compatible
> with wxPython Classic.  This is intended. In general, however, the API
> differences tend to be minor and some applications can use Phoenix
> with slight, or even with no modifications.  In some other cases the
> correct way to do things was also available in Classic and it's only
> the wrong way that has been removed from Phoenix.  For more
> information there is a Migration Guide document available at:
> https://docs.wxpython.org/MigrationGuide.html
> The new wxPython API reference documentation, including all
> Python-specific additions and customizations, and docs for the wx.lib
> package, is located at: https://docs.wxpython.org/
> --
> Robin Dunn
> Software Craftsman
> http://wxPython.org
> --
> You received this message because you are subscribed to the Google Groups
> "wxPython-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to wxPython-dev+unsubscribe at googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

More information about the Python-announce-list mailing list