1.. title: wxPython Changelog
2.. slug: changes
3.. author: Robin
4.. description: Summary of changes for wxPython releases
5.. type: text
6
7
8wxPython Changelog
9==================
10
114.0.7 "one more, for the road"
12------------------------------
13* 25-Oct-2019
14
15PyPI:   https://pypi.org/project/wxPython/4.0.7
16Extras: https://extras.wxPython.org/wxPython4/extras/
17Pip:    ``pip install wxPython==4.0.7``
18
19This release is comprised mostly of fixes and minor features which have been
20back-ported from the master branch. This release is likely the last release of
21the 4.0.x release series, and is certainly the last 4.0.x release that will
22support Python 2.7. It may still continue to build for Python 2.7 for some time,
23but no extra effort will be expended to keep it compatible.
24
25This release provides the following changes:
26
27* Bug fixes in wx.lib.calendar: key navigation across month boundaries is now
28  possible; key navigation now sets the date and fires the EVT_CALENDAR event;
29  setter APIs now set the date correctly (#1230).
30
31* Switch to using a wx.Overlay in the Widget Inspection Tool to highlight
32  widgets when running on a GTK3 port.
33
34* Fixed issue in wx.lib.agw.customtreectrl where label editor could remain
35  stuck forever (#1235).
36
37* Fix a sometimes crash when using a wx.Overlay by letting the wx.DCOverlay hold
38  a reference to the DC, to ensure that the DCOverlay is destroyed first.
39  (PR#1301)
40
41* Ported the embedding sample from Classic, which shows how to use wxPython from
42  a C++ wxWidgets application that embeds Python. (PR #1353)
43
44* Fixed wx.GetApp() to use wxWidgets' global wxApp instance instead of
45  maintaining its own pointer. This way, if the wxApp is created by C++ code
46  wxPython will still be able to get access to it. (#1126)
47
48* Several other PRs have been backported from the master branch (which will
49  become wxPython 4.1.0), the full list can be seen here:
50  https://github.com/wxWidgets/Phoenix/pull/1357
51
52
53
544.0.6 "Applesauce"
55------------------
56* 21-May-2019
57
58PyPI:   https://pypi.org/project/wxPython/4.0.6
59Extras: https://extras.wxPython.org/wxPython4/extras/
60Pip:    ``pip install wxPython==4.0.6``
61
62This release provides the following fixes:
63
64* Fixed a probably rare, but fatal bug on OSX when calling certain overloaded
65  virtual methods with implementations in Python.
66
67* Fixed char pointers in generated stub code to have a valid pointer value.
68
69* Reverted the change that loads up install_requires from the contents of
70  requirements.txt. Split the requirements.txt file into one for install and one
71  for development.
72
73
74
75
764.0.5 "St. Helens Day"
77----------------------
78* 18-May-2019
79
80PyPI:   https://pypi.org/project/wxPython/4.0.5
81Extras: https://extras.wxPython.org/wxPython4/extras/
82Pip:    ``pip install wxPython==4.0.5``
83
84Changes in this release include the following:
85
86* Added missing HtmlWindow.ScrollToAnchor method, and also a couple methods
87  in HtmlCell too. (#1141)
88
89* Added missing setters for the wheel-related properties in wx.MouseEvent.
90  (#1140)
91
92* Updated wxWidgets commit reference, bringing fixes for #1140, #1086 and
93  #1147.
94
95* Fix the use of the output parameter in HtmlWindow.OnOpeningURL the same way
96  it was fixed in HtmlWindowInterface.OnHTMLOpeningURL. (#1068)
97
98* Fixed a crashing bug when using a member of a transient wx.VisualAttributes
99  object. Also set the attributes to be read-only to simplify the fix. (#1198).
100
101* Updated the sip being used in wxPython builds to version 4.19.16.
102
103* Added helper functions to check results of wxWidgets configure during the
104  build of wxPython. Currently used to determine if the wx webview, glcanvas,
105  and media libraries should be added to the link command. (#1138)
106
107* Fixed scrollbar issue with ListCtrlAutoWidthMixin (#1215)
108
109* Fixed file access in the wx.py and wx.tools.pywxrc packages to be Python 2 and
110  3 compatible. (#1193, #1156)
111
112* Fixes for building with Python 3.8 on Linux. (#1227)
113
114
115
116
1174.0.4 "What? It's 2019 already?"
118--------------------------------
119* 5-Jan-2019
120
121PyPI:   https://pypi.org/project/wxPython/4.0.4
122Extras: https://extras.wxPython.org/wxPython4/extras/
123Pip:    ``pip install wxPython==4.0.4``
124
125Changes in this release include the following:
126
127* Fixed an issue where wx.lib.intctrl would erroneously attempt to use long
128  on Python3. (#898)
129
130* Include the MSVC runtime DLLs for Python 3.7 builds too.
131
132* Clear LIBPATH_PYEXT and LIB_PYEXT for linux builds too. (#904)
133
134* Added a dependency on the Pillow package since it's used in some wx.lib.agw
135  modules. (PR #908)
136
137* Add flag to hide page in wx.lib.agw.aui.notebook. (#895)
138
139* Switch wx.lib.plot to issue deprecation warnings with PlotPendingDeprecation
140  so it doesn't have to enable all warnings to get them to be shown by default.
141  (#902)
142
143* Added a Python 3.7 builder on Fedora 28. (#925)
144
145* Fix the object ownership transfer for wx.Menu.Insert() (#931)
146
147* Added wx.Treebook.GetTreeCtrl, wx.Listbook.GetListView and
148  wx.Choicebook.GetChoiceCtrl. (#918)
149
150* Removed the wx.BookCtrlBase.RemovePage workaround as it was causing problems
151  and doesn't seem to be necessary any more. The existing wxWidgets assertions
152  are catching the out of range error just fine, however if wxWidgets was built
153  without the debug helpers turned on then it could still cause a crash. (#888)
154
155* Reverted the changes which removed the content of the wx.lib.pubsub package
156  and encouraged users to switch to the real PyPubSub package instead. Removing
157  it caused more issues than were expected so it has been restored and the code
158  updated to PyPubSub v3.3.0. Version 4.0.0 is available upstream, but it is not
159  compatible with Python 2.7. Now, wx.lib.pubsub is actually deprecated instead
160  of just trying to pass control over to the upstream PyPubSub library. (#932)
161
162* Improve calltip stability in pyshell. (#941)
163
164* Fix TypeError in wx.lib.throbber. (#924)
165
166* Fix missing parameter tool_id in
167  wx.lib.agw.ribbon.toolbar.RibbonToolBar.AddToggleTool. (#947)
168
169* Add a step to wx.Config.ReadInt to attempt converting from long to int
170  under python2. (#384)
171
172* Add virtual behavior for wx.RichTextCtrl and wx.TextCtrl's Copy/Cut/Paste methods
173  and their Can* counterparts. (#954)
174
175* Fix IO type in wx.lib.agw.thumbnailctrl  (#959)
176
177* Fix type error that would occur using pycolourchooser. (#957)
178
179* Optimize line drawing in HyperTreeList. (#973)
180
181* Add wrapper for wx.StaticBox.GetBordersForSizer and use it in the demo to do
182  platform-specific layout of the items in the StaticBox. (#974)
183
184* Update wx.Point, wx.RealPoint, and wx.Size to use floating
185  point arithmetic when conducting scalar multiplication (#971)
186
187* Fix load/save bugs in PySlices (PR#978)
188
189* Replace deprecated PIL.Image.tostring (PR#1005)
190
191* Fix rendering and mouse sensitivity in UltimateListCtrl when adding HyperText
192  items. (#1010)
193
194* Added a parameter to lib.agw.CustomTreeCtrl.SetItemWindow(), to allow
195  positioning the Window (a small image) on the left of text in a
196  CustomTreeItem. (#PR886).
197
198* Declared DeleteAllPages in the notebook subclasses, so the proper C++
199  implementation will be called. (#972)
200
201* Removed wx.lib.floatbar, which has been deprecated forever and probably
202  hasn't been working in nearly as long. (#976)
203
204* Updated SIP to version 4.19.13.
205
206* Fix an issue in wx.lib.agw.aui.AuiManager where the orientation of
207  an AuiToolBar would not be updated when calling LoadPerspective. (#917)
208
209* Fixed a bug in wx.FileSystemHandler.OpenFile where the object ownership was
210  not being transferred correctly, causing a crash after a premature object
211  deletion. (#926)
212
213* Fixed wx.ListCtrl.Append when wx.LC_SORT style is used, so appending items out
214  of order does not lose the data for the remaining columns. (#906)
215
216* Add wx.Accessible, it's Windows-only, will raise a NotImplementedError
217  exception on the other platforms. (#958)
218
219* Added the ability to generate stub classes for use when optional wxWidgets
220  features are not part of the build. So far, stubs are available for
221  wx.Accessible, wx.FileSystemWatcher, wx.glcanvas, wx.media and wx.html2.
222
223* Moved the wxpy_api.h file into the wx package at wx/include/wxPython so it
224  will be included in the wheel file. (#961)
225
226* Fixed how string data is added to a virtual file-like object in
227  wx.MemoryFSHandler. All strings are now added to the file as utf-8 encoded data,
228  in both Python2 and Python3, and will be read from the virtual file the same
229  way. If you need to use some other encoding for some reason you can first
230  convert the text to a bytesarray or other buffer protocol compatible object and
231  then create the virtual file from that data. (#969)
232
233* Performance update for wx.lib.agw.customtreectrl (#1049)
234
235* Ensure that colours set in wx.lib.agw.customtreectrl.TreeItemAttr are
236  instances of wx.Colour. (#1032)
237
238* Fix drawing of ticks in wx.lib.agw.speedmeter when there are negative bounds
239  values. (#1013)
240
241* wxWidgets for Mac includes the wxJoystick class now, also update the demo.
242  (#997)
243
244* Fix wx.html.HtmlPrintout to not be seen as an abstract class, so it can be
245  instantiated. (#1060)
246
247* Fix wx.aui.AuiNotbook.SetArtProvider to properly transfer ownership of the art
248  object from Python to C++. This possible double-deletion and related crashing
249  problems. (#1061)
250
251* Fixed the wrappers for wx.html.HtmlWindow.OnOpeningURL to properly handle the
252  redirect output parameter. (#1068) This is a backwards-incompatible change,
253  please see the Migration Guide for details.
254
255* TabNavigatorWindow works similarly to other programs now. It's resizable and
256  draggable so if user has tons of files with long names, it isn't an irritation
257  anymore plastered right in the middle of the screen and can't be worked with
258  easily and ESC now cancels the popup with a proper returnId. (#1096)
259
260* Added missing methods in wx.ListBox, SetItemForegroundColour,
261  SetItemBackgroundColour and SetItemFont. (#1095)
262
263* Backported a fix in wxWidgets that avoids crashing in hhctrl.ocx when using
264  context sensitive help in 64-bit builds on Windows. (#1104)
265
266
267
268
2694.0.3 "The show must go on. (Die show-stoppers! Die!)"
270------------------------------------------------------
271* 25-June-2018
272
273PyPI:   https://pypi.org/project/wxPython/4.0.3
274Extras: https://extras.wxPython.org/wxPython4/extras/
275Pip:    ``pip install wxPython==4.0.3``
276
277Changes in this release include the following:
278
279* Fixed a linking problem on macOS. The new waf added an explicit link to the
280  Python shared library which meant that it would try to load it at runtime,
281  even if a different Python (such as Anaconda, EDM or Homebrew) was used to
282  import wxPython. This, of course, caused runtime errors. (#892)
283
284* Sort pages by dock_pos when added to automatic (agw.aui) notebook. (#882)
285
286* Fix a bug in py.introspect.getTokens. (#889)
287
288* Added Vagrant configuration for Fedora-28. Removed Fedora-23 (#884)
289
290* Added wrappers for the wx.WindowIDRef class and added the wx.NewIdRef
291  function. These will make it possible to create reserved Window IDs using the
292  same mechanism which is used when passing wx.ID_ANY to a widget constructor.
293  The object returned by wx.NewIdRef will automatically convert to an int when
294  passing it to a window constructor, and can also be used as the source in a
295  Bind(). (#896)
296
297* Fixed issue when sys.prefix is not unicode (Python2) and when its contents
298  are not translatable to utf-8.
299
300
301
302
3034.0.2 "Cute as a June bug!"
304---------------------------
305* 16-June-2018
306
307PyPI:   https://pypi.org/project/wxPython/4.0.2
308Extras: https://extras.wxPython.org/wxPython4/extras/
309Pip:    ``pip install wxPython==4.0.2``
310
311Changes in this release include the following:
312
313* Fixed wx.html2.EVT_WEBVIEW_NAVIGATING event not being sent on some versions
314  of Linux. (#741)
315
316* wx.Sizers can now be used as an iterator to iterate over the items within
317  the sizer. (#738)
318
319* Fix Python3 division in ThumbnailCtrl. (#746)
320
321* Fix leaking image list in CheckListCtrlMixin (#752)
322
323* All items marked as deprecated in the wxWidgets interface (documentation)
324  files will now throw a DeprecationWarning when used from wxPython. Many of
325  these items are disappearing in 4.1 so it's important to ensure they are
326  deprecated at runtime too instead of just in the docs. (#749)
327
328* Ensure that the attribute list given to the GLCanvas constructor is
329  zero-terminated like it was in Classic. (#770)
330
331* Updated to the wxWidgets 3.0.4 release version.
332
333* Added the wxWidgets version number to the tail end of the string returned by
334  wx.version().
335
336* Bind EVT_WINDOW_DESTROY event only to the tree windows in CustomTreeCtrl,
337  since otherwise it would be caught when child windows are destroyed too,
338  which causes problems in this case. (#778)
339
340* Fixed a problem where wx.TreeCtrl.OnCompareItems was not being called in
341  derived classes on Windows. This was due to an optimization that wasn't
342  compatible with how the classes are wrapped. (#774)
343
344* Added wrappers for wx.ClassInfo and exposed wx.Object.GetClassInfo. This
345  class is part of wxWidgets' internal type information system and although
346  it is not very useful for Python applications it is useful for debugging
347  some internal wxPython issues.
348
349* Removed the wx.lib.pubsub package, and replaced it with code that imports
350  the standalone PyPubSub in order remain compatible with older code that
351  still uses wx.lib.pubsub. (#782, #792)
352
353* Fixed bug in wx.lib.intctrl (#790)
354
355* Fixed subclassing of wx.TextCompleter and wx.TextCompleterSimple (#827)
356
357* Fixes for Python3 compatibility in PyCrust. (#823)
358
359* Fix wxGet to be able to use pip v10. (#817)
360
361* Change winid parameter in wx.ScrolledWindow to id, for consistency. (#816)
362
363* Ensure that the page exists in book controls GetPage and RemovePage methods.
364  At least one of the wx ports do not do this. (#830)
365
366* Added missing wx.NumberEntryDialog
367
368* Change wx.TextCompleterSimple.GetCompletions to send the list of strings
369  as a return value, rather than a parameter that gets filled. (#836)
370
371* Enabled the wx.GraphicsContext.Create(metaFileDC) wrapper (#811)
372
373* Metafile support is also available on OSX, so wx.msw.Metafile and
374  wx.msw.MetafileDC have been moved to the core wx module. So they can now be
375  accessed as wx.Metafile and wx.MetafileDC.
376
377* Updated the waf tool used by the build to version 2.0.7. This fixes problems
378  with building for Python 3.7.
379
380* Fixed alignment in buttons on MSW which have had foreground or background
381  colors set. (#815)
382
383* Fix for unexpected assertion inside wx.aui.AuiMDIChildFrame.Close.
384
385* Fix a bug in setting AuiDockingGuide size. (#727)
386
387* Remove unnecessary AUI notebook updating, and use wx.BufferedDC in Repaint()
388  to mitigate flicker. (wx.lib.agw.aui). (#851, #686)
389
390* Fixed crashing bug when using client data with items in
391  wx.dataview.DataViewTreeCtrl. (#856)
392
393* Detach wx.Control in AuiToolbar from current sizer before attach to a new
394  one. (#843)
395
396* Fixed a problem in wx.lib.mixins.listctrl.TextEditMixin where the height of
397  the editor widget could be set to zero. (See discussion in #849)
398
399* Fix a bug in calculating whether a tool fits into the AuiToolBar. (#863)
400
401* Override SetForegroundColour and SetBackgroundColour in MaskedEditMixin (#808)
402
403* Add an explicit wx.GraphicsContext.Create overload for wx.AutoBufferedPaintDC. (#783)
404
405* Return original AGW window style in AuiToolBar.GetAGWWindowStyleFlag. (#870)
406
407* Fix a bug in group management on wx.lib.masked.numctrl; the previous code used
408  truediv ('/') to calculate _groupSpace, but in python 3.x this leads to a float
409  result, instead of an integer as was expected. Using floordiv ('//') instead
410  to solve the problem. (#865)
411
412* Hide the window when the tool does not fit into AuiToolBar. (#872)
413
414* Fixed the virtual dispatch code for the PGEditor.GetValueFromControl method
415  to properly pass the parameters to the Python implementation, and also fixed
416  how the return value is handled. (#742)
417
418* Fixed all implementations of the PGProperty.StringToValue and IntToValue
419  methods to treat the value parameter as a return value. (#742)
420
421* Add missing wx.adv.EVT_CALENDAR_WEEK_CLICKED (#875)
422
423* Fixed the stock labels to conform to Windows design guidelines. (#787)
424
425* Always reset floating size and style when floating a toolbar in agw.aui. (#880)
426
427
428
4294.0.1 "Lemonade"
430----------------
431* 2-Feb-2018
432
433PyPI:   https://pypi.python.org/pypi/wxPython/4.0.1
434Extras: https://extras.wxPython.org/wxPython4/extras/
435Pip:    ``pip install wxPython==4.0.1``
436
437This release is a quick hot-fix of some issues discovered in 4.0.0 just after
438the release, plus a bit of  low-hanging fruit that was easy to squeeze in too.
439Changes in this release include the following:
440
441* A fix for a segfault that happens upon startup on newer linux releases. (#648)
442
443* Set LD_RUN_PATH for the wxWidgets part of the build so the wx libs that are
444  loaded by other wx libs can be found successfully. (#723)
445
446* Use wxApp::GetInstance to check if there is an existing wxApp object. (#720)
447
448
449
450
451
4524.0.0 "The Phoenix Takes Flight!"
453---------------------------------
454* 31-Jan-2018
455
456PyPI:   https://pypi.python.org/pypi/wxPython/4.0.0
457Extras: https://extras.wxPython.org/wxPython4/extras/
458Pip:    ``pip install wxPython==4.0.0``
459
460Changes in this release include the following:
461
462* Fixes in wx.aui to properly transfer ownership of the menubar, and also some
463  tweaks in the AUI_MDI sample in the demo. (#540)
464
465* Added a wx.BUILD_TYPE value to distinguish between development, snapshot,
466  and release builds. The value is also appended to wx.PlatformInfo. (Thanks
467  Mesalu!)
468
469* Fix crash when trying to fetch multiple items from a composite data object
470  in wx.DropTarget.OnData. (#550) Also fixed the CustomDragAndDrop sample to
471  not fail on Python 2.7.
472
473* Add ability for wxArray wrappers to return a copy of the item in the
474  ``__getitem__`` method. This solves problems where an array that is the
475  return value of some method call is indexed immediately and a reference to
476  the array is not held, which could result in garbage values for the indexed
477  item. Currently this is turned on for just GridCellCoordsArray, but others
478  can be switched in the future if needed. (#297)
479
480* Add missing ``wx.GetLocale`` function. (#572)
481
482* Add methods to wx.TextCtrl for output "file-like" compatibility. (#578)
483
484* Fix object ownership issue for menus added to toolbar items. (#580)
485
486* Updated SIP to version 4.19.5. One of the new features of this version is
487  that integer overflows are no longer silently truncated and ignored. In
488  other words, if a wrapped API has a parameter that is a C int type, and you
489  pass a value that is larger than what will fit in that type of integer then
490  an OverflowError exception will be raised.
491
492* Fixed wx.richtext.RichTextBuffer.GetExtWildcard to return a tuple of 2
493  values, as was done in Classic. (#594)
494
495* Various fixes in UltimateListCtrl, HyperTreeList and CheckListCtrlMixin.
496  (#592, #349, #612)
497
498* Fixes in TextEditMixin to ensure that the new value is passed in the
499  event. (#605)
500
501* Fix comparing DataViewItem and TreeListItem objects with None. (#595)
502
503* Fix event type name in wx/lib/sheet.py (#613)
504
505* The wx.MessageDialog methods which take ButtonLabel parameters are now able
506  to accept either strings or stock IDs. (#607, #276)
507
508* Fix wx.EvtHandler.Unbind to work correctly when specifying the handler and
509  it is a bound method. (#624)
510
511* Fix OGL's ShapeCanvas to draw properly when the window is scrolled, and
512  to also adjust the mouse coordinates, etc. (#635)
513
514* Set a default background color for the generic buttons. (#651)
515
516* Fixed HtmlWindow's OnFoo virtual methods so calls to them are propagated to
517  the Python class. (#642)
518
519* Fixed wx.CallLater to explicitly hold a reference instead of depending on an
520  uncollectable cycle to keep the instance around. Like before the cycle is
521  broken and the saved reference is deleted after the timer expires and the
522  callable has been called. (#457)
523
524* Although it's more or less just an implementation detail, add wrappers for
525  wx.aui.AuiTabCtrl so references to it will get the correct type. (#664)
526
527* List-like wrapper classes generated for accessing wxLists and wxArrays now
528  support reverse indexing. (#669) For example::
529
530      child = panel.GetChildren()[-1]
531
532
533* Ported some of the classes in Classic's gizmos module from C++ to Python,
534  including LEDNumberCtrl, DynamicSashWindow, and TreeListCtrl. The classes
535  are now located in the wx.lib.gizmos package, with a compatibility module at
536  the old wx.gizmos location. Please note that this TreeListCtrl class is a
537  very different implementation than wx.dataview.TreeListCtrl, although there
538  is some overlap in purpose. In addition, the new TreeListCtrl class is not
539  actually a port from the old gizmos.TreeListCtrl but rather just a thin
540  layer around AGW's HyperTreeList. This means that if you are using a non-
541  default style flag you'll need to pass it to the agwStyle parameter instead
542  of the style parameter.
543
544* Fix crash when deleting all wx.dataview.TreeListCtrl items with wxGTK3.
545  (#679, #704)
546
547* Fix displaying '&' in the label of wx.RadioBox on GTK. (#39)
548
549* Fix problems of the wrong C++ method being called in wx.ProgressDialog on MS
550  Windows. (#701)
551
552* Fixed how the scrollbar events are captured in DynamicSashWindow in order to
553  fix regression in the sample. (#687)
554
555* Allow extra CLI args to be passed to build.py by setting WXPYTHON_BUILD_ARGS
556  in the environment.
557
558* Added context manager methods to wx.DC that explicitly destroys the C++
559  part of the DC upon exit. Using DCs as context managers is not required, but
560  can be handy in the rare cases where something holds on to a DC for too
561  long, perhaps unintentionally. (#680)
562
563* Fixed crash due to too aggressive management of wxModules when we load
564  subordinate extensions that have their own wxModules (wx.html, wx.adv, etc.)
565  (#688)
566
567* Fixed StyledTextCtrl.MarkerDefineRGBAImage and RegisterRGBAImage methods to
568  be able to accept any Python buffer compatible object for the pixel data. (#716)
569
570
571
572
573
5744.0.0b2 -- "Hurricanes, Floods, and Forest Fires! Oh My!"
575---------------------------------------------------------
576* 16-Sept-2017
577
578PyPI:   https://pypi.python.org/pypi/wxPython/4.0.0b2
579Extras: https://extras.wxPython.org/wxPython4/extras/
580Pip:    ``pip install wxPython==4.0.0b2``
581
582Changes in this release include the following:
583
584* Added a deprecated compatibility helper for wx.CustomDataFormat.
585
586* Transfer ownership of the wx.EvtHandler object when pushing/popping
587  them, and also for Set/RemoveEventHandler. (#443)
588
589* Add missing wx.VScrolledWindow methods listed in the docs as
590  deprecated but still present. (#441)
591
592* Fixed copy/paste error in wx.BusyInfo.__exit__ (#449)
593
594* Added new tool wxget, (a minimal wx implementation of wget)
595
596* Added new tools wxdocs and wxdemos to launch the respective items,
597  fetching and unpacking as required. (#437)
598
599* Fixes to ensure that the locale message catalogs are included in the
600  release files. (#464)
601
602* Fix wx.ListCtrl.SetItemData to check that the data value is not out
603  of the range of a C long. (#467)
604
605* Changed the default port on *nix builds to be GTK3. The new
606  ``--gtk2`` flag for build.py can be used to force a build for GTK2
607  instead, and the ``--gtk3`` flag still exists, but defaults to True
608  unless ``--gtk2`` is specified. Please note that there is currently
609  no auto-detection of whether GTK3 is available or not, so if you
610  know you need to build for GTK2 then you need to use the build flag,
611  and there is currently no way to specify that flag for builds
612  performed by pip. (#431)
613
614* Fix parameter names in Toolbar.AddTool methods to be
615  consistent. (#475)
616
617* Remove inconsistent GetVirtualSize method in ScrolledWindow and let
618  it be inherited from wx.Window instead. (#474)
619
620* Fix crashing bug caused by importing a module that reinitializes the
621  wxModule system after having imported wxpyTag. (#468)
622
623* Fix missing methods in various DataObject classes. (They were
624  actually accidentally marked "private" when they should have been
625  public.) (#480)
626
627* Add missing ListCtrl.DeleteAllColumns. (#486)
628
629* Various fixes in the demo.
630
631* Fixed improper initial scale factor in wx.lib.agw.speedmeter
632
633* Fix for calls to wx.Notebook.HitTest calling the wrong instance
634  (base class version) of the method. (#499)
635
636* Add wx.Simplebook class.
637
638* Fix exception in wx.lib.agw.customtreectrl when calling
639  SortChildren. (#463, #500)
640
641* Fix missing imports needed for drawing the legend in
642  wx.lib.plot. (#503)
643
644* Fix other instances of list.sort using old cmp-style ordering
645  functions.  (#508)
646
647* Update SizedControls to do a sanity check on the parent's sizer, as
648  GetSizer can return None for SizedParent under certain
649  circumstances, such as when AUI reparents the control during pane
650  movement. (#523, #537)
651
652* Added Vagrant configs for Fedora 23 and Fedora 26, and dropped
653  Fedora 24.  Wheels built on F23 can also be used on F24 and F25, and
654  F26 adds Python 3.6 support.
655
656* Fix bitwise OR bug in wx.lib.agw.aui.framemanager. (#493)
657
658* Fix bugs in wx.lib.plot when saving file. (#526)
659
660* Fix integer division bug in ultimatelistctrl. (#528)
661
662* Fix bug in wx.SearchCtrl.SetCancelBitmap (#532)
663
664* Fixed property grid SetPropertyValue method to not truncate floating
665  point values to integers, and a couple other possible incorrect
666  conversions.  (#536)
667
668
669
670
671
6724.0.0b1
673-------
674* 22-July-2017
675
676PyPI:   https://pypi.python.org/pypi/wxPython/4.0.0b1
677Extras: https://extras.wxPython.org/wxPython4/extras/
678
679Changes in this release include the following:
680
681* Various little tweaks and fixes in some of the demo samples.
682
683* Fixes in wx.lib.imagebrowser so it looks and acts better on OSX.
684
685* Fixed problem due to wxModules not being initialized when non-core
686  extensions are imported.
687
688* Fixed issue in wx.TreeItemId comparison methods affecting PyCrust and
689  other tools.
690
691* Restore the simplified names for the wxGridSelectionModes enum that were
692  present in Classic.
693
694* Add accessors for the internal widgets in the wx.EditableListBox.
695
696* Fixes in wx.lib.eventwatcher to avoid deprecated methods and other Phoenix
697  related changes.
698
699* Correctly transfer ownership of the input stream in wx.FSFile.
700
701* Ensure the license files are getting into the source tarball and the
702  binary wheel files.
703
704* Add wrappers for the classes derived from wxImageHandler.
705
706* Fix wx.lib.plot.polyline to not attempt to draw the spline if there are
707  less than 3 points.
708
709* Transfer the ownership of the prop arg in wx.propgrid.PGProperty.AddChild
710  and AddPrivateChild. Various other fixes in wx.propgrid classes for
711  backwards compatibility and to fix problems caused by mismatches between
712  customizations that were done for Classic and how Phoenix does things by
713  default. Also solved some problems in the PropertyGrid sample in the demo.
714
715* Add missing HtmlCell.FindCellByPos.
716
717* Enhance the DLG_UNIT convenience function such that if something other than
718  a wx.Point or wx.Size was passed in then the return value will be a tuple.
719  This eliminates some surprises that are possible due to auto-conversion of
720  tuples to points or sizes.
721
722
723
724
7254.0.0a3
726-------
727* 3-June-2017
728
729Fixed a few cases where the GIL was not acquired before building tuples of
730values. The problems associated with this (hangs or crashes) were sporadic and
731seemingly random, and did not appear until there was a background thread that
732was very busy. Running under a debug build of Python revealed the problem
733almost immediately. Yay Python!
734
735Return an integer value from wx.DC.GetHandle instead of a wrapped voidptr
736object, similar to how it is done for wx.Window.GetHandle.
737
738Make wx.TreeItemID hashable, with meaningful hash value and equality
739operators, so it can be used as a dictionary key in Py3.
740
741Fixed crash in wx.grid.GridTable.GetAttr, and potentially other cases of
742classes derived from wx.RefCounter.
743
744Add ShowPage and IsRunning methods to wx.adv.Wizard.
745
746Fixed various GTK specific bugs and other cleanup in wx.lib.agw.aui.
747
748Updated to SIP 4.19.2
749
750Restored builders for Python 3.4 to the buildbot.
751
752Restore the wrappers for GetPaperSize and SetPaperSize to wx.PrintData.
753
754Fix crashing problem when a wx.TreeItemId was compared with None.
755
756Fix for missing checkbox images in CheckListCtrlMixin on Linux and OSX.
757
758Fix another crashing problem in propgrid, and a few other propgrid issues too.
759
760The release version of the documentation can now be found at
761https://docs.wxPython.org/ The documentation created during the
762snapshot builds is still located at https://wxPython.org/Phoenix/docs/html/
763
764
765
7664.0.0a2
767-------
768* 6-May-2017
769
770This build of wxPython is based on the official wxWidgets 3.0.3 release.
771
772This release is mostly various bug fixes and other tweaks, such as:
773
774* Allow numpy arrays to be auto-converted to simple sequence value types like
775  wx.Size, wx.Colour, etc.
776
777* A couple of fixes to lib/agw/aui to prevent segfaults under OSX when
778  AuiNotebook tabs are closed
779
780* Fix wx._core.wxAssertionError in wx.lib.agw.aui when dragging a notebook tab
781
782* Fix the [G|S]etClientData methods in wx.CommandEvent to behave the same
783  way they are in wx.ClientDataContainer.
784
785* Fix the SetFonts methods in wx.html classes
786
787* Several fixes in wx.dataview related to overriding methods
788
789* Fixed some flickering in wx.lib.agw.aui.framemanager
790
791* Fixed problem with wrong implementation of wxNotebook::DeleteAllPages being
792  called on Windows
793
794* Added the missing wx.grid.GRID_AUTOSIZE flag
795
796* Fixed crash due to the object created in an XmlSubclassFactory being
797  destroyed too soon
798
799* Fixed crash in wx.lib.agw.toasterbox
800
801* Fixed crash when using wx.xrc.XmlSubclassFactory
802
803* Fixed wx.grid.GridTableBase.GetValue and related methods to work more like
804  they did in Classic, so non-string values can be used a little more
805  easily.
806
807Added building and bundling of the PDB files for wxWidgets and the wxPython
808extensions on Windows.  Until a better place is found they will be
809downloadable from https://wxPython.org/Phoenix/release-extras, along with
810archives for the documentation as well as the demo and samples.
811
812
813
814
8154.0.0a1  "The Phoenix Rises!"
816-----------------------------
817* 15-Apr-2017
818
819This is the first official release of the wxPython Phoenix project! ("And the
820crowd goes wild!") Don't let the fact that it is marked as an "alpha" release
821scare you away. It is an alpha simply because this is the **first** in several
822ways:
823
824* It's the first real release of Phoenix, which is built on a different
825  foundation than Classic wxPython was.
826
827* It's the first wxPython release intended to be fully available from PyPI and
828  buildable/installable by pip.
829
830* It's the first release for Python 3.
831
832* And there are still a few things that are not finished or polished yet.
833
834But even with all that, many people have been using the pre-release snapshots
835of Phoenix for quite a while now, and it has been relatively stable and solid
836for them.
837
838Due to some things being cleaned up, reorganized, simplified and dehackified
839wxPython Phoenix is not completely backwards compatible with wxPython Classic.
840This is intended. In general, however, the API differences tend to be minor
841and some applications can use Phoenix with slight, or even no modifications.
842In some other cases the correct way to do things was also available in Classic
843and it's only the wrong way that has been removed from Phoenix.  For more
844information there is a Migration Guide document available at:
845https://wxpython.org/Phoenix/docs/html/main.html
846
847The new wxPython API reference documentation, including all Python-specific
848additions and customizations, and docs for the wx.lib package, is located at:
849https://wxpython.org/Phoenix/docs/html/main.html
850
851
852
853
8543.0.2.0
855-------
856* 28-Nov-2014
857
858Fixed wxPython bug on OSX that was preventing the wx.App's virtual
859methods related to handling App Events, like open-files or reopen-app,
860from being handled correctly.
861
862NOTE: It appears that wxPython applications on OSX will now always be
863getting an initial Apple Event(s) sent to `MacOpenFiles` coresponding to
864the name of the script and args on the python command-line.
865
866Added patch #15142 which adds support for building with and using GTK3
867as the wx platform.  Thanks kosenko!
868
869Fixed the OSX Carbon build to actually use Carbon. (Because of a
870change in defaults it was actually building the Cocoa build instead.)
871
872Pythonized DataViewCtrl.HitTest.  It now takes just the Point parameter
873and returns the DataViewItem and DataViewColumn objects. If there is
874no item at that point then item will evaluate to False, (or you can
875use its IsOk method.)  For example::
876
877    item, col = ctrl.HitTest(point)
878    if item:
879        doSomething(item, col)
880
881
882
883
884
8853.0.1.1
886-------
887* 9-Sept-2014
888
889The previous release managed to escape out into the wild before the
8903rdParty addons were updated from the source repository.  This release
891includes the newest code from AGW and FloatCanvas which should have
892been in the last release.
893
894Fixed "wxPyHtmlWinTagHandler, no destructor found." error.
895
896
897
8983.0.1.0
899-------
900* 6-Sept-2014
901
902Turned on a workaround for a bug that caused crashes on Windows XP.
903This was due to a Micorsoft bug in optimizing access to TLS when a
904DLL is dynamically loaded at runtime with LoadLibrary, such as how
905Python extension modules are loaded.  See
906http://trac.wxwidgets.org/ticket/13116
907
908Fixed "wxPyXmlSubclassFactory, no destructor found." error.
909
910Some Pubsub and AGW updates.
911
912Ignore some code in wxOSX that was preventing stock data format IDs
913from being used with custom data objects. (See
914https://groups.google.com/forum/#!topic/wx-dev/wFxevpvbhvQ/discussion)
915
916Various other fixes and enhancements from wxWidgets.
917
918
919
9203.0.0
921-------
922* 25-Dec-2013
923
924Merry Christmas (or your December holiday of choice)!
925
926No new features but lots of bug fixes in wxWidgets and of course the
927bump (finally!) up to 3.0.
928
929
930
931
9322.9.5.0
933-------
934* 31-Aug-2013
935
936wx.media.MediaCtrl on OSX-cocoa now has a functioning back-end using
937the QTKit framework, so it works when running in either 32-bit or
93864-bit mode.
939
940Printing triggered from a Javascript window.print() statement will now
941work on OSX when using the old wx.webkit or the new wx.html2 browser
942controls.
943
944Updated Scintilla code to verison 3.21
945
946Lots of fixes and improvements in the wxWidgets code.
947
948Changed the wx.DateTime.Parse* methods to work like they did in
949wxPython 2.8, they now return an integer indicating how far in to
950the string that the parser parsed, or -1 on error.
951
952Updated wx.lib.pdfviewer with patches from David Hughes.
953
954
955
956
957
9582.9.4.1
959-------
960* 24-July-2012
961
962A quick patch release to fix some C++ headers for the wxGTK port not
963getting installed, causing a build error in wxPython.
964
965
966
967
9682.9.4.0
969-------
970* 21-July-2012
971
972wx.lib.pubsub: Pusub now defaults to the new "kwarg" version of the
973API.  In order to continue using the original "arg1" API you will need
974to import wx.lib.pubsub.setuparg1 before importing any other pubsub
975modules.
976
977The wx.RA_USE_CHECKBOX and wx.RB_USE_CHECKBOX constants were removed.
978They were only used by the incomplete PalmOS port which has been
979removed from the wxWidgets source tree.
980
981wx.Font: There is now GetStrikethrough and SetStrikethrough methods.
982
983wx.StaticBox: Fixed the client origin and client size on MSW so
984children of the static box should not overlap the box's label or
985border lines.
986
987Added wx.HTMLDataObject
988
989Applied a patch from Sam Partington that fixes some threading issues
990in the wrapper code and other cool stuff.
991
992Added the missing wx/lib/agw/data dir to the installers.
993
994Add wx.EnhMetaFile and wx.EnhMetaFileDC for MSW.  This DC type is what
995is used by the print framework in the print preview window, so it
996needed to be wrapped so self.GetDC() would work properly.
997
998
999
1000
1001
1002
1003
10042.9.3.1
1005-------
1006* 29-Dec-2011
1007
1008Corrected some problems in the installer scripts that were not
1009including some new files.
1010
1011Re-enabled the wrappers for the wx.GenericDatePickerCtrl class.
1012
1013Applied some patches from Werner Bruhin for the sized controls classes
1014and demo, and which also adds the SizedScrolledPanel class.
1015
1016Fixed several other minor bugs discovered in the last release.
1017
1018
1019
1020
10212.9.3.0
1022-------
1023* 26-Dec-2011
1024
1025wx.ListCtrl:  Added a static method named HasColumnOrderSupport which
1026returns a boolen value indicating if the column ordering APIs (see
1027next item) are implemented for the current platform.
1028
1029Added methods for querying and manipulating the ordering of the
1030columns (in wx.LC_REPORT mode only.)  This is not implemented on all
1031platforms so use HasColumnOrderSupport to find out if the APIs are
1032supported.  The new APIs are: GetColumnOrder, GetColumnIndexFromOrder,
1033GetColumnsOrder and SetColumnsOrder.
1034
1035Added wrappers for new WebView classes which came from a successful
1036Google Summer of Code project this year.  This new module allows you
1037to embed the platform's native HTML/CSS/Javascript rendering engine in
1038a wx application like we've always been able to do with wx.webkit on
1039Mac or with the various ActiveX modules that we've had for windows,
1040except in the new version it uses the exact same API on all platforms
1041and also provides an implementation for GTK.  Currently on Windows the
1042IE Trident engine is used, and WebKit is used on OSX and GTK.  The
1043code is organized to eventually allow alternate backend renderer
1044implementations.  The GTK version requires at least version 1.3.1 of
1045libwebkitgtk-dev, which is the default on most of the recent Linux
1046distributions.  Please note that although these new classes and
1047libraries are using names based on "WebView" I have put the wxPython
1048verison of them in the wx.html2 module because the wxWebKit project
1049already produces a wx.webview module for wxPython.
1050
1051The wx.lib.pubsub package has been updated to the latest verison and
1052several examples have been added to the samples folder.
1053
1054
1055
1056
10572.9.2.4
1058-------
1059* 9-Sept-2011
1060
1061Try, try again...  Fixed an indentation bug that crept in somewhere
1062along the way.
1063
1064
1065
10662.9.2.3
1067-------
1068* 8-Sept-2011
1069
1070Fixed a bug that was causing the base class methods of
1071wx.richtext.RichTextCtrl to be called incorrectly, causing a crash.
1072
1073
1074
10752.9.2.2
1076-------
1077* 5-Sept-2011
1078
1079Fixed a problem with wx.ListCtrl.InsertStringItem when an imageIndex
1080was not passed.  Change the listctrl to not always assume that there
1081is an image.
1082
1083Several fixes for the wx.lib.agw modules.
1084
1085Fixed a problem in wxGrid on OSX-cocoa where it would close the cell
1086editor immediately because of extra kill focus events.
1087
1088Added an OSX implementation for the wxRegion constructor taking a
1089sequence of points.
1090
1091Added the ability to use the Cairo backend for wx.GraphicsContext on
1092Windows.  The Cairo libraries are loaded dynamically on-demand, so
1093there is not a runtime dependency on Cairo for applications that do
1094not use it.  The Cairo DLL and its dependencies are bundled with the
1095wxPython installers.  We expect to be able to also add dynamic loading
1096of Cairo for OSX soon, (but if anybody would like to volunteer that
1097would be nice too.)  To create a Cairo graphics context you first
1098have to get the Cairo GraphicsRenderer and then use it to create the
1099context, like this::
1100
1101    cr = wx.GraphicsRenderer.GetCairoRenderer()
1102    ctx = cr.CreateContext(dc)
1103
1104If either GetCairoRenderer or CreateContext fails (either it's not
1105supported or the Cairo shared libraries can not be found) then None
1106will be returned, so be sure to check the return values.  Using Cairo
1107on Windows is usually faster and seems to be of better quality than
1108using the GDI+ backend.
1109
1110The wx.GCDC class can now be constructed with an already exisiting
1111wx.GraphicsContext.
1112
1113The wx.lib.softwareupdate module has been added.  It implements a
1114class designed to be mixed with wx.App in a derived class and provides
1115code for enabling your applications to update themselves when new
1116releases are made available (very similar to how most applications on
1117the Mac will prompt you to allow it to self-update.)  This is based on
1118the Esky library available from the Python package index at
1119http://pypi.python.org/pypi/esky.  To enable your application to be
1120self-updatable it must be packaged as an Esky bundle, which is a .zip
1121file with a certain structure and meta-data, which means that you will
1122have to modify your setup.py files to enable this.  There is an
1123example showing how to do this in the samples/doodle folder of the
1124wxPython source tarball or the docs and demos package.
1125
1126Added a MultiMessageDialog class to wx.lib.dialogs that is similar to
1127the stock wx.MessageDialog, but is additionally able to have a
1128scrollable message area, custom icons, and customized button labels,
1129(although they will still use the stock IDs).  There is also a
1130MultiMessageBox Function that is like the wx.MessageBox function.
1131
1132
1133
1134
1135
11362.9.2.1
1137-------
1138* 23-July-2011
1139
1140Just before release of 2.9.2.0 an important bug was discovered in the
1141wxMSW printing code related to converting to and from native printer
1142definitions. To correct that glitch this .1 release was made with just
1143that one additional difference from the official wxWidgets 2.9.2
1144source tree.
1145
1146
1147
11482.9.2.0
1149-------
1150* (not released)
1151
1152Added wx.CommandLinkButton.  This button has both a label and a note
1153displayed on it.  On Windows 7 it is a new native widget type, on the
1154other platforms it is a generic implementation using wx.Button.
1155
1156Added wx.lib.itemspicker.  This class allows items to be selected from
1157a list by moving them to another list.
1158
1159Added wx.UIActionSimulator, which is able to programatically generate
1160platform specific keyboard and mouse events, (with varying degrees of
1161success depending on the platform.)
1162
1163Added the ability to the build tools to make a Mac Framework for
1164wxWidgets, and use it in the wxPython build.  (We're still ironing out
1165some issues so it's not part of the release builds yet.)
1166
1167Added an installer EXE for the wxWidgets source tree, including the
1168LIBs and DLLs that were used for the wxPython build on Windows.  This
1169enables 3rd party extension developers to build their libraries and
1170extensions such that they will use the same options and the same libs
1171as wxPython, and will replace the -devel tarball included with prior
1172releases.
1173
1174There have been many improvements to the wxOSX-Cocoa port, making it
1175a more usable port.  The other ports have also improved as well.
1176
1177The wx.TaskBarIcon in the wxOSX-cocoa port can now either be a custom
1178dock icon as before, or a status icon in the menu bar, and can be
1179selected by passing wx.TBI_DOCK or wx.TBI_CUSTOM_STATUSITEM to the
1180wx.TaskBarIcon constructor.  The default is menubar status item.  The
1181type flag is ignored on the other ports.
1182
1183wx.ToggleButtons are now part of the new common button class hierarchy
1184and so they can now have bitmaps instead of or in addition to their
1185text labels.
1186
1187Udpates from the AGW and Editra projects.
1188
1189
1190
1191
11922.9.1.1
1193-------
1194* 14-Oct-2010
1195
1196wx.Bitmap:  Add ConvertToDisabled method.
1197
1198wx.AboutBox: Added support for setting a long version string in
1199addition to the normal version string.
1200
1201wx.App: Add ScheduleForDestruction, which will allow you to cause a
1202window to be destroyed sometime in the near future.  (Most likely to
1203be used to ensure that there are no more envents pending for the
1204widget.)
1205
1206More methods and properties moved from wx.MouseEvent to the
1207wx.MouseState base class. Same for wx.KeyEvent and wx.KeyboardState,
1208which is used to hold modifier key states, and which is also a base
1209class of wx.MouseState.  Note that properties rightDown, leftDown and
1210middleDown have been changed to rightIsDown, leftIsDown and
1211middleIsDown.
1212
1213wx.Button can now have both a text and a bitmap label (or just one or
1214the other.)  wx.BitmapButton is pretty much redundant and will likely
1215be phased out sometime in the future.  (The OSX Carbon build does not
1216support this new feature, but the Cocoa build does.)
1217
1218wx.ComboBox:  Added Popup and Dismiss methods for programatically
1219showing and hiding the popup, although they are not implemented for
1220all platforms yet.
1221
1222wx.GenericDirCtrl can now select multiple paths.
1223
1224Removed the deprecated wx.Effects class.
1225
1226wx.Image: Added ConvertToGreyscale and ConvertToDisabled methods, also
1227new resampling scaling methods.
1228
1229wx.Toolbar now supports inserting stretchable space between tools.
1230
1231wx.Dialog can now be Window-modal or the usual App-modal.  On Mac this
1232results in the dialog sliding down in a sheet from the parent window's
1233top edge.  For platforms that don't support Window-modal dialogs it
1234will fall back to an App-modal behavior.  See
1235wx.Dialog.ShowWindowModal and the wx.Dialog sample in the demo.
1236
1237wx.wizard.Wizard:  Add a new EVT_WIZARD_PAGE_SHOWN event.
1238
1239Added wx.InfoBar, which is similar to the message bar used in some web
1240browser windows that is shown above or below the content window to
1241display messages and/or buttons in a way that doesn't interupt the
1242user's workflow like a modal message dialog does, but is much more
1243noticeble than simply putting some text in the status bar.
1244
1245Updated the Scintilla code used by wxStyledTextCtrl to version 2.03.
1246
1247Added wx.GraphicsGradientStop[s] classes and updated the
1248Create*GradientBrush APIs to allow gradients with more than two color
1249stops.  Similar changes were also mare to the Cairo specific classes in
1250wx.lib.graphics to help maintain compatibility between the two.
1251
1252Added the wx.lib.pdfviewer package which is a contribution from David
1253Hughes.  It implements a simple cross-platform PDF viewer widget using
1254the 3rd party pyPdf package for parseing the PDF file.  It's not super
1255fast nor is it feature complete, but for simple and small PDF files
1256(such as those produced by ReportLab) it works well.
1257
1258Probably the most notable change in this release is the addition of
1259the OSX-Cocoa build, including a 64-bit architecture in the fat
1260binaries.  The Cocoa port requires at least OSX 10.5, and the Carbon
1261port requires 10.4 or better.  There are still some rough edges in the
1262Cocoa port, but a lot does work and works well.  If you run into
1263issues that seem to be Cocoa specific then be sure to create tickets
1264for them at http://trac.wxwidgets.org with the component set to
1265wxOSX-Cocoa, after having searched for any existing tickets for the
1266same issue of course.
1267
1268
1269
1270
1271
12722.9.0.1
1273-------
1274* 22-Jan-2010
1275
1276NOTE: This release was done mainly to get a 2.9.x preview build out to
1277the wxPython contributors to use for testing their code with wxPython
12782.9.  There will not be a general official release of this version.
1279
1280NOTE: When using the stock Apple Python on OS X 10.6 it will default
1281to running in 64-bit mode if your machine is a 64-bit architecture.
1282wxPython is still using Carbon on OS X which is 32-bit only, so there
1283is no 64-bit personality in the universal binaries and it will raise
1284an exception when you import wx.  wxPython will be switching to Cocoa
1285soon, but in in the meantime you can force the stock Python to run in
128632-bit mode by running this command in a Terminal session::
1287
1288    defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
1289
1290
1291wxGTK: Implemented support for underlined fonts in wx.StaticText
1292
1293wxGTK: wx.TopLevelWindow.SetSizeHints size increments now work
1294
1295Added wx.EventBlocker class
1296
1297wxGTK: Make wx.TopLevelWindow.GetSize() return the size of the window
1298including the decorations (not just the client size) and updated
1299SetSize() to account for this as well.
1300
1301wxMSW: For consistency with wxGTK, when a top level window is
1302minimized the size returned from GetSize will be the restored size,
1303not the size of the icon window.
1304
1305wxGTK: For consistency with wxMSW, when a top level window is
1306minimized the size returned from GetClientSize will be (0,0).
1307
1308wxGTK: Color cursors now supported.
1309
1310Added wx.DC.StretchBlit() for wxMac and wxMSW (Vince Harron)
1311
1312Added support for labels for toolbar controls (Vince Harron)
1313
1314wxGTK: Setting foreground colour of single line wx.TextCtrl now works.
1315
1316wxMac: Corrected top border size for wxStaticBox with empty label (nusi)
1317
1318wx.Window.IsEnabled() now returns false even if the window parent, and
1319not the window itself, is disabled and added IsThisEnabled()
1320implementing the old IsEnabled() behaviour.
1321
1322wxGTK: Now using the native tab traversal functions instead of
1323simulating it ourselves.
1324
1325Generating wx.NavigationKeyEvent events doesn't work any more under
1326wxGTK (and other platforms in the future), use wx.Window.Navigate() or
1327NavigateIn() instead.
1328
1329wx.glcanvas.GLCanvas: The constructor has been changed slightly in
1330order to make it consistent across all the platforms.  The C++ version
1331now looks like this::
1332
1333    wxGLCanvas(wxWindow *parent,
1334               wxWindowID id = -1,
1335               const int *attribList = NULL,
1336               const wxPoint& pos = wxDefaultPosition,
1337               const wxSize& size = wxDefaultSize,
1338               long style = 0,
1339               const wxString& name = wxPyGLCanvasNameStr,
1340               const wxPalette& palette = wxNullPalette);
1341
1342Also in GLCanvas, all the platforms now support the new pardigm of
1343using a separate GLContext object, and associating it with the canvas
1344using canvas.SetCurent(context).
1345
1346wxMac: The get-url apple event is now supported, simply override
1347wx.App.MacOpenURL to receive it.  You'll also need to have appropriate
1348meta-data in your app bundle to specify the protocol of the URLs that
1349your app can respond to.
1350
1351wx.VScrolledWindow has been refactored, and new wx.HScrolledWindow and
1352wx.HVScrolledWindow classes have been added.  Just like
1353wx.VScrolledWindow they allow scrolling with non-uniform scroll
1354increments, where the size of each item is determined by making
1355callbacks into the derived class.  The H version handles horizontal
1356scrolling and the HV version handles both horizontal and vertical
1357scrolling.
1358
1359Support wx.APPLY and wx.CLOSE in CreateStdDialogButtonSizer()
1360
1361wx.CheckListBox now looks more native, especially under XP.
1362
1363Sizers distribute only the extra space between the stretchable items
1364according to their proportions and not all available space. We believe
1365the new behaviour corresponds better to user expectations but if you
1366did rely on the old behaviour you will have to update your code to set
1367the minimal sizes of the sizer items to be in the same proportion as
1368the items proportions to return to the old behaviour.
1369
1370Added support for toolbar buttons with dropdown menus.
1371
1372Added support for mouse events from two auxillary mouse buttons.
1373
1374The methods that wx.TextCtrl and wx.ComboBox have in common have been
1375factored out into a new base class that they share, wx.TextEntry.
1376
1377wx.richtext.RichTextCtrl and related classes were refactored such that
1378the RTC uses the same attributes object as wx.TextCtrl.  This means that
1379instead of using wx.richtext.RichtextAttr or TextAttrEx you'll just
1380use wx.TextAttr instead.  Also, all of the flags and styles related to
1381the text attributes have been moved out of the wx.richtext module and
1382into the main wx namespace.  Finally, wx.TextCtrl and RichTextCtrl now
1383share some common base classes.
1384
1385wx.Brush.MacSetTheme has been removed, and has been replaced by being
1386able to create a wx.Colour using a Mac themed brush ID instead.  So if
1387you used to have code like this::
1388
1389    brush = wx.Brush(someColour)
1390    brush.MacSetTheme(kThemeBrushDialogBackgroundActive)
1391
1392You'll want to replace it with code like this::
1393
1394    brush = wx.Brush(wx.MacThemeColour(kThemeBrushDialogBackgroundActive))
1395
1396
1397wx.calendar:  A native implementation of the CalendarCtrl was added
1398for the Windows and GTK ports, however the native classes tend to not
1399implement all of the functionality that the old generic version of the
1400control provides.  To be able to provide a way for you to work around
1401issues related to this I've added wrappers for both the CalendarCtrl
1402and also GenericCalendarCtrl, so if you depend on the ability to do
1403things like set holidays or change the attributes of specific days in
1404the calendar then please change your code to use the GenericCalendarCtrl
1405class instead.
1406
1407Added wx.NotificationMessage.
1408
1409The wx.grid.GridCellEditor.EndEdit method has been split into two
1410methods, EndEdit and ApplyEdit.  See the GridCustEditor sample in the
1411demo for an example of their use.
1412
1413Processing of pending events can be temporarily stopped and then
1414restarted.  See wx.App.SuspendProcessingOfPendingEvents and
1415ResumeProcessingOfPendingEvents.
1416
1417Added wx.App.YieldFor and related methods which can control what
1418categories of events can be processed during the yield.
1419
1420Spin buttons and spin controls now have their own event types instead
1421of reusing the scroll events.
1422
1423The public data members of wx.MouseEvent (m_shiftDown, etc.) have been
1424removed, but since wx.MouseEvent now derives from wx.MouseState you
1425can use its properties (shiftDown, etc.) instead for assignments to
1426those member values.
1427
1428Removed the Set/GetLogicalFunction methods from wx.GraphicsContext.
1429
1430Added Set/GetCompositionMode methods to wx.GraohicsContext, and also
1431Set/GetAntialiasMode methods.  The composition mode settings allow you
1432to use the classic Porter-Duff compositions when drawing.  See
1433http://keithp.com/~keithp/porterduff/p253-porter.pdf
1434
1435wx.grid.Grid:  Added methods CalcRowLabelsExposed,
1436CalcColLabelsExposed, CalcCellsExposed, DrawRowLabels, DrawRowLabel,
1437DrawColLabels, and DrawColLabel.
1438
1439Added the wx.lib.mixins.gridlabelrenderer module.  It enables the use
1440of label renderers for Grids that work like the cell renderers do.  See
1441the demo for a simple sample.
1442
1443wx.App:  OnExceptionInMainLoop and FilterEvent can now be overridden.
1444
1445Added wx.lib.msgpanel, which provides a class derived from wx.Panel
1446that can look and feel much like a wx.MessageDialog.
1447
1448Added wx.lib.progressindicator which is a simple class with a label
1449and a guage that can be used to show either specific or indeterminate
1450(pulsed) progress of some sort.  It works well in status bars, and can
1451be set to hide itself when not active.
1452
1453Added wx.lib.nvdlg, which provides a generic dialog for editing the
1454values of name/value pairs.  You're able to specify some styles and
1455attributes for each text control if needed.
1456
1457Wrappers for the propgrid library, maintained by Jaakko Salli, have
1458been added to wxPython.
1459
1460A new build script has been added to wxPython, originally created by
1461Kevin Ollivier, which greatly simplifies building both wxWidgets and
1462wxPython for the average user.  I now use it in my day-to-day builds
1463as well as from the scripts which create the preview and release
1464builds.  See the new BUILD.txt document for more information.
1465
1466
1467
1468
1469
14702.8.12.1
1471--------
1472* 23-July-2011
1473
1474Relax an assert that was added to Bind() in the previous release so
1475None will be an acceptable value for the handler parameter again.
1476
1477Added ToolTipString property to wx.Window.
1478
1479Other minor fixes.
1480
1481Updates from the AGW and Editra projects.
1482
1483
1484
14852.8.12.0
1486--------
1487* 16-April-2011
1488
1489This release is mostly just bug and typo fixes.  There are no new
1490major features or enhancements in the core library.
1491
1492
1493
1494
14952.8.11.0
1496--------
1497* 14-May-2010
1498
1499Lots of bug fixes in both wxWidgets and wxPython.
1500
1501Added the context manager protocol methods to some wx classes so they
1502can be used with the new Python 'with' statement.  (The with statement
1503is always available starting in Python 2.6, and can also be used in
1504Python 2.5 with a __future__ import statement.)  There are several
1505wx classes where this is a natural fit, such as wx.BusyInfo.  The
1506__enter__ and __exit__ methods have also been added to wx.Dialog where
1507it will do the dialog.Destroy() call for you.  This means that you can
1508use code like this::
1509
1510    with MyDialog(self, foo, bar) as dlg:
1511        if dlg.ShowModal() == wx.ID_OK:
1512            # do something with dlg values
1513
1514The list of wx classes that can now be used as context managers is:
1515
1516* wx.Dialog
1517* wx.BusyInfo
1518* wx.BusyCursor
1519* wx.WindowDisabler
1520* wx.LogNull
1521* wx.DCTextColourChanger
1522* wx.DCPenChanger
1523* wx.DCBrushChanger
1524* wx.DCClipper
1525
1526A new class has been added that is also a context manager, called
1527wx.FrozenWindow.  It will freeze the window passed to it upon entry to
1528the context, and will thaw the window upon exit from the context.
1529
1530Applied the final version of patch #10959 to the PyCrust code.  It
1531adds many enhancements to the Py suite, inlcuding the ability to edit
1532blocks of code (called slices) as a whole before executing them, and
1533also the ability to execute some simple shell commands.
1534
1535Replaced the wx.lib.pubsub module with the new pubsub package from
1536http://pubsub.sf.net.  By default it is backwards compatible with the
1537old pubsub module, but it also has a more advanced API available that
1538can be switched on at import time.  See the pubsub web site for more
1539details.
1540
1541The wx.Effects class is deprecated.
1542
1543Added Python 2.7 builds for Windows and Mac.
1544
1545Added Debian package builds for Ubuntu 9.10 and 10.4.
1546
1547Many fixes and enhancements for the wx.lib.agw pacakge, including the
1548addition of pybusyinfo, ribbon, ultimatelistctrl and zoombar.
1549
1550
1551
1552
1553
15542.8.10.1
1555--------
1556* 14-May-2009
1557
1558wx.grid.Grid:  Added methods CalcRowLabelsExposed,
1559CalcColLabelsExposed, CalcCellsExposed, DrawRowLabels, DrawRowLabel,
1560DrawColLabels, and DrawColLabel to the Grid class.
1561
1562Added the wx.lib.mixins.gridlabelrenderer module.  It enables the use
1563of label renderers for Grids that work like the cell renderers do.  See
1564the demo for a simple sample.
1565
1566Solved the manifests problem with Python 2.6 on Windows.  wxPython now
1567programatically creates its own activation context and loads a
1568manifest in that context that specifies the use of the themable common
1569controls on Windows XP and beyond.  This also means that the external
1570manifest files are no longer needed for the other versions of Python.
1571
1572wx.Colour: Updated the wx.Colour typemaps and also the wx.NamedColour
1573constructor to optionally allow an alpha value to be passed in the
1574color string, using these syntaxes:  "#RRGGBBAA" or "ColourName:AA"
1575
1576wx.lib.wxcairo:  Fixed a problem resulting from PyCairo changing the
1577layout of their C API structure in a non-binary compatible way.  The
1578new wx.lib.wxcairo is known to now work with PyCairo 1.6.4 and 1.8.4,
1579and new binaries for Windows are available online at
1580http://wxpython.org/cairo/
1581
1582
1583
1584
1585
1586
15872.8.9.2
1588-------
1589* 16-Feb-2009
1590
1591Added the wx.lib.agw package, which contiains most of the widgets from
1592http://xoomer.alice.it/infinity77/main/freeware.html written by Andrea
1593Gavana.  Andrea's widgets that were already in wx.lib were also moved
1594to the wx.lib.agw package, with a small stub module left in wx.lib.
1595As part of this addition the demo framework was given the ability to
1596load demo modules from a sub-folder of the demo directory, to make it
1597easier to maintain collections of demo samples as a group.
1598
1599Added the wx.PyPickerBase class which can be used to derive new picker
1600classes in Python.  Used it to implement a color picker for Mac that
1601uses a wx.BitmapButton instead of a normal wx.Button.  This makes the
1602color picker look and behave lots better on Mac than before.
1603
1604You can now pass the handler function to the Unbind method.  If it is
1605given then Unbind will only disconenct the event handler that uses the
1606same handler function, so if there are multiple bindings for the same
1607event type you'll now be able to selectively unbind specific
1608instances.
1609
1610Added a new tool to the Widget Inspection Tool that allows you to watch
1611the events passing through a widget.  It can also be used
1612independently, see wx.lib.eventwatcher.
1613
1614
1615
1616
1617
16182.8.9.1
1619-------
1620* 28-Sep-2008
1621
1622Fixed a Python 2.4 compatibility issue in the Editra code.
1623
1624
1625
1626
16272.8.9.0
1628-------
1629* 28-Sep-2008
1630
1631Many minor bug fixes throughout wxWidgets and wxPython.
1632
1633Fixed wx.lib.embeddedimage to work with Python 2.3.
1634
1635Fixed PseudoDC hit testing when pure white or pure black are used.
1636
1637Added support for a 64-bit Windows build for the AMD64 architecture,
1638(a.k.a. x64.)  This is for Python 2.5 only and is available only as a
1639Unicode build.
1640
1641Added the wx.EmptyBitmapRGBA factory function.
1642
1643Added the wx.lib.wxcairo module which allows the pycairo package to be
1644used for drawing on wx window or memory DCs.  In addition it is able
1645to convert from a native wx.Font to a cairo.FontFace, and it also
1646provides functions for converting to/from wx.Bitmap and
1647cairo.ImageSurface objects.  In order to use this module you will need
1648to have the Cairo library and its dependencies installed, as well as
1649the pycairo Python package.  For Linux and other unix-like systems you
1650most likely have what you need installed already, or can easily do so
1651from your package manager application.  See the wx.lib.wxcairo
1652module's docstring for notes on where to get what you need for Windows
1653or Mac.  This module uses ctypes, and depending on platform it may
1654need to find and load additional dynamic libraries at runtime in
1655addition to cairo.  The pycairo package used needs to be new enough to
1656export the CAPI structure in the package namespace.  I believe that
1657started sometime in the 1.4.x release series.
1658
1659Added the wx.lib.graphics module, which is an implementation of the
1660wx.GraphicsContext API using Cairo (via wx.lib.wxcairo).  This allows
1661us to be totally consistent across platforms, and also use Cairo to
1662implement some things that are missing from the GraphicsContext API.
1663It's not 100% compatible with the GraphicsContext API, but probably
1664close enough to be able to share code between them if desired, plus it
1665can do a few things more.
1666
1667Updated wx.Bitmap.CopyFromBuffer to be a bit more flexible. You can
1668now specify the format of the buffer, and the CopyFromBufferRGBA is
1669now just a wrapper around CopyFromBuffer that specifies a different
1670format than the default.  Also added the complement method,
1671CopyToBuffer.  See the docstring for CopyFromBuffer for details on the
1672currently allowed buffer formats.  The existing wx.BitmapFromBuffer
1673factory functions are also now implemented using the same underlying
1674code as CopyFromBuffer.
1675
1676Add wx.lib.mixins.listctrl.ListRowHighlighter for automatic highlighting
1677of rows in a wx.ListCtrl.
1678
1679
1680
16812.8.8.1
1682-------
1683* 18-July-2008
1684
1685wx.richtext: Added wrappers for the RichTextPrinting and
1686RichTextPrintout classes.
1687
1688Make it easier to replace the check box images used in the
1689CheckListCtrlMixin class.
1690
1691Fixed bug in wx.ScrolledWindow when child focus events caused
1692unneccessary or incorrect scrolling.
1693
1694Fixed a bug in wx.GridBagSizer where hidden items were not ignored in
1695part of the layout algorithm.
1696
1697Several other bugs also fixed.
1698
1699
1700
1701
17022.8.8.0
1703-------
1704* 23-June-2008
1705
1706Added the PlateButton class from Cody Precord.
1707
1708Added wx.PyEvtHandler, which supports overriding the ProcessEvent
1709method in derived classes.  Instances of this class can be pushed onto
1710the event handler chain of a window in order to hook into the event
1711processing algorithm, and its ProcessEvent method will be called for
1712every event sent to the window.
1713
1714With much help from Anthony Tuininga the code generated by the img2py
1715tool is now cleaner, simpler and smaller.  Instead of writing the data
1716for the images as printable ascii with hex escapes it now uses base64
1717to encode the images into a string.  In addition, instead of top-level
1718functions for returning the image data and bitmaps, the embedded
1719images now use a simple class with methods for returning the image as
1720a bitmap, icon, or etc.  By default in 2.8.x top-level aliases will be
1721generated to make the code backward compatible with the old functional
1722interface, but you can use -F to turn that off.  In 2.9 and beyond the
1723default will be to generate only the new class interface, but -f can
1724be used to turn the old behavior back on.
1725
1726The PyEmbeddedImage class added for the new img2py support can also be
1727used for image data that may be acquired from some other source at
1728runtime, such as over the network or from a database.  In this case
1729pass False for isBase64 (unless the data actually is base64 encoded.)
1730Any image type that wx.ImageFromStream can handle should be okay.  See
1731the wx.lib.embeddedimage module for details.
1732
1733Exposed the wx.GenericDatePickerCtrl to wxPython.  On wxGTK and wxMac
1734this is exactly the same as the normal date picker, but on wxMSW it
1735allows you to avoid the native wx.DatePickerCtrl if so desired.  Also
1736fixed a bug that caused an assert if you tried to set the date to
1737wx.DefaultDateTime even if wx.DP_ALLOWNONE was specified.
1738
1739Made a little hack in wx.lib.masked.TextCtrl that allows it to be
1740wrapped around an already existing TextCtrl instead of always creating
1741its own.  This is useful for example with the wx.TextCtrl that is
1742built-in to the customizable wx.combo.ComboCtrl, or with a textctrl
1743that is part of an XRC layout.  To use it you need to do a little
1744trick like this::
1745
1746       existingTextCtrl = combo.GetTextCtrl()
1747       maskedCtrl = wx.lib.masked.TextCtrl.__new__(wx.lib.masked.TextCtrl)
1748       maskedCtrl.this = existingTextCtrl.this
1749       maskedCtrl.__init__(parent)
1750
1751Enhanced the Widget Inspection Tool with some new functionality.
1752Added tools to the toolbar to expand and collapse the widget tree,
1753which is very helpful for not getting lost in very large applications
1754with many hundreds of widgets.  Also added a toolbar tool for
1755highlighting the currently selected widget or sizer in the live
1756application.  The tool will flash top-level windows and for all other
1757items it will draw an outline around the item for a few seconds.
1758
1759Copied the sized_controls module to the wx.lib package as the first
1760step of phasing out the wxaddons package.
1761
1762Added an implementation of wx.Window.SetDoubleBuffered on Windows.
1763(GTK already has one, and Mac doesn't need one because everything is
1764always double buffered by the system there.)
1765
1766Added a wrapper to wx.TopLevelWindow for MacGetTopLevelWindowRef to
1767facilitate calling the Carbon APIs directly for things that are not
1768supported in wx, similar to how we can use ctypes or PyWin32 with
1769window.GetHandle() to do custom stuff on Windows.  (On wxMac GetHandle
1770returns the ControlRef, which is different than the WindowRef, hence
1771the need for a 2nd method.)  Here is an example to set the modified
1772flag in the caption::
1773
1774    >>> import ctypes
1775    >>> carbon = ctypes.CDLL('/System/Library/Carbon.framework/Carbon')
1776    >>> carbon.SetWindowModified(frame.MacGetTopLevelWindowRef(), True)
1777
1778
1779Added a new light-weight solution for embedding ActiveX controls in
1780wxPython applications that uses ctypes and the comtypes package
1781available from http://starship.python.net/crew/theller/comtypes/.
1782Comtypes allows us to use and provide an interface with full dynamic
1783dispatch abilities, much like PyWin32's COM interfaces but with much
1784reduced external dependencies.  See wx/lib/activex.py for more
1785details.  IMPORTANT: Be sure to get at least version 0.5 of comtypes,
1786see the docstring in the wx.lib.activex module for details.
1787
1788The wx.lib.iewin, wx.lib.pdfwin, and wx.lib.flashwin modules were
1789switched to use the new and improved activex module.  The APIs
1790provided by these modules should be mostly compatible with what was
1791there before, except for how the COM events are handled.  Instead of
1792sending wx events it relies on you overriding methods with the same
1793names as the COM events.  You can either do it in a or derived class,
1794or you can set an instance of some other class to be the event sink.
1795See the ActiveX_IEHtmlWindow sample in the demo for an example.  If you
1796would rather continue to use the old version of these modules they
1797are available in the wx.lib with "_old" added to the names.
1798
1799Added the wx.lib.resizewidget module.  This module provides the
1800ResizeWidget class, which reparents a given widget into a specialized
1801panel that provides a resize handle for the widget. When the user
1802drags the resize handle the widget is resized accordingly, and an
1803event is sent to notify parents that they should recalculate their
1804layout.
1805
1806
1807
1808
1809
18102.8.7.1
1811-------
1812* 29-Nov-2007
1813
1814Applied Patch [ 1783958 ] to use the native renderer for drawing the
1815checkboxes in CheckListCtrlMixin.
1816
1817Incorporated the new version of XRCed.  This is the result of a Google
1818Summer of Code 2007 project by Roman Rolinsky, and includes a number
1819of UI enhancements, as well as a mechanism for adding support for new
1820components without needing changes to XRCed itself.  These new
1821components can be those supported at the C++ layer of XRC, as well as
1822custom XRC handlers written in Python.  See
1823http://wiki.wxpython.org/XRCed_Refactoring_Project
1824
1825wxMac: Fixed wx.BusyInfo so it doesn't steal the activated status
1826from the parent window.  (This actually applies to all frames with the
1827wx.FRAME_TOOL_WINDOW style and no decorations.)
1828
1829wxMac: Fixed the lack of painting the area between scrollbars on
1830Leopard.
1831
1832wxMac: Fixed assertion errors dealing with toolbars on Leopard.
1833
1834wxMac: Multiline textcontrols now support attributes for margins and
1835alignement; only a single tab distance can be set though.
1836
1837Added the wx.Image.AdjustChannels method.  This function muliplies all
18384 channels (red, green, blue, alpha) with a factor (around
18391.0). Useful for gamma correction, colour correction and to add a
1840certain amount of transparency to a image.
1841
1842Added Editra to the distribution, to give us a simple yet powerful
1843programmer's code editor to replace the never finished PyAlaMode
1844editor and related tools.  Many thanks to Cody Precord for the work he
1845has done on this tool and for allowing us to make it part of wxPython.
1846Editra has syntax highlighting and other support for over 40
1847programming languages, excellent OS X integration, is extendable via
1848plugins, and for those that are on the VI side of the fence there is a
1849VI emulation mode.  For more information see the Editra website at
1850http://editra.org/
1851
1852wxGTK: wx.Frame.ShowFullScreen now preserves the menubar's
1853accelerators.
1854
1855wxGTK: wx.GetClientDisplayRect fixed.
1856
1857Applied patch [1838043], which adds a demo of the wx.RendererNative
1858class functionality.
1859
1860Applied patch [1837449], which uses wx.RenderNative for drawing the
1861combo button in the PopupControl.
1862
1863Added GetDirItemData to wx.GenericDirCtrl, which returns a reference
1864to the data object associated with an item in the control.  (Patch
1865#1836326)
1866
1867
1868
1869
1870
18712.8.6.1
1872-------
1873* 26-Oct-2007
1874
1875wxMac: Fixed paste bug when the clipboard contains unicode text.
1876
1877AUI: Added missing event binders for the notebok tab events.
1878
1879wxMac: Fixed bug that resulted in portions of virtual listctrl's to
1880not be repainted when scrolling with PgUp/PgDown/Home/End.
1881
1882wxMac: Fixed bug that broke tab traversal when tabbing runs into a
1883wx.StaticBox.
1884
1885wxGTK:  Add wx.Window.GetGtkWidget.
1886
1887All: Undprecated wx.ListCtrl.[G|S]etItemSpacing
1888
1889All: Fixed wx.Palette constructor wrapper.  It takes three seqences of
1890integers to specify the R, G, and B values for each color in the
1891palette, which must all be the same length and which must contain
1892integer values in the range of 0..255 inclusive.
1893
1894Thanks to some grunt work from Edouard TISSERANT, wxPython now has the
1895needed tweaks in config.py to be able to be built with mingw32.  See
1896BUILD.txt for details.
1897
1898Changes in wx.GraphicsContext to make things like the half-pixel
1899offsets more consistent across platforms.
1900
1901wxMSW: If freezing a top-level window wxWidgets will actually freeze
1902the TLW's children instead.  This works around a feature of MS Windows
1903that allowed windows beneath the frozen one in Z-order to paint
1904through, and also mouse events clicking through to the lower window.
1905
1906
1907
1908
1909
19102.8.6.0
1911-------
1912* 27-Sept-2007
1913
1914This release is mostly about fixing a number of bugs and
1915inconsistencies in wxWidgets and wxPython.  In other words, there have
1916been a whole lot more changes than what is listed here, but they are
1917not new features or API visible changes, which is what are usually
1918listed in this file.
1919
1920Some Menu APIs added to make things more consistent.  Added
1921wx.MenuBar.SetMenuLabel, wx.MenuBar.GetMenuLabel,
1922wx.MenuBar.GetMenuLabelText, wx.Menu.GetLabelText,
1923wx.MenuItem.SetItemLabel, wx.MenuItem.GetItemLabel,
1924wx.MenuItem.GetItemLabelText, wx.MenuItem.GetLabelText.  The
1925Get...Label functions get the raw label with mnemonics and
1926accelerators, and the Get...LabelText functions get the text only,
1927without mnemonics/accelerators.
1928
1929Added wx.BORDER_THEME style.  This style will attempt to use a theme
1930specific style, if the current platform and environment is themeable
1931and has a specific theme style.  For example, you could use this on
1932Windows XP on a custom control to give it a themed border style that
1933looks like what is used by default on the native wx.TextCtrl or
1934wx.ListBox.  Since there were not any more available bits for border
1935styles, this style replaces wx.BORDER_DOUBLE.
1936
1937
1938
1939
1940
1941
19422.8.4.2
1943-------
1944* 8-Aug-2007
1945
1946Added some SWIG magic that allows wx C++ lists to be exposed to
1947wxPython as sequence-like wrappers around the real list, instead of
1948making a Python list that is a copy of the real list as was done
1949before.  These sequence-like objects support indexing, iteration,
1950containment tests ("obj in seq") and index(obj), but not anything that
1951would modify the sequence.  If you need to have a real list object
1952like before then you can pass the sequence to Python's list() function
1953to convert it.  Current functions that are affected by this are
1954wx.Window.GetChildren, wx.GetTopLevelWindows, wx.Sizer.GetChildren,
1955and wx.Menu.GetMenuItems.  Care should be taken to be sure that you
1956don't try to use the sequence after the C++ object the list belongs to
1957has been destroyed.
1958
1959Updated wrappers for the RichTextCtrl classes that were already
1960wrapped, and added support for loading rich xml files and saving as
1961HTML or XML.
1962
1963Added wxRoses sample from Ric Werme.
1964
1965Added better wrappers for wx.OutputStream and wxPython now deals with
1966them similarly to how it handles wx.InputStreams.  Specifically, any
1967Python file-like object can be passed where a wx.OutputStream is
1968expected and the data will be written to the file object
1969appropriately.
1970
1971Added some patches from Billy B. that improve the pySketch sample.
1972
1973Added patch from Chris Mellon that gives PyShell a custom context
1974menu that is better integrated with the shell environment.
1975
1976There are now new build scripts for making the Universal binaries and
1977Installer for OS X.  There is no longer any need for separate builds
1978for each OS version, all builds are now Universal and work on both
1979Panther and Tiger, and on PPC and i386.
1980
1981On the Linux side the debian and ubuntu packages will support multiple
1982versions of Python if the Debian/Ubuntu release is set up to support
1983more than one version.  To check which versions you can expect to get
1984you can run "pyversions -s".  Also there is a new package available
1985that contains a debug version of the wxPython extension modules, that
1986can be used with the python-dbg package.  In addition the RPMs are now
1987being built for Fedora Core 6 and Fedora Core 7.
1988
1989
1990
1991
1992
19932.8.4.0
1994-------
1995* 14-May-2007
1996
1997wxGTK: Make wx.NO_BORDER style work with wx.RadioBox (patch 1525406)
1998
1999Update to 1.0 of TreeMixin.
2000
2001wx.lib.customtreectrl: Patch from Andrea that fixes the following
2002problems/issues:
2003
2004* ZeroDivisionError when using the Vista selection style and calling
2005  SelectItem; for some strange reason, sometimes the item rect is
2006  not initialized and that generates the ZeroDivisionError when
2007  painting the selection rectangle;
2008
2009* Added a DeleteWindow method to GenericTreeItem class, for items
2010  that hold a widget next to them;
2011
2012* Renamed CustomTreeCtrl method IsEnabled to IsItemEnabled, otherwise
2013  it conflicts with wx.Window.IsEnabled;
2014
2015* Now CustomTreeCtrl behaves correctly when the widget attached to an
2016  item is narrower (in height) than the item text;
2017
2018
2019wx.lib.flatnotebook: Patch from Andrea that implements the following:
2020
2021* A new style FNB_FF2: my intentions were to make it like Firefox 2,
2022  however it turned out to be an hybrid between wxAUI notebook glose
2023  style & FF2 ...I still think it looks OK. The main purpose for
2024  making it more like wxAUI is to allow applications that uses both
2025  to have same look and feel (or as close as it can get...);
2026
2027* Changed the behavior of the left/right rotation arrows to rotate
2028  single tab at a time and not bulk of tabs;
2029
2030* Updated the demo module.
2031
2032XRCed now uses a wx.FileHistory object for managing the recent files
2033menu.
2034
2035wx.DateSpan and wx.TimeSpan now use lower case property names in order
2036to not conflict with the same named static methods that already
2037existed.
2038
2039wx.aui.PyAuiDocArt and wx.aui.PyAuiTabArt can now be derived from in
2040wxPython and plugged in to wx.AUI.
2041
2042XRCed has a new experimental feature to add controls by draging icons
2043from the tool palette to the test window. Mouse position is tracked
2044to highlight the future parent of the new item.
2045
2046Updates to MaskedEdit controls from Will Sadkin:
2047
2048maskededit.py:
2049  Added parameter option stopFieldChangeIfInvalid, which can be used to
2050  relax the validation rules for a control, but make best efforts to stop
2051  navigation out of that field should its current value be invalid.  Note:
2052  this does not prevent the value from remaining invalid if focus for the
2053  control is lost, via mousing etc.
2054
2055numctrl.py, demo / MaskedNumCtrl.py:
2056  In response to user request, added limitOnFieldChange feature, so that
2057  out-of-bounds values can be temporarily added to the control, but should
2058  navigation be attempted out of an invalid field, it will not navigate,
2059  and if focus is lost on a control so limited with an invalid value, it
2060  will change the value to the nearest bound.
2061
2062combobox.py:
2063  Added handler for EVT_COMBOBOX to address apparently inconsistent behavior
2064  of control when the dropdown control is used to do a selection.
2065
2066textctrl.py
2067  Added support for ChangeValue() function, similar to that of the base
2068  control, added in wxPython 2.7.1.1.
2069
2070Update to latest FloatCanvas from Chris Barker.
2071
2072The pywxrc tool now properly supports generating classes for menus and
2073menubars, and also creating attributes for menus, menubars and menu
2074items.
2075
2076
2077
2078
2079
20802.8.3.0
2081-------
2082* 22-March-2007
2083
2084Added wx.ToolBar.SetToolNormalBitmap and SetToolDisabledBitmap
2085methods.  (Keep in mind however that the disabled bitmap is currently
2086generated on the fly by most native toolbar widgets, so this
2087SetToolDisabledBitmap method won't have any affect on them...)
2088
2089Refactored the inspection tool such that it can be used as a wx.App
2090mix-in class as it was used before (with the wx.lib.mixins.inspect
2091module) and also as a non mix-in tool (using wx.lib.inspect.InspectionTool).
2092
2093Add wx.lib.mixins.treemixin from Frank Niessink.
2094
2095Added the wx.SizerFlags class, and also added AddF, InsertF and
2096PrependF methods to wx.Sizer.  The wxSizerFlags class provides a
2097convienient and easier to read way to add items to a sizer.  It was
2098added as a new set of methods of the wx.Sizer class so as to not
2099disturb existing code.  For example, instead of writing::
2100
2101    sizer.Add(ctrl, 0, wx.EXPAND | wx.ALL, 10)
2102
2103you can now write::
2104
2105    sizer.AddF(ctrl, wx.SizerFlags().Expand().Border(wx.ALL,10))
2106
2107
2108Will Sadkin provided a patch for the wx.lib.masked package that fixes
2109its support for using the navigation keys on the numeric keypad.
2110
2111wx.lib.plot: patch #1663937 to allow user to turn off scientific
2112notation on plot.
2113
2114wxGTK: Most of the remaining TODOs for the wx.GraphicsContext on wxGTK
2115have been done.  This includes implementations for GetTextExtent,
2116Clip, DrawBitmap, fixing the drawing position of text to be at the
2117upper left corner instead of the baseline, etc.
2118
2119wx.lib.customtreectrl patches from Andrea:
2120
21211. ExpandAll has been renamed as ExpandAllChildren, and the new
2122   ExpandAll now takes no input arguments (consistent with
2123   wx.TreeCtrl)
2124
21252. ctstyle keyword is now defaulted to 0: every style related to
2126   CustomTreeCtrl and the underlying wx.PyScrolledWindow should be
2127   declared using the keyword "style" only. For backward
2128   compatibility, ctstyle continues to work as I merged ctstyle and
2129   style in the __init__ method.
2130
21313. GetClassDefaultAttributes is now a classmethod.
2132
21334. UnselectAll bug fixed.
2134
2135
2136Renamed the wx.lib.inspect and wx.lib.mixins.inspect modules to
2137inspection, in order to avoid conflicts with the inspect module in the
2138standard Python library.
2139
2140Lots of changes to XRCed from Roman Rolinsky:
2141
2142*  Preferences for default "sizeritem" parameters for new panels and
2143   controls can be configured ("File">"Preferences...").
2144
2145*  Implemented comment object for including simple one-line comments and
2146   comment directives as tree nodes. No validation is performed for a
2147   valid XML string so comments must not contain "-->". Comment directive
2148   is a special comment starting with '%' character, followed by a line
2149   of python code. It is executed using 'exec' when the resource file is
2150   opened. This is useful to import plugin modules containing custom
2151   handlers which are specific to the resource file, hovewer this is of
2152   course a security hole if you use foreign XRC files. A warning is
2153   displayed if the preference option 'ask' is selected (by default).
2154
2155*  Added support for custom controls and plugin modules. Refer to this
2156   wxPythonWiki for the details:  http://wiki.wxpython.org/index.cgi/XRCed#custom
2157
2158*  Tool panel sections can be collapsed/expanded by clicking on the
2159   label of a tool group.
2160
2161*  Some undo/redo and other fixes.
2162
2163*  Fixes for wxMSW (notebook highlighting, control sizes, tree Unselect).
2164
2165*  Notebook page highlighting fix. Highlight resizes when the window
2166   is resized. ParamUnit spin button detects event handler re-entry
2167   (wxGTK probably has a bug in wxSpinButton with repeated events).
2168
2169*  Fix for dealing with empty 'growable' property, using MiniFrame
2170   for properties panel, the panel is restored together with the
2171   main window.
2172
2173
2174
2175
2176
21772.8.1.1
2178-------
2179* 19-Jan-2007
2180
2181wxMSW: Fix lack of spin control update event when control lost focus
2182
2183Added a typeId property to the PyEventBinder class that holds the
2184eventType ID used for that event.  So when you need the eventType
2185(such as when sending your own instance of standard events) you can
2186use, for example, wx.EVT_BUTTON.typeId instead of
2187wx.wxEVT_COMMAND_BUTTON_CLICKED.   Note that there are a few composite
2188events, such as EVT_MOUSE and EVT_SCROLL, that will actually bind
2189multiple event types at once, and in these cases the typeId property
2190may not give you what you want.  You should use te component events in
2191these cases.
2192
2193PyCrust now has an option for showing/hiding the notebook.
2194
2195wxMSW:  Corrected drawing of bitmaps for disabled menu items.
2196
2197Enhanced the wx.lib.mixins.inspect module.  In addition to showing a
2198PyCrust window it is now a widget browser, which provides a tree
2199loaded up with all the widgets in the app, optionally with the sizers
2200too, and also a panel displaying the properties of the selected
2201window.  Run the demo and type Ctrl-Alt-I keystroke (or Cmd-Alt-I on
2202the Mac) to see how it works.  You can add this to your own apps with
2203just a few lines of code.
2204
2205Added wx.SearchCtrl.[Get|Set]DescriptiveText
2206
2207wxMac: Added support for the wx.FRAME_FLOAT_ON_PARENT style.
2208
2209wxMac: the popups used for call tips and autocomplete lists in
2210StyledTextCtrl (such as in PyShell) are now top-level float-on-parent
2211windows so they are no longer clipped by the bounds of the stc window.
2212
2213
2214
2215
2216
22172.8.1.0
2218-------
2219* 8-Jan-2007
2220
2221Added EVT_TASKBAR_CLICK and use it to show taskbar icon menu on right
2222button release, not press, under MSW (bug 1623761)
2223
2224Added wx.TreeCtrl.CollapseAll[Children]() and IsEmpty() methods
2225
2226Fix wx.MDIChidFrame.GetPosition() (patch 1626610)
2227
2228Fix attribute memory leak in wx.grid.Grid::ShowCellEditControl() (patch
22291629949)
2230
2231wxGTK: Fix for controls on a toolbar being the full height of the
2232toolbar instead of their natural height.
2233
2234wx.lib.customtreectrl patches from Andrea Gavana.
2235
2236wxMac: Applied patch #1622389, fixing two memory leaks in
2237GetPartialTextExtents.
2238
2239More fixes for the native wx.ListCtrl on Mac.
2240
2241Added wx.aui.AuiNotebook.GetAuiManager().
2242
2243Added wx.aui.AuiMDIParentFrame and wx.aui.AuiMDIChildFrame, which
2244essentially implement the MDI interface using a normal wx.Frame and a
2245wx.aui.AuiNotebook.
2246
2247
2248
2249
22502.8.0.1
2251-------
2252* 11-Dec-2006
2253
2254Lots of fixes and updates to the AUI classes.
2255
2256Added wx.CollapsiblePane.  On wxGTK it uses a native expander widget,
2257on the other platforms a regular button is used to control the
2258collapsed/expanded state.
2259
2260Added the wx.combo module, which contains the ComboCtrl and ComboPopup
2261classes.  These classes allow you to implement a wx.ComboBox-like
2262widget where the popup can be nearly any kind of widget, and where you
2263have a lot of control over other aspects of the combo widget as well.
2264It works very well on GTK and MSW, using native renderers for drawing
2265the combo button, but is unfortunatly still a bit klunky on OSX...
2266
2267Use system default paper size for printing instead of A4 by default.
2268
2269Added wx.combo.OwnerDrawnComboBox, which is a ComboCtrl that delegates
2270the drawing of the items in the popup and in the control itself to
2271overridden methods of a derived class, similarly to how wx.VListBox
2272works.
2273
2274Added wx.combo.BitmapComboBox which is a combobox that displays a
2275bitmap in front of the list items.
2276
2277Added the wx.lib.mixins.inspect module.  It contains the InspectMixin
2278class which can be mixed with a wx.App class and provides a PyCrust
2279window that can be activated with a Ctrl-Alt-I keystroke (or Cmd-Alt-I
2280on the Mac.)
2281
2282Added some modules from Riaan Booysen:
2283
2284* wx.lib.flagart:  contains icons of the flags of many countries.
2285
2286* wx.lib.art.img2pyartprov: makes images embedded in a python file
2287  with img2py available via the wx.ArtProvider.
2288
2289* wx.lib.langlistctrl: A wx.ListCtrl for selecting a language,
2290  which uses the country flag icons.
2291
2292* An I18N sample for the demo.
2293
2294wx.lib.masked: Patch from Will Sadkin.  Includes Unicode fixes, plus
2295more helpful exceptions and ability to designate fields in mask
2296without intervening fixed characters.
2297
2298Added wx.SearchCtrl, which is a composite of a wx.TextCtrl with optional
2299bitmap buttons and a drop-down menu.  Controls like this can typically
2300be found on a toolbar of applications that support some form of search
2301functionality.  On the Mac this control is implemented using the
2302native HISearchField control, on the other platforms a generic control
2303is used, although that may change in the future as more platforms
2304introduce native search widgets.
2305
2306Added a set of button classes to wx.lib.buttons from David Hughes that
2307uses the native renderer to draw the button.
2308
2309
2310
2311
23122.7.2.0
2313-------
2314* 7-Nov-2006
2315
2316Patch [ 1583183 ] Fixes printing/print preview inconsistencies
2317
2318Add events API to wxHtmlWindow (patch #1504493 by Francesco Montorsi)
2319
2320Added wxTB_RIGHT style for right-aligned toolbars (Igor Korot)
2321
2322Added New Zealand NZST and NZDT timezone support to wx.DateTime.
2323
2324wx.Window.GetAdjustedBestSize is deprecated.  In every conceivable
2325scenario GetEffectiveMinSize is probably what you want to use instead.
2326
2327wx.Image: Gained support for TGA image file format.
2328
2329wx.aui: The classes in the wx.aui module have been renamed to be more
2330consistent with each other, and make it easier to recognize in the
2331docs and etc. that they belong together.
2332
2333======================  =================
2334FrameManager -->        AuiManager
2335FrameManagerEvent -->   AuiManagerEvent
2336PaneInfo -->            AuiPaneInfo
2337FloatingPane -->        AuiFloatingPane
2338DockArt -->             AuiDockArt
2339TabArt -->              AuiTabArt
2340AuiMultiNotebook -->    AuiNotebook
2341AuiNotebookEvent -->    AuiNotebookEvent
2342======================  =================
2343
2344wx.lib.customtreectrl: A patch from Frank Niessink which adds an
2345additional style (TR_AUTO_CHECK_PARENT) that (un)checks a parent when
2346all children are (un)checked.
2347
2348wx.animate.AnimationCtrl fixed to display inactive bitmap at start
2349(patch 1590192)
2350
2351Patch from Dj Gilcrease adding the FNB_HIDE_ON_SINGLE_TAB style flag
2352for wx.lib.flatnotebook.
2353
2354wx.Window.GetBestFittingSize has been renamed to GetEffectiveMinSize.
2355SetBestFittingSize has been renamed to SetInitialSize, since it is
2356most often used only to set the initial (and minimal) size of a
2357widget.
2358
2359The QuickTime backend for wx.media.MediaCtrl on MS Windows works
2360again.  Just pass szBackend=wx.media.MEDIABACKEND_QUICKTIME to the
2361constructor to use it instead of the default ActiveMovie backend,
2362(assuming the quicktime DLLs are available on the system.)
2363
2364
2365
2366
2367
2368
23692.7.1.3
2370-------
2371* 26-Oct-2006
2372
2373wxGTK:  The wx.ALWAYS_SHOW_SB style is now supported.
2374
2375Fixed name errors in the old wxPython package namespace.  As a
2376reminder, use of this package is deprecated and you are encouraged to
2377switch your programs over to the wx package.
2378
2379Fixed wx.glcanvas.GLCanvas.SetCurrent to be compatible with prevoius
2380versons.
2381
2382Added wx.StandardPaths.GetTmpDir.
2383
2384Bug fixes in the wx.ListCtrl on Mac from Kevin Olivier, allowing it to
2385send events properly again.  There is also a new native implementation
2386of wx.ListCtrl available, which will be used for wx.LC_REPORT style
2387list controls if you set the "mac.listctrl.always_use_generic"
2388SystemOption to zero.  In a future release this will be the default.
2389
2390Added a sample to the demo that shows some of what can be done with
2391the new wx.GraphicsContext and wx.GraphicsPath classes.
2392
2393
2394
2395
23962.7.1.2
2397-------
2398* 21-Oct-2006
2399
2400Fixed a bug in the MaskedEdit controls caused by conflicting IsEmpty
2401methods.
2402
2403Patch #1579280: Some mimetype optimizations on unix-like systems.
2404
2405wxMac: Several wx.webkit.WebKitCtrl enhancements/fixes, including:
2406
2407- new methods for increasing/decreasing text size, getting
2408  selection, getting/setting scroll position, printing, enabling
2409  editing, and running JavaScripts on the page.
2410
2411- added new event (wx.webkit.WebKitBeforeLoadEvent) for catching, and
2412  possibly vetoing, load events before they occur.
2413
2414- wx.webkit.WebKitCtrl now fires mouse events for certain events
2415  that it was eating before. This improves wxSplitterWindow
2416  resizing behavior.
2417
2418- refactoring of the sizing logic to move the Cocoa view.  Tested
2419  with splitter windows, panels, notebooks and all position
2420  correctly with this.
2421
2422Some improvements to the drawing code in CustomTreeCtrl.
2423
2424Fixed refcount leak in wx.Window.GetChildren.
2425
2426
2427
2428
2429
24302.7.1.1
2431-------
2432* 18-Oct-2006
2433
2434The following deprecated items have been removed:
2435
2436* wx.Bitmap SetQuality and GetQuality methods
2437
2438* The wx.GetNumberFromUser function
2439
2440* wx.EVT_LIST_GET_INFO and wx.EVT_LIST_SET_INFO
2441
2442* wx.BookCtrlSizer and wx.NotebookSizer
2443
2444* The PostScript-specific methods of wx.PrintData
2445
2446* wx.PrintDialogData SetSetupDialog and GetSetupDialog methods
2447
2448* wx.FontMapper SetConfig method
2449
2450* wx.html.HtmlSearchStatus.GetContentsItem method
2451
2452* wx.html.HtmlHelpData.GetContents, GetContentsCnt, GetIndex, and
2453  GetIndexCnt methods
2454
2455
2456wx.EventLoop is now implemented for wxMac.
2457
2458Added wxPython wrappers for the new wx.Treebook and wx.Toolbook
2459classes.
2460
2461wx.DC.BeginDrawing and EndDrawing have been deprecated in the C++
2462code, so since they never really did anything before they are now just
2463empty stubs in wxPython.
2464
2465Solved a problem that has been around for a very long time in how C++
2466methods are virtualized for overriding in derived Python classes.
2467Previously we couldn't do it for methods that needed to also exist in
2468the base class wrappers such that they could be called normally.  (The
2469reasons are long and complex, but suffice it to say that it was due to
2470mixing C++'s dynamic dispatch, and Python's runtime lookup of the
2471method attributes resulting in endless recursion of function calls.)
2472Because of this problem I used a hack that I have always hated, and
2473that is renaming the base class methods with a "base_*" prefix, for
2474example wx.Printout.base_OnBeginDocument.  Now that the problem has
2475finally been solved I have replaced all the base_Whatever() methods
2476with the real Whatever() method as well as a simple wrapper named
2477base_Whatever that is marked as deprecated.  So now instead of writing
2478your overridden methods like this::
2479
2480    def OnBeginDocument(self, start, end):
2481        # do something here
2482        return self.base_OnBeginDocument(start, end)
2483
2484You can now call the base class method the normal way, like this::
2485
2486    def OnBeginDocument(self, start, end):
2487        # do something here
2488        return Printout.OnBeginDocument(self, start, end)
2489
2490Or like this with super()::
2491
2492    def OnBeginDocument(self, start, end):
2493        # do something here
2494        return super(MyPrintout, self).OnBeginDocument(start, end)
2495
2496Note that the old way with the "base_*" function still works, but you
2497will get a DeprecationWarning from calling base_OnBeginDocument.  The
2498classes affected by this are:
2499
2500* wx.DropSource
2501* wx.DropTarget
2502* wx.TextDropTarget
2503* wx.FileDropTarget
2504* wx.PyLog   (also added the ability to override Flush)
2505* wx.PyApp   (also added the ability to override ExitMainLoop)
2506* wx.Printout
2507* wx.PyPrintPreview
2508* wx.PyPreviewFrame
2509* wx.PreviewControlBar
2510* wx.Process
2511* wx.PyControl
2512* wx.PyPanel
2513* wx.PyScrolledWindow
2514* wx.PyWindow
2515* wx.Timer
2516* wx.grid.PyGridCellRenderer
2517* wx.grid.PyGridCellEditor
2518* wx.grid.PyGridCellAttrProvider
2519* wx.grid.PyGridTableBase
2520* wx.html.HtmlWindow
2521* wx.wizard.PyWizardPage
2522
2523
2524Added the wx.DC.GradientFillConcentric and wx.DC.GradientFillLinear
2525methods.
2526
2527wxGTK: wx.ListBox and wx.CheckListBox are now using native GTK2
2528widgets.
2529
2530Added wx.ListBox.HitTest() from patch 1446207
2531
2532Bumped up to SWIG 1.3.29.  This provides some more runtime performance
2533boosts, gets rid of the dreaded Ptr classes, and some other nice new
2534things.
2535
2536Added wx.Window.GetScreenPosition and GetScreenRect which returns the
2537position of the window in screen coordinates, even if the window is
2538not a top-level window.
2539
2540Added GetResourcesDir and GetLocalizedResourcesDir to
2541wx.StandardPaths.
2542
2543Added a GetReceivedFormat method to wx.DataObjectComposite.  You can
2544use this to find out what format of data object was recieved from the
2545source of the clipboard or DnD operation, and then you'll know which
2546of the component data objects to use to access the data.
2547
2548Changed how the stock objects (wx.RED, wx.RED_PEN, wx.RED_BRUSH, etc.)
2549are initialized.  They are now created as uninitialized instances
2550using __new__.  Then after the wx.App has been created, but before
2551OnInit is called, the .this attribute of each object is initialized.
2552This was needed because of some delayed initialization functionality
2553that was implemented in wxWidgets, but the end result is cleaner for
2554wxPython as well, and allowed me to remove some ugly code previously
2555hidden under the covers.
2556
2557Added wx.StandardPaths.GetDocumentsDir.
2558
2559Added wx.RendererNative.DrawCheckButton.
2560
2561wx.ProgressDialog.Update now returns a tuple of two values.  The first
2562is a continue flag (what was returned before) and the second is a skip
2563flag.  If the dialog has the wx.PD_CAN_SKIP flag and if the Skip
2564button is clicked, then the skip flag is set to True the next time
2565Update is called.
2566
2567A DeprecationWarning is now issued when the old wxPython package is
2568imported.  If you are still using the old namespace please convert
2569your code to use the new wx package instead.
2570
2571Added wrappers for Julian's new wxRichTextCtrl class, visible in
2572wxPython as wx.richtext.RichTextCtrl window.  It still needs some more
2573work, but it is a great start.
2574
2575wx.lib.mixins.listctrl.TextEditMixin: Fixed the double END_LABEL_EDIT
2576event problem in TextEditMixin by checking if the editor was already
2577hidden before continuing with the CloseEditor method.  Also added code
2578to OpenEditor to send the BEGIN_LABEL_EDIT event and to not allow the
2579opening of the editor to continue if the event handler doesn't allow
2580it.
2581
2582wx.StaticBoxSizer now keeps better track of the wx.StaticBox, and it
2583will destroy it if the sizer is destroyed before the parent window is.
2584
2585Added wx.HyperlinkCtrl.
2586
2587Added battery and power related functions and events (wxMSW only so
2588far.)  See wx.PowerEvent, wx.GetPowerType and wx.GetBatteryState.
2589
2590Added wx.ListCtrl.HitTestSubItem which returns the sub-item (i.e. the
2591column in report mode) that was hit (if any) in addition to the item
2592and flags.
2593
2594Added wrappers for wx.ColourPickerCtrl, wx.DirPickerCtrl,
2595wx.FilePickerCtrl, and wx.FontPickerCtrl.
2596
2597Patch #1502016 wx.Image.ConvertToGreyscale now retains the alpha
2598channel.
2599
2600Added wrappers for the wxAUI classes, in the wx.aui module.
2601
2602Added the PseudoDC class from Paul Lanier.  It provides a way to
2603record operations on a DC and then play them back later.
2604
2605Upgraded to Scintilla 1.70 for wx.stc.StyledTextCtrl.
2606
2607Added CanSetTransparent and SetTransparent methods to the
2608wx.TopLevelWindow class, with implementations (so far) for wxMSW and
2609wxMac.
2610
2611SetDefaultItem() and GetDefaultItem() are now members of
2612wx.TopLevelWindow, not wx.Panel.
2613
2614wxGTK: Stock items (icons) will be used for menu items with stock
2615IDs.
2616
2617Added wx.lib.combotreebox from Frank Niessink
2618
2619Added wx.ImageFromBuffer, wx.BitmapFromBuffer and
2620wx.BitmapFromBufferRGBA factory functions.  They enable loading of an
2621image or bitmap directly from a Python object that implements the
2622buffer interface, such as strings, arrays, etc.
2623
2624Added wx.App.IsDisplayAvailable() which can be used to determine if a
2625GUI can be created in the current environment.  (Still need an
2626implementation for wxMSW...)
2627
2628The wx.html.HTML_FONT_SIZE_x constants are no longer available as the
2629default sizes are now calculated at runtime based on the size of the
2630normal GUI font.
2631
2632wx.Colour now includes an alpha component, which defaults to
2633wx.ALPHA_OPAQUE.  This is in preparation for allowing various new
2634alpha blening functionality using wx.Colour objects, such as drawing
2635with pens and brushes on a wx.DC.
2636
2637Added wx.NativePixelBuffer, wx.AlphPixelBuffer and related iterator
2638and accessor classes.  They allow platform independent direct access
2639to the platform specific pixel buffer inside of a wx.Bitmap object.
2640
2641The beginnings of support for RTL languages has been added, thanks to
2642a Google SoC project.
2643
2644Added wx.lib.dragscroller from Riaan Booysen.  It provides a helper
2645class that can used to scroll a wx.ScrolledWindow in response to a
2646mouse drag.
2647
2648Applied patch 1551409: Adds support for indeterminate mode gauges.
2649
2650wxMac: I've turned on the compile option for using the native toolbar
2651on the Mac now that it supports hosting of controls.  If the toolbar
2652is managed by the frame via either CreateToolBar() or SetToolBar()
2653then the native toolbar will be used.  Additional toolbars, or
2654toolbars that are not children of the frame, are managed by sizers or
2655what-not will still use the emulated toolbar because of platform
2656restrictions in how/where the native toolbar can be used.
2657
2658Added Python properties for many of the getter/setter methods of wx
2659classes.  In order for the names to be predicatble for somebody
2660already familiar with wxPython the property names are simply the name
2661of the getter with the "Get" dropped.  For example, wx.Window has a
2662property named "Size" that maps to GetSize and SetSize.  So far there
2663is only one known name conflict using this naming convention, and that
2664is wx.KeyEvent.KeyCode, however since KeyCode was formerly a
2665compatibility alias for GetKeyCode (and has been for a long time) it
2666was decided to just switch it to a property.  If you want to use the
2667method then change your calls to event.KeyCode() to
2668event.GetKeyCode(), otherwise you can use it as a property just by
2669dropping the parentheses.
2670
2671Updated the C++ code for wx.gizmos.TreeListCtrl from the wxCode
2672project.  This has resulted in some minor API changes, most of which
2673were worked around in the wrapper code.
2674
2675Added wx.lib.delayedresult from Oliver Schoenborn.
2676
2677Added wx.lib.expando, a multi-line textctrl that expands as more lines
2678are needed.
2679
2680wx.Image.Scale and Rescale methods now take an extra parameter
2681specifying type of method to use for resampling the image.  It
2682defaults to the current behavior of just replicating pixels, if
2683wx.IMAGE_QUALITY_HIGH is passed then it uses bicubic and box averaging
2684resampling methods for upsampling and downsampling respectively.
2685
2686Added the wx.lib.buttonpanel module, which is a tweaked version of
2687Andrea Gavana's FancyButtonPanel module.
2688
2689Added the wx.lib.flatnotebook module, from Andrea Gavana.
2690
2691Renamed wx.FutureCall to wx.CallLater so it is named more like
2692wx.CallAfter.  wx.FutureCall is now an empty subclass of wx.CallLater
2693for compatibility of older code.
2694
2695Added the wx.lib.customtreectrl module from Andrea Gavana.
2696
2697Added ChangeSelection to wx.BookCtrl (the base class for wx.Notebook
2698and other book controls) that is the same as SetSelection but doesn't
2699send the change events.
2700
2701Added wx.TextCtrl.ChangeValue() which is the same as SetValue() but
2702doesn't send the text changed event.
2703
2704For consistency, all classes having an Ok() method now also have
2705IsOk(), use of the latter form is preferred although the former hasn't
2706been deprecated yet
2707
2708Added the wx.AboutBox() function and wx.AboutDialogInfo class.  They
2709provide a way to show a standard About box for the application, which
2710will either be a native dialog or a generic one depending on what info
2711is provided and if it can all be shown with the native dialog.
2712
2713The code in the animate contrib has been moved into the core wxWidgets
2714library, and refactored a bit along the way.  For wxPython it still
2715exists in the wx.animate module, but has basically been reduced to two
2716classes, wx.animate.Animation, and wx.animate.AnimationCtrl.  You load
2717the animated GIF (and hopefully there will be other supported formats
2718in the near future) in the Animation object, and then give that to the
2719AnimatedCtrl for display.  See the demo for an example.  There is also
2720still a GIFAnimationCtrl class that provides some level of backwards
2721compatibility with the old implementation.
2722
2723wxMac: The compile option that turns on the use of CoreGraphics (a.k.a
2724Quartz) for wxDC is now turned on by default.  This means that all
2725drawing via wxDC is done using the new APIs from apple, instead of the
2726old Quick Draw API.  There are, however, a few places where Quartz and
2727wxDC don't fit together very well, mainly the lack of support for
2728logical drawing operations such as XOR, but there is work in progress
2729to provide other ways to do the same sort of thing that will work with
2730Quartz and also on the other platforms.
2731
2732The first parts of a new 2D drawing API has been added with the
2733wx.GraphicsPath and wx.GraphicsContext classes.  They wrap GDI+ on
2734Windows, Cairo on wxGTK and CoreGraphics on OS X.  They allow path-based
2735drawing with alpha-blending and anti-aliasing, and use a floating
2736point cooridnate system.  Currently they can only target drawing to
2737windows, but other wx.DC backends are forthcoming.  The APIs may
2738evolve a bit more before they are finalaized with the 2.8 release, but
2739there is enough there now to get a good feel for how things will work.
2740There is also a transitional wx.GCDC class that provides the wx.DC API
2741on top of wx.GraphicsContext.  Docs and a demo are still MIA.
2742
2743Added a wx.AutoBufferedPaintDC that is a subclass of wx.PaintDC on
2744platforms that do double buffering by default, and a subclass of
2745wx.BufferedPaintDC on the platforms that don't.  You can use this
2746class to help avoid the overhead of buffering when it is not
2747needed. There is also a wx.AutoBufferedPaintDCFactory function that
2748does a little more and actually tests if the window has
2749double-buffering enabled and then decides whether to return a
2750wx.PaintDC or wx.BufferedPaintDC.  This uses the new
2751wx.Window.IsDoubleBuffered method.
2752
2753
2754
2755
2756
2757
2758
27592.6.3.3
2760-------
2761* 15-July-2006
2762
2763wx.lib.pubsub updates from Oliver Schoenborn:
2764    - fixed the hash problem with non-hashable objects
2765    - now supports listeners that use \*args as an argument
2766      (listener(\*args) was not passing the validity test)
2767    - corrected some mistakes in documentation
2768    - added some clarifications (hopefully useful for first time
2769      users)
2770    - changed the way singleton is implemented since old way prevented
2771      pydoc etc from extracting docs for Publisher
2772
2773DocView and ActiveGrid IDE updates from Morgan Hua:
2774    New Features: In Tab-View mode, Ctrl-number will take the user to
2775    the numbered tab view.  Modified files now show an '*' astrisk in
2776    the view title.  Debugger framework can now support PHP debugging.
2777    Not important for python development, but at least that means the
2778    debugger framework is more generalized.
2779
2780wx.lib.mixins.listctrl.TextEditMixin: Fixed the double END_LABEL_EDIT
2781event problem in TextEditMixin by checking if the editor was already
2782hidden before continuing with the CloseEditor method.  Also added code
2783to OpenEditor to send the BEGIN_LABEL_EDIT event and to not allow the
2784opening of the editor to continue if the event handler doesn't allow
2785it.
2786
2787Undeprecated wx.GetNumberFromUser and added wx.NumberEntryDialog.
2788
2789Made necessaary changes for building wxPython for Python 2.5.  There
2790may still be some issues related to the new Py_ssize_t type and 64-bit
2791machines, but at least all compile errors and warnings related to it
2792have been resolved.
2793
2794
2795
2796
27972.6.3.2
2798-------
2799* 3-April-2006
2800
2801Fixed reference leak in wx.gizmos.TreeListCtrl.GetSelections.
2802
2803wxMSW: Fixed sizing issue with wx.Choice and wx.ComboBox.  This change
2804was implemented by reverting a prior fix for a different problem
2805(contiuous painting/resizing when a combobox is used as a widget in a
2806wx.html.HtmlWindow) so a method to fix both problems is still being
2807investigated.
2808
2809wxGTK: Fixed potential buffer overrun when pasting from the
2810clipboard.
2811
2812Fixed problem in wx.lib.splitter when used on 64-bit platforms.  Used
2813the current length of the list for specifying an append instead of
2814sys.maxint.
2815
2816wxMSW: Support added for XP themed owner drawn buttons and bitmap
2817buttons.  For example, if you change the foreground color of a button
2818it will now be drawn with the XP themed style rather than an ugly
2819generic button style.
2820
2821XRCed: Fix for Copy/Paste objects with international characters.
2822
2823Fixed the equality and inequality operators for some of the basic
2824data types (wx.Point, wx.Size, wx.Colour, etc.) to no longer raise a
2825TypeError if the compared object is not compatible, but to just return
2826a boolean as expected.  For example::
2827
2828          wx.Colour(64,0,64) == 123      ==> False
2829
2830wxMSW: Fixed (again) sizing/positioning issues of calling Realize on
2831a wx.ToolBar that is not manaaged directly by a frame and that is
2832already shown.
2833
2834wxMSW: Fixed wx.Choice/wx.ComboBox so they send events when a new item
2835is selected only with the keyboard.
2836
2837
2838
28392.6.3.0
2840-------
2841* 27-March-2006
2842
2843Change the wx.ListCtrl InsertStringItem wrapper to use the form that
2844takes an imageIndex, and set the default to -1.  This ensures that on
2845wxMSW that if there is an image list but they don't specify an image,
2846the native control doesn't use one anyway.
2847
2848wxMSW: wx.ListCtrl in report mode is now able to support images in
2849other columns besides the first one.  Simply pass an image index to
2850SetStringItem.  For virtual list controls you can specify the image to
2851use on the extra columns by overriding OnGetItemColumnImage in your
2852derived class.  It is passed the item number and the column number as
2853parameters, and the default version simply calls OnGetItemImage for
2854column zero, or returns -1 for other columns.
2855
2856Switched to using SWIG 1.3.27 for generating the wrapper code.  There
2857are some small changes needed to SWIG to work around some bugs that
2858wxPython exposes, and to be able to generate code that matches that
2859which wxPython is using.  If you are building wxPython yourself and
2860need to modify any of the \*.i files or to add your own, then you will
2861want to be sure to use a matching SWIG.  See wxPython/SWIG/README.txt
2862in the source tarball for details.
2863
2864wx.Image.Copy, Mirror, and GetSubImage now also do the right thing
2865with  the alpha channel.
2866
2867wxMSW: Fixed problem in wx.TextCtrl where using SetValue and
2868wx.TE_RICH2 would cause the control to be shown if it was hidden.
2869
2870wxMSW: Numpad special keys are now distinguished from normal keys in
2871key events.
2872
2873wxMSW: Multiline notebook tab label change now resizes the control
2874correctly if an extra row is removed or added.
2875
2876wxMSW: On XP fall back to unthemed wxNotebook if specified orientation
2877not available in the themed version.
2878
2879Added wx.Toolbar.GetToolsCount.
2880
2881Added wx.GridSizer.CalcRowsCols.
2882
2883Added wx.OutputStream.LastWrite.
2884
2885wxGTK: EVT_SET_CURSOR is now sent.
2886
2887wxGTK: Fix RequestMore for idle events.
2888
2889wxGTK: Implement user dashes for PS and GNOME printing.
2890
2891wxGTK: Correct update region code. Don't always invalidate the whole
2892window upon resize. Reenable support for thewx.NO_FULL_REPAINT_ON_RESIZE
2893flag.  Also disable refreshing custom controls when focusing in and out.
2894
2895wx.lib.pubsub: Publisher is now able to parse a dotted notation string
2896into a topic tuple.  For example: subscribing to "timer.clock.seconds"
2897is the same as subscribing to ("timer", "clock", "seconds").
2898
2899Applied patch #1441370: lib.plot - allow passing in wx.Colour()
2900
2901Added wx.CommandEvent.GetClientData.
2902
2903Updated wxStyledTextCtrl to use version 1.67 of Scintilla.
2904NOTE: The STC_LEX_ASP and STC_LEX_PHP lexers have been deprecated,
2905you should use STC_LEX_HTML instead.
2906
2907wxSTC: Implemented Fix for SF Bug #1436503.  Delay the start of the
2908DnD operation in case the user just intended to click, not drag.
2909
2910Updated the analogclock.py module to the new analogclock package from
2911E. A. Tacao.
2912
2913Added the wx.lib.mixins.listctrl.CheckListCtrlMixin class from Bruce
2914Who, which makes it easy to put checkboxes on list control items.
2915
2916Applied a patch from Christian Kristukat to wx.lib.plot that adds
2917scrollbars when the plot is zoomed in, and also the ability to grab a
2918zoomed plot and move it around with a mouse drag.
2919
2920XRCed updated to allow wxMenuBar to be created inside a wxFrame.
2921
2922Added wx.StandardPaths.GetDocumentsDir() (patch 1214360)
2923
2924
2925
2926
2927
2928
29292.6.2.1
2930-------
2931* 10-Jan-2006
2932
2933wxMSW: Fix for bug #1211907, popup menu indenting inconsistent with
2934bitmaps.
2935
2936wxMac: Don't send an event for wx.RadioButton deselections, just the
2937selections.  This was done to make it consistent with the other
2938platforms.
2939
2940wxMSW: Always set flat toolbar style, even under XP with themes: this
2941is necessary or separators aren't shown at all.
2942
2943Fixes for bug #1217872, pydocview.DocService not correctly initialized.
2944
2945Fix for bug #1217874, Error in parameter name in DocManager.CreateView.
2946
2947Added wrappers for the wx.RendererNative class.
2948
2949Added the wx.lib.splitter module, which contains the
2950MultiSplitterWindow class.  This class is much like the standard
2951wx.SplitterWindow class, except it allows more than one split, so it
2952can manage more than two child windows.
2953
2954Docview and IDE patch from Morgan Hua with fix for bug #1217890
2955"Closing view crashes Python" plus some new features:
2956
2957    New feature added to the IDE is 'Extensions'.  Under
2958    Tools|Options|Extensions, you can add calls to external programs.
2959    For example you can add a "Notepad" extension (under windows) that
2960    will exec Notepad on the currently open file.  A new "Notepad"
2961    menu item will appear under the Tools menu.
2962
2963Some fixes to XRCed to make encoding errors a bit more user friendly.
2964
2965XRCed changes from Roman Rolinsky:
2966
2967* Added new controls (Choicebook, Listbook, StatusBar,
2968  DatePicker), and completed style flags. Test window is opened
2969  for an available parent control if no specific view
2970  defined. Better handling of exceptions (highlighting does not
2971  'stick' anymore).
2972
2973* Use system clipboard for Copy/Paste.
2974
2975* Improved some dialogs (window styles, growable cols). Changed
2976  the range for wxSpinCtrl min/max to all integers (default 0/100
2977  is not always good).
2978
2979Updates for wx.lib.foldpanelbar and wx.lib.hyperlink from Andrea
2980Gavana.
2981
2982Fix for Bug #1283496: wxPython TheClipboard class causes problems for
2983pychecker.  Ensure the app has been created before initializing
2984wx.TheClipboard.
2985
2986Fix for Bug #1352602: FileBrowseButtonWithHistory can't type in Value.
2987
2988wxHTML: Added space after list item number.
2989
2990wx.lib.printout:  Applied patch #1384440.
2991
2992wxMSW:  Fix for Bug #1293225 Window_FromHWND crashes if parent is
2993None.
2994
2995Fix for Bug #1261669, use a wx.TE_RICH2 style for the Process demo so
2996it doesn't fill up too soon.
2997
2998Applied Patch #1354389: wxPython MenuItem SetBitmaps fix.
2999
3000Applied Patch #1239456: wxPython wx.DataObject.GetAllFormats fix.
3001
3002Applied Patch # #1230107 which allows image handlers to be written in
3003Python by deriving from wx.PyImageHandler.
3004
3005Applied patch #1072210: generalize printout.py to allow text printing.
3006
3007Applied patch #1243907: Give Throbber much more flexibility by
3008allowing the user to set the rest image, the direction, the current
3009index, custom sequence.  Allows user to manually step through the
3010sequence with Next(), Previous(), Increment(), Decrement() &
3011SetCurrent(). Very handy if you have multiple throbbers that you want
3012to synchronize with a single timer.
3013
3014Fix for bug #1336711: wx.lib.calendar.CalenDlg can yield incorrect
3015result.
3016
3017Applied patch from Morgan Hua for updates to ActiveGrid code
3018(pydocview, ActiveGrid IDE, etc.)
3019
3020Applied patch #1326241: Supporting "setup.py install --install-headers=path"
3021
3022Applied patch from Morgan Hua to fix bug #1219423: CommandManager
3023should not repeat old commands after a branch.
3024
3025Applied patch #1238825 adding search backward capabilities to the
3026demo.  Modified to use the up/down options in the wx.FindReplaceDialog
3027instead of a separate menu item.
3028
3029Fix for bug #1266745 and #1387725 in the wx.FindReplaceDialog on MSW.
3030Actually check we are using MSLU before doing the hack designed to
3031workaround a bug in MSLU!
3032
3033wxMSW: wx.lib.iewin.IEHtmlWindow now properly handles tabbing, return
3034and other special keys properly.
3035
3036Lots of PyCrust enhancments started by Franz Steinaeusler, Adi Sieker,
3037and Sebastian Haase, and which in turn were further enhanced, fixed
3038tweaked and finished up by me.  The changes include the following:
3039
3040* The Autocomplete and Calltip windows can now be opened manually
3041  with Ctrl-Space and Ctrl-Shift-Space.
3042
3043* In the stand alone PyCrust app the various option settings,
3044  window size and position, and etc. are saved and restored at the
3045  next run.
3046
3047* Added a help dialog bound to the F1 key that shows the key
3048  bindings.
3049
3050* Added a new text completion function that suggests words from
3051  the history.  Bound to Shift-Return.
3052
3053* F11 will toggle the maximized state of the frame.
3054
3055* switched to Bind() from wx.EVT_*().
3056
3057* Display of line numbers can be toggled.
3058
3059* F12 toggles a "free edit" mode of the shell buffer.  This mode
3060  is useful, for example, if you would like to remove some output
3061  or errors or etc. from the buffer before doing a copy/paste.
3062  The free edit mode is designated by the use of a red,
3063  non-flashing caret.
3064
3065* Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.
3066
3067* General code cleanup and fixes.
3068
3069* Use wx.StandardPaths to determine the location of the config
3070  files.
3071
3072* Use wx.SP_LIVE_UPDATE on crust and filling windows.
3073
3074* Extended the saving of the config info and other new features to
3075  the PyShell app too.  Additionally, other apps that embed a
3076  PyCrust or a PyShell can pass their own wx.Config object and
3077  have the Py code save/restore its settings to/from there.
3078
3079* All of the classes with config info get an opportunity to
3080  save/load their own settings instead of putting all the
3081  save/load code in one place that then has to reach all over the
3082  place to do anything.
3083
3084* Enable editing of the startup python code, which will either be
3085  the file pointed to by PYTHONSTARTUP or a file in the config dir
3086  if PYTHONSTARTUP is not set in the environment.
3087
3088* Added an option to skip the running of the startup code when
3089  PyShell or PyCrust starts.
3090
3091* PyCrust adds a pp(item) function to the shell's namespace that
3092  pretty prints the item in the Display tab of the notebook.
3093  Added code to raise that tab when pp() is called.
3094
3095* Added an option for whether to insert text for function
3096  parameters when popping up the call tip.
3097
3098* Added Find and Find-Next functions that use the
3099  wx.FindReplaceDialog.
3100
3101
3102Applied patches from Will Sadkin for wx.lib.masked modules:
3103
3104* Now ignores kill focus events when being destroyed.
3105
3106* Added missing call to set insertion point on changing fields.
3107
3108* Modified SetKeyHandler() to accept None as means of removing
3109  one.
3110
3111* Fixed keyhandler processing for group and decimal character
3112  changes.
3113
3114* Fixed a problem that prevented input into the integer digit of a
3115  integerwidth=1 numctrl, if the current value was 0.
3116
3117* Fixed logic involving processing of "_signOk" flag, to remove
3118  default sign key handlers if false, so that
3119  SetAllowNegative(False) in the NumCtrl works properly.
3120
3121* Fixed selection logic for numeric controls so that if
3122  selectOnFieldEntry is true, and the integer portion of an
3123  integer format control is selected and the sign position is
3124  selected, the sign keys will always result in a negative value,
3125  rather than toggling the previous sign.
3126
3127wx.FontMapper.SetConfig is deprecated.  You should instead just set an
3128application-wide config object with wx.Config.Set, which wx.FontMapper
3129will use by default.
3130
3131Added wx.GetMouseState which returns the current state of the mouse.
3132It returns an instance of a wx.MouseState object that contains the
3133current position of the mouse pointer in screen coordinants, as well
3134as boolean values indicating the up/down status of the mouse buttons
3135and the modifier keys.
3136
3137Added wx.SizerItem.SetUserData
3138
3139A variety of updates to wx.lib.floatcanvas, including Added
3140DrawObjects, including a ScaledTextBox, with auto-wrapping, etc, and
3141Scaled and Unscaled Bitmap Objects.
3142
3143.. warning:: Changed all DrawObjects to take an (x,y) pair rather
3144       than individual x,y parameters. Also changed rectangles and
3145       ellipses to take (w,h) pair. This is an API change, but should
3146       be easy to accommodate, all you need to do is add a parenthesis
3147       pair:  (...x, y, ...) --->  (...(x,y), ...)
3148
3149
3150
3151
31522.6.1.0
3153-------
3154* 4-June-2005
3155
3156wx.ListCtrl: patch #1210352, fixes editing in generic wx.ListCtrl with
3157wx.LC_EDIT_LABELS.
3158
3159Applied patch #208286, MediaCtrl DirectShow rewrite.
3160
3161DocView patches from Morgan Hua: bug fixes, and additional SVN
3162commands, also added a default template that uses the text editor for
3163any unknown file type.
3164
3165wxMSW: Use the system IDC_HAND cursor for wx.CURSOR_HAND and only fallback
3166to the strange wxWidgets version if the system one is not available.
3167
3168wx.grid.Grid: Merge the cell size attribute the same way that other
3169attributes are merged, e.g., if it is already set to a non-default
3170value in the current GridCellAttr object then don't merge from the
3171other.
3172
3173wx.lib.evtmgr: Fixed to use wx._core._wxPyDeadObject
3174
3175wx.lib.gridmovers: Don't scroll when the mouse is dragged outside of
3176the grid, unless the mouse is kept in motion.
3177
3178wxMSW:  Applied patch #1213290 incorrect logic in
3179wx.TopLevelWindow.ShowFullScreen.
3180
3181Applied patch #1213066 correct device names for Joystick in Linux.
3182
3183wxGTK: Applied patch #1207162 wx.TextCtrl.SetStyle fix for overlapping
3184calls.
3185
3186wx.FileConfig: fixed DeleteEntry to set the dirty flag properly so the
3187change will get written at the next flush.
3188
3189
3190
3191
3192
31932.6.0.1
3194-------
3195* 30-May-2005
3196
3197Added wx.BrushFromBitmap to create a stippled brush in a single step.
3198Also added missing brysh style flags: wx.STIPPLE_MASK
3199wx.STIPPLE_MASK_OPAQUE.
3200
3201wxMSW: Fix for default control colours when the system text fg colour
3202is not black.
3203
3204wxGTK: Patch #1171754, It is now possible to have a menu item that
3205both has an icon and is a submenu.
3206
3207wxMSW: Patch #1197009, better refreshes when windows are moved and
3208resized.
3209
3210wxMSW: Patch #1197468.  Keeps track of pending size/position changes
3211in case there is more than one adjustment for a window in a single
3212DeferWindowPos set, then the pending values can be used for defaults
3213instead of current values.
3214
3215Fixed the typemap that converts a Python list of strings to a
3216wxArrayString so it uses the wxPython default encoding.
3217
3218Several docstrings added and updated.  Lots more to go.
3219
3220wxMac: Strings added to the clipboard or used in DnD no longer have an
3221extra null character at the end.
3222
3223Added wx.GetXDisplay that returns a raw swigified pointer for the X11
3224Display, or None for the non-X11 platforms.
3225
3226wxMenu: Don't send an event when selecting an already selected radio
3227item.
3228
3229Added wx.LaunchDefaultBrowser.
3230
3231wxMSW: Fixed erroneous selection of content in wx.ComboBox when within
3232a wx.StaticBox.
3233
3234wxMSW: Fixed alpha blitting to take into account source position.
3235
3236Ensure that Python is still in an initialized state before doing any
3237locking or unlocking in wxPyBeginBlockThreads and wxPyEndBlockThreads
3238as these can be triggered after Python has been finalized in embedding
3239situations.
3240
3241Added alternate constructors for wx.Font: wx.FontFromPixelSize,
3242wx.FFont, wx.FFontFromPixelSize.  See the docstrings or new api docs
3243for details.
3244
3245Added wx.lib.hyperlink from Andrea Gavana.  It is a control like
3246static text that acts like a hyper-link, launching the system's
3247default browser in response to the clicks.
3248
3249Added an optional parameter to wxversion.select that allows you to
3250specify that the extra components specified in the version string are
3251required.  For example, if you ask for "2.6-unicode" but only the ansi
3252version is installed then by default the ansi version will be selected
3253as it considered close enough since the version numbers match.  If you
3254want to force the options to be required then you can just add a True
3255parameter, like this::
3256
3257         import wxversion
3258         wxversion.select("2.6-unicode", True)
3259         import wx
3260
3261Tweaked wx.lib.buttons such that flat buttons (e.g. have no bevel and
3262a wx.BORDER_NONE style flag) paint themed backgrounds if there are
3263transparent areas and the parent is displaying a theme.
3264
3265wxMSW:  Fix for wrong sash colour of wx.SplitterWindow in the silver
3266theme on XP.
3267
3268Added a wx.xrc.XmlResourceHandler for the Ticker class.  See
3269wx/lib/ticker_xrc.py
3270
3271wxSTC: Fixed CmdKeyAssign key bindings for Ctrl-Backspace.
3272
3273wxMSW: Fixed a bug in wx.TextCtrl where all the lines were being used
3274to calculate the best size, instead of using a reasonable limit.
3275
3276XRCed: Use wx.GetDefaultPyEncoding/wx.SetDefaultPyEncoding for
3277changing active encoding.  Fixed pasting siblings (Ctrl key pressed
3278while pasting).
3279
3280wx.lib.filebrowsebutton: Bug fix from Chad Netzer for when
3281self.history is None.
3282
3283wx.ogl: Patch from Davide Salomoni that adds an optional point
3284parameter to LineShape.InsertLineControlPoint allowing one to
3285optionally specify where the new control point has to be drawn.
3286
3287wxMSW: setting foreground colour for wx.CheckBox now works when using
3288XP themes.
3289
3290More updates to the docview library modules and sample apps from the
3291ActiveGrid folks.  Their sample IDE is now able to integrate with
3292Subversion.
3293
3294wx.grid.Grid:  Ensure that the grid gets the focus when it is
3295left-clicked.  Note that if you have custom widgets that handle the
3296EVT_LEFT_DOWN event but do not call event.Skip() then you will
3297probably want to add a call to self.SetFocus in the event handler.
3298
3299wxGTK:  Add wxSTAY_ON_TOP support [Patch 1206023]
3300
3301wx.TreeCtrl:  wx.EVT_TREE_ITEM_MENU event made consistent on all
3302platforms.  The location of the click or the item is included in the
3303event as well.
3304
3305wxGTK: Setting background colour of a window now only affects the
3306window itself, not the borders, scrollbars, etc.  (Bug #1204069)
3307
3308Print framework:  Add more paper sizes and code to fallback to an
3309explicit paper size if a known paper size is not found for the
3310printer.
3311
3312wxMac: Applied patch for bug #1206181 Option-key decodes are wrong,
3313also applied patch for bug #1205691 Modified Fn keys don't work.
3314
3315wx.Image: Fixed to preserve alpha channel in Rotate90 method.
3316
3317wxMSW: Fixed incorrect background colour on wx.CheckListBox.
3318
3319wxMSW: Fixed drawing of owner drawn buttons with multiline labels
3320
3321Removed a bunch of unnecessary files, and removed or replaced images
3322that we're not sure of their origin or license.
3323
3324The default DoGetBestSize is updated to not always return the current
3325size if the window has no sizer, children, or minsize set.  Instead
3326the current size is set as the minsize.  This solves the occasional
3327problem where a sizer may cause a childless panel to grow but never
3328shrink.
3329
3330wxMSW: When converting a wx.Icon to a bitmap check if the icon has an
3331alpha channel and set the bitmap to use it.
3332
3333Fixed the wrong class name used in wx.PyScrolledWindow's call to
3334_setCallbackInfo.
3335
3336wxMSW: patch #1207202, Fixes GDI leak when using stock cursors.
3337
3338wx.calendar.CalendarCtrl: Patch #1207531, Keeps the CalendarCtrl wide
3339enough even when the weekday names for the locale are shorter than
3340usual.
3341
3342Made GridCellNumberEditor.StartingKey also insert the typed char when
3343there is a range of allowed values (so a wx.SpinCtrl is used instead
3344of a wx.TextCtrl.)
3345
3346
3347
3348
3349
33502.6.0.0
3351-------
3352* 26-Apr-2005
3353
3354wxMSW: Fixed wx.TransientPopupWindow (and therefore wx.TipWindow) to
3355auto-dismiss when the mouse is clicked outside of the popup like it is
3356supposed to.
3357
3358wxMSW: Fixed bug #1167891 wx.Notebook display problem with wx.NB_MULTILINE.
3359
3360wxMSW: Fixed bad cliping of hidden windows inside of wx.StaticBox.
3361
3362wxGTK:  The configure flags for selecting GTK+ 1.2.x or 2.x has
3363changed slightly.  It is now --with-gtk[=VERSION] where VERSION is
3364either '1', '2' or 'any'.  The default is '2'.
3365
3366wx.stc.StyledTextCtrl: Added the following methods for alternate ways
3367to set and fetch text from the document buffer.  They work similarly
3368to the existing methods of the same name, except that they don't go
3369through the same string/unicode <--> wxString conversions.  The "Raw"
3370methods will do no conversions at all and in a unicode build of
3371wxPython the strings will be in the utf-8 encoding and in an ansi
3372build no assumption is made about the encoding.  The "UTF8" functions
3373will attempt to always get/set utf-8 text, which it will always be
3374able to do in a unicode build, and in an ansi build it will depend on
3375the content of the utf-8 used being compatible with the current
3376encoding, (you'll get an exception otherwise.)
3377
3378===================  ====================
3379AddTextRaw           AddTextUTF8
3380InsertTextRaw        InsertTextUTF8
3381GetCurLineRaw        GetCurLineUTF8
3382GetLineRaw           GetLineUTF8
3383GetSelectedTextRaw   GetSelectedTextUTF8
3384GetTextRangeRaw      GetTextRangeUTF8
3385SetTextRaw           SetTextUTF8
3386GetTextRaw           GetTextUTF8
3387AppendTextRaw        AppendTextUTF8
3388===================  ====================
3389
3390
3391wx.stc.StyledTextCtrl:  Added the StyleSetFontEncoding(style, enc)
3392method that allows you to set the encoding to be used by the font for
3393a particular style.
3394
3395wxMac: Fixed wx.ComboBox to forward the EVT_CHAR, EVT_KEY_DOWN,
3396EVT_KEY_UP and EVT_TEXT events from its embedded text control.
3397
3398wxMac: Corrected refresh bugs in wxGrid.
3399
3400XRCed: Updated to version 0.1.5.
3401    * Added wxWizard, wxWizardPageSimple (only from pull-down menu).
3402    * Hide command for test window.
3403    * Replacing classes works better.
3404    * Added Locate tool.
3405
3406
3407
3408
34092.5.5.1
3410-------
3411* 8-Apr-2005
3412
3413wxMSW: Fixed bug #1022383, 'several ComboBoxes appear selected'
3414
3415wx.grid.Grid: Fixed bug #1163384.  Moved the code that handles
3416activating the cell editors to a EVT_CHAR event handler.  This is done
3417so the character inserted into the editor will be the "cooked" char
3418value (including accented or composed keys) rather than the raw code
3419provided by the EVT_KEY_DOWN event.
3420
3421Added orient parameter to wx.MDIParentFrame.Tile()
3422
3423wxMSW: wxTextCtrl with wx.TE_RICH2 style now uses RichEdit 4.1 if
3424available.
3425
3426Added GetCount, GetCountRGB, and GetCountColour methods to
3427wx.ImageHistogram.
3428
3429wxMSW: wx.Window.Refresh changed to explicitly refresh all children as
3430well as the parent.  Previously it was implicitly done because parents
3431did not clip their children by default.  Now that they always clip
3432children then Refresh needed to be fixed to do a recursive refresh.
3433This also fixes the Freeze/Thaw problems that some people had with
34342.5.4.1.
3435
3436wx.SplitterWindow: Send EVT_SPLITTER_SASH_POS_CHANGED only once after
3437end of dragging and not after each CHANGING event (modified patch
3438#1076226)
3439
3440wx.glcanvas.GLCanvas: applied patch fixing problems with X server
3441crash when using nVidia cards (patch 1155132)
3442
3443wx.lib.mixins.listctrl: Patches from Toni Brkic:
3444   * Bugfix for TextEditMixin when the view can't be scrolled
3445   * Enhancement for ListCtrlAutoWidthMixin, allowing it to manage
3446     the width of any column.
3447
3448wxMac: removal and reusing toolbar tools like the other platforms is
3449now possible.
3450
3451wxMac: Correct radio tool selection after calling Realize a 2nd time.
3452
3453wxMSW: Applied patch #1166587, removes all flicker from wx.StaticBox
3454
3455Added wx.lib.foldpanelbar, Andrea Gavana's port of Jorgen Bodde's C++
3456wxFoldPanelBar classes to Python.
3457
3458wxGTK: Applied patch #1173802, reimplementation of GtkFileChooser
3459wxFileDialog by Mart Raudsepp.  Note that this new file dialog is only
3460used on GTK2 >= 2.4.  For earlier GTK2 versions and GTK1 then the
3461older generic file dialog is used.
3462
3463wxMSW: fixes to static box borders calculations (finalizes patch
3464#1166587)
3465
3466wx.Image: Use Python's buffer interface API for all image data and
3467alpha Set/Get methods and the ImageFromData* constructors.  They all
3468still copy the buffer except for SetDataBuffer and SetAlphaBuffer, but
3469this gives more flexibility on where the data can come from.
3470
3471Added MDI support to XRC
3472
3473Added wx.animate module and a demo.  The wx.animate module provides a
3474control that is able to display an animated GIF file.
3475
3476wx.lib.plot.py: Applied patch from Werner F. Bruhin that allows either
3477vertical and/or horizontal gridlines.
3478
3479wxMSW: Extra space given for top border of wx.StaticBoxSizer so the
3480upper line is not cliped when there is no label.
3481
3482wxMSW: Restored old behaviour of wx.StaticBox.SetBackgroundColour only
3483affecting the label.
3484
3485wxMSW: Fixed missing EVT_RIGHT_DOWN and EVT_TREE_ITEM_RIGHT_CLICK
3486events in a wx.TreeCtrl.
3487
3488Added wx.GetTopLevelWindows() function which returns a copy of the
3489list of top-level windows that currently exist in the application.
3490
3491Updated docview library modules and sample apps from the ActiveGrid
3492folks.
3493
3494Added the ActiveGrid IDE as a sample application.
3495
3496
3497
3498
34992.5.4.1
3500-------
3501* 16-Mar-2005
3502
3503wx.Sizer Add, Insert, and Prepend functions now return a reference to the
3504wx.SizerItem that was added to the sizer, and the wx.SizerItem has a
3505GetRect accessor to give the position of the item on the parent window.
3506
3507Added wx.Sizer.GetItem method which returns the wx.SizerItem for the given
3508wx.Window, wx.Sizer or position index.
3509
3510wxMSW: wx.RadioButtons in the same group no longer have to be
3511consecutive (there may be intervening controls). Without this fix, an
3512out-of-sync assert is generated when clicking on a radio button and
3513then calling GetValue().
3514
3515Some XRC changes:
3516    - Added 'icon' property to wxFrame and wxDialog
3517    - No longer ignores menu bitmaps on non-MSW platforms
3518    - Notebook page bitmaps are now supported
3519    - added system colours and fonts support (based on patch #1038207)
3520
3521wxMSW: fix for [ 1052989 ] TextCtrl.SetBackgroundColour(wx.NullColour)
3522bug.
3523
3524Added wx.PasswordEntryDialog analagous to wx.TextEntryDialog, allows
3525detecting entering an empty string vs. cancel unlike the
3526wx.GetPasswordFromUser dialog function.
3527
3528OGL patch from Shane Holloway:
3529
3530    Two simple problems found in the new python ogl code.  First is
3531    the patch for _canvas.py.  Essentially::
3532
3533        dx = abs(dc.LogicalToDeviceX(x - self._firstDragX))
3534        dy = abs(dc.LogicalToDeviceY(y - self._firstDragY))
3535
3536    was incorrect because (x,y) and (self._firstDragX,
3537    self._firstDragY) are both already in Logical coordinates.
3538    Therefore the difference between the two is also in logical
3539    coordinates, and the conversion call is an error.  This bug
3540    surfaces when you have OGL on a scrollwin, and you are far from
3541    the origin of the canvas.
3542
3543    The second change in _composit.py basically removes the assumption
3544    that the child is in both self._children and self._divisions.
3545    Causes many problems when it's not.  ;)
3546
3547Fixed GetSaveData and SetSaveData in wx.lib.multisash to not depend on
3548the default way that class objectss are converted to strings.
3549
3550Fixed problem in StyledTextCtrl.Set[HV]ScrollBar that could leave the
3551internal scrollbar visible.
3552
3553Added wx.StandardPaths which provides methods for determining standard
3554system paths for each platform.
3555
3556wxMSW: The window background is now only erased by default if the
3557background colour or background mode has been changed.  This better
3558allows the default system themed behaviour to show through for
3559uncustomized windows.  Explicit support added for using the correct
3560theme texture for wx.Notebook pages and their children.
3561
3562wx.Image: Added support for alpha channels in interpolated and
3563non-interpolated image rotation.  Added ConvertAlphaToMask helper
3564method for turning shades of grey into shades of alpha and a colour.
3565
3566wxGTK2: Reimplemented DoDrawRotatedText() by way of a rotation of an
3567alpha blended text bitmap.  It would be better if Pango could draw
3568directly into an wxImage (as FreeType can,) but that is for later...
3569
3570Added wrappers and a demo for the wx.MediaCtrl class, which can play
3571various forms of audio/video media using native codecs install on the
3572system.  So far it is only implemented for Windows and OSX.
3573
3574wxGTK: Patch applied for Freeze()/Thaw() for wxTextCtrtl.
3575
3576Added "gravity" for splitter window (patch 1046105). Gravity is a
3577floating-point factor between 0.0 and 1.0 which controls position of
3578sash while resizing the wx.SplitterWindow.  The gravity specifies
3579how much the left/top window will grow while resizing.
3580
3581wxMSW: wx.Slider's C++ implementation rewritten to be more
3582maintainable and hopefully less buggy.  The position of the labels has
3583also been changed in order to better comply with Microsoft's examples
3584of how to use the control.
3585
3586wxMSW:  Fix wx.TreeCtrl to end label editing if the control loses
3587focus (a slightly modified patch 1084592.)
3588
3589Added wx.EXEC_NODISABLE flag for wx.Execute, which will prevent all
3590the app's windows being disabled while a synchronous child process is
3591running.
3592
3593wxMSW: Much work to correct painting (or leaving transparent) of
3594control backgrounds, properly using background themes on XP, etc.
3595
3596Fixed a circular reference problem with wx.Timer.  It will now
3597completely cleanup after itself when the last reference to the timer
3598is removed.  If you were previously using timer.Destroy() to cleanup
3599your timers it will no longer work.  Instead you should hold a
3600reference to the timer and then del the reference when you are
3601finished with the timer.
3602
3603Updated to 1.3.24 of SWIG.  All of my big patches have been applied to
3604the main SWIG source tree, but unfortunatly there were also some bugs
3605added that affected the wxPython build and a few details in my
3606original patch were changed/removed, so we are still not free of
3607patches.  A new patch for SWIG is located in the wxPython/SWIG
3608directory of the wxPython source tree.  SWIG 1.3.24 plus this patch
3609should be used by anyone who is making custom modifications to
3610wxPython's .i files, or building their own extension modules or
3611etc. that need to interact with the wxPython swigged types.  For the
3612morbidly curious, here are a few more details:
3613
3614* Since it is now possible easily and simply share the SWIG type
3615  tables across modules I reverted to always using the stock SWIG
3616  runtime instead of my slightly hacked up version of it exported
3617  via the wxPython C API.
3618
3619* The %name directive is now deprecated so I replaced most uses of
3620  it with a custom %Rename macro that uses %rename internally.
3621  These will evetually need to be replaced with a DocDecl macro
3622  when docstrings are added for those items.
3623
3624* The "this" attribute of all SWIGged classes is no longer a
3625  string containing a "swigified pointer", but rather a custom
3626  built-in type that holds the real C pointer to the object and
3627  the type info.  It can be converted to a string like the old
3628  value using str() or to the long integer value of the pointer
3629  using long().
3630
3631Added SetDefaultPyEncoding and GetDefaultPyEncoding functions which
3632will set/get the encoding used by wxPython to convert string or
3633unicode objects to/from wxString objects.  Previously the default
3634Python encoding was always used, but unless the user had tweaked their
3635sitecustomize.py file it is always "ascii", which would result in
3636errors if the strings contained character codes >= 128.
3637SetDefaultPyEncoding will now allow you to control which encoding will
3638be used to do those conversions.  The default encoding is set to the
3639value of `locale.getdefaultlocale()[1]` when wxPython is first
3640imported.  Please see http://www.alanwood.net/demos/charsetdiffs.html
3641for information on the differences between the common latin/roman
3642encodings.
3643
3644Added wxStdDialogButtonSizer, which is a a special sizer that knows
3645how to order and position standard buttons in order to conform to the
3646current platform's standards.  You simply need to add each `wx.Button`
3647to the sizer, and be sure to create the buttons using the standard
3648ID's.  Then call `Realize` and the sizer will take care of the rest.
3649
3650wxMSW Toolbar: pass correct tool id (and not always -1) to the
3651EVT_TOOL_RCLICKED handler
3652
3653wxGTK: Applied patch for combo box SELECTED events (no longer get
3654lots of surplus events)
3655
3656wxGTK: Applied patch for proper menu highlight colour detection in
3657wx.SystemSettings.
3658
3659wxGTK: Commited scrollbar patch #1093339 which sends lineup, linedown
3660events based on intercepting the mouse down events.
3661
3662wxGTK: Applied patch #1102789 which solved conflicts between wxWidgets
3663and GTK+'s context menu code.
3664
3665wxGTK: Applied patch #1100327 for correct feedback from DND actions
3666(not all actions are allowed).
3667
3668Fixed memory leak in wxGrid::UpdateAttr[Rows][Or][Cols] (patch 1104355)
3669
3670For efficiency reasons, text controls no longer set the string for
3671each text updated event, but rather query for the string value only
3672when GetString is called from an event handler.
3673
3674Added wx.SL_INVERSE style which will cause wx.Slider to invert the min
3675and max ends of the slider.
3676
3677Several patches applied, such as #1111174, #1110252 and others, that
3678make the generic wx.TreeCtrl (used on wxGTK and wxMac) be more
3679conistent with the wxMSW native wx.TreeCtrl.
3680
3681XRCed:
3682    * Edit->Locate command (Ctrl-L) for quick selection of items.
3683      Works with event-handling controls (buttons, text fields) but
3684      not with labels/sizers.
3685    * Some improvements: relative paths for files supplied as command-
3686      line argument work correctly, notebook panels are highlighted
3687      better.
3688
3689wxMac: Fixed a long-standing issue where wxSlider controls with a
3690hardcoded size would misplace their labels behind the slider control.
3691
3692wx.HtmlListBox fixed so calling RefreshLine(s) will cause the data for
3693that line to be refetched from the overridden methods in the derived
3694class.
3695
3696The default DoGetBestSize now includes the difference (if any) between
3697the client size and total size of the window, (such as the size of
3698borders.)  Code that sets the client size using the best size, or that
3699added extra space to sizers to compensate for this bug may need to be
3700changed.
3701
3702Can suppress themed notebook pages with the wxNB_NOPAGETHEME style or
3703setting system option msw.notebook.themed-background to 0.
3704
3705wxSyledTextCtrl updated to use Scintilla 1.62.
3706
3707Can now set the msw.window.no-clip-children system option to 1 to
3708eliminate weird refresh behaviour (delays between a window being
3709erased and repainted, giving a ghostly gradual-redraw effect). May be
3710a temporary 'fix' until properly fixed before 2.6.
3711
3712wxMac:  Toolbar is now more native looking with borderless toolbar
3713buttons.
3714
3715wxMac: Switched wx.Bitmap to use newer Quartz object types and APIs
3716internally.  This results in faster display and better alpha support.
3717
3718Added wx.DatePickerCtrl.
3719
3720wx.html.HtmlWindow now supports background images.
3721
3722Added wx.lib.gestures module from Daniel Pozmanter which supports
3723using Mouse Gestures in an application.
3724
3725wxGTK2: ENTER and LEAVE mouse events are now sent for multi-line text
3726controls.
3727
3728wxMSW:  "Alt" key (VK_MENU) now results in WXK_ALT keyboard event, not
3729WXK_MENU
3730
3731Added modules from Peter Yared and Morgan Hua that implement the wx
3732Doc/View framework in pure Python code.  See wx.lib.docview for the
3733base implementation and wx.lib.pydocview for Python-specific
3734extensions.  There are also a couple sample applications located in
3735samples/docview.
3736
3737Added GetBitmap, GetIcon to wx.ImageList.
3738
3739wxGTK wx.Button.SetLabel no longer invalidates/resets the font.
3740
3741wx.Sizer.AddWindow, AddSizer, AddSpacer and etc. have now been
3742undeprecated at the request of Riaan Booysen, the Boa Constructor team
3743lead.  Boa needs them to help keep track of what kind of item is being
3744managed by the sizer.  They are now just simple compatibility aliases
3745for Add, and etc.
3746
3747The old C++ version of the OGL lib is no longer built by default.  Use
3748the Python version in the wx.lib.ogl package instead.
3749
3750The wx.iewin module is no longer built by default.  You can use the
3751wx.lib.iewin version instead.
3752
3753Fixed wx.BufferedPaintDC for scrolled windows to work whether the
3754buffer is covering only the client area or the full virtual area of
3755the scrolled window.  By default it will assume that only the client
3756area is covered.  This is different than the old behavior so to
3757indicate that the entire virtual area is covered simply add a
3758style=wx.BUFFER_VIRTUAL_AREA parameter.
3759
3760wx.gizmos.TreeListCtrl:  Add support for the EVT_TREE_ITEM_GETTOOLTIP
3761event.
3762
3763Added Resize, SetRGBRect, Size, and GetOrFindMaskColour methods to
3764wx.Image.
3765
3766Added wx.Rect.IsEmpty
3767
3768wxGTK:
3769    - Corrected wx.ListBox selection handling
3770    - Corrected default button size handling for different themes
3771    - Corrected splitter sash size and look for different themes
3772    - Fixed keyboard input for dead-keys
3773
3774
3775
3776
37772.5.3.1
3778-------
3779* 9-Nov-2004
3780
3781wxMac focus and border refreshes corrected.
3782
3783Updated internal PNG library.
3784
3785wxMac fix for metal appearance on wx.ToolBar.
3786
3787wx.grid.Grid fix allowing DoGetBestSize to be called before CreateGrid
3788(which means that a min size doesn't need to be specified.)
3789
3790wxMac fix for not sending a native click to a control if it is not
3791enabled (does an enable itself)
3792
3793Added wx.lib.ogl.DrawnShape, and fixed various little bugs in the new
3794OGL.
3795
3796Added support to XRC and XRCed for the 3-state checkbox flags and also
3797for wx.ToggleButton.  Updated the generic window styles supported by
3798XRCed.
3799
3800It is now possible to create "stock" buttons.  Basically this means
3801that you only have to provide one of the stock IDs (and either an
3802empty label or a label that matches the stock label) when creating the
3803button and wxWidgets will choose the stock label to go with it
3804automatically.  Additionally on the platforms that have a native
3805concept of a stock button (currently only GTK2) then the native stock
3806button will be used.  For example, the following will result in a
3807button with "Cancel" as the label and if run on wxGTK2 then there will
3808also be an image of a red X::
3809
3810       b = wx.Button(parent, wx.ID_CANCEL)
3811
3812
3813Added wx.lib.ticker.Ticker class from Chris Mellon.
3814
3815Fix some incorrect clipping regions in wxSTC on wxGTK.
3816
3817Added wrapper for wx.grid.Grid.GetOrCreateCellAttr.
3818
3819Removed my copy of distutils from the wxPython source tree.  Now that
3820I am no longer doing builds on Python 2.1 the newest distutils is no
3821longer needed.  (There is still one small bug in Python 2.2 distutils
3822on win32, but it is easily worked around.) This sovles the problem of
3823incorrect builds on some systems where the system installed distutils
3824has been patched to behave slightly differently, for example SuSE on
3825x86_64 or Chandler's build.
3826
3827Updated to SWIG 1.3.22 (plus my patch.)  See wxPython/SWIG/README.txt
3828in the source tree if you need to use SWIG when building your own copy
3829of wxPython, or other extension modules that need to integrate with
3830the wxPython modules.
3831
3832Added wx.Frame.RequestUserAttention which, if the platform suports it,
3833will do something (such as flash the task bar item) to suggest to the
3834user that they should look at that window.
3835
3836"Fixed" wx.grid.Grid.SetDefaultEditor and SetDefaultRenderer by making
3837them register the editor or renderer for the "string" data type.
3838
3839Added depth param to wx.Image.ConvertToBitmap.
3840
3841Extended the wx.calendar.CalendarCtrl class with methods that get/set
3842a Python datetime or date object.  (These will only work with Python
38432.3+) The methods are PySetDate, PyGetDate, PySetLowerDateLimit,
3844PySetUpperDateLimit, PySetDateRange, PyGetLowerDateLimit, and
3845PyGetUpperDateLimit.  Also, CalendarEvent was extended with PySetDate
3846and PyGetDate methods.
3847
3848wxMSW: SetBackgroundColour on a wx.Choice or a wx.ComboBox will now
3849also set the colour of the dropdown.
3850
3851wxMac: MessageDialog now supports wx.NO_DEFAULT style
3852
3853wxMSW: added AssociateHandle and DissociateHandle to wx.Window
3854
3855wxMac: fix for toolbar tooltips
3856
3857wx.Sizer.Show (and Hide) now take an optional parameter specifying if
3858the item to be shown should be searched for recursivly in subsizers,
3859and return a boolean value indicating if the item was found.
3860
3861wxMSW: fixed MaximizeEvent generation in wx.Frame
3862
3863wxMSW: fixed sending duplicate EVT_COMBOBOX events
3864
3865Smoother time estimation updates in wx.ProgressDialog (patch 992813)
3866
3867Made wx.Listbook events more consistent with wx.Notebook ones (patch
38681001271)
3869
3870Fixed rounding errors in variable status bar panes widths computation
3871(patch 1030021)
3872
3873Added possibility to specify printer bin (patch 910272)
3874
3875wxMSW: fixed wx.ListCtrl's SetWindowStyleFlag() to not remove
3876WS_VISIBLE; also refresh the control automatically (closes bug
38771019440)
3878
3879Added wx.Choicebook, yet another notebook-like control.
3880
3881wxMSW: Make radiobutton tab behaviour the same on MSW as in standard
3882MSW app, i.e. tab into the activated, not necessarily the first radio
3883button.
3884
3885Added limited support for wxEventLoop (you can't derive from a
3886wx.PyEventLoop version yet...)  Updated and moved the sample showing
3887how to replace the MainLoop to samples/mainloop/mainloop.py.
3888
3889The C++ xrc lib has been moved out of contrib and into the core, so it
3890is always built by default.  wxPython's build has also changed
3891accordingly and will build the xrc module as part of the core set of
3892modules built by default.  If you were axplicitly using BUILD_XRC then
3893it will no longer be recognized as a build option, otherwise you
3894should notice no difference.
3895
3896wxMac: Fixed radio toolbar buttons to correctly untoggle the others
3897when a new one is selected.
3898
3899wxMac: Fixed GetLineLength and GetLineText for MLTE text controls
3900
3901wxMac: wx.TaskBarIcon is implemented by allowing you to change the
3902app's icon on the Dock and also specifying a menu that should be
3903merged with the normal dock popup menu.  See the MigrationGuide for
3904more details and a warning.
3905
3906Added wx.TopLevelWindow.IsActive() which tells you if the frame or
3907dialog is or containts the active window with the keyboard focus.
3908
3909Added ability to create a font based on pixel size rather than point
3910size via the FontFromPixelSize constructor.
3911
3912Updated the Scintilla used by StyledTextCtrl to version 1.61
3913
3914Improved image HitTest for TreeListCtrl.
3915
3916Added wx.App.IsMainLoopRunning.
3917
3918wxGTK: Make wxComboBox spit out a bit fewer surplus events when
3919holding down the mouse button.
3920
3921wxGTK: Enable key based navigation through notebook tabs as in the
3922native control with Left and right keys. Support for vetoing.
3923
3924FloatCanvas updates from Chris Barker
3925
3926PyPlot updates from Gordon Williams:
3927   - Added bar graph demo
3928   - Modified line end shape from round to square.
3929   - Removed FloatDCWrapper for conversion to ints and ints in
3930     arguments
3931   - Imported modules given leading underscore to name.
3932   - Added Cursor Line Tracking and User Point Labels.
3933   - Demo for Cursor Line Tracking and Point Labels.
3934   - Size of plot preview frame adjusted to show page better.
3935   - Added helper functions PositionUserToScreen and
3936     PositionScreenToUser in PlotCanvas.
3937   - Added functions GetClosestPoints (all curves) and GetClosestPoint
3938     (only closest curve) can be in either user coords or screen
3939     coords.
3940
3941MaskedEdit updates from Will Sadkin:
3942    - Added '*' mask char that means "all ansii chars" (ords 32-255)
3943    - Added proper unicode support to masked controls and wx.tools.dbg
3944    - Fixed two reported missing import bugs introduced by package
3945      creation
3946    - Converted masked package doc strings to reST format for better
3947      epydoc support
3948    - lots of doc string improvements and function hiding to better
3949      reflect package's public contents.
3950
3951Restructured the installer packages slightly to help facilitate having
3952multiple versions of wxPython installed at the same time.  See the
3953Migrarion Guide for more information.
3954
3955Applied patch from Pim Van Heuven that modifies 4 files:
3956    - wxPython/demo/ListCtrl_edit.py (new demo)
3957    - wxPython/demo/Main.py (include new demo in demo app)
3958    - wxPython/wx/lib/mixins/listctrl.py (several improvements to
3959      TextEditMixin)
3960    - wxPython/wx/lib/wxpTag.py (some small fixes)
3961
3962Added (thanks to Kevin Ollivier!) wrappers for wx.WebKitCtrl for the
3963OSX build.  Other platforms will raise an exception if you try to use
3964it.
3965
3966wxPython on OSX can now be built in Unicode mode, can support multiple
3967version installs, and comes with an uninstaller script.
3968
3969
3970
3971
3972
39732.5.2.8
3974-------
3975* 27-Aug-2004
3976
3977Predominantly a bug-fix release:
3978
3979* Fixed fatal error due to improper wrapping of wx.FSFile.
3980
3981* Fixed return type of EditableListBox.GetListCtrl
3982
3983* Give generic tree and list controls a DoGetBestSize so they play
3984  nicer with sizers when there is no minimal size.
3985
3986* Some tweaks in the demo and samples to correct layout, some
3987  flicker problems, and namespace use.
3988
3989* Add wx.Image.ConvertAlphaToMask
3990
3991* Minor corrections in wx.lib.dialogs
3992
3993* wx.FileHistory constructor now accepts the documented 2nd
3994  parameter.
3995
3996* Corrections for exceptions in the new ogl
3997
3998* Fixed XRCed to not use reparenting of windows to implement caching
3999  of property panels, since Reparent on wxMac is not implemented.
4000
4001* Add support for wxTAB_TRAVERSAL to the XRC handler for
4002  wxScrolledWindow.
4003
4004* Add support for all wxListBox styles to the XRC handler for
4005  wxCheckListBox.
4006
4007* Fix for wx.Listbook.DeleteAllPages to really delete everything.
4008
4009* wxGTK2 now supports alpha blended bitmap drawing
4010
4011* Made wx.grid.Grid play nicer with sizers.
4012
4013* etc.
4014
4015
4016
4017
40182.5.2.7
4019-------
4020* 14-Aug-2004
4021
4022wx.ADJUST_MINSIZE is now the default behaviour for window items in
4023sizers.  This means that the item's GetMinSize and/or GetBestSize will
4024be called when calculating layout and the return value from that will
4025be used for the minimum size used by the sizer.  The wx.FIXED_MINSIZE
4026flag was added that will cause the sizer to use the old behaviour in
4027that it will *not* call the window's methods to determine the new best
4028size, instead the minsize that the window had when added to the sizer
4029(or the size the window was created with) will always be used.  Please
4030see the Sizers section in the Migration Guide for more details.
4031
4032Added new MaskedEditControl code from Will Sadkin.  The modules are
4033now locaed in their own sub-package, wx.lib.masked.  Demos updated.
4034
4035The changes that implemented the incompatible wx.DC methods in 2.5.1.5
4036have been reverted.  The wx.DC methods are now compatible with the 2.4
4037implemetation.  In addition a set of renamed methods have been added
4038that take wx.Point and/or wx.Size objects instead of individual
4039parameters.
4040
4041Added wx.lib.mixins.listctrl.TextEditMixin, a mixin class that allows
4042all columns of a wx.ListCtrl in report mode to be edited.
4043
4044Deprecated the wx.iewin module.
4045
4046Deprecated the wx.Sizer.AddWindow, AddSizer, AddSpacer methods as well
4047as their Insert* and Prepend* counterparts.
4048
4049Added a generic StaticBitmap class in wx.lib.statbmp for the same
4050reasons that stattext was created, so it could be mouse sensitive on
4051all platforms like normal windows.  Also updated stattext.py and
4052buttons.py to handle attribute (font & colour) defaults and
4053inheritance the new way.  If you have custom controls of your own you
4054should review stattxt.py or one of the others to see how it is to be
4055done.
4056
4057wx.InitAllImageHandlers is now an empty function that does nothing but
4058exist for backwards compatibility.  The C++ version is now called
4059automatically when wxPython is initialized.  Since all the handlers
4060are included in the wxWidgets shared library anyway, this imposes only
4061a very small amount of overhead and removes several unneccessary
4062problems.
4063
4064Replaced wx/lib/pubsub.py with a version that uses weak references to
4065track the subscribers, plus other fixes/additions.  Thanks go to
4066Oliver Schoenborn and Robb Shecter.
4067
4068wxGTK now uses gtk_init_check so wxPython can raise an exception if
4069there is no DISPLAY available or other initializaion problem.
4070
4071wx.GetKeyState now has an implementation for wxGTK and is able to
4072detect the up/down or toggle state of modifier and toggle keys.
4073
4074The LC_NUMERIC locale is now reset back to "C" (compatibility) when
4075running on wxGTK to work around the fact that GTK requires the locale
4076to be set to the system settings but Python depends on LC_NUMERIC
4077remaining compatible with "C".
4078
4079Switched gizmos.TreeListCtrl to the newer version of the code from the
4080wxCode project.
4081
4082OGL is dead! LONG LIVE OGL!  (Oops, sorry.  A bit of my dramatic side
4083leaked out there...)  The wx.ogl module has been deprecated in favor
4084of the new Python port of the OGL library located at wx.lib.ogl
4085contributed by Pierre Hjälm.  This will hopefully greatly extend the
4086life of OGL within wxPython by making it more easily maintainable and
4087less prone to getting rusty as there seems to be less and less
4088interest in maintaining the C++ version.  At this point there are just
4089a couple minor known compatibility differences, please see the
4090MigrationGuide file for details.
4091
4092EVT_STC_POSCHANGED has been removed as it has been deprecated in
4093Scintilla for several releases now.
4094
4095All the Window and GDI (pen, bitmap, etc.) class constructors and also
4096many toplevel functions and static methods will now check that a
4097wx.App object has already been created and will raise a
4098wx.PyNoAppError exception if not.
4099
4100Added more default args as needed to allow most window types to be
4101constructed with only the parent window arg.  In some cases other args
4102may be required for normal operation, but they can usually be set
4103after construction.
4104
4105Removed the deprecated ErrorDialogs and PythonBitmaps modules.  If you
4106were using these in your apps then please join wxPython-dev and assist
4107with a more modern reimplementation.
4108
4109Added a new version (0.8.3) of FloatCanvas from Chris Barker.  It's now
4110in a subpackage of wx.lib.
4111
4112It is now possible to change the tab traversal order of controls on a
4113panel or dialog.  For details see the new MoveAfterInTabOrder and
4114MoveBeforeInTabOrder methods of wx.Window.
4115
4116Applied (and heavily modified) a patch from Eugene
4117<svip123@fastmail.fm> that allows the sample modules in the demo to be
4118edited and reloaded, all from within the demo.  You can switch back
4119and forth between the default and your edited version, and any errors
4120ocurring upon the reload are reported on the Demo tab.
4121
4122Added a menu item in the demo that will open a PyShell window that has
4123the app and demo frame preloaded in the namespace.  This is another
4124good way to explore and play with the objects in the currently running
4125sample.  For example, load the Button sample and then do the following
4126in the PyShell::
4127
4128        >>> b = frame.demoPage.GetChildren()[0]
4129        >>> for x in range(0, 500, 10):
4130        ...     b.Move((x, 50))
4131        ...     app.Yield(True)
4132        ...     wx.MilliSleep(10)
4133
4134
4135wxGTK: Applied wxNO_BORDER patch (#1098374) for text control and combo
4136box.
4137
4138
4139
41402.5.1.5    (the 'this is *not* a joke' release)
4141-----------------------------------------------
4142* 2-Apr-2004
4143
4144(See also the MigrationGuide file for details about some of the
4145big changes that have happened in this release and how you should
4146adapt your code.)
4147
4148The wxWindows project and library is now known as wxWidgets.  Please
4149see http://www.wxwindows.org/name.htm for more details.  This won't
4150really affect wxPython all that much, other than the fact that the
4151wxwindows.org domain name will be changing to wxwidgets.org, so mail
4152list, CVS, and etc. addresses will be changing.  We're going to try
4153and smooth the transition as much as possible, but I wanted you all to
4154be aware of this change if you run into any issues.
4155
4156
4157Many, many little fixes, changes and additions done as part of the move
4158to wxWidgets 2.5 that I have forgotten about.
4159
4160Added wxMirrorDC.
4161
4162Added wxIconLocation
4163
4164Added Python wrappers and demos for the new wxVScrolledWindow,
4165wxVListBox, and wxHtmlListBox classes.
4166
4167Added wrappers for wxBookCtrl and wxListbook.  wxNotebook now derives
4168from wxBookCtrl.
4169
4170Added Gordon Williams' PyPlot module to the library, available as the
4171wx.lib.plot module.
4172
4173I made a small but important change in the code that aquires the
4174Python Global Interpreter Lock to try and prevent deadlocks that can
4175happen when there are nested attempts to aquire the GIL.
4176
4177The RPMs will now install menu items on Mandrake Linux in
4178Applications/Development/Tools for PyCrust, XRCed, etc.  The RPMs are
4179also installing icons and ``*.desktop`` items in the generic KDE and
4180GNOME locations, but I don't know yet if they are resulting in menu
4181items on non-Mandrake systems.  (It didn't automatically do it on my
4182RH-9 build box but I didn't chase it very far...)  If you have ideas
4183for how to improve the .spec file to work better and/or on more
4184distros please send me a patch.
4185
4186The RPMs are now built on a fairly generic RH-9 box, and I have tested
4187installing them also on my main Mandrake 9.2 box.
4188
4189There are some big changes in the OS X disk image.  The actual
4190Installer package now *only* installs the wxMac dynlibs, wxPython
4191extension modules and Python packages, and also the command-line tool
4192scripts. The remaining items (demo, samples, and application bundles
4193for the Demo, PyCrust and XRCed) are now top-level items in the disk
4194image (.dmg file) that users can just drag and drop to wherever they
4195want to put them.
4196
4197The wxWave class has been renamed to wxSound, and now has a slightly
4198different API.
4199
4200Updated the AnalogClockWindow with many enhancements from E. A. Tacão.
4201
4202wxMac now has wx.ToggleButton!
4203
4204wx.stc.StyledTextCtrl has been updated to version 1.58 of Scintilla.
4205
4206To help with the wx.stc.StyledTextCtrl performance issues on wxMac
4207I've added a SetUseAntiAliasing method (and GetUseAntiAliasing too)
4208that will turn off the use of antialiased fonts in the wxSTC, allowing
4209it to bypass the slow text measuring routines and use the fast and
4210simple one instead.  By default the setting is turned off (on wxMac
4211only.)  When run on OSX the Py* apps have a new item on the Options
4212menu for controlling this setting if you would like to experiment with
4213it.
4214
4215Updated wx.lib.calendar with many fixes and enhancements from Joerg
4216"Adi" Sieker.
4217
4218Added wx.Display and wx.VideoMode.
4219
4220AppleEvents can be handled by overriding wx.App methods MacOpenFile,
4221MacPrintFile, MacNewFile, and MacReopenApp.
4222
4223Added wx.PlatformInfo which is a tuple containing strings that
4224describe the platform and build options of wxPython.  See the
4225MigrationGuide for more details.
4226
4227Created a new extension module "activex" from Lindsay Mathieson's
4228newest wxActiveX_ class.  (The existing iewin module used an older
4229version of this code, but only exposed the wxIEHtmlWin class.)  This
4230new module will (in theory ;-) ) allow you to host arbitrary ActiveX
4231controls in a wx.Window, **without** requiring the use of the win32com
4232and other PyWin32 modules!  This should eliminate the cronic problems
4233that have resulted from minor mismatches in how PyWin32 handles the
4234GIL and tstate when making callbacks, etc.  The older iewin module
4235will be left in this release as the new stuff is not fully backwards
4236compatible, but you should migrate your code to the new IEHtmlWindow
4237in wx.lib.iewin, so the old one can be eventually removed.
4238Additionally, I've always considered that the wx.lib.activexwrapper
4239module is an ugly hack that I only included in the lib because I
4240couldn't figure out anything better.  Well now we have something that,
4241if it isn't already, has the potential to be better.  So consider
4242migrating away from using activexwrapper as well.  Please see the
4243MigrationGuide for more details on using the new module.
4244
4245.. _wxActiveX: http://members.optusnet.com.au/~blackpaw1/wxactivex.html
4246
4247Floats are allowed again as function parameters where ints are expected.
4248
4249
4250
4251
42522.4.2.4
4253-------
4254* 1-Oct-2003
4255
4256Use wxSTC in the demo for displaying the soucre code of the samples.
4257
4258Lots of bug fixes and such from the wxWindows folks.
4259
4260Added wxPython.lib.newevent from Miki Tebeka.  Its usage is
4261demonstrated in the Threads sample in the demo.
4262
4263Updates to wxMaskedEditCtrl.
4264
4265Added wxMaskedNumCtrl.
4266
4267Added Chris Barker's FloatCanvas.
4268
4269
4270
42712.4.1.2
4272-------
4273* 19-Jun-2003
4274
4275Added wxScrolledPanel from Will Sadkin
4276
4277Added SetShape method to top level windows (e.g. wxFrame.)
4278
4279Changed wxSWIG to not generate Python code using apply, (since it will
4280be deprecated in the future) wxSWIG will use ``spam(*args, **kw)`` syntax
4281instead.  Also changed the generated __repr__ methods to be a bit more
4282informative.
4283
4284Made the version number information more robust and uh, informative.
4285Also added asserts to check that the major.minor versions of wxPython
4286and wxWindows match.
4287
4288Added the new wx "renamer" package that will dynamically import from
4289the wxPython package and rename wxFooBar --> FooBar.  That means that
4290people can do imports without ``"import *"`` and can use names like
4291wx.Frame instead of wx.wxFrame.  This is phase 1 of a full transition
4292to the new namespace.
4293
4294Updated Scintilla to 1.52.  I also changed it to use wxListCtrl
4295instead of wxListBox for the AutoComplete window, added the ability to
4296use custom bitmaps in the margin and in the AutoComplete windows, and
4297worked out how to do proper clipping of child windows on wxGTK.
4298
4299Patrick O'Brien's PyCrust package has been renamed to Py and now
4300includes several new tools.  As part of the change the location of the
4301pacakge has changed as well, it is now accessible as "from wxPython
4302import py" (or "from wx import py" using the new namespace.)  There
4303are still some transition modules in the wxPython.lib.PyCrust package
4304that will issue a warning and then import what is needed from the new
4305package.  These will be removed in a future release.
4306
4307Added __nonzero__ method to wxTreeItemId, wxBitmap, wxImage, wxFont,
4308and most other classes that have an Ok or IsOK method.  This allows
4309code like "if obj: ..." to be the same as "if obj.IsOk(): ..."
4310
4311Toolbars on wxMac can now have controls on them.
4312
4313Added wxPython.lib.analogclock module based on samples that were
4314passed back and forth on wxPython-users a while back.
4315
4316Added masked edit controls (wxPython.lib.maskededit) by Jeff Childers
4317and Will Sadkin.  Updated wxTimeCtrl to use MaskedEdit.
4318
4319When the __class__ of a dead object is replaced with _wxPyDeadObject
4320the __del__ of the original class is now called first.
4321
4322Added wxTreeListCtrl.  (Looks like a wxTreeCtrl embedded in a
4323wxListCtrl, but actually is just giving multiple columns to a
4324wxTreeCtrl.)
4325
4326Added wxFutureCall, a subclass of wxTimer that makes it easy to delay
4327a call to any Python callable object.
4328
4329Added wxPy versions of wxPrintPreview, wxPreviewFrame, and
4330wxPreviewControlBar so they can be derived from in Python and be able
4331to override the C++ virtual methods.
4332
4333Simplified how the wxSizer methods are wrapped, changed the name of
4334the "option" parameter to "proportion" to match the docs ("option" is
4335still accepted for compatibility, but this will go away in a future
4336release,) SetItemMinSize can now take a wxSize (or 2-tuple) parameter,
4337and Spacers can be specified with a wxSize (or 2-tuple) parameter
4338
4339Added wxCursorFromBits.
4340
4341
4342
4343
4344
43452.4.0.7
4346-------
4347* 24-Mar-2003
4348
4349Gave up on generating a warning upon the use of the old true/false or
4350TRUE/FALSE values.
4351
4352Fixed wxGenericTreeCtrl (used on wxGTK and wxMac for wxTreeCtrl) so
4353that it can successfully handle lots of nodes instead of overflowing
4354when the virtual height of the widget overflowed a 16-bit value.
4355
4356Fixed the typemap that converts strings to wxColours to also accept
4357unicode.
4358
4359Fixed problem where the wrong class name could sometimes be used for
4360OOR.
4361
4362Fixed an interpreter lock problem in the __eq__ and __ne__ methods in
4363wxSize and etc.
4364
4365Updated PyCrust to version 0.9
4366
4367Instead of always logging C++ assertions, added wxPYAPP_ASSERT_LOG
4368flag to turn it on.  In most cases turning it into an exception (the
4369default behavior) is enough.  See below in the 2.3.4.1 notes for more
4370details.
4371
4372
4373
4374
43752.4.0.6 (a.k.a. the I'm so stupid release)
4376------------------------------------------
4377* 11-Mar-2003
4378
4379The new deprecation class for the old true/false symbols can now be
4380returned from OnInit.  And I promise to be sure I am testing what I
4381think I am testing in the future...
4382
4383
4384
43852.4.0.5 (a.k.a. the blame it on Kevin release)
4386----------------------------------------------
4387* 7-Mar-2003
4388
4389A few little but annoying bug fixes.
4390
4391Updated pycolourchooser.
4392
4393Updated to 0.9b of PyCrust.
4394
4395
4396
43972.4.0.4
4398-------
4399* 7-Mar-2003
4400
4401Added missing wxRect methods
4402
4403Add OOR support for wxApp objects too.
4404
4405Added wxCursorFromImage, which works on wxMSW and wxGTK so far.
4406
4407All platforms now send EVT_DESTROY_WINDOW.  Be warned that at the time
4408the event is sent the window is in the process of being deconstructed,
4409and so calling some (most?) methods of the window itself may cause
4410problems.
4411
4412Fixed SF Bug #689481, a method in the OGL wrappers was using the wrong
4413return type.
4414
4415Fixed SF Bug #689958, an endless loop in printout.py.
4416
4417Added EVT_WINDOW_CREATE_ID and EVT_WINDOW_DESTROY_ID so these events
4418can be associated with a specific window ID and more easily caught by
4419the parent window.
4420
4421Fixed copy-paste error in wxListCtrl.GetFirstSelected.
4422
4423Added missing Init method (and an overloading wrapper) to wxLocale
4424wrapper.
4425
4426Added a wxBitmap.SetMaskColour convenience method.
4427
4428Changed how the dynamic event tables (used for all Python wx classes,
4429C++ wx classes typically use static event tables) are searched such
4430that they behave from a Python perspective more like the static tables
4431in C++.  Namely that if there are identical event bindings in a base
4432Python class and a derived Python class that the one in the derived
4433class will be found first and that if Skip is called that the one in
4434the base class will still be found instead of skipping directly to the
4435static stable in the C++ class.
4436
4437Switched to using True/False in the wxPython lib and demo instead of
4438true/false or TRUE/FALSE to prepare for the new boolean type and
4439constants being added to Python.  Added code to wx.py to test for the
4440existence of the new constants and to create suitable values if not
4441present.
4442
4443Added some static wxApp functions that help with integration with the
4444Mac UI.  They are no-ops on other platforms so it doesn't hurt to
4445always call them.  The functions are::
4446
4447       wxApp_GetMacDefaultEncodingIsPC
4448       wxApp_GetMacSupportPCMenuShortcuts
4449       wxApp_GetMacAboutMenuItemId
4450       wxApp_GetMacPreferencesMenuItemId
4451       wxApp_GetMacExitMenuItemId
4452       wxApp_GetMacHelpMenuTitleName
4453       wxApp_SetMacDefaultEncodingIsPC
4454       wxApp_SetMacSupportPCMenuShortcuts
4455       wxApp_SetMacAboutMenuItemId
4456       wxApp_SetMacPreferencesMenuItemId
4457       wxApp_SetMacExitMenuItemId
4458       wxApp_SetMacHelpMenuTitleName
4459
4460Refactored, enhanced and added capabilities for the DrawXXXList
4461functions, inspired by code from Chris Barker.
4462
4463The wxWindows .mo language catalog files are now installed in a
4464subdirectory of the wxPython package dir on MSW since that platform
4465doesn't have a standard place for them.
4466
4467Added missing deselect methods for wxGrid.
4468
4469Fixed typemaps for wxGridCellCoordsArray.
4470
4471Updated to the 0.9a version of PyCrust
4472
4473
4474
44752.4.0.2
4476-------
4477* 23-Jan-2003
4478
4479Several bug fixes.
4480
4481Added wxIntCtrl from Will Sadkin.
4482
4483Added wxPyColourChooser by Michael Gilfix.
4484
4485
4486
4487
44882.4.0.1
4489-------
4490* 10-Jan-2003
4491
4492No major new features since 2.3.4.2, mostly bug fixes and minor
4493enhancements.
4494
4495Added function wrappers for the common dialogs from Kevin Altis.  See
4496wxPython/lib/dialogs.py for more details.
4497
4498
4499
45002.3.4.2
4501-------
4502* 21-Dec-2002
4503
4504Various bug fixes.
4505
4506
4507
45082.3.4.1
4509-------
4510* 18-Dec-2002
4511
4512Updated XRCed and wxTimeCtrl contribs.
4513
4514Show a couple new wxGrid features in the demo.
4515
4516Several bug fixes in wxWindows.
4517
4518Added wxHtmlFilter.
4519
4520wxASSERT and related C++ runtime diagnostics are now converted to
4521Python exceptions.  When an assert happens a wxPyAssertionError
4522(which derives from AssertionError) exception is created and when
4523control returns back to the Python code that invoked the C++ API it
4524will be raised.  The same exception restrictions are in place as
4525before, namely that exceptions can't cross from one Python layer
4526through C++ to another Python layer.  That simply means that if you
4527want to catch wxPyAssertionError or any other exception that you need
4528to do it before control returns to C++ at the end of your event
4529handler or callback code.  There is some test code in demo/wxButton.py
4530you can use to play with this new feature.
4531
4532Added some methods to wxApp (SetAssertMode and GetAssertMode) that let
4533you control how C++ assertions are processed.  Valid modes are:
4534wxPYAPP_ASSERT_SUPPRESS, wxPYAPP_ASSERT_EXCEPTION, and
4535wxPYAPP_ASSERT_DIALOG.  Using _SUPPRESS will give you behavior like
4536the old "final" builds and the assert will be ignored, _EXCEPTION is
4537the new default described above, and _DIALOG is like the default in
45382.3.3.1 and prior "hybrid" builds.  You can also combine _EXCEPTION
4539and _DIALOG if you wish, although I don't know why you would.
4540
4541You can now overload OnInitGui, OnExit and OnAssert in your classes
4542derived from wxApp.
4543
4544Added GetSelectedCells, GetSelectionBlockTopLeft,
4545GetSelectionBlockBottomRight, GetSelectedRows, GetSelectedCols nethods
4546to wxGrid.
4547
4548Added Python == and != operators for some basic classes
4549
4550Fixed the Python wrappers for wxInputStream so they no longer block
4551when reading from a wxProcess on wxGTK.  They now work more or less as
4552they did before 2.3.3.1 but the dual meaning of eof() has been
4553removed.  There is now a CanRead() method that lets you know if there
4554is data waiting to be read from the pipe.
4555
4556Fixed method name clash in wxIEHtmlWin, renamed Refresh to RefreshPage.
4557
4558Added Throbber from Cliff Wells to the library and the demo.
4559
4560Windows installer prompts to uninstall old version first.
4561
4562Added wxPython.lib.evtmgr by Robb Shecter, which is an easier, more
4563"Pythonic" and more OO method of registering handlers for wxWindows
4564events using the Publish/Subscribe pattern.
4565
4566Added wxPython.lib.popupctl by Gerrit van Dyk which is a combobox-like
4567gizmo for poping up arbitrary controls.  It is currently using
4568wxDialog because of some issues with wxPopupWindow...
4569
4570Added wxPython.lib.gridmovers by Gerrit van Dyk which facilitates the
4571dragging of columns and/or rows in a wxGrid.
4572
4573Added wxPython.lib.multisash by Gerrit van Dyk which is a nice
4574implementation of allowing the user to split a window any number of
4575times either horizontally or vertically, and to close the split off
4576windows when desired.
4577
4578Added helpviewer tool that displays HTML books similarly to how MS
4579HTMLHelp viewer does.  Changed how the wxPythonDocs tarball is built
4580and added a script to launch the doc viewer.
4581
4582
4583
4584
45852.3.3.1
4586-------
4587* 19-Sep-2002
4588
4589Added wxSplashScreen.
4590
4591Added wxGenericDirCtrl.
4592
4593Added wxMultiChoiceDialog.
4594
4595The calltip window and autocomplete window in wxSTC will now use a
4596wxPopupWindow if available on the platform (and functioning correctly)
4597so they can extend beyond the client area of the STC if needed.
4598
4599Finished wrapping and providing typemaps for wxInputStream and also
4600added the stream ctor and other methods for wxImage so images can now
4601be loaded from any Python "file-like" object.
4602
4603Changed the img2py tool to use PNG instead of XPM for embedding image
4604data in Python source code, and the generated code now uses streams to
4605convert the image data to wxImage, wxBitmap, or wxIcon.
4606
4607Added the wxPython.lib.rcsizer module which contains RowColSizer.
4608This sizer is based on code from Niki Spahiev and lets you specify a
4609row and column for each item, as well as optional column or row
4610spanning.  Cells with no item assigned to it are just left blank.
4611Stretchable rows or columns are specified and work the same as in
4612wxFlexGridSizer.
4613
4614Updated XRCed from Roman Rolinsky
4615
4616Added wxBufferedDC.
4617
4618Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45, and then again
4619to version 1.47, and one more time to 1.48! <wink>
4620
4621UNICODE!
4622    wxWindows/wxPython can be compiled with unicode support enabled or
4623    disabled.  Previous to wxPython 2.3.3 non-unicode mode was always
4624    used.  Starting with 2.3.3 either mode is supported, but only if
4625    it is also available in wxWindows on the platform.  Currently
4626    wxWindows only supports unicode on MS Windows platforms, but with
4627    the recent release of GTK+ 2.0 it is only a matter of time until
4628    it can be done on wxGTK (Linux and other unixes) as well.
4629
4630    Unicode works best on platforms in the NT branch of the Windows
4631    family tree (NT, win2k, XP) but it is now also possible to use the
4632    same unicode binaries on win95/98/ME platforms as well!  This is
4633    done by using a special library and DLL with the application
4634    called MSLU, (Microsoft Layer for Unicode).  It simply gets out of
4635    the way if the app is run on an NT box, otherwise if run on a
4636    win9x box it loads a special DLL that provides the unicode
4637    versions of the windows API.  So far I have not been able to get
4638    this to work perfectly on win9x.  Most things work fine but
4639    wxTaskBarIcon for example will cause a crash if used with the
4640    unicode build on win95.
4641
4642    So how do you use it?  It's very simple.  When unicode is enabled,
4643    then all functions and methods in wxPython that return a wxString
4644    from the C++ function will return a Python unicode object, and
4645    parameters to C++ functions/methods that expect a wxString can
4646    accept either a Python string or unicode object.  If a string
4647    object is passed then it will be decoded into unicode using the
4648    converter pointed to by wxConvCurrent, which will use the default
4649    system encoding.  If you need to use a string in some other
4650    encoding then you should convert it to unicode using the Python
4651    codecs first and then pass the unicode string to the wxPython
4652    method.
4653
4654Added wxListCtrlAutoWidthMixin from Erik Westra.
4655
4656Added wxIconBundle and wxTopLevelWindow.SetIcons.
4657
4658Added wxLocale and wxEncodingConverter.
4659
4660A little black magic...  When the C++ object (for a window or
4661whatever) is deleted there is no way to force the Python shadow object
4662to also be destroyed and clean up all references to it.  This leads to
4663crashes if the shadow object tries to call a method with the old C++
4664pointer.  The black magic I've done is to replace the __class__ in the
4665Python instance object with a class that raises an exception whenever
4666a method call (or other attribute access) is attempted.  This works
4667for any class that is OOR aware.
4668
4669Added OOR support for wxGridCellRenderer, wxGridCellEditor,
4670wxGridCellAttr, wxGridCellAttrProvider, wxGridTableBase and their
4671derived classes.
4672
4673Added wxImage.GetDataBuffer which returns an in-place edit buffer of
4674the image data.  (Patch #546009)
4675
4676Added a sample that shows how to embed wxPython in a wxWindows C++
4677application.
4678
4679Added wxPyWindow, wxPyPanel and wxPyControl which are just like their
4680wx counterparts except they allow some of the more common C++ virtual
4681methods to be overridden in Python derived classes.  The methods
4682supported are:
4683
4684- DoMoveWindow
4685- DoSetSize
4686- DoSetClientSize
4687- DoSetVirtualSize
4688- DoGetSize
4689- DoGetClientSize
4690- DoGetPosition
4691- DoGetVirtualSize
4692- DoGetBestSize
4693- InitDialog
4694- TransferDataFromWindow
4695- TransferDataToWindow
4696- Validate
4697- AcceptsFocus
4698- AcceptsFocusFromKeyboard
4699- GetMaxSize
4700- AddChild
4701- RemoveChild
4702
4703If there are other methods that you think should be supported
4704please let me know.
4705
4706Changed wxGenButton to derive from wxPyControl and overload
4707DoGetBestSize and AcceptsFocus.
4708
4709Added wxArtProvider.
4710
4711Added wxCallAfter which is a helper function that registers a function
4712(or any callable Python object) to be called once the next time there
4713are no pending events.  This is useful for when you need to do
4714something but it can't be done during the current event handler.  The
4715implementation is very simple, see wxPython/wx.py.
4716
4717Fixed a boatload of reference leaks.
4718
4719Added a demo of using a sizer in a wxScrolledWindow, in effect
4720creating a ScrolledPanel.
4721
4722Added a sample to the demo that shows how to use radio menu items, and
4723other menu stuff.
4724
4725Added wxIEHtmlWin.  This is essentially the same as using IE with the
4726ActiveXWrapper already in the library, but it is implemented all in
4727C++ and therefore does not need any of the modules from win32all and
4728so it is less fragile in the face of changes.
4729
4730Fixed the ActiveXWrapper problem.  Looks like when the win32com
4731modules make a "callback" that they (incorrectly, IMHO) allocate a
4732transient thread state structure.  Since wxPython is now saving
4733tstates for it's own callbacks it ended up using garbage after
4734win32com got rid of the temporary tstate...
4735
4736Added a generic static text control to wxPython.lib.stattext.  This is
4737so things like Boa and PythonCard can have a static text that can
4738respond to mouse events and etc.
4739
4740Changed the wxDateTime.Parse* methods to return an int that will be -1
4741on failure, and the index where parsing stopped otherwise.
4742
4743Moved tools to be a Python package in wxPython.tools, added scripts to
4744import and launch each tool.  This will let you import and use the
4745tools in your own scripts or apps as needed.  On Linux and OS X the
4746tool scripts are installed to {prefix}/bin so you should be able to
4747easily launch them from the command line.  For example, PyCrust can be
4748started with just the "pycrust" command.
4749
4750Added a sample to the demo that catches various key events and
4751displays the details of the event.
4752
4753Added wxWizard, wxWizardPage, wxWizardPageSimple and wxPyWizardPage.
4754
4755Added wxXmlResourceHandler which allows you to create custom handlers
4756for nonstandard class types in XRC resources.  See the demo for an
4757example.
4758
4759Added wxPython.lib.mixins.rubberband module from Robb Shecter.
4760
4761Added wxTimeCtrl from Will Sadkin.
4762
4763
4764
4765
47662.3.2.1
4767-------
4768* 20-Dec-2001
4769
4770Changed (again) how the Python global interpreter lock is handled as
4771well as the Python thread state.  This time it works on SMP machines
4772without barfing and is also still compatible with Python debuggers.
4773
4774Added some patches from library contributors.
4775
4776
4777
47782.3.2
4779-----
4780* 11-Dec-2001
4781
4782Added EVT_HELP, EVT_HELP_RANGE, EVT_DETAILED_HELP,
4783EVT_DETAILED_HELP_RANGE, EVT_CONTEXT_MENU, wxHelpEvent,
4784wxContextMenuEvent, wxContextHelp, wxContextHelpButton, wxTipWindow,
4785and a demo to show them in action.
4786
4787Deprecated PyShell and PyShellWindow, added a snapshot of PyCrust (see
4788http://sourceforge.net/projects/pycrust/. )
4789
4790Added the new virtual list capabilities to wxListCtrl.
4791
4792Added a wxSTC style editor from Riaan Booysen to the sample apps.
4793
4794Added XRCed to the wxPython Tools directory, contributed by Roman
4795Rolinsky.
4796
4797Added a new "constructor" to most of the window classes that calls the
4798default C++ constructor, (the one with no parameters) and also added the
4799corresponding  Create(...) method.  This allows you to do a 2-step
4800creation of windows which is sometimes required for doing things such
4801as setting extended style flags before the window is created, or for
4802passing the object to the XRC resource system to be created from the
4803resource.  The name of the new "constructor" is the original name of
4804the class with a "Pre" in it.  For example, wxPreWindow, wxPreFrame,
4805etc.
4806
4807Updated to version 1.40 of Scintilla and updated wxStyledTextCtrl
4808accordingly.  While doing this update I dropped the wxLB_SORT style
4809from the wxListBox created for the AutoComplete functionality.  This
4810means that you will have to sort the keyword lists yourself, but you
4811are free to do case sensitive or case insensitive sorts and set the
4812wxSTC flag accordingly.
4813
4814Updated wxColumnSorterMixin to also be able to place sort icons on the
4815column headers, and updated the wxListCtrl demo to show it off by
4816using wxColumnSorterMixin.
4817
4818Added wxGenBitmapTextButton, TablePrint, etc. contribs from Lorne White.
4819
4820Added wxNativeFontInfo and wxFontMapper.
4821
4822Added pySketch to the samples.
4823
4824Significantly changed how the Python interpreter lock and thread state
4825are managed, which should fix the problem of running on a
4826multi-processor machine.
4827
4828Added wxPyLog so log targets can be created in Python to handle log
4829messages however is wished.  See demo/Main.py for an example.
4830
4831Added wxFindReplaceDialog.
4832
4833The second phase of OOR is implemented for wxEvtHandler, wxSizer,
4834wxShape and derived classes.  This means that functions and methods
4835that return an object derived from wxEvtHandler that was originally
4836created in Python, will return the original Python object (if it still
4837exists) instead of letting SWIG wrap a new shadow object around the
4838original C++ pointer.
4839
4840Added some optimization methods to wxDC: GetBoundingBox, DrawLineList,
4841DrawPointList.
4842
4843Added a set of sophisticated Error Dialogs from Chris Fama.
4844
4845Added wxRightTextCtrl from Josu Oyanguren to wxPython.lib for aligning
4846text in a wxTextCtrl to the right side.
4847
4848Added wxURLDataObject and an example showing drag and drop of URLs to
4849and from web browsers.  It's still not 100% bullet-proof for all types
4850of browsers, but it works for the majority of cases with the popular
4851browsers on Windows.  On wxGTK it seems that only Netscape 4.x works,
4852if anybody has any suggestions about this please bring it up on the
4853wx-dev list.
4854
4855Added wxStopWatch.
4856
4857Added wxMimeTypesManager and wxFileType.
4858
4859Passing None for the handler parameter to one of the EVT_** functions
4860will now Disconnect the event.
4861
4862Added wxPopupWindow and wxPopupTransientWindow.
4863
4864Added wxFileHistory.
4865
4866Added wxDynamicSashWindow, which allows you to endlessly split windows
4867by dragging a little tab next to the scrollbars.  Added a demo to show
4868this and also the ability of multiple wxStyledTextCtrls to share the
4869same document.
4870
4871Added wxEditableListBox gizmo.
4872
4873Updated wxEditor with lots of enhancements from Steve Howell and Adam
4874Feuer.
4875
4876Added the "SplitTree gizmos" which are a collection of classes that
4877were designed to operate together and provide a tree control with
4878additional columns for each item.  The classes are
4879wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
4880wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
4881also be useful by themselves.
4882
4883Added wxDllWidget from Vaclav Slavik which allows wx widgets derived
4884from wxWindow to be loaded from a C++ .dll (or .so) and be used in a
4885wxPython program, without the widget having to be SWIGged first.  The
4886visible API of the widget is limited to wxWindow methods plus a
4887SendCommand method, but it is still quite powerful.  See
4888wxPython/contrib/dllwidget and wxPython/demo/dllwidget for more
4889details.
4890
4891
4892
4893
48942.3.1
4895-----
4896* 10-Jul-2001
4897
4898Added EVT_GRID_EDITOR_CREATED and wxGridEditorCreatedEvent so the user
4899code can get access to the edit control when it is created, (to push
4900on a custom event handler for example.)
4901
4902Added wxTextAttr class and SetStyle, SetDefaultStyle and
4903GetDefaultStyle methods to wxTextCtrl.
4904
4905Added ability to use xml resource files.  Still need to add ability to
4906subclass wxXmlResourceHandler, etc...
4907
4908Added wxGridAutoEditMixin to the mixins library package.
4909
4910Made ColourSelect be derived from wxButton.
4911
4912Fixed img2py to work correctly with Python 2.1.
4913
4914Added enhanced wxVTKRenderWindow by Prabhu Ramachandran
4915
4916
4917
49182.3.0
4919-----
4920* 22-May-2001
4921
4922Removed initial startup dependency on the OpenGL DLLs so only the
4923glcanvasc.pyd depends on them, (on wxMSW.)
4924
4925Changed wxFont, wxPen, wxBrush to not implicitly use the
4926wxThe[Font|Pen|Brush]List objects behind the scenes, but to use normal
4927ctor and dtors.
4928
4929Exposed the wxThe[Font|Pen|Brush]List to wxPython.
4930
4931Also added wxTheColourDatabase and added a library module (in the
4932wxPython.lib.colourdb module) to load LOTS more colour names into the
4933colour database.
4934
4935Added wxWakeUpMainThread, wxMutexGuiEnter, wxMutexGuiLeave,
4936wxMutexGuiLocker and wxThread_IsMain to assist with dealing with GUI
4937access from non-GUI threads.
4938
4939wxPyOnDemandOutputWindow is now (more) thread safe if non-GUI threads
4940use print, sys.stdout.write, etc.
4941
4942Added CreateTextSizer and CreateButtonSizer to wxDialog
4943
4944Added wxPython/lib/infoframe.py from Chris Fama.  It contains a class
4945that can be used in place of wxPyOnDemandOutputWindow.
4946
4947Added colourselect.py, imagebrowser.py and an updated calendar.py to
4948wxPython/lib from Lorne White.
4949
4950Added patch to wxPoint_LIST_helper from Tim Hochberg that should make
4951it gobs faster in certain situations.
4952
4953Added tools that will take an image file in a wx supported format and
4954convert it to data embedded in a Python source file.  The image is
4955converted to XPM format which is essentially a list of strings
4956containing info about each pixel.  The image's transparency mask is
4957included, if there is one, or a mask can be added if a mask colour is
4958specified on the command line.  It is then pickled and optionally
4959compressed and written to a Python source file along with functions to
4960convert it to either a wxBitmap or a wxImage.  See
4961wxPython/demo/images.py for examples, and wxPython/Tools/img2py.py for
4962the implementation.
4963
4964Fixed wxStyledTextCtrl to be much faster on wxGTK.  There was some
4965experimental code that got left in place that ended up causing way too
4966many refreshes.
4967
4968A couple more hacks in my_distutils.py so wxPython can be built with
4969the distutils that comes with Python 2.1.
4970
4971Added a ton of missing methods for wxPrintData.
4972
4973Switched to InnoSetup for MSW distributions.
4974
4975Added wxToggleButton.
4976
4977Fixed bug that prevented wxTreeCtrl.OnCompareItems from being called.
4978
4979Added some methods to wxGrid:
4980      GetCellHighlightPenWidth
4981      GetCellHighlightROPenWidth
4982      SetCellHighlightPenWidth
4983      SetCellHighlightROPenWidth
4984      GetGridWindow
4985      GetGridRowLabelWindow
4986      GetGridColLabelWindow
4987      GetGridCornerLabelWindow
4988
4989Added wxGetClientDisplayRect which on wxMSW returns a wxRect
4990representing the area on screen not occupied by the taskbar and such.
4991On other platforms it is equivallent to wxGetDisplaySize.
4992
4993OOR:
4994   Implemented the first phase of OOR (Original Object Return).  See
4995   the text in the demo for more details of what this means, but in a
4996   nutshell methods such as wxWindow.GetParent or FindWindowById will
4997   now return a shadow object of the proper type if it can.  By
4998   "proper type" I mean that if the wxWindow pointer returned from
4999   FindWindowById really points to a wxButton then the Python object
5000   constructed will be of a wxButtonPtr class instead of wxWindowPtr
5001   as before.  This should reduce or eliminiate the need for
5002   wxPyTypeCast.  (Woo Hoo!)  The objects returned are still not the
5003   original Python object, but that is the next step.  (Although it
5004   will probably only work on Python 2.1 and beyond because it will
5005   use weak references.)
5006
5007   This first phase of the OOR plan is fairly significant and has
5008   required a lot of changes all over wxPython, most of which should
5009   be transparent to you, however I'm not 100% sure that it didn't
5010   introduce any new bugs that are hiding somewhere and didn't get
5011   stomped on during my testing.  So please be sure to test everything
5012   thoroughly when you install this version and be sure to report any
5013   object-type related oddities to me.
5014
5015
5016There is now a wxObject class that most other classes derive from like
5017in C++, but the methods provided don't really match but are wxPython
5018specific.  It could have been added long ago but OOR required it so it
5019finally got done.
5020
5021Finally added wxPyLineShape.GetLineControlPoints, which has been on my
5022list for a while.  The above OOR modification made this easier.
5023
5024Fixed the __cmp__ methods for wxPoint and others.
5025
5026Added wxWave.
5027
5028Added the wxPython.lib.mixins package to the library, it is where
5029useful mix-in classes can be placed.  Currently there is one to help
5030make the columns in a wxListCtrl sortable, and the MagicIMageList from
5031Mike Fletcher.  If you have any custom code that can be factored out
5032of existing classes into a mix-in that would be useful to others
5033please send it to me for inclusion in this package.
5034
5035Added a few little sample applications to help newbies to get started
5036by having smaller functional apps to play with.  They can be found in
5037wxPython/samples.
5038
5039
5040
5041
50422.2.7
5043-----
5044* 19-Jun-2001
5045
5046No changes happened in the Python wrappers for this release, only
5047changes and fixes in the wxWindows library.
5048
5049
5050
50512.2.5
5052-----
5053* 30-Jan-2001
5054
5055New typemaps for wxString when compiling for Python 2.0 and beyond
5056that allow Unicode objects to be passed as well as String objects.  If
5057a Unicode object is passed PyString_AsStringAndSize is used to convert
5058it to a wxString using the default encoding.
5059
5060Fixed the generic buttons so tool tips work for them.
5061
5062Fixed a bug in the demo's tree control.
5063
5064Added a listbox to the listbox demo that shows how to find items with
5065a matching prefix as keys are typed.
5066
5067Added code to the wxListCtrl demo to show how to get text from a
5068column in report mode.
5069
5070Added code to the toolbar demo to clear the long help from the status
5071bar after 2 seconds.
5072
5073Added wxJoystick.
5074
5075Fixed wxTimer so it can be used as described in the docs, either with
5076a Notify method in a subclass, or sending an event to a wxEvtHandler
5077object, (usually a window.)
5078
5079Added wxNotifyEvent.Allow()
5080
5081Fixed GOBS of reference leaks.
5082
5083Massive code changes and cleanup to allow wxPython to be split into
5084multiple extension modules again.  A Python CObject is used to allow
5085the "export" of SWIG functions and other common helper functions from
5086the wxc module to other modules, even if they are in separate shared
5087libraries.  Should also be usable from 3rd party code, just include
5088wxPython/src/export.h
5089
5090Changed the default setup so the following are built as separate
5091extension modules:  calendar, glcanvas, grid, html, ogl, stc, and
5092utils.  Will probably add more later.
5093
5094Changed the wxPrinterDC to use the new constructor taking a
5095wxPrintData object.  The old ctor is still there using the
5096wxPrinterDC2 name.
5097
5098Added wxPython.lib.anchors.py from Riaan Booysen.  It contains a class
5099that implements Delphi's Anchors with wxLayoutConstraints.
5100
5101Added wxPython.lib.fancytext from Timothy Hochberg.
5102
5103Changed the GenericButtons to send their event in idle time, so the
5104mouse won't be captured when the event handler is called.
5105
5106Added wxPython.lib.rpcMixin from Greg Landrum, although it's not
5107integrated with the demo yet.  It allows a wxPython GUI to be an
5108XML-RPC server.
5109
5110
5111
5112New in 2.2.2
5113------------
5114* 26-Oct-2000
5115
5116Significantly changed how the wxStyledtextCtrl code that wraps
5117Scintilla is implemented.  Most of it is now automatically generated
5118from an interface definition file provided by Scintilla.  This means
5119that it will be much easier to stay in sync with new Scintilla
5120releases, but also means that some of the method and identifier names
5121have changed.  See wxPython/demo/data/stc.h for a copy of the C++
5122interface from which the Python interface is generated.  There is now
5123some inline documentation in that file that should really help explain
5124how things work.
5125
5126I am now using the Python Distutils to build wxPython and to make some
5127of the distribution files.  (See http://www.python.org/sigs/distutils-sig/)
5128This means no more messing with my kludgy build.py/Makefile hack,
5129builds will be more consistent with other Python extensions that also
5130use Distutils, and will hopefully make wxPython easier to build for
5131platforms where there have been troubles before.  If you are building
5132wxPython for Python 1.5.2 or for 1.6, then you will need to get and
5133install version 1.0 of Distutils from the website above.  If you are
5134using Python 2.0 then you already have it.
5135
5136Added wxInputStream and the wxFileSystem family of classes,
5137contributed by Joerg Baumann.
5138
5139Added wxProcess and support for it to wxExecute.  wxProcess lets you
5140get notified when an asyncronous child process terminates, and also to
5141get input/output streams for the child process's stdout, stderr and
5142stdin.
5143
5144Removed the old python sizers.
5145
5146Added __add__, __sub__ and __cmp__ (equality check only) for wxPoint
5147and wxRealPoint.
5148
5149Changed the build to make one big extension module instead of one for
5150the core and each contrib.  This allowed me to do away with the
5151libwxPyHelpers.so on unix systems.
5152
5153Lots of little fixes here and there.
5154
5155Some hacks on wxGTK to try and make the AutoComplete listbox in the
5156wxStyledTextCtrl to behave better.  It's still not as nice as on
5157wxMSW, but at least it's a bit more usable now.
5158
5159
5160
5161
5162New in 2.2.1
5163------------
5164* 22-Aug-2000
5165
5166Various tweaks, fixes, missing methods, etc.
5167
5168Added example use of wxTaskBarIcon to the demo.
5169
5170
5171
5172New in 2.2.0
5173------------
5174* 17-Jul-2000
5175
5176Added wxLog and friends.
5177
5178Added wxFrame.ShowFullScreen for MSW.
5179
5180Added PyShellWindow to the wxPython.lib package.
5181
5182
5183
5184New in 2.1.16
5185-------------
5186* 12-Jun-2000
5187
5188Added an attribute named labelDelta to the generic buttons that
5189specifies how far to offset the label when the button is in the
5190depressed state.
5191
5192Added wxTipProvider and friends.  See the demo for an example.
5193
5194wxGrid can now change the cell highlight colour.
5195
5196Added wxDragImage.
5197
5198Fixed printing on wxGTK.
5199
5200Added wxDateTime, wxTimeSpan, and wxDateSpan to wxPython.utils.
5201
5202Added wxCalendarCtrl.
5203
5204WARNING: A while back I asked what should be done about the Magic
5205Method Names.  (Methods that are automatically turned into event
5206handlers by virtue of their name.)  The consensus was that it is more
5207confusing to have them than to try and expand them to have greater
5208coverage.  I am finally getting around to removing the code that
5209generates the event binding.  This means that if you are using any of
5210the following method names without a EVT_* call that you need to
5211modify your code to add the EVT_* to hook the event to the method.
5212
5213- OnChar
5214- OnSize
5215- OnEraseBackground
5216- OnSysColourChanged
5217- OnInitDialog
5218- OnPaint
5219- OnIdle
5220- OnActivate
5221- OnMenuHighlight
5222- OnCloseWindow
5223- OnScroll
5224
5225Added wxSpinCtrl.
5226
5227
5228
5229
5230New in 2.1.15
5231-------------
5232* 25-Apr-2000
5233
5234Fixed wxTreeCtrl.HitTest to return both the tree item as well as the
5235flags that clairify where the click was in relation to the item.
5236
5237Fixed thread state problem in wxTreeCtrl.GetBoundingBox and
5238GetSelections.
5239
5240Fixed some problems in OGL.  Also wxShape.SetClientData and
5241.GetClientData can now deal with Python objects.
5242
5243Added wxListCtrl.SortItems and changed the demo to show how to use it.
5244
5245Plugged a memory leak.
5246
5247Wrapped the new wxGrid and friends.  The old wxGrid class is no longer
5248available.  There are some incompatibilities, and unfortunately the
5249new classes are not documented yet, (however the methods are more
5250consistent with each other now so you may be able to guess pretty
5251good...)
5252
5253Updated filebrowsebutton.py and calendar.py with changes from their
5254authors.  There is now a FileBrowseButtonWithHistory class (what a
5255mouthful!) and wxCalendar has printing support.
5256
5257Added ActiveXWrapper to the library, and some good demos of it too.
5258It works great for embedding a COM (a.k.a OCX, a.k.a ActiveX) control
5259in a window and calling its methods.  It actually creates a new class
5260on the fly that derives from wxWindow, the COM CoClass and others
5261needed to make it all work.  The resulting class can be instantiated
5262just like wxWindow, used in sizers, etc.  It also responds to all COM
5263method calls, properties, etc., and if the class or a mix-in has
5264matching method names, then the COM events will be propogated back to
5265them.
5266
5267Created a typemap that allows a string to be used for parameters
5268expecting a wxColour type.  The string is either a colour name as
5269defined in the wxColourDatabase, or a colour spec of the form
5270"#RRGGBB".  See the wxStyledTextCtrl demo for an example.
5271
5272I almost forgot to mention the wxStyledTextCtrl!  Yes, the
5273wxStyledTextCtrl is finally in wxPython!!  (And the crowd goes
5274wild...)   There's no documentaTion yet (the crowd boos and hisses...)
5275but I've included a very readable source file in the
5276wxPython/demo/data directory, a couple fairly good examples, and you
5277can also refer to the Scintilla documentaion at
5278http://www.scintilla.org/ScintillaDoc.html to help fill in the gaps
5279until the docs are done.  (The croud murmers contentedly as the tool
5280provider smiles convincingly and removes his flame-proof suit.)
5281
5282
5283
5284
5285What's new in 2.1.13
5286--------------------
5287* 3-Feb-2000
5288
5289Skipped a version number to match what has been released for wxGTK.
5290
5291Updated wxMVCTree and added a demo for it, also fixed layout on GTK
5292and some flicker problems.
5293
5294Added a wrapper class for the Visualization ToolKit (or VTK) in the
5295wxPython.lib.vtk module.  (http://www.kitware.com/)
5296
5297Fixed wxTreeCtrl.SetItemImage and GetItemImage to recognise the new
5298"which" parameter.
5299
5300Added wxPython.lib.spashscreen from Mike Fletcher.
5301
5302Added wxPython.lib.filebrowsebutton also from Mike Fletcher.
5303
5304Renamed wxTreeCtrl.GetParent to GetItemParent to avoid a name clash
5305with wxWindow.GetParent.
5306
5307Added wxIntersectRect to compute the intersection of two wxRect's.
5308It is used like this::
5309
5310   intersect = wxIntersectRect(rect1, rect2)
5311
5312If r1 and r2 don't intersect then None is returned, otherwise the
5313rectangle representing the intersection is returned.
5314
5315Some bug fixes for Clipboard and Drag-n-Drop.
5316
5317Rotated text!!!  WooHoo!  (See wxDC.DrawRotatedText())
5318
5319Added a set of Generic Buttons to the library.  These are simple
5320window classes that look and act like native buttons, but you can have
5321a bit more control over them.  The bezel width can be set in addition
5322to colours, fonts, etc.  There is a ToggleButton as well as Bitmap
5323versions too.  They should also serve as a good example of how to
5324create your own classes derived from wxControl.
5325
5326The C++ wxToolBar classes have been redone, and so have the wxPython
5327wrappers.  There have been slight modifications to some of the methods
5328but shouldn't impact anybody too much.  I took the opportunity to add
5329support for setting user data on each toolbar tool.  The new AddTool
5330methods look like this::
5331
5332        def AddTool(ID,
5333                    bitmap,
5334                    pushedBitmap = wxNullBitmap,
5335                    toggle = FALSE,
5336                    clientData = NULL,
5337                    shortHelpString = "",
5338                    longHelpString = "")
5339
5340        def AddSimpleTool(ID,
5341                          bitmap,
5342                          shortHelpString = "",
5343                          longHelpString = "",
5344                          toggle=FALSE)
5345
5346
5347There are also corresponding InsertTool and InsertSimpleTool methods
5348that additionally take an integer position as the first parameter.
5349
5350Added a wrapper for the new PCX and TIFF ImageHandlers.
5351
5352wxRect now simulates attributes named left, right, top and bottom.
5353
5354Removed all non wx stuff from the glcanvas module since DA's PyOpenGL
5355is better and compatible with the wxGLCanvas.  You can get it at
5356http://starship.python.net:9673/crew/da/Code/PyOpenGL.
5357
5358Added some missing EVT functions.
5359
5360Added Dirk Holtwic's editor classes to the wxPython.lib.editor
5361package.
5362
5363Changed all the "LIST" parameter names to "choices" to match the docs.
5364
5365More fixes for the wxFloatBar, and it now works on wxGTK even better
5366than wxMSW!  (The feat is accomplished by using the wxTB_DOCKABLE
5367style flag instead of trying to float it ourselves.)
5368
5369
5370
5371
5372What's new in 2.1.11
5373--------------------
5374* 13-Nov-1999
5375
5376Skipped a few version numbers so wxMSW, wxGTK and wxPython are all
5377syncronized.
5378
5379wxImage.SetData now makes a copy of the image data before giving it to
5380wxImage.  I mistakenly thought that wxImage would copy the data
5381itself.
5382
5383Fixed wxMSW's notebook so the pages get their size set as they are
5384being added.  This should remove the need for our
5385wxNotebook.ResizeChildren hack.
5386
5387wxPanels now support AutoLayout, and wxNotebooks and wxSplitterWindows
5388no longer tell their children to Layout() themselves.  This will
5389probably only effect you if you have a wxWindow with AutoLayout inside
5390a notebook or splitter.  If so, either change it to a wxPanel or add
5391an EVT_SIZE handler that calls Layout().
5392
5393Fixed deadlock problem that happened when using threads.
5394
5395Added new HTML printing classes.
5396
5397Added wxWindow.GetHandle
5398
5399Apparently wxMouseEvent.Position has been deprecated in wxWindows as
5400it is no longer available by default.  You can use GetPositionTuple
5401(returning a tuple with x,y) instead, or GetPosition (returning a
5402wxPoint.)
5403
5404Added wxPostEvent function that allows events to be posted and then
5405processed later.  This is a thread-safe way to interact with the GUI
5406thread from other threads.
5407
5408Added Clipboard and Drag-and-Drop classes.
5409
5410Added wxFontEnumerator.
5411
5412Many updates to wxMenu, wxMenuBar.
5413
5414wxPyEvent and wxPyCommandEvent derived classes now give you the actual
5415Python object in the event handler instead of a new shadow.
5416
5417Added a Calendar widget from Lorne White to the library.
5418
5419Made some fixes to the wxFloatbar.  It still has some troubles on
5420wxGTK...
5421
5422Added an MVC tree control from Bryn Keller to the library.
5423
5424
5425
5426
5427What's new in 2.1.5
5428-------------------
5429* 12-Oct-1999
5430
5431This is a quick bug-fix release to take care of a few nasties that
5432crept in at the last minute before 2.1.4 was called done.  No new
5433major features.
5434
5435
5436
5437What's new in 2.1.4
5438-------------------
5439* 7-Oct-1999
5440
5441This release is NOT syncronized with a snapshot release of wxGTK or
5442wxMSW.  For MSW this isn't much of a problem since you can get the
5443binaries from the web site.  For other platforms you'll have to build
5444wxGTK from CVS.  (See http://web.ukonline.co.uk/julian.smart/wxwin/cvs.htm)
5445To get the same set of sources from CVS that I used, checkout using
5446the wxPy-2-1-4 tag.
5447
5448Now back to what's new...
5449
5450Much more support for event-less callbacks and add-on modules.
5451
5452Created add-on module with wxOGL classes.
5453
5454Added wxWindow.GetChildren().  Be careful of this.  It returns a *copy*
5455of the list of the window's children.  While you are using the list if
5456anything changes in the real list (a child is deleted, etc.) then the
5457list you are holding will suddenly have window references to garbage
5458memory and your app will likely crash.  But if you are careful it works
5459great!
5460
5461Added a bunch of new and missing methods to wxTreeCrtl.  The
5462SortChildren method is now supported, but currently only for the
5463default sort order.
5464
5465Added typemaps for wxSize, wxPoint, wxRealPoint, and wxRect that allow
5466either the actual objects or Python sequence values to be used.  For
5467example, the following are equivallent::
5468
5469    win = wxWindow(parent, size = wxSize(100, 100))
5470    win = wxWindow(parent, size = (100, 100))
5471
5472Super-charged the wxHtml module.  You can now create your own tag
5473handlers and also have access to the parser and cell classes.  There
5474is a tag handler in the library at wxPython.lib.wxpTag that
5475understands the WXP tag and is able to place wxPython windows on HTML
5476pages.  See the demo for an example.
5477
5478A bunch of the methods of wxMenuBar were previously ifdef'd out for
5479wxGTK.  Added them back in since the methods exist now.
5480
5481Wrapped the wxHtmlHelpController and related classes.
5482
5483Wrapped the C++ versions of wxSizer and friends.  The Python-only
5484versions are still in the library, but deprecated.  (You will get a
5485warning message if you try to use them, but the warning can be
5486disabled.) The usage of the C++ versions is slightly different, and
5487the functionality of wxBorderSizer is now part of wxBoxSizer.  I have
5488added a few methods to wxSizer to try and make the transition as
5489smooth as possible, I combined all Add methods into a single method
5490that handles all cases, added an AddMany method, etc.  One step I did
5491not take was to make the default value of flag in the Add method be
5492wxGROW.  This would have made it more backward compatible, but less
5493portable to and from wxWin C++ code.  Please see the docs and demo for
5494further details.
5495
5496Added wxPyEvent and wxPyCommandEvent classes, derived from wxEvent and
5497wxCommandEvent.  Each of them has SetPyData and GetPyData methods that
5498accept or return a single Python object.  You can use these classes
5499directly or derive from them to create your own types of event objects
5500that can pass through the wxWindows event system without loosing their
5501Python parts (as long as they are stored with SetPyData.)  Stay tuned
5502for more info and examples in future releases.
5503
5504Added wxPython.lib.grids as an example of how to derive a new sizer
5505from the C++ sizers.  In this module you will find wxGridSizer and
5506wxFlexGridSizer.  wxGridSizer arrainges its items in a grid in which
5507all the widths and heights are the same.  wxFlexgridSizer allows
5508different widths and heights, and you can also specify rows and/or
5509columns that are growable.  See the demo for a couple examples for how
5510to use them.
5511
5512Added the wxValidator class, and created a class named wxPyValidator
5513that should be used for the base class of any Python validators.  See
5514the demo for an example.  Please note that you MUST implement a Clone
5515method in your validator classes because of the way some things work
5516in the underlying C++ library.  I did not add wxTextValidator because
5517of some issues of how it transfers data to and from a wxString, which
5518in wxPython is automatically translated to and from Python strings, so
5519there would never be a concrete wxString that would hang around long
5520enough for the validator to do its job.  On the other hand, it should
5521be real easy to duplicate the functionality of wxTextValidator in a
5522pure Python class derived from wxPyValidator.
5523
5524I've finally added a feature that has been on my list for close to two
5525years!  Ever wondered what that zero is for when you create your app
5526object?  Well now you can leave it out or explicitly set it to a true
5527value.  This value now controls what is to be done with sys.stdout and
5528sys.stderr.  A false value leaves them alone, and a true value sets
5529them to an instance of wxPyOnDemandOutputWindow.  (On windows the
5530default is true, on unix platforms the default is false.)  This class
5531creates a frame containing a wxTextCtrl as soon as anything is written
5532to sys.stdout or sys.stderr.  If you close the window it will come
5533back again the next time something is written.  (You can call
5534app.RestoreStdio to turn this off.)  If you would rather that the stdio be
5535redirected to a file, you can provide a second parameter to your app
5536object's constructor that is a filename.  If you want to use your own
5537class instead of wxPyOnDemandOutputWindow you can either implement
5538RedirectStdio() in you app class or change the value of
5539wxApp.outputWindowClass like this::
5540
5541    class MyApp(wxApp):
5542        outputWindowClass = MyClass
5543
5544        def OnInit(self):
5545            frame = MyFrame()
5546            self.SetTopWindow(frame)
5547            return true
5548
5549Please see the implementation of wxPyOnDemandOutputWindow and wxApp in
5550wx.py for more details.  A few words of caution:  if you are running
5551your app in a debugger, changing sys.stdout and sys.stderr is likely
5552to really screw things up.
5553
5554Added wxCaret.  Unfortunately it's author has still not documented it
5555in the wxWindows docs...
5556
5557Some new 3rd party contributions in wxPython.lib.  PyShell, in
5558shell.py is an interesting implementaion of an interactive Python
5559shell in wxWindows.  floatbar.py has a class derived from wxToolBar
5560that can sense mouse drags and then reparent itself into another
5561frame. Moving the new frame close to where it came from puts the tool
5562bar back into the original parent.  (Unfortunately there is currently
5563a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some
5564problems...)
5565
5566
5567
5568
5569What's new in 2.1b3
5570--------------------
5571* 1-Sep-1999
5572
5573This release is syncronized with release 2.1 snapshot 9 of wxWindows.
5574
5575Switched to using SWIG from CVS (see http://swig.cs.uchicago.edu/cvs.html)
5576for some of the new features and such.  Also they have encorporated my
5577patches so there is really no reason to stick with the current (very
5578old) release...  This version of SWIG gives the following new
5579features:
5580
55811. Keyword arguments.  You no longer have to specify all the
5582   parameters with defaults to a method just to specify a
5583   non-default value on the end.  You can now do this instead::
5584
5585      win = wxWindow(parent, -1, style = mystyle)
5586
55872. There is now an an equivalence between Python's None and C++'s
5588   NULL.  This means that any methods that might return NULL will
5589   now return None and you can use None where wxWindows might be
5590   expecting NULL.  This makes things much more snake-ish.
5591
5592
5593There is a new build system based on a new Python program instead of
5594raw makefiles.  Now wxPython builds are virtually the same on MSW or
5595Unix systems.  See the end of this file for new build instructions and
5596see distrib/build.py for more details.
5597
5598wxDC.Bilt now includes the useMask parameter, and has been split into
5599two different versions.  wxDC.BlitXY is like what was there before and
5600takes raw coordinants and sizes, and the new wxDC.Blit is for the new
5601interface using wxPoints and a wxSize.
5602
5603
5604
5605
5606
5607What's new in 2.1b2
5608-------------------
5609* 6-Aug-1999
5610
5611Added the missing wxWindow.GetUpdateRegion() method.
5612
5613Made a new change in SWIG (update your patches everybody) that
5614provides a fix for global shadow objects that get an exception in
5615their __del__ when their extension module has already been deleted.
5616It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
5617line 496 if you want to do it by hand.
5618
5619It is now possible to run through MainLoop more than once in any one
5620process.  The cleanup that used to happen as MainLoop completed (and
5621prevented it from running again) has been delayed until the wxc module
5622is being unloaded by Python.
5623
5624I fixed a bunch of stuff in the C++ version of wxGrid so it wouldn't
5625make wxPython look bad.
5626
5627wxWindow.PopupMenu() now takes a wxPoint instead of  x,y.  Added
5628wxWindow.PopupMenuXY to be consistent with some other methods.
5629
5630Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
5631
5632You can now provide your own app.MainLoop method.  See
5633wxPython/demo/demoMainLoop.py for an example and some explaination.
5634
5635Got the in-place-edit for the wxTreeCtrl fixed and added some demo
5636code to show how to use it.
5637
5638Put the wxIcon constructor back in for GTK as it now has one that
5639matches MSW's.
5640
5641Added wxGrid.GetCells
5642
5643Added wxSystemSettings static methods as functions with names like
5644wxSystemSettings_GetSystemColour.
5645
5646Removed wxPyMenu since using menu callbacks have been deprecated in
5647wxWindows.  Use wxMenu and events instead.
5648
5649Added alternate wxBitmap constructor (for MSW only) as
5650      wxBitmapFromData(data, type, width, height, depth = 1)
5651
5652Added a helper function named wxPyTypeCast that can convert shadow
5653objects of one type into shadow objects of another type.  (Like doing
5654a down-cast.)  See the implementation in wx.py for some docs.
5655
5656Fixed wxImage GetData and SetData to properly use String objects for
5657data transfer.
5658
5659Added access methods to wxGridEvent.
5660
5661New Makefile/Setup files supporting multiple dynamic extension modules
5662for unix systems.
5663
5664Fixes for the wxGLCanvas demo to work around a strange bug in gtk.
5665
5666SWIG support routines now compiled separately instead of being bundled
5667in wx.cpp.
5668
5669
5670
5671
5672
5673What's new in 2.1b1
5674-------------------
5675* 28-Jun-1999
5676
5677Fixed wxComboBox.SetSelection so that it actually sets the selected
5678item.  (Actually just removed it from wxPython and let it default to
5679wxChoice.SetSelection which was already doing the right thing.)
5680
5681Added the Printing Framework.
5682
5683Switched back to using the wxWindows DLL for the pre-built Win32
5684version.  The problem was needing to reinitialize static class info
5685data after loading each extension module.
5686
5687Lots of little tweaks and additions to reflect changes to various
5688wxWindows classes.
5689
5690Fixed a bug with attaching objects to tree items.  Actually was a
5691symptom of a larger problem with not obtaining the interpreter lock
5692when doing any Py_DECREFs.
5693
5694wxSizer and friends.  Sizers are layout tools that manage a colection
5695of windows and sizers.  Different types of sizers apply different
5696types of layout algorithms.  You saw it here first!  These classes are
5697not even in the wxWindows C++ library yet!
5698
5699
5700
5701What's new in 2.0b9
5702-------------------
5703* 1-May-1999
5704
5705Bug fix for ListCtrl in test4.py (Was a missing file...  DSM!)
5706
5707Bug fix for occassional GPF on Win32 systems upon termination of a
5708wxPython application.
5709
5710Added wxListBox.GetSelections returning selections as a Tuple.
5711
5712Added a wxTreeItemData that is able to hold any Python object and be
5713associated with items in a wxTreeCtrl.  Added test pytree.py to show
5714this feature off.
5715
5716Added wxSafeYield function.
5717
5718OpenGL Canvas can be optionally compiled in to wxPython.
5719
5720Awesome new Demo Framework for showing off wxPython and for learning
5721how it all works.
5722
5723The pre-built Win32 version is no longer distributing the wxWindows
5724DLL.  It is statically linked with the wxWindows library instead.
5725
5726Added a couple missing items from the docs.
5727
5728Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler,
5729wxGIFHandler and wxBMPHandler.
5730
5731Added new methods to wxTextCtrl.
5732
5733Fixed some problems with how SWIG was wrapping some wxTreeCtrl
5734methods.
5735
5736
5737
5738What's new in 2.0b8
5739-------------------
5740* 28-Mar-1999
5741
5742Support for using Python threads in wxPython apps.
5743
5744Several missing methods from various classes.
5745
5746Various bug fixes.
5747
5748
5749
5750What's new in 2.0b7
5751-------------------
5752* 15-Mar-1999
5753
5754Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.
5755
5756Added missing constructor and other methods for wxMenuItem.
5757
5758
5759
5760What's new in 2.0b6
5761-------------------
5762* 4-Mar-1999
5763
5764Just a quickie update to fix the self-installer to be compatible with
5765Python 1.5.2b2's Registry settings.
5766
5767
5768What's new in 2.0b5
5769-------------------
5770* 25-Feb-1999
5771
5772Well obviously the numbering scheme has changed.  I did this to
5773reflect the fact that this truly is the second major revision of
5774wxPython, (well the third actually if you count the one I did for
5775wxWindows 1.68 and then threw away...) and also that it is associated
5776with the 2.0 version of wxWindows.
5777
5778I have finally started documenting wxPython.  There are several pages
5779in the wxWindows documentation tree specifically about wxPython, and I
5780have added notes within the class references about where and how wxPython
5781diverges from wxWindows.
5782
5783Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a
5784window handle.  If you can get the window handle into the python code,
5785it should just work...  More news on this later.
5786
5787Added wxImageList, wxToolTip.
5788
5789Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the
5790wxRegConfig class.
5791
5792As usual, some bug fixes, tweaks, etc.
5793
5794
5795
5796What's new in 0.5.3
5797-------------------
5798* 30-Jan-1999
5799
5800Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc.
5801
5802Various cleanup, tweaks, minor additions, etc. to maintain
5803compatibility with the current wxWindows.
5804
5805
5806
5807What's new in 0.5.0
5808-------------------
5809Changed the import semantics from ``"from wxPython import *"`` to
5810``"from wxPython.wx import *"``  This is for people who are worried about
5811namespace pollution, they can use "from wxPython import wx" and then
5812prefix all the wxPython identifiers with "wx."
5813
5814Added wxTaskbarIcon for wxMSW.
5815
5816Made the events work for wxGrid.
5817
5818Added wxConfig.
5819
5820Added wxMiniFrame for wxGTK.
5821
5822Changed many of the args and return values that were pointers to gdi
5823objects to references to reflect changes in the wxWindows API.
5824
5825Other assorted fixes and additions.
5826
5827
5828
5829
5830What's new in 0.4.2
5831-------------------
5832* 21-Oct-1998
5833
5834wxPython on wxGTK works!!!  Both dynamic and static on Linux and
5835static on Solaris have been tested.  Many thanks go to Harm van der
5836Heijden for his astute detective work on tracking down a nasty DECREF
5837bug.  Okay so I have to confess that it was just a DSM (Dumb Stupid
5838Mistake) on my part but it was nasty none the less because the
5839behavior was so different on different platforms.
5840
5841The dynamically loaded module on Solaris is still segfaulting, so it
5842must have been a different issue all along...
5843
5844
5845
5846What's New in 0.4
5847-----------------
5848* 2-Oct-1998
5849
58501. Worked on wxGTK compatibility.  It is partially working.  On a
5851Solaris/Sparc box wxPython is working but only when it is statically
5852linked with the Python interpreter.  When built as a dynamically loaded
5853extension module, things start acting weirdly and it soon seg-faults.
5854And on Linux both the statically linked and the dynamically linked
5855version segfault shortly after starting up.
5856
58572. Added Toolbar, StatusBar and SplitterWindow classes.
5858
58593. Various bug fixes, enhancements, etc.
5860
5861
5862
5863
5864wxPython 0.3
5865------------
5866* 9-Aug-1998
5867
5868The first "modern" version of wxPython.  See https://wxpython.org/pages/history/
5869
5870
5871.. -*- coding: utf-8 -*-
5872