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