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 <ro...@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+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- https://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations/