<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
-<title>Building wxPython 2.6 for Development and Testing</title>
-<link rel="stylesheet" href="default.css" type="text/css" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>Building wxPython 2.7 for Development and Testing</title>
+<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>
<body>
-<div class="document" id="building-wxpython-2-6-for-development-and-testing">
-<h1 class="title">Building wxPython 2.6 for Development and Testing</h1>
+<div class="document" id="building-wxpython-2-7-for-development-and-testing">
+<h1 class="title">Building wxPython 2.7 for Development and Testing</h1>
<p>This file describes how I build wxWidgets and wxPython while doing
development and testing, and is meant to help other people that want
to do the same thing. I'll assume that you are using either a CVS
snapshot from <a class="reference" href="http://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
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 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
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
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
sources. If you install this build of SWIG to a location that is not
on the PATH (so it doesn't interfere with an existing SWIG install for
-example) then you can set a setup.py command-line variable named SWIG
-to be the full path name of the executable and the wxPython build will
+example) then you can use a setup.py command-line option named SWIG
+set to the full path name of the executable and the wxPython build will
use it. See below for an example.</p>
<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
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
release of wxPython.</p>
-<div class="section" id="building-on-unix-like-systems-e-g-linux-and-os-x">
-<h1><a name="building-on-unix-like-systems-e-g-linux-and-os-x">Building on Unix-like Systems (e.g. Linux and OS X)</a></h1>
+<div class="section">
+<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
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
cd $WXDIR
mkdir bld
cd bld
-../configure --prefix=/opt/wx/2.6 \
+../configure --prefix=/opt/wx/2.7 \
--with-gtk \
--with-gnomeprint \
--with-opengl \
--enable-debug \
--enable-geometry \
+ --enable-graphics_ctx \
--enable-sound --with-sdl \
--enable-mediactrl \
--enable-display \
</pre>
<p>On OS X of course you'll want to use --with-mac instead of
--with-gtk and --with-gnomeprint.</p>
+<p>Notice that above I used a prefix option of "/opt/wx/2.7". 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 "installed" 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 "/opt/wx/2.7" with whatever
+prefix you choose for your build.</p>
<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
switched to using a monolithic build. That means that all of the
--with-gtk=1 \
</pre>
<p>To make the wxWidgets build be unicode enabled (strongly
-recommended if you are building with GTK2) then add the following.
-When wxPython is unicode enabled then all strings that are passed
-to wx functions and methods will first be converted to unicode
-objects, and any 'strings' returned from wx functions and methods
-will actually be unicode objects.:</p>
+recommended unless you are building with GTK1) then add the
+following flag. When wxPython is unicode enabled then all strings
+that are passed to wx functions and methods will first be converted
+to unicode objects, and any 'strings' returned from wx functions
+and methods will actually be unicode objects.:</p>
<pre class="literal-block">
--enable-unicode \
</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 "installed" 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 "/opt/wx/2.6" with whatever prefix you
-choose for your build.</p>
<p>If you want to use the image and zlib libraries included with
wxWidgets instead of those already installed on your system, (for
example, to reduce dependencies on 3rd party libraries) then you
</pre>
</li>
<li><p class="first">To build and install wxWidgets you could just use the "make"
-command but there are other libraries besides the main wxWidgets
-libs that also need to be built so again I make a script to do it
-all for me so I don't forget anything. This time it is called
-".make" (I use the leading "." so when I do <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in my build
-dir I don't lose my scripts too.) This is what it looks like:</p>
+command but there are a couple other libraries besides the main
+wxWidgets libs that also need to be built so again I make a script
+to do it all for me so I don't forget anything. This time it is
+called ".make" (I use the leading "." so when I do <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in
+my build dir I don't lose my scripts too.) This is what it looks
+like:</p>
<pre class="literal-block">
make $* \
- && make -C contrib/src/animate $* \
&& make -C contrib/src/gizmos $* \
- && make -C contrib/src/stc $*
+ && make -C contrib/src/stc $*
</pre>
<p>So you just use .make as if it where make, but don't forget to set
the execute bit on .make first!:</p>
.make install
</pre>
<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
-wxWidgets you just need to add /opt/wx/2.6/bin to the PATH and set
-LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OS X) to /opt/wx/2.6/lib.</p>
+/opt/wx/2.7 containing just wxWidgets. Now to use this version of
+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.7/lib.</p>
</li>
<li><p class="first">I also have a script to help me build wxPython and it is checked in
to the CVS as 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,
so if you don't have the latest patched up version of SWIG then
-you'll probably get stuck. So I'll just give the raw commands
-instead.</p>
+you'll probably get stuck. So in this document I'll just give the
+raw commands instead.</p>
<p>We're not going to install the development version of wxPython with
these commands, so it won't impact your already installed version
of the latest release. You'll be able test with this version when
<p>If you have more than one version of Python on your system then be
sure to use the version of Python that you want to use when running
wxPython programs to run the setup.py commands below. I'll be
-using python2.3.</p>
-<p>Make sure that the first wx-config found on the PATH is the one you
-installed above, and then change to the $WXDIR/wxPython dir and
-run the this command:</p>
+using python2.5.</p>
+<p>Make sure that the first wx-config found on the PATH is the one
+belonging to the wxWidgets that you installed above, and then
+change to the $WXDIR/wxPython dir and run the this command:</p>
<pre class="literal-block">
cd $WXDIR/wxPython
-python2.3 setup.py build_ext --inplace --debug
+python2.5 setup.py build_ext --inplace --debug
</pre>
<p>If your new wx-config script is not on the PATH, or there is some
other version of it found first, then you can add this to the
command line to ensure your new one is used instead:</p>
<pre class="literal-block">
-WX_CONFIG=/opt/wx/2.6/bin/wx-config
+WX_CONFIG=/opt/wx/2.7/bin/wx-config
</pre>
<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
this flag to the command-line:</p>
<pre class="literal-block">
-WXPORT=gtk
+WXPORT=gtk
</pre>
-<p>If you would like to do a Unicode enabled build (all strings sent
-to or retruned from wx functions are Unicode objects) and your
-wxWidgets was built with unicode enabled then add this flag:</p>
+<p>Setup.py will assume by default that you are using a unicode build
+of wxWidgets. If not then you can use this flag:</p>
<pre class="literal-block">
-UNICODE=1
+UNICODE=0
</pre>
<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
where to find the new swig executable, so add these flags:</p>
<pre class="literal-block">
being undeclared, or something similar then you can add
BUILD_GLCANVAS=0 to the setup.py command line to disable the
building of the glcanvas module.</p>
-<p>When the setup.py command is done you should have fully populated
-wxPython and wx packages locally in $WXDIR/wxPython/wxPython and
-$WXDIR/wxPython/wx, with all the extension modules (<tt class="docutils literal"><span class="pre">*.so</span></tt> files)
-located in the wx package.</p>
+<p>When the setup.py command is done you should have a fully populated
+(but uninstalled) wx package located in your $WXDIR/wxPython/wx
+directory.</p>
</li>
<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
example:</p>
<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
cd $WXDIR/wxPython/demo
-python2.3 demo.py
+python2.5 demo.py
</pre>
-<p>OS X NOTE: You need to use "pythonw" on the command line to run
-wxPython applications. This version of the Python executable is
-part of the Python Framework and is allowed to interact with the
-display. You can also double click on a .py or a .pyw file from
-the finder (assuming that the PythonLauncher app is associated with
-these file extensions) and it will launch the Framework version of
-Python for you. For information about creating Applicaiton Bundles
-of your wxPython apps please see the wiki and the mail lists.</p>
+<p>OS X NOTE: Depending on your version of OS X and Python you may
+need to use "pythonw" on the command line to run wxPython
+applications. This version of the Python executable is part of the
+Python Framework and is allowed to interact with the display. You
+can also double click on a .py or a .pyw file from the finder
+(assuming that the PythonLauncher app is associated with these file
+extensions) and it will launch the Framework version of Python for
+you. For information about creating Applicaiton Bundles of your
+wxPython apps please see the wiki and the mail lists.</p>
<p>SOLARIS NOTE: If you get unresolved symbol errors when importing
wxPython and you are running on Solaris and building with gcc, then
you may be able to work around the problem by uncommenting a bit of
</li>
</ol>
</div>
-<div class="section" id="building-on-windows">
-<h1><a name="building-on-windows">Building on Windows</a></h1>
+<div class="section">
+<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++.
Theoretically, other compilers (such as mingw32 or the Borland
compilers) can also be used but I've never done the work to make that
happen. If you want to try that then first you'll want to find out if
there are any tricks that have to be done to make Python extension
modules using that compiler, and then make a few changes to setup.py
-to accommodate that. (And send the patches to me.) If you plan on
-using VisualStudio.Net (a.k.a. MSVC 7.1) keep in mind that you'll also
-have to build Python and any other extension modules that you use with
-that compiler because a different version of the C runtime library is
-used. The Python executable that comes from PythonLabs and the
-wxPython extensions that I distribute are built with MSVC 6 with all
-the Service Packs applied. This policy will change with Python 2.4
-and MSVC 7.1 will be used starting with that version.</p>
+to accommodate that. (And send the patches to me.)</p>
+<p>The standard Python 2.3 and earlier are built with MS Visual C 6.0 and
+so you must also build with MSVC 6 in order to be used with the stock
+python.exe. If you woudl rather use a different version of
+VisualStudio keep in mind that you'll also have to build Python and
+any other extension modules that you use with that compiler because a
+different version of the C runtime library is used. The stock Python
+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
will need to have also built a debug version of Python and any other
extension modules you need to use. You can tell if you have them
already if there is a _d in the file names, for example python_d.exe
-or python23_d.dll. If you don't need to trace through the C/C++ parts
+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)
version is fine, and you can use the regular python executables with
it.</p>
<p>The *.btm files are for 4NT and the others are for bash. They are:</p>
<pre class="literal-block">
.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
as needed for the different types of builds
</pre>
</li>
<li><p class="first">Edit %WXDIR%\include\wx\msw\setup.h and change a few settings:</p>
<pre class="literal-block">
-wxDIALOG_UNIT_COMPATIBILITY 0
-wxUSE_DEBUG_CONTEXT 1
-wxUSE_MEMORY_TRACING 1
+wxUSE_DEBUGREPORT 0
+wxUSE_EXCEPTIONS 0
wxUSE_DIALUP_MANAGER 0
+wxUSE_GRAPHICS_CONTEXT 1
wxUSE_GLCANVAS 1
wxUSE_POSTSCRIPT 1
-wxUSE_AFM_FOR_POSTSCRIPT 0
-wxUSE_DISPLAY 1
-wxUSE_DEBUGREPORT 0
+wxUSE_DIB_FOR_BITMAP 1
</pre>
<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
-%WXWIN%\libvc_dll. If you are doing it by hand and making a
-UNICODE build, then also change these:</p>
+changed automatically and then a copy of setup.h is placed in a
+subdir of %WXWIN%\libvc_dll. If you are doing it by hand and
+making a UNICODE build, then also change these:</p>
<pre class="literal-block">
wxUSE_UNICODE 1
wxUSE_UNICODE_MSLU 1
executing nmake with a bunch of extra command line parameters.
The base set are:</p>
<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>
<p>If doing a debug build then add:</p>
<pre class="literal-block">
-BUILD=debug
+BUILD=debug
</pre>
<p>otherwise add these:</p>
<pre class="literal-block">
UNICODE=1 MSLU=1
</pre>
<p>Now, from the %WXDIR%\build\msw directory run nmake with your
-selection of command-line flags as described above. Repeat this
-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>
+selection of command-line flags as described above.</p>
</li>
<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
the MONOLITHIC flag with how you built wxWidgets:</p>
<pre class="literal-block">
cd %WXDIR%\wxPython
-python setup.py build_ext --inplace MONOLITHIC=1
+python setup.py build_ext --inplace MONOLITHIC=0
</pre>
<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
where to find the new swig executable, so add these flags:</p>
<pre class="literal-block">
-USE_SWIG=1 SWIG=e:\projects\SWIG-cvs\swig.exe
+USE_SWIG=1 SWIG=e:\\projects\\SWIG-1.2.29\\swig.exe
</pre>
<p>If you built a Unicode version of wxWidgets and want to also build
the Unicode version of wxPython then add this flag:</p>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Recent Changes for wxPython</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>
<body>
<div class="document" id="recent-changes-for-wxpython">
<h1 class="title">Recent Changes for wxPython</h1>
-<div class="section" id="id1">
-<h1><a name="id1">2.6.2.1</a></h1>
+<div class="section">
+<h1><a id="id1" name="id1">2.7.1.1</a></h1>
+<ul class="simple">
+<li>18-Oct-2006</li>
+</ul>
+<p>The following deprecated items have been removed:</p>
+<blockquote>
+<ul class="simple">
+<li>wx.Bitmap SetQuality and GetQuality methods</li>
+<li>The wx.GetNumberFromUser function</li>
+<li>wx.EVT_LIST_GET_INFO and wx.EVT_LIST_SET_INFO</li>
+<li>wx.BookCtrlSizer and wx.NotebookSizer</li>
+<li>The PostScript-specific methods of wx.PrintData</li>
+<li>wx.PrintDialogData SetSetupDialog and GetSetupDialog methods</li>
+<li>wx.FontMapper SetConfig method</li>
+<li>wx.html.HtmlSearchStatus.GetContentsItem method</li>
+<li>wx.html.HtmlHelpData.GetContents, GetContentsCnt, GetIndex, and
+GetIndexCnt methods</li>
+</ul>
+</blockquote>
+<p>wx.EventLoop is now implemented for wxMac.</p>
+<p>Added wxPython wrappers for the new wx.Treebook and wx.Toolbook
+classes.</p>
+<p>wx.DC.BeginDrawing and EndDrawing have been deprecated in the C++
+code, so since they never really did anything before they are now just
+empty stubs in wxPython.</p>
+<p>Solved a problem that has been around for a very long time in how C++
+methods are virtualized for overriding in derived Python classes.
+Previously we couldn't do it for methods that needed to also exist in
+the base class wrappers such that they could be called normally. (The
+reasons are long and complex, but suffice it to say that it was due to
+mixing C++'s dynamic dispatch, and Python's runtime lookup of the
+method attributes resulting in endless recursion of function calls.)
+Because of this problem I used a hack that I have always hated, and
+that is renaming the base class methods with a "base_*" prefix, for
+example wx.Printout.base_OnBeginDocument. Now that the problem has
+finally been solved I have replaced all the base_Whatever() methods
+with the real Whatever() method as well as a simple wrapper named
+base_Whatever that is marked as deprecated. So now instead of writing
+your overridden methods like this:</p>
+<pre class="literal-block">
+def OnBeginDocument(self, start, end):
+ # do something here
+ return self.base_OnBeginDocument(start, end)
+</pre>
+<p>You can now call the base class method the normal way, like this:</p>
+<pre class="literal-block">
+def OnBeginDocument(self, start, end):
+ # do something here
+ return Printout.OnBeginDocument(self, start, end)
+</pre>
+<p>Or like this with super():</p>
+<pre class="literal-block">
+def OnBeginDocument(self, start, end):
+ # do something here
+ return super(MyPrintout, self).OnBeginDocument(start, end)
+</pre>
+<p>Note that the old way with the "base_*" function still works, but you
+will get a DeprecationWarning from calling base_OnBeginDocument. The
+classes affected by this are:</p>
+<blockquote>
+<ul class="simple">
+<li>wx.DropSource</li>
+<li>wx.DropTarget</li>
+<li>wx.TextDropTarget</li>
+<li>wx.FileDropTarget</li>
+<li>wx.PyLog (also added the ability to override Flush)</li>
+<li>wx.PyApp (also added the ability to override ExitMainLoop)</li>
+<li>wx.Printout</li>
+<li>wx.PyPrintPreview</li>
+<li>wx.PyPreviewFrame</li>
+<li>wx.PreviewControlBar</li>
+<li>wx.Process</li>
+<li>wx.PyControl</li>
+<li>wx.PyPanel</li>
+<li>wx.PyScrolledWindow</li>
+<li>wx.PyWindow</li>
+<li>wx.Timer</li>
+<li>wx.grid.PyGridCellRenderer</li>
+<li>wx.grid.PyGridCellEditor</li>
+<li>wx.grid.PyGridCellAttrProvider</li>
+<li>wx.grid.PyGridTableBase</li>
+<li>wx.html.HtmlWindow</li>
+<li>wx.wizard.PyWizardPage</li>
+</ul>
+</blockquote>
+<p>Added the wx.DC.GradientFillConcentric and wx.DC.GradientFillLinear
+methods.</p>
+<p>wxGTK: wx.ListBox and wx.CheckListBox are now using native GTK2
+widgets.</p>
+<p>Added wx.ListBox.HitTest() from patch 1446207</p>
+<p>Bumped up to SWIG 1.3.29. This provides some more runtime performance
+boosts, gets rid of the dreaded Ptr classes, and some other nice new
+things.</p>
+<p>Added wx.Window.GetScreenPosition and GetScreenRect which returns the
+position of the window in screen coordinates, even if the window is
+not a top-level window.</p>
+<p>Added GetResourcesDir and GetLocalizedResourcesDir to
+wx.StandardPaths.</p>
+<p>Added a GetReceivedFormat method to wx.DataObjectComposite. You can
+use this to find out what format of data object was recieved from the
+source of the clipboard or DnD operation, and then you'll know which
+of the component data objects to use to access the data.</p>
+<p>Changed how the stock objects (wx.RED, wx.RED_PEN, wx.RED_BRUSH, etc.)
+are initialized. They are now created as uninitialized instances
+using __new__. Then after the wx.App has been created, but before
+OnInit is called, the .this attribute of each obhect is initialized.
+This was needed because of some delayed initialization functionality
+that was implemented in wxWidgets, but the end result is cleaner for
+wxPython as well, and allowed me to remove some ugly code previously
+hidden under the covers.</p>
+<p>Added wx.StandardPaths.GetDocumentsDir.</p>
+<p>Added wx.RendererNative.DrawCheckButton.</p>
+<p>wx.ProgressDialog.Update now returns a tuple of two values. The first
+is a continue flag (what was returned before) and the second is a skip
+flag. If the dialog has the wx.PD_CAN_SKIP flag and if the Skip
+button is clicked, then the skip flag is set to True the next time
+Update is called.</p>
+<p>A DeprecationWarning is now issued when the old wxPython package is
+imported. If you are still using the old namespace please convert
+your code to use the new wx package instead.</p>
+<p>Added wrappers for Julian's new wxRichTextCtrl class, visible in
+wxPython as wx.richtext.RichTextCtrl window. It still needs some more
+work, but it is a great start.</p>
+<p>wx.lib.mixins.listctrl.TextEditMixin: Fixed the double END_LABEL_EDIT
+event problem in TextEditMixin by checking if the editor was already
+hidden before continuing with the CloseEditor method. Also added code
+to OpenEditor to send the BEGIN_LABEL_EDIT event and to not allow the
+opening of the editor to continue if the event handler doesn't allow
+it.</p>
+<p>wx.StaticBoxSizer now keeps better track of the wx.StaticBox, and it
+will destroy it if the sizer is destroyed before the parent window is.</p>
+<p>Added wx.HyperlinkCtrl.</p>
+<p>Added battery and power related functions and events (wxMSW only so
+far.) See wx.PowerEvent, wx.GetPowerType and wx.GetBatteryState.</p>
+<p>Added wx.ListCtrl.HitTestSubItem which returns the sub-item (i.e. the
+column in report mode) that was hit (if any) in addition to the item
+and flags.</p>
+<p>Added wrappers for wx.ColourPickerCtrl, wx.DirPickerCtrl,
+wx.FilePickerCtrl, and wx.FontPickerCtrl.</p>
+<p>Patch #1502016 wx.Image.ConvertToGreyscale now retains the alpha
+channel.</p>
+<p>Added wrappers for the wxAUI classes, in the wx.aui module.</p>
+<p>Added the PseudoDC class from Paul Lanier. It provides a way to
+record operations on a DC and then play them back later.</p>
+<p>Upgraded to Scintilla 1.70 for wx.stc.StyledTextCtrl.</p>
+<p>Added CanSetTransparent and SetTransparent methods to the
+wx.TopLevelWindow class, with implementations (so far) for wxMSW and
+wxMac.</p>
+<p>SetDefaultItem() and GetDefaultItem() are now members of
+wx.TopLevelWindow, not wx.Panel.</p>
+<p>wxGTK: Stock items (icons) will be used for menu items with stock
+IDs.</p>
+<p>Added wx.lib.combotreebox from Frank Niessink</p>
+<p>Added wx.ImageFromBuffer, wx.BitmapFromBuffer and
+wx.BitmapFromBufferRGBA factory functions. They enable loading of an
+image or bitmap directly from a Python object that implements the
+buffer interface, such as strings, arrays, etc.</p>
+<p>Added wx.App.IsDisplayAvailable() which can be used to determine if a
+GUI can be created in the current environment. (Still need an
+implementation for wxMSW...)</p>
+<p>The wx.html.HTML_FONT_SIZE_x constants are no longer available as the
+default sizes are now calculated at runtime based on the size of the
+normal GUI font.</p>
+<p>wx.Colour now includes an alpha component, which defaults to
+wx.ALPHA_OPAQUE. This is in preparation for allowing various new
+alpha blening functionality using wx.Colour objects, such as drawing
+with pens and brushes on a wx.DC.</p>
+<p>Added wx.NativePixelBuffer, wx.AlphPixelBuffer and related iterator
+and accessor classes. They allow platform independent direct access
+to the platform specific pixel buffer inside of a wx.Bitmap object.</p>
+<p>The beginnings of support for RTL languages has been added, thanks to
+a Google SoC project.</p>
+<p>Added wx.lib.dragscroller from Riaan Booysen. It provides a helper
+class that can used to scroll a wx.ScrolledWindow in response to a
+mouse drag.</p>
+<p>Applied patch 1551409: Adds support for indeterminate mode gauges.</p>
+<p>wxMac: I've turned on the compile option for using the native toolbar
+on the Mac now that it supports hosting of controls. If the toolbar
+is managed by the frame via either CreateToolBar() or SetToolBar()
+then the native toolbar will be used. Additional toolbars, or
+toolbars that are not children of the frame, are managed by sizers or
+what-not will still use the emulated toolbar because of platform
+restrictions in how/where the native toolbar can be used.</p>
+<p>Added Python properties for many of the getter/setter methods of wx
+classes. In order for the names to be predicatble for somebody
+already familiar with wxPython the property names are simply the name
+of the getter with the "Get" dropped. For example, wx.Window has a
+property named "Size" that maps to GetSize and SetSize. So far there
+is only one known name conflict using this naming convention, and that
+is wx.KeyEvent.KeyCode, however since KeyCode was formerly a
+compatibility alias for GetKeyCode (and has been for a long time) it
+was decided to just switch it to a property. If you want to use the
+method then change your calls to event.KeyCode() to
+event.GetKeyCode(), otherwise you can use it as a property just by
+dropping the parentheses.</p>
+<p>Updated the C++ code for wx.gizmos.TreeListCtrl from the wxCode
+project. This has resulted in some minor API changes, most of which
+were worked around in the wrapper code.</p>
+<p>Added wx.lib.delayedresult from Oliver Schoenborn.</p>
+<p>Added wx.lib.expando, a multi-line textctrl that exands as more lines
+are needed.</p>
+<p>wx.Image.Scale and Rescale methods now take an extra parameter
+specifying type of method to use for resampling the image. It
+defaults to the current behavior of just replicating pixels, if
+wx.IMAGE_QUALITY_HIGH is passed then it uses bicubic and box averaging
+resampling methods for upsampling and downsampling respectively.</p>
+<p>Added the wx.lib.buttonpanel module, which is a tweaked version of
+Andrea Gavana's FancyButtonPanel module.</p>
+<p>Added the wx.lib.flatnotebook module, from Andrea Gavana.</p>
+<p>Renamed wx.FutureCall to wx.CallLater so it is named more like
+wx.CallAfter. wx.FutureCall is now an empty subclass of wx.CallLater
+for compatibility of older code.</p>
+<p>Added the wx.lib.customtreectrl the from Andrea Gavana.</p>
+<p>Added ChangeSelection to wx.BookCtrl (the base class for wx.Notebook
+and other book controls) that is the same as SetSelection but doesn't
+send the change events.</p>
+<p>Added wx.TextCtrl.ChangeValue() which is the same as SetValue() but
+doesn't send the text changed event.</p>
+<p>For consistency, all classes having an Ok() method now also have
+IsOk(), use of the latter form is preferred although the former hasn't
+been deprecated yet</p>
+<p>Added the wx.AboutBox() function and wx.AboutDialogInfo class. They
+provide a way to show a standard About box for the application, which
+will either be a native dialog or a generic one depending on what info
+is provided and if it can all be shown with the native dialog.</p>
+<p>The code in the animate contrib has been moved into the code wxWidgets
+library, and refactored a bit along the way. For wxPython it still
+exists in the wx.animate module, but has basically been reduced to two
+classes, wx.animate.Animation, and wx.animate.AnimationCtrl. You load
+the animated GIF (and hopefully there will be other supported formats
+in the near future) in the Animation object, and then give that to the
+AnimatedCtrl for display. See the demo for an example. There is also
+still a GIFAnimationCtrl class that provides some level of backwards
+compatibility with the old implementation.</p>
+<p>wxMac: The compile option that turns on the use of CoreGraphics (a.k.a
+Quartz) for wxDC is now turned on by default. This means that all
+drawing via wxDC is done using the new APIs from apple, instead of the
+old Quick Draw API. There are, however, a few places where Quartz and
+wxDC don't fit together very well, mainly the lack of support for
+logical drawing operations such as XOR, but there is work in progress
+to provide other ways to do the same sort of thing that will work with
+Quartz and also on the other platforms.</p>
+<p>The first parts of a new 2D drawing API has been added with the
+wx.GraphicsPath and wx.GraphicsContext classes. They wrap GDI+ on
+Windows, Cairo on wxGTK and CoreGraphics on OS X. They allow path-based
+drawing with alpha-blending and anti-aliasing, and use a floating
+point cooridnate system. Currently they can only target drawing to
+windows, but other wx.DC backends are forthcoming. The APIs may
+evolve a bit more before they are finalaized with the 2.8 release, but
+there is enough there now to get a good feel for how things will work.
+There is also a transitional wx.GCDC class that provides the wx.DC API
+on top of wx.GraphicsContext. Docs and a demo are still MIA.</p>
+<p>Added a wx.AutoBufferedPaintDC that is a subclass of wx.PaintDC on
+platforms that do double buffering by default, and a subclass of
+wx.BufferedPaintDC on the platforms that don't. You can use this
+class to help avoid the overhead of buffering when it is not
+needed. There is also a wx.AutoBufferedPaintDCFactory function that
+does a little more and actually tests if the window has
+double-buffering enabled and then decides whether to return a
+wx.PaintDC or wx.BufferedPaintDC. This uses the new
+wx.Window.IsDoubleBuffered method.</p>
+</div>
+<div class="section">
+<h1><a id="id2" name="id2">2.6.3.3</a></h1>
+<ul class="simple">
+<li>15-July-2006</li>
+</ul>
+<dl class="docutils">
+<dt>wx.lib.pubsub updates from Oliver Schoenborn:</dt>
+<dd><ul class="first last simple">
+<li>fixed the hash problem with non-hashable objects</li>
+<li>now supports listeners that use *args as an argument
+(listener(*args) was not passing the validity test)</li>
+<li>corrected some mistakes in documentation</li>
+<li>added some clarifications (hopefully useful for first time
+users)</li>
+<li>changed the way singleton is implemented since old way prevented
+pydoc etc from extracting docs for Publisher</li>
+</ul>
+</dd>
+<dt>DocView and ActiveGrid IDE updates from Morgan Hua:</dt>
+<dd>New Features: In Tab-View mode, Ctrl-number will take the user to
+the numbered tab view. Modified files now show an '*' astrisk in
+the view title. Debugger framework can now support PHP debugging.
+Not important for python development, but at least that means the
+debugger framework is more generalized.</dd>
+</dl>
+<p>wx.lib.mixins.listctrl.TextEditMixin: Fixed the double END_LABEL_EDIT
+event problem in TextEditMixin by checking if the editor was already
+hidden before continuing with the CloseEditor method. Also added code
+to OpenEditor to send the BEGIN_LABEL_EDIT event and to not allow the
+opening of the editor to continue if the event handler doesn't allow
+it.</p>
+<p>Undeprecated wx.GetNumberFromUser and added wx.NumberEntryDialog.</p>
+<p>Made necessaary changes for building wxPython for Python 2.5. There
+may still be some issues related to the new Py_ssize_t type and 64-bit
+machines, but at least all compile errors and warnings related to it
+have been resolved.</p>
+</div>
+<div class="section">
+<h1><a id="id3" name="id3">2.6.3.2</a></h1>
+<ul class="simple">
+<li>3-April-2006</li>
+</ul>
+<p>Fixed reference leak in wx.gizmos.TreeListCtrl.GetSelections.</p>
+<p>wxMSW: Fixed sizing issue with wx.Choice and wx.ComboBox. This change
+was implemented by reverting a prior fix for a different problem
+(contiuous painting/resizing when a combobox is used as a widget in a
+wx.html.HtmlWindow) so a method to fix both problems is still being
+investigated.</p>
+<p>wxGTK: Fixed potential buffer overrun when pasting from the
+clipboard.</p>
+<p>Fixed problem in wx.lib.splitter when used on 64-bit platforms. Used
+the current length of the list for specifying an append instead of
+sys.maxint.</p>
+<p>wxMSW: Support added for XP themed owner drawn buttons and bitmap
+buttons. For example, if you change the foreground color of a button
+it will now be drawn with the XP themed style rather than an ugly
+generic button style.</p>
+<p>XRCed: Fix for Copy/Paste objects with international characters.</p>
+<p>Fixed the equality and inequality operators for some of the basic
+data types (wx.Point, wx.Size, wx.Colour, etc.) to no longer raise a
+TypeError if the compared object is not compatible, but to just return
+a boolean as expected. For example:</p>
+<pre class="literal-block">
+wx.Colour(64,0,64) == 123 ==> False
+</pre>
+<p>wxMSW: Fixed (again) sizing/positioning issues of calling Realize on
+a wx.ToolBar that is not manaaged directly by a frame and that is
+already shown.</p>
+<p>wxMSW: Fixed wx.Choice/wx.ComboBox so they send events when a new item
+is selected only with the keyboard.</p>
+</div>
+<div class="section">
+<h1><a id="id4" name="id4">2.6.3.0</a></h1>
+<ul class="simple">
+<li>27-March-2006</li>
+</ul>
+<p>Change the wx.ListCtrl InsertStringItem wrapper to use the form that
+takes an imageIndex, and set the default to -1. This ensures that on
+wxMSW that if there is an image list but they don't specify an image,
+the native control doesn't use one anyway.</p>
+<p>wxMSW: wx.ListCtrl in report mode is now able to support images in
+other columns besides the first one. Simply pass an image index to
+SetStringItem. For virtual list controls you can specify the image to
+use on the extra columns by overriding OnGetItemColumnImage in your
+derived class. It is passed the item number and the column number as
+parameters, and the default version simply calls OnGetItemImage for
+column zero, or returns -1 for other columns.</p>
+<p>Switched to using SWIG 1.3.27 for generating the wrapper code. There
+are some small changes needed to SWIG to work around some bugs that
+wxPython exposes, and to be able to generate code that matches that
+which wxPython is using. If you are building wxPython yourself and
+need to modify any of the *.i files or to add your own, then you will
+want to be sure to use a matching SWIG. See wxPython/SWIG/README.txt
+in the source tarball for details.</p>
+<p>wx.Image.Copy, Mirror, and GetSubImage now also do the right thing
+with the alpha channel.</p>
+<p>wxMSW: Fixed problem in wx.TextCtrl where using SetValue and
+wx.TE_RICH2 would cause the control to be shown if it was hidden.</p>
+<p>wxMSW: Numpad special keys are now distinguished from normal keys in
+key events.</p>
+<p>wxMSW: Multiline notebook tab label change now resizes the control
+correctly if an extra row is removed or added.</p>
+<p>wxMSW: On XP fall back to unthemed wxNotebook if specified orientation
+not available in the themed version.</p>
+<p>Added wx.Toolbar.GetToolsCount.</p>
+<p>Added wx.GridSizer.CalcRowsCols.</p>
+<p>Added wx.OutputStream.LastWrite.</p>
+<p>wxGTK: EVT_SET_CURSOR is now sent.</p>
+<p>wxGTK: Fix RequestMore for idle events.</p>
+<p>wxGTK: Implement user dashes for PS and GNOME printing.</p>
+<p>wxGTK: Correct update region code. Don't always invalidate the whole
+window upon resize. Reenable support for thewx.NO_FULL_REPAINT_ON_RESIZE
+flag. Also disable refreshing custom controls when focusing in and out.</p>
+<p>wx.lib.pubsub: Publisher is now able to parse a dotted notation string
+into a topic tuple. For example: subscribing to "timer.clock.seconds"
+is the same as subscribing to ("timer", "clock", "seconds").</p>
+<p>Applied patch #1441370: lib.plot - allow passing in wx.Colour()</p>
+<p>Added wx.CommandEvent.GetClientData.</p>
+<p>Updated wxStyledTextCtrl to use version 1.67 of Scintilla.
+NOTE: The STC_LEX_ASP and STC_LEX_PHP lexers have been deprecated,
+you should use STC_LEX_HTML instead.</p>
+<p>wxSTC: Implemented Fix for SF Bug #1436503. Delay the start of the
+DnD operation in case the user just intended to click, not drag.</p>
+<p>Updated the analogclock.py module to the new analogclock package from
+E. A. Tacao.</p>
+<p>Added the wx.lib.mixins.listctrl.CheckListCtrlMixin class from Bruce
+Who, which makes it easy to put checkboxes on list control items.</p>
+<p>Applied a patch from Christian Kristukat to wx.lib.plot that adds
+scrollbars when the plot is zoomed in, and also the ability to grab a
+zoomed plot and move it around with a mouse drag.</p>
+<p>XRCed updated to allow wxMenuBar to be created inside a wxFrame.</p>
+<p>Added wx.StandardPaths.GetDocumentsDir() (patch 1214360)</p>
+</div>
+<div class="section">
+<h1><a id="id5" name="id5">2.6.2.1</a></h1>
<ul class="simple">
<li>10-Jan-2006</li>
</ul>
can manage more than two child windows.</p>
<p>Docview and IDE patch from Morgan Hua with fix for bug #1217890
"Closing view crashes Python" plus some new features:</p>
-<pre class="literal-block">
+<blockquote>
New feature added to the IDE is 'Extensions'. Under
Tools|Options|Extensions, you can add calls to external programs.
For example you can add a "Notepad" extension (under windows) that
will exec Notepad on the currently open file. A new "Notepad"
-menu item will appear under the Tools menu.
-</pre>
+menu item will appear under the Tools menu.</blockquote>
<p>Some fixes to XRCed to make encoding errors a bit more user friendly.</p>
<p>XRCed changes from Roman Rolinsky:</p>
<blockquote>
be easy to accommodate, all you need to do is add a parenthesis
pair: (...x, y, ...) ---> (...(x,y), ...)</blockquote>
</div>
-<div class="section" id="id2">
-<h1><a name="id2">2.6.1.0</a></h1>
+<div class="section">
+<h1><a id="id6" name="id6">2.6.1.0</a></h1>
<ul class="simple">
<li>4-June-2005</li>
</ul>
<p>wx.FileConfig: fixed DeleteEntry to set the dirty flag properly so the
change will get written at the next flush.</p>
</div>
-<div class="section" id="id3">
-<h1><a name="id3">2.6.0.1</a></h1>
+<div class="section">
+<h1><a id="id7" name="id7">2.6.0.1</a></h1>
<ul class="simple">
<li>30-May-2005</li>
</ul>
there is a range of allowed values (so a wx.SpinCtrl is used instead
of a wx.TextCtrl.)</p>
</div>
-<div class="section" id="id4">
-<h1><a name="id4">2.6.0.0</a></h1>
+<div class="section">
+<h1><a id="id8" name="id8">2.6.0.0</a></h1>
<ul class="simple">
<li>26-Apr-2005</li>
</ul>
</dd>
</dl>
</div>
-<div class="section" id="id5">
-<h1><a name="id5">2.5.5.1</a></h1>
+<div class="section">
+<h1><a id="id9" name="id9">2.5.5.1</a></h1>
<ul class="simple">
<li>8-Apr-2005</li>
</ul>
folks.</p>
<p>Added the ActiveGrid IDE as a sample application.</p>
</div>
-<div class="section" id="id6">
-<h1><a name="id6">2.5.4.1</a></h1>
+<div class="section">
+<h1><a id="id10" name="id10">2.5.4.1</a></h1>
<ul class="simple">
<li>16-Mar-2005</li>
</ul>
</dd>
</dl>
</div>
-<div class="section" id="id7">
-<h1><a name="id7">2.5.3.1</a></h1>
+<div class="section">
+<h1><a id="id11" name="id11">2.5.3.1</a></h1>
<ul class="simple">
<li>9-Nov-2004</li>
</ul>
<p>wxPython on OSX can now be built in Unicode mode, can support multiple
version installs, and comes with an uninstaller script.</p>
</div>
-<div class="section" id="id8">
-<h1><a name="id8">2.5.2.8</a></h1>
+<div class="section">
+<h1><a id="id12" name="id12">2.5.2.8</a></h1>
<ul class="simple">
<li>27-Aug-2004</li>
</ul>
</ul>
</blockquote>
</div>
-<div class="section" id="id9">
-<h1><a name="id9">2.5.2.7</a></h1>
+<div class="section">
+<h1><a id="id13" name="id13">2.5.2.7</a></h1>
<ul class="simple">
<li>14-Aug-2004</li>
</ul>
<p>wxGTK: Applied wxNO_BORDER patch (#1098374) for text control and combo
box.</p>
</div>
-<div class="section" id="the-this-is-not-a-joke-release">
-<h1><a name="the-this-is-not-a-joke-release">2.5.1.5 (the 'this is <em>not</em> a joke' release)</a></h1>
+<div class="section">
+<h1><a id="the-this-is-not-a-joke-release" name="the-this-is-not-a-joke-release">2.5.1.5 (the 'this is <em>not</em> a joke' release)</a></h1>
<ul class="simple">
<li>2-Apr-2004</li>
</ul>
MigrationGuide for more details on using the new module.</p>
<p>Floats are allowed again as function parameters where ints are expected.</p>
</div>
-<div class="section" id="id11">
-<h1><a name="id11">2.4.2.4</a></h1>
+<div class="section">
+<h1><a id="id15" name="id15">2.4.2.4</a></h1>
<ul class="simple">
<li>1-Oct-2003</li>
</ul>
<p>Added wxMaskedNumCtrl.</p>
<p>Added Chris Barker's FloatCanvas.</p>
</div>
-<div class="section" id="id12">
-<h1><a name="id12">2.4.1.2</a></h1>
+<div class="section">
+<h1><a id="id16" name="id16">2.4.1.2</a></h1>
<ul class="simple">
<li>19-Jun-2003</li>
</ul>
and Spacers can be specified with a wxSize (or 2-tuple) parameter</p>
<p>Added wxCursorFromBits.</p>
</div>
-<div class="section" id="id13">
-<h1><a name="id13">2.4.0.7</a></h1>
+<div class="section">
+<h1><a id="id17" name="id17">2.4.0.7</a></h1>
<ul class="simple">
<li>24-Mar-2003</li>
</ul>
default behavior) is enough. See below in the 2.3.4.1 notes for more
details.</p>
</div>
-<div class="section" id="a-k-a-the-i-m-so-stupid-release">
-<h1><a name="a-k-a-the-i-m-so-stupid-release">2.4.0.6 (a.k.a. the I'm so stupid release)</a></h1>
+<div class="section">
+<h1><a id="a-k-a-the-i-m-so-stupid-release" name="a-k-a-the-i-m-so-stupid-release">2.4.0.6 (a.k.a. the I'm so stupid release)</a></h1>
<ul class="simple">
<li>11-Mar-2003</li>
</ul>
returned from OnInit. And I promise to be sure I am testing what I
think I am testing in the future...</p>
</div>
-<div class="section" id="a-k-a-the-blame-it-on-kevin-release">
-<h1><a name="a-k-a-the-blame-it-on-kevin-release">2.4.0.5 (a.k.a. the blame it on Kevin release)</a></h1>
+<div class="section">
+<h1><a id="a-k-a-the-blame-it-on-kevin-release" name="a-k-a-the-blame-it-on-kevin-release">2.4.0.5 (a.k.a. the blame it on Kevin release)</a></h1>
<ul class="simple">
<li>7-Mar-2003</li>
</ul>
<p>Updated pycolourchooser.</p>
<p>Updated to 0.9b of PyCrust.</p>
</div>
-<div class="section" id="id14">
-<h1><a name="id14">2.4.0.4</a></h1>
+<div class="section">
+<h1><a id="id18" name="id18">2.4.0.4</a></h1>
<ul class="simple">
<li>7-Mar-2003</li>
</ul>
<p>Fixed typemaps for wxGridCellCoordsArray.</p>
<p>Updated to the 0.9a version of PyCrust</p>
</div>
-<div class="section" id="id15">
-<h1><a name="id15">2.4.0.2</a></h1>
+<div class="section">
+<h1><a id="id19" name="id19">2.4.0.2</a></h1>
<ul class="simple">
<li>23-Jan-2003</li>
</ul>
<p>Added wxIntCtrl from Will Sadkin.</p>
<p>Added wxPyColourChooser by Michael Gilfix.</p>
</div>
-<div class="section" id="id16">
-<h1><a name="id16">2.4.0.1</a></h1>
+<div class="section">
+<h1><a id="id20" name="id20">2.4.0.1</a></h1>
<ul class="simple">
<li>10-Jan-2003</li>
</ul>
<p>Added function wrappers for the common dialogs from Kevin Altis. See
wxPython/lib/dialogs.py for more details.</p>
</div>
-<div class="section" id="id17">
-<h1><a name="id17">2.3.4.2</a></h1>
+<div class="section">
+<h1><a id="id21" name="id21">2.3.4.2</a></h1>
<ul class="simple">
<li>21-Dec-2002</li>
</ul>
<p>Various bug fixes.</p>
</div>
-<div class="section" id="id18">
-<h1><a name="id18">2.3.4.1</a></h1>
+<div class="section">
+<h1><a id="id22" name="id22">2.3.4.1</a></h1>
<ul class="simple">
<li>18-Dec-2002</li>
</ul>
HTMLHelp viewer does. Changed how the wxPythonDocs tarball is built
and added a script to launch the doc viewer.</p>
</div>
-<div class="section" id="id19">
-<h1><a name="id19">2.3.3.1</a></h1>
+<div class="section">
+<h1><a id="id23" name="id23">2.3.3.1</a></h1>
<ul class="simple">
<li>19-Sep-2002</li>
</ul>
<p>Added wxPython.lib.mixins.rubberband module from Robb Shecter.</p>
<p>Added wxTimeCtrl from Will Sadkin.</p>
</div>
-<div class="section" id="id20">
-<h1><a name="id20">2.3.2.1</a></h1>
+<div class="section">
+<h1><a id="id24" name="id24">2.3.2.1</a></h1>
<ul class="simple">
<li>20-Dec-2001</li>
</ul>
without barfing and is also still compatible with Python debuggers.</p>
<p>Added some patches from library contributors.</p>
</div>
-<div class="section" id="id21">
-<h1><a name="id21">2.3.2</a></h1>
+<div class="section">
+<h1><a id="id25" name="id25">2.3.2</a></h1>
<ul class="simple">
<li>11-Dec-2001</li>
</ul>
wxPython/contrib/dllwidget and wxPython/demo/dllwidget for more
details.</p>
</div>
-<div class="section" id="id22">
-<h1><a name="id22">2.3.1</a></h1>
+<div class="section">
+<h1><a id="id26" name="id26">2.3.1</a></h1>
<ul class="simple">
<li>10-Jul-2001</li>
</ul>
<p>Fixed img2py to work correctly with Python 2.1.</p>
<p>Added enhanced wxVTKRenderWindow by Prabhu Ramachandran</p>
</div>
-<div class="section" id="id23">
-<h1><a name="id23">2.3.0</a></h1>
+<div class="section">
+<h1><a id="id27" name="id27">2.3.0</a></h1>
<ul class="simple">
<li>22-May-2001</li>
</ul>
by having smaller functional apps to play with. They can be found in
wxPython/samples.</p>
</div>
-<div class="section" id="id24">
-<h1><a name="id24">2.2.7</a></h1>
+<div class="section">
+<h1><a id="id28" name="id28">2.2.7</a></h1>
<ul class="simple">
<li>19-Jun-2001</li>
</ul>
<p>No changes happened in the Python wrappers for this release, only
changes and fixes in the wxWindows library.</p>
</div>
-<div class="section" id="id25">
-<h1><a name="id25">2.2.5</a></h1>
+<div class="section">
+<h1><a id="id29" name="id29">2.2.5</a></h1>
<ul class="simple">
<li>30-Jan-2001</li>
</ul>
integrated with the demo yet. It allows a wxPython GUI to be an
XML-RPC server.</p>
</div>
-<div class="section" id="new-in-2-2-2">
-<h1><a name="new-in-2-2-2">New in 2.2.2</a></h1>
+<div class="section">
+<h1><a id="new-in-2-2-2" name="new-in-2-2-2">New in 2.2.2</a></h1>
<ul class="simple">
<li>26-Oct-2000</li>
</ul>
wxStyledTextCtrl to behave better. It's still not as nice as on
wxMSW, but at least it's a bit more usable now.</p>
</div>
-<div class="section" id="new-in-2-2-1">
-<h1><a name="new-in-2-2-1">New in 2.2.1</a></h1>
+<div class="section">
+<h1><a id="new-in-2-2-1" name="new-in-2-2-1">New in 2.2.1</a></h1>
<ul class="simple">
<li>22-Aug-2000</li>
</ul>
<p>Various tweaks, fixes, missing methods, etc.</p>
<p>Added example use of wxTaskBarIcon to the demo.</p>
</div>
-<div class="section" id="new-in-2-2-0">
-<h1><a name="new-in-2-2-0">New in 2.2.0</a></h1>
+<div class="section">
+<h1><a id="new-in-2-2-0" name="new-in-2-2-0">New in 2.2.0</a></h1>
<ul class="simple">
<li>17-Jul-2000</li>
</ul>
<p>Added wxFrame.ShowFullScreen for MSW.</p>
<p>Added PyShellWindow to the wxPython.lib package.</p>
</div>
-<div class="section" id="new-in-2-1-16">
-<h1><a name="new-in-2-1-16">New in 2.1.16</a></h1>
+<div class="section">
+<h1><a id="new-in-2-1-16" name="new-in-2-1-16">New in 2.1.16</a></h1>
<ul class="simple">
<li>12-Jun-2000</li>
</ul>
OnScroll</blockquote>
<p>Added wxSpinCtrl.</p>
</div>
-<div class="section" id="new-in-2-1-15">
-<h1><a name="new-in-2-1-15">New in 2.1.15</a></h1>
+<div class="section">
+<h1><a id="new-in-2-1-15" name="new-in-2-1-15">New in 2.1.15</a></h1>
<ul class="simple">
<li>25-Apr-2000</li>
</ul>
until the docs are done. (The croud murmers contentedly as the tool
provider smiles convincingly and removes his flame-proof suit.)</p>
</div>
-<div class="section" id="what-s-new-in-2-1-13">
-<h1><a name="what-s-new-in-2-1-13">What's new in 2.1.13</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1-13" name="what-s-new-in-2-1-13">What's new in 2.1.13</a></h1>
<ul class="simple">
<li>3-Feb-2000</li>
</ul>
than wxMSW! (The feat is accomplished by using the wxTB_DOCKABLE
style flag instead of trying to float it ourselves.)</p>
</div>
-<div class="section" id="what-s-new-in-2-1-11">
-<h1><a name="what-s-new-in-2-1-11">What's new in 2.1.11</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1-11" name="what-s-new-in-2-1-11">What's new in 2.1.11</a></h1>
<ul class="simple">
<li>13-Nov-1999</li>
</ul>
wxGTK...</p>
<p>Added an MVC tree control from Bryn Keller to the library.</p>
</div>
-<div class="section" id="what-s-new-in-2-1-5">
-<h1><a name="what-s-new-in-2-1-5">What's new in 2.1.5</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1-5" name="what-s-new-in-2-1-5">What's new in 2.1.5</a></h1>
<ul class="simple">
<li>12-Oct-1999</li>
</ul>
crept in at the last minute before 2.1.4 was called done. No new
major features.</p>
</div>
-<div class="section" id="what-s-new-in-2-1-4">
-<h1><a name="what-s-new-in-2-1-4">What's new in 2.1.4</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1-4" name="what-s-new-in-2-1-4">What's new in 2.1.4</a></h1>
<ul class="simple">
<li>7-Oct-1999</li>
</ul>
a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some
problems...)</p>
</div>
-<div class="section" id="what-s-new-in-2-1b3">
-<h1><a name="what-s-new-in-2-1b3">What's new in 2.1b3</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1b3" name="what-s-new-in-2-1b3">What's new in 2.1b3</a></h1>
<ul class="simple">
<li>1-Sep-1999</li>
</ul>
takes raw coordinants and sizes, and the new wxDC.Blit is for the new
interface using wxPoints and a wxSize.</p>
</div>
-<div class="section" id="what-s-new-in-2-1b2">
-<h1><a name="what-s-new-in-2-1b2">What's new in 2.1b2</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1b2" name="what-s-new-in-2-1b2">What's new in 2.1b2</a></h1>
<ul class="simple">
<li>6-Aug-1999</li>
</ul>
<p>SWIG support routines now compiled separately instead of being bundled
in wx.cpp.</p>
</div>
-<div class="section" id="what-s-new-in-2-1b1">
-<h1><a name="what-s-new-in-2-1b1">What's new in 2.1b1</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-1b1" name="what-s-new-in-2-1b1">What's new in 2.1b1</a></h1>
<ul class="simple">
<li>28-Jun-1999</li>
</ul>
types of layout algorithms. You saw it here first! These classes are
not even in the wxWindows C++ library yet!</p>
</div>
-<div class="section" id="what-s-new-in-2-0b9">
-<h1><a name="what-s-new-in-2-0b9">What's new in 2.0b9</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-0b9" name="what-s-new-in-2-0b9">What's new in 2.0b9</a></h1>
<ul class="simple">
<li>1-May-1999</li>
</ul>
<p>Fixed some problems with how SWIG was wrapping some wxTreeCtrl
methods.</p>
</div>
-<div class="section" id="what-s-new-in-2-0b8">
-<h1><a name="what-s-new-in-2-0b8">What's new in 2.0b8</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-0b8" name="what-s-new-in-2-0b8">What's new in 2.0b8</a></h1>
<ul class="simple">
<li>28-Mar-1999</li>
</ul>
<p>Several missing methods from various classes.</p>
<p>Various bug fixes.</p>
</div>
-<div class="section" id="what-s-new-in-2-0b7">
-<h1><a name="what-s-new-in-2-0b7">What's new in 2.0b7</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-0b7" name="what-s-new-in-2-0b7">What's new in 2.0b7</a></h1>
<ul class="simple">
<li>15-Mar-1999</li>
</ul>
<p>Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.</p>
<p>Added missing constructor and other methods for wxMenuItem.</p>
</div>
-<div class="section" id="what-s-new-in-2-0b6">
-<h1><a name="what-s-new-in-2-0b6">What's new in 2.0b6</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-0b6" name="what-s-new-in-2-0b6">What's new in 2.0b6</a></h1>
<ul class="simple">
<li>4-Mar-1999</li>
</ul>
<p>Just a quickie update to fix the self-installer to be compatible with
Python 1.5.2b2's Registry settings.</p>
</div>
-<div class="section" id="what-s-new-in-2-0b5">
-<h1><a name="what-s-new-in-2-0b5">What's new in 2.0b5</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-2-0b5" name="what-s-new-in-2-0b5">What's new in 2.0b5</a></h1>
<ul class="simple">
<li>25-Feb-1999</li>
</ul>
wxRegConfig class.</p>
<p>As usual, some bug fixes, tweaks, etc.</p>
</div>
-<div class="section" id="what-s-new-in-0-5-3">
-<h1><a name="what-s-new-in-0-5-3">What's new in 0.5.3</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-0-5-3" name="what-s-new-in-0-5-3">What's new in 0.5.3</a></h1>
<ul class="simple">
<li>30-Jan-1999</li>
</ul>
<p>Various cleanup, tweaks, minor additions, etc. to maintain
compatibility with the current wxWindows.</p>
</div>
-<div class="section" id="what-s-new-in-0-5-0">
-<h1><a name="what-s-new-in-0-5-0">What's new in 0.5.0</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-0-5-0" name="what-s-new-in-0-5-0">What's new in 0.5.0</a></h1>
<p>Changed the import semantics from <tt class="docutils literal"><span class="pre">"from</span> <span class="pre">wxPython</span> <span class="pre">import</span> <span class="pre">*"</span></tt> to
<tt class="docutils literal"><span class="pre">"from</span> <span class="pre">wxPython.wx</span> <span class="pre">import</span> <span class="pre">*"</span></tt> This is for people who are worried about
namespace pollution, they can use "from wxPython import wx" and then
objects to references to reflect changes in the wxWindows API.</p>
<p>Other assorted fixes and additions.</p>
</div>
-<div class="section" id="what-s-new-in-0-4-2">
-<h1><a name="what-s-new-in-0-4-2">What's new in 0.4.2</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-0-4-2" name="what-s-new-in-0-4-2">What's new in 0.4.2</a></h1>
<ul class="simple">
<li>21-Oct-1998</li>
</ul>
<p>The dynamicly loaded module on Solaris is still segfaulting, so it
must have been a different issue all along...</p>
</div>
-<div class="section" id="what-s-new-in-0-4">
-<h1><a name="what-s-new-in-0-4">What's New in 0.4</a></h1>
+<div class="section">
+<h1><a id="what-s-new-in-0-4" name="what-s-new-in-0-4">What's New in 0.4</a></h1>
<ul class="simple">
<li>2-Oct-1998</li>
</ul>
<li>Varioius bug fixes, enhancements, etc.</li>
</ol>
</div>
-<div class="section" id="wxpython-0-3">
-<h1><a name="wxpython-0-3">wxPython 0.3</a></h1>
+<div class="section">
+<h1><a id="wxpython-0-3" name="wxpython-0-3">wxPython 0.3</a></h1>
<ul class="simple">
<li>9-Aug-1998</li>
</ul>
2.7.1.1
-------
-*
+* 18-Oct-2006
The following deprecated items have been removed:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
-<title>Installing wxPython 2.6 from Source</title>
-<link rel="stylesheet" href="default.css" type="text/css" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>Installing wxPython 2.7 from Source</title>
+<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>
<body>
-<div class="document" id="installing-wxpython-2-6-from-source">
-<h1 class="title">Installing wxPython 2.6 from Source</h1>
+<div class="document" id="installing-wxpython-2-7-from-source">
+<h1 class="title">Installing wxPython 2.7 from Source</h1>
<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
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
described here will take precedence for doing installations.</p>
-<div class="section" id="installing-on-unix-like-systems-not-os-x">
-<h1><a name="installing-on-unix-like-systems-not-os-x">Installing on Unix-like Systems (not OS X)</a></h1>
+<div class="section">
+<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">
<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
path into the binaries by using the rpath option when configuring
wxWidgets. For example:</p>
<pre class="literal-block">
---enable-rpath=/opt/wx/2.6/lib \
+--enable-rpath=/opt/wx/2.7/lib \
</pre>
<p>SOLARIS NOTE: The --enable-rpath option may cause problems when
using wxGTK on Solaris when compiling wxPython as described below.
whatever WXPORT, UNICODE, etc. settings you used for the initial
build step:</p>
<pre class="literal-block">
-python2.3 setup.py install
+python2.5 setup.py install
</pre>
<p>If you would like to install to some place besides the prefix where
Python is installed, (such as to your home directory) then you can
</li>
</ol>
</div>
-<div class="section" id="installing-on-os-x">
-<h1><a name="installing-on-os-x">Installing on OS X</a></h1>
+<div class="section">
+<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
instructions above, except for a few small, but important details:</p>
<ol class="arabic simple">
fully use the GUI display.</li>
</ol>
</div>
-<div class="section" id="installing-on-windows">
-<h1><a name="installing-on-windows">Installing on Windows</a></h1>
+<div class="section">
+<h1><a id="installing-on-windows" name="installing-on-windows">Installing on Windows</a></h1>
<ol class="arabic">
<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
found at runtime by the extension modules without requiring that
they be installed on the PATH:</p>
<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>
</li>
</ol>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<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>
<body>
<div class="document" id="wxpython-2-6-migration-guide">
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
things that have been added to wxPython.</p>
-<div class="section" id="wxname-change">
-<h1><a name="wxname-change">wxName Change</a></h1>
+<div class="section">
+<h1><a id="wxname-change" name="wxname-change">wxName Change</a></h1>
<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>
<p>This won't really affect wxPython all that much, other than the fact
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>
</div>
-<div class="section" id="module-initialization">
-<h1><a name="module-initialization">Module Initialization</a></h1>
+<div class="section">
+<h1><a id="module-initialization" name="module-initialization">Module Initialization</a></h1>
<p>The import-startup-bootstrap process employed by wxPython was changed
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
will now check that a wx.App object has already been created and will
raise a wx.PyNoAppError exception if not.</p>
</div>
-<div class="section" id="swig-1-3">
-<h1><a name="swig-1-3">SWIG 1.3</a></h1>
+<div class="section">
+<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
customizations added that I hope to get folded back into the main SWIG
distribution.) This has some far reaching ramifications:</p>
need to change it to isinstance(obj, wx.Foo).</p>
</blockquote>
</div>
-<div class="section" id="binding-events">
-<h1><a name="binding-events">Binding Events</a></h1>
+<div class="section">
+<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
class. They have a __call__ method so they can still be used as
functions like before, but making them instances adds some
item = menu.Append(-1, "E&xit", "Terminate the App")
self.Bind(wx.EVT_MENU, self.OnExit, item)
-2.
+2.
item = menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App")
self.Bind(wx.EVT_MENU, self.OnExit, item)
-3.
+3.
menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App")
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
</pre>
"""
</pre>
</div>
-<div class="section" id="the-wx-namespace">
-<h1><a name="the-wx-namespace">The wx Namespace</a></h1>
+<div class="section">
+<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
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
old wxNames, and the old style of event binding it will still work
just fine.</p>
</div>
-<div class="section" id="new-wx-dc-methods">
-<h1><a name="new-wx-dc-methods">New wx.DC Methods</a></h1>
+<div class="section">
+<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
implementation of the wx.DC Draw and other methods that broke
backwards compatibility in the name of consistency. That change has
FoodFillPoint(self, pt, colour, style = wx.FLOOD_SURFACE)
GetPixel(self, x,y)
-GetPixelPoint(self, pt)
+GetPixelPoint(self, pt)
DrawLine(self, x1, y1, x2, y2)
DrawLinePoint(self, pt1, pt2)
bool Blit(self, xdest, ydest, width, height, sourceDC, xsrc, ysrc,
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)
SetClippingRect(self, rect)
</pre>
</div>
-<div class="section" id="building-extending-and-embedding-wxpython">
-<h1><a name="building-extending-and-embedding-wxpython">Building, Extending and Embedding wxPython</a></h1>
+<div class="section">
+<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
the contribs (gizmos, stc, xrc, etc.) rather than building local
copies of them. If you build your own copies of wxPython please be
wx event handlers being called (such as during the call to
os.startfile.)</p>
</div>
-<div class="section" id="two-or-three-phase-create">
-<h1><a name="two-or-three-phase-create">Two (or Three!) Phase Create</a></h1>
+<div class="section">
+<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
example, to set an extended style flag, or for XRC handlers) then
there is now a new method named PostCreate to help with transplanting
self.PostCreate(pre)
</pre>
</div>
-<div class="section" id="sizers">
-<h1><a name="sizers">Sizers</a></h1>
+<div class="section">
+<h1><a id="sizers" name="sizers">Sizers</a></h1>
<p>The hack allowing the old "option" keyword parameter has been removed.
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
</ul>
</blockquote>
</div>
-<div class="section" id="platforminfo">
-<h1><a name="platforminfo">PlatformInfo</a></h1>
+<div class="section">
+<h1><a id="platforminfo" name="platforminfo">PlatformInfo</a></h1>
<p>Added wx.PlatformInfo which is a tuple containing strings that
describe the platform and build options of wxPython. This lets you
know more about the build than just the __WXPORT__ value that
sense to add to this tuple please let me know.</p>
<p>BTW, wx.Platform will probably be deprecated in the future.</p>
</div>
-<div class="section" id="activex">
-<h1><a name="activex">ActiveX</a></h1>
+<div class="section">
+<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
extension module called wx.activex. It is very generic and dynamic
and should allow hosting of arbitray ActiveX controls within your
this in the handler for the iewin.EVT_NewWindow2 event:</p>
<pre class="literal-block">
def OnNewWindow2(self, evt):
- evt.Cancel = True
+ evt.Cancel = True
</pre>
<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
genaxmodule tool. Beyond that you'll need to consult the docs
provided by the makers of the ActiveX control that you are using.</p>
</div>
-<div class="section" id="png-images">
-<h1><a name="png-images">PNG Images</a></h1>
+<div class="section">
+<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
information to a mask when the image was loaded. Pixels that were
more than halfway transparent would be made fully transparent by the
</ul>
</blockquote>
</div>
-<div class="section" id="ogl-is-dead-long-live-ogl">
-<h1><a name="ogl-is-dead-long-live-ogl">OGL is dead! LONG LIVE OGL!</a></h1>
+<div class="section">
+<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>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
...
def OnSizingEndDragLeft(self, pt, x, y, keys, attch):
ogl.DividedShape.OnSizingEndDragLeft(self, pt, x, y, keys, attch)
- ...
+ ...
</pre>
</div>
-<div class="section" id="obsolete-modules">
-<h1><a name="obsolete-modules">Obsolete Modules</a></h1>
+<div class="section">
+<h1><a id="obsolete-modules" name="obsolete-modules">Obsolete Modules</a></h1>
<p>Instead of over a dozen separate extension modules linked together
into a single extension module, the "core" module is now just a few
extensions that are linked independently, and then merged together
<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>
</div>
-<div class="section" id="wx-taskbaricon">
-<h1><a name="wx-taskbaricon">wx.TaskBarIcon</a></h1>
+<div class="section">
+<h1><a id="wx-taskbaricon" name="wx-taskbaricon">wx.TaskBarIcon</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p>
<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
you want the app to keep running with just the icon in the task bar
and the MainLoop will not exit.</p>
</div>
-<div class="section" id="version-number-change">
-<h1><a name="version-number-change">Version Number Change</a></h1>
+<div class="section">
+<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>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.
...
</pre>
</div>
-<div class="section" id="multi-version-installs">
-<h1><a name="multi-version-installs">Multi-Version Installs</a></h1>
+<div class="section">
+<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>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
<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>
</div>
-<div class="section" id="miscellaneous-stuff">
-<h1><a name="miscellaneous-stuff">Miscellaneous Stuff</a></h1>
+<div class="section">
+<h1><a id="miscellaneous-stuff" name="miscellaneous-stuff">Miscellaneous Stuff</a></h1>
<p>wxPyDefaultPosition and wxPyDefaultSize are gone. Use the
wxDefaultPosition and wxDefaultSize objects instead.</p>
<p>Similarly, the wxSystemSettings backwards compatibiility aliases for
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The Py Manual</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="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>
<body>
<div class="document" id="the-py-manual">
<td>1.5</td></tr>
</tbody>
</table>
-<div class="contents topic" id="contents">
-<p class="topic-title first"><a name="contents">Contents</a></p>
+<div class="contents topic">
+<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<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>
</ul>
</div>
-<div class="section" id="introduction">
-<h1><a class="toc-backref" href="#id4" name="introduction">Introduction</a></h1>
+<div class="section">
+<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
library of Python source code modules. Py is the new name for the
project that began as PyCrust. Py is officially part of <a class="reference" href="http://www.wxpython.org/">wxPython</a>,
and includes PyCrust, so PyCrust is no longer distributed separately.</p>
</div>
-<div class="section" id="developer-reference">
-<h1><a class="toc-backref" href="#id5" name="developer-reference">Developer Reference</a></h1>
+<div class="section">
+<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><a class="reference" href="http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html">http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html</a></p>
</div>
-<div class="section" id="what-is-py">
-<h1><a class="toc-backref" href="#id6" name="what-is-py">What is Py?</a></h1>
+<div class="section">
+<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
of whimsically-named Python programs and modules that began as the
PyCrust project. So Py is really several things: a set of standalone
Python and wxPython, so it works equally well on Windows, Linux and
Mac OS X.</p>
</div>
-<div class="section" id="pycrust-is-dead-long-live-py">
-<h1><a class="toc-backref" href="#id7" name="pycrust-is-dead-long-live-py">PyCrust is dead! Long live Py!</a></h1>
+<div class="section">
+<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
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>.
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>
</div>
-<div class="section" id="py-standalone-programs">
-<h1><a class="toc-backref" href="#id8" name="py-standalone-programs">Py standalone programs</a></h1>
+<div class="section">
+<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>
<ul class="simple">
<li>PyAlaCarte</li>
<li>PyWrap</li>
</ul>
</div>
-<div class="section" id="pyalacarte">
-<h1><a class="toc-backref" href="#id9" name="pyalacarte">PyAlaCarte</a></h1>
+<div class="section">
+<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
simple, single-file interface. As a standalone application, it is
good for simple, short editing tasks. But it is really meant to be
more of an example of how to embed the Py editor into a wxPython
application.</p>
</div>
-<div class="section" id="pyalamode">
-<h1><a class="toc-backref" href="#id10" name="pyalamode">PyAlaMode</a></h1>
+<div class="section">
+<h1><a class="toc-backref" href="#id10" id="pyalamode" name="pyalamode">PyAlaMode</a></h1>
<p>PyAlaMode is a Python source code editor.</p>
</div>
-<div class="section" id="pycrust">
-<h1><a class="toc-backref" href="#id11" name="pycrust">PyCrust</a></h1>
+<div class="section">
+<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
shell. It includes a tabbed notebook containing a namespace tree
(PyFilling), and several other things.</p>
</div>
-<div class="section" id="pyfilling">
-<h1><a class="toc-backref" href="#id12" name="pyfilling">PyFilling</a></h1>
+<div class="section">
+<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
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>
</div>
-<div class="section" id="pyshell">
-<h1><a class="toc-backref" href="#id13" name="pyshell">PyShell</a></h1>
+<div class="section">
+<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
as PyCrust, but doesn't have any of the extra features that appear in
the PyCrust notebook interface.</p>
<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>
</div>
</div>
-<div class="section" id="pywrap">
-<h1><a class="toc-backref" href="#id14" name="pywrap">PyWrap</a></h1>
+<div class="section">
+<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
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
application within the PyCrust shell, as well as the PyFilling
namespace viewer.</p>
</div>
-<div class="section" id="py-modules">
-<h1><a class="toc-backref" href="#id15" name="py-modules">Py modules</a></h1>
+<div class="section">
+<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
separate from non-graphical code, and many of the Py modules can be
used by other programs. Likewise, other programs can supply some of
required, PyCrust will work just as well with your interpreter as with
its default interpreter.</p>
</div>
-<div class="section" id="projects-using-py">
-<h1><a class="toc-backref" href="#id16" name="projects-using-py">Projects using Py</a></h1>
+<div class="section">
+<h1><a class="toc-backref" href="#id16" id="projects-using-py" name="projects-using-py">Projects using Py</a></h1>
<ul class="simple">
<li><a class="reference" href="http://conflictsolver.sourceforge.net/">Conflict Solver</a></li>
<li><a class="reference" href="http://www.gnumed.org/">Gnumed</a></li>
<li><a class="reference" href="http://linus.yorktown.arlington.k12.va.us/CS/APCSC/student_sites/David_Mayo/wxGasp">wxGasp</a></li>
</ul>
</div>
-<div class="section" id="history-of-changes">
-<h1><a class="toc-backref" href="#id17" name="history-of-changes">History of changes</a></h1>
+<div class="section">
+<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
programs and modules, since the beginning.</p>
-<div class="section" id="id1">
-<h2><a class="toc-backref" href="#id18" name="id1">0.9.5 (12/23/2005)</a></h2>
+<div class="section">
+<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
Sebastian Haase, up until their 7-31-2005 version. (Their next
version broke some existing functionality, and added some confusing
<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
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>
<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
<li>Added Find and Find-Next functions that use the wx.FindReplaceDialog.</li>
</ul>
</div>
-<div class="section" id="to-2004">
-<h2><a class="toc-backref" href="#id19" name="to-2004">0.9.4 (1/25/2004 to //2004)</a></h2>
+<div class="section">
+<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 docs tabs from crust interface:
* wxPython Docs
<p>Changed default namespace of Shell to __main__.__dict__, instead of an
empty dictionary.</p>
</div>
-<div class="section" id="to-1-24-2004">
-<h2><a class="toc-backref" href="#id20" name="to-1-24-2004">0.9.3 (9/25/2003 to 1/24/2004)</a></h2>
+<div class="section">
+<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
were lost in the confusion. I'll try to do better in the future.</p>
</div>
-<div class="section" id="to-9-25-2003">
-<h2><a class="toc-backref" href="#id21" name="to-9-25-2003">0.9.2 (5/3/2003 to 9/25/2003)</a></h2>
+<div class="section">
+<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 "wx" package:</p>
<pre class="literal-block">
import wx
return stc.StyledTextCtrl.CanPaste(self) and self.CanEdit()
</pre>
</div>
-<div class="section" id="to-5-2-2003">
-<h2><a class="toc-backref" href="#id22" name="to-5-2-2003">0.9.1 (3/21/2003 to 5/2/2003)</a></h2>
+<div class="section">
+<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>
<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>
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>
</div>
-<div class="section" id="to-3-20-2003">
-<h2><a class="toc-backref" href="#id23" name="to-3-20-2003">0.9 (2/27/2003 to 3/20/2003)</a></h2>
+<div class="section">
+<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
keybindings:</p>
<pre class="literal-block">
</pre>
<p>Added <tt class="docutils literal"><span class="pre">wxd</span></tt> directory with decoration classes.</p>
</div>
-<div class="section" id="to-2-26-2003">
-<h2><a class="toc-backref" href="#id24" name="to-2-26-2003">0.8.2 (1/5/2003 to 2/26/2003)</a></h2>
+<div class="section">
+<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>.
(Thanks, Kieran Holland.)</p>
<p>Fixed minor things found by PyChecker.</p>
</pre>
<p>More Filling!!! The namespace tree is now dynamically updated.</p>
</div>
-<div class="section" id="to-12-25-2002">
-<h2><a class="toc-backref" href="#id25" name="to-12-25-2002">0.8.1 (12/20/2002 to 12/25/2002)</a></h2>
+<div class="section">
+<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
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
doing some decorating. I wonder where that would be helpful? <wink>)</p>
<p>Fixed handling of icon. Added <tt class="docutils literal"><span class="pre">images.py</span></tt> file.</p>
</div>
-<div class="section" id="to-12-16-2002">
-<h2><a class="toc-backref" href="#id26" name="to-12-16-2002">0.8 (10/29/2002 to 12/16/2002)</a></h2>
+<div class="section">
+<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 "help" 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>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>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>
</div>
-<div class="section" id="to-8-27-2002">
-<h2><a class="toc-backref" href="#id27" name="to-8-27-2002">0.7.2 (2/22/2002 to 8/27/2002)</a></h2>
+<div class="section">
+<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>
<pre class="literal-block">
'__bases__', '__class__', '__dict__', '__name__', 'func_closure',
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>
</div>
-<div class="section" id="to-2-21-2002">
-<h2><a class="toc-backref" href="#id28" name="to-2-21-2002">0.7.1 (12/12/2001 to 2/21/2002)</a></h2>
+<div class="section">
+<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
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>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>
</div>
-<div class="section" id="to-12-11-2001">
-<h2><a class="toc-backref" href="#id29" name="to-12-11-2001">0.7 (10/15/2001 to 12/11/2001)</a></h2>
+<div class="section">
+<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,
Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.</p>
<p>Added full support for multi-line commands, similar to IDLE.</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>
</div>
-<div class="section" id="to-10-12-2001">
-<h2><a class="toc-backref" href="#id30" name="to-10-12-2001">0.6.1 (9/19/2001 to 10/12/2001)</a></h2>
+<div class="section">
+<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
text, as suggested by Raul Cota.</p>
<p>Changed <tt class="docutils literal"><span class="pre">introspect.getAllAttributeNames()</span></tt> to break circular
ZODB objects that are asleep - in a "ghost" state. Otherwise it
returns incomplete info.</p>
</div>
-<div class="section" id="to-9-12-2001">
-<h2><a class="toc-backref" href="#id31" name="to-9-12-2001">0.6 (8/21/2001 to 9/12/2001)</a></h2>
+<div class="section">
+<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><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>
</pre>
<p>Added support for distutils installations.</p>
</div>
-<div class="section" id="to-8-20-2001">
-<h2><a class="toc-backref" href="#id32" name="to-8-20-2001">0.5.4 (8/17/2001 to 8/20/2001)</a></h2>
+<div class="section">
+<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>
<pre class="literal-block">
'size' : 12,
<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>
</div>
-<div class="section" id="id2">
-<h2><a class="toc-backref" href="#id33" name="id2">0.5.3 (8/16/2001)</a></h2>
+<div class="section">
+<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>
<pre class="literal-block">
wxID_SELECTALL = NewId() # This *should* be defined by wxPython.
</pre>
</div>
-<div class="section" id="to-8-15-2001">
-<h2><a class="toc-backref" href="#id34" name="to-8-15-2001">0.5.2 (8/14/2001 to 8/15/2001)</a></h2>
+<div class="section">
+<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 "PyCrust" 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>Added Options menu to PyCrust application.</p>
Plus, Shell will be much easier for gui toolkits/designers to deal
with now.</p>
</div>
-<div class="section" id="to-8-14-2001">
-<h2><a class="toc-backref" href="#id35" name="to-8-14-2001">0.5.1 (8/10/2001 to 8/14/2001)</a></h2>
+<div class="section">
+<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>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
>>> shell.editor.autoCompleteExcludeDouble = 1
</pre>
</div>
-<div class="section" id="id3">
-<h2><a class="toc-backref" href="#id36" name="id3">0.5 (8/8/2001)</a></h2>
+<div class="section">
+<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>
</div>
-<div class="section" id="to-8-7-2001">
-<h2><a class="toc-backref" href="#id37" name="to-8-7-2001">0.4 (8/4/2001 to 8/7/2001)</a></h2>
+<div class="section">
+<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>Fixed bugs.</p>
</div>
-<div class="section" id="to-8-3-2001">
-<h2><a class="toc-backref" href="#id38" name="to-8-3-2001">0.3 (8/2/2001 to 8/3/2001)</a></h2>
+<div class="section">
+<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>Added lots of docstrings.</p>
<p>Imported to CVS repository at SourceForge.</p>
<p>Added call tips.</p>
</div>
-<div class="section" id="to-8-2-2001">
-<h2><a class="toc-backref" href="#id39" name="to-8-2-2001">0.2 (7/30/2001 to 8/2/2001)</a></h2>
+<div class="section">
+<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>Added command autocompletion.</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>,
<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 class="section" id="to-7-19-2001">
-<h2><a class="toc-backref" href="#id40" name="to-7-19-2001">0.1 (7/1/2001 to 7/19/2001)</a></h2>
+<div class="section">
+<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 read-only logging much like IDLE.</p>
<p>Can retrieve a previous command by putting the cursor back on that
<p>Home key honors the prompt.</p>
<p>Created SourceForge account, but nothing was posted.</p>
</div>
-<div class="section" id="in-the-beginning-there-was-pie-7-1-2001">
-<h2><a class="toc-backref" href="#id41" name="in-the-beginning-there-was-pie-7-1-2001">In the beginning, there was pie... (7/1/2001)</a></h2>
+<div class="section">
+<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
frustrated with their dissimilarities, and began to let everyone know
how I felt. At the same time, Scintilla looked like an interesting
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<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>
<body>
<div class="document">
-<div class="section" id="wxpython-readme">
-<h1><a name="wxpython-readme">wxPython README</a></h1>
+<div class="section">
+<h1><a id="wxpython-readme" name="wxpython-readme">wxPython README</a></h1>
<p>Welcome to the wonderful world of wxPython!</p>
<p>So where do you go from here? The best thing to do is to run the demo
and use its source code to help you learn how to use wxPython. Most
for a little help on this process.) Not all classes documented are
available in Python, but most of the GUI related classes are.</p>
</div>
-<div class="section" id="other-info">
-<h1><a name="other-info">Other Info</a></h1>
+<div class="section">
+<h1><a id="other-info" name="other-info">Other Info</a></h1>
<p>Please also see the following files:</p>
<blockquote>
<dl class="docutils">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The wxPython wx Package</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="author" content="Robin Dunn" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="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>
<body>
<div class="document" id="the-wxpython-wx-package">
<td>1.4</td></tr>
</tbody>
</table>
-<div class="contents topic" id="contents">
-<p class="topic-title first"><a name="contents">Contents</a></p>
+<div class="contents topic">
+<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id2" name="id2">Introduction</a></li>
<li><a class="reference" href="#why-change-anything" id="id3" name="id3">Why change anything?</a></li>
<li><a class="reference" href="#where-can-i-find-example-programs-using-the-new-wx-syntax" id="id9" name="id9">Where can I find example programs using the new wx syntax?</a></li>
</ul>
</div>
-<div class="section" id="introduction">
-<h1><a class="toc-backref" href="#id2" name="introduction">Introduction</a></h1>
+<div class="section">
+<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
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
<a class="reference" href="MigrationGuide.html">2.5 Migration Guide</a> to see notes about other big differences in
this release.</p>
</div>
-<div class="section" id="why-change-anything">
-<h1><a class="toc-backref" href="#id3" name="why-change-anything">Why change anything?</a></h1>
+<div class="section">
+<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
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>
the same thing (implement a new wx namespace and drop the "wx" prefix)
and we want wxPython to lead the way.</p>
</div>
-<div class="section" id="what-does-the-new-wx-package-do">
-<h1><a class="toc-backref" href="#id4" name="what-does-the-new-wx-package-do">What does the new wx package do?</a></h1>
+<div class="section">
+<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
getting to this new syntax as quickly as possible. It would import
the old names (like "wxFrame") from the old package and then create new
complicated, but it is mostly automated and so it doesn't cause
problems in most cases.</p>
</div>
-<div class="section" id="will-any-of-this-effect-my-existing-code">
-<h1><a class="toc-backref" href="#id5" name="will-any-of-this-effect-my-existing-code">Will any of this effect my existing code?</a></h1>
+<div class="section">
+<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
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
are using other things that have changed in the API. See the
<a class="reference" href="MigrationGuide.html">Migration Guide</a> for more details.</p>
</div>
-<div class="section" id="what-about-all-the-other-modules-like-grid-html-and-stc">
-<h1><a class="toc-backref" href="#id6" name="what-about-all-the-other-modules-like-grid-html-and-stc">What about all the other modules, like grid, html, and stc?</a></h1>
+<div class="section">
+<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.
And we've got those extra modules covered as well. Each of those
modules (as well as the lib subpackage) has been moved to the new wx
package and reverse-renamers have been placed in the wxPython package
as needed.</p>
</div>
-<div class="section" id="how-do-i-use-this-new-wx-package">
-<h1><a class="toc-backref" href="#id7" name="how-do-i-use-this-new-wx-package">How do I use this new wx package?</a></h1>
+<div class="section">
+<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
version 2.4.1 or higher. So all you have to do is:</p>
<pre class="literal-block">
import wx
</pre>
</div>
-<div class="section" id="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">
-<h1><a class="toc-backref" href="#id8" name="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">What are the issues with converting old code to use the new wx package?</a></h1>
+<div class="section">
+<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>
<pre class="literal-block">
from wxPython import wx
<p>In most cases, existing code can be modified with a simple search and
replace.</p>
</div>
-<div class="section" id="where-can-i-find-example-programs-using-the-new-wx-syntax">
-<h1><a class="toc-backref" href="#id9" name="where-can-i-find-example-programs-using-the-new-wx-syntax">Where can I find example programs using the new wx syntax?</a></h1>
+<div class="section">
+<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
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.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The wxPython Manual</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<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>
<body>
<div class="document" id="the-wxpython-manual">
</tr>
</tbody>
</table>
-<div class="contents topic" id="contents">
-<p class="topic-title first"><a name="contents">Contents</a></p>
+<div class="contents topic">
+<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
<li><a class="reference" href="#what-is-wxpython" id="id2" name="id2">What is wxPython?</a></li>
<li><a class="reference" href="#license" id="id46" name="id46">License</a></li>
</ul>
</div>
-<div class="section" id="introduction">
-<h1><a class="toc-backref" href="#id1" name="introduction">Introduction</a></h1>
+<div class="section">
+<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
programmer <strong>for</strong> his fellow Python programmers. It began as a
simple translation of the wxWidgets documentation (which is written
buy huge quantities of my wxPython book (written with Robin Dunn) and
send one to each of your friends, relatives, and coworkers.</p>
</div>
-<div class="section" id="what-is-wxpython">
-<h1><a class="toc-backref" href="#id2" name="what-is-wxpython">What is wxPython?</a></h1>
+<div class="section">
+<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
allows Python programmers to create programs with a robust, highly
functional graphical user interface, simply and easily. It is
<p>Since the language is Python, wxPython programs are simple, easy to
write and easy to understand.</p>
</div>
-<div class="section" id="wxpython-requirements">
-<h1><a class="toc-backref" href="#id3" name="wxpython-requirements">wxPython requirements</a></h1>
+<div class="section">
+<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
setups.</p>
-<div class="section" id="ms-windows">
-<h2><a class="toc-backref" href="#id4" name="ms-windows">MS-Windows</a></h2>
+<div class="section">
+<h2><a class="toc-backref" href="#id4" id="ms-windows" name="ms-windows">MS-Windows</a></h2>
<ul class="simple">
<li>A 486 or higher PC running MS Windows.</li>
<li>At least ?? MB of disk space.</li>
</ul>
</div>
-<div class="section" id="linux-or-unix">
-<h2><a class="toc-backref" href="#id5" name="linux-or-unix">Linux or Unix</a></h2>
+<div class="section">
+<h2><a class="toc-backref" href="#id5" id="linux-or-unix" name="linux-or-unix">Linux or Unix</a></h2>
<ul class="simple">
<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>At least ?? MB of disk space.</li>
</ul>
</div>
-<div class="section" id="mac-os-x">
-<h2><a class="toc-backref" href="#id6" name="mac-os-x">Mac OS X</a></h2>
+<div class="section">
+<h2><a class="toc-backref" href="#id6" id="mac-os-x" name="mac-os-x">Mac OS X</a></h2>
<ul class="simple">
<li>A PowerPC Mac running Mac OS X 10.x.</li>
<li>At least ?? MB of disk space.</li>
</ul>
</div>
</div>
-<div class="section" id="what-is-wxwidgets">
-<h1><a class="toc-backref" href="#id7" name="what-is-wxwidgets">What is wxWidgets?</a></h1>
+<div class="section">
+<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)
and other facilities on more than one platform. Version 2 currently
supports all desktop versions of MS Windows, Unix with GTK+, Unix with
platforms related to Microsoft Windows, including 16-bit and 32-bit
variants, unless otherwise stated. All trademarks are acknowledged.</p>
</div>
-<div class="section" id="why-another-cross-platform-development-tool">
-<h1><a class="toc-backref" href="#id8" name="why-another-cross-platform-development-tool">Why another cross-platform development tool?</a></h1>
+<div class="section">
+<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
maximize investment in GUI application development. While a number of
commercial class libraries already existed for cross-platform
PNM, PCX).</li>
</ul>
</div>
-<div class="section" id="wxpython-overview">
-<h1><a class="toc-backref" href="#id9" name="wxpython-overview">wxPython Overview</a></h1>
+<div class="section">
+<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
class and override App.OnInit.</p>
<p>An application must have a top-level Frame or Dialog window. Each
functions.</p>
<p>See also Classes by Category for a list of classes.</p>
</div>
-<div class="section" id="utilities-and-libraries-supplied-with-wxpython">
-<h1><a class="toc-backref" href="#id10" name="utilities-and-libraries-supplied-with-wxpython">Utilities and libraries supplied with wxPython</a></h1>
+<div class="section">
+<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
libraries and utilities are supplied with each distribution.</p>
<p>[Need to list these.]</p>
</div>
-<div class="section" id="creating-and-deleting-wxpython-objects">
-<h1><a class="toc-backref" href="#id11" name="creating-and-deleting-wxpython-objects">Creating and deleting wxPython objects</a></h1>
+<div class="section">
+<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>
<!-- In general, classes derived from wxWindow must dynamically
allocated with new and deleted with delete. If you delete a window,
that may be in use. Code that doesn't do this will probably work
fine on some platforms, and then fail under Windows. -->
</div>
-<div class="section" id="app-overview">
-<h1><a class="toc-backref" href="#id12" name="app-overview">App overview</a></h1>
+<div class="section">
+<h1><a class="toc-backref" href="#id12" id="app-overview" name="app-overview">App overview</a></h1>
<p>Classes: wx.App</p>
-<div class="section" id="application-initialization">
-<h2><a class="toc-backref" href="#id13" name="application-initialization">Application initialization</a></h2>
+<div class="section">
+<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
create a top window as a bare minimum.</p>
<p>OnInit must return a boolean value to indicate whether processing
main()
</pre>
</div>
-<div class="section" id="application-shutdown">
-<h2><a class="toc-backref" href="#id14" name="application-shutdown">Application shutdown</a></h2>
+<div class="section">
+<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
windows is closed. This is normally the expected behaviour and means
that it is enough to call Close() in response to the "Exit" menu
<p>[Need examples of objects needing cleanup to keep app from crashing.]</p>
</div>
</div>
-<div class="section" id="sizer-overview">
-<h1><a class="toc-backref" href="#id15" name="sizer-overview">Sizer overview</a></h1>
+<div class="section">
+<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,
wx.StaticBoxSizer, wx.NotebookSizer, wx.CreateButtonSizer</p>
<table border="1" class="docutils">
wxWorkshop create dialogs based exclusively on sizers, practically
forcing the user to create platform independent layouts without
compromises.</p>
-<div class="section" id="the-idea-behind-sizers">
-<h2><a class="toc-backref" href="#id16" name="the-idea-behind-sizers">The idea behind sizers</a></h2>
+<div class="section">
+<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
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
around a dialog item (or another sizer). These sizers will be
discussed one by one in the text below.</p>
</div>
-<div class="section" id="common-features">
-<h2><a class="toc-backref" href="#id17" name="common-features">Common features</a></h2>
+<div class="section">
+<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
dialog item (or several dialog items), which they contain. Such items
are sometimes referred to as the children of the sizer. Independent
of how the individual sizers lay out their children, all children have
certain features in common:</p>
-<div class="section" id="a-minimal-size">
-<h3><a class="toc-backref" href="#id18" name="a-minimal-size">A minimal size</a></h3>
+<div class="section">
+<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
controls and may either be set explicitly in the size field of the
control constructor or may be calculated by wxPython, typically by
height, but not their width (e.g. a single line text control):</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="a-border">
-<h3><a class="toc-backref" href="#id19" name="a-border">A border</a></h3>
+<div class="section">
+<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
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 0, 5, and 10 pixels around the button:</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="an-alignment">
-<h3><a class="toc-backref" href="#id20" name="an-alignment">An alignment</a></h3>
+<div class="section">
+<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
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
aligned at the top, one is aligned at the bottom:</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="a-stretch-factor">
-<h3><a class="toc-backref" href="#id21" name="a-stretch-factor">A stretch factor</a></h3>
+<div class="section">
+<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
than its children and their borders need, the question arises how to
distribute the surplus space among the children. For this purpose, a
<p>Within wxDesigner, this stretch factor gets set from the Option menu.</p>
</div>
</div>
-<div class="section" id="boxsizer">
-<h2><a class="toc-backref" href="#id22" name="boxsizer">BoxSizer</a></h2>
+<div class="section">
+<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,
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
last sample, only the box sizer is a vertical box sizer now:</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="staticboxsizer">
-<h2><a class="toc-backref" href="#id23" name="staticboxsizer">StaticBoxSizer</a></h2>
+<div class="section">
+<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
box. Here is a sample:</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="gridsizer">
-<h2><a class="toc-backref" href="#id24" name="gridsizer">GridSizer</a></h2>
+<div class="section">
+<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
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
the respectively other orientation if new children are added:</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="flexgridsizer">
-<h2><a class="toc-backref" href="#id25" name="flexgridsizer">FlexGridSizer</a></h2>
+<div class="section">
+<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
each column and the height of each row are calculated individually
according the minimal requirements from the respectively biggest
above, but using a flex grid sizer:</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="notebooksizer">
-<h2><a class="toc-backref" href="#id26" name="notebooksizer">NotebookSizer</a></h2>
+<div class="section">
+<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
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
and decorations.</p>
<p>[Need graphics]</p>
</div>
-<div class="section" id="programming-with-boxsizer">
-<h2><a class="toc-backref" href="#id27" name="programming-with-boxsizer">Programming with BoxSizer</a></h2>
+<div class="section">
+<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
laid out in rather simple basic geometry, typically in a row or a
column or several hierarchies of either.</p>
controlled by the three parameters of the Add() method.</p>
<p>[Show code and graphic here.]</p>
</div>
-<div class="section" id="programming-with-gridsizer">
-<h2><a class="toc-backref" href="#id28" name="programming-with-gridsizer">Programming with GridSizer</a></h2>
+<div class="section">
+<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
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
is the height of the tallest child.</p>
<p>[Show code and graphic here.]</p>
</div>
-<div class="section" id="programming-with-flexgridsizer">
-<h2><a class="toc-backref" href="#id29" name="programming-with-flexgridsizer">Programming with FlexGridSizer</a></h2>
+<div class="section">
+<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
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
the GridSizer.</p>
<p>[Show code and graphic here.]</p>
</div>
-<div class="section" id="programming-with-notebooksizer">
-<h2><a class="toc-backref" href="#id30" name="programming-with-notebooksizer">Programming with NotebookSizer</a></h2>
+<div class="section">
+<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
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
is aware of:</p>
<p>[Show code and graphic here.]</p>
</div>
-<div class="section" id="programming-with-staticboxsizer">
-<h2><a class="toc-backref" href="#id31" name="programming-with-staticboxsizer">Programming with StaticBoxSizer</a></h2>
+<div class="section">
+<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
around the sizer. Note that this static box has to be created
separately.</p>
<p>[Show code and graphic here.]</p>
</div>
-<div class="section" id="dialog-createbuttonsizer">
-<h2><a class="toc-backref" href="#id32" name="dialog-createbuttonsizer">Dialog.CreateButtonSizer</a></h2>
+<div class="section">
+<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)
method that can be used to create a standard button sizer in which
standard buttons are displayed. The following flags can be passed to
</table>
</div>
</div>
-<div class="section" id="date-and-time-classes-overview">
-<h1><a class="toc-backref" href="#id33" name="date-and-time-classes-overview">Date and time classes overview</a></h1>
+<div class="section">
+<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
times. Some of the supported features of the DateTime class are:</p>
<table border="1" class="docutils">
</tr>
</tbody>
</table>
-<div class="section" id="all-date-time-classes-at-a-glance">
-<h2><a class="toc-backref" href="#id34" name="all-date-time-classes-at-a-glance">All date/time classes at a glance</a></h2>
+<div class="section">
+<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
absolute moment in time, there are also two classes - TimeSpan and
DateSpan which represent the intervals of time.</p>
this class for which (only) Saturdays and Sundays are the holidays.
See more about these classes in the discussion of the holidays.</p>
</div>
-<div class="section" id="datetime-characteristics">
-<h2><a class="toc-backref" href="#id35" name="datetime-characteristics">DateTime characteristics</a></h2>
+<div class="section">
+<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
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
have Julian calendar support as well and support for other calendars
(Maya, Hebrew, Chinese...) is not ruled out.</p>
</div>
-<div class="section" id="difference-between-datespan-and-timespan">
-<h2><a class="toc-backref" href="#id36" name="difference-between-datespan-and-timespan">Difference between DateSpan and TimeSpan</a></h2>
+<div class="section">
+<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
the time (and hence only one DateTime class), there are at least two
methods to describe a time interval.</p>
in situations when you do need to understand what 'in a month' means
(of course, it is just DateTime.Now() + DateSpan.Month()).</p>
</div>
-<div class="section" id="date-arithmetics">
-<h2><a class="toc-backref" href="#id37" name="date-arithmetics">Date arithmetics</a></h2>
+<div class="section">
+<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
all of them make sense. For example, multiplying a date by a number
is an invalid operation, even though multiplying either of the time
</tbody>
</table>
</div>
-<div class="section" id="time-zone-considerations">
-<h2><a class="toc-backref" href="#id38" name="time-zone-considerations">Time zone considerations</a></h2>
+<div class="section">
+<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
work in the local time zone. Because of this, all DateTime
constructors and setters which take the broken down date assume that
printf("The time is %s in local time zone", dt.FormatTime().c_str());
printf("The time is %s in GMT", dt.FormatTime(wxDateTime::GMT).c_str());</p>
</div>
-<div class="section" id="daylight-saving-time-dst">
-<h2><a class="toc-backref" href="#id39" name="daylight-saving-time-dst">Daylight saving time (DST)</a></h2>
+<div class="section">
+<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
better left to the operating system which is supposed to be configured
by the administrator to behave correctly. Unfortunately, when doing
<p>The time zone handling methods use these functions too, so they are
subject to the same limitations.</p>
</div>
-<div class="section" id="datetime-and-holidays">
-<h2><a class="toc-backref" href="#id40" name="datetime-and-holidays">DateTime and Holidays</a></h2>
+<div class="section">
+<h2><a class="toc-backref" href="#id40" id="datetime-and-holidays" name="datetime-and-holidays">DateTime and Holidays</a></h2>
<p>[TODO]</p>
</div>
</div>
-<div class="section" id="classes-by-category">
-<h1><a class="toc-backref" href="#id41" name="classes-by-category">Classes by category</a></h1>
+<div class="section">
+<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>
</div>
-<div class="section" id="id-constants">
-<h1><a class="toc-backref" href="#id42" name="id-constants">ID constants</a></h1>
+<div class="section">
+<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>ID_ABORT
ID_ABOUT
ID_YES
ID_YESTOALL</p>
</div>
-<div class="section" id="source-document">
-<h1><a class="toc-backref" href="#id43" name="source-document">Source document</a></h1>
+<div class="section">
+<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
clicking the link at the bottom of this page (assuming you are viewing
the html file). It is written using a fantastic formatting convention
using the Docutils utilities, which can turn reStructuredText
documents into html, xml, pdf, and even OpenOffice files.</p>
</div>
-<div class="section" id="submitting-changes-to-the-source-document">
-<h1><a class="toc-backref" href="#id44" name="submitting-changes-to-the-source-document">Submitting changes to the source document</a></h1>
+<div class="section">
+<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>
<pre class="literal-block">
.. This is text from the wxWidgets documentation that needs to be
contributors. (Contributors who also send me gifts of coffee,
chocolate, or currency will have their names listed in bold.)</p>
</div>
-<div class="section" id="contributors">
-<h1><a class="toc-backref" href="#id45" name="contributors">Contributors</a></h1>
+<div class="section">
+<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
name):</p>
<ul class="simple">
<li>Vadim Zeitlin</li>
</ul>
</div>
-<div class="section" id="license">
-<h1><a class="toc-backref" href="#id46" name="license">License</a></h1>
+<div class="section">
+<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.
As such, it adheres to the same license, which is provided here:</p>
<pre class="literal-block">