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