X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8bf5d46efb26ab22575ca9bc0d0ca5d32d6b77a3..085078a1c4904ae9dcf5934ea64b5fa2c568897b:/utils/wxPython/README.txt diff --git a/utils/wxPython/README.txt b/utils/wxPython/README.txt index 054a77bdc8..9e73f20ff3 100644 --- a/utils/wxPython/README.txt +++ b/utils/wxPython/README.txt @@ -45,6 +45,226 @@ Or you can send mail directly to the list using this address: ---------------------------------------------------------------------- +What's new in 2.1.11 +-------------------- +wxImage.SetData now makes a copy of the image data before giving it to +wxImage. I mistakenly thought that wxImage would copy the data +itself. + +Fixed wxMSW's notebook so the pages get their size set as they are +being added. This should remove the need for our +wxNotebook.ResizeChildren hack. + +wxPanels now support AutoLayout, and wxNotebooks and wxSplitterWindows +no longer tell their children to Layout() themselves. This will +probably only effect you if you have a wxWindow with AutoLayout inside +a notebook or splitter. If so, either change it to a wxPanel or add +an EVT_SIZE handler that calls Layout(). + +Fixed deadlock problem that happened when using threads. + +Added new HTML printing classes. + +Added wxWindow.GetHandle + +Apparently wxMouseEvent.Position has been depreciated in wxWindows as +it is no longer available by default. You can use GetPositionTuple +(returning a tuple with x,y) instead, or GetPosition (returning a +wxPoint.) + +Added wxPostEvent function that allows events to be posted and then +processed later. This is a thread-safe way to interact with the GUI +thread from other threads. + +Added Clipboard and Drag-and-Drop classes. + +Added wxFontEnumerator. + +Many updates to wxMenu, wxMenuBar. + +wxPyEvent and wxPyCommandEvent derived classes now give you the actual +Python object in the event handler. + + + + + +What's new in 2.1.5 +------------------- +This is a quick bug-fix release to take care of a few nasties that +crept in at the last minute before 2.1.4 was called done. No new +major features. + + + +What's new in 2.1.4 +-------------------- + +This release is NOT syncronized with a snapshot release of wxGTK or +wxMSW. For MSW this isn't much of a problem since you can get the +binaries from the web site. For other platforms you'll have to build +wxGTK from CVS. (See http://web.ukonline.co.uk/julian.smart/wxwin/cvs.htm) +To get the same set of sources from CVS that I used, checkout using +the wxPy-2-1-4 tag. + +Now back to what's new... + +Much more support for event-less callbacks and add-on modules. + +Created add-on module with wxOGL classes. + +Added wxWindow.GetChildren(). Be careful of this. It returns a *copy* +of the list of the window's children. While you are using the list if +anything changes in the real list (a child is deleted, etc.) then the +list you are holding will suddenly have window references to garbage +memory and your app will likely crash. But if you are careful it works +great! + +Added a bunch of new and missing methods to wxTreeCrtl. The +SortChildren method is now supported, but currently only for the +default sort order. + +Added typemaps for wxSize, wxPoint, wxRealPoint, and wxRect that allow +either the actual objects or Python sequence values to be used. For +example, the following are equivallent: + + win = wxWindow(parent, size = wxSize(100, 100)) + win = wxWindow(parent, size = (100, 100)) + +Super-charged the wxHtml module. You can now create your own tag +handlers and also have access to the parser and cell classes. There +is a tag handler in the library at wxPython.lib.wxpTag that +understands the WXP tag and is able to place wxPython windows on HTML +pages. See the demo for an example. + +A bunch of the methods of wxMenuBar were previously ifdef'd out for +wxGTK. Added them back in since the methods exist now. + +Wrapped the wxHtmlHelpController and related classes. + +Wrapped the C++ versions of wxSizer and friends. The Python-only +versions are still in the library, but depreciated. (You will get a +warning message if you try to use them, but the warning can be +disabled.) The usage of the C++ versions is slightly different, and +the functionality of wxBorderSizer is now part of wxBoxSizer. I have +added a few methods to wxSizer to try and make the transition as +smooth as possible, I combined all Add methods into a single method +that handles all cases, added an AddMany method, etc. One step I did +not take was to make the default value of flag in the Add method be +wxGROW. This would have made it more backward compatible, but less +portable to and from wxWin C++ code. Please see the docs and demo for +further details. + +Added wxPyEvent and wxPyCommandEvent classes, derived from wxEvent and +wxCommandEvent. Each of them has SetPyData and GetPyData methods that +accept or return a single Python object. You can use these classes +directly or derive from them to create your own types of event objects +that can pass through the wxWindows event system without loosing their +Python parts (as long as they are stored with SetPyData.) Stay tuned +for more info and examples in future releases. + +Added wxPython.lib.grids as an example of how to derive a new sizer +from the C++ sizers. In this module you will find wxGridSizer and +wxFlexGridSizer. wxGridSizer arrainges its items in a grid in which +all the widths and heights are the same. wxFlexgridSizer allows +different widths and heights, and you can also specify rows and/or +columns that are growable. See the demo for a couple examples for how +to use them. + +Added the wxValidator class, and created a class named wxPyValidator +that should be used for the base class of any Python validators. See +the demo for an example. Please note that you MUST implement a Clone +method in your validator classes because of the way some things work +in the underlying C++ library. I did not add wxTextValidator because +of some issues of how it transfers data to and from a wxString, which +in wxPython is automatically translated to and from Python strings, so +there would never be a concrete wxString that would hang around long +enough for the validator to do its job. On the other hand, it should +be real easy to duplicate the functionality of wxTextValidator in a +pure Python class derived from wxPyValidator. + +I've finally added a feature that has been on my list for close to two +years! Ever wondered what that zero is for when you create your app +object? Well now you can leave it out or explicitly set it to a true +value. This value now controls what is to be done with sys.stdout and +sys.stderr. A false value leaves them alone, and a true value sets +them to an instance of wxPyOnDemandOutputWindow. (On windows the +default is true, on unix platforms the default is false.) This class +creates a frame containing a wxTextCtrl as soon as anything is written +to sys.stdout or sys.stderr. If you close the window it will come +back again the next time something is written. (You can call +app.RestoreStdio to turn this off.) If you would rather that the stdio be +redirected to a file, you can provide a second parameter to your app +object's constructor that is a filename. If you want to use your own +class instead of wxPyOnDemandOutputWindow you can either implement +RedirectStdio() in you app class or change the value of +wxApp.outputWindowClass like this: + + class MyApp(wxApp): + outputWindowClass = MyClass + + def OnInit(self): + frame = MyFrame() + self.SetTopWindow(frame) + return true + +Please see the implementation of wxPyOnDemandOutputWindow and wxApp in +wx.py for more details. A few words of caution: if you are running +your app in a debugger, changing sys.stdout and sys.stderr is likely +to really screw things up. + +Added wxCaret. Unfortunately it's author has still not documented it +in the wxWindows docs... + +Some new 3rd party contributions in wxPython.lib. PyShell, in +shell.py is an interesting implementaion of an interactive Python +shell in wxWindows. floatbar.py has a class derived from wxToolBar +that can sense mouse drags and then reparent itself into another +frame. Moving the new frame close to where it came from puts the tool +bar back into the original parent. (Unfortunately there is currently +a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some +problems...) + + + + +What's new in 2.1b3 +-------------------- + +This release is syncronized with release 2.1 snapshot 9 of wxWindows. + +Switched to using SWIG from CVS (see http://swig.cs.uchicago.edu/cvs.html) +for some of the new features and such. Also they have encorporated my +patches so there is really no reason to stick with the current (very +old) release... This version of SWIG gives the following new +features: + + 1. Keyword arguments. You no longer have to specify all the + parameters with defaults to a method just to specify a + non-default value on the end. You can now do this instead: + + win = wxWindow(parent, -1, style = mystyle) + + 2. There is now an an equivalence between Python's None and C++'s + NULL. This means that any methods that might return NULL will + now return None and you can use none where wxWindows might be + expecting NULL. This makes things much more snake-ish. + + +There is a new build system based on a new Python program instead of +raw makefiles. Now wxPython builds are virtually the same on MSW or +Unix systems. See the end of this file for new build instructions and +see distrib/build.py for more details. + +wxDC.Bilt now includes the useMask parameter, and has been split into +two different versions. wxDC.BlitXY is like what was there before and +takes raw coordinants and sizes, and the new wxDC.Blit is for the new +interface using wxPoints and a wxSize. + + + + + What's new in 2.1b2 -------------------- @@ -93,6 +313,19 @@ Added a helper function named wxPyTypeCast that can convert shadow objects of one type into shadow objects of another type. (Like doing a down-cast.) See the implementation in wx.py for some docs. +Fixed wxImage GetData and SetData to properly use String objects for +data transfer. + +Added access methods to wxGridEvent. + +New Makefile/Setup files supporting multiple dynamic extension modules +for unix systems. + +Fixes for the wxGLCanvas demo to work around a strange bug in gtk. + +SWIG support routines now compiled separately instead of being bundled +in wx.cpp. + @@ -283,87 +516,79 @@ me. You don't need SWIG to build the extension module as all the generated C++ code is included under the src directory. I added a few minor features to SWIG to control some of the code -generation. If you want to playaround with this the patches are in -wxPython/SWIG.patches and they should be applied to the 1.1p5 version -of SWIG. These new patches are documented at -http://starship.skyport.net/crew/robind/#swig, and they should also -end up in the 1.2 version of SWIG. +generation. If you want to play around with this you will need to get +a recent version of SWIG from their CVS or from a daily build. See +http://www.swig.org/ for details. wxPython is organized as a Python package. This means that the directory containing the results of the build process should be a subdirectory of a directory on the PYTHONPATH. (And preferably should be named wxPython.) You can control where the build process will dump -wxPython by setting the TARGETDIR makefile variable. The default is -$(WXWIN)/utils/wxPython, where this README.txt is located. If you -leave it here then you should add $(WXWIN)/utils to your PYTHONPATH. -However, you may prefer to use something that is already on your -PYTHONPATH, such as the site-packages directory on Unix systems. +wxPython by setting the TARGETDIR variable for the build utility, (see +below.) -Win32 ------ +1. Build wxWindows as described in its BuildCVS.txt file. For *nix + systems I run configure with these flags: -1. Build wxWindows with wxUSE_RESOURCE_LOADING_IN_MSW set to 1 in -include/wx/msw/setup.h so icons can be loaded dynamically. While -there, make sure wxUSE_OWNER_DRAWN is also set to 1. + --with-gtk + --with-libjpeg + --without-odbc + --enable-unicode=no + --enable-threads=yes + --enable-socket=yes + --enable-static=no + --enable-shared=yes + --disable-std_iostreams -2. Change into the $(WXWIN)/utils/wxPython/src directory. + You can use whatever flags you want, but I know these work. -3. Edit makefile.vc and specify where your python installation is at. -You may also want to fiddle with the TARGETDIR variable as described -above. + For Win32 systems I use Visual C++ 6.0, but 5.0 should work. The + build utility currently does not support any other win32 compilers. -4. Run nmake -f makefile.vc +2. At this point you may want to make an alias or symlink, script, + batch file, whatever on the PATH that invokes + $(WXWIN)/utils/wxPython/distrib/build.py to help simplify matters + somewhat. For example, on my win32 system I have a file named + build.bat in a directory on the PATH that contains: -5. If it builds successfully, congratulations! Move on to the next -step. If not then you can try mailing me for help. Also, I will -always have a pre-built win32 version of this extension module at -http://alldunn.com/wxPython/. + python $(WXWIN)/utils/wxPython/distrib/build.py %1 %2 %3 %4 %5 %6 -6. Change to the $(WXWIN)/utils/wxPython/demo directory. -7. Try executing the demo program. For example: +3. Change into the $(WXWIN)/utils/wxPython/src directory. - python demo.py +4. Type "build -b" to build wxPython and "build -i" to install it. -To run it without requiring a console, you can use the pythonw.exe -version of Python either from the command line or from a shortcut. + The build.py script actually generates a Makefile based on what it + finds on your system and information found in the build.cfg file. + If you have troubles building or you want it built or installed in + a different way, take a look at the docstring in build.py. You may + be able to override configuration options in a file named + build.local. +5. To build and install the add-on modules, change to the appropriate + directory under $(WXWIN)/utils/wxPython/modules and run the build + utility again. +6. Change to the $(WXWIN)/utils/wxPython/demo directory. -Unix ----- -0. I configure wxWindows like this, YMMV: - -./configure --with-gtk --without-shared --with-threads --without-unicode --with-libjpeg - - -1. Change into the $(WXWIN)/utils/wxPython/src directory. - -2. Edit Setup.in and ensure that the flags, directories, and toolkit -options are correct. See the above commentary about TARGETDIR. There -are a few sample Setup.in.[platform] files provided. +7. Try executing the demo program. For example: -3. Run this command to generate a makefile: + python demo.py - make -f Makefile.pre.in boot +To run it without requiring a console on win32, you can use the +pythonw.exe version of Python either from the command line or from a +shortcut. -4. Run these commands to build and then install the wxPython extension -module: - make - make install +---------------- +Robin Dunn +robin@alldunn.com -5. Change to the $(WXWIN)/utils/wxPython/demo directory. -6. Try executing the demo program. For example: - python demo.py ----------------- -Robin Dunn -robin@alldunn.com