]> git.saurik.com Git - wxWidgets.git/blame - wxPython/CHANGES.txt
report all ASCII keys, not just the US-ASCII ones
[wxWidgets.git] / wxPython / CHANGES.txt
CommitLineData
6d75ea8f
RD
1CHANGES.txt for wxPython
2
3----------------------------------------------------------------------
4
b5a5d647
RD
52.3.3
6-----
b5a5d647
RD
7Added wxSplashScreen.
8
68320e40
RD
9Added wxGenericDirCtrl.
10
ce914f73 11Added wxMultiChoiceDialog.
68320e40 12
769a9cb2
RD
13The calltip window and autocomplete window in wxSTC will now use a
14wxPopupWindow if available so they can extend beyond the client area
15of the STC if needed.
16
f74ff5ef
RD
17Finished wrapping and providing typemaps for wxInputStream and also
18added the stream ctor and other methods for wxImage so images can now
19be loaded from any Python "file-like" object.
20
afb810d9
RD
21Changed the img2py tool to use PNG instead of XPM for embedding image
22data in Python source code, and the generated code now uses streams to
23convert the image data to wxImage, wxBitmap, or wxIcon.
f74ff5ef 24
68bc8549
RD
25Added the wxPython.lib.rcsizer module which contains RowColSizer.
26This sizer is based on code from Niki Spahiev and lets you specify a
27row and column for each item, as well as optional column or row
28spanning. Cells with no item assigned to it are just left blank.
29Stretchable rows or columns are specified and work the same as in
30wxFlexGridSizer.
96de41c2 31
18fc9fa3
RD
32Updated XRCed from Roman Rolinsky
33
e9159fe8
RD
34Added wxBufferedDC.
35
1a2fb4cd
RD
36Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45
37
b96c7a38
RD
38UNICODE!
39
40 wxWindows/wxPython can be compiled with unicode support enabled or
41 disabled. Previous to wxPython 2.3.3 non-unicode mode was always
42 used. Starting with 2.3.3 either mode is supported, but only if
43 it is also available in wxWindow on the platform. Currently
44 wxWindows only supports unicode on MS Windows platforms, but with
45 the recent release of GTK+ 2.0 it is only a matter of time until
46 it can be done on wxGTK (Linux and other unixes) as well.
47
48 Unicode works best on platforms in the NT branch of the Windows
49 family tree (NT, win2k, XP) but it is now also possible to use the
50 same unicode binaries on win95/98/ME platforms as well! This is
51 done by using a special library and DLL in the application called
52 MSLU, (Microsoft Layer for Unicode). It simply gets out of the
53 way if the app is run on an NT box, or if run on a win9x box it
54 loads a special DLL that provides the unicode versions of the
15030c51
RD
55 windows API. So far I have not been able to get this to work
56 perfectly on win9x. Most things work fine but wxTaskBarIcon for
57 example will cause a crash if used with the unicode build on
58 win95.
b96c7a38
RD
59
60 So how do you use it? It's very simple. When unicode is enabled,
61 then all functions and methods in wxPython that return a wxString
62 from the C++ function will return a Python unicode object, and
63 parameters to C++ functions/methods that expect a wxString can
64 accept either a Python string or unicode object. If a string
65 object is passed then it will be decoded into unicode using the
66 converter pointed to by wxConvCurrent, which will use the default
67 system encoding. If you need to use a string in some other
68 encoding then you should convert it to unicode using the Python
69 codecs first and then pass the unicode string to the wxPython
70 method.
71
726fc00a 72Added wxListCtrlAutoWidthMixin from Erik Westra.
b96c7a38 73
0e9b78ce
RD
74Added wxIconBundle and wxTopLevelWindow.SetIcons.
75
68bc8549
RD
76Added wxLocale and wxEncodingConverter.
77
0e9b78ce 78
b5a5d647
RD
79
80
4268f798 812.3.2.1
71f1334b 82-------
4268f798
RD
83Changed (again) how the Python global interpreter lock is handled as
84well as the Python thread state. This time it works on SMP machines
85without barfing and is also still compatible with Python debuggers.
86
87Added some patches from library contributors.
88
89
90
71f1334b 91
ebf4302c 922.3.2
4f3449b4
RD
93-----
94Added EVT_HELP, EVT_HELP_RANGE, EVT_DETAILED_HELP,
95EVT_DETAILED_HELP_RANGE, EVT_CONTEXT_MENU, wxHelpEvent,
96wxContextMenuEvent, wxContextHelp, wxContextHelpButton, wxTipWindow,
97and a demo to show them in action.
98
fea018f8
RD
99Deprecated PyShell and PyShellWindow, added a snapshot of PyCrust (see
100http://sourceforge.net/projects/pycrust/. )
4f3449b4 101
c7e7022c 102Added the new virtual list capabilities to wxListCtrl.
4f3449b4 103
00b6c4e3 104Added a wxSTC style editor from Riaan Booysen to the sample apps.
4f3449b4 105
09f3d4e6
RD
106Added XRCed to the wxPython Tools directory, contributed by Roman
107Rolinsky.
108
109Added a new "constructor" to most of the window classes that calls the
6d19860f 110default C++ contructor, (the one with no parameters) and also added the
09f3d4e6
RD
111coresponding Create(...) method. This allows you to do a 2-step
112creation of windows which is sometimes required for doing things such
113as setting extended style flags before the window is created, or for
114passing the object to the XRC resource system to be created from the
115resource. The name of the new "constructor" is the original name of
116the class with a "Pre" in it. For example, wxPreWindow, wxPreFrame,
117etc.
118
fe0aca37 119Updated to version 1.40 of Scintilla and updated wxStyledTextCtrl
a6978454
RD
120accordingly. While doing this update I dropped the wxLB_SORT style
121from the wxListBox created for the AutoComplete functionality. This
122means that you will have to sort the keyword lists yourself, but you
123are free to do case sensitive or case insensitive sorts and set the
124wxSTC flag accordingly.
4f3449b4 125
6d19860f
RD
126Updated wxColumnSorterMixin to also be able to place sort icons on the
127column headers, and updated the wxListCtrl demo to show it off by
128using wxColumnSorterMixin.
129
53fe40ba 130Added wxGenBitmapTextButton, TablePrint, etc. contribs from Lorne White.
ddcb3d83 131
6d8b4f8d 132Added wxNativeFontInfo and wxFontMapper.
4f3449b4 133
431f4c16 134Added pySketch to the samples.
4f3449b4 135
19a97bd6
RD
136Significantly changed how the Python interpreter lock and thread state
137are managed, which should fix the problem of running on a
138multi-processor machine.
139
76bfdc78
RD
140Added wxPyLog so log targets can be created in Python to handle log
141messages however is wished. See demo/Main.py for an example.
142
0122b7e3
RD
143Added wxFindReplaceDialog.
144
71f1334b
RD
145The second phase of OOR is implemented for wxEvtHandler, wxSizer,
146wxShape and derived classes. This means that functions and methods
147that return an object derived from wxEvtHandler that was originally
148created in Python, will return the original Python object (if it still
149exists) instead of letting SWIG wrap a new shadow object around the
150original C++ pointer.
76bfdc78 151
9d37f964
RD
152Added some optimization methods to wxDC: GetBoundingBox, DrawLineList,
153DrawPointList.
154
79f1bf32
RD
155Added a set of sophisticated Error Dialogs from Chris Fama.
156
729f4276
RD
157Added wxRightTextCtrl from Josu Oyanguren to wxPython.lib for aligning
158text in a wxTextCtrl to the right side.
76bfdc78 159
71f1334b 160Added wxURLDataObject and an example showing drag and drop of URLs to
b37c7e1d
RD
161and from web browsers. It's still not 100% bullet-proof for all types
162of browsers, but it works for the majority of cases with the popular
163browsers on Windows. On wxGTK it seems that only Netscape 4.x works,
164if anybody has any suggestions about this please bring it up on the
165wx-dev list.
166
167Added wxStopWatch.
168
169Added wxMimeTypesManager and wxFileType.
170
c0c84fa0
RD
171Passing None for the handler parameter to one of the EVT_** functions
172will now Disconnect the event.
173
174Added wxPopupWindow and wxPopupTransientWindow.
175
7dbce44a
RD
176Added wxFileHistory.
177
71f1334b 178Added wxDynamicSashWindow, which allows you to endlessly split windows
ebf4302c 179by dragging a little tab next to the scrollbars. Added a demo to show
71f1334b 180this and also the ability of multiple wxStyledTextCtrls to share the
ebf4302c
RD
181same document.
182
611dc22c
RD
183Added wxEditableListBox gizmo.
184
78e8819c
RD
185Updated wxEditor with lots of enhancements from Steve Howell and Adam
186Feuer.
187
188Added the "SplitTree gizmos" which are a collection of classes that
189were designed to operate together and provide a tree control with
190additional columns for each item. The classes are
191wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
192wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
193also be useful by themselves.
1918b6f7 194
4a61305d
RD
195Added wxDllWidget from Vaclav Slavik which allows wx widgets derived
196from wxWindow to be loaded from a C++ .dll (or .so) and be used in a
197wxPython program, without the widget having to be SWIGged first. The
198visible API of the widget is limited to wxWindow methods plus a
199SendCommand method, but it is still quite powerful. See
200wxPython/contrib/dllwidget and wxPython/demo/dllwidget for more
201details.
202
b37c7e1d 203
fea018f8
RD
204
205
286e2db6 2062.3.1
bf7945ce
RD
207-----
208Added EVT_GRID_EDITOR_CREATED and wxGridEditorCreatedEvent so the user
209code can get access to the edit control when it is created, (to push
210on a custom event handler for example.)
211
d56cebe7
RD
212Added wxTextAttr class and SetStyle, SetDefaultStyle and
213GetDefaultStyle methods to wxTextCtrl.
214
215Added ability to use xml resource files. Still need to add ability to
216subclass wxXmlResourceHandler, etc...
217
218Added wxGridAutoEditMixin to the mixins library package.
219
220Made ColourSelect be derived from wxButton.
221
286e2db6
RD
222Fixed img2py to work correctly with Python 2.1.
223
224Added enhanced wxVTKRenderWindow by Prabhu Ramachandran
225
bf7945ce 226
9416aa89
RD
227
2282.3.0
19cf4f80
RD
229-----
230Removed initial startup dependency on the OpenGL DLLs so only the
9416aa89 231glcanvasc.pyd depends on them, (on wxMSW.)
19cf4f80
RD
232
233Changed wxFont, wxPen, wxBrush to not implicitly use the
9416aa89
RD
234wxThe[Font|Pen|Brush]List objects behind the scenes, but to use normal
235ctor and dtors.
19cf4f80
RD
236
237Exposed the wxThe[Font|Pen|Brush]List to wxPython.
238
1af9e5c5 239Also added wxTheColourDatabase and added a library module (in the
19cf4f80
RD
240wxPython.lib.colourdb module) to load LOTS more colour names into the
241colour database.
242
6e18ca6c
RD
243Added wxWakeUpMainThread, wxMutexGuiEnter, wxMutexGuiLeave,
244wxMutexGuiLocker and wxThread_IsMain to assist with dealing with GUI
245access from non-GUI threads.
246
1af9e5c5
RD
247wxPyOnDemandOutputWindow is now (more) thread safe if non-GUI threads
248use print, sys.stdout.write, etc.
6e18ca6c 249
6bb38ab6
RD
250Added CreateTextSizer and CreateButtonSizer to wxDialog
251
6bb38ab6
RD
252Added wxPython/lib/infoframe.py from Chris Fama. It contains a class
253that can be used in place of wxPyOnDemandOutputWindow.
254
49875c53
RD
255Added colourselect.py, imagebrowser.py and an updated calendar.py to
256wxPython/lib from Lorne White.
257
e0672e2f
RD
258Added patch to wxPoint_LIST_helper from Tim Hochberg that should make
259it gobs faster in certain situations.
6bb38ab6 260
1af9e5c5
RD
261Added tools that will take an image file in a wx supported format and
262convert it to data embedded in a Python source file. The image is
9416aa89
RD
263converted to XPM format which is essentially a list of strings
264containing info about each pixel. The image's transparency mask is
265included, if there is one, or a mask can be added if a mask colour is
266specified on the command line. It is then pickled and optionally
267compressed and written to a Python source file along with functions to
268convert it to either a wxBitmap or a wxImage. See
269wxPython/demo/images.py for examples, and wxPython/Tools/img2py.py for
270the implementation.
1af9e5c5
RD
271
272Fixed wxStyledTextCtrl to be much faster on wxGTK. There was some
273experimental code that got left in place that ended up causing way too
274many refreshes.
275
d1679124
RD
276A couple more hacks in my_distutils.py so wxPython can be built with
277the distutils that comes with Python 2.1.
1af9e5c5 278
d7ec6564 279Added a ton of missing methods for wxPrintData.
1af9e5c5 280
d7ec6564 281Switched to InnoSetup for MSW distributions.
19cf4f80 282
3b36695d
RD
283Added wxToggleButton.
284
285Fixed bug that prevented wxTreeCtrl.OnCompareItems from being called.
d1679124 286
9416aa89
RD
287Added some methods to wxGrid:
288 GetCellHighlightPenWidth
289 GetCellHighlightROPenWidth
290 SetCellHighlightPenWidth
291 SetCellHighlightROPenWidth
292 GetGridWindow
293 GetGridRowLabelWindow
294 GetGridColLabelWindow
295 GetGridCornerLabelWindow
296
297Added wxGetClientDisplayRect which on wxMSW returns a wxRect
298representing the area on screen not occupied by the taskbar and such.
299On other platforms it is equivallent to wxGetDisplaySize.
300
301
302***---***---***---***---***---***---***---***---***---***---***---
303 Implemented the first phase of OOR (Original Object Return). See
304 the text in the demo for more details of what this means, but in a
305 nutshell methods such as wxWindow.GetParent or FindWindowById will
306 now return a shadow object of the proper type if it can. By
307 "proper type" I mean that if the wxWindow pointer returned from
308 FindWindowById really points to a wxButton then the Python object
309 constructed will be of a wxButtonPtr class instead of wxWindowPtr
310 as before. This should reduce or eliminiate the need for
311 wxPyTypeCast. (Woo Hoo!) The objects returned are still not the
312 original Python object, but that is the next step. (Although it
313 will probably only work on Python 2.1 and beyond because it will
314 use weak references.)
315
316 This first phase of the OOR plan is fairly significant and has
317 required a lot of changes all over wxPython, most of which should
318 be transparent to you, however I'm not 100% sure that it didn't
319 introduce any new bugs that are hiding somewhere and didn't get
320 stomped on during my testing. So please be sure to test everything
321 thoroughly when you install this version and be sure to report any
322 object-type related oddities to me.
323***---***---***---***---***---***---***---***---***---***---***---
324
325There is now a wxObject class that most other classes derive from like
326in C++, but the methods provided don't really match but are wxPython
bf7945ce
RD
327specific. It could have been added long ago but OOR required it so it
328finally got done.
9416aa89
RD
329
330Finally added wxPyLineShape.GetLineControlPoints, which has been on my
331list for a while. The above OOR modification made this easier.
d1679124 332
10e07c70 333Fixed the __cmp__ methods for wxPoint and others.
419c299a 334
493f1553
RD
335Added wxWave.
336
30aaddfe
RD
337Added the wxPython.lib.mixins package to the library, it is where
338useful mix-in classes can be placed. Currently there is one to help
bf7945ce
RD
339make the columns in a wxListCtrl sortable, and the MagicIMageList from
340Mike Fletcher. If you have any custom code that can be factored out
341of existing classes into a mix-in that would be useful to others
30aaddfe
RD
342please send it to me for inclusion in this package.
343
25832b3f
RD
344Added a few little sample applications to help newbies to get started
345by having smaller functional apps to play with. They can be found in
346wxPython/samples.
347
493f1553 348
19cf4f80
RD
349
350
b075a3bb
RD
3512.2.6
352-----
353
354No changes happened in the Python wrappers for this release, only
355changes and fixes in the wxWindows library.
356
1b62f00d 357
19cf4f80 358
1b62f00d 3592.2.5
185d7c3e
RD
360-----
361
362New typemaps for wxString when compiling for Python 2.0 and beyond
363that allow Unicode objects to be passed as well as String objects. If
364a Unicode object is passed PyString_AsStringAndSize is used to convert
365it to a wxString using the default encoding.
366
367Fixed the generic buttons so tool tips work for them.
368
369Fixed a bug in the demo's tree control.
370
371Added a listbox to the listbox demo that shows how to find items with
1e7ecb7b 372a matching prefix as keys are typed.
185d7c3e
RD
373
374Added code to the wxListCtrl demo to show how to get text from a
375column in report mode.
376
377Added code to the toolbar demo to clear the long help from the status
378bar after 2 seconds.
379
380Added wxJoystick.
381
382Fixed wxTimer so it can be used as described in the docs, either with
383a Notify method in a subclass, or sending an event to a wxEvtHandler
384object, (usually a window.)
385
386Added wxNotifyEvent.Allow()
387
de20db99
RD
388Fixed GOBS of reference leaks.
389
1e7ecb7b
RD
390Massive code changes and cleanup to allow wxPython to be split into
391multiple extension modules again. A Python CObject is used to allow
1b62f00d
RD
392the "export" of SWIG functions and other common helper functions from
393the wxc module to other modules, even if they are in separate shared
1e7ecb7b
RD
394libraries. Should also be usable from 3rd party code, just include
395wxPython/src/export.h
396
397Changed the default setup so the following are built as separate
398extension modules: calendar, glcanvas, grid, html, ogl, stc, and
399utils. Will probably add more later.
400
1b62f00d
RD
401Changed the wxPrinterDC to use the new constructor taking a
402wxPrintData object. The old ctor is still there using the
403wxPrinterDC2 name.
404
405Added wxPython.lib.anchors.py from Riaan Booysen. It contains a class
406that implements Delphi's Anchors with wxLayoutConstraints.
407
408Added wxPython.lib.fancytext from Timothy Hochberg.
409
410Changed the GenericButtons to send their event in idle time, so the
411mouse won't be captured when the event handler is called.
412
413Added wxPython.lib.rpcMixin from Greg Landrum, although it's not
414integrated with the demo yet. It allows a wxPython GUI to be an
415XML-RPC server.
416
185d7c3e
RD
417
418
c368d904
RD
419New in 2.2.2
420------------
421
422Significantly changed how the wxStyledtextCtrl code that wraps
423Scintilla is implemented. Most of it is now automatically generated
424from an interface definition file provided by Scintilla. This means
425that it will be much easier to stay in sync with new Scintilla
426releases, but also means that some of the method and identifier names
427have changed. See wxPython/demo/data/stc.h for a copy of the C++
428interface from which the Python interface is generated. There is now
429some inline documentation in that file that should really help explain
430how things work.
431
432I am now using the Python Distutils to build wxPython and to make some
433of the distribution files. (See http://www.python.org/sigs/distutils-sig/)
434This means no more messing with my kludgy build.py/Makefile hack,
435builds will be more consistent with other Python extensions that also
436use Distutils, and will hopefully make wxPython easier to build for
437platforms where there have been troubles before. If you are building
438wxPython for Python 1.5.2 or for 1.6, then you will need to get and
439install version 1.0 of Distutils from the website above. If you are
440using Python 2.0 then you already have it.
441
442Added wxInputStream and the wxFileSystem family of classes,
443contributed by Joerg Baumann.
444
445Added wxProcess and support for it to wxExecute. wxProcess lets you
446get notified when an asyncronous child process terminates, and also to
447get input/output streams for the child process's stdout, stderr and
448stdin.
449
450Removed the old python sizers.
451
452Added __add__, __sub__ and __cmp__ (equality check only) for wxPoint
453and wxRealPoint.
454
455Changed the build to make one big extension module instead of one for
456the core and each contrib. This allowed me to do away with the
457libwxPyHelpers.so on unix systems.
458
459Lots of little fixes here and there.
460
461Some hacks on wxGTK to try and make the AutoComplete listbox in the
462wxStyledTextCtrl to behave better. It's still not as nice as on
463wxMSW, but at least it's a bit more usable now.
464
465
466
467
3ca6a5f0
BP
468New in 2.2.1
469------------
470
471Various tweaks, fixes, missing methods, etc.
472
c368d904
RD
473Added example use of wxTaskBarIcon to the demo.
474
3ca6a5f0
BP
475
476
f6bcfd97
BP
477New in 2.2.0
478------------
479
480Added wxLog and friends.
481
482Added wxFrame.ShowFullScreen for MSW.
483
484Added PyShellWindow to the wxPython.lib package.
485
486
487
488New in 2.1.16
489-------------
490
491Added an attribute named labelDelta to the generic buttons that
492specifies how far to offset the label when the button is in the
493depressed state.
494
495Added wxTipProvider and friends. See the demo for an example.
496
497wxGrid can now change the cell highlight colour.
498
499Added wxDragImage.
500
501Fixed printing on wxGTK.
502
503Added wxDateTime, wxTimeSpan, and wxDateSpan to wxPython.utils.
504
505Added wxCalendarCtrl.
506
507WARNING: A while back I asked what should be done about the Magic
508Method Names. (Methods that are automatically turned into event
509handlers by virtue of their name.) The consensus was that it is more
510confusing to have them than to try and expand them to have greater
511coverage. I am finally getting around to removing the code that
512generates the event binding. This means that if you are using any of
513the following method names without a EVT_* call that you need to
514modify your code to add the EVT_* to hook the event to the method.
515
516 OnChar
517 OnSize
518 OnEraseBackground
519 OnSysColourChanged
520 OnInitDialog
521 OnPaint
522 OnIdle
523 OnActivate
524 OnMenuHighlight
525 OnCloseWindow
526 OnScroll
527
528Added wxSpinCtrl.
529
530
531
532
533New in 2.1.15
164b735b
RD
534-------------
535
536Fixed wxTreeCtrl.HitTest to return both the tree item as well as the
537flags that clairify where the click was in relation to the item.
538
854862f5
RD
539Fixed thread state problem in wxTreeCtrl.GetBoundingBox and
540GetSelections.
164b735b 541
99ab9f3b
RD
542Fixed some problems in OGL. Also wxShape.SetClientData and
543.GetClientData can now deal with Python objects.
714d23b4 544
dcd38683 545Added wxListCtrl.SortItems and changed the demo to show how to use it.
714d23b4 546
f6bcfd97
BP
547Plugged a memory leak.
548
549Wrapped the new wxGrid and friends. The old wxGrid class is no longer
550available. There are some incompatibilities, and unfortunately the
551new classes are not documented yet, (however the methods are more
552consistent with each other now so you may be able to guess pretty
553good...)
554
555Updated filebrowsebutton.py and calendar.py with changes from their
556authors. There is now a FileBrowseButtonWithHistory class (what a
557mouthful!) and wxCalendar has printing support.
558
559Added ActiveXWrapper to the library, and some good demos of it too.
560It works great for embedding a COM (a.k.a OCX, a.k.a ActiveX) control
561in a window and calling its methods. It actually creates a new class
562on the fly that derives from wxWindow, the COM CoClass and others
563needed to make it all work. The resulting class can be instantiated
564just like wxWindow, used in sizers, etc. It also responds to all COM
565method calls, properties, etc., and if the class or a mix-in has
566matching method names, then the COM events will be propogated back to
567them.
568
569Created a typemap that allows a string to be used for parameters
570expecting a wxColour type. The string is either a colour name as
571defined in the wxColourDatabase, or a colour spec of the form
572"#RRGGBB". See the wxStyledTextCtrl demo for an example.
573
574I almost forgot to mention the wxStyledTextCtrl! Yes, the
575wxStyledTextCtrl is finally in wxPython!! (And the crowd goes
576wild...) There's no documentaTion yet (the crowd boos and hisses...)
577but I've included a very readable source file in the
578wxPython/demo/data directory, a couple fairly good examples, and you
579can also refer to the Scintilla documentaion at
580http://www.scintilla.org/ScintillaDoc.html to help fill in the gaps
581until the docs are done. (The croud murmers contentedly as the tool
582provider smiles convincingly and removes his flame-proof suit.)
583
164b735b
RD
584
585
586
9e57c2a0 587What's new in 2.1.13
6d75ea8f 588--------------------
9e57c2a0
RD
589Skipped a version number to match what has been released for wxGTK.
590
6d75ea8f
RD
591Updated wxMVCTree and added a demo for it, also fixed layout on GTK
592and some flicker problems.
593
594Added a wrapper class for the Visualization ToolKit (or VTK) in the
595wxPython.lib.vtk module. (http://www.kitware.com/)
596
597Fixed wxTreeCtrl.SetItemImage and GetItemImage to recognise the new
598"which" parameter.
599
600Added wxPython.lib.spashscreen from Mike Fletcher.
601
602Added wxPython.lib.filebrowsebutton also from Mike Fletcher.
603
604Renamed wxTreeCtrl.GetParent to GetItemParent to avoid a name clash
605with wxWindow.GetParent.
606
607Added wxIntersectRect to compute the intersection of two wxRect's.
608It is used like this:
609
610 intersect = wxIntersectRect(rect1, rect2)
611
612If r1 and r2 don't intersect then None is returned, otherwise the
613rectangle representing the intersection is returned.
614
615Some bug fixes for Clipboard and Drag-n-Drop.
616
9b3d3bc4 617Rotated text!!! WooHoo! (See wxDC.DrawRotatedText())
6999b0d8
RD
618
619Added a set of Generic Buttons to the library. These are simple
620window classes that look and act like native buttons, but you can have
621a bit more control over them. The bezel width can be set in addition
622to colours, fonts, etc. There is a ToggleButton as well as Bitmap
9e57c2a0
RD
623versions too. They should also serve as a good example of how to
624create your own classes derived from wxControl.
6d75ea8f 625
9b3d3bc4
RD
626The C++ wxToolBar classes have been redone, and so have the wxPython
627wrappers. There have been slight modifications to some of the methods
628but shouldn't impact anybody too much. I took the opportunity to add
629support for setting user data on each toolbar tool. The new AddTool
630methods look like this:
631
632 def AddTool(ID,
633 bitmap,
634 pushedBitmap = wxNullBitmap,
635 toggle = FALSE,
636 clientData = NULL,
637 shortHelpString = "",
638 longHelpString = "")
639
640 def AddSimpleTool(ID,
641 bitmap,
642 shortHelpString = "",
643 longHelpString = "",
644 toggle=FALSE)
645
646
647There are also coresponding InsertTool and InsertSimpleTool methods
648that additionally take an integer position as the first parameter.
649
9e57c2a0 650Added a wrapper for the new PCX and TIFF ImageHandlers.
9b3d3bc4
RD
651
652wxRect now simulates attributes named left, right, top and bottom.
653
d2103cf2
RD
654Removed all non wx stuff from the glcanvas module since DA's PyOpenGL
655is better and compatible with the wxGLCanvas. You can get it at
656http://starship.python.net:9673/crew/da/Code/PyOpenGL.
9b3d3bc4 657
3af4e610 658Added some missing EVT_ functions.
9b3d3bc4 659
1b55cabf
RD
660Added Dirk Holtwic's editor classes to the wxPython.lib.editor
661package.
662
eec92d76
RD
663Changed all the "LIST" parameter names to "choices" to match the docs.
664
fe366bc9
RD
665More fixes for the wxFloatBar, and it now works on wxGTK even better
666than wxMSW! (The feat is accomplished by using the wxTB_DOCKABLE
667style flag instead of trying to float it ourselves.)
668
9b3d3bc4 669
6d75ea8f
RD
670
671
672What's new in 2.1.11
673--------------------
674Skipped a few version numbers so wxMSW, wxGTK and wxPython are all
675syncronized.
676
677wxImage.SetData now makes a copy of the image data before giving it to
678wxImage. I mistakenly thought that wxImage would copy the data
679itself.
680
681Fixed wxMSW's notebook so the pages get their size set as they are
682being added. This should remove the need for our
683wxNotebook.ResizeChildren hack.
684
685wxPanels now support AutoLayout, and wxNotebooks and wxSplitterWindows
686no longer tell their children to Layout() themselves. This will
687probably only effect you if you have a wxWindow with AutoLayout inside
688a notebook or splitter. If so, either change it to a wxPanel or add
689an EVT_SIZE handler that calls Layout().
690
691Fixed deadlock problem that happened when using threads.
692
693Added new HTML printing classes.
694
695Added wxWindow.GetHandle
696
697Apparently wxMouseEvent.Position has been depreciated in wxWindows as
698it is no longer available by default. You can use GetPositionTuple
699(returning a tuple with x,y) instead, or GetPosition (returning a
700wxPoint.)
701
702Added wxPostEvent function that allows events to be posted and then
703processed later. This is a thread-safe way to interact with the GUI
704thread from other threads.
705
706Added Clipboard and Drag-and-Drop classes.
707
708Added wxFontEnumerator.
709
710Many updates to wxMenu, wxMenuBar.
711
712wxPyEvent and wxPyCommandEvent derived classes now give you the actual
713Python object in the event handler instead of a new shadow.
714
715Added a Calendar widget from Lorne White to the library.
716
717Made some fixes to the wxFloatbar. It still has some troubles on
718wxGTK...
719
720Added an MVC tree control from Bryn Keller to the library.
721
722
723
724
725What's new in 2.1.5
726-------------------
727This is a quick bug-fix release to take care of a few nasties that
728crept in at the last minute before 2.1.4 was called done. No new
729major features.
730
731
732
733What's new in 2.1.4
734--------------------
735
736This release is NOT syncronized with a snapshot release of wxGTK or
737wxMSW. For MSW this isn't much of a problem since you can get the
738binaries from the web site. For other platforms you'll have to build
739wxGTK from CVS. (See http://web.ukonline.co.uk/julian.smart/wxwin/cvs.htm)
740To get the same set of sources from CVS that I used, checkout using
741the wxPy-2-1-4 tag.
742
743Now back to what's new...
744
745Much more support for event-less callbacks and add-on modules.
746
747Created add-on module with wxOGL classes.
748
749Added wxWindow.GetChildren(). Be careful of this. It returns a *copy*
750of the list of the window's children. While you are using the list if
751anything changes in the real list (a child is deleted, etc.) then the
752list you are holding will suddenly have window references to garbage
753memory and your app will likely crash. But if you are careful it works
754great!
755
756Added a bunch of new and missing methods to wxTreeCrtl. The
757SortChildren method is now supported, but currently only for the
758default sort order.
759
760Added typemaps for wxSize, wxPoint, wxRealPoint, and wxRect that allow
761either the actual objects or Python sequence values to be used. For
762example, the following are equivallent:
763
764 win = wxWindow(parent, size = wxSize(100, 100))
765 win = wxWindow(parent, size = (100, 100))
766
767Super-charged the wxHtml module. You can now create your own tag
768handlers and also have access to the parser and cell classes. There
769is a tag handler in the library at wxPython.lib.wxpTag that
770understands the WXP tag and is able to place wxPython windows on HTML
771pages. See the demo for an example.
772
773A bunch of the methods of wxMenuBar were previously ifdef'd out for
774wxGTK. Added them back in since the methods exist now.
775
776Wrapped the wxHtmlHelpController and related classes.
777
778Wrapped the C++ versions of wxSizer and friends. The Python-only
779versions are still in the library, but depreciated. (You will get a
780warning message if you try to use them, but the warning can be
781disabled.) The usage of the C++ versions is slightly different, and
782the functionality of wxBorderSizer is now part of wxBoxSizer. I have
783added a few methods to wxSizer to try and make the transition as
784smooth as possible, I combined all Add methods into a single method
785that handles all cases, added an AddMany method, etc. One step I did
786not take was to make the default value of flag in the Add method be
787wxGROW. This would have made it more backward compatible, but less
788portable to and from wxWin C++ code. Please see the docs and demo for
789further details.
790
791Added wxPyEvent and wxPyCommandEvent classes, derived from wxEvent and
792wxCommandEvent. Each of them has SetPyData and GetPyData methods that
793accept or return a single Python object. You can use these classes
794directly or derive from them to create your own types of event objects
795that can pass through the wxWindows event system without loosing their
796Python parts (as long as they are stored with SetPyData.) Stay tuned
797for more info and examples in future releases.
798
799Added wxPython.lib.grids as an example of how to derive a new sizer
800from the C++ sizers. In this module you will find wxGridSizer and
801wxFlexGridSizer. wxGridSizer arrainges its items in a grid in which
802all the widths and heights are the same. wxFlexgridSizer allows
803different widths and heights, and you can also specify rows and/or
804columns that are growable. See the demo for a couple examples for how
805to use them.
806
807Added the wxValidator class, and created a class named wxPyValidator
808that should be used for the base class of any Python validators. See
809the demo for an example. Please note that you MUST implement a Clone
810method in your validator classes because of the way some things work
811in the underlying C++ library. I did not add wxTextValidator because
812of some issues of how it transfers data to and from a wxString, which
813in wxPython is automatically translated to and from Python strings, so
814there would never be a concrete wxString that would hang around long
815enough for the validator to do its job. On the other hand, it should
816be real easy to duplicate the functionality of wxTextValidator in a
817pure Python class derived from wxPyValidator.
818
819I've finally added a feature that has been on my list for close to two
820years! Ever wondered what that zero is for when you create your app
821object? Well now you can leave it out or explicitly set it to a true
822value. This value now controls what is to be done with sys.stdout and
823sys.stderr. A false value leaves them alone, and a true value sets
824them to an instance of wxPyOnDemandOutputWindow. (On windows the
825default is true, on unix platforms the default is false.) This class
826creates a frame containing a wxTextCtrl as soon as anything is written
827to sys.stdout or sys.stderr. If you close the window it will come
828back again the next time something is written. (You can call
829app.RestoreStdio to turn this off.) If you would rather that the stdio be
830redirected to a file, you can provide a second parameter to your app
831object's constructor that is a filename. If you want to use your own
832class instead of wxPyOnDemandOutputWindow you can either implement
833RedirectStdio() in you app class or change the value of
834wxApp.outputWindowClass like this:
835
836 class MyApp(wxApp):
837 outputWindowClass = MyClass
838
839 def OnInit(self):
840 frame = MyFrame()
841 self.SetTopWindow(frame)
842 return true
843
844Please see the implementation of wxPyOnDemandOutputWindow and wxApp in
845wx.py for more details. A few words of caution: if you are running
846your app in a debugger, changing sys.stdout and sys.stderr is likely
847to really screw things up.
848
849Added wxCaret. Unfortunately it's author has still not documented it
850in the wxWindows docs...
851
852Some new 3rd party contributions in wxPython.lib. PyShell, in
853shell.py is an interesting implementaion of an interactive Python
854shell in wxWindows. floatbar.py has a class derived from wxToolBar
855that can sense mouse drags and then reparent itself into another
856frame. Moving the new frame close to where it came from puts the tool
857bar back into the original parent. (Unfortunately there is currently
858a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some
859problems...)
860
861
862
863
864What's new in 2.1b3
865--------------------
866
867This release is syncronized with release 2.1 snapshot 9 of wxWindows.
868
869Switched to using SWIG from CVS (see http://swig.cs.uchicago.edu/cvs.html)
870for some of the new features and such. Also they have encorporated my
871patches so there is really no reason to stick with the current (very
872old) release... This version of SWIG gives the following new
873features:
874
875 1. Keyword arguments. You no longer have to specify all the
876 parameters with defaults to a method just to specify a
877 non-default value on the end. You can now do this instead:
878
879 win = wxWindow(parent, -1, style = mystyle)
880
881 2. There is now an an equivalence between Python's None and C++'s
882 NULL. This means that any methods that might return NULL will
883 now return None and you can use none where wxWindows might be
884 expecting NULL. This makes things much more snake-ish.
885
886
887There is a new build system based on a new Python program instead of
888raw makefiles. Now wxPython builds are virtually the same on MSW or
889Unix systems. See the end of this file for new build instructions and
890see distrib/build.py for more details.
891
892wxDC.Bilt now includes the useMask parameter, and has been split into
893two different versions. wxDC.BlitXY is like what was there before and
894takes raw coordinants and sizes, and the new wxDC.Blit is for the new
895interface using wxPoints and a wxSize.
896
897
898
899
900
901What's new in 2.1b2
902--------------------
903
904Added the missing wxWindow.GetUpdateRegion() method.
905
906Made a new change in SWIG (update your patches everybody) that
907provides a fix for global shadow objects that get an exception in
908their __del__ when their extension module has already been deleted.
909It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
910line 496 if you want to do it by hand.
911
912It is now possible to run through MainLoop more than once in any one
913process. The cleanup that used to happen as MainLoop completed (and
914prevented it from running again) has been delayed until the wxc module
915is being unloaded by Python.
916
917I fixed a bunch of stuff in the C++ version of wxGrid so it wouldn't
918make wxPython look bad.
919
920wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added
921wxWindow.PopupMenuXY to be consistent with some other methods.
922
923Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
924
925You can now provide your own app.MainLoop method. See
926wxPython/demo/demoMainLoop.py for an example and some explaination.
927
928Got the in-place-edit for the wxTreeCtrl fixed and added some demo
929code to show how to use it.
930
931Put the wxIcon constructor back in for GTK as it now has one that
932matches MSW's.
933
934Added wxGrid.GetCells
935
936Added wxSystemSettings static methods as functions with names like
937wxSystemSettings_GetSystemColour.
938
939Removed wxPyMenu since using menu callbacks have been depreciated in
940wxWindows. Use wxMenu and events instead.
941
942Added alternate wxBitmap constructor (for MSW only) as
943 wxBitmapFromData(data, type, width, height, depth = 1)
944
945Added a helper function named wxPyTypeCast that can convert shadow
946objects of one type into shadow objects of another type. (Like doing
947a down-cast.) See the implementation in wx.py for some docs.
948
949Fixed wxImage GetData and SetData to properly use String objects for
950data transfer.
951
952Added access methods to wxGridEvent.
953
954New Makefile/Setup files supporting multiple dynamic extension modules
955for unix systems.
956
957Fixes for the wxGLCanvas demo to work around a strange bug in gtk.
958
959SWIG support routines now compiled separately instead of being bundled
960in wx.cpp.
961
962
963
964
965
966What's new in 2.1b1
967--------------------
968Fixed wxComboBox.SetSelection so that it actually sets the selected
969item. (Actually just removed it from wxPython and let it default to
970wxChoice.SetSelection which was already doing the right thing.)
971
972Added the Printing Framework.
973
974Switched back to using the wxWindows DLL for the pre-built Win32
975version. The problem was needing to reinitialize static class info
976data after loading each extension module.
977
978Lots of little tweaks and additions to reflect changes to various
979wxWindows classes.
980
981Fixed a bug with attaching objects to tree items. Actually was a
982symptom of a larger problem with not obtaining the interpreter lock
983when doing any Py_DECREFs.
984
985wxSizer and friends. Sizers are layout tools that manage a colection
986of windows and sizers. Different types of sizers apply different
987types of layout algorithms. You saw it here first! These classes are
988not even in the wxWindows C++ library yet!
989
990
991
992What's new in 2.0b9
993-------------------
994Bug fix for ListCtrl in test4.py (Was a missing file... DSM!)
995
996Bug fix for occassional GPF on Win32 systems upon termination of a
997wxPython application.
998
999Added wxListBox.GetSelections returning selections as a Tuple.
1000
1001Added a wxTreeItemData that is able to hold any Python object and be
1002associated with items in a wxTreeCtrl. Added test pytree.py to show
1003this feature off.
1004
1005Added wxSafeYield function.
1006
1007OpenGL Canvas can be optionally compiled in to wxPython.
1008
1009Awesome new Demo Framework for showing off wxPython and for learning
1010how it all works.
1011
1012The pre-built Win32 version is no longer distributing the wxWindows
1013DLL. It is statically linked with the wxWindows library instead.
1014
1015Added a couple missing items from the docs.
1016
1017Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler,
1018wxGIFHandler and wxBMPHandler.
1019
1020Added new methods to wxTextCtrl.
1021
1022Fixed some problems with how SWIG was wrapping some wxTreeCtrl
1023methods.
1024
1025
1026
1027What's new in 2.0b8
1028-------------------
1029Support for using Python threads in wxPython apps.
1030
1031Several missing methods from various classes.
1032
1033Various bug fixes.
1034
1035
1036
1037What's new in 2.0b7
1038-------------------
1039Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.
1040
1041Added missing constructor and other methods for wxMenuItem.
1042
1043
1044
1045What's new in 2.0b6
1046-------------------
1047Just a quickie update to fix the self-installer to be compatible with
1048Python 1.5.2b2's Registry settings.
1049
1050
1051What's new in 2.0b5
1052-------------------
1053Well obviously the numbering scheme has changed. I did this to
1054reflect the fact that this truly is the second major revision of
1055wxPython, (well the third actually if you count the one I did for
1056wxWindows 1.68 and then threw away...) and also that it is associated
1057with the 2.0 version of wxWindows.
1058
1059I have finally started documenting wxPython. There are several pages
1060in the wxWindows documentation tree specifically about wxPython, and I
1061have added notes within the class references about where and how wxPython
1062diverges from wxWindows.
1063
1064Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a
1065window handle. If you can get the window handle into the python code,
1066it should just work... More news on this later.
1067
1068Added wxImageList, wxToolTip.
1069
1070Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the
1071wxRegConfig class.
1072
1073As usual, some bug fixes, tweaks, etc.
1074
1075
1076
1077What's new in 0.5.3
1078-------------------
1079Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc.
1080
1081Various cleanup, tweaks, minor additions, etc. to maintain
1082compatibility with the current wxWindows.
1083
1084
1085
1086What's new in 0.5.0
1087-------------------
1088Changed the import semantics from "from wxPython import *" to "from
1089wxPython.wx import *" This is for people who are worried about
1090namespace pollution, they can use "from wxPython import wx" and then
1091prefix all the wxPython identifiers with "wx."
1092
1093Added wxTaskbarIcon for wxMSW.
1094
1095Made the events work for wxGrid.
1096
1097Added wxConfig.
1098
1099Added wxMiniFrame for wxGTK.
1100
1101Changed many of the args and return values that were pointers to gdi
1102objects to references to reflect changes in the wxWindows API.
1103
1104Other assorted fixes and additions.
1105
1106
1107
1108
1109What's new in 0.4.2
1110-------------------
1111
1112wxPython on wxGTK works!!! Both dynamic and static on Linux and
1113static on Solaris have been tested. Many thanks go to Harm
1114<H.v.d.Heijden@phys.tue.nl> for his astute detective work on tracking
1115down a nasty DECREF bug. Okay so I have to confess that it was just a
1116DSM (Dumb Stupid Mistake) on my part but it was nasty none the less
1117because the behavior was so different on different platforms.
1118
1119The dynamicly loaded module on Solaris is still segfaulting, so it
1120must have been a different issue all along...
1121
1122
1123
1124What's New in 0.4
1125-----------------
1126
11271. Worked on wxGTK compatibility. It is partially working. On a
1128Solaris/Sparc box wxPython is working but only when it is statically
1129linked with the Python interpreter. When built as a dyamically loaded
1130extension module, things start acting weirdly and it soon seg-faults.
1131And on Linux both the statically linked and the dynamically linked
1132version segfault shortly after starting up.
1133
11342. Added Toolbar, StatusBar and SplitterWindow classes.
1135
11363. Varioius bug fixes, enhancements, etc.
1137
1138----------------------------------------------------------------------