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