Other little docs tweaks, and added HTML versions

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-02-04 23:39:15 +00:00
parent c8000995b5
commit 8eda5e3588
17 changed files with 4248 additions and 110 deletions
+327
View File
@@ -0,0 +1,327 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<title>Building wxPython 2.5 for Development and Testing</title>
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document" id="building-wxpython-2-5-for-development-and-testing">
<h1 class="title">Building wxPython 2.5 for Development and Testing</h1>
<p>This file describes how I build wxWindows and wxPython while doing
development and testing, and is meant to help other people that want
to do the same thing. I'll assume that you are using either a CVS
snapshot from <a class="reference" href="http://wxwindows.org/snapshots/">http://wxwindows.org/snapshots/</a>, a checkout from CVS, or
one of the released wxPythonSrc-2.5.* tarballs. I'll also assume that
you know your way around your system, the compiler, etc. and that you
know what you are doing! ;-)</p>
<p>If you want to also install the version of wxPython you build to be in
your site-packages dir and be your default version of wxPython, then a
few additional steps are needed, and you may want to use slightly
different options. See INSTALL.txt for more details. If you only use
the instructions in this BUILD.txt file then you will end up with a
separate installation of wxPython and you can switch back and forth
between this and the release version that you may already have
installed.</p>
<p>If you want to make changes to any of the <tt class="literal"><span class="pre">*.i</span></tt> files, (SWIG interface
definition files,) or to regenerate the extension sources or renamer
modules, then you will need an up to date version of SWIG. Either get
and build the current CVS version, or version 1.3.20, and then apply
the patches in wxPython/SWIG. See the README.txt in that dir for
details about each patch and also info about those that may already
have been applied to the SWIG sources. If you install this build of
SWIG to a location that is not on the PATH (so it doesn't interfere
with an existing SWIG install for example) then you can set a setup.py
command-line variable named SWIG to be the full path name of the
executable and the wxPython build will use it. See below for an
example.</p>
<div class="section" id="building-on-unix-like-systems-e-g-linux-and-os-x">
<h1><a name="building-on-unix-like-systems-e-g-linux-and-os-x">Building on Unix-like Systems (e.g. Linux and OS X)</a></h1>
<p>These platforms are built almost the same way while in development
so I'll combine the descriptions about their build process here.
First we will build wxWindows and install it to an out of the way
place, then do the same for wxPython.</p>
<ol class="arabic">
<li><p class="first">Create a build directory in the main wxWindows dir, and configure
wxWindows. If you want to have multiple builds with different
configure options, just use different subdirectories. I normally
put the configure command in a script named &quot;.configure&quot; in each
build dir so I can easily blow away everything in the build dir and
rerun the script without having to remember the options I used
before:</p>
<pre class="literal-block">
mkdir bld
cd bld
../configure --prefix=/opt/wx/2.5 \
--with-gtk \
--with-opengl \
--disable-monolithic \
--enable-debug \
--enable-geometry \
</pre>
<p>On OS X of course you'll want to use --with-mac instead of
--with-gtk. For GTK2 and unicode add:</p>
<blockquote>
<p>--enable-gtk2 --enable-unicode </p>
</blockquote>
<p>Notice that I used a prefix of /opt/wx/2.5. You can use whatever
path you want, such as a path in your HOME dir or even one of the
standard prefix paths such as /usr or /usr/local if you like, but
using /opt this way lets me easily have multiple versions and ports
of wxWindows &quot;installed&quot; and makes it easy to switch between them,
without impacting any versions of wxWindows that may have been
installed via an RPM or whatever. For the rest of the steps below
be sure to also substitute &quot;/opt/wx/2.5&quot; with whatever prefix you
choose for your build.</p>
<p>If you want to use the image and zlib libraries included with
wxWindows instead of those already installed on your system, (for
example, to reduce dependencies on 3rd party libraries) then you
can add these flags to the configure command:</p>
<pre class="literal-block">
--with-libjpeg=builtin \
--with-libpng=builtin \
--with-libtiff=builtin \
--with-zlib=builtin \
</pre>
</li>
<li><p class="first">To build and install wxWindows you could just use the &quot;make&quot;
command but there are other libraries besides the main wxWindows
libs that also need to be built so again I make a script to do it
all for me so I don't forget anything. This time it is called
&quot;.make&quot; (I use the leading &quot;. so when I do <tt class="literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in my build
dir I don't lose my scripts too.) This is what it looks like:</p>
<pre class="literal-block">
make $* \
&amp;&amp; make -C contrib/src/gizmos $* \
&amp;&amp; make -C contrib/src/ogl CXXFLAGS=&quot;-DwxUSE_DEPRECATED=0&quot; $* \
&amp;&amp; make -C contrib/src/stc $* \
&amp;&amp; make -C contrib/src/xrc $*
</pre>
<p>So you just use .make as if it where make, but don't forget to set
the execute bit on .make first!:</p>
<pre class="literal-block">
.make
.make install
</pre>
<p>When it's done you should have an installed set of files under
/opt/wx/2.5 containing just wxWindows. Now to use this version of
wxWindows you just need to add /opt/wx/2.5/bin to the PATH and set
LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OS X) to /opt/wx/2.5/lib.</p>
</li>
<li><p class="first">I also have a script to help me build wxPython and it is checked in
to the CVS as wxWindows/wxPython/b, but probably don't want to use
it as it's very cryptic and expects that you want to run SWIG, so
if you don't have the latest patched up version of SWIG then you'll
probably get stuck. So I'll just give the raw commands instead.</p>
<p>We're not going to install the development version of wxPython with
these commands, so it won't impact your already installed version
of the latest release. You'll be able test with this version when
you want to, and use the installed release version the rest of the
time. If do want to install the development verison please read
INSTALL.txt.</p>
<p>If you have more than one version of Python on your system then be
sure to use the version of Python that you want to use when running
wxPython programs to run the setup.py commands below. I'll be
using python2.3.</p>
<p>Make sure that the first wx-config found on the PATH is the one you
installed above, and then change to the wxWindows/wxPython dir and
run the this command:</p>
<pre class="literal-block">
cd wxPython
python2.3 setup.py build_ext --inplace --debug
</pre>
<p>If your new wx-config script is not on the PATH, or there is some
other version of it found first, then you can add this to the
command line to ensure your new one is used instead:</p>
<pre class="literal-block">
WX_CONFIG=/opt/wx/2.5/bin/wx-config
</pre>
<p>If you are building with GTK2 then add the following flags to the
command line:</p>
<pre class="literal-block">
WXPORT=gtk2 UNICODE=1
</pre>
<p>If you are wanting to have the source files regenerated with swig,
then you need to turn on the USE_SWIG flag and optionally tell it
where to find the new swig executable, so add these flags:</p>
<pre class="literal-block">
USE_SWIG=1 SWIG=/opt/swig/bin/swig
</pre>
<p>If you get errors about wxGLCanvas or being unable to find libGLU
or something like that then you can add BUILD_GLCANVAS=0 to the
setup.py command line to disable the building of the glcanvas
module.</p>
<p>When the setup.py command is done you should have fully populated
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
.../wx, with all the extension modules (<tt class="literal"><span class="pre">*.so</span></tt> files) located in the
wx package.</p>
</li>
<li><p class="first">To run code with the development verison of wxPython, just set the
PYTHONPATH to the wxPython dir in the CVS tree. For example:</p>
<pre class="literal-block">
export LD_LIBRARY=/opt/wx/2.5/lib
export PYTHONPATH=/myprojects/wxWindows/wxPython
cd /myprojects/wxWindows/wxPython/demo
python2.3 demo.py
</pre>
<p>OS X NOTE: You need to use &quot;pythonw&quot; on the command line to run
wxPython applications. This version of the Python executable is
part of the Python Framework and is allowed to interact with the
display. You can also Double Click on a .py or a .pyw file from
the finder (assuming that PythonLauncher is still associated with
these file extensions) and it will launch the Framework version of
Python for you. For information about creating Applicaiton Bundles
of your wxPython apps please see the wiki and the mail lists.</p>
<p>SOLARIS NOTE: If you get unresolved symbol errors when importing
wxPython and you are running on Solaris and building with gcc, then
you may be able to work around the problem by uncommenting a bit of
code in setup.py and building again. Look for 'SunOS' in setup.py
and uncomment the block containing it. The problem is that Sun's ld
does not automatically add libgcc to the link step.</p>
</li>
</ol>
</div>
<div class="section" id="building-on-windows">
<h1><a name="building-on-windows">Building on Windows</a></h1>
<p>The Windows builds currently require the use of Microsoft Visual C++.
Theoretically, other compilers (such as mingw32 or the Borland
compilers) can also be used but I've never done the work to make that
happen. If you want to try that then first you'll want to find out if
there are any tricks that have to be done to make Python extension
modules using that compiler, and then make a few changes to setup.py
to accomodate that. (And send the patches to me.) If you plan on
using VisualStudio.Net (a.k.a. MSVC 7.1) keep in mind that you'll also
have to build Python and any other extension modules that you use with
that compiler because a different version of the C runtime likbrary is
used. The Python executable that comes from PythonLabs and the
wxPython extensions that I distribute are built with MSVC 6 with all
the Service Packs applied.</p>
<p>If you want to build a debugable version of wxWindows and wxPython you
will need to have also built a debug version of Python and any other
extension modules you need to use. You can tell if you have them
already if there is a _d in the file names, for example python_d.exe
or python23_d.dll. If you don't need to trace through the C/C++ parts
of the code with the debugger then building the normal (or hybrid)
version is fine, and you can use the regular python executables with
it.</p>
<p>Just like the unix versions I also use some scripts to help me build
wxWindows, but I use some non-standard stuff to do it. So if you want
to use them too you'll need to get a copy or 4DOS or 4NT from
<a class="reference" href="http://www.jpsoft.com/">http://www.jpsoft.com/</a> and also a copy of unix-like cat and sed
programs. You can also do by hand what my scripts are doing, but
there are a lof steps involved and I won't be going into details
here. There is a copy of my build scripts in wxWindowswxPythondistribmsw</p>
<ol class="arabic">
<li><p class="first">Set an environment variable to the root of the wxWindows source
tree:</p>
<pre class="literal-block">
set WXWIN=e:\projects\wxWindows
</pre>
</li>
<li><p class="first">Copy setup0.h to setup.h</p>
<blockquote>
<p>cd %WXWIN%includewxmsw
copy setup0.h setup.h</p>
</blockquote>
</li>
<li><p class="first">Edit %WXWIN%includewxmswsetup.h and change a few settings.
Some of them are changed by my build scripts depending on the type
of build (debug/hybrid, unicode/ansi). I change a few of the other
defaults to have these values:</p>
<pre class="literal-block">
wxDIALOG_UNIT_COMPATIBILITY 0
wxUSE_DEBUG_CONTEXT 1
wxUSE_MEMORY_TRACING 1
wxUSE_DIALUP_MANAGER 0
wxUSE_GLCANVAS 1
wxUSE_POSTSCRIPT 1
wxUSE_AFM_FOR_POSTSCRIPT 0
</pre>
</li>
<li><p class="first">Make a %WXWIN%BIN directory and add it to the PATH. My build
scripts will copy the wxWindows DLLs there.</p>
</li>
<li><p class="first">Change to the %WXWIN%buildmsw directory and copy my build scripts
there.</p>
</li>
<li><p class="first">Use the .make.btm command to build wxWindows. It needs one
command-line parameter which controls what kind of build(s) to do.
Use one of the following:</p>
<pre class="literal-block">
debug Build debug version
hybrid Build hybrid version
both Both debug and hybrid
debug-uni Build a debug unicode library
hybrid-uni Hybrid unicode (see the pattern yet? ;-)
both-uni and finally both unicode libraries
</pre>
<p>For example:</p>
<pre class="literal-block">
.make hybrid
You can also pass additional command line parameters as needed and
they will all be passed on to the nmake commands, for example to
clean up the build::
.make hybrid clean
</pre>
</li>
<li><p class="first">When that is done it will have built the main wxWindows DLLs and
also some of the contribs DLLs. There should be a ton of DLLs in
%WXDIR%bin and lots of lib files and other stuff in
%WXDIR%libvc_dll.</p>
</li>
<li><p class="first">Building wxPython on Windows is very similar to doing it for the
unix systems. We're not going to install the development version
of wxPython with these commands, so it won't impact your already
installed version of the latest release. You'll be able to test
with this version when you want to, and use the installed release
version the rest of the time. If you ever do want to install the
development verison please refer to INSTALL.txt.</p>
<p>Change to the wxWindowswxPython dir and run the this command,
makeing sure that you use the version of python that you want to
build for (if you have more than one on your system):</p>
<pre class="literal-block">
cd %WXWIN%\wxPython
python setup.py build_ext --inplace
</pre>
<p>If you are wanting to have the source files regenerated with swig,
then you need to turn on the USE_SWIG flag and optionally tell it
where to find the new swig executable, so add these flags:</p>
<pre class="literal-block">
USE_SWIG=1 SWIG=e:\projects\SWIG-cvs\swig.exe
</pre>
<p>If you built a Unicode version of wxWindows and want to also build
the Unicode version of wxPython then add this flag:</p>
<pre class="literal-block">
UNICODE=1
</pre>
<p>If you have a debug version of Python and wxWindows and want to
build a debug version of wxPython too, add the --debug flag to the
command line. You should then end up with a set of <tt class="literal"><span class="pre">*_d.pyd</span></tt>
files in the wx package and you'll have to run <tt class="literal"><span class="pre">python_d.exe</span></tt> to
use them. The debug and hybrid(release) versions can coexist.</p>
<p>When the setup.py command is done you should have fully populated
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
wxWindows/wxPython/wx, with all the extension modules (<tt class="literal"><span class="pre">*.pyd</span></tt>
files) located in the wx package.</p>
</li>
<li><p class="first">To run code with the development verison of wxPython, just set the
PYTHONPATH to the wxPython dir in the CVS tree. For example:</p>
<pre class="literal-block">
set PYTHONPATH=e:\projects\wxWindows\wxPython
cd e:\projects\wxWindows\wxPython
python demo.py
</pre>
</li>
</ol>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
+8 -8
View File
@@ -18,7 +18,7 @@ separate installation of wxPython and you can switch back and forth
between this and the release version that you may already have
installed.
If you want to make changes to any of the *.i files, (SWIG interface
If you want to make changes to any of the ``*.i`` files, (SWIG interface
definition files,) or to regenerate the extension sources or renamer
modules, then you will need an up to date version of SWIG. Either get
and build the current CVS version, or version 1.3.20, and then apply
@@ -92,7 +92,7 @@ place, then do the same for wxPython.
command but there are other libraries besides the main wxWindows
libs that also need to be built so again I make a script to do it
all for me so I don't forget anything. This time it is called
".make" (I use the leading ". so when I do "rm -r *" in my build
".make" (I use the leading ". so when I do ``rm -r *`` in my build
dir I don't lose my scripts too.) This is what it looks like::
make $* \
@@ -162,7 +162,7 @@ place, then do the same for wxPython.
When the setup.py command is done you should have fully populated
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
.../wx, with all the extension modules (*.so files) located in the
.../wx, with all the extension modules (``*.so`` files) located in the
wx package.
@@ -317,14 +317,14 @@ here. There is a copy of my build scripts in wxWindows\wxPython\distrib\msw
If you have a debug version of Python and wxWindows and want to
build a debug version of wxPython too, add the --debug flag to the
command line. You should then end up with a set of *_d.pyd files
in the wx package and you'll have to run python_d.exe to use them.
The debug and hybrid(release) versions can coexist.
command line. You should then end up with a set of ``*_d.pyd``
files in the wx package and you'll have to run ``python_d.exe`` to
use them. The debug and hybrid(release) versions can coexist.
When the setup.py command is done you should have fully populated
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
wxWindows/wxPython/wx, with all the extension modules (*.pyd files)
located in the wx package.
wxWindows/wxPython/wx, with all the extension modules (``*.pyd``
files) located in the wx package.
9. To run code with the development verison of wxPython, just set the
File diff suppressed because it is too large Load Diff
+16 -14
View File
@@ -1,6 +1,5 @@
CHANGES.txt for wxPython
----------------------------------------------------------------------
=====================================================================
2.5.1.x
-------
@@ -31,7 +30,7 @@ happen when there are nested attempts to aquire the GIL.
The RPMs will now install menu items on Mandrake in
Applications/Development/Tools for PyCrust, XRCed, etc. They are also
installing icons and *.desktop items in the generic KDE and GNOME
installing icons and ``*.desktop`` items in the generic KDE and GNOME
locations, but I don't know yet if they are resulting in menu items on
non-Mandrake systems. (It didn't automatically do it on my RH-9 build
box but I didn't chase it very far...) If you have ideas for how to
@@ -80,7 +79,7 @@ Added wxScrolledPanel from Will Sadkin
Added SetShape method to top level windows (e.g. wxFrame.)
Changed wxSWIG to not generate Python code using apply, (since it will
be deprecated in the future) wxSWIG will use spam(*args, **kw) syntax
be deprecated in the future) wxSWIG will use ``spam(*args, **kw)`` syntax
instead. Also changed the generated __repr__ methods to be a bit more
informative.
@@ -90,7 +89,7 @@ and wxWindows match.
Added the new wx "renamer" package that will dynamically import from
the wxPython package and rename wxFooBar --> FooBar. That means that
people can do imports without "import *" and can use names like
people can do imports without ``"import *"`` and can use names like
wx.Frame instead of wx.wxFrame. This is phase 1 of a full transition
to the new namespace.
@@ -147,6 +146,7 @@ Added wxCursorFromBits.
2.4.0.7
-------
Gave up on generating a warning upon the use of the old true/false or
TRUE/FALSE values.
@@ -174,7 +174,8 @@ details.
2.4.0.6 (a.k.a. the I'm so stupid release)
-------
------------------------------------------
The new deprecation class for the old true/false symbols can now be
returned from OnInit. And I promise to be sure I am testing what I
think I am testing in the future...
@@ -182,7 +183,8 @@ think I am testing in the future...
2.4.0.5 (a.k.a. the blame it on Kevin release)
-------
----------------------------------------------
A few little but annoying bug fixes.
Updated pycolourchooser.
@@ -767,8 +769,7 @@ Added wxGetClientDisplayRect which on wxMSW returns a wxRect
representing the area on screen not occupied by the taskbar and such.
On other platforms it is equivallent to wxGetDisplaySize.
***---***---***---***---***---***---***---***---***---***---***---
OOR:
Implemented the first phase of OOR (Original Object Return). See
the text in the demo for more details of what this means, but in a
nutshell methods such as wxWindow.GetParent or FindWindowById will
@@ -789,7 +790,7 @@ On other platforms it is equivallent to wxGetDisplaySize.
stomped on during my testing. So please be sure to test everything
thoroughly when you install this version and be sure to report any
object-type related oddities to me.
***---***---***---***---***---***---***---***---***---***---***---
There is now a wxObject class that most other classes derive from like
in C++, but the methods provided don't really match but are wxPython
@@ -1124,7 +1125,7 @@ Removed all non wx stuff from the glcanvas module since DA's PyOpenGL
is better and compatible with the wxGLCanvas. You can get it at
http://starship.python.net:9673/crew/da/Code/PyOpenGL.
Added some missing EVT_ functions.
Added some missing EVT functions.
Added Dirk Holtwic's editor classes to the wxPython.lib.editor
package.
@@ -1554,8 +1555,8 @@ compatibility with the current wxWindows.
What's new in 0.5.0
-------------------
Changed the import semantics from "from wxPython import *" to "from
wxPython.wx import *" This is for people who are worried about
Changed the import semantics from ``"from wxPython import *"`` to
``"from wxPython.wx import *"`` This is for people who are worried about
namespace pollution, they can use "from wxPython import wx" and then
prefix all the wxPython identifiers with "wx."
@@ -1604,4 +1605,5 @@ version segfault shortly after starting up.
3. Varioius bug fixes, enhancements, etc.
----------------------------------------------------------------------
+142
View File
@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<title>Installing wxPython 2.5 from Source</title>
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document" id="installing-wxpython-2-5-from-source">
<h1 class="title">Installing wxPython 2.5 from Source</h1>
<p>This document will describe the few differences and additions to the
content in BUILD.txt for installing wxPython built from source.
Please follow the intstructions both in this file and in BUILD.txt to
perform this task. Where there is overlap the items described here
will take precedence.</p>
<div class="section" id="installing-on-unix-like-systems-not-os-x">
<h1><a name="installing-on-unix-like-systems-not-os-x">Installing on Unix-like Systems (not OS X)</a></h1>
<ol class="arabic">
<li><p class="first">When building wxWindows you need to decide if you want it to be a
private copy only accessed by wxPython, or if you would like it to
be installed in a stanard location such as /usr. Or perhaps you
already have a version of wxWindows installed on your system (such
as from an RPM) and you want wxPython to use that version too. If
so then you'll want to ensure that the flags and options used to
build the installed version are compatible with wxPython.</p>
</li>
<li><p class="first">If you do decide to build and install your own wxWindows then there
are a few tweaks to the configure flags described in BUILD.txt that
you will probably want to make. Instead of --enable-debug use
this configure flag:</p>
<pre class="literal-block">
--enable-optimize \
</pre>
<p>Normally I also use the following flag in order to have wxWindows
runtime assertions turned into Python exceptions where possible.
It does add extra code to the build but probably not enough to
worry about it. However if you want to get as lean a build as
possible you can leave it out, but if your code does something bad
then instead of exceptions you'll likely get a crash.</p>
<blockquote>
<p>--enable-debug_flag </p>
</blockquote>
<p>If you are building a private copy of wxWindows (IOW, not installed
in a standard library location) then it can be kind of a hassle to
always have to set the LD_LIBRARY_PATH variable so wxPython can
find the wxWindows shared libraries. You can hard code the library
path into the binaries by using the rpath option when configuring
wxWindows. For example:</p>
<pre class="literal-block">
--enable-rpath=/opt/wx/2.5/lib \
</pre>
<p>SOLARIS NOTE: The --enable-rpath option may cause problems when
using wxGTK on Solaris when compiling wxPython as described below.
The woraround is to not use --enable-rpath flag for configure, but
in that case all wxPython applications <em>must</em> have the
LD_LIBRARY_PATH set to include $WXPREF/lib, or you can use the
'crle' program to modify the runtime linking environment. If this
is the only installation of wxGTK on the system then you can use a
system library path for prefix and not have to worry about it at
all.</p>
</li>
<li><p class="first">Build and install wxGTK as described in BUILD.txt.</p>
</li>
<li><p class="first">In addition to building wxPython as described in BUILD.txt, you can
install it to Python's site-packages dir, as well as some scripts
into the same bin dir used by Python by using this command:</p>
<pre class="literal-block">
python2.3 setup.py install
</pre>
<p>If you would like to install to some place besides the prefix where
Python is installed, (such as to your home directory) then you can
add &quot;--root=&lt;path&gt;&quot; after the &quot;install&quot; command. This will use
&lt;path&gt; as the prefix and will install scripts to a bin subdir and
the wxPython packages to a lib subdir. To use wxPython like this
you'll need to ensure that the directory containing wxPython is
contained in the PYTHONPATH environment variable.</p>
</li>
</ol>
</div>
<div class="section" id="installing-on-os-x">
<h1><a name="installing-on-os-x">Installing on OS X</a></h1>
<p>Installing wxPython on OS X is nearly the same as the Unix
instructions above, except for a few small, but important details:</p>
<ol class="arabic simple">
<li>The --enable-rpath configure option is not needed since the path to
the wxWindows dylibs will automatically be encoded into the
extension modules when they are built. If you end up moving the
wxWindows dynlibs to some other location (such as inside the .app
bundle of your applicaiton for distribution to other users,) then
you will need to set DYLD_LIBRARY_PATH to this location so the
dylibs can be found at runtime.</li>
<li>Depending on the version of OS X Python may be installed in
different locations. On 10.2 (Jaguar) you need to download and
install MacPython-OSX-2.3 from <a class="reference" href="http://www.python.org/">http://www.python.org/</a> and the
Python Framework will then be installed in /Library/Frameworks. On
10.3 (Panther) Apple supplies the Python Framework as part of the
OS install, but it will be located in /System/Library/Frameworks
instead. However, on Panther the site-pacakges dir is sym-linked
to /Library/Python/2.3 so the wxPython pacakges will end up there,
although they will still be visible from site-packages. If you are
building distributions of wxPython to be installed on other
machines be careful to install to /Library/Python/2.3. To
complicate things further, the Jaguar version, or a custom build
you do yourself will end up in /Library/Frameworks even on
Panther...</li>
<li>You need to use pythonw at the command line or PythonLauncher app
to run wxPython apps, otherwise the app will not be able to fully
use the GUI display.</li>
</ol>
</div>
<div class="section" id="installing-on-windows">
<h1><a name="installing-on-windows">Installing on Windows</a></h1>
<ol class="arabic">
<li><p class="first">Build wxWindows and wxPython as described in BUILD.txt. If you
would rather have a version without the code that turns runtime
assertions into Python exceptions, then use &quot;release&quot; instead of
&quot;hybrid&quot; when building wxWindows and add &quot;FINAL=1&quot; to the setup.py
command line.</p>
</li>
<li><p class="first">Install wxPython like this:</p>
<pre class="literal-block">
python setup.py install
</pre>
</li>
<li><p class="first">Copy the wxWindows DLLs to the wx package directory so they can be
found at runtime by the extension modules without requiring that
they be installed on the PATH:</p>
<pre class="literal-block">
copy %WXWIN%\BIN\wx*h_*.dll c:\Python23\Lib\site-pacakges\wx
</pre>
</li>
</ol>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
+35 -16
View File
@@ -100,10 +100,29 @@ def Bind(self, event, handler, source=None, id=wxID_ANY, id2=wxID_ANY):
<pre class="literal-block">
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_BUTTON, self.OnButtonClick, theButton)
self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
</pre>
<p>The wx.Menu methods that add items to a wx.Menu have been modified
such that they return a reference to the wx.MenuItem that was created.
Additionally menu items and toolbar items have been modified to
automatically generate a new ID if -1 is given, similar to using -1
with window classess. This means that you can create menu or toolbar
items and event bindings without having to predefine a unique menu ID,
although you still can use IDs just like before if you want. For
example, these are all equivallent other than ID values:</p>
<pre class="literal-block">
1.
item = menu.Append(-1, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, item)
2.
item = menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, item)
3.
menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
</pre>
<p>I hope to be able to remove the need for using IDs even for menu
events too...</p>
<p>If you create your own custom event types and EVT_* functions, and you
want to be able to use them with the Bind method above then you should
change your EVT_* to be an instance of wxPyEventBinder instead of a
@@ -329,10 +348,9 @@ class MyDialog(wx.Dialog):
</div>
<div class="section" id="sizers">
<h1><a name="sizers">Sizers</a></h1>
<p>The hack allowing the old &quot;option&quot; keyword parameter has been
removed. If you use keyworkd args with wxSizer Add, Insert, or
Prepend then you will need to use the &quot;proportion&quot; name instead of
&quot;option&quot;.</p>
<p>The hack allowing the old &quot;option&quot; keyword parameter has been removed.
If you use keyworkd args with wxSizer Add, Insert, or Prepend methods
then you will need to use the &quot;proportion&quot; name instead of &quot;option&quot;.</p>
<p>When adding a spacer to a sizer you now need to use a wxSize or a
2-integer sequence instead of separate width and height parameters.</p>
<p>The wxGridBagSizer class (very similar to the RowColSizer in the
@@ -348,12 +366,11 @@ wrappers will figure out what to do.</p>
into a single extension module, the &quot;core&quot; module is now just a few
extensions that are linked independently, and then merged together
later into the main namespace via Python code.</p>
<p>Because of the above, the &quot;internal&quot; module names have changed, but
you shouldn't have been using them anyway so it shouldn't bother
you. ;-)</p>
<p>The wxPython.help module no longer exists and the classes therein are
now part of the core module imported with wxPython.wx or the wx
package.</p>
<p>Because of the above and also because of the way the new SWIG works,
the &quot;internal&quot; module names have changed, but you shouldn't have been
using them anyway so it shouldn't bother you. ;-)</p>
<p>The help module no longer exists and the classes therein are now part
of the core module imported with wxPython.wx or the wx package.</p>
<p>wxPyDefaultPosition and wxPyDefaultSize are gone. Use the
wxDefaultPosition and wxDefaultSize objects instead.</p>
<p>Similarly, the wxSystemSettings backwards compatibiility aliases for
@@ -368,13 +385,15 @@ refreshed.</p>
<p>wxPyTypeCast has been removed. Since we've had the OOR (Original
Object Return) for a couple years now there should be no need to use
wxPyTypeCast at all.</p>
<p>If you use the old wxPython package and wxPython.wx namespace then
there are compatibility aliases for much of the above items.</p>
<p>The wxWave class has been renamed to wxSound, and now has a slightly
different API.</p>
</div>
</div>
<hr class="footer" />
<div class="footer">
<a class="reference" href="MigrationGuide.txt">View document source</a>.
Generated on: 2004-01-13 20:47 UTC.
Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -221,5 +221,5 @@ History of changes
This section lists all the changes that have been made to the Py
programs and modules, since the beginning.
.. include:: ../wxPython/py/CHANGES.txt
.. include:: ../wx/py/CHANGES.txt
+66
View File
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document">
<div class="section" id="wxpython-readme">
<h1><a name="wxpython-readme">wxPython README</a></h1>
<p>Welcome to the wonderful world of wxPython!</p>
<p>So where do you go from here? The best thing to do is to run the demo
and use its source code to help you learn how to use wxPython. Most
of the classes available are demonstrated there, and you can view the
sources directly in the demo so it is designed to help you learn. If
you are on Windows or OS X then you can run the demo just by double
clicking it's icon. If you are on Linux/Unix then change to the
directory containing the demo and type:</p>
<blockquote>
python demo.py</blockquote>
<p>There are also some sample mini applications available for you to run
and to play with as a learning exercise.</p>
<p>The next thing you should do is join the wxPython-users maillist where
you can interact with a community of other users and developers who
are willing to help you learn, answer questions and solve problems.
To join the mail list just go to this web page and follow the
instructions there:</p>
<blockquote>
<a class="reference" href="http://wxpython.org/maillist.php">http://wxpython.org/maillist.php</a></blockquote>
<p>There is also a good set of class reference documentation available
for wxPython, but currently it is geared for the C++ user. This may
be a little daunting at first, but with a little practice you'll
easily be able to &quot;mentally translate&quot; from the C++ shown into Python.
(See <a class="reference" href="http://wiki.wxpython.org/index.cgi/C_2b_2bGuideForwxPythoneers">http://wiki.wxpython.org/index.cgi/C_2b_2bGuideForwxPythoneers</a>
for a little help on this process.) Not all classes documented are
available in Python, but most of the GUI related classes are.</p>
</div>
<div class="section" id="other-info">
<h1><a name="other-info">Other Info</a></h1>
<p>Please also see the following files:</p>
<blockquote>
<dl>
<dt>docs/CHANGES.txt Information about new features, fixes,</dt>
<dd>etc. in each release.</dd>
<dt>docs/BUILD.txt Instructions for building wxPython on</dt>
<dd>various Unix-like platforms, OS X or
Windows.</dd>
<dt>docs/MigrationGuide.txt Information about some big changes from 2.4</dt>
<dd>to 2.5 that require changes to your
applications</dd>
</dl>
<p>licence/* Text of the wxWindows license.</p>
</blockquote>
<p>--
Robin Dunn
<a class="reference" href="mailto:robin&#64;alldunn.com">robin&#64;alldunn.com</a></p>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
+1 -1
View File
@@ -53,7 +53,7 @@ Please also see the following files:
-----------------
--
Robin Dunn
robin@alldunn.com
+3 -4
View File
@@ -1,6 +1,5 @@
[options]
[general]
output_encoding: iso-8859-1
source-link: 1
source_link: 0
datestamp: %Y-%m-%d %H:%M UTC
generator: 1
generator: 0
+177
View File
@@ -0,0 +1,177 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<title>The wxPython wx Package</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="author" content="Robin Dunn" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2003-07-02" />
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document" id="the-wxpython-wx-package">
<h1 class="title">The wxPython wx Package</h1>
<h2 class="subtitle" id="or-how-to-survive-the-new-wx-namespace-changes">Or, how to survive the new wx namespace changes.</h2>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
<tr><th class="docinfo-name">Author:</th>
<td>Patrick K. O'Brien</td></tr>
<tr><th class="docinfo-name">Author:</th>
<td>Robin Dunn</td></tr>
<tr><th class="docinfo-name">Contact:</th>
<td><a class="first last reference" href="mailto:pobrien&#64;orbtech.com">pobrien&#64;orbtech.com</a></td></tr>
<tr><th class="docinfo-name">Organization:</th>
<td><a class="first last reference" href="http://www.orbtech.com/">Orbtech</a></td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2003-07-02</td></tr>
<tr><th class="docinfo-name">Revision:</th>
<td>1.2</td></tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title"><a name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id2" name="id2">Introduction</a></li>
<li><a class="reference" href="#why-change-anything" id="id3" name="id3">Why change anything?</a></li>
<li><a class="reference" href="#what-does-the-new-wx-package-do" id="id4" name="id4">What does the new wx package do?</a></li>
<li><a class="reference" href="#will-any-of-this-effect-my-existing-code" id="id5" name="id5">Will any of this effect my existing code?</a></li>
<li><a class="reference" href="#what-about-all-the-other-modules-like-grid-html-and-stc" id="id6" name="id6">What about all the other modules, like grid, html, and stc?</a></li>
<li><a class="reference" href="#how-do-i-use-this-new-wx-package" id="id7" name="id7">How do I use this new wx package?</a></li>
<li><a class="reference" href="#what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package" id="id8" name="id8">What are the issues with converting old code to use the new wx package?</a></li>
<li><a class="reference" href="#where-can-i-find-example-programs-using-the-new-wx-syntax" id="id9" name="id9">Where can I find example programs using the new wx syntax?</a></li>
</ul>
</div>
<div class="section" id="introduction">
<h1><a class="toc-backref" href="#id2" name="introduction">Introduction</a></h1>
<p>In the begining there was Python, and Python had modules, and Python
was good. But after a time Guido looked on Python and saw that Python
needed organizational assistance, and so Guido took code from Python's
side and created Packages and then Python was very good. About this
time wxPython was reborn, and wxPython used Packages, but being young
and trying to use a new technology wxPython did not know how to use
Packages effectivly. wxPython was good, but dreamed of being much
better...</p>
<p>Now many years later, after tons of code reorganization and build
hacking wxPython has reached that goal. In version 2.4.1 a prototype
of this new structure was introduced that dynamically built at import
time a new toplevel package named simply &quot;wx&quot; that contained all the
items from wxPython.wx but with the names edited to remove the wx
prefix. Now in 2.5 the final phase of that switcheroo has been
completed and the <em>real</em> classes, functions and constants are now
located in the wx package, leaving some compatibility modules in
wxPython.wx. This document should answer all the questions you might
have concerning the new wx package. Please also take a look at the
<a class="reference" href="MigrationGuide.html">2.5 Migration Guide</a> to see notes about other big differences in
this release.</p>
</div>
<div class="section" id="why-change-anything">
<h1><a class="toc-backref" href="#id3" name="why-change-anything">Why change anything?</a></h1>
<p>This change is being made for a couple of reasons. The first reason
is to discourage the use of <tt class="literal"><span class="pre">import</span> <span class="pre">*</span></tt>, which is a dangerous
technique that can create name conflicts and bloated namespaces.</p>
<p>The second reason is to remove what some perceive to be a &quot;wart.&quot; For
example, the following code is rather ugly in that the &quot;wx&quot; prefix on
the wxFrame class name is no longer useful when you're using the wx
module prefix:</p>
<pre class="literal-block">
from wxPython import wx
class Frame(wx.wxFrame)
</pre>
<p>The new wx package allows you to write code like this, instead:</p>
<pre class="literal-block">
import wx
class Frame(wx.Frame)
</pre>
<p>The third reason is that the wxWindows project has considered doing
the same thing (implement a new wx namespace and drop the &quot;wx&quot; prefix)
and we want wxPython to lead the way.</p>
</div>
<div class="section" id="what-does-the-new-wx-package-do">
<h1><a class="toc-backref" href="#id4" name="what-does-the-new-wx-package-do">What does the new wx package do?</a></h1>
<p>As mentioned in the Introduction, wxPython 2.4.1 introduced a way of
getting to this new syntax as quickly as possible. It would import
the old names (like &quot;wxFrame&quot;) from the old package and then create new
names in the wx package without the wx prefix, (like &quot;Frame&quot;.)
Starting with wxPython 2.5 the renaming is moved up to the wxPython
build step, so the real classes and etc. are actually named with the
new name (like &quot;Frame&quot;) and are located in the new wx package.</p>
<p>For compatibility the old wxPython package still exists, but now it is
populated with modules that simply import the new names and then
&quot;reverse-renames&quot; them to the old names. It probably sounds a bit
complicated, but it is mostly automated and so it doesn't cause
problems in most cases.</p>
</div>
<div class="section" id="will-any-of-this-effect-my-existing-code">
<h1><a class="toc-backref" href="#id5" name="will-any-of-this-effect-my-existing-code">Will any of this effect my existing code?</a></h1>
<p>No. Your existing code will continue to work and be supported for
some time. It will be up to you to decide when to switch to the new
syntax. But all new documentation and code examples will use the new
syntax. So don't wait too long. You wouldn't want anyone calling you
old-fashioned, would you?</p>
<p>When you import from wxPython.wx and use a class with the old name,
such as wxButton, you are actually using the wx.Button class. I
expect that the vast majority of the existing code should work fine
using this scheme. The only things that may cause problems is if your
old code is depending on some of the implemtation details, or if you
are using other things that have changed in the API. See the
<a class="reference" href="MigrationGuide.html">Migration Guide</a> for more details.</p>
</div>
<div class="section" id="what-about-all-the-other-modules-like-grid-html-and-stc">
<h1><a class="toc-backref" href="#id6" name="what-about-all-the-other-modules-like-grid-html-and-stc">What about all the other modules, like grid, html, and stc?</a></h1>
<p>There's more to the old wxPython than just the wxPython.wx module.
And we've got those extra modules covered as well. Each of those
modules (as well as the lib subpackage) has been moved to the new wx
package and reverse-renamers have been placed in the wxPython package
as needed.</p>
</div>
<div class="section" id="how-do-i-use-this-new-wx-package">
<h1><a class="toc-backref" href="#id7" name="how-do-i-use-this-new-wx-package">How do I use this new wx package?</a></h1>
<p>The wx package is automatically created when you install wxPython
version 2.4.1 or higher. So all you have to do is:</p>
<pre class="literal-block">
import wx
</pre>
</div>
<div class="section" id="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">
<h1><a class="toc-backref" href="#id8" name="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">What are the issues with converting old code to use the new wx package?</a></h1>
<p>Obviously, you need to change your import statements from:</p>
<pre class="literal-block">
from wxPython import wx
</pre>
<p>or:</p>
<pre class="literal-block">
from wxPython.wx import *
</pre>
<p>to:</p>
<pre class="literal-block">
import wx
</pre>
<p>Then you need to refer to wx attributes without a &quot;wx&quot; prefix, such
as:</p>
<pre class="literal-block">
class MyFrame(wx.Frame):
</pre>
<p>In most cases, existing code can be modified with a simple search and
replace.</p>
</div>
<div class="section" id="where-can-i-find-example-programs-using-the-new-wx-syntax">
<h1><a class="toc-backref" href="#id9" name="where-can-i-find-example-programs-using-the-new-wx-syntax">Where can I find example programs using the new wx syntax?</a></h1>
<p>Example programs are included in the wxPython/samples/wx_examples
directory, and are documented in the <a class="reference" href="wxPythonExamples.html">wxPythonExamples</a> documentation
file. Also, all the code in the py package uses the new wx syntax.
You can learn more about these in the <a class="reference" href="PyManual.html">PyManual</a>.</p>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
+52 -66
View File
@@ -7,6 +7,7 @@
--------------------------------------------------
:Author: Patrick K. O'Brien
:Author: Robin Dunn
:Contact: pobrien@orbtech.com
:Organization: Orbtech_
:Date: $Date$
@@ -20,14 +21,29 @@
Introduction
============
Big things sometimes come in small packages. This is certainly true
of the new wx package, which is being introduced in wxPython 2.4.1 as
a way to allow the "wx" prefix to be dropped from the names of all
wxPython classes, functions, and constants. This document should
answer all the questions you might have concerning the new wx package.
If not, feel free to contact the author. I hope you like the new wx
package as much as I do.
In the begining there was Python, and Python had modules, and Python
was good. But after a time Guido looked on Python and saw that Python
needed organizational assistance, and so Guido took code from Python's
side and created Packages and then Python was very good. About this
time wxPython was reborn, and wxPython used Packages, but being young
and trying to use a new technology wxPython did not know how to use
Packages effectivly. wxPython was good, but dreamed of being much
better...
Now many years later, after tons of code reorganization and build
hacking wxPython has reached that goal. In version 2.4.1 a prototype
of this new structure was introduced that dynamically built at import
time a new toplevel package named simply "wx" that contained all the
items from wxPython.wx but with the names edited to remove the wx
prefix. Now in 2.5 the final phase of that switcheroo has been
completed and the *real* classes, functions and constants are now
located in the wx package, leaving some compatibility modules in
wxPython.wx. This document should answer all the questions you might
have concerning the new wx package. Please also take a look at the
`2.5 Migration Guide`_ to see notes about other big differences in
this release.
.. _2.5 Migration Guide: MigrationGuide.html
Why change anything?
====================
@@ -51,22 +67,27 @@ The new wx package allows you to write code like this, instead::
class Frame(wx.Frame)
The third reason is that the wxWindows project intends to do the same
thing (implement a new wx namespace and drop the "wx" prefix) and we
want wxPython to lead the way.
The third reason is that the wxWindows project has considered doing
the same thing (implement a new wx namespace and drop the "wx" prefix)
and we want wxPython to lead the way.
What does the new wx package do?
================================
As a way of getting to this new syntax as quickly as possible, the
code in this new wx package was created. What it does is alter the
existing wx namespace dynamically. By making the changes on-the-fly
at runtime, we can try out the new syntax before any permanent changes
are made to the underlying class library. The downside of making
these changes at runtime is that there is a slight delay when you
``import wx``; the upside is that you can start using the new syntax
now.
As mentioned in the Introduction, wxPython 2.4.1 introduced a way of
getting to this new syntax as quickly as possible. It would import
the old names (like "wxFrame") from the old package and then create new
names in the wx package without the wx prefix, (like "Frame".)
Starting with wxPython 2.5 the renaming is moved up to the wxPython
build step, so the real classes and etc. are actually named with the
new name (like "Frame") and are located in the new wx package.
For compatibility the old wxPython package still exists, but now it is
populated with modules that simply import the new names and then
"reverse-renames" them to the old names. It probably sounds a bit
complicated, but it is mostly automated and so it doesn't cause
problems in most cases.
Will any of this effect my existing code?
@@ -78,55 +99,25 @@ syntax. But all new documentation and code examples will use the new
syntax. So don't wait too long. You wouldn't want anyone calling you
old-fashioned, would you?
When you import from wxPython.wx and use a class with the old name,
such as wxButton, you are actually using the wx.Button class. I
expect that the vast majority of the existing code should work fine
using this scheme. The only things that may cause problems is if your
old code is depending on some of the implemtation details, or if you
are using other things that have changed in the API. See the
`Migration Guide`_ for more details.
How does the new wx package work?
=================================
It's pretty simple, and pretty clever. The wx directory contains an
``__init__.py`` file, making it a Python package. (In contrast, the
old wxPython.wx module is a module, not a package.) When you ``import
wx`` the code in the ``__init__.py`` file is executed, and that's
where all the magic takes place. Let's take a look at the code inside
the ``__init__.py`` file:
.. include:: ../wx/__init__.py
:literal:
Namespaces in Python are implemented as dictionaries. The dictionary
used to create the wx package's namespace is accessible using the
``globals()`` function. The dictionary used to create the old
wxPython.wx module's namespace is ``wx.__dict__``. Once we have these
two dictionaries, it's a simple matter of iterating through one,
changing the names, adding the renamed object to the other dictionary,
and cleaning up a few local variables and imported modules. Voila!
.. _Migration Guide: MigrationGuide.html
What about all the other modules, like grid, html, and stc?
===========================================================
There's more to wxPython than just the wx namespace. And we've got
those extra modules covered as well. For each of those modules (as
well as the lib package) we've got matching modules in the new wx
package. Let's take a look at a few of them.
Here is ``html.py``:
.. include:: ../wx/html.py
:literal:
And here is ``lib/dialogs.py``:
.. include:: ../wx/lib/dialogs.py
:literal:
As you can see, they both rely on the ``prefix.rename()`` function
defined in ``prefix.py``:
.. include:: ../wx/prefix.py
:literal:
Again, the technique is very similar to the one used by the wx
package.
There's more to the old wxPython than just the wxPython.wx module.
And we've got those extra modules covered as well. Each of those
modules (as well as the lib subpackage) has been moved to the new wx
package and reverse-renamers have been placed in the wxPython package
as needed.
How do I use this new wx package?
@@ -161,11 +152,6 @@ as::
In most cases, existing code can be modified with a simple search and
replace.
One extra issue you might run into when converting existing code is
that the wx.__version__ attribute is no longer available, since the
new wx namespace doesn't include any private attributes from the old
wxPython.wx namespace. The solution is to use the wx.VERSION_STRING
attribute, which was introduced in wxPython 2.4.1.
Where can I find example programs using the new wx syntax?
+77
View File
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<title>wxPython Documentation</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2003-07-02" />
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document" id="wxpython-documentation">
<h1 class="title">wxPython Documentation</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
<tr><th class="docinfo-name">Author:</th>
<td>Patrick K. O'Brien</td></tr>
<tr><th class="docinfo-name">Contact:</th>
<td><a class="first last reference" href="mailto:pobrien&#64;orbtech.com">pobrien&#64;orbtech.com</a></td></tr>
<tr><th class="docinfo-name">Organization:</th>
<td><a class="first last reference" href="http://www.orbtech.com/">Orbtech</a></td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2003-07-02</td></tr>
<tr><th class="docinfo-name">Revision:</th>
<td>1.2</td></tr>
</tbody>
</table>
<div class="section" id="wxpython-manual">
<h1><a name="wxpython-manual">wxPython Manual</a></h1>
<p><a class="reference" href="wxPythonManual.html">The wxPython Manual</a> is a reference to the wxPython toolkit.</p>
</div>
<div class="section" id="wxpython-developer-reference">
<h1><a name="wxpython-developer-reference">wxPython Developer Reference</a></h1>
<p><a class="reference" href="http://www.orbtech.com/www/wx/epydoc/">The wxPython source code documentation</a> is for developers, and was
created using the Epydoc tool.</p>
</div>
<div class="section" id="wxpython-tutorial">
<h1><a name="wxpython-tutorial">wxPython Tutorial</a></h1>
<p><a class="reference" href="wxPythonTutorial.html">The wxPython Tutorial</a> will help get you started with wxPython.</p>
</div>
<div class="section" id="wxpython-examples">
<h1><a name="wxpython-examples">wxPython Examples</a></h1>
<p><a class="reference" href="wxPythonExamples.html">The wxPython Examples</a> illustrates example programs using wxPython.</p>
</div>
<div class="section" id="wx-package">
<h1><a name="wx-package">wx Package</a></h1>
<p><a class="reference" href="wxPackage.html">The wxPython wx Package</a> explains the new prefix-less wx package.</p>
</div>
<div class="section" id="py-manual">
<h1><a name="py-manual">Py Manual</a></h1>
<p><a class="reference" href="PyManual.html">The Py Manual</a> documents the Py collection of programs and source
code modules, including:</p>
<ul class="simple">
<li>PyAlaCarte</li>
<li>PyAlaMode</li>
<li>PyCrust</li>
<li>PyFilling</li>
<li>PyShell</li>
<li>PyWrap</li>
</ul>
</div>
<div class="section" id="py-developer-reference">
<h1><a name="py-developer-reference">Py Developer Reference</a></h1>
<p><a class="reference" href="http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html">The Py source code documentation</a> is for developers, and was created
using the Epydoc tool.</p>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
+226
View File
@@ -0,0 +1,226 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<title>Example Programs Using wxPython</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2003-07-02" />
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document" id="example-programs-using-wxpython">
<h1 class="title">Example Programs Using wxPython</h1>
<h2 class="subtitle" id="a-survival-guide-for-the-post-wx-prefixed-world">A survival guide for the post-wx-prefixed world.</h2>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
<tr><th class="docinfo-name">Author:</th>
<td>Patrick K. O'Brien</td></tr>
<tr><th class="docinfo-name">Contact:</th>
<td><a class="first last reference" href="mailto:pobrien&#64;orbtech.com">pobrien&#64;orbtech.com</a></td></tr>
<tr><th class="docinfo-name">Organization:</th>
<td><a class="first last reference" href="http://www.orbtech.com/">Orbtech</a></td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2003-07-02</td></tr>
<tr><th class="docinfo-name">Revision:</th>
<td>1.2</td></tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title"><a name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
<li><a class="reference" href="#background-with-tongue-firmly-in-cheek" id="id2" name="id2">Background (with tongue firmly in cheek)</a></li>
<li><a class="reference" href="#basic-program-example" id="id3" name="id3">Basic Program Example</a></li>
<li><a class="reference" href="#hello-wxpython-example" id="id4" name="id4">Hello wxPython Example</a></li>
</ul>
</div>
<div class="section" id="introduction">
<h1><a class="toc-backref" href="#id1" name="introduction">Introduction</a></h1>
<p>This document illustrates example programs using wxPython. All the
examples make use of the new wx package syntax introduced in wxPython
2.4.1, which is a bit different than older examples you might come
across.</p>
</div>
<div class="section" id="background-with-tongue-firmly-in-cheek">
<h1><a class="toc-backref" href="#id2" name="background-with-tongue-firmly-in-cheek">Background (with tongue firmly in cheek)</a></h1>
<p>If something hits you on the head, don't run around screaming that the
sky is falling. Instead, take a close look and see if it wasn't a
&quot;wx&quot; prefix that hit you. Apparently, they're dropping off wxPython
class names like flies dropping dead in the scorching heat of a
summer's day.</p>
<p>Yes, the world is changing, and even our little wxPython world must
change with it. Then again, I'm not fond of pesky summertime flies,
and I'm not too upset that the &quot;wx&quot; prefixes are going to bite the
dust. I think it's for the best. But, being the kind, considerate
person that I am, I decided to write this guide to make the wx
namespace transition easier for everyone, even Chicken Little.</p>
<div class="note">
<p class="admonition-title">Note</p>
<p>Say what?</p>
<p>If you have no idea what I mean by the &quot;wx namespace transition,&quot;
consider yourself lucky. You can simply use these examples to
learn wxPython in its current state (beginning with wxPython
version 2.4.1). All you need to know is that previous wxPython
code used a slightly different syntax that some folks (including
me) considered ugly. So we changed it. And that's when the sky
starting falling...</p>
<p>If you want more of the technical details, read the <a class="reference" href="wxPackage.html">wx package
documentation</a>.</p>
</div>
<p>Rather than simply <strong>tell</strong> you that everything will be okay, I
decided to <strong>show</strong> you that everything will be okay. To do that,
I've created a bunch of example programs using the new wx package. I
hope you like them.</p>
</div>
<div class="section" id="basic-program-example">
<h1><a class="toc-backref" href="#id3" name="basic-program-example">Basic Program Example</a></h1>
<p>It doesn't get much simpler than this. Every wxPython program needs
an application and a frame. To encourage good coding habits, I've
split them into separate modules. They don't do much, but they're a
good starting point.</p>
<p>I include a simple App class in the frame module because the PyWrap
&quot;wrapper&quot; utility (<tt class="literal"><span class="pre">pywrap</span></tt>) only works with modules that contain an
application class. So including a simple one in each of your frame
modules allows you to use the PyWrap runtime wrapper and debug your
frames independent of your full application.</p>
<p>Here is the module (<tt class="literal"><span class="pre">frame.py</span></tt>) that defines the frame class:</p>
<pre class="literal-block">
#!/usr/bin/env python
&quot;&quot;&quot;Basic frame class, with App for testing.&quot;&quot;&quot;
__author__ = &quot;Patrick K. O'Brien &lt;pobrien&#64;orbtech.com&gt;&quot;
__cvsid__ = &quot;$Id$&quot;
__revision__ = &quot;$Revision$&quot;[11:-2]
import wx
class Frame(wx.Frame):
&quot;&quot;&quot;Frame class.&quot;&quot;&quot;
def __init__(self, parent=None, id=-1, title='Title',
pos=wx.DefaultPosition, size=(400, 200)):
&quot;&quot;&quot;Create a Frame instance.&quot;&quot;&quot;
wx.Frame.__init__(self, parent, id, title, pos, size)
class App(wx.App):
&quot;&quot;&quot;Application class.&quot;&quot;&quot;
def OnInit(self):
self.frame = Frame()
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
</pre>
<p>And here is the module (<tt class="literal"><span class="pre">app.py</span></tt>) that defines the application class
and imports the frame from <tt class="literal"><span class="pre">frame.py</span></tt>:</p>
<pre class="literal-block">
#!/usr/bin/env python
&quot;&quot;&quot;Basic application class.&quot;&quot;&quot;
__author__ = &quot;Patrick K. O'Brien &lt;pobrien&#64;orbtech.com&gt;&quot;
__cvsid__ = &quot;$Id$&quot;
__revision__ = &quot;$Revision$&quot;[11:-2]
import wx
from frame import Frame
class App(wx.App):
&quot;&quot;&quot;Application class.&quot;&quot;&quot;
def OnInit(self):
self.frame = Frame()
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
</pre>
</div>
<div class="section" id="hello-wxpython-example">
<h1><a class="toc-backref" href="#id4" name="hello-wxpython-example">Hello wxPython Example</a></h1>
<p>This program displays an image file (<tt class="literal"><span class="pre">wxPython.jpg</span></tt>) inside a frame
sized to match the graphic.</p>
<div class="figure">
<p><img alt="screenshots/hello-win98.png" scale="100" src="screenshots/hello-win98.png" /></p>
<p class="caption">Running <tt class="literal"><span class="pre">hello.py</span></tt> on Windows.</p>
</div>
<div class="figure">
<p><img alt="screenshots/hello-linux.png" scale="100" src="screenshots/hello-linux.png" /></p>
<p class="caption">Running <tt class="literal"><span class="pre">hello.py</span></tt> on Linux.</p>
</div>
<div class="figure">
<p><img alt="screenshots/hello-mac.png" scale="100" src="screenshots/hello-mac.png" /></p>
<p class="caption">Running <tt class="literal"><span class="pre">hello.py</span></tt> on Mac OS X.</p>
</div>
<p>Here is the source code for <tt class="literal"><span class="pre">hello.py</span></tt>:</p>
<pre class="literal-block">
#!/usr/bin/env python
&quot;&quot;&quot;Hello, wxPython! program.&quot;&quot;&quot;
__author__ = &quot;Patrick K. O'Brien &lt;pobrien&#64;orbtech.com&gt;&quot;
__cvsid__ = &quot;$Id$&quot;
__revision__ = &quot;$Revision$&quot;[11:-2]
import wx
class Frame(wx.Frame):
&quot;&quot;&quot;Frame class that displays an image.&quot;&quot;&quot;
def __init__(self, image, parent=None, id=-1,
pos=wx.DefaultPosition, title='Hello, wxPython!'):
&quot;&quot;&quot;Create a Frame instance and display image.&quot;&quot;&quot;
temp = image.ConvertToBitmap()
size = temp.GetWidth(), temp.GetHeight()
wx.Frame.__init__(self, parent, id, title, pos, size)
self.bmp = wx.StaticBitmap(parent=self, id=-1, bitmap=temp)
class App(wx.App):
&quot;&quot;&quot;Application class.&quot;&quot;&quot;
def OnInit(self):
wx.InitAllImageHandlers()
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
</pre>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
+128
View File
@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" />
<title>The wxPython Tutorial</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2003-07-02" />
<link rel="stylesheet" href="default.css" type="text/css" />
</head>
<body>
<div class="document" id="the-wxpython-tutorial">
<h1 class="title">The wxPython Tutorial</h1>
<h2 class="subtitle" id="how-to-get-up-and-running-with-wxpython">How to get up and running with wxPython</h2>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
<tr><th class="docinfo-name">Author:</th>
<td>Patrick K. O'Brien</td></tr>
<tr><th class="docinfo-name">Contact:</th>
<td><a class="first last reference" href="mailto:pobrien&#64;orbtech.com">pobrien&#64;orbtech.com</a></td></tr>
<tr><th class="docinfo-name">Organization:</th>
<td><a class="first last reference" href="http://www.orbtech.com/">Orbtech</a></td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2003-07-02</td></tr>
<tr><th class="docinfo-name">Revision:</th>
<td>1.2</td></tr>
<tr class="field"><th class="docinfo-name">License:</th><td class="field-body">wxWindows Free Documentation Licence, Version 3</td>
</tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title"><a name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
<li><a class="reference" href="#what-is-wxpython" id="id2" name="id2">What is wxPython?</a></li>
<li><a class="reference" href="#license" id="id3" name="id3">License</a></li>
</ul>
</div>
<div class="section" id="introduction">
<h1><a class="toc-backref" href="#id1" name="introduction">Introduction</a></h1>
<p>This is a tutorial for the wxPython GUI toolkit. It uses the new wx
package syntax that was introduced in wxPython 2.4.1.</p>
</div>
<div class="section" id="what-is-wxpython">
<h1><a class="toc-backref" href="#id2" name="what-is-wxpython">What is wxPython?</a></h1>
<p>wxPython is a GUI toolkit for the Python programming language. It
allows Python programmers to create programs with a graphical user
interface for Windows, Linux, and Mac OS X.</p>
</div>
<div class="section" id="license">
<h1><a class="toc-backref" href="#id3" name="license">License</a></h1>
<p>This document adheres to the same license as the other documentation
that comes with wxWindows:</p>
<pre class="literal-block">
wxWindows Free Documentation Licence, Version 3
===============================================
Copyright (c) 1998 Julian Smart, Robert Roebling et al
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
WXWINDOWS FREE DOCUMENTATION LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1. Permission is granted to make and distribute verbatim copies of this
manual or piece of documentation provided any copyright notice and this
permission notice are preserved on all copies.
2. Permission is granted to process this file or document through a
document processing system and, at your option and the option of any third
party, print the results, provided a printed document carries a copying
permission notice identical to this one.
3. Permission is granted to copy and distribute modified versions of this
manual or piece of documentation under the conditions for verbatim
copying, provided also that any sections describing licensing conditions
for this manual, such as, in particular, the GNU General Public Licence,
the GNU Library General Public Licence, and any wxWindows Licence are
included exactly as in the original, and provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.
4. Permission is granted to copy and distribute translations of this
manual or piece of documentation into another language, under the above
conditions for modified versions, except that sections related to
licensing, including this paragraph, may also be included in translations
approved by the copyright holders of the respective licence documents in
addition to the original English.
WARRANTY DISCLAIMER
5. BECAUSE THIS MANUAL OR PIECE OF DOCUMENTATION IS LICENSED FREE OF CHARGE,
THERE IS NO WARRANTY FOR IT, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
PARTIES PROVIDE THIS MANUAL OR PIECE OF DOCUMENTATION &quot;AS IS&quot; WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
THE MANUAL OR PIECE OF DOCUMENTATION IS WITH YOU. SHOULD THE MANUAL OR
PIECE OF DOCUMENTATION PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
6. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE MANUAL OR PIECE OF DOCUMENTATION AS PERMITTED ABOVE, BE
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
MANUAL OR PIECE OF DOCUMENTATION (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF A PROGRAM BASED ON THE MANUAL OR PIECE OF
DOCUMENTATION TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
</pre>
</div>
</div>
<hr class="footer" />
<div class="footer">
Generated on: 2004-02-04 23:31 UTC.
</div>
</body>
</html>