]> git.saurik.com Git - wxWidgets.git/blame - wxPython/docs/CHANGES.txt
Lots of wx namespace updates for the wx.lib package and the demo from
[wxWidgets.git] / wxPython / docs / CHANGES.txt
CommitLineData
6d75ea8f
RD
1CHANGES.txt for wxPython
2
3----------------------------------------------------------------------
4
7ca4c2e1 52.5.1.x
3ef86e32
RD
6-------
7
7ca4c2e1
RD
8(See also the MigrationGuide.txt file for details about some of the
9big changes that have happened in this release and how you should
10adapt your code.)
11
3ef86e32
RD
12Many, many little fixes, changes and additions done as part of the move
13to wxWindows 2.5 that I have forgotten about.
14
3ef86e32
RD
15Added wxMirrorDC.
16
17Added wxIconLocation
18
3ef86e32 19
3628e088
RD
20Added Python wrappers for the new wxVScrolledWindow, wxVListBox, and
21wxHtmlListBox classes.
3ef86e32 22
edadef3f
RD
23Added wrappers for wxBookCtrl and wxListbook. wxNotebook now derives
24from wxBookCtrl.
25
3ef86e32
RD
26
27
28
8b9a4190 292.4.2.4
1e4a197e
RD
30-------
31
1fded56b
RD
32Use wxSTC in the demo for displaying the soucre code of the samples.
33
8b9a4190 34Lots of bug fixes and such from the wxWindows folks.
1fded56b 35
8b9a4190
RD
36Added wxPython.lib.newevent from Miki Tebeka. Its usage is
37demonstrated in the Threads sample in the demo.
38
39Updates to wxMaskedEditCtrl.
40
41Added wxMaskedNumCtrl.
42
43Added Chris Barker's FloatCanvas.
1fded56b
RD
44
45
46
472.4.1.2
48-------
49
50Added wxScrolledPanel from Will Sadkin
51
52Added SetShape method to top level windows (e.g. wxFrame.)
53
54Changed wxSWIG to not generate Python code using apply, (since it will
55be deprecated in the future) wxSWIG will use spam(*args, **kw) syntax
56instead. Also changed the generated __repr__ methods to be a bit more
57informative.
58
59Made the version number information more robust and uh, informative.
60Also added asserts to check that the major.minor versions of wxPython
61and wxWindows match.
62
63Added the new wx "renamer" package that will dynamically import from
64the wxPython package and rename wxFooBar --> FooBar. That means that
65people can do imports without "import *" and can use names like
66wx.Frame instead of wx.wxFrame. This is phase 1 of a full transition
67to the new namespace.
68
69Updated Scintilla to 1.52. I also changed it to use wxListCtrl
70instead of wxListBox for the AutoComplete window, added the ability to
71use custom bitmaps in the margin and in the AutoComplete windows, and
72worked out how to do proper clipping of child windows on wxGTK.
73
74Patrick O'Brien's PyCrust package has been renamed to Py and now
75includes several new tools. As part of the change the location of the
76pacakge has changed as well, it is now accessible as "from wxPython
77import py" (or "from wx import py" using the new namespace.) There
78are still some transition modules in the wxPython.lib.PyCrust package
79that will issue a warning and then import what is needed from the new
80package. These will be removed in a future release.
81
82Added __nonzero__ method to wxTreeItemId, wxBitmap, wxImage, wxFont,
83and most other classes that have an Ok or IsOK method. This allows
84code like "if obj: ..." to be the same as "if obj.IsOk(): ..."
85
86Toolbars on wxMac can now have controls on them.
87
88Added wxPython.lib.analogclock module based on samples that were
89passed back and forth on wxPython-users a while back.
90
91Added masked edit controls (wxPython.lib.maskededit) by Jeff Childers
92and Will Sadkin. Updated wxTimeCtrl to use MaskedEdit.
93
94When the __class__ of a dead object is replaced with _wxPyDeadObject
95the __del__ of the original class is now called first.
96
97Added wxTreeListCtrl. (Looks like a wxTreeCtrl embedded in a
98wxListCtrl, but actually is just giving multiple columns to a
99wxTreeCtrl.)
100
101Added wxFutureCall, a subclass of wxTimer that makes it easy to delay
102a call to any Python callable object.
103
104Added wxPy versions of wxPrintPreview, wxPreviewFrame, and
105wxPreviewControlBar so they can be derived from in Python and be able
106to override the C++ virtual methods.
107
108Simplified how the wxSizer methods are wrapped, changed the name of
109the "option" parameter to "proportion" to match the docs ("option" is
110still accepted for compatibility, but this will go away in a future
111release,) SetItemMinSize can now take a wxSize (or 2-tuple) parameter,
112and Spacers can be specified with a wxSize (or 2-tuple) parameter
113
114Added wxCursorFromBits.
115
116
1e4a197e
RD
117
118
119
1202.4.0.7
121-------
122Gave up on generating a warning upon the use of the old true/false or
123TRUE/FALSE values.
124
125Fixed wxGenericTreeCtrl (used on wxGTK and wxMac for wxTreeCtrl) so
126that it can successfully handle lots of nodes instead of overflowing
127when the virtual height of the widget overflowed a 16-bit value.
128
129Fixed the typemap that converts strings to wxColours to also accept
130unicode.
131
132Fixed problem where the wrong class name could sometimes be used for
133OOR.
134
135Fixed an interpreter lock problem in the __eq__ and __ne__ methods in
136wxSize and etc.
137
138Updated PyCrust to version 0.9
139
140Instead of always logging C++ assertions, added wxPYAPP_ASSERT_LOG
141flag to turn it on. In most cases turning it into an exception (the
142default behavior) is enough. See below in the 2.3.4.1 notes for more
143details.
144
145
146
147
1482.4.0.6 (a.k.a. the I'm so stupid release)
149-------
150The new deprecation class for the old true/false symbols can now be
151returned from OnInit. And I promise to be sure I am testing what I
152think I am testing in the future...
153
154
155
1562.4.0.5 (a.k.a. the blame it on Kevin release)
157-------
158A few little but annoying bug fixes.
159
160Updated pycolourchooser.
161
162Updated to 0.9b of PyCrust.
163
164
165
1662.4.0.4
167-------
168Added missing wxRect methods
169
170Add OOR support for wxApp objects too.
171
172Added wxCursorFromImage, which works on wxMSW and wxGTK so far.
173
174All platforms now send EVT_DESTROY_WINDOW. Be warned that at the time
175the event is sent the window is in the process of being deconstructed,
176and so calling some (most?) methods of the window itself may cause
177problems.
178
179Fixed SF Bug #689481, a method in the OGL wrappers was using the wrong
180return type.
181
182Fixed SF Bug #689958, an endless loop in printout.py.
183
184Added EVT_WINDOW_CREATE_ID and EVT_WINDOW_DESTROY_ID so these events
185can be associated with a specific window ID and more easily caught by
186the parent window.
187
188Fixed copy-paste error in wxListCtrl.GetFirstSelected.
189
190Added missing Init method (and an overloading wrapper) to wxLocale
191wrapper.
192
193Added a wxBitmap.SetMaskColour convenience method.
194
195Changed how the dynamic event tables (used for all Python wx classes,
196C++ wx classes typically use static event tables) are searched such
197that they behave from a Python perspective more like the static tables
198in C++. Namely that if there are identical event bindings in a base
199Python class and a derived Python class that the one in the derived
200class will be found first and that if Skip is called that the one in
201the base class will still be found instead of skipping directly to the
202static stable in the C++ class.
203
204Switched to using True/False in the wxPython lib and demo instead of
205true/false or TRUE/FALSE to prepare for the new boolean type and
206constants being added to Python. Added code to wx.py to test for the
207existence of the new constants and to create suitable values if not
208present.
209
210Added some static wxApp functions that help with integration with the
211Mac UI. They are no-ops on other platforms so it doesn't hurt to
212always call them. The functions are:
213
214 wxApp_GetMacDefaultEncodingIsPC
215 wxApp_GetMacSupportPCMenuShortcuts
216 wxApp_GetMacAboutMenuItemId
217 wxApp_GetMacPreferencesMenuItemId
218 wxApp_GetMacExitMenuItemId
219 wxApp_GetMacHelpMenuTitleName
220 wxApp_SetMacDefaultEncodingIsPC
221 wxApp_SetMacSupportPCMenuShortcuts
222 wxApp_SetMacAboutMenuItemId
223 wxApp_SetMacPreferencesMenuItemId
224 wxApp_SetMacExitMenuItemId
225 wxApp_SetMacHelpMenuTitleName
226
227Refactored, enhanced and added capabilities for the DrawXXXList
228functions, inspired by code from Chris Barker.
229
230The wxWindows .mo language catalog files are now installed in a
231subdirectory of the wxPython package dir on MSW since that platform
232doesn't have a standard place for them.
233
234Added missing deselect methods for wxGrid.
235
236Fixed typemaps for wxGridCellCoordsArray.
237
238Updated to the 0.9a version of PyCrust
239
240
241
2422.4.0.2
243-------
244Several bug fixes.
245
246Added wxIntCtrl from Will Sadkin.
247
248Added wxPyColourChooser by Michael Gilfix.
249
250
251
252
2532.4.0.1
254-------
255No major new features since 2.3.4.2, mostly bug fixes and minor
256enhancements.
257
258Added function wrappers for the common dialogs from Kevin Altis. See
259wxPython/lib/dialogs.py for more details.
260
261
262
2632.3.4.2
264-------
265Various bug fixes.
266
267
268
2692.3.4.1
270-------
271Updated XRCed and wxTimeCtrl contribs.
272
273Show a couple new wxGrid features in the demo.
274
275Several bug fixes in wxWindows.
276
277Added wxHtmlFilter.
278
279wxASSERT and related C++ runtime diagnostics are now converted to
280Python exceptions. When an assert happens a wxPyAssertionError
281(which derives from AssertionError) exception is created and when
282control returns back to the Python code that invoked the C++ API it
283will be raised. The same exception restrictions are in place as
284before, namely that exceptions can't cross from one Python layer
285through C++ to another Python layer. That simply means that if you
286want to catch wxPyAssertionError or any other exception that you need
287to do it before control returns to C++ at the end of your event
288handler or callback code. There is some test code in demo/wxButton.py
289you can use to play with this new feature.
290
291Added some methods to wxApp (SetAssertMode and GetAssertMode) that let
292you control how C++ assertions are processed. Valid modes are:
293wxPYAPP_ASSERT_SUPPRESS, wxPYAPP_ASSERT_EXCEPTION, and
294wxPYAPP_ASSERT_DIALOG. Using _SUPPRESS will give you behavior like
295the old "final" builds and the assert will be ignored, _EXCEPTION is
296the new default described above, and _DIALOG is like the default in
2972.3.3.1 and prior "hybrid" builds. You can also combine _EXCEPTION
298and _DIALOG if you wish, although I don't know why you would.
299
300You can now overload OnInitGui, OnExit and OnAssert in your classes
301derived from wxApp.
302
303Added GetSelectedCells, GetSelectionBlockTopLeft,
304GetSelectionBlockBottomRight, GetSelectedRows, GetSelectedCols nethods
305to wxGrid.
306
307Added Python == and != operators for some basic classes
308
309Fixed the Python wrappers for wxInputStream so they no longer block
310when reading from a wxProcess on wxGTK. They now work more or less as
311they did before 2.3.3.1 but the dual meaning of eof() has been
312removed. There is now a CanRead() method that lets you know if there
313is data waiting to be read from the pipe.
314
315Fixed method name clash in wxIEHtmlWin, renamed Refresh to RefreshPage.
316
317Added Throbber from Cliff Wells to the library and the demo.
318
319Windows installer prompts to uninstall old version first.
320
321Added wxPython.lib.evtmgr by Robb Shecter, which is an easier, more
322"Pythonic" and more OO method of registering handlers for wxWindows
323events using the Publish/Subscribe pattern.
324
325Added wxPython.lib.popupctl by Gerrit van Dyk which is a combobox-like
326gizmo for poping up arbitrary controls. It is currently using
327wxDialog because of some issues with wxPopupWindow...
328
329Added wxPython.lib.gridmovers by Gerrit van Dyk which facilitates the
330dragging of columns and/or rows in a wxGrid.
331
332Added wxPython.lib.multisash by Gerrit van Dyk which is a nice
333implementation of allowing the user to split a window any number of
334times either horizontally or vertically, and to close the split off
335windows when desired.
336
337Added helpviewer tool that displays HTML books similarly to how MS
338HTMLHelp viewer does. Changed how the wxPythonDocs tarball is built
339and added a script to launch the doc viewer.
340
341
342
343
3442.3.3.1
345-------
b5a5d647
RD
346Added wxSplashScreen.
347
68320e40
RD
348Added wxGenericDirCtrl.
349
ce914f73 350Added wxMultiChoiceDialog.
68320e40 351
769a9cb2 352The calltip window and autocomplete window in wxSTC will now use a
bffe56c5
RD
353wxPopupWindow if available on the platform (and functioning correctly)
354so they can extend beyond the client area of the STC if needed.
769a9cb2 355
f74ff5ef
RD
356Finished wrapping and providing typemaps for wxInputStream and also
357added the stream ctor and other methods for wxImage so images can now
358be loaded from any Python "file-like" object.
359
afb810d9
RD
360Changed the img2py tool to use PNG instead of XPM for embedding image
361data in Python source code, and the generated code now uses streams to
362convert the image data to wxImage, wxBitmap, or wxIcon.
f74ff5ef 363
68bc8549
RD
364Added the wxPython.lib.rcsizer module which contains RowColSizer.
365This sizer is based on code from Niki Spahiev and lets you specify a
366row and column for each item, as well as optional column or row
367spanning. Cells with no item assigned to it are just left blank.
368Stretchable rows or columns are specified and work the same as in
369wxFlexGridSizer.
96de41c2 370
18fc9fa3
RD
371Updated XRCed from Roman Rolinsky
372
e9159fe8
RD
373Added wxBufferedDC.
374
a834585d 375Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45, and then again
f114b858 376to version 1.47, and one more time to 1.48! <wink>
1a2fb4cd 377
b96c7a38 378UNICODE!
b96c7a38
RD
379 wxWindows/wxPython can be compiled with unicode support enabled or
380 disabled. Previous to wxPython 2.3.3 non-unicode mode was always
381 used. Starting with 2.3.3 either mode is supported, but only if
36d91193 382 it is also available in wxWindows on the platform. Currently
b96c7a38
RD
383 wxWindows only supports unicode on MS Windows platforms, but with
384 the recent release of GTK+ 2.0 it is only a matter of time until
385 it can be done on wxGTK (Linux and other unixes) as well.
386
387 Unicode works best on platforms in the NT branch of the Windows
388 family tree (NT, win2k, XP) but it is now also possible to use the
389 same unicode binaries on win95/98/ME platforms as well! This is
36d91193
RD
390 done by using a special library and DLL with the application
391 called MSLU, (Microsoft Layer for Unicode). It simply gets out of
392 the way if the app is run on an NT box, otherwise if run on a
393 win9x box it loads a special DLL that provides the unicode
394 versions of the windows API. So far I have not been able to get
395 this to work perfectly on win9x. Most things work fine but
396 wxTaskBarIcon for example will cause a crash if used with the
397 unicode build on win95.
b96c7a38
RD
398
399 So how do you use it? It's very simple. When unicode is enabled,
400 then all functions and methods in wxPython that return a wxString
401 from the C++ function will return a Python unicode object, and
402 parameters to C++ functions/methods that expect a wxString can
403 accept either a Python string or unicode object. If a string
404 object is passed then it will be decoded into unicode using the
405 converter pointed to by wxConvCurrent, which will use the default
406 system encoding. If you need to use a string in some other
407 encoding then you should convert it to unicode using the Python
408 codecs first and then pass the unicode string to the wxPython
409 method.
410
726fc00a 411Added wxListCtrlAutoWidthMixin from Erik Westra.
b96c7a38 412
0e9b78ce
RD
413Added wxIconBundle and wxTopLevelWindow.SetIcons.
414
68bc8549
RD
415Added wxLocale and wxEncodingConverter.
416
c8b34a16
RD
417A little black magic... When the C++ object (for a window or
418whatever) is deleted there is no way to force the Python shadow object
419to also be destroyed and clean up all references to it. This leads to
420crashes if the shadow object tries to call a method with the old C++
421pointer. The black magic I've done is to replace the __class__ in the
422Python instance object with a class that raises an exception whenever
423a method call (or other attribute access) is attempted. This works
424for any class that is OOR aware.
0e9b78ce 425
33ff77f6
RD
426Added OOR support for wxGridCellRenderer, wxGridCellEditor,
427wxGridCellAttr, wxGridCellAttrProvider, wxGridTableBase and their
2d956b58 428derived classes.
33ff77f6 429
d55d6b3f
RD
430Added wxImage.GetDataBuffer which returns an in-place edit buffer of
431the image data. (Patch #546009)
33ff77f6 432
94e36a51
RD
433Added a sample that shows how to embed wxPython in a wxWindows C++
434application.
b5a5d647 435
3b867149
RD
436Added wxPyWindow, wxPyPanel and wxPyControl which are just like their
437wx counterparts except they allow some of the more common C++ virtual
b0e5c039
RD
438methods to be overridden in Python derived classes. The methods
439supported are:
440
441 DoMoveWindow
442 DoSetSize
443 DoSetClientSize
444 DoSetVirtualSize
445 DoGetSize
446 DoGetClientSize
447 DoGetPosition
448 DoGetVirtualSize
449 DoGetBestSize
450 InitDialog
451 TransferDataFromWindow
452 TransferDataToWindow
453 Validate
454 AcceptsFocus
455 AcceptsFocusFromKeyboard
456 GetMaxSize
3b867149
RD
457 AddChild
458 RemoveChild
b0e5c039 459
3b867149
RD
460 If there are other methods that you think should be supported
461 please let me know.
b0e5c039
RD
462
463Changed wxGenButton to derive from wxPyControl and overload
464DoGetBestSize and AcceptsFocus.
465
a66212dc
RD
466Added wxArtProvider.
467
468Added wxCallAfter which is a helper function that registers a function
f9b24f07
RD
469(or any callable Python object) to be called once the next time there
470are no pending events. This is useful for when you need to do
a66212dc
RD
471something but it can't be done during the current event handler. The
472implementation is very simple, see wxPython/wx.py.
473
474Fixed a boatload of reference leaks.
475
f9b24f07
RD
476Added a demo of using a sizer in a wxScrolledWindow, in effect
477creating a ScrolledPanel.
478
3eb221f6
RD
479Added a sample to the demo that shows how to use radio menu items, and
480other menu stuff.
c731eb47 481
3eb221f6
RD
482Added wxIEHtmlWin. This is essentially the same as using IE with the
483ActiveXWrapper already in the library, but it is implemented all in
bd4b9c8c 484C++ and therefore does not need any of the modules from win32all and
3eb221f6 485so it is less fragile in the face of changes.
b5a5d647 486
763d71e4
RD
487Fixed the ActiveXWrapper problem. Looks like when the win32com
488modules make a "callback" that they (incorrectly, IMHO) allocate a
489transient thread state structure. Since wxPython is now saving
490tstates for it's own callbacks it ended up using garbage after
af83019e 491win32com got rid of the temporary tstate...
763d71e4 492
5fea3204
RD
493Added a generic static text control to wxPython.lib.stattext. This is
494so things like Boa and PythonCard can have a static text that can
495respond to mouse events and etc.
496
d6a3401d
RD
497Changed the wxDateTime.Parse* methods to return an int that will be -1
498on failure, and the index where parsing stopped otherwise.
499
f6f98ecc 500Moved tools to be a Python package in wxPython.tools, added scripts to
bd4b9c8c 501import and launch each tool. This will let you import and use the
a6151d99
RD
502tools in your own scripts or apps as needed. On Linux and OS X the
503tool scripts are installed to {prefix}/bin so you should be able to
504easily launch them from the command line. For example, PyCrust can be
505started with just the "pycrust" command.
bd4b9c8c 506
3b867149
RD
507Added a sample to the demo that catches various key events and
508displays the details of the event.
509
af83019e
RD
510Added wxWizard, wxWizardPage, wxWizardPageSimple and wxPyWizardPage.
511
628c7f79
RD
512Added wxXmlResourceHandler which allows you to create custom handlers
513for nonstandard class types in XRC resources. See the demo for an
514example.
515
1e4a197e
RD
516Added wxPython.lib.mixins.rubberband module from Robb Shecter.
517
518Added wxTimeCtrl from Will Sadkin.
763d71e4 519
3bd1e033 520
b8510c2f 521
1fded56b 522
4268f798 5232.3.2.1
71f1334b 524-------
4268f798
RD
525Changed (again) how the Python global interpreter lock is handled as
526well as the Python thread state. This time it works on SMP machines
527without barfing and is also still compatible with Python debuggers.
528
529Added some patches from library contributors.
530
531
532
ebf4302c 5332.3.2
4f3449b4
RD
534-----
535Added EVT_HELP, EVT_HELP_RANGE, EVT_DETAILED_HELP,
536EVT_DETAILED_HELP_RANGE, EVT_CONTEXT_MENU, wxHelpEvent,
537wxContextMenuEvent, wxContextHelp, wxContextHelpButton, wxTipWindow,
538and a demo to show them in action.
539
fea018f8
RD
540Deprecated PyShell and PyShellWindow, added a snapshot of PyCrust (see
541http://sourceforge.net/projects/pycrust/. )
4f3449b4 542
c7e7022c 543Added the new virtual list capabilities to wxListCtrl.
4f3449b4 544
00b6c4e3 545Added a wxSTC style editor from Riaan Booysen to the sample apps.
4f3449b4 546
09f3d4e6
RD
547Added XRCed to the wxPython Tools directory, contributed by Roman
548Rolinsky.
549
550Added a new "constructor" to most of the window classes that calls the
1e4a197e
RD
551default C++ constructor, (the one with no parameters) and also added the
552corresponding Create(...) method. This allows you to do a 2-step
09f3d4e6
RD
553creation of windows which is sometimes required for doing things such
554as setting extended style flags before the window is created, or for
555passing the object to the XRC resource system to be created from the
556resource. The name of the new "constructor" is the original name of
557the class with a "Pre" in it. For example, wxPreWindow, wxPreFrame,
558etc.
559
fe0aca37 560Updated to version 1.40 of Scintilla and updated wxStyledTextCtrl
a6978454
RD
561accordingly. While doing this update I dropped the wxLB_SORT style
562from the wxListBox created for the AutoComplete functionality. This
563means that you will have to sort the keyword lists yourself, but you
564are free to do case sensitive or case insensitive sorts and set the
565wxSTC flag accordingly.
4f3449b4 566
6d19860f
RD
567Updated wxColumnSorterMixin to also be able to place sort icons on the
568column headers, and updated the wxListCtrl demo to show it off by
569using wxColumnSorterMixin.
570
53fe40ba 571Added wxGenBitmapTextButton, TablePrint, etc. contribs from Lorne White.
ddcb3d83 572
6d8b4f8d 573Added wxNativeFontInfo and wxFontMapper.
4f3449b4 574
431f4c16 575Added pySketch to the samples.
4f3449b4 576
19a97bd6
RD
577Significantly changed how the Python interpreter lock and thread state
578are managed, which should fix the problem of running on a
579multi-processor machine.
580
76bfdc78
RD
581Added wxPyLog so log targets can be created in Python to handle log
582messages however is wished. See demo/Main.py for an example.
583
0122b7e3
RD
584Added wxFindReplaceDialog.
585
71f1334b
RD
586The second phase of OOR is implemented for wxEvtHandler, wxSizer,
587wxShape and derived classes. This means that functions and methods
588that return an object derived from wxEvtHandler that was originally
589created in Python, will return the original Python object (if it still
590exists) instead of letting SWIG wrap a new shadow object around the
591original C++ pointer.
76bfdc78 592
9d37f964
RD
593Added some optimization methods to wxDC: GetBoundingBox, DrawLineList,
594DrawPointList.
595
79f1bf32
RD
596Added a set of sophisticated Error Dialogs from Chris Fama.
597
729f4276
RD
598Added wxRightTextCtrl from Josu Oyanguren to wxPython.lib for aligning
599text in a wxTextCtrl to the right side.
76bfdc78 600
71f1334b 601Added wxURLDataObject and an example showing drag and drop of URLs to
b37c7e1d
RD
602and from web browsers. It's still not 100% bullet-proof for all types
603of browsers, but it works for the majority of cases with the popular
604browsers on Windows. On wxGTK it seems that only Netscape 4.x works,
605if anybody has any suggestions about this please bring it up on the
606wx-dev list.
607
608Added wxStopWatch.
609
610Added wxMimeTypesManager and wxFileType.
611
c0c84fa0
RD
612Passing None for the handler parameter to one of the EVT_** functions
613will now Disconnect the event.
614
615Added wxPopupWindow and wxPopupTransientWindow.
616
7dbce44a
RD
617Added wxFileHistory.
618
71f1334b 619Added wxDynamicSashWindow, which allows you to endlessly split windows
ebf4302c 620by dragging a little tab next to the scrollbars. Added a demo to show
71f1334b 621this and also the ability of multiple wxStyledTextCtrls to share the
ebf4302c
RD
622same document.
623
611dc22c
RD
624Added wxEditableListBox gizmo.
625
78e8819c
RD
626Updated wxEditor with lots of enhancements from Steve Howell and Adam
627Feuer.
628
629Added the "SplitTree gizmos" which are a collection of classes that
630were designed to operate together and provide a tree control with
631additional columns for each item. The classes are
632wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
633wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
634also be useful by themselves.
1918b6f7 635
4a61305d
RD
636Added wxDllWidget from Vaclav Slavik which allows wx widgets derived
637from wxWindow to be loaded from a C++ .dll (or .so) and be used in a
638wxPython program, without the widget having to be SWIGged first. The
639visible API of the widget is limited to wxWindow methods plus a
640SendCommand method, but it is still quite powerful. See
641wxPython/contrib/dllwidget and wxPython/demo/dllwidget for more
642details.
643
b37c7e1d 644
fea018f8
RD
645
646
286e2db6 6472.3.1
bf7945ce
RD
648-----
649Added EVT_GRID_EDITOR_CREATED and wxGridEditorCreatedEvent so the user
650code can get access to the edit control when it is created, (to push
651on a custom event handler for example.)
652
d56cebe7
RD
653Added wxTextAttr class and SetStyle, SetDefaultStyle and
654GetDefaultStyle methods to wxTextCtrl.
655
656Added ability to use xml resource files. Still need to add ability to
657subclass wxXmlResourceHandler, etc...
658
659Added wxGridAutoEditMixin to the mixins library package.
660
661Made ColourSelect be derived from wxButton.
662
286e2db6
RD
663Fixed img2py to work correctly with Python 2.1.
664
665Added enhanced wxVTKRenderWindow by Prabhu Ramachandran
666
bf7945ce 667
9416aa89
RD
668
6692.3.0
19cf4f80
RD
670-----
671Removed initial startup dependency on the OpenGL DLLs so only the
9416aa89 672glcanvasc.pyd depends on them, (on wxMSW.)
19cf4f80
RD
673
674Changed wxFont, wxPen, wxBrush to not implicitly use the
9416aa89
RD
675wxThe[Font|Pen|Brush]List objects behind the scenes, but to use normal
676ctor and dtors.
19cf4f80
RD
677
678Exposed the wxThe[Font|Pen|Brush]List to wxPython.
679
1af9e5c5 680Also added wxTheColourDatabase and added a library module (in the
19cf4f80
RD
681wxPython.lib.colourdb module) to load LOTS more colour names into the
682colour database.
683
6e18ca6c
RD
684Added wxWakeUpMainThread, wxMutexGuiEnter, wxMutexGuiLeave,
685wxMutexGuiLocker and wxThread_IsMain to assist with dealing with GUI
686access from non-GUI threads.
687
1af9e5c5
RD
688wxPyOnDemandOutputWindow is now (more) thread safe if non-GUI threads
689use print, sys.stdout.write, etc.
6e18ca6c 690
6bb38ab6
RD
691Added CreateTextSizer and CreateButtonSizer to wxDialog
692
6bb38ab6
RD
693Added wxPython/lib/infoframe.py from Chris Fama. It contains a class
694that can be used in place of wxPyOnDemandOutputWindow.
695
49875c53
RD
696Added colourselect.py, imagebrowser.py and an updated calendar.py to
697wxPython/lib from Lorne White.
698
e0672e2f
RD
699Added patch to wxPoint_LIST_helper from Tim Hochberg that should make
700it gobs faster in certain situations.
6bb38ab6 701
1af9e5c5
RD
702Added tools that will take an image file in a wx supported format and
703convert it to data embedded in a Python source file. The image is
9416aa89
RD
704converted to XPM format which is essentially a list of strings
705containing info about each pixel. The image's transparency mask is
706included, if there is one, or a mask can be added if a mask colour is
707specified on the command line. It is then pickled and optionally
708compressed and written to a Python source file along with functions to
709convert it to either a wxBitmap or a wxImage. See
710wxPython/demo/images.py for examples, and wxPython/Tools/img2py.py for
711the implementation.
1af9e5c5
RD
712
713Fixed wxStyledTextCtrl to be much faster on wxGTK. There was some
714experimental code that got left in place that ended up causing way too
715many refreshes.
716
d1679124
RD
717A couple more hacks in my_distutils.py so wxPython can be built with
718the distutils that comes with Python 2.1.
1af9e5c5 719
d7ec6564 720Added a ton of missing methods for wxPrintData.
1af9e5c5 721
d7ec6564 722Switched to InnoSetup for MSW distributions.
19cf4f80 723
3b36695d
RD
724Added wxToggleButton.
725
726Fixed bug that prevented wxTreeCtrl.OnCompareItems from being called.
d1679124 727
9416aa89
RD
728Added some methods to wxGrid:
729 GetCellHighlightPenWidth
730 GetCellHighlightROPenWidth
731 SetCellHighlightPenWidth
732 SetCellHighlightROPenWidth
733 GetGridWindow
734 GetGridRowLabelWindow
735 GetGridColLabelWindow
736 GetGridCornerLabelWindow
737
738Added wxGetClientDisplayRect which on wxMSW returns a wxRect
739representing the area on screen not occupied by the taskbar and such.
740On other platforms it is equivallent to wxGetDisplaySize.
741
742
743***---***---***---***---***---***---***---***---***---***---***---
744 Implemented the first phase of OOR (Original Object Return). See
745 the text in the demo for more details of what this means, but in a
746 nutshell methods such as wxWindow.GetParent or FindWindowById will
747 now return a shadow object of the proper type if it can. By
748 "proper type" I mean that if the wxWindow pointer returned from
749 FindWindowById really points to a wxButton then the Python object
750 constructed will be of a wxButtonPtr class instead of wxWindowPtr
751 as before. This should reduce or eliminiate the need for
752 wxPyTypeCast. (Woo Hoo!) The objects returned are still not the
753 original Python object, but that is the next step. (Although it
754 will probably only work on Python 2.1 and beyond because it will
755 use weak references.)
756
757 This first phase of the OOR plan is fairly significant and has
758 required a lot of changes all over wxPython, most of which should
759 be transparent to you, however I'm not 100% sure that it didn't
760 introduce any new bugs that are hiding somewhere and didn't get
761 stomped on during my testing. So please be sure to test everything
762 thoroughly when you install this version and be sure to report any
763 object-type related oddities to me.
764***---***---***---***---***---***---***---***---***---***---***---
765
766There is now a wxObject class that most other classes derive from like
767in C++, but the methods provided don't really match but are wxPython
bf7945ce
RD
768specific. It could have been added long ago but OOR required it so it
769finally got done.
9416aa89
RD
770
771Finally added wxPyLineShape.GetLineControlPoints, which has been on my
772list for a while. The above OOR modification made this easier.
d1679124 773
10e07c70 774Fixed the __cmp__ methods for wxPoint and others.
419c299a 775
493f1553
RD
776Added wxWave.
777
30aaddfe
RD
778Added the wxPython.lib.mixins package to the library, it is where
779useful mix-in classes can be placed. Currently there is one to help
bf7945ce
RD
780make the columns in a wxListCtrl sortable, and the MagicIMageList from
781Mike Fletcher. If you have any custom code that can be factored out
782of existing classes into a mix-in that would be useful to others
30aaddfe
RD
783please send it to me for inclusion in this package.
784
25832b3f
RD
785Added a few little sample applications to help newbies to get started
786by having smaller functional apps to play with. They can be found in
787wxPython/samples.
788
493f1553 789
19cf4f80
RD
790
791
b075a3bb
RD
7922.2.6
793-----
794
795No changes happened in the Python wrappers for this release, only
796changes and fixes in the wxWindows library.
797
1b62f00d 798
19cf4f80 799
1b62f00d 8002.2.5
185d7c3e
RD
801-----
802
803New typemaps for wxString when compiling for Python 2.0 and beyond
804that allow Unicode objects to be passed as well as String objects. If
805a Unicode object is passed PyString_AsStringAndSize is used to convert
806it to a wxString using the default encoding.
807
808Fixed the generic buttons so tool tips work for them.
809
810Fixed a bug in the demo's tree control.
811
812Added a listbox to the listbox demo that shows how to find items with
1e7ecb7b 813a matching prefix as keys are typed.
185d7c3e
RD
814
815Added code to the wxListCtrl demo to show how to get text from a
816column in report mode.
817
818Added code to the toolbar demo to clear the long help from the status
819bar after 2 seconds.
820
821Added wxJoystick.
822
823Fixed wxTimer so it can be used as described in the docs, either with
824a Notify method in a subclass, or sending an event to a wxEvtHandler
825object, (usually a window.)
826
827Added wxNotifyEvent.Allow()
828
de20db99
RD
829Fixed GOBS of reference leaks.
830
1e7ecb7b
RD
831Massive code changes and cleanup to allow wxPython to be split into
832multiple extension modules again. A Python CObject is used to allow
1b62f00d
RD
833the "export" of SWIG functions and other common helper functions from
834the wxc module to other modules, even if they are in separate shared
1e7ecb7b
RD
835libraries. Should also be usable from 3rd party code, just include
836wxPython/src/export.h
837
838Changed the default setup so the following are built as separate
839extension modules: calendar, glcanvas, grid, html, ogl, stc, and
840utils. Will probably add more later.
841
1b62f00d
RD
842Changed the wxPrinterDC to use the new constructor taking a
843wxPrintData object. The old ctor is still there using the
844wxPrinterDC2 name.
845
846Added wxPython.lib.anchors.py from Riaan Booysen. It contains a class
847that implements Delphi's Anchors with wxLayoutConstraints.
848
849Added wxPython.lib.fancytext from Timothy Hochberg.
850
851Changed the GenericButtons to send their event in idle time, so the
852mouse won't be captured when the event handler is called.
853
854Added wxPython.lib.rpcMixin from Greg Landrum, although it's not
855integrated with the demo yet. It allows a wxPython GUI to be an
856XML-RPC server.
857
185d7c3e
RD
858
859
c368d904
RD
860New in 2.2.2
861------------
862
863Significantly changed how the wxStyledtextCtrl code that wraps
864Scintilla is implemented. Most of it is now automatically generated
865from an interface definition file provided by Scintilla. This means
866that it will be much easier to stay in sync with new Scintilla
867releases, but also means that some of the method and identifier names
868have changed. See wxPython/demo/data/stc.h for a copy of the C++
869interface from which the Python interface is generated. There is now
870some inline documentation in that file that should really help explain
871how things work.
872
873I am now using the Python Distutils to build wxPython and to make some
874of the distribution files. (See http://www.python.org/sigs/distutils-sig/)
875This means no more messing with my kludgy build.py/Makefile hack,
876builds will be more consistent with other Python extensions that also
877use Distutils, and will hopefully make wxPython easier to build for
878platforms where there have been troubles before. If you are building
879wxPython for Python 1.5.2 or for 1.6, then you will need to get and
880install version 1.0 of Distutils from the website above. If you are
881using Python 2.0 then you already have it.
882
883Added wxInputStream and the wxFileSystem family of classes,
884contributed by Joerg Baumann.
885
886Added wxProcess and support for it to wxExecute. wxProcess lets you
887get notified when an asyncronous child process terminates, and also to
888get input/output streams for the child process's stdout, stderr and
889stdin.
890
891Removed the old python sizers.
892
893Added __add__, __sub__ and __cmp__ (equality check only) for wxPoint
894and wxRealPoint.
895
896Changed the build to make one big extension module instead of one for
897the core and each contrib. This allowed me to do away with the
898libwxPyHelpers.so on unix systems.
899
900Lots of little fixes here and there.
901
902Some hacks on wxGTK to try and make the AutoComplete listbox in the
903wxStyledTextCtrl to behave better. It's still not as nice as on
904wxMSW, but at least it's a bit more usable now.
905
906
907
908
3ca6a5f0
BP
909New in 2.2.1
910------------
911
912Various tweaks, fixes, missing methods, etc.
913
c368d904
RD
914Added example use of wxTaskBarIcon to the demo.
915
3ca6a5f0
BP
916
917
f6bcfd97
BP
918New in 2.2.0
919------------
920
921Added wxLog and friends.
922
923Added wxFrame.ShowFullScreen for MSW.
924
925Added PyShellWindow to the wxPython.lib package.
926
927
928
929New in 2.1.16
930-------------
931
932Added an attribute named labelDelta to the generic buttons that
933specifies how far to offset the label when the button is in the
934depressed state.
935
936Added wxTipProvider and friends. See the demo for an example.
937
938wxGrid can now change the cell highlight colour.
939
940Added wxDragImage.
941
942Fixed printing on wxGTK.
943
944Added wxDateTime, wxTimeSpan, and wxDateSpan to wxPython.utils.
945
946Added wxCalendarCtrl.
947
948WARNING: A while back I asked what should be done about the Magic
949Method Names. (Methods that are automatically turned into event
950handlers by virtue of their name.) The consensus was that it is more
951confusing to have them than to try and expand them to have greater
952coverage. I am finally getting around to removing the code that
953generates the event binding. This means that if you are using any of
954the following method names without a EVT_* call that you need to
955modify your code to add the EVT_* to hook the event to the method.
956
957 OnChar
958 OnSize
959 OnEraseBackground
960 OnSysColourChanged
961 OnInitDialog
962 OnPaint
963 OnIdle
964 OnActivate
965 OnMenuHighlight
966 OnCloseWindow
967 OnScroll
968
969Added wxSpinCtrl.
970
971
972
973
974New in 2.1.15
164b735b
RD
975-------------
976
977Fixed wxTreeCtrl.HitTest to return both the tree item as well as the
978flags that clairify where the click was in relation to the item.
979
854862f5
RD
980Fixed thread state problem in wxTreeCtrl.GetBoundingBox and
981GetSelections.
164b735b 982
99ab9f3b
RD
983Fixed some problems in OGL. Also wxShape.SetClientData and
984.GetClientData can now deal with Python objects.
714d23b4 985
dcd38683 986Added wxListCtrl.SortItems and changed the demo to show how to use it.
714d23b4 987
f6bcfd97
BP
988Plugged a memory leak.
989
990Wrapped the new wxGrid and friends. The old wxGrid class is no longer
991available. There are some incompatibilities, and unfortunately the
992new classes are not documented yet, (however the methods are more
993consistent with each other now so you may be able to guess pretty
994good...)
995
996Updated filebrowsebutton.py and calendar.py with changes from their
997authors. There is now a FileBrowseButtonWithHistory class (what a
998mouthful!) and wxCalendar has printing support.
999
1000Added ActiveXWrapper to the library, and some good demos of it too.
1001It works great for embedding a COM (a.k.a OCX, a.k.a ActiveX) control
1002in a window and calling its methods. It actually creates a new class
1003on the fly that derives from wxWindow, the COM CoClass and others
1004needed to make it all work. The resulting class can be instantiated
1005just like wxWindow, used in sizers, etc. It also responds to all COM
1006method calls, properties, etc., and if the class or a mix-in has
1007matching method names, then the COM events will be propogated back to
1008them.
1009
1010Created a typemap that allows a string to be used for parameters
1011expecting a wxColour type. The string is either a colour name as
1012defined in the wxColourDatabase, or a colour spec of the form
1013"#RRGGBB". See the wxStyledTextCtrl demo for an example.
1014
1015I almost forgot to mention the wxStyledTextCtrl! Yes, the
1016wxStyledTextCtrl is finally in wxPython!! (And the crowd goes
1017wild...) There's no documentaTion yet (the crowd boos and hisses...)
1018but I've included a very readable source file in the
1019wxPython/demo/data directory, a couple fairly good examples, and you
1020can also refer to the Scintilla documentaion at
1021http://www.scintilla.org/ScintillaDoc.html to help fill in the gaps
1022until the docs are done. (The croud murmers contentedly as the tool
1023provider smiles convincingly and removes his flame-proof suit.)
1024
164b735b
RD
1025
1026
1027
9e57c2a0 1028What's new in 2.1.13
6d75ea8f 1029--------------------
9e57c2a0
RD
1030Skipped a version number to match what has been released for wxGTK.
1031
6d75ea8f
RD
1032Updated wxMVCTree and added a demo for it, also fixed layout on GTK
1033and some flicker problems.
1034
1035Added a wrapper class for the Visualization ToolKit (or VTK) in the
1036wxPython.lib.vtk module. (http://www.kitware.com/)
1037
1038Fixed wxTreeCtrl.SetItemImage and GetItemImage to recognise the new
1039"which" parameter.
1040
1041Added wxPython.lib.spashscreen from Mike Fletcher.
1042
1043Added wxPython.lib.filebrowsebutton also from Mike Fletcher.
1044
1045Renamed wxTreeCtrl.GetParent to GetItemParent to avoid a name clash
1046with wxWindow.GetParent.
1047
1048Added wxIntersectRect to compute the intersection of two wxRect's.
1049It is used like this:
1050
1051 intersect = wxIntersectRect(rect1, rect2)
1052
1053If r1 and r2 don't intersect then None is returned, otherwise the
1054rectangle representing the intersection is returned.
1055
1056Some bug fixes for Clipboard and Drag-n-Drop.
1057
9b3d3bc4 1058Rotated text!!! WooHoo! (See wxDC.DrawRotatedText())
6999b0d8
RD
1059
1060Added a set of Generic Buttons to the library. These are simple
1061window classes that look and act like native buttons, but you can have
1062a bit more control over them. The bezel width can be set in addition
1063to colours, fonts, etc. There is a ToggleButton as well as Bitmap
9e57c2a0
RD
1064versions too. They should also serve as a good example of how to
1065create your own classes derived from wxControl.
6d75ea8f 1066
9b3d3bc4
RD
1067The C++ wxToolBar classes have been redone, and so have the wxPython
1068wrappers. There have been slight modifications to some of the methods
1069but shouldn't impact anybody too much. I took the opportunity to add
1070support for setting user data on each toolbar tool. The new AddTool
1071methods look like this:
1072
1073 def AddTool(ID,
1074 bitmap,
1075 pushedBitmap = wxNullBitmap,
1076 toggle = FALSE,
1077 clientData = NULL,
1078 shortHelpString = "",
1079 longHelpString = "")
1080
1081 def AddSimpleTool(ID,
1082 bitmap,
1083 shortHelpString = "",
1084 longHelpString = "",
1085 toggle=FALSE)
1086
1087
1e4a197e 1088There are also corresponding InsertTool and InsertSimpleTool methods
9b3d3bc4
RD
1089that additionally take an integer position as the first parameter.
1090
9e57c2a0 1091Added a wrapper for the new PCX and TIFF ImageHandlers.
9b3d3bc4
RD
1092
1093wxRect now simulates attributes named left, right, top and bottom.
1094
d2103cf2
RD
1095Removed all non wx stuff from the glcanvas module since DA's PyOpenGL
1096is better and compatible with the wxGLCanvas. You can get it at
1097http://starship.python.net:9673/crew/da/Code/PyOpenGL.
9b3d3bc4 1098
3af4e610 1099Added some missing EVT_ functions.
9b3d3bc4 1100
1b55cabf
RD
1101Added Dirk Holtwic's editor classes to the wxPython.lib.editor
1102package.
1103
eec92d76
RD
1104Changed all the "LIST" parameter names to "choices" to match the docs.
1105
fe366bc9
RD
1106More fixes for the wxFloatBar, and it now works on wxGTK even better
1107than wxMSW! (The feat is accomplished by using the wxTB_DOCKABLE
1108style flag instead of trying to float it ourselves.)
1109
9b3d3bc4 1110
6d75ea8f
RD
1111
1112
1113What's new in 2.1.11
1114--------------------
1115Skipped a few version numbers so wxMSW, wxGTK and wxPython are all
1116syncronized.
1117
1118wxImage.SetData now makes a copy of the image data before giving it to
1119wxImage. I mistakenly thought that wxImage would copy the data
1120itself.
1121
1122Fixed wxMSW's notebook so the pages get their size set as they are
1123being added. This should remove the need for our
1124wxNotebook.ResizeChildren hack.
1125
1126wxPanels now support AutoLayout, and wxNotebooks and wxSplitterWindows
1127no longer tell their children to Layout() themselves. This will
1128probably only effect you if you have a wxWindow with AutoLayout inside
1129a notebook or splitter. If so, either change it to a wxPanel or add
1130an EVT_SIZE handler that calls Layout().
1131
1132Fixed deadlock problem that happened when using threads.
1133
1134Added new HTML printing classes.
1135
1136Added wxWindow.GetHandle
1137
1138Apparently wxMouseEvent.Position has been depreciated in wxWindows as
1139it is no longer available by default. You can use GetPositionTuple
1140(returning a tuple with x,y) instead, or GetPosition (returning a
1141wxPoint.)
1142
1143Added wxPostEvent function that allows events to be posted and then
1144processed later. This is a thread-safe way to interact with the GUI
1145thread from other threads.
1146
1147Added Clipboard and Drag-and-Drop classes.
1148
1149Added wxFontEnumerator.
1150
1151Many updates to wxMenu, wxMenuBar.
1152
1153wxPyEvent and wxPyCommandEvent derived classes now give you the actual
1154Python object in the event handler instead of a new shadow.
1155
1156Added a Calendar widget from Lorne White to the library.
1157
1158Made some fixes to the wxFloatbar. It still has some troubles on
1159wxGTK...
1160
1161Added an MVC tree control from Bryn Keller to the library.
1162
1163
1164
1165
1166What's new in 2.1.5
1167-------------------
1168This is a quick bug-fix release to take care of a few nasties that
1169crept in at the last minute before 2.1.4 was called done. No new
1170major features.
1171
1172
1173
1174What's new in 2.1.4
1175--------------------
1176
1177This release is NOT syncronized with a snapshot release of wxGTK or
1178wxMSW. For MSW this isn't much of a problem since you can get the
1179binaries from the web site. For other platforms you'll have to build
1180wxGTK from CVS. (See http://web.ukonline.co.uk/julian.smart/wxwin/cvs.htm)
1181To get the same set of sources from CVS that I used, checkout using
1182the wxPy-2-1-4 tag.
1183
1184Now back to what's new...
1185
1186Much more support for event-less callbacks and add-on modules.
1187
1188Created add-on module with wxOGL classes.
1189
1190Added wxWindow.GetChildren(). Be careful of this. It returns a *copy*
1191of the list of the window's children. While you are using the list if
1192anything changes in the real list (a child is deleted, etc.) then the
1193list you are holding will suddenly have window references to garbage
1194memory and your app will likely crash. But if you are careful it works
1195great!
1196
1197Added a bunch of new and missing methods to wxTreeCrtl. The
1198SortChildren method is now supported, but currently only for the
1199default sort order.
1200
1201Added typemaps for wxSize, wxPoint, wxRealPoint, and wxRect that allow
1202either the actual objects or Python sequence values to be used. For
1203example, the following are equivallent:
1204
1205 win = wxWindow(parent, size = wxSize(100, 100))
1206 win = wxWindow(parent, size = (100, 100))
1207
1208Super-charged the wxHtml module. You can now create your own tag
1209handlers and also have access to the parser and cell classes. There
1210is a tag handler in the library at wxPython.lib.wxpTag that
1211understands the WXP tag and is able to place wxPython windows on HTML
1212pages. See the demo for an example.
1213
1214A bunch of the methods of wxMenuBar were previously ifdef'd out for
1215wxGTK. Added them back in since the methods exist now.
1216
1217Wrapped the wxHtmlHelpController and related classes.
1218
1219Wrapped the C++ versions of wxSizer and friends. The Python-only
1220versions are still in the library, but depreciated. (You will get a
1221warning message if you try to use them, but the warning can be
1222disabled.) The usage of the C++ versions is slightly different, and
1223the functionality of wxBorderSizer is now part of wxBoxSizer. I have
1224added a few methods to wxSizer to try and make the transition as
1225smooth as possible, I combined all Add methods into a single method
1226that handles all cases, added an AddMany method, etc. One step I did
1227not take was to make the default value of flag in the Add method be
1228wxGROW. This would have made it more backward compatible, but less
1229portable to and from wxWin C++ code. Please see the docs and demo for
1230further details.
1231
1232Added wxPyEvent and wxPyCommandEvent classes, derived from wxEvent and
1233wxCommandEvent. Each of them has SetPyData and GetPyData methods that
1234accept or return a single Python object. You can use these classes
1235directly or derive from them to create your own types of event objects
1236that can pass through the wxWindows event system without loosing their
1237Python parts (as long as they are stored with SetPyData.) Stay tuned
1238for more info and examples in future releases.
1239
1240Added wxPython.lib.grids as an example of how to derive a new sizer
1241from the C++ sizers. In this module you will find wxGridSizer and
1242wxFlexGridSizer. wxGridSizer arrainges its items in a grid in which
1243all the widths and heights are the same. wxFlexgridSizer allows
1244different widths and heights, and you can also specify rows and/or
1245columns that are growable. See the demo for a couple examples for how
1246to use them.
1247
1248Added the wxValidator class, and created a class named wxPyValidator
1249that should be used for the base class of any Python validators. See
1250the demo for an example. Please note that you MUST implement a Clone
1251method in your validator classes because of the way some things work
1252in the underlying C++ library. I did not add wxTextValidator because
1253of some issues of how it transfers data to and from a wxString, which
1254in wxPython is automatically translated to and from Python strings, so
1255there would never be a concrete wxString that would hang around long
1256enough for the validator to do its job. On the other hand, it should
1257be real easy to duplicate the functionality of wxTextValidator in a
1258pure Python class derived from wxPyValidator.
1259
1260I've finally added a feature that has been on my list for close to two
1261years! Ever wondered what that zero is for when you create your app
1262object? Well now you can leave it out or explicitly set it to a true
1263value. This value now controls what is to be done with sys.stdout and
1264sys.stderr. A false value leaves them alone, and a true value sets
1265them to an instance of wxPyOnDemandOutputWindow. (On windows the
1266default is true, on unix platforms the default is false.) This class
1267creates a frame containing a wxTextCtrl as soon as anything is written
1268to sys.stdout or sys.stderr. If you close the window it will come
1269back again the next time something is written. (You can call
1270app.RestoreStdio to turn this off.) If you would rather that the stdio be
1271redirected to a file, you can provide a second parameter to your app
1272object's constructor that is a filename. If you want to use your own
1273class instead of wxPyOnDemandOutputWindow you can either implement
1274RedirectStdio() in you app class or change the value of
1275wxApp.outputWindowClass like this:
1276
1277 class MyApp(wxApp):
1278 outputWindowClass = MyClass
1279
1280 def OnInit(self):
1281 frame = MyFrame()
1282 self.SetTopWindow(frame)
1283 return true
1284
1285Please see the implementation of wxPyOnDemandOutputWindow and wxApp in
1286wx.py for more details. A few words of caution: if you are running
1287your app in a debugger, changing sys.stdout and sys.stderr is likely
1288to really screw things up.
1289
1290Added wxCaret. Unfortunately it's author has still not documented it
1291in the wxWindows docs...
1292
1293Some new 3rd party contributions in wxPython.lib. PyShell, in
1294shell.py is an interesting implementaion of an interactive Python
1295shell in wxWindows. floatbar.py has a class derived from wxToolBar
1296that can sense mouse drags and then reparent itself into another
1297frame. Moving the new frame close to where it came from puts the tool
1298bar back into the original parent. (Unfortunately there is currently
1299a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some
1300problems...)
1301
1302
1303
1304
1305What's new in 2.1b3
1306--------------------
1307
1308This release is syncronized with release 2.1 snapshot 9 of wxWindows.
1309
1310Switched to using SWIG from CVS (see http://swig.cs.uchicago.edu/cvs.html)
1311for some of the new features and such. Also they have encorporated my
1312patches so there is really no reason to stick with the current (very
1313old) release... This version of SWIG gives the following new
1314features:
1315
1316 1. Keyword arguments. You no longer have to specify all the
1317 parameters with defaults to a method just to specify a
1318 non-default value on the end. You can now do this instead:
1319
1320 win = wxWindow(parent, -1, style = mystyle)
1321
1322 2. There is now an an equivalence between Python's None and C++'s
1323 NULL. This means that any methods that might return NULL will
1324 now return None and you can use none where wxWindows might be
1325 expecting NULL. This makes things much more snake-ish.
1326
1327
1328There is a new build system based on a new Python program instead of
1329raw makefiles. Now wxPython builds are virtually the same on MSW or
1330Unix systems. See the end of this file for new build instructions and
1331see distrib/build.py for more details.
1332
1333wxDC.Bilt now includes the useMask parameter, and has been split into
1334two different versions. wxDC.BlitXY is like what was there before and
1335takes raw coordinants and sizes, and the new wxDC.Blit is for the new
1336interface using wxPoints and a wxSize.
1337
1338
1339
1340
1341
1342What's new in 2.1b2
1343--------------------
1344
1345Added the missing wxWindow.GetUpdateRegion() method.
1346
1347Made a new change in SWIG (update your patches everybody) that
1348provides a fix for global shadow objects that get an exception in
1349their __del__ when their extension module has already been deleted.
1350It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
1351line 496 if you want to do it by hand.
1352
1353It is now possible to run through MainLoop more than once in any one
1354process. The cleanup that used to happen as MainLoop completed (and
1355prevented it from running again) has been delayed until the wxc module
1356is being unloaded by Python.
1357
1358I fixed a bunch of stuff in the C++ version of wxGrid so it wouldn't
1359make wxPython look bad.
1360
1361wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added
1362wxWindow.PopupMenuXY to be consistent with some other methods.
1363
1364Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
1365
1366You can now provide your own app.MainLoop method. See
1367wxPython/demo/demoMainLoop.py for an example and some explaination.
1368
1369Got the in-place-edit for the wxTreeCtrl fixed and added some demo
1370code to show how to use it.
1371
1372Put the wxIcon constructor back in for GTK as it now has one that
1373matches MSW's.
1374
1375Added wxGrid.GetCells
1376
1377Added wxSystemSettings static methods as functions with names like
1378wxSystemSettings_GetSystemColour.
1379
1380Removed wxPyMenu since using menu callbacks have been depreciated in
1381wxWindows. Use wxMenu and events instead.
1382
1383Added alternate wxBitmap constructor (for MSW only) as
1384 wxBitmapFromData(data, type, width, height, depth = 1)
1385
1386Added a helper function named wxPyTypeCast that can convert shadow
1387objects of one type into shadow objects of another type. (Like doing
1388a down-cast.) See the implementation in wx.py for some docs.
1389
1390Fixed wxImage GetData and SetData to properly use String objects for
1391data transfer.
1392
1393Added access methods to wxGridEvent.
1394
1395New Makefile/Setup files supporting multiple dynamic extension modules
1396for unix systems.
1397
1398Fixes for the wxGLCanvas demo to work around a strange bug in gtk.
1399
1400SWIG support routines now compiled separately instead of being bundled
1401in wx.cpp.
1402
1403
1404
1405
1406
1407What's new in 2.1b1
1408--------------------
1409Fixed wxComboBox.SetSelection so that it actually sets the selected
1410item. (Actually just removed it from wxPython and let it default to
1411wxChoice.SetSelection which was already doing the right thing.)
1412
1413Added the Printing Framework.
1414
1415Switched back to using the wxWindows DLL for the pre-built Win32
1416version. The problem was needing to reinitialize static class info
1417data after loading each extension module.
1418
1419Lots of little tweaks and additions to reflect changes to various
1420wxWindows classes.
1421
1422Fixed a bug with attaching objects to tree items. Actually was a
1423symptom of a larger problem with not obtaining the interpreter lock
1424when doing any Py_DECREFs.
1425
1426wxSizer and friends. Sizers are layout tools that manage a colection
1427of windows and sizers. Different types of sizers apply different
1428types of layout algorithms. You saw it here first! These classes are
1429not even in the wxWindows C++ library yet!
1430
1431
1432
1433What's new in 2.0b9
1434-------------------
1435Bug fix for ListCtrl in test4.py (Was a missing file... DSM!)
1436
1437Bug fix for occassional GPF on Win32 systems upon termination of a
1438wxPython application.
1439
1440Added wxListBox.GetSelections returning selections as a Tuple.
1441
1442Added a wxTreeItemData that is able to hold any Python object and be
1443associated with items in a wxTreeCtrl. Added test pytree.py to show
1444this feature off.
1445
1446Added wxSafeYield function.
1447
1448OpenGL Canvas can be optionally compiled in to wxPython.
1449
1450Awesome new Demo Framework for showing off wxPython and for learning
1451how it all works.
1452
1453The pre-built Win32 version is no longer distributing the wxWindows
1454DLL. It is statically linked with the wxWindows library instead.
1455
1456Added a couple missing items from the docs.
1457
1458Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler,
1459wxGIFHandler and wxBMPHandler.
1460
1461Added new methods to wxTextCtrl.
1462
1463Fixed some problems with how SWIG was wrapping some wxTreeCtrl
1464methods.
1465
1466
1467
1468What's new in 2.0b8
1469-------------------
1470Support for using Python threads in wxPython apps.
1471
1472Several missing methods from various classes.
1473
1474Various bug fixes.
1475
1476
1477
1478What's new in 2.0b7
1479-------------------
1480Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.
1481
1482Added missing constructor and other methods for wxMenuItem.
1483
1484
1485
1486What's new in 2.0b6
1487-------------------
1488Just a quickie update to fix the self-installer to be compatible with
1489Python 1.5.2b2's Registry settings.
1490
1491
1492What's new in 2.0b5
1493-------------------
1494Well obviously the numbering scheme has changed. I did this to
1495reflect the fact that this truly is the second major revision of
1496wxPython, (well the third actually if you count the one I did for
1497wxWindows 1.68 and then threw away...) and also that it is associated
1498with the 2.0 version of wxWindows.
1499
1500I have finally started documenting wxPython. There are several pages
1501in the wxWindows documentation tree specifically about wxPython, and I
1502have added notes within the class references about where and how wxPython
1503diverges from wxWindows.
1504
1505Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a
1506window handle. If you can get the window handle into the python code,
1507it should just work... More news on this later.
1508
1509Added wxImageList, wxToolTip.
1510
1511Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the
1512wxRegConfig class.
1513
1514As usual, some bug fixes, tweaks, etc.
1515
1516
1517
1518What's new in 0.5.3
1519-------------------
1520Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc.
1521
1522Various cleanup, tweaks, minor additions, etc. to maintain
1523compatibility with the current wxWindows.
1524
1525
1526
1527What's new in 0.5.0
1528-------------------
1529Changed the import semantics from "from wxPython import *" to "from
1530wxPython.wx import *" This is for people who are worried about
1531namespace pollution, they can use "from wxPython import wx" and then
1532prefix all the wxPython identifiers with "wx."
1533
1534Added wxTaskbarIcon for wxMSW.
1535
1536Made the events work for wxGrid.
1537
1538Added wxConfig.
1539
1540Added wxMiniFrame for wxGTK.
1541
1542Changed many of the args and return values that were pointers to gdi
1543objects to references to reflect changes in the wxWindows API.
1544
1545Other assorted fixes and additions.
1546
1547
1548
1549
1550What's new in 0.4.2
1551-------------------
1552
1553wxPython on wxGTK works!!! Both dynamic and static on Linux and
1554static on Solaris have been tested. Many thanks go to Harm
1555<H.v.d.Heijden@phys.tue.nl> for his astute detective work on tracking
1556down a nasty DECREF bug. Okay so I have to confess that it was just a
1557DSM (Dumb Stupid Mistake) on my part but it was nasty none the less
1558because the behavior was so different on different platforms.
1559
1560The dynamicly loaded module on Solaris is still segfaulting, so it
1561must have been a different issue all along...
1562
1563
1564
1565What's New in 0.4
1566-----------------
1567
15681. Worked on wxGTK compatibility. It is partially working. On a
1569Solaris/Sparc box wxPython is working but only when it is statically
1570linked with the Python interpreter. When built as a dyamically loaded
1571extension module, things start acting weirdly and it soon seg-faults.
1572And on Linux both the statically linked and the dynamically linked
1573version segfault shortly after starting up.
1574
15752. Added Toolbar, StatusBar and SplitterWindow classes.
1576
15773. Varioius bug fixes, enhancements, etc.
1578
1579----------------------------------------------------------------------