]> git.saurik.com Git - wxWidgets.git/blame - utils/wxPython/README.txt
more release notes
[wxWidgets.git] / utils / wxPython / README.txt
CommitLineData
7bf85405
RD
1wxPython README
2---------------
3
c127177f
RD
4Welcome to the wonderful world of wxPython!
5
bb0054cd 6Once you have installed the wxPython extension module, you can try it
c127177f
RD
7out by going to the [install dir]\wxPython\demo directory and typing:
8
9 python demo.py
10
11There are also some other sample files there for you to play with and
12learn from.
13
14If you selected to install the documentation then point your browser
15to [install dir]\wxPython\docs\index.htm and you will then be looking
16at the docs for wxWindows. For the most part you can use the C++ docs
17as most classes and methods are used identically. Where there are
18differences they are documented with a "wxPython Note."
af309447 19
bb0054cd
RD
20On Win32 systems the binary self-installer creates a program group on
21the Start Menu that contains a link to running the demo and a link to
22the help file. To help you save disk space I'm now using Microsoft's
23HTML Help format. If your system doesn't know what to do with the help
24file, you can install the HTML Help Viewer as part of IE 4+, NT
25Service Pack 4+, or the HTML Workshop at
a08cbc01 26
bb0054cd
RD
27http://msdn.microsoft.com/workshop/author/htmlhelp/download.asp.
28
af309447
RD
29
30
31Getting Help
32------------
33
34Since wxPython is a blending of multiple technologies, help comes from
35multiple sources. See the http://alldunn.com/wxPython for details on
36various sources of help, but probably the best source is the
37wxPython-users mail list. You can view the archive or subscribe by
38going to
39
40 http://starship.python.net/mailman/listinfo/wxpython-users
41
42Or you can send mail directly to the list using this address:
43
44 wxpython-users@starship.python.net
45
bb0054cd
RD
46----------------------------------------------------------------------
47
2f90df85
RD
48
49What's new in 2.1.4
1afc06c2
RD
50--------------------
51
f40dc1e2
RD
52This release is NOT syncronized with a snapshot release of wxGTK or
53wxMSW. For MSW this isn't much of a problem since you can get the
54binaries from the web site. For other platforms you'll have to build
55wxGTK from CVS. (See http://web.ukonline.co.uk/julian.smart/wxwin/cvs.htm)
56To get the same set of sources from CVS that I used, checkout using
57the wxPy-2-1-4 tag.
58
59Now back to what's new...
60
2f90df85 61Much more support for event-less callbacks and add-on modules.
1afc06c2
RD
62
63Created add-on module with wxOGL classes.
64
2f90df85 65Added wxWindow.GetChildren(). Be careful of this. It returns a *copy*
d426c97e
RD
66of the list of the window's children. While you are using the list if
67anything changes in the real list (a child is deleted, etc.) then the
68list you are holding will suddenly have window references to garbage
69memory and your app will likely crash. But if you are careful it works
70great!
71
72Added a bunch of new and missing methods to wxTreeCrtl. The
73SortChildren method is now supported, but currently only for the
74default sort order.
75
2f90df85
RD
76Added typemaps for wxSize, wxPoint, wxRealPoint, and wxRect that allow
77either the actual objects or Python sequence values to be used. For
78example, the following are equivallent:
79
80 win = wxWindow(parent, size = wxSize(100, 100))
81 win = wxWindow(parent, size = (100, 100))
82
83Super-charged the wxHtml module. You can now create your own tag
84handlers and also have access to the parser and cell classes. There
85is a tag handler in the library at wxPython.lib.wxpTag that
86understands the WXP tag and is able to place wxPython windows on HTML
87pages. See the demo for an example.
88
89A bunch of the methods of wxMenuBar were previously ifdef'd out for
90wxGTK. Added them back in since the methods exist now.
91
92Wrapped the wxHtmlHelpController and related classes.
93
94Wrapped the C++ versions of wxSizer and firends. The Python-only
95versions are still in the library, but depreciated. (You will get a
96warning message if you try to use them, but the warning can be
97disabled.) The usage of the C++ versions is slightly different, and
98the functionality of wxBorderSizer is now part of wxBoxSizer. I have
99added a few methods to wxSizer to try and make the transition as
100smooth as possible, I combined all Add methods into a single method
101that handles all cases, added an AddMany method, etc. One step I did
102not take was to make the default value of flag in the Add method be
103wxGROW. This would have made it more backward compatible, but less
104portable to and from wxWin C++ code. Please see the docs and demo for
105further details.
106
107Added wxPyEvent and wxPyCommandEvent classes, derived from wxEvent and
108wxCommandEvent. Each of them has SetPyData and GetPyData methods that
109accept or return a single Python object. You can use these classes
110directly or derive from them to create your own types of event objects
111that can pass through the wxWindows event system without loosing their
112Python parts (as long as they are stored with SetPyData.) Stay tuned
113for more info and examples in future releases.
114
115Added wxPython.lib.grids as an example of how to derive a new sizer
116from the C++ sizers. In this module you will find wxGridSizer and
117wxFlexGridSizer. wxGridSizer arrainges its items in a grid in which
118all the widths and heights are the same. wxFlexgridSizer allows
119different widths and heights, and you can also specify rows and/or
120columns that are growable. See the demo for a couple examples for how
121to use them.
122
123Added the wxValidator class, and created a class named wxPyValidator
124that should be used for the base class of any Python validators. See
f0261a72 125the demo for an example. Please note that you MUST implement a Clone
2f90df85
RD
126method in your validator classes because of the way some things work
127in the underlying C++ library. I did not add wxTextValidator because
128of some issues of how it transfers data to and from a wxString, which
129in wxPython is automatically translated to and from Python strings, so
130there would never be a concrete wxString that would hang around long
131enough for the validator to do its job. On the other hand, it should
132be real easy to duplicate the functionality of wxTextValidator in a
133pure Python class derived from wxPyValidator.
134
135I've finally added a feature that has been on my list for close to two
136years! Ever wondered what that zero is for when you create your app
137object? Well now you can leave it out or explicitly set it to a true
138value. This value now controls what is to be done with sys.stdout and
139sys.stderr. A false value leaves them alone, and a true value sets
140them to an instance of wxPyOnDemandOutputWindow. (On windows the
f0261a72 141default is true, on unix platforms the default is false.) This class
2f90df85
RD
142creates a frame containing a wxTextCtrl as soon as anything is written
143to sys.stdout or sys.stderr. If you close the window it will come
144back again the next time something is written. (You can call
145app.RestoreStdio to turn this off.) If you would rather that the stdio be
146redirected to a file, you can provide a second parameter to your app
147object's constructor that is a filename. If you want to use your own
148class instead of wxPyOnDemandOutputWindow you can either implement
149RedirectStdio() in you app class or change the value of
150wxApp.outputWindowClass like this:
151
152 class MyApp(wxApp):
153 outputWindowClass = MyClass
154
155 def OnInit(self):
156 frame = MyFrame()
157 self.SetTopWindow(frame)
158 return true
159
160Please see the implementation of wxPyOnDemandOutputWindow and wxApp in
161wx.py for more details. A few words of caution: if you are running
162your app in a debugger, changing sys.stdout and sys.stderr is likely
163to really screw things up.
d426c97e 164
f0261a72
RD
165Added wxCaret. Unfortunately it's author has still not documented it
166in the wxWindows docs...
167
168Some new 3rd party contributions in wxPython.lib. PyShell, in
169shell.py is an interesting implementaion of an interactive Python
170shell in wxWindows. floatbar.py has a class derived from wxTooBar
171that can sense mouse drags and then reparent itself into another
172frame. Moving the new frame close to where it came from puts the tool
fbfe0e6a
RD
173bar back into the original parent. (Unfortunately there is currently
174a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some
175problems...)
f0261a72
RD
176
177
1afc06c2
RD
178
179
1d99702e
RD
180What's new in 2.1b3
181--------------------
182
efc5f224
RD
183This release is syncronized with release 2.1 snapshot 9 of wxWindows.
184
1d99702e
RD
185Switched to using SWIG from CVS (see http://swig.cs.uchicago.edu/cvs.html)
186for some of the new features and such. Also they have encorporated my
187patches so there is really no reason to stick with the current (very
efc5f224
RD
188old) release... This version of SWIG gives the following new
189features:
190
191 1. Keyword arguments. You no longer have to specify all the
192 parameters with defaults to a method just to specify a
193 non-default value on the end. You can now do this instead:
194
2f90df85 195 win = wxWindow(parent, -1, style = mystyle)
efc5f224
RD
196
197 2. There is now an an equivalence between Python's None and C++'s
198 NULL. This means that any methods that might return NULL will
199 now return None and you can use none where wxWindows might be
200 expecting NULL. This makes things much more snake-ish.
201
202
203There is a new build system based on a new Python program instead of
204raw makefiles. Now wxPython builds are virtually the same on MSW or
205Unix systems. See the end of this file for new build instructions and
206see distrib/build.py for more details.
207
208wxDC.Bilt now includes the useMask parameter, and has been split into
209two different versions. wxDC.BlitXY is like what was there before and
210takes raw coordinants and sizes, and the new wxDC.Blit is for the new
211interface using wxPoints and a wxSize.
1d99702e 212
5148fc8e
RD
213
214
1d99702e
RD
215
216
8bf5d46e
RD
217What's new in 2.1b2
218--------------------
219
220Added the missing wxWindow.GetUpdateRegion() method.
221
222Made a new change in SWIG (update your patches everybody) that
223provides a fix for global shadow objects that get an exception in
224their __del__ when their extension module has already been deleted.
225It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
226line 496 if you want to do it by hand.
227
228It is now possible to run through MainLoop more than once in any one
229process. The cleanup that used to happen as MainLoop completed (and
230prevented it from running again) has been delayed until the wxc module
231is being unloaded by Python.
232
233I fixed a bunch of stuff in the C++ version of wxGrid so it wouldn't
234make wxPython look bad.
235
236wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added
237wxWindow.PopupMenuXY to be consistent with some other methods.
238
239Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
240
241You can now provide your own app.MainLoop method. See
242wxPython/demo/demoMainLoop.py for an example and some explaination.
243
244Got the in-place-edit for the wxTreeCtrl fixed and added some demo
245code to show how to use it.
246
247Put the wxIcon constructor back in for GTK as it now has one that
248matches MSW's.
249
250Added wxGrid.GetCells
251
252Added wxSystemSettings static methods as functions with names like
253wxSystemSettings_GetSystemColour.
254
255Removed wxPyMenu since using menu callbacks have been depreciated in
256wxWindows. Use wxMenu and events instead.
257
258Added alternate wxBitmap constructor (for MSW only) as
259 wxBitmapFromData(data, type, width, height, depth = 1)
260
261Added a helper function named wxPyTypeCast that can convert shadow
262objects of one type into shadow objects of another type. (Like doing
263a down-cast.) See the implementation in wx.py for some docs.
264
1dc2f865
RD
265Fixed wxImage GetData and SetData to properly use String objects for
266data transfer.
267
268Added access methods to wxGridEvent.
8bf5d46e 269
6bddd8c5
RD
270New Makefile/Setup files supporting multiple dynamic extension modules
271for unix systems.
272
273Fixes for the wxGLCanvas demo to work around a strange bug in gtk.
274
275SWIG support routines now compiled separately instead of being bundled
276in wx.cpp.
277
8bf5d46e
RD
278
279
bb0054cd 280
f581a26d 281
bb0054cd
RD
282What's new in 2.1b1
283--------------------
284Fixed wxComboBox.SetSelection so that it actually sets the selected
285item. (Actually just removed it from wxPython and let it default to
286wxChoice.SetSelection which was already doing the right thing.)
287
288Added the Printing Framework.
289
290Switched back to using the wxWindows DLL for the pre-built Win32
291version. The problem was needing to reinitialize static class info
292data after loading each extension module.
293
294Lots of little tweaks and additions to reflect changes to various
295wxWindows classes.
296
297Fixed a bug with attaching objects to tree items. Actually was a
298symptom of a larger problem with not obtaining the interpreter lock
299when doing any Py_DECREFs.
300
301wxSizer and friends. Sizers are layout tools that manage a colection
302of windows and sizers. Different types of sizers apply different
303types of layout algorithms. You saw it here first! These classes are
304not even in the wxWindows C++ library yet!
305
306
af309447 307
cf694132
RD
308What's new in 2.0b9
309-------------------
310Bug fix for ListCtrl in test4.py (Was a missing file... DSM!)
311
312Bug fix for occassional GPF on Win32 systems upon termination of a
313wxPython application.
314
315Added wxListBox.GetSelections returning selections as a Tuple.
316
317Added a wxTreeItemData that is able to hold any Python object and be
318associated with items in a wxTreeCtrl. Added test pytree.py to show
319this feature off.
320
321Added wxSafeYield function.
322
323OpenGL Canvas can be optionally compiled in to wxPython.
324
325Awesome new Demo Framework for showing off wxPython and for learning
326how it all works.
327
328The pre-built Win32 version is no longer distributing the wxWindows
329DLL. It is statically linked with the wxWindows library instead.
330
331Added a couple missing items from the docs.
332
333Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler,
334wxGIFHandler and wxBMPHandler.
335
d403febc
RD
336Added new methods to wxTextCtrl.
337
c127177f
RD
338Fixed some problems with how SWIG was wrapping some wxTreeCtrl
339methods.
340
cf694132
RD
341
342
343What's new in 2.0b8
344-------------------
345Support for using Python threads in wxPython apps.
346
347Several missing methods from various classes.
348
349Various bug fixes.
350
351
352
353What's new in 2.0b7
354-------------------
355Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.
356
357Added missing constructor and other methods for wxMenuItem.
358
359
360
361What's new in 2.0b6
362-------------------
363Just a quickie update to fix the self-installer to be compatible with
364Python 1.5.2b2's Registry settings.
365
af309447
RD
366
367What's new in 2.0b5
368-------------------
369Well obviously the numbering scheme has changed. I did this to
370reflect the fact that this truly is the second major revision of
371wxPython, (well the third actually if you count the one I did for
372wxWindows 1.68 and then threw away...) and also that it is associated
373with the 2.0 version of wxWindows.
374
375I have finally started documenting wxPython. There are several pages
376in the wxWindows documentation tree specifically about wxPython, and I
c127177f 377have added notes within the class references about where and how wxPython
af309447
RD
378diverges from wxWindows.
379
21f8d7ea
RD
380Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a
381window handle. If you can get the window handle into the python code,
382it should just work... More news on this later.
383
384Added wxImageList, wxToolTip.
385
386Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the
387wxRegConfig class.
388
af309447
RD
389As usual, some bug fixes, tweaks, etc.
390
7bf85405
RD
391
392
08127323
RD
393What's new in 0.5.3
394-------------------
395Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc.
396
397Various cleanup, tweaks, minor additions, etc. to maintain
398compatibility with the current wxWindows.
399
400
401
b8b8dda7
RD
402What's new in 0.5.0
403-------------------
404Changed the import semantics from "from wxPython import *" to "from
405wxPython.wx import *" This is for people who are worried about
406namespace pollution, they can use "from wxPython import wx" and then
407prefix all the wxPython identifiers with "wx."
408
409Added wxTaskbarIcon for wxMSW.
410
411Made the events work for wxGrid.
412
413Added wxConfig.
414
08127323 415Added wxMiniFrame for wxGTK.
b8b8dda7
RD
416
417Changed many of the args and return values that were pointers to gdi
418objects to references to reflect changes in the wxWindows API.
419
420Other assorted fixes and additions.
421
422
423
607d79b8
RD
424
425What's new in 0.4.2
426-------------------
427
428wxPython on wxGTK works!!! Both dynamic and static on Linux and
429static on Solaris have been tested. Many thanks go to Harm
430<H.v.d.Heijden@phys.tue.nl> for his astute detective work on tracking
431down a nasty DECREF bug. Okay so I have to confess that it was just a
432DSM (Dumb Stupid Mistake) on my part but it was nasty none the less
433because the behavior was so different on different platforms.
434
607d79b8
RD
435The dynamicly loaded module on Solaris is still segfaulting, so it
436must have been a different issue all along...
437
438
439
9c039d08
RD
440What's New in 0.4
441-----------------
607d79b8 442
9c039d08
RD
4431. Worked on wxGTK compatibility. It is partially working. On a
444Solaris/Sparc box wxPython is working but only when it is statically
445linked with the Python interpreter. When built as a dyamically loaded
607d79b8
RD
446extension module, things start acting weirdly and it soon seg-faults.
447And on Linux both the statically linked and the dynamically linked
448version segfault shortly after starting up.
9c039d08
RD
449
4502. Added Toolbar, StatusBar and SplitterWindow classes.
451
4523. Varioius bug fixes, enhancements, etc.
453
bb0054cd 454----------------------------------------------------------------------
9c039d08 455
7bf85405 456
c127177f 457
7bf85405
RD
458Build Instructions
459------------------
460I used SWIG (http://www.swig.org) to create the source code for the
461extension module. This enabled me to only have to deal with a small
d279310d 462amount of code and only have to bother with the exceptional issues.
7bf85405
RD
463SWIG takes care of the rest and generates all the repetative code for
464me. You don't need SWIG to build the extension module as all the
607d79b8
RD
465generated C++ code is included under the src directory.
466
467I added a few minor features to SWIG to control some of the code
5148fc8e
RD
468generation. If you want to play around with this you will need to get
469a recent version of SWIG from their CVS or from a daily build. See
470http://www.swig.org/ for details.
7bf85405
RD
471
472wxPython is organized as a Python package. This means that the
473directory containing the results of the build process should be a
474subdirectory of a directory on the PYTHONPATH. (And preferably should
607d79b8 475be named wxPython.) You can control where the build process will dump
5148fc8e
RD
476wxPython by setting the TARGETDIR variable for the build utility, (see
477below.)
7bf85405 478
7bf85405 479
5148fc8e
RD
4801. Build wxWindows as described in its BuildCVS.txt file. For *nix
481 systems I run configure with these flags:
7bf85405 482
5148fc8e
RD
483 --with-gtk
484 --with-libjpeg
485 --without-odbc
486 --enable-unicode=no
487 --enable-threads=yes
488 --enable-socket=yes
489 --enable-static=no
490 --enable-shared=yes
491 --disable-std_iostreams
7bf85405 492
5148fc8e 493 You can use whatever flags you want, but I know these work.
7bf85405 494
efc5f224
RD
495 For Win32 systems I use Visual C++ 6.0, but 5.0 should work. The
496 build utility currently does not support any other win32 compilers.
497
5148fc8e
RD
4982. At this point you may want to make an alias or symlink, script,
499 batch file, whatever on the PATH that invokes
500 $(WXWIN)/utils/wxPython/distrib/build.py to help simplify matters
501 somewhat. For example, on my win32 system I have a file named
502 build.bat in a directory on the PATH that contains:
7bf85405 503
5148fc8e 504 python $(WXWIN)/utils/wxPython/distrib/build.py %1 %2 %3 %4 %5 %6
7bf85405 505
7bf85405 506
5148fc8e 5073. Change into the $(WXWIN)/utils/wxPython/src directory.
7bf85405 508
5148fc8e 5094. Type "build -b" to build wxPython and "build -i" to install it.
7bf85405 510
5148fc8e
RD
511 The build.py script actually generates a Makefile based on what it
512 finds on your system and information found in the build.cfg file.
513 If you have troubles building or you want it built or installed in
efc5f224 514 a different way, take a look at the docstring in build.py. You may
5148fc8e
RD
515 be able to override configuration options in a file named
516 build.local.
7bf85405 517
5148fc8e
RD
5185. To build and install the add-on modules, change to the appropriate
519 directory under $(WXWIN)/utils/wxPython/modules and run the build
520 utility again.
e6c95f27 521
5148fc8e 5226. Change to the $(WXWIN)/utils/wxPython/demo directory.
7bf85405 523
5148fc8e 5247. Try executing the demo program. For example:
7bf85405 525
5148fc8e 526 python demo.py
7bf85405 527
5148fc8e
RD
528To run it without requiring a console on win32, you can use the
529pythonw.exe version of Python either from the command line or from a
530shortcut.
7bf85405 531
7bf85405 532
7bf85405 533
5148fc8e
RD
534----------------
535Robin Dunn
536robin@alldunn.com
7bf85405 537
7bf85405
RD
538
539
7bf85405 540
607d79b8
RD
541
542
543