regen ReST docs

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42102 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2006-10-18 23:46:44 +00:00
parent 7b61ea68e2
commit 974a50f1bb
9 changed files with 3107 additions and 462 deletions

View File

@@ -3,18 +3,300 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Building wxPython 2.6 for Development and Testing</title> <title>Building wxPython 2.7 for Development and Testing</title>
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document" id="building-wxpython-2-6-for-development-and-testing"> <div class="document" id="building-wxpython-2-7-for-development-and-testing">
<h1 class="title">Building wxPython 2.6 for Development and Testing</h1> <h1 class="title">Building wxPython 2.7 for Development and Testing</h1>
<p>This file describes how I build wxWidgets and wxPython while doing <p>This file describes how I build wxWidgets and wxPython while doing
development and testing, and is meant to help other people that want 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 to do the same thing. I'll assume that you are using either a CVS
snapshot from <a class="reference" href="http://wxWidgets.org/snapshots/">http://wxWidgets.org/snapshots/</a>, a checkout from CVS, or snapshot from <a class="reference" href="http://wxWidgets.org/snapshots/">http://wxWidgets.org/snapshots/</a>, a checkout from CVS, or
one of the released wxPython-src-2.6.* tarballs. I'll also assume that one of the released wxPython-src-2.7.* tarballs. I'll also assume that
you know your way around your system, the compiler, etc. and most you know your way around your system, the compiler, etc. and most
importantly, that you know what you are doing! ;-)</p> importantly, that you know what you are doing! ;-)</p>
<p>If you want to also install the version of wxPython you build to be in <p>If you want to also install the version of wxPython you build to be in
@@ -28,14 +310,14 @@ may already have installed.</p>
<p>If you want to make changes to any of the <tt class="docutils literal"><span class="pre">*.i</span></tt> files, (SWIG <p>If you want to make changes to any of the <tt class="docutils literal"><span class="pre">*.i</span></tt> files, (SWIG
interface definition files,) or to regenerate the extension sources or interface definition files,) or to regenerate the extension sources or
renamer modules, then you will need an up to date version of SWIG, renamer modules, then you will need an up to date version of SWIG,
plus some patches. Get the sources for version 1.3.24, and then apply plus some patches. Get the sources for version 1.3.29, and then apply
the patches in wxPython/SWIG and then build SWIG like normal. See the the patches in wxPython/SWIG and then build SWIG like normal. See the
README.txt in the wxPython/SWIG dir for details about each patch and README.txt in the wxPython/SWIG dir for details about each patch and
also info about those that may already have been applied to the SWIG 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 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 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 example) then you can use a setup.py command-line option named SWIG
to be the full path name of the executable and the wxPython build will set to the full path name of the executable and the wxPython build will
use it. See below for an example.</p> use it. See below for an example.</p>
<p>In the text below I'll use WXDIR with environment variable syntax <p>In the text below I'll use WXDIR with environment variable syntax
(either $WXDIR or %WXDIR%) to refer to the top level directory where (either $WXDIR or %WXDIR%) to refer to the top level directory where
@@ -53,8 +335,8 @@ installed from one of the standard wxWidgets installers. With the
the APIs are allowed to change) there are often significant the APIs are allowed to change) there are often significant
differences between the W.X.Y release of wxWidgets and the W.X.Y.Z differences between the W.X.Y release of wxWidgets and the W.X.Y.Z
release of wxPython.</p> release of wxPython.</p>
<div class="section" id="building-on-unix-like-systems-e-g-linux-and-os-x"> <div class="section">
<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> <h1><a id="building-on-unix-like-systems-e-g-linux-and-os-x" 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 <p>These platforms are built almost the same way while in development
so I'll combine the descriptions about their build process here. so I'll combine the descriptions about their build process here.
First we will build wxWidgets and install it to an out of the way First we will build wxWidgets and install it to an out of the way
@@ -71,12 +353,13 @@ before:</p>
cd $WXDIR cd $WXDIR
mkdir bld mkdir bld
cd bld cd bld
../configure --prefix=/opt/wx/2.6 \ ../configure --prefix=/opt/wx/2.7 \
--with-gtk \ --with-gtk \
--with-gnomeprint \ --with-gnomeprint \
--with-opengl \ --with-opengl \
--enable-debug \ --enable-debug \
--enable-geometry \ --enable-geometry \
--enable-graphics_ctx \
--enable-sound --with-sdl \ --enable-sound --with-sdl \
--enable-mediactrl \ --enable-mediactrl \
--enable-display \ --enable-display \
@@ -84,6 +367,15 @@ cd bld
</pre> </pre>
<p>On OS X of course you'll want to use --with-mac instead of <p>On OS X of course you'll want to use --with-mac instead of
--with-gtk and --with-gnomeprint.</p> --with-gtk and --with-gnomeprint.</p>
<p>Notice that above I used a prefix option of &quot;/opt/wx/2.7&quot;. 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 wxWidgets &quot;installed&quot; and makes it easy to switch
between them, without impacting any versions of wxWidgets that may
have been installed via an RPM or whatever. For the rest of the
steps below be sure to also substitute &quot;/opt/wx/2.7&quot; with whatever
prefix you choose for your build.</p>
<p><strong>NOTE</strong>: Due to a recent change there is currently a dependency <p><strong>NOTE</strong>: Due to a recent change there is currently a dependency
problem in the multilib builds of wxWidgets on OSX, so I have problem in the multilib builds of wxWidgets on OSX, so I have
switched to using a monolithic build. That means that all of the switched to using a monolithic build. That means that all of the
@@ -101,23 +393,14 @@ it by changing the --with-gtk flag to specify it like this:</p>
--with-gtk=1 \ --with-gtk=1 \
</pre> </pre>
<p>To make the wxWidgets build be unicode enabled (strongly <p>To make the wxWidgets build be unicode enabled (strongly
recommended if you are building with GTK2) then add the following. recommended unless you are building with GTK1) then add the
When wxPython is unicode enabled then all strings that are passed following flag. When wxPython is unicode enabled then all strings
to wx functions and methods will first be converted to unicode that are passed to wx functions and methods will first be converted
objects, and any 'strings' returned from wx functions and methods to unicode objects, and any 'strings' returned from wx functions
will actually be unicode objects.:</p> and methods will actually be unicode objects.:</p>
<pre class="literal-block"> <pre class="literal-block">
--enable-unicode \ --enable-unicode \
</pre> </pre>
<p>Notice that I used a prefix of /opt/wx/2.6. 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 wxWidgets &quot;installed&quot; and makes it easy to switch between them,
without impacting any versions of wxWidgets that may have been
installed via an RPM or whatever. For the rest of the steps below
be sure to also substitute &quot;/opt/wx/2.6&quot; with whatever prefix you
choose for your build.</p>
<p>If you want to use the image and zlib libraries included with <p>If you want to use the image and zlib libraries included with
wxWidgets instead of those already installed on your system, (for wxWidgets instead of those already installed on your system, (for
example, to reduce dependencies on 3rd party libraries) then you example, to reduce dependencies on 3rd party libraries) then you
@@ -130,16 +413,16 @@ can add these flags to the configure command:</p>
</pre> </pre>
</li> </li>
<li><p class="first">To build and install wxWidgets you could just use the &quot;make&quot; <li><p class="first">To build and install wxWidgets you could just use the &quot;make&quot;
command but there are other libraries besides the main wxWidgets command but there are a couple other libraries besides the main
libs that also need to be built so again I make a script to do it wxWidgets libs that also need to be built so again I make a script
all for me so I don't forget anything. This time it is called to do it all for me so I don't forget anything. This time it is
&quot;.make&quot; (I use the leading &quot;.&quot; so when I do <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in my build called &quot;.make&quot; (I use the leading &quot;.&quot; so when I do <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in
dir I don't lose my scripts too.) This is what it looks like:</p> my build dir I don't lose my scripts too.) This is what it looks
like:</p>
<pre class="literal-block"> <pre class="literal-block">
make $* \ make $* \
&amp;&amp; make -C contrib/src/animate $* \
&amp;&amp; make -C contrib/src/gizmos $* \ &amp;&amp; make -C contrib/src/gizmos $* \
&amp;&amp; make -C contrib/src/stc $* &amp;&amp; make -C contrib/src/stc $*
</pre> </pre>
<p>So you just use .make as if it where make, but don't forget to set <p>So you just use .make as if it where make, but don't forget to set
the execute bit on .make first!:</p> the execute bit on .make first!:</p>
@@ -148,16 +431,16 @@ the execute bit on .make first!:</p>
.make install .make install
</pre> </pre>
<p>When it's done you should have an installed set of files under <p>When it's done you should have an installed set of files under
/opt/wx/2.6 containing just wxWidgets. Now to use this version of /opt/wx/2.7 containing just wxWidgets. Now to use this version of
wxWidgets you just need to add /opt/wx/2.6/bin to the PATH and set wxWidgets you just need to add /opt/wx/2.7/bin to the PATH and set
LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OS X) to /opt/wx/2.6/lib.</p> LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OS X) to /opt/wx/2.7/lib.</p>
</li> </li>
<li><p class="first">I also have a script to help me build wxPython and it is checked in <li><p class="first">I also have a script to help me build wxPython and it is checked in
to the CVS as wxWidgets/wxPython/b, but you probably don't want to to the CVS as wxWidgets/wxPython/b, but you probably don't want to
use it as it's very cryptic and expects that you want to run SWIG, 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 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 you'll probably get stuck. So in this document I'll just give the
instead.</p> raw commands instead.</p>
<p>We're not going to install the development version of wxPython with <p>We're not going to install the development version of wxPython with
these commands, so it won't impact your already installed version these commands, so it won't impact your already installed version
of the latest release. You'll be able test with this version when of the latest release. You'll be able test with this version when
@@ -167,33 +450,33 @@ INSTALL.txt.</p>
<p>If you have more than one version of Python on your system then be <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 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 wxPython programs to run the setup.py commands below. I'll be
using python2.3.</p> using python2.5.</p>
<p>Make sure that the first wx-config found on the PATH is the one you <p>Make sure that the first wx-config found on the PATH is the one
installed above, and then change to the $WXDIR/wxPython dir and belonging to the wxWidgets that you installed above, and then
run the this command:</p> change to the $WXDIR/wxPython dir and run the this command:</p>
<pre class="literal-block"> <pre class="literal-block">
cd $WXDIR/wxPython cd $WXDIR/wxPython
python2.3 setup.py build_ext --inplace --debug python2.5 setup.py build_ext --inplace --debug
</pre> </pre>
<p>If your new wx-config script is not on the PATH, or there is some <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 other version of it found first, then you can add this to the
command line to ensure your new one is used instead:</p> command line to ensure your new one is used instead:</p>
<pre class="literal-block"> <pre class="literal-block">
WX_CONFIG=/opt/wx/2.6/bin/wx-config WX_CONFIG=/opt/wx/2.7/bin/wx-config
</pre> </pre>
<p>By default setup.py will assume that you built wxWidgets to use <p>By default setup.py will assume that you built wxWidgets to use
GTK2. If you built wxWidgets to use GTK 1.2.x then you should add GTK2. If you built wxWidgets to use GTK 1.2.x then you should add
this flag to the command-line:</p> this flag to the command-line:</p>
<pre class="literal-block"> <pre class="literal-block">
WXPORT=gtk WXPORT=gtk
</pre> </pre>
<p>If you would like to do a Unicode enabled build (all strings sent <p>Setup.py will assume by default that you are using a unicode build
to or retruned from wx functions are Unicode objects) and your of wxWidgets. If not then you can use this flag:</p>
wxWidgets was built with unicode enabled then add this flag:</p>
<pre class="literal-block"> <pre class="literal-block">
UNICODE=1 UNICODE=0
</pre> </pre>
<p>If you are wanting to have the source files regenerated with swig, <p>If you are wanting to have the source files regenerated with swig,
(only neccessary if you make modifications to the <tt class="docutils literal"><span class="pre">*.i</span></tt> files,)
then you need to turn on the USE_SWIG flag and optionally tell it 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> where to find the new swig executable, so add these flags:</p>
<pre class="literal-block"> <pre class="literal-block">
@@ -203,28 +486,28 @@ USE_SWIG=1 SWIG=/opt/swig/bin/swig
being undeclared, or something similar then you can add being undeclared, or something similar then you can add
BUILD_GLCANVAS=0 to the setup.py command line to disable the BUILD_GLCANVAS=0 to the setup.py command line to disable the
building of the glcanvas module.</p> building of the glcanvas module.</p>
<p>When the setup.py command is done you should have fully populated <p>When the setup.py command is done you should have a fully populated
wxPython and wx packages locally in $WXDIR/wxPython/wxPython and (but uninstalled) wx package located in your $WXDIR/wxPython/wx
$WXDIR/wxPython/wx, with all the extension modules (<tt class="docutils literal"><span class="pre">*.so</span></tt> files) directory.</p>
located in the wx package.</p>
</li> </li>
<li><p class="first">To run code with the development version of wxPython, just set the <li><p class="first">To run code with the development version of wxPython, just set the
PYTHONPATH to the wxPython dir located in the source tree. For PYTHONPATH to the wxPython dir located in the source tree. For
example:</p> example:</p>
<pre class="literal-block"> <pre class="literal-block">
export LD_LIBRARY_PATH=/opt/wx/2.6/lib export LD_LIBRARY_PATH=/opt/wx/2.7/lib
export PYTHONPATH=$WXDIR/wxPython export PYTHONPATH=$WXDIR/wxPython
cd $WXDIR/wxPython/demo cd $WXDIR/wxPython/demo
python2.3 demo.py python2.5 demo.py
</pre> </pre>
<p>OS X NOTE: You need to use &quot;pythonw&quot; on the command line to run <p>OS X NOTE: Depending on your version of OS X and Python you may
wxPython applications. This version of the Python executable is need to use &quot;pythonw&quot; on the command line to run wxPython
part of the Python Framework and is allowed to interact with the applications. This version of the Python executable is part of the
display. You can also double click on a .py or a .pyw file from Python Framework and is allowed to interact with the display. You
the finder (assuming that the PythonLauncher app is associated with can also double click on a .py or a .pyw file from the finder
these file extensions) and it will launch the Framework version of (assuming that the PythonLauncher app is associated with these file
Python for you. For information about creating Applicaiton Bundles extensions) and it will launch the Framework version of Python for
of your wxPython apps please see the wiki and the mail lists.</p> 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 <p>SOLARIS NOTE: If you get unresolved symbol errors when importing
wxPython and you are running on Solaris and building with gcc, then 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 you may be able to work around the problem by uncommenting a bit of
@@ -234,27 +517,28 @@ does not automatically add libgcc to the link step.</p>
</li> </li>
</ol> </ol>
</div> </div>
<div class="section" id="building-on-windows"> <div class="section">
<h1><a name="building-on-windows">Building on Windows</a></h1> <h1><a id="building-on-windows" name="building-on-windows">Building on Windows</a></h1>
<p>The Windows builds currently require the use of Microsoft Visual C++. <p>The Windows builds currently require the use of Microsoft Visual C++.
Theoretically, other compilers (such as mingw32 or the Borland Theoretically, other compilers (such as mingw32 or the Borland
compilers) can also be used but I've never done the work to make that 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 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 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 modules using that compiler, and then make a few changes to setup.py
to accommodate that. (And send the patches to me.) If you plan on to accommodate that. (And send the patches to me.)</p>
using VisualStudio.Net (a.k.a. MSVC 7.1) keep in mind that you'll also <p>The standard Python 2.3 and earlier are built with MS Visual C 6.0 and
have to build Python and any other extension modules that you use with so you must also build with MSVC 6 in order to be used with the stock
that compiler because a different version of the C runtime library is python.exe. If you woudl rather use a different version of
used. The Python executable that comes from PythonLabs and the VisualStudio keep in mind that you'll also have to build Python and
wxPython extensions that I distribute are built with MSVC 6 with all any other extension modules that you use with that compiler because a
the Service Packs applied. This policy will change with Python 2.4 different version of the C runtime library is used. The stock Python
and MSVC 7.1 will be used starting with that version.</p> 2.4 and 2.5 executables are built with MSVC 7.1, and the same rules
apply to it.</p>
<p>If you want to build a debuggable version of wxWidgets and wxPython you <p>If you want to build a debuggable version of wxWidgets and wxPython you
will need to have also built a debug version of Python and any other 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 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 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 or python25_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) of the code with the debugger then building the normal (or hybrid)
version is fine, and you can use the regular python executables with version is fine, and you can use the regular python executables with
it.</p> it.</p>
@@ -277,7 +561,7 @@ differently.</p>
<p>The *.btm files are for 4NT and the others are for bash. They are:</p> <p>The *.btm files are for 4NT and the others are for bash. They are:</p>
<pre class="literal-block"> <pre class="literal-block">
.make/.make.btm Builds the main lib and the needed contribs .make/.make.btm Builds the main lib and the needed contribs
.mymake/.mymake.btm Builds just one lib, use by .make .mymake/.mymake.btm Builds just one lib, used by .make
.makesetup.mk A makefile that will copy and edit setup.h .makesetup.mk A makefile that will copy and edit setup.h
as needed for the different types of builds as needed for the different types of builds
</pre> </pre>
@@ -298,20 +582,18 @@ copy setup0.h setup.h
</li> </li>
<li><p class="first">Edit %WXDIR%\include\wx\msw\setup.h and change a few settings:</p> <li><p class="first">Edit %WXDIR%\include\wx\msw\setup.h and change a few settings:</p>
<pre class="literal-block"> <pre class="literal-block">
wxDIALOG_UNIT_COMPATIBILITY 0 wxUSE_DEBUGREPORT 0
wxUSE_DEBUG_CONTEXT 1 wxUSE_EXCEPTIONS 0
wxUSE_MEMORY_TRACING 1
wxUSE_DIALUP_MANAGER 0 wxUSE_DIALUP_MANAGER 0
wxUSE_GRAPHICS_CONTEXT 1
wxUSE_GLCANVAS 1 wxUSE_GLCANVAS 1
wxUSE_POSTSCRIPT 1 wxUSE_POSTSCRIPT 1
wxUSE_AFM_FOR_POSTSCRIPT 0 wxUSE_DIB_FOR_BITMAP 1
wxUSE_DISPLAY 1
wxUSE_DEBUGREPORT 0
</pre> </pre>
<p>If you are using my build scripts then a few more settings will be <p>If you are using my build scripts then a few more settings will be
changed and then a copy of setup.h is placed in a subdir of changed automatically and then a copy of setup.h is placed in a
%WXWIN%\libvc_dll. If you are doing it by hand and making a subdir of %WXWIN%\libvc_dll. If you are doing it by hand and
UNICODE build, then also change these:</p> making a UNICODE build, then also change these:</p>
<pre class="literal-block"> <pre class="literal-block">
wxUSE_UNICODE 1 wxUSE_UNICODE 1
wxUSE_UNICODE_MSLU 1 wxUSE_UNICODE_MSLU 1
@@ -357,11 +639,11 @@ clean up the build:</p>
executing nmake with a bunch of extra command line parameters. executing nmake with a bunch of extra command line parameters.
The base set are:</p> The base set are:</p>
<pre class="literal-block"> <pre class="literal-block">
nmake -f makefile.vc OFFICIAL_BUILD=1 SHARED=1 MONOLITHIC=1 USE_OPENGL=1 nmake -f makefile.vc OFFICIAL_BUILD=1 SHARED=1 MONOLITHIC=0 USE_OPENGL=1 USE_GDIPLUS=1
</pre> </pre>
<p>If doing a debug build then add:</p> <p>If doing a debug build then add:</p>
<pre class="literal-block"> <pre class="literal-block">
BUILD=debug BUILD=debug
</pre> </pre>
<p>otherwise add these:</p> <p>otherwise add these:</p>
<pre class="literal-block"> <pre class="literal-block">
@@ -372,14 +654,7 @@ DEBUG_FLAG=1 CXXFLAGS=/D__NO_VC_CRTDBG__ WXDEBUGFLAG=h BUILD=release
UNICODE=1 MSLU=1 UNICODE=1 MSLU=1
</pre> </pre>
<p>Now, from the %WXDIR%\build\msw directory run nmake with your <p>Now, from the %WXDIR%\build\msw directory run nmake with your
selection of command-line flags as described above. Repeat this selection of command-line flags as described above.</p>
same command from the following directories in order to build the
contrib libraries:</p>
<pre class="literal-block">
%WXDIR%\contrib\build\animate
%WXDIR%\contrib\build\gizmos
%WXDIR%\contrib\build\stc
</pre>
</li> </li>
<li><p class="first">When that is all done it will have built the main wxWidgets DLLs <li><p class="first">When that is all done it will have built the main wxWidgets DLLs
and also some of the contribs DLLs. There should be a ton of DLLs and also some of the contribs DLLs. There should be a ton of DLLs
@@ -398,13 +673,14 @@ build for (if you have more than one on your system) and to match
the MONOLITHIC flag with how you built wxWidgets:</p> the MONOLITHIC flag with how you built wxWidgets:</p>
<pre class="literal-block"> <pre class="literal-block">
cd %WXDIR%\wxPython cd %WXDIR%\wxPython
python setup.py build_ext --inplace MONOLITHIC=1 python setup.py build_ext --inplace MONOLITHIC=0
</pre> </pre>
<p>If you are wanting to have the source files regenerated with swig, <p>If you are wanting to have the source files regenerated with swig,
(only neccessary if you make modifications to the <tt class="docutils literal"><span class="pre">*.i</span></tt> files,)
then you need to turn on the USE_SWIG flag and optionally tell it 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> where to find the new swig executable, so add these flags:</p>
<pre class="literal-block"> <pre class="literal-block">
USE_SWIG=1 SWIG=e:\projects\SWIG-cvs\swig.exe USE_SWIG=1 SWIG=e:\\projects\\SWIG-1.2.29\\swig.exe
</pre> </pre>
<p>If you built a Unicode version of wxWidgets and want to also build <p>If you built a Unicode version of wxWidgets and want to also build
the Unicode version of wxPython then add this flag:</p> the Unicode version of wxPython then add this flag:</p>

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ Recent Changes for wxPython
2.7.1.1 2.7.1.1
------- -------
* * 18-Oct-2006
The following deprecated items have been removed: The following deprecated items have been removed:

View File

@@ -3,20 +3,302 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Installing wxPython 2.6 from Source</title> <title>Installing wxPython 2.7 from Source</title>
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document" id="installing-wxpython-2-6-from-source"> <div class="document" id="installing-wxpython-2-7-from-source">
<h1 class="title">Installing wxPython 2.6 from Source</h1> <h1 class="title">Installing wxPython 2.7 from Source</h1>
<p>This document will describe the few differences and additions to the <p>This document will describe the few differences and additions to the
content in the <a class="reference" href="BUILD.html">BUILD</a> document for installing wxPython built from content in the <a class="reference" href="BUILD.html">BUILD</a> document for installing wxPython built from
source. Please follow the intstructions both in this file and in source. Please follow the intstructions both in this file and in
<a class="reference" href="BUILD.html">BUILD</a> to perform this task. Where there is overlap the items <a class="reference" href="BUILD.html">BUILD</a> to perform this task. Where there is overlap the items
described here will take precedence for doing installations.</p> described here will take precedence for doing installations.</p>
<div class="section" id="installing-on-unix-like-systems-not-os-x"> <div class="section">
<h1><a name="installing-on-unix-like-systems-not-os-x">Installing on Unix-like Systems (not OS X)</a></h1> <h1><a id="installing-on-unix-like-systems-not-os-x" name="installing-on-unix-like-systems-not-os-x">Installing on Unix-like Systems (not OS X)</a></h1>
<ol class="arabic"> <ol class="arabic">
<li><p class="first">When building wxWidgets you need to decide if you want it to be a <li><p class="first">When building wxWidgets you need to decide if you want it to be a
private copy only accessed by wxPython, or if you would like it to private copy only accessed by wxPython, or if you would like it to
@@ -49,7 +331,7 @@ find the wxWidgets shared libraries. You can hard code the library
path into the binaries by using the rpath option when configuring path into the binaries by using the rpath option when configuring
wxWidgets. For example:</p> wxWidgets. For example:</p>
<pre class="literal-block"> <pre class="literal-block">
--enable-rpath=/opt/wx/2.6/lib \ --enable-rpath=/opt/wx/2.7/lib \
</pre> </pre>
<p>SOLARIS NOTE: The --enable-rpath option may cause problems when <p>SOLARIS NOTE: The --enable-rpath option may cause problems when
using wxGTK on Solaris when compiling wxPython as described below. using wxGTK on Solaris when compiling wxPython as described below.
@@ -69,7 +351,7 @@ into the same bin dir used by Python by using this command, plus
whatever WXPORT, UNICODE, etc. settings you used for the initial whatever WXPORT, UNICODE, etc. settings you used for the initial
build step:</p> build step:</p>
<pre class="literal-block"> <pre class="literal-block">
python2.3 setup.py install python2.5 setup.py install
</pre> </pre>
<p>If you would like to install to some place besides the prefix where <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 Python is installed, (such as to your home directory) then you can
@@ -81,8 +363,8 @@ contained in the PYTHONPATH environment variable.</p>
</li> </li>
</ol> </ol>
</div> </div>
<div class="section" id="installing-on-os-x"> <div class="section">
<h1><a name="installing-on-os-x">Installing on OS X</a></h1> <h1><a id="installing-on-os-x" name="installing-on-os-x">Installing on OS X</a></h1>
<p>Installing wxPython on OS X is nearly the same as the Unix <p>Installing wxPython on OS X is nearly the same as the Unix
instructions above, except for a few small, but important details:</p> instructions above, except for a few small, but important details:</p>
<ol class="arabic simple"> <ol class="arabic simple">
@@ -112,8 +394,8 @@ app to run wxPython apps, otherwise the app will not be able to
fully use the GUI display.</li> fully use the GUI display.</li>
</ol> </ol>
</div> </div>
<div class="section" id="installing-on-windows"> <div class="section">
<h1><a name="installing-on-windows">Installing on Windows</a></h1> <h1><a id="installing-on-windows" name="installing-on-windows">Installing on Windows</a></h1>
<ol class="arabic"> <ol class="arabic">
<li><p class="first">Build wxWidgets and wxPython as described in BUILD.txt. If you <li><p class="first">Build wxWidgets and wxPython as described in BUILD.txt. If you
would rather have a version without the code that turns runtime would rather have a version without the code that turns runtime
@@ -131,7 +413,7 @@ python setup.py install
found at runtime by the extension modules without requiring that found at runtime by the extension modules without requiring that
they be installed on the PATH:</p> they be installed on the PATH:</p>
<pre class="literal-block"> <pre class="literal-block">
copy %WXWIN%\lib\vc_dll\wx*h_*.dll c:\Python23\Lib\site-packages\wx copy %WXWIN%\\lib\\vc_dll\\wx*h_*.dll c:\\Python25\\Lib\\site-packages\\wx
</pre> </pre>
</li> </li>
</ol> </ol>

View File

@@ -3,9 +3,291 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>wxPython 2.6 Migration Guide</title> <title>wxPython 2.6 Migration Guide</title>
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document" id="wxpython-2-6-migration-guide"> <div class="document" id="wxpython-2-6-migration-guide">
@@ -15,8 +297,8 @@
your programs to those changes. Be sure to also check in the <a class="reference" href="CHANGES.html">CHANGES</a> your programs to those changes. Be sure to also check in the <a class="reference" href="CHANGES.html">CHANGES</a>
file like usual to see info about the not so major changes and other file like usual to see info about the not so major changes and other
things that have been added to wxPython.</p> things that have been added to wxPython.</p>
<div class="section" id="wxname-change"> <div class="section">
<h1><a name="wxname-change">wxName Change</a></h1> <h1><a id="wxname-change" name="wxname-change">wxName Change</a></h1>
<p>The <strong>wxWindows</strong> project and library is now known as <p>The <strong>wxWindows</strong> project and library is now known as
<strong>wxWidgets</strong>. Please see <a class="reference" href="http://www.wxwidgets.org/name.htm">here</a> for more details.</p> <strong>wxWidgets</strong>. Please see <a class="reference" href="http://www.wxwidgets.org/name.htm">here</a> for more details.</p>
<p>This won't really affect wxPython all that much, other than the fact <p>This won't really affect wxPython all that much, other than the fact
@@ -25,8 +307,8 @@ so mail list, CVS, and etc. addresses have also changed. We're going
to try and smooth the transition as much as possible, but I wanted you to try and smooth the transition as much as possible, but I wanted you
all to be aware of this change if you run into any issues.</p> all to be aware of this change if you run into any issues.</p>
</div> </div>
<div class="section" id="module-initialization"> <div class="section">
<h1><a name="module-initialization">Module Initialization</a></h1> <h1><a id="module-initialization" name="module-initialization">Module Initialization</a></h1>
<p>The import-startup-bootstrap process employed by wxPython was changed <p>The import-startup-bootstrap process employed by wxPython was changed
such that wxWidgets and the underlying gui toolkit are <strong>not</strong> such that wxWidgets and the underlying gui toolkit are <strong>not</strong>
initialized until the wx.App object is created (but before wx.App.OnInit initialized until the wx.App object is created (but before wx.App.OnInit
@@ -51,8 +333,8 @@ class constructors and also many toplevel functions and static methods
will now check that a wx.App object has already been created and will will now check that a wx.App object has already been created and will
raise a wx.PyNoAppError exception if not.</p> raise a wx.PyNoAppError exception if not.</p>
</div> </div>
<div class="section" id="swig-1-3"> <div class="section">
<h1><a name="swig-1-3">SWIG 1.3</a></h1> <h1><a id="swig-1-3" name="swig-1-3">SWIG 1.3</a></h1>
<p>wxPython is now using SWIG 1.3.x from CVS (with several of my own <p>wxPython is now using SWIG 1.3.x from CVS (with several of my own
customizations added that I hope to get folded back into the main SWIG customizations added that I hope to get folded back into the main SWIG
distribution.) This has some far reaching ramifications:</p> distribution.) This has some far reaching ramifications:</p>
@@ -79,8 +361,8 @@ class type using something like isinstance(obj, wx.FooPtr) you will
need to change it to isinstance(obj, wx.Foo).</p> need to change it to isinstance(obj, wx.Foo).</p>
</blockquote> </blockquote>
</div> </div>
<div class="section" id="binding-events"> <div class="section">
<h1><a name="binding-events">Binding Events</a></h1> <h1><a id="binding-events" name="binding-events">Binding Events</a></h1>
<p>All of the EVT_* functions are now instances of the wx.PyEventBinder <p>All of the EVT_* functions are now instances of the wx.PyEventBinder
class. They have a __call__ method so they can still be used as class. They have a __call__ method so they can still be used as
functions like before, but making them instances adds some functions like before, but making them instances adds some
@@ -132,11 +414,11 @@ values:</p>
item = menu.Append(-1, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;) item = menu.Append(-1, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, item) self.Bind(wx.EVT_MENU, self.OnExit, item)
2. 2.
item = menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;) item = menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, item) self.Bind(wx.EVT_MENU, self.OnExit, item)
3. 3.
menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;) menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
</pre> </pre>
@@ -167,8 +449,8 @@ def Unbind(self, event, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
&quot;&quot;&quot; &quot;&quot;&quot;
</pre> </pre>
</div> </div>
<div class="section" id="the-wx-namespace"> <div class="section">
<h1><a name="the-wx-namespace">The wx Namespace</a></h1> <h1><a id="the-wx-namespace" name="the-wx-namespace">The wx Namespace</a></h1>
<p>The second phase of the wx Namespace Transition has begun. That means <p>The second phase of the wx Namespace Transition has begun. That means
that the real names of the classes and other symbols do not have the that the real names of the classes and other symbols do not have the
'wx' prefix and the modules are located in a Python package named 'wx' prefix and the modules are located in a Python package named
@@ -225,8 +507,8 @@ you rewrote the above sample using &quot;from wxPython.wx import * &quot;, the
old wxNames, and the old style of event binding it will still work old wxNames, and the old style of event binding it will still work
just fine.</p> just fine.</p>
</div> </div>
<div class="section" id="new-wx-dc-methods"> <div class="section">
<h1><a name="new-wx-dc-methods">New wx.DC Methods</a></h1> <h1><a id="new-wx-dc-methods" name="new-wx-dc-methods">New wx.DC Methods</a></h1>
<p><strong>[Changed in 2.5.2.x]</strong> In wxPython 2.5.1.5 there was a new <p><strong>[Changed in 2.5.2.x]</strong> In wxPython 2.5.1.5 there was a new
implementation of the wx.DC Draw and other methods that broke implementation of the wx.DC Draw and other methods that broke
backwards compatibility in the name of consistency. That change has backwards compatibility in the name of consistency. That change has
@@ -240,7 +522,7 @@ FloodFill(self, x, y, colour, style = wx.FLOOD_SURFACE)
FoodFillPoint(self, pt, colour, style = wx.FLOOD_SURFACE) FoodFillPoint(self, pt, colour, style = wx.FLOOD_SURFACE)
GetPixel(self, x,y) GetPixel(self, x,y)
GetPixelPoint(self, pt) GetPixelPoint(self, pt)
DrawLine(self, x1, y1, x2, y2) DrawLine(self, x1, y1, x2, y2)
DrawLinePoint(self, pt1, pt2) DrawLinePoint(self, pt1, pt2)
@@ -289,7 +571,7 @@ DrawRotatedTextPoint(self, text, pt, angle)
bool Blit(self, xdest, ydest, width, height, sourceDC, xsrc, ysrc, bool Blit(self, xdest, ydest, width, height, sourceDC, xsrc, ysrc,
rop = wx.COPY, useMask = False, xsrcMask = -1, ysrcMask = -1) rop = wx.COPY, useMask = False, xsrcMask = -1, ysrcMask = -1)
BlitPointSize(self, destPt, sz, sourceDC, srcPt, rop = wx.COPY, BlitPointSize(self, destPt, sz, sourceDC, srcPt, rop = wx.COPY,
useMask = False, srcPtMask = wxDefaultPosition) useMask = False, srcPtMask = wxDefaultPosition)
@@ -299,8 +581,8 @@ SetClippingRegionAsRegion(self, region)
SetClippingRect(self, rect) SetClippingRect(self, rect)
</pre> </pre>
</div> </div>
<div class="section" id="building-extending-and-embedding-wxpython"> <div class="section">
<h1><a name="building-extending-and-embedding-wxpython">Building, Extending and Embedding wxPython</a></h1> <h1><a id="building-extending-and-embedding-wxpython" name="building-extending-and-embedding-wxpython">Building, Extending and Embedding wxPython</a></h1>
<p>wxPython's setup.py script now expects to use existing libraries for <p>wxPython's setup.py script now expects to use existing libraries for
the contribs (gizmos, stc, xrc, etc.) rather than building local the contribs (gizmos, stc, xrc, etc.) rather than building local
copies of them. If you build your own copies of wxPython please be copies of them. If you build your own copies of wxPython please be
@@ -339,8 +621,8 @@ are wrapped in the standard Py_(BEGIN|END)_ALLOW_THERADS may result in
wx event handlers being called (such as during the call to wx event handlers being called (such as during the call to
os.startfile.)</p> os.startfile.)</p>
</div> </div>
<div class="section" id="two-or-three-phase-create"> <div class="section">
<h1><a name="two-or-three-phase-create">Two (or Three!) Phase Create</a></h1> <h1><a id="two-or-three-phase-create" name="two-or-three-phase-create">Two (or Three!) Phase Create</a></h1>
<p>If you use the Precreate/Create method of instantiating a window, (for <p>If you use the Precreate/Create method of instantiating a window, (for
example, to set an extended style flag, or for XRC handlers) then example, to set an extended style flag, or for XRC handlers) then
there is now a new method named PostCreate to help with transplanting there is now a new method named PostCreate to help with transplanting
@@ -355,8 +637,8 @@ class MyDialog(wx.Dialog):
self.PostCreate(pre) self.PostCreate(pre)
</pre> </pre>
</div> </div>
<div class="section" id="sizers"> <div class="section">
<h1><a name="sizers">Sizers</a></h1> <h1><a id="sizers" name="sizers">Sizers</a></h1>
<p>The hack allowing the old &quot;option&quot; keyword parameter has been removed. <p>The hack allowing the old &quot;option&quot; keyword parameter has been removed.
If you use keyword args with wx.Sizer Add, Insert, or Prepend methods If you use keyword args with wx.Sizer Add, Insert, or Prepend methods
then you will need to use the <tt class="docutils literal"><span class="pre">proportion</span></tt> name instead of then you will need to use the <tt class="docutils literal"><span class="pre">proportion</span></tt> name instead of
@@ -473,8 +755,8 @@ This can be done by calling <tt class="docutils literal"><span class="pre">SetBe
</ul> </ul>
</blockquote> </blockquote>
</div> </div>
<div class="section" id="platforminfo"> <div class="section">
<h1><a name="platforminfo">PlatformInfo</a></h1> <h1><a id="platforminfo" name="platforminfo">PlatformInfo</a></h1>
<p>Added wx.PlatformInfo which is a tuple containing strings that <p>Added wx.PlatformInfo which is a tuple containing strings that
describe the platform and build options of wxPython. This lets you describe the platform and build options of wxPython. This lets you
know more about the build than just the __WXPORT__ value that know more about the build than just the __WXPORT__ value that
@@ -495,8 +777,8 @@ way. If there are any other platform/toolkit/build flags that make
sense to add to this tuple please let me know.</p> sense to add to this tuple please let me know.</p>
<p>BTW, wx.Platform will probably be deprecated in the future.</p> <p>BTW, wx.Platform will probably be deprecated in the future.</p>
</div> </div>
<div class="section" id="activex"> <div class="section">
<h1><a name="activex">ActiveX</a></h1> <h1><a id="activex" name="activex">ActiveX</a></h1>
<p>Lindsay Mathieson's newest <a class="reference" href="http://members.optusnet.com.au/~blackpaw1/wxactivex.html">wxActiveX</a> class has been wrapped into a new <p>Lindsay Mathieson's newest <a class="reference" href="http://members.optusnet.com.au/~blackpaw1/wxactivex.html">wxActiveX</a> class has been wrapped into a new
extension module called wx.activex. It is very generic and dynamic extension module called wx.activex. It is very generic and dynamic
and should allow hosting of arbitray ActiveX controls within your and should allow hosting of arbitray ActiveX controls within your
@@ -585,7 +867,7 @@ new window from being opened by the IE web browser control you can do
this in the handler for the iewin.EVT_NewWindow2 event:</p> this in the handler for the iewin.EVT_NewWindow2 event:</p>
<pre class="literal-block"> <pre class="literal-block">
def OnNewWindow2(self, evt): def OnNewWindow2(self, evt):
evt.Cancel = True evt.Cancel = True
</pre> </pre>
<p>So how do you know what methods, events and properties that an ActiveX <p>So how do you know what methods, events and properties that an ActiveX
control supports? There is a funciton in wx.activex named GetAXInfo control supports? There is a funciton in wx.activex named GetAXInfo
@@ -596,8 +878,8 @@ output appended as a comment to the modules produced by the
genaxmodule tool. Beyond that you'll need to consult the docs genaxmodule tool. Beyond that you'll need to consult the docs
provided by the makers of the ActiveX control that you are using.</p> provided by the makers of the ActiveX control that you are using.</p>
</div> </div>
<div class="section" id="png-images"> <div class="section">
<h1><a name="png-images">PNG Images</a></h1> <h1><a id="png-images" name="png-images">PNG Images</a></h1>
<p>Prior to 2.5 the PNG image handler would convert all alpha channel <p>Prior to 2.5 the PNG image handler would convert all alpha channel
information to a mask when the image was loaded. Pixels that were information to a mask when the image was loaded. Pixels that were
more than halfway transparent would be made fully transparent by the more than halfway transparent would be made fully transparent by the
@@ -619,8 +901,8 @@ fully transparent.</li>
</ul> </ul>
</blockquote> </blockquote>
</div> </div>
<div class="section" id="ogl-is-dead-long-live-ogl"> <div class="section">
<h1><a name="ogl-is-dead-long-live-ogl">OGL is dead! LONG LIVE OGL!</a></h1> <h1><a id="ogl-is-dead-long-live-ogl" name="ogl-is-dead-long-live-ogl">OGL is dead! LONG LIVE OGL!</a></h1>
<p><strong>[Changed in 2.5.2.x]</strong></p> <p><strong>[Changed in 2.5.2.x]</strong></p>
<p>The wx.ogl module was deprecated in version 2.5.2 in favor of the new <p>The wx.ogl module was deprecated in version 2.5.2 in favor of the new
Python port of the OGL library located at wx.lib.ogl contributed by Python port of the OGL library located at wx.lib.ogl contributed by
@@ -664,11 +946,11 @@ class MyDividedShape(ogl.DividedShape):
... ...
def OnSizingEndDragLeft(self, pt, x, y, keys, attch): def OnSizingEndDragLeft(self, pt, x, y, keys, attch):
ogl.DividedShape.OnSizingEndDragLeft(self, pt, x, y, keys, attch) ogl.DividedShape.OnSizingEndDragLeft(self, pt, x, y, keys, attch)
... ...
</pre> </pre>
</div> </div>
<div class="section" id="obsolete-modules"> <div class="section">
<h1><a name="obsolete-modules">Obsolete Modules</a></h1> <h1><a id="obsolete-modules" name="obsolete-modules">Obsolete Modules</a></h1>
<p>Instead of over a dozen separate extension modules linked together <p>Instead of over a dozen separate extension modules linked together
into a single extension module, the &quot;core&quot; module is now just a few into a single extension module, the &quot;core&quot; module is now just a few
extensions that are linked independently, and then merged together extensions that are linked independently, and then merged together
@@ -718,8 +1000,8 @@ the objects in these modules only via the wx or wxPython.wx packages:</p>
<p>The help module no longer exists and the classes therein are now part <p>The help module no longer exists and the classes therein are now part
of the core module imported with wxPython.wx or the wx package.</p> of the core module imported with wxPython.wx or the wx package.</p>
</div> </div>
<div class="section" id="wx-taskbaricon"> <div class="section">
<h1><a name="wx-taskbaricon">wx.TaskBarIcon</a></h1> <h1><a id="wx-taskbaricon" name="wx-taskbaricon">wx.TaskBarIcon</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p> <p><strong>[Changed in 2.5.3.x]</strong></p>
<p>wx.TaskbarIcon now works on all three platforms, although for wxGTK it <p>wx.TaskbarIcon now works on all three platforms, although for wxGTK it
depends on support from the Window Manager. On OS X the icon replaces depends on support from the Window Manager. On OS X the icon replaces
@@ -747,8 +1029,8 @@ wx.Dialogs.) If you don't destroy it then wxWidgets will assume that
you want the app to keep running with just the icon in the task bar you want the app to keep running with just the icon in the task bar
and the MainLoop will not exit.</p> and the MainLoop will not exit.</p>
</div> </div>
<div class="section" id="version-number-change"> <div class="section">
<h1><a name="version-number-change">Version Number Change</a></h1> <h1><a id="version-number-change" name="version-number-change">Version Number Change</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p> <p><strong>[Changed in 2.5.3.x]</strong></p>
<p>Starting with 2.5.3.0 the Unicode versions of wxPython will no longer <p>Starting with 2.5.3.0 the Unicode versions of wxPython will no longer
have a 'u' appended to the fourth component of the version number. have a 'u' appended to the fourth component of the version number.
@@ -761,8 +1043,8 @@ if &quot;unicode&quot; in wx.PlatformInfo:
... ...
</pre> </pre>
</div> </div>
<div class="section" id="multi-version-installs"> <div class="section">
<h1><a name="multi-version-installs">Multi-Version Installs</a></h1> <h1><a id="multi-version-installs" name="multi-version-installs">Multi-Version Installs</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p> <p><strong>[Changed in 2.5.3.x]</strong></p>
<p>Starting with 2.5.3.0 the wx and wxPython package directories will be <p>Starting with 2.5.3.0 the wx and wxPython package directories will be
installed in a subdirectory of the site-packages directory, instead of installed in a subdirectory of the site-packages directory, instead of
@@ -803,8 +1085,8 @@ version of wxPython that supports this, but there will be.</p>
<p>Please see this wiki page for more details, HowTo's and FAQ's: <p>Please see this wiki page for more details, HowTo's and FAQ's:
<a class="reference" href="http://wiki.wxpython.org/index.cgi/MultiVersionInstalls">http://wiki.wxpython.org/index.cgi/MultiVersionInstalls</a></p> <a class="reference" href="http://wiki.wxpython.org/index.cgi/MultiVersionInstalls">http://wiki.wxpython.org/index.cgi/MultiVersionInstalls</a></p>
</div> </div>
<div class="section" id="miscellaneous-stuff"> <div class="section">
<h1><a name="miscellaneous-stuff">Miscellaneous Stuff</a></h1> <h1><a id="miscellaneous-stuff" name="miscellaneous-stuff">Miscellaneous Stuff</a></h1>
<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

View File

@@ -3,12 +3,294 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The Py Manual</title> <title>The Py Manual</title>
<meta name="author" content="Patrick K. O'Brien" /> <meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" /> <meta name="organization" content="Orbtech" />
<meta name="date" content="2004-04-15" /> <meta name="date" content="2004-04-15" />
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document" id="the-py-manual"> <div class="document" id="the-py-manual">
@@ -30,8 +312,8 @@
<td>1.5</td></tr> <td>1.5</td></tr>
</tbody> </tbody>
</table> </table>
<div class="contents topic" id="contents"> <div class="contents topic">
<p class="topic-title first"><a name="contents">Contents</a></p> <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="#introduction" id="id4" name="id4">Introduction</a></li> <li><a class="reference" href="#introduction" id="id4" name="id4">Introduction</a></li>
<li><a class="reference" href="#developer-reference" id="id5" name="id5">Developer Reference</a></li> <li><a class="reference" href="#developer-reference" id="id5" name="id5">Developer Reference</a></li>
@@ -75,20 +357,20 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="section" id="introduction"> <div class="section">
<h1><a class="toc-backref" href="#id4" name="introduction">Introduction</a></h1> <h1><a class="toc-backref" href="#id4" id="introduction" name="introduction">Introduction</a></h1>
<p>This document will show you how to use the Py programs and the Py <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 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>, 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> and includes PyCrust, so PyCrust is no longer distributed separately.</p>
</div> </div>
<div class="section" id="developer-reference"> <div class="section">
<h1><a class="toc-backref" href="#id5" name="developer-reference">Developer Reference</a></h1> <h1><a class="toc-backref" href="#id5" id="developer-reference" name="developer-reference">Developer Reference</a></h1>
<p>Source code documentation for developers is available at:</p> <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> <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>
<div class="section" id="what-is-py"> <div class="section">
<h1><a class="toc-backref" href="#id6" name="what-is-py">What is Py?</a></h1> <h1><a class="toc-backref" href="#id6" id="what-is-py" 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 <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 of whimsically-named Python programs and modules that began as the
PyCrust project. So Py is really several things: a set of standalone PyCrust project. So Py is really several things: a set of standalone
@@ -99,8 +381,8 @@ 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 Python and wxPython, so it works equally well on Windows, Linux and
Mac OS X.</p> Mac OS X.</p>
</div> </div>
<div class="section" id="pycrust-is-dead-long-live-py"> <div class="section">
<h1><a class="toc-backref" href="#id7" name="pycrust-is-dead-long-live-py">PyCrust is dead! Long live Py!</a></h1> <h1><a class="toc-backref" href="#id7" id="pycrust-is-dead-long-live-py" 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 <p>This project began with a program I created called PyCrust - an
interactive, graphical Python shell, developed using the wxPython GUI 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>. toolkit. For about two years, PyCrust was hosted on <a class="reference" href="http://www.sf.net/projects/pycrust/">SourceForge</a>.
@@ -136,8 +418,8 @@ wxPython applications to provide similar services, either for your own
use during development, or as an interface for users of your programs. use during development, or as an interface for users of your programs.
These modules are the same ones used by all the Py programs.</p> These modules are the same ones used by all the Py programs.</p>
</div> </div>
<div class="section" id="py-standalone-programs"> <div class="section">
<h1><a class="toc-backref" href="#id8" name="py-standalone-programs">Py standalone programs</a></h1> <h1><a class="toc-backref" href="#id8" id="py-standalone-programs" name="py-standalone-programs">Py standalone programs</a></h1>
<p>These are the standalone applications in the Py collection:</p> <p>These are the standalone applications in the Py collection:</p>
<ul class="simple"> <ul class="simple">
<li>PyAlaCarte</li> <li>PyAlaCarte</li>
@@ -148,42 +430,42 @@ These modules are the same ones used by all the Py programs.</p>
<li>PyWrap</li> <li>PyWrap</li>
</ul> </ul>
</div> </div>
<div class="section" id="pyalacarte"> <div class="section">
<h1><a class="toc-backref" href="#id9" name="pyalacarte">PyAlaCarte</a></h1> <h1><a class="toc-backref" href="#id9" id="pyalacarte" name="pyalacarte">PyAlaCarte</a></h1>
<p>PyAlaCarte is a Python source code editor. It is designed to have a <p>PyAlaCarte is a Python source code editor. It is designed to have a
simple, single-file interface. As a standalone application, it is simple, single-file interface. As a standalone application, it is
good for simple, short editing tasks. But it is really meant to be 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 more of an example of how to embed the Py editor into a wxPython
application.</p> application.</p>
</div> </div>
<div class="section" id="pyalamode"> <div class="section">
<h1><a class="toc-backref" href="#id10" name="pyalamode">PyAlaMode</a></h1> <h1><a class="toc-backref" href="#id10" id="pyalamode" name="pyalamode">PyAlaMode</a></h1>
<p>PyAlaMode is a Python source code editor.</p> <p>PyAlaMode is a Python source code editor.</p>
</div> </div>
<div class="section" id="pycrust"> <div class="section">
<h1><a class="toc-backref" href="#id11" name="pycrust">PyCrust</a></h1> <h1><a class="toc-backref" href="#id11" id="pycrust" name="pycrust">PyCrust</a></h1>
<p>PyCrust is an interactive, Python shell. But it's more than just a <p>PyCrust is an interactive, Python shell. But it's more than just a
shell. It includes a tabbed notebook containing a namespace tree shell. It includes a tabbed notebook containing a namespace tree
(PyFilling), and several other things.</p> (PyFilling), and several other things.</p>
</div> </div>
<div class="section" id="pyfilling"> <div class="section">
<h1><a class="toc-backref" href="#id12" name="pyfilling">PyFilling</a></h1> <h1><a class="toc-backref" href="#id12" id="pyfilling" name="pyfilling">PyFilling</a></h1>
<p>PyFilling is a namespace viewer. It isn't really useful as a <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 standalone program, but it does illustrate how to make use of the
underlying <tt class="docutils literal"><span class="pre">filling</span></tt> module.</p> underlying <tt class="docutils literal"><span class="pre">filling</span></tt> module.</p>
</div> </div>
<div class="section" id="pyshell"> <div class="section">
<h1><a class="toc-backref" href="#id13" name="pyshell">PyShell</a></h1> <h1><a class="toc-backref" href="#id13" id="pyshell" name="pyshell">PyShell</a></h1>
<p>PyShell is an interactive, Python shell. It shares the same base code <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 as PyCrust, but doesn't have any of the extra features that appear in
the PyCrust notebook interface.</p> the PyCrust notebook interface.</p>
<div class="figure"> <div class="figure">
<div class="image"><img alt="screenshots/PyShell.png" src="screenshots/PyShell.png" /></div> <img alt="screenshots/PyShell.png" src="screenshots/PyShell.png" />
<p class="caption">PyShell running on Mandrake Linux.</p> <p class="caption">PyShell running on Mandrake Linux.</p>
</div> </div>
</div> </div>
<div class="section" id="pywrap"> <div class="section">
<h1><a class="toc-backref" href="#id14" name="pywrap">PyWrap</a></h1> <h1><a class="toc-backref" href="#id14" id="pywrap" name="pywrap">PyWrap</a></h1>
<p>PyWrap is a runtime utility that lets you run an existing wxPython <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 program with a PyCrust frame at the same time. Inside the PyCrust
shell namespace, the local variable <tt class="docutils literal"><span class="pre">app</span></tt> is assigned to your shell namespace, the local variable <tt class="docutils literal"><span class="pre">app</span></tt> is assigned to your
@@ -191,8 +473,8 @@ application instance. In this way you can introspect your entire
application within the PyCrust shell, as well as the PyFilling application within the PyCrust shell, as well as the PyFilling
namespace viewer.</p> namespace viewer.</p>
</div> </div>
<div class="section" id="py-modules"> <div class="section">
<h1><a class="toc-backref" href="#id15" name="py-modules">Py modules</a></h1> <h1><a class="toc-backref" href="#id15" id="py-modules" name="py-modules">Py modules</a></h1>
<p>Py was designed to be modular. That means graphical code is kept <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 separate from non-graphical code, and many of the Py modules can be
used by other programs. Likewise, other programs can supply some of used by other programs. Likewise, other programs can supply some of
@@ -202,8 +484,8 @@ application. As long as it supports the minimum functionality
required, PyCrust will work just as well with your interpreter as with required, PyCrust will work just as well with your interpreter as with
its default interpreter.</p> its default interpreter.</p>
</div> </div>
<div class="section" id="projects-using-py"> <div class="section">
<h1><a class="toc-backref" href="#id16" name="projects-using-py">Projects using Py</a></h1> <h1><a class="toc-backref" href="#id16" id="projects-using-py" name="projects-using-py">Projects using Py</a></h1>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="http://conflictsolver.sourceforge.net/">Conflict Solver</a></li> <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><a class="reference" href="http://www.gnumed.org/">Gnumed</a></li>
@@ -215,12 +497,12 @@ its default interpreter.</p>
<li><a class="reference" href="http://linus.yorktown.arlington.k12.va.us/CS/APCSC/student_sites/David_Mayo/wxGasp">wxGasp</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> </ul>
</div> </div>
<div class="section" id="history-of-changes"> <div class="section">
<h1><a class="toc-backref" href="#id17" name="history-of-changes">History of changes</a></h1> <h1><a class="toc-backref" href="#id17" id="history-of-changes" name="history-of-changes">History of changes</a></h1>
<p>This section lists all the changes that have been made to the Py <p>This section lists all the changes that have been made to the Py
programs and modules, since the beginning.</p> programs and modules, since the beginning.</p>
<div class="section" id="id1"> <div class="section">
<h2><a class="toc-backref" href="#id18" name="id1">0.9.5 (12/23/2005)</a></h2> <h2><a class="toc-backref" href="#id18" id="id1" name="id1">0.9.5 (12/23/2005)</a></h2>
<p>Applied a series of enhancments by Franz Steinaeusler, Adi Sieker, and <p>Applied a series of enhancments by Franz Steinaeusler, Adi Sieker, and
Sebastian Haase, up until their 7-31-2005 version. (Their next Sebastian Haase, up until their 7-31-2005 version. (Their next
version broke some existing functionality, and added some confusing version broke some existing functionality, and added some confusing
@@ -261,7 +543,7 @@ place that then has to reach all over the place to do anything.</li>
<li>Enable editing of the startup python code, which will either be the <li>Enable editing of the startup python code, which will either be the
file pointed to by PYTHONSTARTUP or a file in the config dir if file pointed to by PYTHONSTARTUP or a file in the config dir if
PYTHONSTARTUP is not set in the environment.</li> PYTHONSTARTUP is not set in the environment.</li>
<li>Added an option to skip the running of the startup code when <li>Added an option to skip the running of the startup code when
PyShell or PyCrust starts.</li> PyShell or PyCrust starts.</li>
<li>PyCrust adds a pp(item) function to the shell's namespace that <li>PyCrust adds a pp(item) function to the shell's namespace that
pretty prints the item in the Display tab of the notebook. Added pretty prints the item in the Display tab of the notebook. Added
@@ -271,8 +553,8 @@ when popping up the call tip.</li>
<li>Added Find and Find-Next functions that use the wx.FindReplaceDialog.</li> <li>Added Find and Find-Next functions that use the wx.FindReplaceDialog.</li>
</ul> </ul>
</div> </div>
<div class="section" id="to-2004"> <div class="section">
<h2><a class="toc-backref" href="#id19" name="to-2004">0.9.4 (1/25/2004 to //2004)</a></h2> <h2><a class="toc-backref" href="#id19" id="to-2004" 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 wxd decorators in favor of new SWIG-generated docstrings.</p>
<p>Removed docs tabs from crust interface: <p>Removed docs tabs from crust interface:
* wxPython Docs * wxPython Docs
@@ -282,13 +564,13 @@ when popping up the call tip.</li>
<p>Changed default namespace of Shell to __main__.__dict__, instead of an <p>Changed default namespace of Shell to __main__.__dict__, instead of an
empty dictionary.</p> empty dictionary.</p>
</div> </div>
<div class="section" id="to-1-24-2004"> <div class="section">
<h2><a class="toc-backref" href="#id20" name="to-1-24-2004">0.9.3 (9/25/2003 to 1/24/2004)</a></h2> <h2><a class="toc-backref" href="#id20" id="to-1-24-2004" 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 <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> were lost in the confusion. I'll try to do better in the future.</p>
</div> </div>
<div class="section" id="to-9-25-2003"> <div class="section">
<h2><a class="toc-backref" href="#id21" name="to-9-25-2003">0.9.2 (5/3/2003 to 9/25/2003)</a></h2> <h2><a class="toc-backref" href="#id21" id="to-9-25-2003" name="to-9-25-2003">0.9.2 (5/3/2003 to 9/25/2003)</a></h2>
<p>Changed to the new prefix-less &quot;wx&quot; package:</p> <p>Changed to the new prefix-less &quot;wx&quot; package:</p>
<pre class="literal-block"> <pre class="literal-block">
import wx import wx
@@ -330,8 +612,8 @@ def CanPaste(self):
return stc.StyledTextCtrl.CanPaste(self) and self.CanEdit() return stc.StyledTextCtrl.CanPaste(self) and self.CanEdit()
</pre> </pre>
</div> </div>
<div class="section" id="to-5-2-2003"> <div class="section">
<h2><a class="toc-backref" href="#id22" name="to-5-2-2003">0.9.1 (3/21/2003 to 5/2/2003)</a></h2> <h2><a class="toc-backref" href="#id22" id="to-5-2-2003" 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> <p>PyCrust is dead! Long live Py!</p>
<ul class="simple"> <ul class="simple">
<li>Renamed <tt class="docutils literal"><span class="pre">PyCrust</span></tt> package to <tt class="docutils literal"><span class="pre">py</span></tt>.</li> <li>Renamed <tt class="docutils literal"><span class="pre">PyCrust</span></tt> package to <tt class="docutils literal"><span class="pre">py</span></tt>.</li>
@@ -365,8 +647,8 @@ base.</p>
The current implementation of wxSTC can now handle lists this big.</p> The current implementation of wxSTC can now handle lists this big.</p>
<p>Improved handling of <tt class="docutils literal"><span class="pre">sys.path</span></tt> to mimic the standard Python shell.</p> <p>Improved handling of <tt class="docutils literal"><span class="pre">sys.path</span></tt> to mimic the standard Python shell.</p>
</div> </div>
<div class="section" id="to-3-20-2003"> <div class="section">
<h2><a class="toc-backref" href="#id23" name="to-3-20-2003">0.9 (2/27/2003 to 3/20/2003)</a></h2> <h2><a class="toc-backref" href="#id23" id="to-3-20-2003" name="to-3-20-2003">0.9 (2/27/2003 to 3/20/2003)</a></h2>
<p>Added fontIncrease, fontDecrease, fontDefault signals, receivers and <p>Added fontIncrease, fontDecrease, fontDefault signals, receivers and
keybindings:</p> keybindings:</p>
<pre class="literal-block"> <pre class="literal-block">
@@ -397,8 +679,8 @@ except NameError:
</pre> </pre>
<p>Added <tt class="docutils literal"><span class="pre">wxd</span></tt> directory with decoration classes.</p> <p>Added <tt class="docutils literal"><span class="pre">wxd</span></tt> directory with decoration classes.</p>
</div> </div>
<div class="section" id="to-2-26-2003"> <div class="section">
<h2><a class="toc-backref" href="#id24" name="to-2-26-2003">0.8.2 (1/5/2003 to 2/26/2003)</a></h2> <h2><a class="toc-backref" href="#id24" id="to-2-26-2003" name="to-2-26-2003">0.8.2 (1/5/2003 to 2/26/2003)</a></h2>
<p>Wrapped <tt class="docutils literal"><span class="pre">sys.ps1</span></tt>, <tt class="docutils literal"><span class="pre">sys.ps2</span></tt>, and <tt class="docutils literal"><span class="pre">sys.ps3</span></tt> in <tt class="docutils literal"><span class="pre">str()</span></tt>. <p>Wrapped <tt class="docutils literal"><span class="pre">sys.ps1</span></tt>, <tt class="docutils literal"><span class="pre">sys.ps2</span></tt>, and <tt class="docutils literal"><span class="pre">sys.ps3</span></tt> in <tt class="docutils literal"><span class="pre">str()</span></tt>.
(Thanks, Kieran Holland.)</p> (Thanks, Kieran Holland.)</p>
<p>Fixed minor things found by PyChecker.</p> <p>Fixed minor things found by PyChecker.</p>
@@ -432,8 +714,8 @@ func = 3 .
</pre> </pre>
<p>More Filling!!! The namespace tree is now dynamically updated.</p> <p>More Filling!!! The namespace tree is now dynamically updated.</p>
</div> </div>
<div class="section" id="to-12-25-2002"> <div class="section">
<h2><a class="toc-backref" href="#id25" name="to-12-25-2002">0.8.1 (12/20/2002 to 12/25/2002)</a></h2> <h2><a class="toc-backref" href="#id25" id="to-12-25-2002" 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 <p>Improved keyboard handling with Autocomplete active. You can now use
Enter as well as Tab to select an item from the list.</p> 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 <p>Disabled autocomplete for lists of 2000 items or more. The current
@@ -444,8 +726,8 @@ coming directly from the source code. (Hmmm. Sounds like someone is
doing some decorating. I wonder where that would be helpful? &lt;wink&gt;)</p> doing some decorating. I wonder where that would be helpful? &lt;wink&gt;)</p>
<p>Fixed handling of icon. Added <tt class="docutils literal"><span class="pre">images.py</span></tt> file.</p> <p>Fixed handling of icon. Added <tt class="docutils literal"><span class="pre">images.py</span></tt> file.</p>
</div> </div>
<div class="section" id="to-12-16-2002"> <div class="section">
<h2><a class="toc-backref" href="#id26" name="to-12-16-2002">0.8 (10/29/2002 to 12/16/2002)</a></h2> <h2><a class="toc-backref" href="#id26" id="to-12-16-2002" name="to-12-16-2002">0.8 (10/29/2002 to 12/16/2002)</a></h2>
<p>Added &quot;help&quot; to startup banner info.</p> <p>Added &quot;help&quot; to startup banner info.</p>
<p>Made all <tt class="docutils literal"><span class="pre">wx</span></tt> and <tt class="docutils literal"><span class="pre">stc</span></tt> imports explicit. No more <tt class="docutils literal"><span class="pre">import</span> <span class="pre">*</span></tt>.</p> <p>Made all <tt class="docutils literal"><span class="pre">wx</span></tt> and <tt class="docutils literal"><span class="pre">stc</span></tt> imports explicit. No more <tt class="docutils literal"><span class="pre">import</span> <span class="pre">*</span></tt>.</p>
<p>Replaced use of the <tt class="docutils literal"><span class="pre">wx</span></tt> module's <tt class="docutils literal"><span class="pre">true</span></tt> and <tt class="docutils literal"><span class="pre">false</span></tt> with <p>Replaced use of the <tt class="docutils literal"><span class="pre">wx</span></tt> module's <tt class="docutils literal"><span class="pre">true</span></tt> and <tt class="docutils literal"><span class="pre">false</span></tt> with
@@ -471,8 +753,8 @@ Platform: linux2
<p>Added <tt class="docutils literal"><span class="pre">time.sleep()</span></tt> in <tt class="docutils literal"><span class="pre">readline()</span></tt> and <tt class="docutils literal"><span class="pre">OnIdle()</span></tt> event <p>Added <tt class="docutils literal"><span class="pre">time.sleep()</span></tt> in <tt class="docutils literal"><span class="pre">readline()</span></tt> and <tt class="docutils literal"><span class="pre">OnIdle()</span></tt> event
handler to free up the CPU.</p> handler to free up the CPU.</p>
</div> </div>
<div class="section" id="to-8-27-2002"> <div class="section">
<h2><a class="toc-backref" href="#id27" name="to-8-27-2002">0.7.2 (2/22/2002 to 8/27/2002)</a></h2> <h2><a class="toc-backref" href="#id27" id="to-8-27-2002" name="to-8-27-2002">0.7.2 (2/22/2002 to 8/27/2002)</a></h2>
<p>Tweaked <tt class="docutils literal"><span class="pre">getAttributeNames()</span></tt> to pick up a few more attributes:</p> <p>Tweaked <tt class="docutils literal"><span class="pre">getAttributeNames()</span></tt> to pick up a few more attributes:</p>
<pre class="literal-block"> <pre class="literal-block">
'__bases__', '__class__', '__dict__', '__name__', 'func_closure', '__bases__', '__class__', '__dict__', '__name__', 'func_closure',
@@ -509,8 +791,8 @@ to Raul Cota for pointing this out.</p>
boxes. Renamed <tt class="docutils literal"><span class="pre">readIn</span></tt> to <tt class="docutils literal"><span class="pre">readline</span></tt> and <tt class="docutils literal"><span class="pre">readRaw</span></tt> to boxes. Renamed <tt class="docutils literal"><span class="pre">readIn</span></tt> to <tt class="docutils literal"><span class="pre">readline</span></tt> and <tt class="docutils literal"><span class="pre">readRaw</span></tt> to
<tt class="docutils literal"><span class="pre">raw_input</span></tt>.</p> <tt class="docutils literal"><span class="pre">raw_input</span></tt>.</p>
</div> </div>
<div class="section" id="to-2-21-2002"> <div class="section">
<h2><a class="toc-backref" href="#id28" name="to-2-21-2002">0.7.1 (12/12/2001 to 2/21/2002)</a></h2> <h2><a class="toc-backref" href="#id28" id="to-2-21-2002" name="to-2-21-2002">0.7.1 (12/12/2001 to 2/21/2002)</a></h2>
<p>Fixed <tt class="docutils literal"><span class="pre">OnChar()</span></tt> issues effecting European keyboards, as reported by <p>Fixed <tt class="docutils literal"><span class="pre">OnChar()</span></tt> issues effecting European keyboards, as reported by
Jean-Michel Fauth.</p> Jean-Michel Fauth.</p>
<p>Fixed <tt class="docutils literal"><span class="pre">introspect.py</span></tt> issue with xmlrpc objects reported by Kevin <p>Fixed <tt class="docutils literal"><span class="pre">introspect.py</span></tt> issue with xmlrpc objects reported by Kevin
@@ -536,8 +818,8 @@ to insert from history - Shift+Up and Shift+Down.</p>
<p>Better call tips on objects with <tt class="docutils literal"><span class="pre">__call__</span></tt> methods.</p> <p>Better call tips on objects with <tt class="docutils literal"><span class="pre">__call__</span></tt> methods.</p>
<p>Improved call tip positioning calculation.</p> <p>Improved call tip positioning calculation.</p>
</div> </div>
<div class="section" id="to-12-11-2001"> <div class="section">
<h2><a class="toc-backref" href="#id29" name="to-12-11-2001">0.7 (10/15/2001 to 12/11/2001)</a></h2> <h2><a class="toc-backref" href="#id29" id="to-12-11-2001" 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, <p>Changed how command history retrieval functions work. Added Alt-P,
Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.</p> Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.</p>
<p>Added full support for multi-line commands, similar to IDLE.</p> <p>Added full support for multi-line commands, similar to IDLE.</p>
@@ -560,8 +842,8 @@ package/module name conflicts that kept you from doing <tt class="docutils liter
<p>Removed the <tt class="docutils literal"><span class="pre">__date__</span></tt> property from all modules.</p> <p>Removed the <tt class="docutils literal"><span class="pre">__date__</span></tt> property from all modules.</p>
<p>Fixed bug in <tt class="docutils literal"><span class="pre">introspect.getCallTip()</span></tt>, reported by Kevin Altis.</p> <p>Fixed bug in <tt class="docutils literal"><span class="pre">introspect.getCallTip()</span></tt>, reported by Kevin Altis.</p>
</div> </div>
<div class="section" id="to-10-12-2001"> <div class="section">
<h2><a class="toc-backref" href="#id30" name="to-10-12-2001">0.6.1 (9/19/2001 to 10/12/2001)</a></h2> <h2><a class="toc-backref" href="#id30" id="to-10-12-2001" name="to-10-12-2001">0.6.1 (9/19/2001 to 10/12/2001)</a></h2>
<p>Changed <tt class="docutils literal"><span class="pre">Shell.run()</span></tt> to always position to the end of existing <p>Changed <tt class="docutils literal"><span class="pre">Shell.run()</span></tt> to always position to the end of existing
text, as suggested by Raul Cota.</p> text, as suggested by Raul Cota.</p>
<p>Changed <tt class="docutils literal"><span class="pre">introspect.getAllAttributeNames()</span></tt> to break circular <p>Changed <tt class="docutils literal"><span class="pre">introspect.getAllAttributeNames()</span></tt> to break circular
@@ -578,8 +860,8 @@ platform where the font was 2 points larger than what was specified.</p>
ZODB objects that are asleep - in a &quot;ghost&quot; state. Otherwise it ZODB objects that are asleep - in a &quot;ghost&quot; state. Otherwise it
returns incomplete info.</p> returns incomplete info.</p>
</div> </div>
<div class="section" id="to-9-12-2001"> <div class="section">
<h2><a class="toc-backref" href="#id31" name="to-9-12-2001">0.6 (8/21/2001 to 9/12/2001)</a></h2> <h2><a class="toc-backref" href="#id31" id="to-9-12-2001" name="to-9-12-2001">0.6 (8/21/2001 to 9/12/2001)</a></h2>
<p>Added <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt> and <tt class="docutils literal"><span class="pre">filling.py</span></tt>.</p> <p>Added <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt> and <tt class="docutils literal"><span class="pre">filling.py</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">PyShell.py</span></tt> and <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt> can now be run standalone, as well <p><tt class="docutils literal"><span class="pre">PyShell.py</span></tt> and <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt> can now be run standalone, as well
as <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt>.</p> as <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt>.</p>
@@ -599,8 +881,8 @@ sys.path.insert(0, os.curdir)
</pre> </pre>
<p>Added support for distutils installations.</p> <p>Added support for distutils installations.</p>
</div> </div>
<div class="section" id="to-8-20-2001"> <div class="section">
<h2><a class="toc-backref" href="#id32" name="to-8-20-2001">0.5.4 (8/17/2001 to 8/20/2001)</a></h2> <h2><a class="toc-backref" href="#id32" id="to-8-20-2001" 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> <p>Changed default font size under Linux to:</p>
<pre class="literal-block"> <pre class="literal-block">
'size' : 12, 'size' : 12,
@@ -617,15 +899,15 @@ demo.</p>
<p>Split <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> into <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> and <tt class="docutils literal"><span class="pre">PyShell.py</span></tt> in <p>Split <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> into <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> and <tt class="docutils literal"><span class="pre">PyShell.py</span></tt> in
anticipation of <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt>.</p> anticipation of <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt>.</p>
</div> </div>
<div class="section" id="id2"> <div class="section">
<h2><a class="toc-backref" href="#id33" name="id2">0.5.3 (8/16/2001)</a></h2> <h2><a class="toc-backref" href="#id33" id="id2" name="id2">0.5.3 (8/16/2001)</a></h2>
<p>Added patch to <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> to fix wxPython bug:</p> <p>Added patch to <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> to fix wxPython bug:</p>
<pre class="literal-block"> <pre class="literal-block">
wxID_SELECTALL = NewId() # This *should* be defined by wxPython. wxID_SELECTALL = NewId() # This *should* be defined by wxPython.
</pre> </pre>
</div> </div>
<div class="section" id="to-8-15-2001"> <div class="section">
<h2><a class="toc-backref" href="#id34" name="to-8-15-2001">0.5.2 (8/14/2001 to 8/15/2001)</a></h2> <h2><a class="toc-backref" href="#id34" id="to-8-15-2001" name="to-8-15-2001">0.5.2 (8/14/2001 to 8/15/2001)</a></h2>
<p>Shortened module names by dropping &quot;PyCrust&quot; as a prefix.</p> <p>Shortened module names by dropping &quot;PyCrust&quot; as a prefix.</p>
<p>Changed <tt class="docutils literal"><span class="pre">version</span></tt> to <tt class="docutils literal"><span class="pre">VERSION</span></tt> in <tt class="docutils literal"><span class="pre">version</span></tt> module.</p> <p>Changed <tt class="docutils literal"><span class="pre">version</span></tt> to <tt class="docutils literal"><span class="pre">VERSION</span></tt> in <tt class="docutils literal"><span class="pre">version</span></tt> module.</p>
<p>Added Options menu to PyCrust application.</p> <p>Added Options menu to PyCrust application.</p>
@@ -635,8 +917,8 @@ There just wasn't enough non-gui code to justify the separation.
Plus, Shell will be much easier for gui toolkits/designers to deal Plus, Shell will be much easier for gui toolkits/designers to deal
with now.</p> with now.</p>
</div> </div>
<div class="section" id="to-8-14-2001"> <div class="section">
<h2><a class="toc-backref" href="#id35" name="to-8-14-2001">0.5.1 (8/10/2001 to 8/14/2001)</a></h2> <h2><a class="toc-backref" href="#id35" id="to-8-14-2001" name="to-8-14-2001">0.5.1 (8/10/2001 to 8/14/2001)</a></h2>
<p>Added <tt class="docutils literal"><span class="pre">introspect</span></tt> module.</p> <p>Added <tt class="docutils literal"><span class="pre">introspect</span></tt> module.</p>
<p>Moved some functionality from <tt class="docutils literal"><span class="pre">PyCrustInterp</span></tt> to <tt class="docutils literal"><span class="pre">introspect</span></tt>.</p> <p>Moved some functionality from <tt class="docutils literal"><span class="pre">PyCrustInterp</span></tt> to <tt class="docutils literal"><span class="pre">introspect</span></tt>.</p>
<p>Changed <tt class="docutils literal"><span class="pre">introspect.getRoot()</span></tt> to no longer remove whitespace from <p>Changed <tt class="docutils literal"><span class="pre">introspect.getRoot()</span></tt> to no longer remove whitespace from
@@ -687,32 +969,32 @@ exclude one or the other or both with:</p>
&gt;&gt;&gt; shell.editor.autoCompleteExcludeDouble = 1 &gt;&gt;&gt; shell.editor.autoCompleteExcludeDouble = 1
</pre> </pre>
</div> </div>
<div class="section" id="id3"> <div class="section">
<h2><a class="toc-backref" href="#id36" name="id3">0.5 (8/8/2001)</a></h2> <h2><a class="toc-backref" href="#id36" id="id3" name="id3">0.5 (8/8/2001)</a></h2>
<p>Mostly just a final version change before creating a release.</p> <p>Mostly just a final version change before creating a release.</p>
</div> </div>
<div class="section" id="to-8-7-2001"> <div class="section">
<h2><a class="toc-backref" href="#id37" name="to-8-7-2001">0.4 (8/4/2001 to 8/7/2001)</a></h2> <h2><a class="toc-backref" href="#id37" id="to-8-7-2001" name="to-8-7-2001">0.4 (8/4/2001 to 8/7/2001)</a></h2>
<p>Changed version/revision handling.</p> <p>Changed version/revision handling.</p>
<p>Fixed bugs.</p> <p>Fixed bugs.</p>
</div> </div>
<div class="section" id="to-8-3-2001"> <div class="section">
<h2><a class="toc-backref" href="#id38" name="to-8-3-2001">0.3 (8/2/2001 to 8/3/2001)</a></h2> <h2><a class="toc-backref" href="#id38" id="to-8-3-2001" name="to-8-3-2001">0.3 (8/2/2001 to 8/3/2001)</a></h2>
<p>Removed lots of cruft.</p> <p>Removed lots of cruft.</p>
<p>Added lots of docstrings.</p> <p>Added lots of docstrings.</p>
<p>Imported to CVS repository at SourceForge.</p> <p>Imported to CVS repository at SourceForge.</p>
<p>Added call tips.</p> <p>Added call tips.</p>
</div> </div>
<div class="section" id="to-8-2-2001"> <div class="section">
<h2><a class="toc-backref" href="#id39" name="to-8-2-2001">0.2 (7/30/2001 to 8/2/2001)</a></h2> <h2><a class="toc-backref" href="#id39" id="to-8-2-2001" name="to-8-2-2001">0.2 (7/30/2001 to 8/2/2001)</a></h2>
<p>Renamed several files.</p> <p>Renamed several files.</p>
<p>Added command autocompletion.</p> <p>Added command autocompletion.</p>
<p>Added menus to PyCrust.py: File, Edit and Help.</p> <p>Added menus to PyCrust.py: File, Edit and Help.</p>
<p>Added sample applications: <tt class="docutils literal"><span class="pre">PyCrustAlaCarte.py</span></tt>, <p>Added sample applications: <tt class="docutils literal"><span class="pre">PyCrustAlaCarte.py</span></tt>,
<tt class="docutils literal"><span class="pre">PyCrustAlaMode.py</span></tt>, and <tt class="docutils literal"><span class="pre">PyCrustMinimus.py</span></tt>.</p> <tt class="docutils literal"><span class="pre">PyCrustAlaMode.py</span></tt>, and <tt class="docutils literal"><span class="pre">PyCrustMinimus.py</span></tt>.</p>
</div> </div>
<div class="section" id="to-7-19-2001"> <div class="section">
<h2><a class="toc-backref" href="#id40" name="to-7-19-2001">0.1 (7/1/2001 to 7/19/2001)</a></h2> <h2><a class="toc-backref" href="#id40" id="to-7-19-2001" 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 basic syntax coloring much like Boa.</p>
<p>Added read-only logging much like IDLE.</p> <p>Added read-only logging much like IDLE.</p>
<p>Can retrieve a previous command by putting the cursor back on that <p>Can retrieve a previous command by putting the cursor back on that
@@ -724,8 +1006,8 @@ response.</p>
<p>Home key honors the prompt.</p> <p>Home key honors the prompt.</p>
<p>Created SourceForge account, but nothing was posted.</p> <p>Created SourceForge account, but nothing was posted.</p>
</div> </div>
<div class="section" id="in-the-beginning-there-was-pie-7-1-2001"> <div class="section">
<h2><a class="toc-backref" href="#id41" name="in-the-beginning-there-was-pie-7-1-2001">In the beginning, there was pie... (7/1/2001)</a></h2> <h2><a class="toc-backref" href="#id41" id="in-the-beginning-there-was-pie-7-1-2001" 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 <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 frustrated with their dissimilarities, and began to let everyone know
how I felt. At the same time, Scintilla looked like an interesting how I felt. At the same time, Scintilla looked like an interesting

View File

@@ -3,14 +3,296 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title></title> <title></title>
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document"> <div class="document">
<div class="section" id="wxpython-readme"> <div class="section">
<h1><a name="wxpython-readme">wxPython README</a></h1> <h1><a id="wxpython-readme" name="wxpython-readme">wxPython README</a></h1>
<p>Welcome to the wonderful world of wxPython!</p> <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 <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 and use its source code to help you learn how to use wxPython. Most
@@ -38,8 +320,8 @@ easily be able to &quot;mentally translate&quot; from the C++ shown into Python.
for a little help on this process.) Not all classes documented are for a little help on this process.) Not all classes documented are
available in Python, but most of the GUI related classes are.</p> available in Python, but most of the GUI related classes are.</p>
</div> </div>
<div class="section" id="other-info"> <div class="section">
<h1><a name="other-info">Other Info</a></h1> <h1><a id="other-info" name="other-info">Other Info</a></h1>
<p>Please also see the following files:</p> <p>Please also see the following files:</p>
<blockquote> <blockquote>
<dl class="docutils"> <dl class="docutils">

View File

@@ -3,13 +3,295 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The wxPython wx Package</title> <title>The wxPython wx Package</title>
<meta name="author" content="Patrick K. O'Brien" /> <meta name="author" content="Patrick K. O'Brien" />
<meta name="author" content="Robin Dunn" /> <meta name="author" content="Robin Dunn" />
<meta name="organization" content="Orbtech" /> <meta name="organization" content="Orbtech" />
<meta name="date" content="2004-03-26" /> <meta name="date" content="2004-03-26" />
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document" id="the-wxpython-wx-package"> <div class="document" id="the-wxpython-wx-package">
@@ -33,8 +315,8 @@
<td>1.4</td></tr> <td>1.4</td></tr>
</tbody> </tbody>
</table> </table>
<div class="contents topic" id="contents"> <div class="contents topic">
<p class="topic-title first"><a name="contents">Contents</a></p> <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="#introduction" id="id2" name="id2">Introduction</a></li> <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="#why-change-anything" id="id3" name="id3">Why change anything?</a></li>
@@ -46,8 +328,8 @@
<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> <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> </ul>
</div> </div>
<div class="section" id="introduction"> <div class="section">
<h1><a class="toc-backref" href="#id2" name="introduction">Introduction</a></h1> <h1><a class="toc-backref" href="#id2" id="introduction" name="introduction">Introduction</a></h1>
<p>In the begining there was Python, and Python had modules, and Python <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 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 needed organizational assistance, and so Guido took code from Python's
@@ -69,8 +351,8 @@ 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 <a class="reference" href="MigrationGuide.html">2.5 Migration Guide</a> to see notes about other big differences in
this release.</p> this release.</p>
</div> </div>
<div class="section" id="why-change-anything"> <div class="section">
<h1><a class="toc-backref" href="#id3" name="why-change-anything">Why change anything?</a></h1> <h1><a class="toc-backref" href="#id3" id="why-change-anything" name="why-change-anything">Why change anything?</a></h1>
<p>This change is being made for a couple of reasons. The first reason <p>This change is being made for a couple of reasons. The first reason
is to discourage the use of <tt class="docutils literal"><span class="pre">import</span> <span class="pre">*</span></tt>, which is a dangerous is to discourage the use of <tt class="docutils 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> technique that can create name conflicts and bloated namespaces.</p>
@@ -93,8 +375,8 @@ class Frame(wx.Frame)
the same thing (implement a new wx namespace and drop the &quot;wx&quot; prefix) the same thing (implement a new wx namespace and drop the &quot;wx&quot; prefix)
and we want wxPython to lead the way.</p> and we want wxPython to lead the way.</p>
</div> </div>
<div class="section" id="what-does-the-new-wx-package-do"> <div class="section">
<h1><a class="toc-backref" href="#id4" name="what-does-the-new-wx-package-do">What does the new wx package do?</a></h1> <h1><a class="toc-backref" href="#id4" id="what-does-the-new-wx-package-do" 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 <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 getting to this new syntax as quickly as possible. It would import
the old names (like &quot;wxFrame&quot;) from the old package and then create new the old names (like &quot;wxFrame&quot;) from the old package and then create new
@@ -108,8 +390,8 @@ populated with modules that simply import the new names and then
complicated, but it is mostly automated and so it doesn't cause complicated, but it is mostly automated and so it doesn't cause
problems in most cases.</p> problems in most cases.</p>
</div> </div>
<div class="section" id="will-any-of-this-effect-my-existing-code"> <div class="section">
<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> <h1><a class="toc-backref" href="#id5" id="will-any-of-this-effect-my-existing-code" 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 <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 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. But all new documentation and code examples will use the new
@@ -123,24 +405,24 @@ 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 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> <a class="reference" href="MigrationGuide.html">Migration Guide</a> for more details.</p>
</div> </div>
<div class="section" id="what-about-all-the-other-modules-like-grid-html-and-stc"> <div class="section">
<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> <h1><a class="toc-backref" href="#id6" id="what-about-all-the-other-modules-like-grid-html-and-stc" 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. <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 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 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 package and reverse-renamers have been placed in the wxPython package
as needed.</p> as needed.</p>
</div> </div>
<div class="section" id="how-do-i-use-this-new-wx-package"> <div class="section">
<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> <h1><a class="toc-backref" href="#id7" id="how-do-i-use-this-new-wx-package" 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 <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> version 2.4.1 or higher. So all you have to do is:</p>
<pre class="literal-block"> <pre class="literal-block">
import wx import wx
</pre> </pre>
</div> </div>
<div class="section" id="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package"> <div class="section">
<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> <h1><a class="toc-backref" href="#id8" id="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package" 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> <p>Obviously, you need to change your import statements from:</p>
<pre class="literal-block"> <pre class="literal-block">
from wxPython import wx from wxPython import wx
@@ -161,8 +443,8 @@ class MyFrame(wx.Frame):
<p>In most cases, existing code can be modified with a simple search and <p>In most cases, existing code can be modified with a simple search and
replace.</p> replace.</p>
</div> </div>
<div class="section" id="where-can-i-find-example-programs-using-the-new-wx-syntax"> <div class="section">
<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> <h1><a class="toc-backref" href="#id9" id="where-can-i-find-example-programs-using-the-new-wx-syntax" 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>The wxPython demo application and most of the sample apps have been <p>The wxPython demo application and most of the sample apps have been
converted to use the new <tt class="docutils literal"><span class="pre">import</span> <span class="pre">wx</span></tt> style of programming with converted to use the new <tt class="docutils literal"><span class="pre">import</span> <span class="pre">wx</span></tt> style of programming with
wxPython, so there are lots of examples to look at and to play with. wxPython, so there are lots of examples to look at and to play with.

View File

@@ -3,12 +3,294 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The wxPython Manual</title> <title>The wxPython Manual</title>
<meta name="author" content="Patrick K. O'Brien" /> <meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" /> <meta name="organization" content="Orbtech" />
<meta name="date" content="2004-03-26" /> <meta name="date" content="2004-03-26" />
<link rel="stylesheet" href="default.css" type="text/css" /> <style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head> </head>
<body> <body>
<div class="document" id="the-wxpython-manual"> <div class="document" id="the-wxpython-manual">
@@ -32,8 +314,8 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div class="contents topic" id="contents"> <div class="contents topic">
<p class="topic-title first"><a name="contents">Contents</a></p> <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li> <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="#what-is-wxpython" id="id2" name="id2">What is wxPython?</a></li>
@@ -93,8 +375,8 @@
<li><a class="reference" href="#license" id="id46" name="id46">License</a></li> <li><a class="reference" href="#license" id="id46" name="id46">License</a></li>
</ul> </ul>
</div> </div>
<div class="section" id="introduction"> <div class="section">
<h1><a class="toc-backref" href="#id1" name="introduction">Introduction</a></h1> <h1><a class="toc-backref" href="#id1" id="introduction" name="introduction">Introduction</a></h1>
<p>This is a guide to the wxPython GUI toolkit, written <strong>by</strong> a Python <p>This is a guide to the wxPython GUI toolkit, written <strong>by</strong> a Python
programmer <strong>for</strong> his fellow Python programmers. It began as a programmer <strong>for</strong> his fellow Python programmers. It began as a
simple translation of the wxWidgets documentation (which is written simple translation of the wxWidgets documentation (which is written
@@ -108,8 +390,8 @@ beans, dark chocolate, and large denomination currency. Better yet,
buy huge quantities of my wxPython book (written with Robin Dunn) and buy huge quantities of my wxPython book (written with Robin Dunn) and
send one to each of your friends, relatives, and coworkers.</p> send one to each of your friends, relatives, and coworkers.</p>
</div> </div>
<div class="section" id="what-is-wxpython"> <div class="section">
<h1><a class="toc-backref" href="#id2" name="what-is-wxpython">What is wxPython?</a></h1> <h1><a class="toc-backref" href="#id2" id="what-is-wxpython" name="what-is-wxpython">What is wxPython?</a></h1>
<p>wxPython is a GUI toolkit for the Python programming language. It <p>wxPython is a GUI toolkit for the Python programming language. It
allows Python programmers to create programs with a robust, highly allows Python programmers to create programs with a robust, highly
functional graphical user interface, simply and easily. It is functional graphical user interface, simply and easily. It is
@@ -126,19 +408,19 @@ or unix-like systems, and Macintosh OS X.</p>
<p>Since the language is Python, wxPython programs are simple, easy to <p>Since the language is Python, wxPython programs are simple, easy to
write and easy to understand.</p> write and easy to understand.</p>
</div> </div>
<div class="section" id="wxpython-requirements"> <div class="section">
<h1><a class="toc-backref" href="#id3" name="wxpython-requirements">wxPython requirements</a></h1> <h1><a class="toc-backref" href="#id3" id="wxpython-requirements" name="wxpython-requirements">wxPython requirements</a></h1>
<p>To make use of wxPython, you currently need one of the following <p>To make use of wxPython, you currently need one of the following
setups.</p> setups.</p>
<div class="section" id="ms-windows"> <div class="section">
<h2><a class="toc-backref" href="#id4" name="ms-windows">MS-Windows</a></h2> <h2><a class="toc-backref" href="#id4" id="ms-windows" name="ms-windows">MS-Windows</a></h2>
<ul class="simple"> <ul class="simple">
<li>A 486 or higher PC running MS Windows.</li> <li>A 486 or higher PC running MS Windows.</li>
<li>At least ?? MB of disk space.</li> <li>At least ?? MB of disk space.</li>
</ul> </ul>
</div> </div>
<div class="section" id="linux-or-unix"> <div class="section">
<h2><a class="toc-backref" href="#id5" name="linux-or-unix">Linux or Unix</a></h2> <h2><a class="toc-backref" href="#id5" id="linux-or-unix" name="linux-or-unix">Linux or Unix</a></h2>
<ul class="simple"> <ul class="simple">
<li>Almost any C++ compiler, including GNU C++ (EGCS 1.1.1 or above).</li> <li>Almost any C++ compiler, including GNU C++ (EGCS 1.1.1 or above).</li>
<li>Almost any Unix workstation, and one of: GTK+ 1.2, GTK+ 2.0, Motif <li>Almost any Unix workstation, and one of: GTK+ 1.2, GTK+ 2.0, Motif
@@ -146,16 +428,16 @@ setups.</p>
<li>At least ?? MB of disk space.</li> <li>At least ?? MB of disk space.</li>
</ul> </ul>
</div> </div>
<div class="section" id="mac-os-x"> <div class="section">
<h2><a class="toc-backref" href="#id6" name="mac-os-x">Mac OS X</a></h2> <h2><a class="toc-backref" href="#id6" id="mac-os-x" name="mac-os-x">Mac OS X</a></h2>
<ul class="simple"> <ul class="simple">
<li>A PowerPC Mac running Mac OS X 10.x.</li> <li>A PowerPC Mac running Mac OS X 10.x.</li>
<li>At least ?? MB of disk space.</li> <li>At least ?? MB of disk space.</li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="section" id="what-is-wxwidgets"> <div class="section">
<h1><a class="toc-backref" href="#id7" name="what-is-wxwidgets">What is wxWidgets?</a></h1> <h1><a class="toc-backref" href="#id7" id="what-is-wxwidgets" name="what-is-wxwidgets">What is wxWidgets?</a></h1>
<p>wxWidgets is a C++ framework providing GUI (Graphical User Interface) <p>wxWidgets is a C++ framework providing GUI (Graphical User Interface)
and other facilities on more than one platform. Version 2 currently and other facilities on more than one platform. Version 2 currently
supports all desktop versions of MS Windows, Unix with GTK+, Unix with supports all desktop versions of MS Windows, Unix with GTK+, Unix with
@@ -169,8 +451,8 @@ Roebling, Vadim Zeitlin, Vaclav Slavik and many others.</p>
platforms related to Microsoft Windows, including 16-bit and 32-bit platforms related to Microsoft Windows, including 16-bit and 32-bit
variants, unless otherwise stated. All trademarks are acknowledged.</p> variants, unless otherwise stated. All trademarks are acknowledged.</p>
</div> </div>
<div class="section" id="why-another-cross-platform-development-tool"> <div class="section">
<h1><a class="toc-backref" href="#id8" name="why-another-cross-platform-development-tool">Why another cross-platform development tool?</a></h1> <h1><a class="toc-backref" href="#id8" id="why-another-cross-platform-development-tool" name="why-another-cross-platform-development-tool">Why another cross-platform development tool?</a></h1>
<p>wxWidgets was developed to provide a cheap and flexible way to <p>wxWidgets was developed to provide a cheap and flexible way to
maximize investment in GUI application development. While a number of maximize investment in GUI application development. While a number of
commercial class libraries already existed for cross-platform commercial class libraries already existed for cross-platform
@@ -244,8 +526,8 @@ the clipboard.</li>
PNM, PCX).</li> PNM, PCX).</li>
</ul> </ul>
</div> </div>
<div class="section" id="wxpython-overview"> <div class="section">
<h1><a class="toc-backref" href="#id9" name="wxpython-overview">wxPython Overview</a></h1> <h1><a class="toc-backref" href="#id9" id="wxpython-overview" name="wxpython-overview">wxPython Overview</a></h1>
<p>To set a wxPython application going, you will need to derive an App <p>To set a wxPython application going, you will need to derive an App
class and override App.OnInit.</p> class and override App.OnInit.</p>
<p>An application must have a top-level Frame or Dialog window. Each <p>An application must have a top-level Frame or Dialog window. Each
@@ -291,14 +573,14 @@ PathList. There's a miscellany of operating system and other
functions.</p> functions.</p>
<p>See also Classes by Category for a list of classes.</p> <p>See also Classes by Category for a list of classes.</p>
</div> </div>
<div class="section" id="utilities-and-libraries-supplied-with-wxpython"> <div class="section">
<h1><a class="toc-backref" href="#id10" name="utilities-and-libraries-supplied-with-wxpython">Utilities and libraries supplied with wxPython</a></h1> <h1><a class="toc-backref" href="#id10" id="utilities-and-libraries-supplied-with-wxpython" name="utilities-and-libraries-supplied-with-wxpython">Utilities and libraries supplied with wxPython</a></h1>
<p>In addition to the core wxWidgets library, a number of further <p>In addition to the core wxWidgets library, a number of further
libraries and utilities are supplied with each distribution.</p> libraries and utilities are supplied with each distribution.</p>
<p>[Need to list these.]</p> <p>[Need to list these.]</p>
</div> </div>
<div class="section" id="creating-and-deleting-wxpython-objects"> <div class="section">
<h1><a class="toc-backref" href="#id11" name="creating-and-deleting-wxpython-objects">Creating and deleting wxPython objects</a></h1> <h1><a class="toc-backref" href="#id11" id="creating-and-deleting-wxpython-objects" name="creating-and-deleting-wxpython-objects">Creating and deleting wxPython objects</a></h1>
<p>[This section needs to be reviewed.]</p> <p>[This section needs to be reviewed.]</p>
<!-- In general, classes derived from wxWindow must dynamically <!-- In general, classes derived from wxWindow must dynamically
allocated with new and deleted with delete. If you delete a window, allocated with new and deleted with delete. If you delete a window,
@@ -323,11 +605,11 @@ wxDC::SelectObject(wxNullBitmap) before deleting a drawing object
that may be in use. Code that doesn't do this will probably work that may be in use. Code that doesn't do this will probably work
fine on some platforms, and then fail under Windows. --> fine on some platforms, and then fail under Windows. -->
</div> </div>
<div class="section" id="app-overview"> <div class="section">
<h1><a class="toc-backref" href="#id12" name="app-overview">App overview</a></h1> <h1><a class="toc-backref" href="#id12" id="app-overview" name="app-overview">App overview</a></h1>
<p>Classes: wx.App</p> <p>Classes: wx.App</p>
<div class="section" id="application-initialization"> <div class="section">
<h2><a class="toc-backref" href="#id13" name="application-initialization">Application initialization</a></h2> <h2><a class="toc-backref" href="#id13" id="application-initialization" name="application-initialization">Application initialization</a></h2>
<p>The OnInit method defined for a class derived from wx.App will usually <p>The OnInit method defined for a class derived from wx.App will usually
create a top window as a bare minimum.</p> create a top window as a bare minimum.</p>
<p>OnInit must return a boolean value to indicate whether processing <p>OnInit must return a boolean value to indicate whether processing
@@ -365,8 +647,8 @@ if __name__ == '__main__':
main() main()
</pre> </pre>
</div> </div>
<div class="section" id="application-shutdown"> <div class="section">
<h2><a class="toc-backref" href="#id14" name="application-shutdown">Application shutdown</a></h2> <h2><a class="toc-backref" href="#id14" id="application-shutdown" name="application-shutdown">Application shutdown</a></h2>
<p>The application normally shuts down when the last of its top level <p>The application normally shuts down when the last of its top level
windows is closed. This is normally the expected behaviour and means windows is closed. This is normally the expected behaviour and means
that it is enough to call Close() in response to the &quot;Exit&quot; menu that it is enough to call Close() in response to the &quot;Exit&quot; menu
@@ -385,8 +667,8 @@ created by the time OnExit finishes.</p>
<p>[Need examples of objects needing cleanup to keep app from crashing.]</p> <p>[Need examples of objects needing cleanup to keep app from crashing.]</p>
</div> </div>
</div> </div>
<div class="section" id="sizer-overview"> <div class="section">
<h1><a class="toc-backref" href="#id15" name="sizer-overview">Sizer overview</a></h1> <h1><a class="toc-backref" href="#id15" id="sizer-overview" name="sizer-overview">Sizer overview</a></h1>
<p>Classes: wx.Sizer, wx.GridSizer, wx.FlexGridSizer, wx.BoxSizer, <p>Classes: wx.Sizer, wx.GridSizer, wx.FlexGridSizer, wx.BoxSizer,
wx.StaticBoxSizer, wx.NotebookSizer, wx.CreateButtonSizer</p> wx.StaticBoxSizer, wx.NotebookSizer, wx.CreateButtonSizer</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
@@ -425,8 +707,8 @@ individual controls. Editors such as wxDesigner, wxrcedit, XRCed and
wxWorkshop create dialogs based exclusively on sizers, practically wxWorkshop create dialogs based exclusively on sizers, practically
forcing the user to create platform independent layouts without forcing the user to create platform independent layouts without
compromises.</p> compromises.</p>
<div class="section" id="the-idea-behind-sizers"> <div class="section">
<h2><a class="toc-backref" href="#id16" name="the-idea-behind-sizers">The idea behind sizers</a></h2> <h2><a class="toc-backref" href="#id16" id="the-idea-behind-sizers" name="the-idea-behind-sizers">The idea behind sizers</a></h2>
<p>The layout algorithm used by sizers in wxPython is closely related to <p>The layout algorithm used by sizers in wxPython is closely related to
layout systems in other GUI toolkits, such as Java's AWT, the GTK layout systems in other GUI toolkits, such as Java's AWT, the GTK
toolkit or the Qt toolkit. It is based upon the idea of individual toolkit or the Qt toolkit. It is based upon the idea of individual
@@ -453,15 +735,15 @@ in a dialog or it fulfils a special task such as wrapping a static box
around a dialog item (or another sizer). These sizers will be around a dialog item (or another sizer). These sizers will be
discussed one by one in the text below.</p> discussed one by one in the text below.</p>
</div> </div>
<div class="section" id="common-features"> <div class="section">
<h2><a class="toc-backref" href="#id17" name="common-features">Common features</a></h2> <h2><a class="toc-backref" href="#id17" id="common-features" name="common-features">Common features</a></h2>
<p>All sizers are containers, that is, they are used to lay out one <p>All sizers are containers, that is, they are used to lay out one
dialog item (or several dialog items), which they contain. Such items dialog item (or several dialog items), which they contain. Such items
are sometimes referred to as the children of the sizer. Independent are sometimes referred to as the children of the sizer. Independent
of how the individual sizers lay out their children, all children have of how the individual sizers lay out their children, all children have
certain features in common:</p> certain features in common:</p>
<div class="section" id="a-minimal-size"> <div class="section">
<h3><a class="toc-backref" href="#id18" name="a-minimal-size">A minimal size</a></h3> <h3><a class="toc-backref" href="#id18" id="a-minimal-size" name="a-minimal-size">A minimal size</a></h3>
<p>This minimal size is usually identical to the initial size of the <p>This minimal size is usually identical to the initial size of the
controls and may either be set explicitly in the size field of the controls and may either be set explicitly in the size field of the
control constructor or may be calculated by wxPython, typically by control constructor or may be calculated by wxPython, typically by
@@ -472,8 +754,8 @@ thus require an explicit size. Some controls can calculate their
height, but not their width (e.g. a single line text control):</p> height, but not their width (e.g. a single line text control):</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="a-border"> <div class="section">
<h3><a class="toc-backref" href="#id19" name="a-border">A border</a></h3> <h3><a class="toc-backref" href="#id19" id="a-border" name="a-border">A border</a></h3>
<p>The border is just empty space and is used to separate dialog items in <p>The border is just empty space and is used to separate dialog items in
a dialog. This border can either be all around, or at any combination a dialog. This border can either be all around, or at any combination
of sides such as only above and below the control. The thickness of of sides such as only above and below the control. The thickness of
@@ -482,8 +764,8 @@ samples show dialogs with only one dialog item (a button) and a border
of 0, 5, and 10 pixels around the button:</p> of 0, 5, and 10 pixels around the button:</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="an-alignment"> <div class="section">
<h3><a class="toc-backref" href="#id20" name="an-alignment">An alignment</a></h3> <h3><a class="toc-backref" href="#id20" id="an-alignment" name="an-alignment">An alignment</a></h3>
<p>Often, a dialog item is given more space than its minimal size plus <p>Often, a dialog item is given more space than its minimal size plus
its border. Depending on what flags are used for the respective dialog its border. Depending on what flags are used for the respective dialog
item, the dialog item can be made to fill out the available space item, the dialog item can be made to fill out the available space
@@ -494,8 +776,8 @@ three buttons in a horizontal box sizer; one button is centred, one is
aligned at the top, one is aligned at the bottom:</p> aligned at the top, one is aligned at the bottom:</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="a-stretch-factor"> <div class="section">
<h3><a class="toc-backref" href="#id21" name="a-stretch-factor">A stretch factor</a></h3> <h3><a class="toc-backref" href="#id21" id="a-stretch-factor" name="a-stretch-factor">A stretch factor</a></h3>
<p>If a sizer contains more than one child and it is offered more space <p>If a sizer contains more than one child and it is offered more space
than its children and their borders need, the question arises how to than its children and their borders need, the question arises how to
distribute the surplus space among the children. For this purpose, a distribute the surplus space among the children. For this purpose, a
@@ -513,8 +795,8 @@ have a stretch factor of zero and keep their initial width:</p>
<p>Within wxDesigner, this stretch factor gets set from the Option menu.</p> <p>Within wxDesigner, this stretch factor gets set from the Option menu.</p>
</div> </div>
</div> </div>
<div class="section" id="boxsizer"> <div class="section">
<h2><a class="toc-backref" href="#id22" name="boxsizer">BoxSizer</a></h2> <h2><a class="toc-backref" href="#id22" id="boxsizer" name="boxsizer">BoxSizer</a></h2>
<p>BoxSizer can lay out its children either vertically or horizontally, <p>BoxSizer can lay out its children either vertically or horizontally,
depending on what flag is being used in its constructor. When using a depending on what flag is being used in its constructor. When using a
vertical sizer, each child can be centered, aligned to the right or vertical sizer, each child can be centered, aligned to the right or
@@ -527,14 +809,14 @@ horizontally. The following sample shows the same dialog as in the
last sample, only the box sizer is a vertical box sizer now:</p> last sample, only the box sizer is a vertical box sizer now:</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="staticboxsizer"> <div class="section">
<h2><a class="toc-backref" href="#id23" name="staticboxsizer">StaticBoxSizer</a></h2> <h2><a class="toc-backref" href="#id23" id="staticboxsizer" name="staticboxsizer">StaticBoxSizer</a></h2>
<p>StaticBoxSixer is the same as a BoxSizer, but surrounded by a static <p>StaticBoxSixer is the same as a BoxSizer, but surrounded by a static
box. Here is a sample:</p> box. Here is a sample:</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="gridsizer"> <div class="section">
<h2><a class="toc-backref" href="#id24" name="gridsizer">GridSizer</a></h2> <h2><a class="toc-backref" href="#id24" id="gridsizer" name="gridsizer">GridSizer</a></h2>
<p>GridSizer is a two-dimensional sizer. All children are given the same <p>GridSizer is a two-dimensional sizer. All children are given the same
size, which is the minimal size required by the biggest child, in this size, which is the minimal size required by the biggest child, in this
case the text control in the left bottom border. Either the number of case the text control in the left bottom border. Either the number of
@@ -542,8 +824,8 @@ columns or the number or rows is fixed and the grid sizer will grow in
the respectively other orientation if new children are added:</p> the respectively other orientation if new children are added:</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="flexgridsizer"> <div class="section">
<h2><a class="toc-backref" href="#id25" name="flexgridsizer">FlexGridSizer</a></h2> <h2><a class="toc-backref" href="#id25" id="flexgridsizer" name="flexgridsizer">FlexGridSizer</a></h2>
<p>Another two-dimensional sizer derived from GridSizer. The width of <p>Another two-dimensional sizer derived from GridSizer. The width of
each column and the height of each row are calculated individually each column and the height of each row are calculated individually
according the minimal requirements from the respectively biggest according the minimal requirements from the respectively biggest
@@ -553,16 +835,16 @@ it requested. The following sample shows the same dialog as the one
above, but using a flex grid sizer:</p> above, but using a flex grid sizer:</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="notebooksizer"> <div class="section">
<h2><a class="toc-backref" href="#id26" name="notebooksizer">NotebookSizer</a></h2> <h2><a class="toc-backref" href="#id26" id="notebooksizer" name="notebooksizer">NotebookSizer</a></h2>
<p>NotebookSizer can be used with notebooks. It calculates the size of <p>NotebookSizer can be used with notebooks. It calculates the size of
each notebook page and sets the size of the notebook to the size of each notebook page and sets the size of the notebook to the size of
the biggest page plus some extra space required for the notebook tabs the biggest page plus some extra space required for the notebook tabs
and decorations.</p> and decorations.</p>
<p>[Need graphics]</p> <p>[Need graphics]</p>
</div> </div>
<div class="section" id="programming-with-boxsizer"> <div class="section">
<h2><a class="toc-backref" href="#id27" name="programming-with-boxsizer">Programming with BoxSizer</a></h2> <h2><a class="toc-backref" href="#id27" id="programming-with-boxsizer" name="programming-with-boxsizer">Programming with BoxSizer</a></h2>
<p>The basic idea behind a BoxSizer is that windows will most often be <p>The basic idea behind a BoxSizer is that windows will most often be
laid out in rather simple basic geometry, typically in a row or a laid out in rather simple basic geometry, typically in a row or a
column or several hierarchies of either.</p> column or several hierarchies of either.</p>
@@ -615,16 +897,16 @@ that the entire behaviour of a sizer and its children can be
controlled by the three parameters of the Add() method.</p> controlled by the three parameters of the Add() method.</p>
<p>[Show code and graphic here.]</p> <p>[Show code and graphic here.]</p>
</div> </div>
<div class="section" id="programming-with-gridsizer"> <div class="section">
<h2><a class="toc-backref" href="#id28" name="programming-with-gridsizer">Programming with GridSizer</a></h2> <h2><a class="toc-backref" href="#id28" id="programming-with-gridsizer" name="programming-with-gridsizer">Programming with GridSizer</a></h2>
<p>GridSizer is a sizer which lays out its children in a two-dimensional <p>GridSizer is a sizer which lays out its children in a two-dimensional
table with all table fields having the same size, i.e. the width of table with all table fields having the same size, i.e. the width of
each field is the width of the widest child, the height of each field each field is the width of the widest child, the height of each field
is the height of the tallest child.</p> is the height of the tallest child.</p>
<p>[Show code and graphic here.]</p> <p>[Show code and graphic here.]</p>
</div> </div>
<div class="section" id="programming-with-flexgridsizer"> <div class="section">
<h2><a class="toc-backref" href="#id29" name="programming-with-flexgridsizer">Programming with FlexGridSizer</a></h2> <h2><a class="toc-backref" href="#id29" id="programming-with-flexgridsizer" name="programming-with-flexgridsizer">Programming with FlexGridSizer</a></h2>
<p>FlexGridSizer is a sizer which lays out its children in a <p>FlexGridSizer is a sizer which lays out its children in a
two-dimensional table with all table fields in one row having the same two-dimensional table with all table fields in one row having the same
height and all fields in one column having the same width, but all height and all fields in one column having the same width, but all
@@ -632,8 +914,8 @@ rows or all columns are not necessarily the same height or width as in
the GridSizer.</p> the GridSizer.</p>
<p>[Show code and graphic here.]</p> <p>[Show code and graphic here.]</p>
</div> </div>
<div class="section" id="programming-with-notebooksizer"> <div class="section">
<h2><a class="toc-backref" href="#id30" name="programming-with-notebooksizer">Programming with NotebookSizer</a></h2> <h2><a class="toc-backref" href="#id30" id="programming-with-notebooksizer" name="programming-with-notebooksizer">Programming with NotebookSizer</a></h2>
<p>NotebookSizer is a specialized sizer to make sizers work in connection <p>NotebookSizer is a specialized sizer to make sizers work in connection
with using notebooks. This sizer is different from any other sizer as with using notebooks. This sizer is different from any other sizer as
you must not add any children to it - instead, it queries the notebook you must not add any children to it - instead, it queries the notebook
@@ -648,15 +930,15 @@ one example showing how to add a notebook page that the notebook sizer
is aware of:</p> is aware of:</p>
<p>[Show code and graphic here.]</p> <p>[Show code and graphic here.]</p>
</div> </div>
<div class="section" id="programming-with-staticboxsizer"> <div class="section">
<h2><a class="toc-backref" href="#id31" name="programming-with-staticboxsizer">Programming with StaticBoxSizer</a></h2> <h2><a class="toc-backref" href="#id31" id="programming-with-staticboxsizer" name="programming-with-staticboxsizer">Programming with StaticBoxSizer</a></h2>
<p>StaticBoxSizer is a sizer derived from BoxSizer but adds a static box <p>StaticBoxSizer is a sizer derived from BoxSizer but adds a static box
around the sizer. Note that this static box has to be created around the sizer. Note that this static box has to be created
separately.</p> separately.</p>
<p>[Show code and graphic here.]</p> <p>[Show code and graphic here.]</p>
</div> </div>
<div class="section" id="dialog-createbuttonsizer"> <div class="section">
<h2><a class="toc-backref" href="#id32" name="dialog-createbuttonsizer">Dialog.CreateButtonSizer</a></h2> <h2><a class="toc-backref" href="#id32" id="dialog-createbuttonsizer" name="dialog-createbuttonsizer">Dialog.CreateButtonSizer</a></h2>
<p>As a convenience, the Dialog class has a CreateButtonSizer(flags) <p>As a convenience, the Dialog class has a CreateButtonSizer(flags)
method that can be used to create a standard button sizer in which method that can be used to create a standard button sizer in which
standard buttons are displayed. The following flags can be passed to standard buttons are displayed. The following flags can be passed to
@@ -705,8 +987,8 @@ wx.OK button will be default</td>
</table> </table>
</div> </div>
</div> </div>
<div class="section" id="date-and-time-classes-overview"> <div class="section">
<h1><a class="toc-backref" href="#id33" name="date-and-time-classes-overview">Date and time classes overview</a></h1> <h1><a class="toc-backref" href="#id33" id="date-and-time-classes-overview" name="date-and-time-classes-overview">Date and time classes overview</a></h1>
<p>wxPython provides a set of powerful classes to work with dates and <p>wxPython provides a set of powerful classes to work with dates and
times. Some of the supported features of the DateTime class are:</p> times. Some of the supported features of the DateTime class are:</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
@@ -737,8 +1019,8 @@ with them is fast</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div class="section" id="all-date-time-classes-at-a-glance"> <div class="section">
<h2><a class="toc-backref" href="#id34" name="all-date-time-classes-at-a-glance">All date/time classes at a glance</a></h2> <h2><a class="toc-backref" href="#id34" id="all-date-time-classes-at-a-glance" name="all-date-time-classes-at-a-glance">All date/time classes at a glance</a></h2>
<p>There are 3 main classes: except DateTime itself which represents an <p>There are 3 main classes: except DateTime itself which represents an
absolute moment in time, there are also two classes - TimeSpan and absolute moment in time, there are also two classes - TimeSpan and
DateSpan which represent the intervals of time.</p> DateSpan which represent the intervals of time.</p>
@@ -748,8 +1030,8 @@ date is a holiday or not and DateTimeWorkDays which is a derivation of
this class for which (only) Saturdays and Sundays are the holidays. this class for which (only) Saturdays and Sundays are the holidays.
See more about these classes in the discussion of the holidays.</p> See more about these classes in the discussion of the holidays.</p>
</div> </div>
<div class="section" id="datetime-characteristics"> <div class="section">
<h2><a class="toc-backref" href="#id35" name="datetime-characteristics">DateTime characteristics</a></h2> <h2><a class="toc-backref" href="#id35" id="datetime-characteristics" name="datetime-characteristics">DateTime characteristics</a></h2>
<p>DateTime stores the time as a signed number of milliseconds since the <p>DateTime stores the time as a signed number of milliseconds since the
Epoch which is fixed, by convention, to Jan 1, 1970 - however this is Epoch which is fixed, by convention, to Jan 1, 1970 - however this is
not visible to the class users (in particular, dates prior to the not visible to the class users (in particular, dates prior to the
@@ -772,8 +1054,8 @@ country, and even region, dependent). Future versions will probably
have Julian calendar support as well and support for other calendars have Julian calendar support as well and support for other calendars
(Maya, Hebrew, Chinese...) is not ruled out.</p> (Maya, Hebrew, Chinese...) is not ruled out.</p>
</div> </div>
<div class="section" id="difference-between-datespan-and-timespan"> <div class="section">
<h2><a class="toc-backref" href="#id36" name="difference-between-datespan-and-timespan">Difference between DateSpan and TimeSpan</a></h2> <h2><a class="toc-backref" href="#id36" id="difference-between-datespan-and-timespan" name="difference-between-datespan-and-timespan">Difference between DateSpan and TimeSpan</a></h2>
<p>While there is only one logical way to represent an absolute moment in <p>While there is only one logical way to represent an absolute moment in
the time (and hence only one DateTime class), there are at least two the time (and hence only one DateTime class), there are at least two
methods to describe a time interval.</p> methods to describe a time interval.</p>
@@ -801,8 +1083,8 @@ in the program, you should probably use TimeSpan instead of DateSpan
in situations when you do need to understand what 'in a month' means in situations when you do need to understand what 'in a month' means
(of course, it is just DateTime.Now() + DateSpan.Month()).</p> (of course, it is just DateTime.Now() + DateSpan.Month()).</p>
</div> </div>
<div class="section" id="date-arithmetics"> <div class="section">
<h2><a class="toc-backref" href="#id37" name="date-arithmetics">Date arithmetics</a></h2> <h2><a class="toc-backref" href="#id37" id="date-arithmetics" name="date-arithmetics">Date arithmetics</a></h2>
<p>Many different operations may be performed with the dates, however not <p>Many different operations may be performed with the dates, however not
all of them make sense. For example, multiplying a date by a number all of them make sense. For example, multiplying a date by a number
is an invalid operation, even though multiplying either of the time is an invalid operation, even though multiplying either of the time
@@ -838,8 +1120,8 @@ opposite time direction.</td>
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="section" id="time-zone-considerations"> <div class="section">
<h2><a class="toc-backref" href="#id38" name="time-zone-considerations">Time zone considerations</a></h2> <h2><a class="toc-backref" href="#id38" id="time-zone-considerations" name="time-zone-considerations">Time zone considerations</a></h2>
<p>Although the time is always stored internally in GMT, you will usually <p>Although the time is always stored internally in GMT, you will usually
work in the local time zone. Because of this, all DateTime work in the local time zone. Because of this, all DateTime
constructors and setters which take the broken down date assume that constructors and setters which take the broken down date assume that
@@ -877,8 +1159,8 @@ job. I.e. you would just write</p>
printf(&quot;The time is %s in local time zone&quot;, dt.FormatTime().c_str()); printf(&quot;The time is %s in local time zone&quot;, dt.FormatTime().c_str());
printf(&quot;The time is %s in GMT&quot;, dt.FormatTime(wxDateTime::GMT).c_str());</p> printf(&quot;The time is %s in GMT&quot;, dt.FormatTime(wxDateTime::GMT).c_str());</p>
</div> </div>
<div class="section" id="daylight-saving-time-dst"> <div class="section">
<h2><a class="toc-backref" href="#id39" name="daylight-saving-time-dst">Daylight saving time (DST)</a></h2> <h2><a class="toc-backref" href="#id39" id="daylight-saving-time-dst" name="daylight-saving-time-dst">Daylight saving time (DST)</a></h2>
<p>DST (a.k.a. 'summer time') handling is always a delicate task which is <p>DST (a.k.a. 'summer time') handling is always a delicate task which is
better left to the operating system which is supposed to be configured better left to the operating system which is supposed to be configured
by the administrator to behave correctly. Unfortunately, when doing by the administrator to behave correctly. Unfortunately, when doing
@@ -894,17 +1176,17 @@ the future.</p>
<p>The time zone handling methods use these functions too, so they are <p>The time zone handling methods use these functions too, so they are
subject to the same limitations.</p> subject to the same limitations.</p>
</div> </div>
<div class="section" id="datetime-and-holidays"> <div class="section">
<h2><a class="toc-backref" href="#id40" name="datetime-and-holidays">DateTime and Holidays</a></h2> <h2><a class="toc-backref" href="#id40" id="datetime-and-holidays" name="datetime-and-holidays">DateTime and Holidays</a></h2>
<p>[TODO]</p> <p>[TODO]</p>
</div> </div>
</div> </div>
<div class="section" id="classes-by-category"> <div class="section">
<h1><a class="toc-backref" href="#id41" name="classes-by-category">Classes by category</a></h1> <h1><a class="toc-backref" href="#id41" id="classes-by-category" name="classes-by-category">Classes by category</a></h1>
<p>Not done yet.</p> <p>Not done yet.</p>
</div> </div>
<div class="section" id="id-constants"> <div class="section">
<h1><a class="toc-backref" href="#id42" name="id-constants">ID constants</a></h1> <h1><a class="toc-backref" href="#id42" id="id-constants" name="id-constants">ID constants</a></h1>
<p>wxPython provides the following predefined ID constants:</p> <p>wxPython provides the following predefined ID constants:</p>
<p>ID_ABORT <p>ID_ABORT
ID_ABOUT ID_ABOUT
@@ -964,8 +1246,8 @@ ID_UNDO
ID_YES ID_YES
ID_YESTOALL</p> ID_YESTOALL</p>
</div> </div>
<div class="section" id="source-document"> <div class="section">
<h1><a class="toc-backref" href="#id43" name="source-document">Source document</a></h1> <h1><a class="toc-backref" href="#id43" id="source-document" name="source-document">Source document</a></h1>
<p>The source document is named wxPythonManual.txt and can be found by <p>The source document is named wxPythonManual.txt and can be found by
clicking the link at the bottom of this page (assuming you are viewing clicking the link at the bottom of this page (assuming you are viewing
the html file). It is written using a fantastic formatting convention the html file). It is written using a fantastic formatting convention
@@ -973,8 +1255,8 @@ called reStructuredText. The wxPythonManual.html file is created
using the Docutils utilities, which can turn reStructuredText using the Docutils utilities, which can turn reStructuredText
documents into html, xml, pdf, and even OpenOffice files.</p> documents into html, xml, pdf, and even OpenOffice files.</p>
</div> </div>
<div class="section" id="submitting-changes-to-the-source-document"> <div class="section">
<h1><a class="toc-backref" href="#id44" name="submitting-changes-to-the-source-document">Submitting changes to the source document</a></h1> <h1><a class="toc-backref" href="#id44" id="submitting-changes-to-the-source-document" name="submitting-changes-to-the-source-document">Submitting changes to the source document</a></h1>
<p>Some items in the source text file look like this:</p> <p>Some items in the source text file look like this:</p>
<pre class="literal-block"> <pre class="literal-block">
.. This is text from the wxWidgets documentation that needs to be .. This is text from the wxWidgets documentation that needs to be
@@ -991,8 +1273,8 @@ to you and will show my gratitude by adding your name to the list of
contributors. (Contributors who also send me gifts of coffee, contributors. (Contributors who also send me gifts of coffee,
chocolate, or currency will have their names listed in bold.)</p> chocolate, or currency will have their names listed in bold.)</p>
</div> </div>
<div class="section" id="contributors"> <div class="section">
<h1><a class="toc-backref" href="#id45" name="contributors">Contributors</a></h1> <h1><a class="toc-backref" href="#id45" id="contributors" name="contributors">Contributors</a></h1>
<p>Individuals who contributed to this documentation (in order by last <p>Individuals who contributed to this documentation (in order by last
name):</p> name):</p>
<ul class="simple"> <ul class="simple">
@@ -1003,8 +1285,8 @@ name):</p>
<li>Vadim Zeitlin</li> <li>Vadim Zeitlin</li>
</ul> </ul>
</div> </div>
<div class="section" id="license"> <div class="section">
<h1><a class="toc-backref" href="#id46" name="license">License</a></h1> <h1><a class="toc-backref" href="#id46" id="license" name="license">License</a></h1>
<p>This document began as a translation of the wxWidgets documentation. <p>This document began as a translation of the wxWidgets documentation.
As such, it adheres to the same license, which is provided here:</p> As such, it adheres to the same license, which is provided here:</p>
<pre class="literal-block"> <pre class="literal-block">