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