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