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