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