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