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:
327
wxPython/docs/BUILD.html
Normal file
327
wxPython/docs/BUILD.html
Normal 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 ".configure" 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 "installed" 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 "/opt/wx/2.5" 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 "make"
|
||||||
|
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 <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 $* \
|
||||||
|
&& make -C contrib/src/gizmos $* \
|
||||||
|
&& make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" $* \
|
||||||
|
&& make -C contrib/src/stc $* \
|
||||||
|
&& 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 "pythonw" 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>
|
@@ -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
|
between this and the release version that you may already have
|
||||||
installed.
|
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
|
definition files,) or to regenerate the extension sources or renamer
|
||||||
modules, then you will need an up to date version of SWIG. Either get
|
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
|
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
|
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
|
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
|
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::
|
dir I don't lose my scripts too.) This is what it looks like::
|
||||||
|
|
||||||
make $* \
|
make $* \
|
||||||
@@ -162,7 +162,7 @@ place, then do the same for wxPython.
|
|||||||
|
|
||||||
When the setup.py command is done you should have fully populated
|
When the setup.py command is done you should have fully populated
|
||||||
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
|
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.
|
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
|
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
|
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
|
command line. You should then end up with a set of ``*_d.pyd``
|
||||||
in the wx package and you'll have to run python_d.exe to use them.
|
files in the wx package and you'll have to run ``python_d.exe`` to
|
||||||
The debug and hybrid(release) versions can coexist.
|
use them. The debug and hybrid(release) versions can coexist.
|
||||||
|
|
||||||
When the setup.py command is done you should have fully populated
|
When the setup.py command is done you should have fully populated
|
||||||
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
|
wxPython and wx packages locally in wxWindows/wxPython/wxPython and
|
||||||
wxWindows/wxPython/wx, with all the extension modules (*.pyd files)
|
wxWindows/wxPython/wx, with all the extension modules (``*.pyd``
|
||||||
located in the wx package.
|
files) located in the wx package.
|
||||||
|
|
||||||
|
|
||||||
9. To run code with the development verison of wxPython, just set the
|
9. To run code with the development verison of wxPython, just set the
|
||||||
|
1207
wxPython/docs/CHANGES.html
Normal file
1207
wxPython/docs/CHANGES.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
|||||||
CHANGES.txt for wxPython
|
CHANGES.txt for wxPython
|
||||||
|
=====================================================================
|
||||||
----------------------------------------------------------------------
|
|
||||||
|
|
||||||
2.5.1.x
|
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
|
The RPMs will now install menu items on Mandrake in
|
||||||
Applications/Development/Tools for PyCrust, XRCed, etc. They are also
|
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
|
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
|
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
|
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.)
|
Added SetShape method to top level windows (e.g. wxFrame.)
|
||||||
|
|
||||||
Changed wxSWIG to not generate Python code using apply, (since it will
|
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
|
instead. Also changed the generated __repr__ methods to be a bit more
|
||||||
informative.
|
informative.
|
||||||
|
|
||||||
@@ -90,7 +89,7 @@ and wxWindows match.
|
|||||||
|
|
||||||
Added the new wx "renamer" package that will dynamically import from
|
Added the new wx "renamer" package that will dynamically import from
|
||||||
the wxPython package and rename wxFooBar --> FooBar. That means that
|
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
|
wx.Frame instead of wx.wxFrame. This is phase 1 of a full transition
|
||||||
to the new namespace.
|
to the new namespace.
|
||||||
|
|
||||||
@@ -147,6 +146,7 @@ Added wxCursorFromBits.
|
|||||||
|
|
||||||
2.4.0.7
|
2.4.0.7
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Gave up on generating a warning upon the use of the old true/false or
|
Gave up on generating a warning upon the use of the old true/false or
|
||||||
TRUE/FALSE values.
|
TRUE/FALSE values.
|
||||||
|
|
||||||
@@ -174,7 +174,8 @@ details.
|
|||||||
|
|
||||||
|
|
||||||
2.4.0.6 (a.k.a. the I'm so stupid release)
|
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
|
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
|
returned from OnInit. And I promise to be sure I am testing what I
|
||||||
think I am testing in the future...
|
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)
|
2.4.0.5 (a.k.a. the blame it on Kevin release)
|
||||||
-------
|
----------------------------------------------
|
||||||
|
|
||||||
A few little but annoying bug fixes.
|
A few little but annoying bug fixes.
|
||||||
|
|
||||||
Updated pycolourchooser.
|
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.
|
representing the area on screen not occupied by the taskbar and such.
|
||||||
On other platforms it is equivallent to wxGetDisplaySize.
|
On other platforms it is equivallent to wxGetDisplaySize.
|
||||||
|
|
||||||
|
OOR:
|
||||||
***---***---***---***---***---***---***---***---***---***---***---
|
|
||||||
Implemented the first phase of OOR (Original Object Return). See
|
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
|
the text in the demo for more details of what this means, but in a
|
||||||
nutshell methods such as wxWindow.GetParent or FindWindowById will
|
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
|
stomped on during my testing. So please be sure to test everything
|
||||||
thoroughly when you install this version and be sure to report any
|
thoroughly when you install this version and be sure to report any
|
||||||
object-type related oddities to me.
|
object-type related oddities to me.
|
||||||
***---***---***---***---***---***---***---***---***---***---***---
|
|
||||||
|
|
||||||
There is now a wxObject class that most other classes derive from like
|
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
|
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
|
is better and compatible with the wxGLCanvas. You can get it at
|
||||||
http://starship.python.net:9673/crew/da/Code/PyOpenGL.
|
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
|
Added Dirk Holtwic's editor classes to the wxPython.lib.editor
|
||||||
package.
|
package.
|
||||||
@@ -1554,8 +1555,8 @@ compatibility with the current wxWindows.
|
|||||||
|
|
||||||
What's new in 0.5.0
|
What's new in 0.5.0
|
||||||
-------------------
|
-------------------
|
||||||
Changed the import semantics from "from wxPython import *" to "from
|
Changed the import semantics from ``"from wxPython import *"`` to
|
||||||
wxPython.wx import *" This is for people who are worried about
|
``"from wxPython.wx import *"`` This is for people who are worried about
|
||||||
namespace pollution, they can use "from wxPython import wx" and then
|
namespace pollution, they can use "from wxPython import wx" and then
|
||||||
prefix all the wxPython identifiers with "wx."
|
prefix all the wxPython identifiers with "wx."
|
||||||
|
|
||||||
@@ -1604,4 +1605,5 @@ version segfault shortly after starting up.
|
|||||||
|
|
||||||
3. Varioius bug fixes, enhancements, etc.
|
3. Varioius bug fixes, enhancements, etc.
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
142
wxPython/docs/INSTALL.html
Normal file
142
wxPython/docs/INSTALL.html
Normal 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 "--root=<path>" after the "install" command. This will use
|
||||||
|
<path> 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 "release" instead of
|
||||||
|
"hybrid" when building wxWindows and add "FINAL=1" 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>
|
@@ -100,10 +100,29 @@ def Bind(self, event, handler, source=None, id=wxID_ANY, id2=wxID_ANY):
|
|||||||
<pre class="literal-block">
|
<pre class="literal-block">
|
||||||
self.Bind(wx.EVT_SIZE, self.OnSize)
|
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||||
self.Bind(wx.EVT_BUTTON, self.OnButtonClick, theButton)
|
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, "E&xit", "Terminate the App")
|
||||||
|
self.Bind(wx.EVT_MENU, self.OnExit, item)
|
||||||
|
|
||||||
|
2.
|
||||||
|
item = menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App")
|
||||||
|
self.Bind(wx.EVT_MENU, self.OnExit, item)
|
||||||
|
|
||||||
|
3.
|
||||||
|
menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App")
|
||||||
|
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
|
||||||
</pre>
|
</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
|
<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
|
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
|
change your EVT_* to be an instance of wxPyEventBinder instead of a
|
||||||
@@ -329,10 +348,9 @@ class MyDialog(wx.Dialog):
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="sizers">
|
<div class="section" id="sizers">
|
||||||
<h1><a name="sizers">Sizers</a></h1>
|
<h1><a name="sizers">Sizers</a></h1>
|
||||||
<p>The hack allowing the old "option" keyword parameter has been
|
<p>The hack allowing the old "option" keyword parameter has been removed.
|
||||||
removed. If you use keyworkd args with wxSizer Add, Insert, or
|
If you use keyworkd args with wxSizer Add, Insert, or Prepend methods
|
||||||
Prepend then you will need to use the "proportion" name instead of
|
then you will need to use the "proportion" name instead of "option".</p>
|
||||||
"option".</p>
|
|
||||||
<p>When adding a spacer to a sizer you now need to use a wxSize or a
|
<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>
|
2-integer sequence instead of separate width and height parameters.</p>
|
||||||
<p>The wxGridBagSizer class (very similar to the RowColSizer in the
|
<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 "core" module is now just a few
|
into a single extension module, the "core" module is now just a few
|
||||||
extensions that are linked independently, and then merged together
|
extensions that are linked independently, and then merged together
|
||||||
later into the main namespace via Python code.</p>
|
later into the main namespace via Python code.</p>
|
||||||
<p>Because of the above, the "internal" module names have changed, but
|
<p>Because of the above and also because of the way the new SWIG works,
|
||||||
you shouldn't have been using them anyway so it shouldn't bother
|
the "internal" module names have changed, but you shouldn't have been
|
||||||
you. ;-)</p>
|
using them anyway so it shouldn't bother you. ;-)</p>
|
||||||
<p>The wxPython.help module no longer exists and the classes therein are
|
<p>The help module no longer exists and the classes therein are now part
|
||||||
now part of the core module imported with wxPython.wx or the wx
|
of the core module imported with wxPython.wx or the wx package.</p>
|
||||||
package.</p>
|
|
||||||
<p>wxPyDefaultPosition and wxPyDefaultSize are gone. Use the
|
<p>wxPyDefaultPosition and wxPyDefaultSize are gone. Use the
|
||||||
wxDefaultPosition and wxDefaultSize objects instead.</p>
|
wxDefaultPosition and wxDefaultSize objects instead.</p>
|
||||||
<p>Similarly, the wxSystemSettings backwards compatibiility aliases for
|
<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
|
<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
|
Object Return) for a couple years now there should be no need to use
|
||||||
wxPyTypeCast at all.</p>
|
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>
|
||||||
</div>
|
</div>
|
||||||
<hr class="footer" />
|
<hr class="footer" />
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<a class="reference" href="MigrationGuide.txt">View document source</a>.
|
Generated on: 2004-02-04 23:31 UTC.
|
||||||
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.
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
702
wxPython/docs/PyManual.html
Normal file
702
wxPython/docs/PyManual.html
Normal file
@@ -0,0 +1,702 @@
|
|||||||
|
<?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 Py Manual</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-py-manual">
|
||||||
|
<h1 class="title">The Py Manual</h1>
|
||||||
|
<h2 class="subtitle" id="py-served-fresh-daily">Py - Served Fresh Daily</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@orbtech.com">pobrien@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="id3" name="id3">Introduction</a></li>
|
||||||
|
<li><a class="reference" href="#developer-reference" id="id4" name="id4">Developer Reference</a></li>
|
||||||
|
<li><a class="reference" href="#what-is-py" id="id5" name="id5">What is Py?</a></li>
|
||||||
|
<li><a class="reference" href="#pycrust-is-dead-long-live-py" id="id6" name="id6">PyCrust is dead! Long live Py!</a></li>
|
||||||
|
<li><a class="reference" href="#py-standalone-programs" id="id7" name="id7">Py standalone programs</a></li>
|
||||||
|
<li><a class="reference" href="#pyalacarte" id="id8" name="id8">PyAlaCarte</a></li>
|
||||||
|
<li><a class="reference" href="#pyalamode" id="id9" name="id9">PyAlaMode</a></li>
|
||||||
|
<li><a class="reference" href="#pycrust" id="id10" name="id10">PyCrust</a></li>
|
||||||
|
<li><a class="reference" href="#pyfilling" id="id11" name="id11">PyFilling</a></li>
|
||||||
|
<li><a class="reference" href="#pyshell" id="id12" name="id12">PyShell</a></li>
|
||||||
|
<li><a class="reference" href="#pywrap" id="id13" name="id13">PyWrap</a></li>
|
||||||
|
<li><a class="reference" href="#py-modules" id="id14" name="id14">Py modules</a></li>
|
||||||
|
<li><a class="reference" href="#decorator-classes" id="id15" name="id15">Decorator classes</a></li>
|
||||||
|
<li><a class="reference" href="#projects-using-py" id="id16" name="id16">Projects using Py</a></li>
|
||||||
|
<li><a class="reference" href="#history-of-changes" id="id17" name="id17">History of changes</a><ul>
|
||||||
|
<li><a class="reference" href="#to-2004" id="id18" name="id18">0.9.4 (1/25/2004 to //2004)</a></li>
|
||||||
|
<li><a class="reference" href="#to-1-24-2004" id="id19" name="id19">0.9.3 (9/25/2003 to 1/24/2004)</a></li>
|
||||||
|
<li><a class="reference" href="#to-9-25-2003" id="id20" name="id20">0.9.2 (5/3/2003 to 9/25/2003)</a></li>
|
||||||
|
<li><a class="reference" href="#to-5-2-2003" id="id21" name="id21">0.9.1 (3/21/2003 to 5/2/2003)</a></li>
|
||||||
|
<li><a class="reference" href="#to-3-20-2003" id="id22" name="id22">0.9 (2/27/2003 to 3/20/2003)</a></li>
|
||||||
|
<li><a class="reference" href="#to-2-26-2003" id="id23" name="id23">0.8.2 (1/5/2003 to 2/26/2003)</a></li>
|
||||||
|
<li><a class="reference" href="#to-12-25-2002" id="id24" name="id24">0.8.1 (12/20/2002 to 12/25/2002)</a></li>
|
||||||
|
<li><a class="reference" href="#to-12-16-2002" id="id25" name="id25">0.8 (10/29/2002 to 12/16/2002)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-27-2002" id="id26" name="id26">0.7.2 (2/22/2002 to 8/27/2002)</a></li>
|
||||||
|
<li><a class="reference" href="#to-2-21-2002" id="id27" name="id27">0.7.1 (12/12/2001 to 2/21/2002)</a></li>
|
||||||
|
<li><a class="reference" href="#to-12-11-2001" id="id28" name="id28">0.7 (10/15/2001 to 12/11/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-10-12-2001" id="id29" name="id29">0.6.1 (9/19/2001 to 10/12/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-9-12-2001" id="id30" name="id30">0.6 (8/21/2001 to 9/12/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-20-2001" id="id31" name="id31">0.5.4 (8/17/2001 to 8/20/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#id1" id="id32" name="id32">0.5.3 (8/16/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-15-2001" id="id33" name="id33">0.5.2 (8/14/2001 to 8/15/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-14-2001" id="id34" name="id34">0.5.1 (8/10/2001 to 8/14/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#id2" id="id35" name="id35">0.5 (8/8/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-7-2001" id="id36" name="id36">0.4 (8/4/2001 to 8/7/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-3-2001" id="id37" name="id37">0.3 (8/2/2001 to 8/3/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-8-2-2001" id="id38" name="id38">0.2 (7/30/2001 to 8/2/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#to-7-19-2001" id="id39" name="id39">0.1 (7/1/2001 to 7/19/2001)</a></li>
|
||||||
|
<li><a class="reference" href="#in-the-beginning-there-was-pie-7-1-2001" id="id40" name="id40">In the beginning, there was pie... (7/1/2001)</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="introduction">
|
||||||
|
<h1><a class="toc-backref" href="#id3" name="introduction">Introduction</a></h1>
|
||||||
|
<p>This document will show you how to use the Py programs and the Py
|
||||||
|
library of Python source code modules. Py is the new name for the
|
||||||
|
project that began as PyCrust. Py is officially part of <a class="reference" href="http://www.wxpython.org/">wxPython</a>,
|
||||||
|
and includes PyCrust, so PyCrust is no longer distributed separately.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="developer-reference">
|
||||||
|
<h1><a class="toc-backref" href="#id4" name="developer-reference">Developer Reference</a></h1>
|
||||||
|
<p>Source code documentation for developers is available at:</p>
|
||||||
|
<p><a class="reference" href="http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html">http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="what-is-py">
|
||||||
|
<h1><a class="toc-backref" href="#id5" name="what-is-py">What is Py?</a></h1>
|
||||||
|
<p>Besides being <a class="reference" href="http://www.wikipedia.org/wiki/Pie">a delicious dessert</a>, Py is the name for a collection
|
||||||
|
of whimsically-named Python programs and modules that began as the
|
||||||
|
PyCrust project. So Py is really several things: a set of standalone
|
||||||
|
programs, including the original PyCrust program, a library of Python
|
||||||
|
source code modules that can be used in your own programs, a set of
|
||||||
|
decorator classes that enhance the wxPython class library, and as many
|
||||||
|
examples of bad "pie" puns as I can come up with. (If you're going to
|
||||||
|
do something, you might as well do it all the way, right?) Py uses
|
||||||
|
Python and wxPython, so it works equally well on Windows, Linux and
|
||||||
|
Mac OS X.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="pycrust-is-dead-long-live-py">
|
||||||
|
<h1><a class="toc-backref" href="#id6" name="pycrust-is-dead-long-live-py">PyCrust is dead! Long live Py!</a></h1>
|
||||||
|
<p>This project began with a program I created called PyCrust - an
|
||||||
|
interactive, graphical Python shell, developed using the wxPython GUI
|
||||||
|
toolkit. For about two years, PyCrust was hosted on <a class="reference" href="http://www.sf.net/projects/pycrust/">SourceForge</a>.
|
||||||
|
Shortly after I created PyCrust, the wxPython folks started including
|
||||||
|
it in their distribution. As the PyCrust project grew, it reached a
|
||||||
|
point where I thought the original PyCrust name was too confining. I
|
||||||
|
was using the PyCrust code base to develop programs that weren't just
|
||||||
|
Python shells any more.</p>
|
||||||
|
<p>Around that same time, the wxPython folks asked me if I'd be willing
|
||||||
|
to move all my wxPython-related projects into the <a class="reference" href="http://cvs.wxwindows.org">wxPython CVS
|
||||||
|
repository</a>, and become part of the <a class="reference" href="http://www.wxpython.org/">wxPython</a>/<a class="reference" href="http://www.wxwindows.org/">wxWindows</a> developer team.
|
||||||
|
I decided the time was right to restructure the PyCrust project.
|
||||||
|
During the move, the PyCrust package was renamed to "py" (lowercase
|
||||||
|
"p") and the collection of programs and modules as a whole became
|
||||||
|
known as "Py" (with a capital "P").</p>
|
||||||
|
<p>The original goal of PyCrust was to be the best interactive, graphical
|
||||||
|
Python shell (of course, I claimed it was the "flakiest" Python
|
||||||
|
shell). And that was all I wanted it to be. But little by little I
|
||||||
|
found myself developing a wider variety of tools for wxPython
|
||||||
|
applications. Eventually I'll create a debugger (PySlice, perhaps)
|
||||||
|
and whatever else is needed to one day become a complete wxPython
|
||||||
|
application development environment (PyFactory?). In the mean time,
|
||||||
|
PyCrust is still the flakiest Python shell, and the other Py programs
|
||||||
|
are equally tasty.</p>
|
||||||
|
<p>At this point, Py has standalone programs that include Python code
|
||||||
|
editors (PyAlaCarte and PyAlaMode), interactive Python shells (PyCrust
|
||||||
|
and PyShell), and a runtime wrapper (PyWrap). The runtime wrapper
|
||||||
|
utility provides you with runtime introspection capabilities for your
|
||||||
|
wxPython programs without having to include PyCrust or PyShell in your
|
||||||
|
program, and without having to alter one line of your source code.</p>
|
||||||
|
<p>Py also contains a collection of modules that you can use in your own
|
||||||
|
wxPython applications to provide similar services, either for your own
|
||||||
|
use during development, or as an interface for users of your programs.
|
||||||
|
These modules are the same ones used by all the Py programs. In
|
||||||
|
addition, Py contains a set of decorator classes that enhance the
|
||||||
|
wxPython class library, by dynamically attaching docstrings and call
|
||||||
|
signatures at runtime.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="py-standalone-programs">
|
||||||
|
<h1><a class="toc-backref" href="#id7" name="py-standalone-programs">Py standalone programs</a></h1>
|
||||||
|
<p>These are the standalone applications in the Py collection:</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="pyalacarte">
|
||||||
|
<h1><a class="toc-backref" href="#id8" name="pyalacarte">PyAlaCarte</a></h1>
|
||||||
|
<p>PyAlaCarte is a Python source code editor. It is designed to have a
|
||||||
|
simple, single-file interface. As a standalone application, it is
|
||||||
|
good for simple, short editing tasks. But it is really meant to be
|
||||||
|
more of an example of how to embed the Py editor into a wxPython
|
||||||
|
application.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="pyalamode">
|
||||||
|
<h1><a class="toc-backref" href="#id9" name="pyalamode">PyAlaMode</a></h1>
|
||||||
|
<p>PyAlaMode is a Python source code editor.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="pycrust">
|
||||||
|
<h1><a class="toc-backref" href="#id10" name="pycrust">PyCrust</a></h1>
|
||||||
|
<p>PyCrust is an interactive, Python shell. But it's more than just a
|
||||||
|
shell. It includes a tabbed notebook containing a namespace tree
|
||||||
|
(PyFilling), and several other things.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="pyfilling">
|
||||||
|
<h1><a class="toc-backref" href="#id11" name="pyfilling">PyFilling</a></h1>
|
||||||
|
<p>PyFilling is a namespace viewer. It isn't really useful as a
|
||||||
|
standalone program, but it does illustrate how to make use of the
|
||||||
|
underlying <tt class="literal"><span class="pre">filling</span></tt> module.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="pyshell">
|
||||||
|
<h1><a class="toc-backref" href="#id12" name="pyshell">PyShell</a></h1>
|
||||||
|
<p>PyShell is an interactive, Python shell. It shares the same base code
|
||||||
|
as PyCrust, but doesn't have any of the extra features that appear in
|
||||||
|
the PyCrust notebook interface.</p>
|
||||||
|
<div class="figure">
|
||||||
|
<p><img alt="/screenshots/PyShell.png" src="/screenshots/PyShell.png" /></p>
|
||||||
|
<p class="caption">PyShell running on Mandrake Linux 9.1.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="pywrap">
|
||||||
|
<h1><a class="toc-backref" href="#id13" name="pywrap">PyWrap</a></h1>
|
||||||
|
<p>PyWrap is a runtime utility that lets you run an existing wxPython
|
||||||
|
program with a PyCrust frame at the same time. Inside the PyCrust
|
||||||
|
shell namespace, the local variable <tt class="literal"><span class="pre">app</span></tt> is assigned to your
|
||||||
|
application instance. In this way you can introspect your entire
|
||||||
|
application within the PyCrust shell, as well as the PyFilling
|
||||||
|
namespace viewer. And through the use of the Py decorator classes,
|
||||||
|
PyCrust can display wxPython function and method signatures as well as
|
||||||
|
docstrings for the entire wxPython library.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="py-modules">
|
||||||
|
<h1><a class="toc-backref" href="#id14" name="py-modules">Py modules</a></h1>
|
||||||
|
<p>Py was designed to be modular. That means graphical code is kept
|
||||||
|
separate from non-graphical code, and many of the Py modules can be
|
||||||
|
used by other programs. Likewise, other programs can supply some of
|
||||||
|
the modules needed by Py. For example, you could supply a customized
|
||||||
|
interpreter module and plug it in to the PyCrust standalone
|
||||||
|
application. As long as it supports the minimum functionality
|
||||||
|
required, PyCrust will work just as well with your interpreter as with
|
||||||
|
its default interpreter.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="decorator-classes">
|
||||||
|
<h1><a class="toc-backref" href="#id15" name="decorator-classes">Decorator classes</a></h1>
|
||||||
|
<p>Py contains a set of decorator classes that enhance the wxPython class
|
||||||
|
library, by dynamically attaching docstrings and call signatures at
|
||||||
|
runtime.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="projects-using-py">
|
||||||
|
<h1><a class="toc-backref" href="#id16" name="projects-using-py">Projects using Py</a></h1>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference" href="http://conflictsolver.sourceforge.net/">Conflict Solver</a></li>
|
||||||
|
<li><a class="reference" href="http://www.gnumed.org/">Gnumed</a></li>
|
||||||
|
<li>PyGist</li>
|
||||||
|
<li><a class="reference" href="http://www.pythoncard.org/">PythonCard</a></li>
|
||||||
|
<li><a class="reference" href="http://rpy.sourceforge.net/">RPy</a></li>
|
||||||
|
<li><a class="reference" href="http://www.scipy.org/">SciPy</a></li>
|
||||||
|
<li><a class="reference" href="http://www.sim42.org/">Sim42</a></li>
|
||||||
|
<li><a class="reference" href="http://linus.yorktown.arlington.k12.va.us/CS/APCSC/student_sites/David_Mayo/wxGasp">wxGasp</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="history-of-changes">
|
||||||
|
<h1><a class="toc-backref" href="#id17" name="history-of-changes">History of changes</a></h1>
|
||||||
|
<p>This section lists all the changes that have been made to the Py
|
||||||
|
programs and modules, since the beginning.</p>
|
||||||
|
<div class="section" id="to-2004">
|
||||||
|
<h2><a class="toc-backref" href="#id18" name="to-2004">0.9.4 (1/25/2004 to //2004)</a></h2>
|
||||||
|
<p>Removed wxd decorators in favor of new SWIG-generated docstrings.</p>
|
||||||
|
<p>Removed docs tabs from crust interface:
|
||||||
|
* wxPython Docs
|
||||||
|
* wxSTC Docs</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-1-24-2004">
|
||||||
|
<h2><a class="toc-backref" href="#id19" name="to-1-24-2004">0.9.3 (9/25/2003 to 1/24/2004)</a></h2>
|
||||||
|
<p>Fun and games with dynamic renaming. Details of any other changes
|
||||||
|
were lost in the confusion. I'll try to do better in the future.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-9-25-2003">
|
||||||
|
<h2><a class="toc-backref" href="#id20" name="to-9-25-2003">0.9.2 (5/3/2003 to 9/25/2003)</a></h2>
|
||||||
|
<p>Changed to the new prefix-less "wx" package:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
import wx
|
||||||
|
</pre>
|
||||||
|
<p>instead of:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
from wxPython import wx
|
||||||
|
</pre>
|
||||||
|
<p>Fixed typo in <tt class="literal"><span class="pre">PyWrap.py</span></tt>:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main(sys.argv)
|
||||||
|
</pre>
|
||||||
|
<p>should have been:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
</pre>
|
||||||
|
<p>Added pretty-print Display tab to Crust, based on suggestion from
|
||||||
|
Jason Whitlark.</p>
|
||||||
|
<p>Improved <tt class="literal"><span class="pre">Can*</span></tt> checks in <tt class="literal"><span class="pre">EditWindow</span></tt>, since STC is too lenient,
|
||||||
|
particularly when it is set to read-only but returns True for
|
||||||
|
CanPaste() (seems like an STC bug to me):</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
def CanCopy(self):
|
||||||
|
"""Return True if text is selected and can be copied."""
|
||||||
|
return self.GetSelectionStart() != self.GetSelectionEnd()
|
||||||
|
|
||||||
|
def CanCut(self):
|
||||||
|
"""Return True if text is selected and can be cut."""
|
||||||
|
return self.CanCopy() and self.CanEdit()
|
||||||
|
|
||||||
|
def CanEdit(self):
|
||||||
|
"""Return True if editing should succeed."""
|
||||||
|
return not self.GetReadOnly()
|
||||||
|
|
||||||
|
def CanPaste(self):
|
||||||
|
"""Return True if pasting should succeed."""
|
||||||
|
return stc.StyledTextCtrl.CanPaste(self) and self.CanEdit()
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-5-2-2003">
|
||||||
|
<h2><a class="toc-backref" href="#id21" name="to-5-2-2003">0.9.1 (3/21/2003 to 5/2/2003)</a></h2>
|
||||||
|
<p>PyCrust is dead! Long live Py!</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Renamed <tt class="literal"><span class="pre">PyCrust</span></tt> package to <tt class="literal"><span class="pre">py</span></tt>.</li>
|
||||||
|
<li>Moved code to wxPython's CVS repository.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Fixed bug in <tt class="literal"><span class="pre">introspect.py</span></tt> on introspecting objects occurring
|
||||||
|
immediately after a secondary prompt, like this:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> l = [1, 2, 3]
|
||||||
|
>>> for n in range(3):
|
||||||
|
... l. <-- failed to popup autocomplete list
|
||||||
|
</pre>
|
||||||
|
<p>Added documentation files:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>PyManual.txt</li>
|
||||||
|
<li>wxPythonManual.txt</li>
|
||||||
|
<li>wxPythonPackage.txt</li>
|
||||||
|
<li>wxPythonExamples.txt</li>
|
||||||
|
</ul>
|
||||||
|
<p>Added PyAlaMode and PyAlaCarte code editors.</p>
|
||||||
|
<p>Major refactoring to support <tt class="literal"><span class="pre">editor</span></tt> and <tt class="literal"><span class="pre">shell</span></tt> from the same
|
||||||
|
base.</p>
|
||||||
|
<p>Renamed program files:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><tt class="literal"><span class="pre">PyCrustApp.py</span></tt> to <tt class="literal"><span class="pre">PyCrust.py</span></tt></li>
|
||||||
|
<li><tt class="literal"><span class="pre">PyFillingApp.py</span></tt> to <tt class="literal"><span class="pre">PyFilling.py</span></tt></li>
|
||||||
|
<li><tt class="literal"><span class="pre">PyShellApp.py</span></tt> to <tt class="literal"><span class="pre">PyShell.py</span></tt></li>
|
||||||
|
<li><tt class="literal"><span class="pre">wrap.py</span></tt> to <tt class="literal"><span class="pre">PyWrap.py</span></tt></li>
|
||||||
|
</ul>
|
||||||
|
<p>Removed disabling of autocomplete for lists of 2000 items or more.
|
||||||
|
The current implementation of wxSTC can now handle lists this big.</p>
|
||||||
|
<p>Improved handling of <tt class="literal"><span class="pre">sys.path</span></tt> to mimic the standard Python shell.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-3-20-2003">
|
||||||
|
<h2><a class="toc-backref" href="#id22" name="to-3-20-2003">0.9 (2/27/2003 to 3/20/2003)</a></h2>
|
||||||
|
<p>Added fontIncrease, fontDecrease, fontDefault signals, receivers and
|
||||||
|
keybindings:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
Ctrl+] Increase font size.
|
||||||
|
Ctrl+[ Decrease font size.
|
||||||
|
Ctrl+= Default font size.
|
||||||
|
</pre>
|
||||||
|
<p>Continued enhancement of the decorator capability to provide better
|
||||||
|
documentation and docstrings for wxPython classes and functions.</p>
|
||||||
|
<p>Introduced new tabbed interface:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Namespace</li>
|
||||||
|
<li>Calltip</li>
|
||||||
|
<li>Session</li>
|
||||||
|
<li>Dispatcher</li>
|
||||||
|
<li>wxPython Docs</li>
|
||||||
|
<li>wxSTC Docs</li>
|
||||||
|
</ul>
|
||||||
|
<p><tt class="literal"><span class="pre">Filling.tree</span></tt> now expands tuples as well as lists. (It should have
|
||||||
|
done this all along, I just never noticed this omission before.)</p>
|
||||||
|
<p>Added this True/False test to all modules:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
try:
|
||||||
|
True
|
||||||
|
except NameError:
|
||||||
|
True = 1==1
|
||||||
|
False = 1==0
|
||||||
|
</pre>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">wxd</span></tt> directory with decoration classes.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-2-26-2003">
|
||||||
|
<h2><a class="toc-backref" href="#id23" name="to-2-26-2003">0.8.2 (1/5/2003 to 2/26/2003)</a></h2>
|
||||||
|
<p>Wrapped <tt class="literal"><span class="pre">sys.ps1</span></tt>, <tt class="literal"><span class="pre">sys.ps2</span></tt>, and <tt class="literal"><span class="pre">sys.ps3</span></tt> in <tt class="literal"><span class="pre">str()</span></tt>.
|
||||||
|
(Thanks, Kieran Holland.)</p>
|
||||||
|
<p>Fixed minor things found by PyChecker.</p>
|
||||||
|
<p>Changed locals to use <tt class="literal"><span class="pre">__main__.__dict__</span></tt> and added code to clean up
|
||||||
|
the namespace, making it as close to the regular Python environment as
|
||||||
|
possible. This solves the problem of pickling and unpickling
|
||||||
|
instances of classes defined in the shell.</p>
|
||||||
|
<p>Made <tt class="literal"><span class="pre">shell.PasteAndRun()</span></tt> a little more forgiving when it finds a
|
||||||
|
ps2 prompt line with no trailing space, such when you copy code from a
|
||||||
|
web page.</p>
|
||||||
|
<p>Improved autocomplete behavior by adding these to shell:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
self.AutoCompSetAutoHide(False)
|
||||||
|
self.AutoCompStops(' .,;:([)]}\'"\\<>%^&+-=*/|`')
|
||||||
|
</pre>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">decor</span></tt> directory, <tt class="literal"><span class="pre">decorator.py</span></tt>, <tt class="literal"><span class="pre">stcDecor.py</span></tt>, and
|
||||||
|
<tt class="literal"><span class="pre">stcConstants.py</span></tt>. These all serve the purpose of adding docstrings
|
||||||
|
to existing wxPython classes, in particular the <tt class="literal"><span class="pre">wxStyledTextCtrl</span></tt>.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">wrap.py</span></tt>, a command line utility for running a wxPython app
|
||||||
|
with additional runtime-tools loaded, such as PyCrust (the only tool
|
||||||
|
at this point).</p>
|
||||||
|
<p>Flushed the clipboard Cut/Copy operations so that selections will
|
||||||
|
exist in the clipboard even after PyCrust has been closed.</p>
|
||||||
|
<p>Improved the suppression of docstrings for simple data types appearing
|
||||||
|
in the namespace viewer.</p>
|
||||||
|
<p>Better handling of autocompletion with numeric types; no
|
||||||
|
autocompletion when typing a dot after an integer. If the
|
||||||
|
autocompletion is desired, type a space before the dot:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
func = 3 .
|
||||||
|
</pre>
|
||||||
|
<p>More Filling!!! The namespace tree is now dynamically updated.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-12-25-2002">
|
||||||
|
<h2><a class="toc-backref" href="#id24" name="to-12-25-2002">0.8.1 (12/20/2002 to 12/25/2002)</a></h2>
|
||||||
|
<p>Improved keyboard handling with Autocomplete active. You can now use
|
||||||
|
Enter as well as Tab to select an item from the list.</p>
|
||||||
|
<p>Disabled autocomplete for lists of 2000 items or more. The current
|
||||||
|
implementation of wxSTC can't handle lists this big.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">filling</span></tt> to always display docstrings for objects. This is
|
||||||
|
useful for objects whose docstrings have been decorated, rather than
|
||||||
|
coming directly from the source code. (Hmmm. Sounds like someone is
|
||||||
|
doing some decorating. I wonder where that would be helpful? <wink>)</p>
|
||||||
|
<p>Fixed handling of icon. Added <tt class="literal"><span class="pre">images.py</span></tt> file.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-12-16-2002">
|
||||||
|
<h2><a class="toc-backref" href="#id25" name="to-12-16-2002">0.8 (10/29/2002 to 12/16/2002)</a></h2>
|
||||||
|
<p>Added "help" to startup banner info.</p>
|
||||||
|
<p>Made all <tt class="literal"><span class="pre">wx</span></tt> and <tt class="literal"><span class="pre">stc</span></tt> imports explicit. No more <tt class="literal"><span class="pre">import</span> <span class="pre">*</span></tt>.</p>
|
||||||
|
<p>Replaced use of the <tt class="literal"><span class="pre">wx</span></tt> module's <tt class="literal"><span class="pre">true</span></tt> and <tt class="literal"><span class="pre">false</span></tt> with
|
||||||
|
Python's <tt class="literal"><span class="pre">True</span></tt> and <tt class="literal"><span class="pre">False</span></tt>.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">introspect.getRoot()</span></tt> to use <tt class="literal"><span class="pre">tokenize</span></tt> module. This
|
||||||
|
does a slightly better job than the previous parsing routine and the
|
||||||
|
code is clearer.</p>
|
||||||
|
<p>Improved handling of whitespace and empty types during introspection.</p>
|
||||||
|
<p>Fixed cut/copy clipboard problem under Linux. (Robin Dunn rocks!!!)</p>
|
||||||
|
<p>Added shell.about() which works like this:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> shell.about()
|
||||||
|
PyCrust Version: 0.8
|
||||||
|
Shell Revision: 1.80
|
||||||
|
Interpreter Revision: 1.15
|
||||||
|
Python Version: 2.2.2
|
||||||
|
wxPython Version: 2.3.3.1
|
||||||
|
Platform: linux2
|
||||||
|
</pre>
|
||||||
|
<p>Added copy plus and paste plus to shell menu.</p>
|
||||||
|
<p>Moved shell menu from <tt class="literal"><span class="pre">shell.py</span></tt> to <tt class="literal"><span class="pre">shellmenu.py</span></tt>.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">sys.stdin.readlines()</span></tt> support.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">time.sleep()</span></tt> in <tt class="literal"><span class="pre">readline()</span></tt> and <tt class="literal"><span class="pre">OnIdle()</span></tt> event
|
||||||
|
handler to free up the CPU.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-27-2002">
|
||||||
|
<h2><a class="toc-backref" href="#id26" name="to-8-27-2002">0.7.2 (2/22/2002 to 8/27/2002)</a></h2>
|
||||||
|
<p>Tweaked <tt class="literal"><span class="pre">getAttributeNames()</span></tt> to pick up a few more attributes:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
'__bases__', '__class__', '__dict__', '__name__', 'func_closure',
|
||||||
|
'func_code', 'func_defaults', 'func_dict', 'func_doc',
|
||||||
|
'func_globals', 'func_name'
|
||||||
|
</pre>
|
||||||
|
<p>Added a tests directory and unit tests.</p>
|
||||||
|
<p>Improved support for empty types in the shell: <tt class="literal"><span class="pre">[]</span></tt>, <tt class="literal"><span class="pre">()</span></tt> and
|
||||||
|
<tt class="literal"><span class="pre">{}</span></tt> as far as when call tips and autocompletion are available.</p>
|
||||||
|
<p>Added support for the other triple string - <tt class="literal"><span class="pre">''''''</span></tt>.</p>
|
||||||
|
<p>Refactored <tt class="literal"><span class="pre">introspect.py</span></tt> to improve testability.</p>
|
||||||
|
<p>Improved call tips for unbound methods by leaving the "self"
|
||||||
|
parameter, since unbound methods require an instance be passed.</p>
|
||||||
|
<p>Fixed call tip bug where a tip was displayed when a "(" was typed
|
||||||
|
after an object that wasn't callable.</p>
|
||||||
|
<p>Fixed <tt class="literal"><span class="pre">getAllAttributeNames</span></tt> when <tt class="literal"><span class="pre">str(object)</span></tt> fails.</p>
|
||||||
|
<p>Added brace highlighting. (Thank you, Kevin Altis.)</p>
|
||||||
|
<p>Fixed problem displaying unicode objects in <tt class="literal"><span class="pre">PyFilling</span></tt>.</p>
|
||||||
|
<p>Changed how <tt class="literal"><span class="pre">filling.py</span></tt> checks for expandable objects. Lists are
|
||||||
|
now expandable objects.</p>
|
||||||
|
<p>Made the key handling more robust when there is an active text
|
||||||
|
selection that includes text prior to the last primary prompt. Thanks
|
||||||
|
to Raul Cota for pointing this out.</p>
|
||||||
|
<p>Fixed wxSTC problem with brace highlighting and non-us keyboards.
|
||||||
|
(Thank you for the patch, Jean-Michel Fauth.)</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">busy</span> <span class="pre">=</span> <span class="pre">wxBusyCursor()</span></tt> to key points in <tt class="literal"><span class="pre">shell</span></tt> and
|
||||||
|
<tt class="literal"><span class="pre">filling</span></tt>.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">OnCloseWindow</span></tt> handler to <tt class="literal"><span class="pre">ShellFrame</span></tt> and <tt class="literal"><span class="pre">CrustFrame</span></tt>.</p>
|
||||||
|
<p>Default to <tt class="literal"><span class="pre">SetWrapMode(1)</span></tt> for shell and namespace viewer.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">shell.wrap()</span></tt> and <tt class="literal"><span class="pre">shell.zoom()</span></tt>.</p>
|
||||||
|
<p>Added autoCompleteKeys hooks for Raul Cota.</p>
|
||||||
|
<p>Cleaned up various little key handling bugs.</p>
|
||||||
|
<p>Changed input methods to get values from shell, rather than dialog
|
||||||
|
boxes. Renamed <tt class="literal"><span class="pre">readIn</span></tt> to <tt class="literal"><span class="pre">readline</span></tt> and <tt class="literal"><span class="pre">readRaw</span></tt> to
|
||||||
|
<tt class="literal"><span class="pre">raw_input</span></tt>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-2-21-2002">
|
||||||
|
<h2><a class="toc-backref" href="#id27" name="to-2-21-2002">0.7.1 (12/12/2001 to 2/21/2002)</a></h2>
|
||||||
|
<p>Fixed <tt class="literal"><span class="pre">OnChar()</span></tt> issues effecting European keyboards, as reported by
|
||||||
|
Jean-Michel Fauth.</p>
|
||||||
|
<p>Fixed <tt class="literal"><span class="pre">introspect.py</span></tt> issue with xmlrpc objects reported by Kevin
|
||||||
|
Altis.</p>
|
||||||
|
<p>Fixed some introspect/PyFilling issues with regard to Python 2.2.</p>
|
||||||
|
<p>Fixed font background color as reported by Keith J. Farmer. (Thanks)</p>
|
||||||
|
<p>Fixed problem with call tips and autocompletion inside multiline
|
||||||
|
commands as report by Kevin Altis.</p>
|
||||||
|
<p>Improved <tt class="literal"><span class="pre">OnKeyDown</span></tt> handling of cut/copy/paste operations based on
|
||||||
|
feedback from Syver Enstad. (Thanks)</p>
|
||||||
|
<p>Added a <tt class="literal"><span class="pre">shell.help()</span></tt> method to display some help info.</p>
|
||||||
|
<p>Changed sort of items in the namespace viewer to case insensitive.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">attributes.sort(lambda</span> <span class="pre">x,</span> <span class="pre">y:</span> <span class="pre">cmp(x.upper(),</span> <span class="pre">y.upper()))</span></tt> in
|
||||||
|
advance of an upcoming fix to an autocompletion matching bug in wxSTC.</p>
|
||||||
|
<p>Improved support for ZODB by allowing namespace drilldown into BTrees.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">shell.PasteAndRun()</span></tt> to support pasting multiple commands into
|
||||||
|
the shell from the clipboard. Ctrl+Shift+V or v.</p>
|
||||||
|
<p>Enter now always processes a command (or copies down a previous one.)
|
||||||
|
To insert a line break, press Ctrl+Enter.</p>
|
||||||
|
<p>Escape key clears the current, unexecuted command.</p>
|
||||||
|
<p>History retrieval changed to replace current command. Added new keys
|
||||||
|
to insert from history - Shift+Up and Shift+Down.</p>
|
||||||
|
<p>Better call tips on objects with <tt class="literal"><span class="pre">__call__</span></tt> methods.</p>
|
||||||
|
<p>Improved call tip positioning calculation.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-12-11-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id28" name="to-12-11-2001">0.7 (10/15/2001 to 12/11/2001)</a></h2>
|
||||||
|
<p>Changed how command history retrieval functions work. Added Alt-P,
|
||||||
|
Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.</p>
|
||||||
|
<p>Added full support for multi-line commands, similar to IDLE.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">introspect.getAttributeNames()</span></tt> to do a case insensitive
|
||||||
|
sort.</p>
|
||||||
|
<p>Changed Cut/Copy/Paste to deal with prompts intelligently. Cut and
|
||||||
|
Copy remove all prompts. Paste can handle prompted or not-prompted
|
||||||
|
text.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">CopyWithPrompts()</span></tt> method attached to Ctrl-Shift-C for those
|
||||||
|
times when you really do want all the prompts left intact.</p>
|
||||||
|
<p>Improved handling of the shell's read-only zone.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">CrustFrame.__init__</span></tt> parameter spec to include all
|
||||||
|
parameters allowed by a <tt class="literal"><span class="pre">wxFrame</span></tt>.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">FillingText</span></tt> to be read-only.</p>
|
||||||
|
<p>Renamed <tt class="literal"><span class="pre">PyCrust.py</span></tt> to <tt class="literal"><span class="pre">PyCrustApp.py</span></tt> to eliminate
|
||||||
|
package/module name conflicts that kept you from doing <tt class="literal"><span class="pre">from</span> <span class="pre">PyCrust</span>
|
||||||
|
<span class="pre">import</span> <span class="pre">shell</span></tt> inside files located in the <tt class="literal"><span class="pre">PyCrust</span></tt> directory.</p>
|
||||||
|
<p>Renamed <tt class="literal"><span class="pre">PyFilling.py</span></tt> to <tt class="literal"><span class="pre">PyFillingApp.py</span></tt> and <tt class="literal"><span class="pre">PyShell.py</span></tt> to
|
||||||
|
<tt class="literal"><span class="pre">PyShellApp.py</span></tt> to maintain consistency.</p>
|
||||||
|
<p>Removed the <tt class="literal"><span class="pre">__date__</span></tt> property from all modules.</p>
|
||||||
|
<p>Fixed bug in <tt class="literal"><span class="pre">introspect.getCallTip()</span></tt>, reported by Kevin Altis.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-10-12-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id29" name="to-10-12-2001">0.6.1 (9/19/2001 to 10/12/2001)</a></h2>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">Shell.run()</span></tt> to always position to the end of existing
|
||||||
|
text, as suggested by Raul Cota.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">introspect.getAllAttributeNames()</span></tt> to break circular
|
||||||
|
references in <tt class="literal"><span class="pre">object.__class__</span></tt>, which occurs in Zope/ZODB
|
||||||
|
extension classes.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">filling.FillingTree.getChildren()</span></tt> to introspect extension
|
||||||
|
classes.</p>
|
||||||
|
<p>Fixed minor bugs in <tt class="literal"><span class="pre">introspect.getCallTip()</span></tt> that were interfering
|
||||||
|
with call tips for Zope/ZODB extension class methods.</p>
|
||||||
|
<p>In preparation for wxPython 2.3.2, added code to fix a font sizing
|
||||||
|
problem. Versions of wxPython prior to 2.3.2 had a sizing bug on Win
|
||||||
|
platform where the font was 2 points larger than what was specified.</p>
|
||||||
|
<p>Added a hack to <tt class="literal"><span class="pre">introspect.getAllAttributeNames()</span></tt> to "wake up"
|
||||||
|
ZODB objects that are asleep - in a "ghost" state. Otherwise it
|
||||||
|
returns incomplete info.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-9-12-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id30" name="to-9-12-2001">0.6 (8/21/2001 to 9/12/2001)</a></h2>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">PyFilling.py</span></tt> and <tt class="literal"><span class="pre">filling.py</span></tt>.</p>
|
||||||
|
<p><tt class="literal"><span class="pre">PyShell.py</span></tt> and <tt class="literal"><span class="pre">PyFilling.py</span></tt> can now be run standalone, as well
|
||||||
|
as <tt class="literal"><span class="pre">PyCrust.py</span></tt>.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">crust.py</span></tt> and moved some code from <tt class="literal"><span class="pre">PyCrust.py</span></tt> to it.</p>
|
||||||
|
<p>Added command history retrieval features submitted by Richie Hindle.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">shell.write()</span></tt> to replace line endings with OS-specific
|
||||||
|
endings. Changed <tt class="literal"><span class="pre">shell.py</span></tt> and <tt class="literal"><span class="pre">interpreter.py</span></tt> to use
|
||||||
|
<tt class="literal"><span class="pre">os.linesep</span></tt> in strings having hardcoded line endings.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">shell.redirectStdin()</span></tt>, <tt class="literal"><span class="pre">shell.redirectStdout()</span></tt> and
|
||||||
|
<tt class="literal"><span class="pre">shell.redirectStderr()</span></tt> to allow the surrounding app to toggle
|
||||||
|
requests that the specified <tt class="literal"><span class="pre">sys.std*</span></tt> be redirected to the shell.
|
||||||
|
These can also be run from within the shell itself, of course.</p>
|
||||||
|
<p>The shell now adds the current working directory "." to the search
|
||||||
|
path:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
sys.path.insert(0, os.curdir)
|
||||||
|
</pre>
|
||||||
|
<p>Added support for distutils installations.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-20-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id31" name="to-8-20-2001">0.5.4 (8/17/2001 to 8/20/2001)</a></h2>
|
||||||
|
<p>Changed default font size under Linux to:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
'size' : 12,
|
||||||
|
'lnsize' : 10,
|
||||||
|
</pre>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">Shell</span></tt> to expect a parameter referencing an Interpreter
|
||||||
|
class, rather than an intepreter instance, to facilitate subclassing
|
||||||
|
of Interpreter, which effectively broke when the Editor class was
|
||||||
|
eliminated.</p>
|
||||||
|
<p>Fixed <tt class="literal"><span class="pre">PyCrustAlaCarte.py</span></tt>, which had been broken by previous
|
||||||
|
changes.</p>
|
||||||
|
<p>Created <tt class="literal"><span class="pre">InterpreterAlaCarte</span></tt> class as an example for use in the
|
||||||
|
demo.</p>
|
||||||
|
<p>Split <tt class="literal"><span class="pre">PyCrust.py</span></tt> into <tt class="literal"><span class="pre">PyCrust.py</span></tt> and <tt class="literal"><span class="pre">PyShell.py</span></tt> in
|
||||||
|
anticipation of <tt class="literal"><span class="pre">PyFilling.py</span></tt>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1">
|
||||||
|
<h2><a class="toc-backref" href="#id32" name="id1">0.5.3 (8/16/2001)</a></h2>
|
||||||
|
<p>Added patch to <tt class="literal"><span class="pre">PyCrust.py</span></tt> to fix wxPython bug:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
wxID_SELECTALL = NewId() # This *should* be defined by wxPython.
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-15-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id33" name="to-8-15-2001">0.5.2 (8/14/2001 to 8/15/2001)</a></h2>
|
||||||
|
<p>Shortened module names by dropping "PyCrust" as a prefix.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">version</span></tt> to <tt class="literal"><span class="pre">VERSION</span></tt> in <tt class="literal"><span class="pre">version</span></tt> module.</p>
|
||||||
|
<p>Added Options menu to PyCrust application.</p>
|
||||||
|
<p>Eliminated the Editor class (and editor module) by merging with Shell.
|
||||||
|
This means that Shell "is a" wxStyledTextCtrl rather than "has a".
|
||||||
|
There just wasn't enough non-gui code to justify the separation.
|
||||||
|
Plus, Shell will be much easier for gui toolkits/designers to deal
|
||||||
|
with now.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-14-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id34" name="to-8-14-2001">0.5.1 (8/10/2001 to 8/14/2001)</a></h2>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">introspect</span></tt> module.</p>
|
||||||
|
<p>Moved some functionality from <tt class="literal"><span class="pre">PyCrustInterp</span></tt> to <tt class="literal"><span class="pre">introspect</span></tt>.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">introspect.getRoot()</span></tt> to no longer remove whitespace from
|
||||||
|
the command. This was a remnant of a previous approach that, when
|
||||||
|
left as part of the current approach, turned out to be a really bad
|
||||||
|
thing.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">introspect.getRoot()</span></tt> to allow commands of <tt class="literal"><span class="pre">''</span></tt>, <tt class="literal"><span class="pre">""</span></tt>,
|
||||||
|
<tt class="literal"><span class="pre">""""""</span></tt>, <tt class="literal"><span class="pre">[]</span></tt>, <tt class="literal"><span class="pre">()</span></tt>, and <tt class="literal"><span class="pre">{}</span></tt> to pass through. This allows
|
||||||
|
you to type them, followed by a dot, and get autocomplete options on
|
||||||
|
them.</p>
|
||||||
|
<p>Changed <tt class="literal"><span class="pre">introspect.getRoot()</span></tt> to identify some situations where
|
||||||
|
strings shouldn't be considered roots. For example:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> import PyCrust # To illustrate the potential problem.
|
||||||
|
>>> len('PyCrust.py')
|
||||||
|
</pre>
|
||||||
|
<p>Typing the dot at the end of "PyCrust" in the second line above should
|
||||||
|
NOT result in an autocompletion list because "PyCrust" is part of a
|
||||||
|
string in this context, not a reference to the PyCrust module object.
|
||||||
|
Similar reasoning applies to call tips. For example:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> len('dir(')
|
||||||
|
</pre>
|
||||||
|
<p>Typing the left paren at the end of "dir" should NOT result in a call
|
||||||
|
tip.</p>
|
||||||
|
<p>Both features now behave properly in the examples given. However,
|
||||||
|
there is still the case where whitespace precedes the potential root
|
||||||
|
and that is NOT handled properly. For example:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> len('this is a dir(')
|
||||||
|
</pre>
|
||||||
|
<p>and:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> len('This is PyCrust.py')
|
||||||
|
</pre>
|
||||||
|
<p>More code needs to be written to handle more complex situations.</p>
|
||||||
|
<p>Added <tt class="literal"><span class="pre">locals=None</span></tt> parameter to <tt class="literal"><span class="pre">Shell.__init__()</span></tt>.</p>
|
||||||
|
<p>Added support for magic attribute retrieval. Users can change this
|
||||||
|
with:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> shell.editor.autoCompleteIncludeMagic = 0
|
||||||
|
</pre>
|
||||||
|
<p>Added the ability to set filters on auto completion to exclude
|
||||||
|
attributes prefixed with a single or double underscore. Users can
|
||||||
|
exclude one or the other or both with:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
>>> shell.editor.autoCompleteExcludeSingle = 1
|
||||||
|
>>> shell.editor.autoCompleteExcludeDouble = 1
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id2">
|
||||||
|
<h2><a class="toc-backref" href="#id35" name="id2">0.5 (8/8/2001)</a></h2>
|
||||||
|
<p>Mostly just a final version change before creating a release.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-7-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id36" name="to-8-7-2001">0.4 (8/4/2001 to 8/7/2001)</a></h2>
|
||||||
|
<p>Changed version/revision handling.</p>
|
||||||
|
<p>Fixed bugs.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-3-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id37" name="to-8-3-2001">0.3 (8/2/2001 to 8/3/2001)</a></h2>
|
||||||
|
<p>Removed lots of cruft.</p>
|
||||||
|
<p>Added lots of docstrings.</p>
|
||||||
|
<p>Imported to CVS repository at SourceForge.</p>
|
||||||
|
<p>Added call tips.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-8-2-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id38" name="to-8-2-2001">0.2 (7/30/2001 to 8/2/2001)</a></h2>
|
||||||
|
<p>Renamed several files.</p>
|
||||||
|
<p>Added command autocompletion.</p>
|
||||||
|
<p>Added menus to PyCrust.py: File, Edit and Help.</p>
|
||||||
|
<p>Added sample applications: <tt class="literal"><span class="pre">PyCrustAlaCarte.py</span></tt>,
|
||||||
|
<tt class="literal"><span class="pre">PyCrustAlaMode.py</span></tt>, and <tt class="literal"><span class="pre">PyCrustMinimus.py</span></tt>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="to-7-19-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id39" name="to-7-19-2001">0.1 (7/1/2001 to 7/19/2001)</a></h2>
|
||||||
|
<p>Added basic syntax coloring much like Boa.</p>
|
||||||
|
<p>Added read-only logging much like IDLE.</p>
|
||||||
|
<p>Can retrieve a previous command by putting the cursor back on that
|
||||||
|
line and hitting enter.</p>
|
||||||
|
<p>Stdin and raw_input operate properly so you can now do <tt class="literal"><span class="pre">help()</span></tt> and
|
||||||
|
<tt class="literal"><span class="pre">license()</span></tt> without hanging.</p>
|
||||||
|
<p>Redefined "quit", "exit", and "close" to display a better-than-nothing
|
||||||
|
response.</p>
|
||||||
|
<p>Home key honors the prompt.</p>
|
||||||
|
<p>Created SourceForge account, but nothing was posted.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="in-the-beginning-there-was-pie-7-1-2001">
|
||||||
|
<h2><a class="toc-backref" href="#id40" name="in-the-beginning-there-was-pie-7-1-2001">In the beginning, there was pie... (7/1/2001)</a></h2>
|
||||||
|
<p>Blame it all on IDLE, Boa and PythonWin. I was using all three, got
|
||||||
|
frustrated with their dissimilarities, and began to let everyone know
|
||||||
|
how I felt. At the same time, Scintilla looked like an interesting
|
||||||
|
tool to build a shell around. And while I didn't receive much in the
|
||||||
|
way of positive feedback, let alone encouragement, I just couldn't let
|
||||||
|
go of the idea of a Scintilla-based Python shell. Then the PythonCard
|
||||||
|
project got to the point where they were talking about including a
|
||||||
|
shell in their development environment. That was all the incentive I
|
||||||
|
needed. PyCrust had to happen...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class="footer" />
|
||||||
|
<div class="footer">
|
||||||
|
Generated on: 2004-02-04 23:31 UTC.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -221,5 +221,5 @@ History of changes
|
|||||||
This section lists all the changes that have been made to the Py
|
This section lists all the changes that have been made to the Py
|
||||||
programs and modules, since the beginning.
|
programs and modules, since the beginning.
|
||||||
|
|
||||||
.. include:: ../wxPython/py/CHANGES.txt
|
.. include:: ../wx/py/CHANGES.txt
|
||||||
|
|
||||||
|
66
wxPython/docs/README.html
Normal file
66
wxPython/docs/README.html
Normal 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 "mentally translate" 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@alldunn.com">robin@alldunn.com</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class="footer" />
|
||||||
|
<div class="footer">
|
||||||
|
Generated on: 2004-02-04 23:31 UTC.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -53,7 +53,7 @@ Please also see the following files:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------
|
--
|
||||||
Robin Dunn
|
Robin Dunn
|
||||||
robin@alldunn.com
|
robin@alldunn.com
|
||||||
|
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
[options]
|
[general]
|
||||||
|
|
||||||
output_encoding: iso-8859-1
|
output_encoding: iso-8859-1
|
||||||
source-link: 1
|
source_link: 0
|
||||||
datestamp: %Y-%m-%d %H:%M UTC
|
datestamp: %Y-%m-%d %H:%M UTC
|
||||||
generator: 1
|
generator: 0
|
||||||
|
177
wxPython/docs/wxPackage.html
Normal file
177
wxPython/docs/wxPackage.html
Normal 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@orbtech.com">pobrien@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 "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 <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 "wart." For
|
||||||
|
example, the following code is rather ugly in that the "wx" 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 "wx" 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 "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.</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
|
||||||
|
"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.</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 "wx" 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>
|
@@ -7,6 +7,7 @@
|
|||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
|
||||||
:Author: Patrick K. O'Brien
|
:Author: Patrick K. O'Brien
|
||||||
|
:Author: Robin Dunn
|
||||||
:Contact: pobrien@orbtech.com
|
:Contact: pobrien@orbtech.com
|
||||||
:Organization: Orbtech_
|
:Organization: Orbtech_
|
||||||
:Date: $Date$
|
:Date: $Date$
|
||||||
@@ -20,14 +21,29 @@
|
|||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
Big things sometimes come in small packages. This is certainly true
|
In the begining there was Python, and Python had modules, and Python
|
||||||
of the new wx package, which is being introduced in wxPython 2.4.1 as
|
was good. But after a time Guido looked on Python and saw that Python
|
||||||
a way to allow the "wx" prefix to be dropped from the names of all
|
needed organizational assistance, and so Guido took code from Python's
|
||||||
wxPython classes, functions, and constants. This document should
|
side and created Packages and then Python was very good. About this
|
||||||
answer all the questions you might have concerning the new wx package.
|
time wxPython was reborn, and wxPython used Packages, but being young
|
||||||
If not, feel free to contact the author. I hope you like the new wx
|
and trying to use a new technology wxPython did not know how to use
|
||||||
package as much as I do.
|
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?
|
Why change anything?
|
||||||
====================
|
====================
|
||||||
@@ -51,22 +67,27 @@ The new wx package allows you to write code like this, instead::
|
|||||||
|
|
||||||
class Frame(wx.Frame)
|
class Frame(wx.Frame)
|
||||||
|
|
||||||
The third reason is that the wxWindows project intends to do the same
|
The third reason is that the wxWindows project has considered doing
|
||||||
thing (implement a new wx namespace and drop the "wx" prefix) and we
|
the same thing (implement a new wx namespace and drop the "wx" prefix)
|
||||||
want wxPython to lead the way.
|
and we want wxPython to lead the way.
|
||||||
|
|
||||||
|
|
||||||
What does the new wx package do?
|
What does the new wx package do?
|
||||||
================================
|
================================
|
||||||
|
|
||||||
As a way of getting to this new syntax as quickly as possible, the
|
As mentioned in the Introduction, wxPython 2.4.1 introduced a way of
|
||||||
code in this new wx package was created. What it does is alter the
|
getting to this new syntax as quickly as possible. It would import
|
||||||
existing wx namespace dynamically. By making the changes on-the-fly
|
the old names (like "wxFrame") from the old package and then create new
|
||||||
at runtime, we can try out the new syntax before any permanent changes
|
names in the wx package without the wx prefix, (like "Frame".)
|
||||||
are made to the underlying class library. The downside of making
|
Starting with wxPython 2.5 the renaming is moved up to the wxPython
|
||||||
these changes at runtime is that there is a slight delay when you
|
build step, so the real classes and etc. are actually named with the
|
||||||
``import wx``; the upside is that you can start using the new syntax
|
new name (like "Frame") and are located in the new wx package.
|
||||||
now.
|
|
||||||
|
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?
|
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
|
syntax. So don't wait too long. You wouldn't want anyone calling you
|
||||||
old-fashioned, would 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?
|
.. _Migration Guide: MigrationGuide.html
|
||||||
=================================
|
|
||||||
|
|
||||||
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!
|
|
||||||
|
|
||||||
|
|
||||||
What about all the other modules, like grid, html, and stc?
|
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
|
There's more to the old wxPython than just the wxPython.wx module.
|
||||||
those extra modules covered as well. For each of those modules (as
|
And we've got those extra modules covered as well. Each of those
|
||||||
well as the lib package) we've got matching modules in the new wx
|
modules (as well as the lib subpackage) has been moved to the new wx
|
||||||
package. Let's take a look at a few of them.
|
package and reverse-renamers have been placed in the wxPython package
|
||||||
|
as needed.
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
How do I use this new wx package?
|
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
|
In most cases, existing code can be modified with a simple search and
|
||||||
replace.
|
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?
|
Where can I find example programs using the new wx syntax?
|
||||||
|
77
wxPython/docs/wxPythonDocs.html
Normal file
77
wxPython/docs/wxPythonDocs.html
Normal 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@orbtech.com">pobrien@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
wxPython/docs/wxPythonExamples.html
Normal file
226
wxPython/docs/wxPythonExamples.html
Normal 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@orbtech.com">pobrien@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
|
||||||
|
"wx" 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 "wx" 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 "wx namespace transition,"
|
||||||
|
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
|
||||||
|
"wrapper" 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
|
||||||
|
|
||||||
|
"""Basic frame class, with App for testing."""
|
||||||
|
|
||||||
|
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
|
||||||
|
__cvsid__ = "$Id$"
|
||||||
|
__revision__ = "$Revision$"[11:-2]
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
class Frame(wx.Frame):
|
||||||
|
"""Frame class."""
|
||||||
|
|
||||||
|
def __init__(self, parent=None, id=-1, title='Title',
|
||||||
|
pos=wx.DefaultPosition, size=(400, 200)):
|
||||||
|
"""Create a Frame instance."""
|
||||||
|
wx.Frame.__init__(self, parent, id, title, pos, size)
|
||||||
|
|
||||||
|
class App(wx.App):
|
||||||
|
"""Application class."""
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
"""Basic application class."""
|
||||||
|
|
||||||
|
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
|
||||||
|
__cvsid__ = "$Id$"
|
||||||
|
__revision__ = "$Revision$"[11:-2]
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
from frame import Frame
|
||||||
|
|
||||||
|
class App(wx.App):
|
||||||
|
"""Application class."""
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
"""Hello, wxPython! program."""
|
||||||
|
|
||||||
|
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
|
||||||
|
__cvsid__ = "$Id$"
|
||||||
|
__revision__ = "$Revision$"[11:-2]
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
class Frame(wx.Frame):
|
||||||
|
"""Frame class that displays an image."""
|
||||||
|
|
||||||
|
def __init__(self, image, parent=None, id=-1,
|
||||||
|
pos=wx.DefaultPosition, title='Hello, wxPython!'):
|
||||||
|
"""Create a Frame instance and display image."""
|
||||||
|
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):
|
||||||
|
"""Application class."""
|
||||||
|
|
||||||
|
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>
|
1080
wxPython/docs/wxPythonManual.html
Normal file
1080
wxPython/docs/wxPythonManual.html
Normal file
File diff suppressed because it is too large
Load Diff
128
wxPython/docs/wxPythonTutorial.html
Normal file
128
wxPython/docs/wxPythonTutorial.html
Normal 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@orbtech.com">pobrien@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 "AS IS" 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>
|
Reference in New Issue
Block a user