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