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