summaryrefslogtreecommitdiffstats
path: root/python/pyqt/doc/qtdocs.sip
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyqt/doc/qtdocs.sip')
-rw-r--r--python/pyqt/doc/qtdocs.sip1920
1 files changed, 1920 insertions, 0 deletions
diff --git a/python/pyqt/doc/qtdocs.sip b/python/pyqt/doc/qtdocs.sip
new file mode 100644
index 00000000..070a4fb4
--- /dev/null
+++ b/python/pyqt/doc/qtdocs.sip
@@ -0,0 +1,1920 @@
+// This is the SIP file for organising the PyQt documentation.
+//
+// Copyright (c) 2007
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of PyQt.
+//
+// This copy of PyQt is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2, or (at your option) any later
+// version.
+//
+// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// PyQt; see the file LICENSE. If not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+%Module Dummy
+
+
+%Include qt/versions.sip
+
+
+%Doc
+<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
+<Article>
+<ArtHeader>
+ <Title>Python Bindings for Qt (3.17.2)</Title>
+ <Author>
+ <FirstName>Phil</FirstName>
+ <Surname>Thompson</Surname>
+ </Author>
+ <Abstract>
+ <Para>
+ This document describes a set of Python bindings for the Qt widget set.
+ Contact the author at <Email>phil@riverbankcomputing.co.uk</Email>.
+ </Para>
+ </Abstract>
+</ArtHeader>
+
+
+<Sect1><Title>Introduction</Title>
+<Para>
+PyQt is a set of Python bindings for the Qt toolkit and available for all
+platforms supported by Qt, including Windows, Linux, UNIX, MacOS/X and embedded
+systems such as the Sharp Zaurus and the Compaq iPAQ. They have been tested
+against Qt versions 1.43 to 3.3.6, Qt Non-commercial, Qtopia 1.5.0, and Python
+versions 1.5 to 2.4.2. Qt/Embedded v3 is not supported. Qt v4 is supported
+by PyQt v4.
+</Para>
+
+<Para>
+PyQt is available under the GPL license for use with the GPL version of Qt, a
+a commercial license for use with the commercial version of Qt, a
+non-commercial license for use with the non-commercial version of Qt v2, and an
+educational license for use with the educational version of Qt.
+</Para>
+
+<Para>
+There is also an evaluation version of PyQt for Windows. This must be used
+with the corresponding evaluation version of Qt.
+</Para>
+
+<Para>
+PyQt is built using SIP (a tool for generating Python extension modules for
+C++ class libraries). SIP v4.6 or later must be installed in order to build
+and run this version of PyQt.
+</Para>
+
+<Para>
+PyQt for MacOS/X requires Qt v3.1.0 or later and Python v2.3 or later.
+</Para>
+
+<Para>
+The bindings are implemented as a number of Python modules
+</Para>
+
+<ItemizedList>
+<ListItem>
+<Para>
+<Literal>qt</Literal> is the main module and contains the core classes and most
+user interface widgets.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtaxcontainer</Literal> contains a sub-set of the classes implemented
+in Qt's QAxContainer module, part of Qt's ActiveQt framework.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtcanvas</Literal> contains the classes implemented in Qt's Canvas
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtgl</Literal> contains the classes implemented in Qt's OpenGL module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtnetwork</Literal> contains the classes implemented in Qt's Network
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtpe</Literal> contains the classes implemented in Qtopia (originally
+called the Qt Palmtop Environment). It is only supported with Qt/Embedded.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtsql</Literal> contains the classes implemented in Qt's SQL module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qttable</Literal> contains the classes implemented in Qt's Table
+module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtui</Literal> contains the classes implemented in Qt's qui library.
+These allow GUIs to be created directly from Qt Designer's
+<Literal>.ui</Literal> files.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtxml</Literal> contains the classes implemented in Qt's XML module.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>qtext</Literal> contains useful third-party classes that are not part
+of Qt. At the moment it contains bindings for QScintilla, the port to Qt of
+the Scintilla programmer's editor class.
+</Para>
+</ListItem>
+</ItemizedList>
+
+<Para>
+PyQt also includes the <Literal>pyuic</Literal> and
+<Literal>pylupdate</Literal> utilities which correspond to the Qt
+<Literal>uic</Literal> and <Literal>lupdate</Literal> utilities.
+<Literal>pyuic</Literal> converts the GUI designs created with Qt Designer to
+executable Python code. <Literal>pylupdate</Literal> scans Python code,
+extracts all strings that are candidates for internationalisation, and creates
+an XML file for use by Qt Linguist.
+</Para>
+
+<Sect2><Title>Changes</Title>
+<Para>
+The changes visible to the Python programmer in this release are as follows.
+</Para>
+<ItemizedList>
+
+<ListItem>
+<Para>
+This version requires SIP v4.4 (or later).
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+Concatenating Python strings and <Literal>QString</Literal>s is now supported.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QString</Literal> now supports the <Literal>*</Literal> and
+<Literal>*=</Literal> operators that behave as they do for Python strings.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QString</Literal> is more interoperable with Python string and unicode
+objects. For example they can be passed as arguments to
+<Literal>open()</Literal> and to most (but not all) string methods.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QPopupMenu</Literal> (and sub-classes) instances now transfer
+ownership of the menu to Python in the call to <Literal>exec_loop()</Literal>.
+This means the menu's resources are all released when the Python wrapper is
+garbage collected without needing to call
+<Literal>QObject.deleteLater()</Literal>.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>QObject.sender()</Literal> now handles Python signals.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+The missing <Literal>MacintoshVersion</Literal> enum has been added.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+<Literal>PYQT_BUILD</Literal> has been removed.
+</Para>
+</ListItem>
+
+<ListItem>
+<Para>
+The convention for converting between a C/C++ null pointer and Python's
+<Literal>None</Literal> object has now been universally applied. In previous
+versions a null pointer to, for example, a Qt list container would often be
+converted to an empty list rather than <Literal>None</Literal>.
+</Para>
+</ListItem>
+
+</ItemizedList>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Other PyQt Goodies</Title>
+<Sect2><Title>Using Qt Designer</Title>
+<Para>
+Qt Designer is a GPL'ed GUI design editor provided by Trolltech as part of Qt.
+It generates an XML description of a GUI design. Qt includes
+<Literal>uic</Literal> which generates C++ code from that XML.
+</Para>
+
+<Para>
+PyQt includes <Literal>pyuic</Literal> which generates Python code from the
+same XML. The Python code is self contained and can be executed immediately.
+</Para>
+
+<Para>
+It is sometimes useful to be able to include some specific Python code in the
+output generated by <Literal>pyuic</Literal>. For example, if you are using
+custom widgets, <Literal>pyuic</Literal> has no way of knowing the name of the
+Python module containing the widget and so cannot generate the required
+<Literal>import</Literal> statement. To help get around this,
+<Literal>pyuic</Literal> will extract any lines entered in the
+<Literal>Comment</Literal> field of Qt Designer's
+<Literal>Form Settings</Literal> dialog that begin with
+<Literal>Python:</Literal> and copies them to the generated output.
+</Para>
+
+<Para>
+Here's a simple example showing the contents of the <Literal>Comment</Literal>
+field.
+</Para>
+
+<ProgramListing>
+This comment will be ignored by pyuic.
+Python:
+Python:# Import our custom widget.
+Python:from foo import bar
+</ProgramListing>
+
+<Para>
+Here's the corresponding output from <Literal>pyuic</Literal>.
+</Para>
+
+<ProgramListing>
+from qt import *
+
+# Import our custom widget.
+from foo import bar
+</ProgramListing>
+
+<Para>
+Thanks to Christian Bird, <Literal>pyuic</Literal> will extract Python code
+entered using Qt Designer to implement slots. In Qt Designer, when you need to
+edit a slot and the source editor appears, enter Python code between the curly
+braces. Don't worry about the correct starting indent level, each line is
+prepended with a correct indentation.
+</Para>
+
+<Para>
+Make sure that the <Literal>ui.h</Literal> file is in the same directory as the
+<Literal>.ui</Literal> file when using <Literal>pyuic</Literal>. The
+<Literal>.ui</Literal> file implies the name of the <Literal>.ui.h</Literal>
+file so there is no need to specify it on the command line.
+</Para>
+
+<Para>
+Here's an example of a simple slot.
+</Para>
+
+<ProgramListing>
+void DebMainWindowFrm::browsePushButtonClicked()
+{
+if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+}
+</ProgramListing>
+
+<Para>
+Here is the resulting code when <Literal>pyuic</Literal> is run.
+</Para>
+
+<ProgramListing>
+class DebMainWindowFrm(QMainWindow):
+ ...stuff...
+ def browsePushButtonClicked(self):
+ if self.debugging:
+ QMessageBox.critical(self, "Event", "browse pushbutton was clicked!")
+</ProgramListing>
+
+<Para>
+Note that indenting is as normal and that <Literal>self</Literal> and all other
+parameters passed to the slot are available.
+</Para>
+
+<Para>
+If you use this, you will need to turn off all of the fancy options for the C++
+editor in Designer as it tries to force C++ syntax and that's naturally
+annoying when trying to code in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>Using Qt Linguist</Title>
+<Para>
+Qt includes the <Literal>lupdate</Literal> program which parses C++ source
+files converting calls to the <Literal>QT_TR_NOOP()</Literal> and
+<Literal>QT_TRANSLATE_NOOP()</Literal> macros to <Literal>.ts</Literal>
+language source files. The <Literal>lrelease</Literal> program is then used to
+generate <Literal>.qm</Literal> binary language files that are distributed with
+your application.
+</Para>
+
+<Para>
+Thanks to Detlev Offenbach, PyQt includes the <Literal>pylupdate</Literal>
+program. This generates the same <Literal>.ts</Literal> language source files
+from your PyQt source files.
+</Para>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Deploying Commercial PyQt Applications</Title>
+<Para>
+When deploying commercial PyQt applications it is necessary to discourage users
+from accessing the underlying PyQt modules for themselves. A user that used
+the modules shipped with your application to develop new applications would
+themselves be considered a developer and would need their own commercial Qt and
+PyQt licenses.
+</Para>
+
+<Para>
+One solution to this problem is the
+<ULink url="http://www.riverbankcomputing.co.uk/vendorid/">VendorID</ULink>
+package. This allows you to build Python extension modules that can only be
+imported by a digitally signed custom interpreter. The package enables you to
+create such an interpreter with your application embedded within it. The
+result is an interpreter that can only run your application, and PyQt modules
+that can only be imported by that interpreter. You can use the package to
+similarly restrict access to any extension module.
+</Para>
+
+<Para>
+In order to build PyQt with support for the VendorID package, pass the
+<Literal>-i</Literal> command line flag to <Literal>configure.py</Literal>.
+</Para>
+</Sect1>
+
+<Sect1><Title><Literal>pyqtconfig</Literal> and Build System Support</Title>
+<Para>
+The SIP build system (ie. the <Literal>sipconfig</Literal> module) is described
+in the SIP documentation. PyQt includes the <Literal>pyqtconfig</Literal>
+module that can be used by configuration scripts of other bindings that are
+built on top of PyQt.
+</Para>
+
+<Para>
+The <Literal>pyqtconfig</Literal> module contains the following classes:
+</Para>
+
+<VariableList>
+<VarListEntry>
+<Term><Literal>Configuration(sipconfig.Configuration)</Literal></Term>
+<ListItem>
+<Para>
+This class encapsulates additional configuration values, specific to PyQt, that
+can be accessed as instance variables.
+</Para>
+
+<Para>
+The following configuration values are provided (in addition to those provided
+by the <Literal>sipconfig.Configuration</Literal> class):
+</Para>
+<VariableList>
+
+<VarListEntry>
+<Term><Literal>pyqt_bin_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the directory containing the <Literal>pyuic</Literal> and
+<Literal>pylupdate</Literal> executables.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_config_args</Literal></Term>
+<ListItem>
+<Para>
+The command line passed to <Literal>configure.py</Literal> when PyQt was
+configured.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_mod_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the directory containing the PyQt modules.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_modules</Literal></Term>
+<ListItem>
+<Para>
+A string containing the names of the PyQt modules that were installed.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qt_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qt</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qt</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtaxcontainer_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtaxcontainer</Literal> module and which should be added to those
+needed by any module that imports the <Literal>qtaxcontainer</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtcanvas_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtcanvas</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtcanvas</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtext_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtext</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtext</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtgl_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtgl</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qtgl</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtnetwork_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtnetwork</Literal> module and which should be added to those needed
+by any module that imports the <Literal>qtnetwork</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtsql_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtsql</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtsql</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qttable_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qttable</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qttable</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtui_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtui</Literal> module and which should be added to those needed by any
+module that imports the <Literal>qtui</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_qtxml_sip_flags</Literal></Term>
+<ListItem>
+<Para>
+A string of the SIP flags used to generate the code for the
+<Literal>qtxml</Literal> module and which should be added to those needed by
+any module that imports the <Literal>qtxml</Literal> module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_sip_dir</Literal></Term>
+<ListItem>
+<Para>
+The name of the base directory where the <Literal>.sip</Literal> files for each
+of the PyQt modules is installed. A sub-directory exists with the same name as
+the module.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_version</Literal></Term>
+<ListItem>
+<Para>
+The PyQt version as a 3 part hexadecimal number (eg. v3.10 is represented as
+<Literal>0x030a00</Literal>).
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>pyqt_version_str</Literal></Term>
+<ListItem>
+<Para>
+The PyQt version as a string. For development snapshots it will start with
+<Literal>snapshot-</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtModuleMakefile(sipconfig.SIPModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qt</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtAxContainerModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtaxcontainer</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtCanvasModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtcanvas</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtExtModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtext</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtGLModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtgl</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtNetworkModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtnetwork</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtTableModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qttable</Literal>
+module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtSQLModuleMakefile(QtTableModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtsql</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtUIModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtui</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+<VarListEntry>
+<Term><Literal>QtXMLModuleMakefile(QtModuleMakefile)</Literal></Term>
+<ListItem>
+<Para>
+The Makefile class for modules that import the <Literal>qtxml</Literal> module.
+</Para>
+<VariableList>
+<VarListEntry>
+<Term><Literal>finalise(self)</Literal></Term>
+<ListItem>
+<Para>
+This is a reimplementation of <Literal>sipconfig.Makefile.finalise()</Literal>.
+</Para>
+<Para></Para><Para></Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</ListItem>
+</VarListEntry>
+
+</VariableList>
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title>Things to be Aware Of</Title>
+<Sect2><Title>super and Wrapped Classes</Title>
+<Para>
+Internally PyQt implements a lazy technique for attribute lookup where
+attributes are only placed in type and instance dictionaries when they are
+first referenced. This technique is needed to reduce the time taken to import
+large modules such as PyQt.
+</Para>
+
+<Para>
+In most circumstances this technique is transparent to an application. The
+exception is when <Literal>super</Literal> is used with a PyQt class. The way
+that <Literal>super</Literal> is currently implemented means that the lazy
+lookup is bypassed resulting in <Literal>AttributeError</Literal> exceptions
+unless the attribute has been previously referenced.
+</Para>
+
+<Para>
+Note that this restriction applies to any class wrapped by SIP and not just
+PyQt.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Python Strings, Qt Strings and Unicode</Title>
+<Para>
+Unicode support was added to Qt in v2.0 and to Python in v1.6. In Qt, Unicode
+support is implemented using the <Literal>QString</Literal> class. It is
+important to understand that <Literal>QString</Literal>s, Python string objects
+and Python Unicode objects are all different but conversions between them are
+automatic in almost all cases and easy to achieve manually when needed.
+</Para>
+
+<Para>
+Whenever PyQt expects a <Literal>QString</Literal> as a function argument, a
+Python string object or a Python Unicode object can be provided instead, and
+PyQt will do the necessary conversion automatically.
+</Para>
+
+<Para>
+You may also manually convert Python string and Unicode objects to
+<Literal>QString</Literal>s by using the <Literal>QString</Literal> constructor
+as demonstrated in the following code fragment.
+</Para>
+
+<ProgramListing>
+qs1 = QString('Converted Python string object')
+qs2 = QString(u'Converted Python Unicode object')
+</ProgramListing>
+
+<Para>
+In order to convert a <Literal>QString</Literal> to a Python string object use
+the Python <Literal>str()</Literal> function. Applying
+<Literal>str()</Literal> to a null <Literal>QString</Literal> and an empty
+<Literal>QString</Literal> both result in an empty Python string object.
+</Para>
+
+<Para>
+In order to convert a <Literal>QString</Literal> to a Python Unicode object use
+the Python <Literal>unicode()</Literal> function. Applying
+<Literal>unicode()</Literal> to a null <Literal>QString</Literal> and an empty
+<Literal>QString</Literal> both result in an empty Python Unicode object.
+</Para>
+</Sect2>
+
+<Sect2><Title>Access to Protected Member Functions</Title>
+<Para>
+When an instance of a C++ class is not created from Python it is not possible
+to access the protected member functions, or emit the signals, of that
+instance. Attempts to do so will raise a Python exception. Also, any Python
+methods corresponding to the instance's virtual member functions will never be
+called.
+</Para>
+</Sect2>
+
+<Sect2><Title><Literal>None</Literal> and <Literal>NULL</Literal></Title>
+<Para>
+Throughout the bindings, the <Literal>None</Literal> value can be specified
+wherever <Literal>NULL</Literal> is acceptable to the underlying C++ code.
+</Para>
+
+<Para>
+Equally, <Literal>NULL</Literal> is converted to <Literal>None</Literal>
+whenever it is returned by the underlying C++ code.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Support for C++ <Literal>void *</Literal> Data Types</Title>
+<Para>
+PyQt represents <Literal>void *</Literal> values as objects of type
+<Literal>sip.voidptr</Literal>. Such values are often used to pass the
+addresses of external objects between different Python modules. To make this
+easier, a Python integer (or anything that Python can convert to an integer)
+can be used whenever a <Literal>sip.voidptr</Literal> is expected.
+</Para>
+<Para>
+A <Literal>sip.voidptr</Literal> may be converted to a Python integer by using
+the <Literal>int()</Literal> builtin function.
+</Para>
+<Para>
+A <Literal>sip.voidptr</Literal> may be converted to a Python string by using
+its <Literal>asstring()</Literal> method. The <Literal>asstring()</Literal>
+method takes an integer argument which is the length of the data in bytes.
+</Para>
+</Sect2>
+
+
+<Sect2><Title>Support for Threads</Title>
+<Para>
+PyQt implements the full set of Qt's thread classes. Python, of course, also
+has its own thread extension modules. If you are using SIP v4 (or later) and
+Python v2.3.5 (or later) then PyQt does not impose any additional restrictions.
+(Read the relevant part of the Qt documentation to understand the restrictions
+imposed by the Qt API.)
+</Para>
+<Para>
+If you are using earlier versions of either SIP or Python then it is possible
+to use either of the APIs so long as you follow some simple rules.
+</Para>
+<ItemizedList>
+<ListItem>
+<Para>
+If you use the Qt API then the very first <Literal>import</Literal> of one of
+the PyQt modules must be done from the main thread.
+</Para>
+</ListItem>
+<ListItem>
+<Para>
+If you use the Python API then all calls to PyQt (including any
+<Literal>import</Literal>s) must be done from one thread only. Therefore, if
+you want to make calls to PyQt from several threads then you must use the Qt
+API.
+</Para>
+</ListItem>
+<ListItem>
+<Para>
+If you want to use both APIs in the same application then all calls to PyQt
+must be done from threads created using the Qt API.
+</Para>
+</ListItem>
+</ItemizedList>
+<Para>
+The above comments actually apply to any SIP generated module, not just PyQt.
+</Para>
+</Sect2>
+
+<Sect2><Title>Garbage Collection</Title>
+<Para>
+C++ does not garbage collect unreferenced class instances, whereas Python does.
+In the following C++ fragment both colours exist even though the first can no
+longer be referenced from within the program:
+</Para>
+
+<ProgramListing>
+c = new QColor();
+c = new QColor();
+</ProgramListing>
+
+<Para>
+In the corresponding Python fragment, the first colour is destroyed when
+the second is assigned to <Literal>c</Literal>:
+</Para>
+
+<ProgramListing>
+c = QColor()
+c = QColor()
+</ProgramListing>
+
+<Para>
+In Python, each colour must be assigned to different names. Typically this
+is done within class definitions, so the code fragment would be something like:
+</Para>
+
+<ProgramListing>
+self.c1 = QColor()
+self.c2 = QColor()
+</ProgramListing>
+
+<Para>
+Sometimes a Qt class instance will maintain a pointer to another instance and
+will eventually call the destructor of that second instance. The most common
+example is that a <Literal>QObject</Literal> (and any of its sub-classes) keeps
+pointers to its children and will automatically call their destructors. In
+these cases, the corresponding Python object will also keep a reference to the
+corresponding child objects.
+</Para>
+
+<Para>
+So, in the following Python fragment, the first <Literal>QLabel</Literal> is
+not destroyed when the second is assigned to <Literal>l</Literal> because the
+parent <Literal>QWidget</Literal> still has a reference to it.
+</Para>
+
+<ProgramListing>
+p = QWidget()
+l = QLabel('First label',p)
+l = QLabel('Second label',p)
+</ProgramListing>
+</Sect2>
+
+<Sect2><Title>C++ Variables</Title>
+<Para>
+Access to C++ variables is supported. They are accessed as Python instance
+variables. For example:
+</Para>
+
+<ProgramListing>
+tab = QTab()
+tab.label = "First Tab"
+tab.r = QRect(10,10,75,30)
+</ProgramListing>
+
+<Para>
+Global variables and static class variables are effectively read-only. They
+can be assigned to, but the underlying C++ variable will not be changed. This
+may change in the future.
+</Para>
+
+<Para>
+Access to protected C++ class variables is not supported. This may change in
+the future.
+</Para>
+</Sect2>
+
+<Sect2><Title>Multiple Inheritance</Title>
+<Para>
+It is not possible to define a new Python class that sub-classes from more than
+one Qt class.
+</Para>
+</Sect2>
+
+<Sect2><Title>i18n Support</Title>
+<Para>
+Qt implements i18n support through the Qt Linguist application, the
+<Literal>QTranslator</Literal> class, and the
+<Literal>QApplication::translate()</Literal>, <Literal>QObject::tr()</Literal>
+and <Literal>QObject::trUtf8()</Literal> methods. Usually the
+<Literal>tr()</Literal> method is used to obtain the correct translation of a
+message. The translation process uses a message context to allow the same
+message to be translated differently. <Literal>tr()</Literal> is actually
+generated by <Literal>moc</Literal> and uses the hardcoded class name as the
+context. On the other hand, <Literal>QApplication::translate()</Literal>
+allows to context to be explicitly stated.
+</Para>
+
+<Para>
+Unfortunately, because of the way Qt implents <Literal>tr()</Literal> (and
+<Literal>trUtf8()</Literal>) it is not possible for PyQt to exactly reproduce
+its behavour. The PyQt implementation of <Literal>tr()</Literal> (and
+<Literal>trUtf8()</Literal>) uses the class name of the instance as the
+context. The key difference, and the source of potential problems, is that the
+context is determined dynamically in PyQt, but is hardcoded in Qt. In other
+words, the context of a translation may change depending on an instance's class
+hierarchy.
+</Para>
+
+<ProgramListing>
+class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return self.tr("Hello")
+
+class B(A):
+ def __init__(self):
+ A.__init__(self)
+
+a = A()
+a.hello()
+
+b = B()
+b.hello()
+</ProgramListing>
+
+<Para>
+In the above the message is translated by <Literal>a.hello()</Literal> using a
+context of <Literal>A</Literal>, and by <Literal>b.hello()</Literal> using a
+context of <Literal>B</Literal>. In the equivalent C++ version the context
+would be <Literal>A</Literal> in both cases.
+</Para>
+
+<Para>
+The PyQt behaviour is unsatisfactory and may be changed in the future. It is
+recommended that <Literal>QApplication.translate()</Literal> be used in
+preference to <Literal>tr()</Literal> (and <Literal>trUtf8()</Literal>). This
+is guaranteed to work with current and future versions of PyQt and makes it
+much easier to share message files between Python and C++ code. Below is the
+alternative implementation of <Literal>A</Literal> that uses
+<Literal>QApplication.translate()</Literal>.
+</Para>
+
+<ProgramListing>
+class A(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ def hello(self):
+ return qApp.translate("A","Hello")
+</ProgramListing>
+
+<Para>
+Note that the code generated by <Literal>pyuic</Literal> uses
+<Literal>QApplication.translate()</Literal>.
+</Para>
+</Sect2>
+</Sect1>
+
+
+<Sect1><Title>Signal and Slot Support</Title>
+<Para>
+A signal may be either a Qt signal (specified using
+<Literal>SIGNAL()</Literal>) or a Python signal (specified using
+<Literal>PYSIGNAL()</Literal>).
+</Para>
+
+<Para>
+A slot can be either a Python callable object, a Qt signal (specified using
+<Literal>SIGNAL()</Literal>), a Python signal (specified using
+<Literal>PYSIGNAL()</Literal>), or a Qt slot (specified using
+<Literal>SLOT()</Literal>).
+</Para>
+
+<Para>
+You connect signals to slots (and other signals) as you would from C++. For
+example:
+</Para>
+
+<ProgramListing>
+QObject.connect(a,SIGNAL("QtSig()"),pyFunction)
+QObject.connect(a,SIGNAL("QtSig()"),pyClass.pyMethod)
+QObject.connect(a,SIGNAL("QtSig()"),PYSIGNAL("PySig"))
+QObject.connect(a,SIGNAL("QtSig()"),SLOT("QtSlot()"))
+QObject.connect(a,PYSIGNAL("PySig"),pyFunction)
+QObject.connect(a,PYSIGNAL("PySig"),pyClass.pyMethod)
+QObject.connect(a,PYSIGNAL("PySig"),SIGNAL("QtSig()"))
+QObject.connect(a,PYSIGNAL("PySig"),SLOT("QtSlot()"))
+</ProgramListing>
+
+<Para>
+When a slot is a Python method that corresponds to a Qt slot then a signal can
+be connected to either the Python method or the Qt slot. The following
+connections achieve the same effect.
+</Para>
+
+<ProgramListing>
+sbar = QScrollBar()
+lcd = QLCDNumber()
+
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd.display)
+QObject.connect(sbar,SIGNAL("valueChanged(int)"),lcd,SLOT("display(int)"))
+</ProgramListing>
+
+<Para>
+The difference is that the second connection is made at the C++ level and is
+more efficient.
+</Para>
+
+<Para>
+Disconnecting signals works in exactly the same way.
+</Para>
+
+<Para>
+Any instance of a class that is derived from the <Literal>QObject</Literal>
+class can emit a signal using the <Literal>emit</Literal> method. This takes
+two arguments. The first is the Python or Qt signal, the second is a Python
+tuple which are the arguments to the signal. For example:
+</Para>
+
+<ProgramListing>
+a.emit(SIGNAL("clicked()"),())
+a.emit(PYSIGNAL("pySig"),("Hello","World"))
+</ProgramListing>
+
+<Para>
+Note that when a slot is a Python callable object its reference count is not
+increased. This means that a class instance can be deleted without having to
+explicitly disconnect any signals connected to its methods. However, it also
+means that using lambda expressions as slots will not work unless you keep a
+separate reference to the expression to prevent it from being immediately
+garbage collected.
+</Para>
+
+<Para>
+Qt allows a signal to be connected to a slot that requires fewer arguments than
+the signal passes. The extra arguments are quietly discarded. Python slots
+can be used in the same way.
+</Para>
+</Sect1>
+
+
+<Sect1><Title>Static Member Functions</Title>
+<Para>
+Static member functions are implemented as Python class functions.
+For example the C++ static member function
+<Literal>QObject::connect()</Literal> is called from Python as
+<Literal>QObject.connect()</Literal> or <Literal>self.connect()</Literal> if
+called from a sub-class of <Literal>QObject</Literal>.
+</Para>
+</Sect1>
+
+
+<Sect1><Title>Enumerated Types</Title>
+<Para>
+Enumerated types are implemented as a set of simple variables corresponding to
+the separate enumerated values.
+</Para>
+
+<Para>
+When using an enumerated value the name of the class (or a sub-class) in which
+the enumerated type was defined in must be included. For example:
+</Para>
+
+<ProgramListing>
+Qt.SolidPattern
+QWidget.TabFocus
+QFrame.TabFocus
+</ProgramListing>
+</Sect1>
+
+
+<Sect1><Title>Module Reference Documentation</Title>
+<Para>
+The following sections should be used in conjunction with the normal class
+documentation - only the differences specific to the Python bindings are
+documented here.
+</Para>
+
+<Para>
+In these sections, <Emphasis>Not yet implemented</Emphasis>
+implies that the feature can be easily implemented if needed. <Emphasis>Not
+implemented</Emphasis> implies that the feature will not be implemented, either
+because it cannot be or because it is not appropriate.
+</Para>
+
+<Para>
+If a class is described as being <Emphasis>fully implemented</Emphasis> then
+all non-private member functions and all public class variables have been
+implemented.
+</Para>
+
+<Para>
+If an operator has been implemented then it is stated explicitly.
+</Para>
+
+<Para>
+Classes that are not mentioned have not yet been implemented.
+</Para>
+</Sect1>
+
+
+<Sect1><Title><Literal>qt</Literal> Module Reference</Title>
+%End
+
+%Include qt/qglobal.sip
+%Include qt/qwindowdefs.sip
+%Include qt/qnamespace.sip
+
+%Include qt/qaccel.sip
+%Include qt/qaction.sip
+%Include qt/qapplication.sip
+%Include qt/qassistantclient.sip
+%Include qt/qbitmap.sip
+%Include qt/qbrush.sip
+%Include qt/qbutton.sip
+%Include qt/qbuttongroup.sip
+%Include qt/qbytearray.sip
+%Include qt/qcdestyle.sip
+%Include qt/qcheckbox.sip
+%Include qt/qclipboard.sip
+%Include qt/qcolor.sip
+%Include qt/qcolordialog.sip
+%Include qt/qcolorgroup.sip
+%Include qt/qcombobox.sip
+%Include qt/qcommonstyle.sip
+%Include qt/qcstring.sip
+%Include qt/qcursor.sip
+%Include qt/qdatastream.sip
+%Include qt/qdatetime.sip
+%Include qt/qdatetimeedit.sip
+%Include qt/qdesktopwidget.sip
+%Include qt/qdial.sip
+%Include qt/qdialog.sip
+%Include qt/qdir.sip
+%Include qt/qdockarea.sip
+%Include qt/qdockwindow.sip
+%Include qt/qdragobject.sip
+%Include qt/qdrawutil.sip
+%Include qt/qdropsite.sip
+%Include qt/qerrormessage.sip
+%Include qt/qevent.sip
+%Include qt/qeventloop.sip
+%Include qt/qfile.sip
+%Include qt/qfiledialog.sip
+%Include qt/qfileinfo.sip
+%Include qt/qfont.sip
+%Include qt/qfontdatabase.sip
+%Include qt/qfontdialog.sip
+%Include qt/qfontinfo.sip
+%Include qt/qfontmetrics.sip
+%Include qt/qframe.sip
+%Include qt/qgmanager.sip
+%Include qt/qgrid.sip
+%Include qt/qgridview.sip
+%Include qt/qgroupbox.sip
+%Include qt/qhbox.sip
+%Include qt/qhbuttongroup.sip
+%Include qt/qheader.sip
+%Include qt/qhgroupbox.sip
+%Include qt/qiconset.sip
+%Include qt/qiconview.sip
+%Include qt/qimage.sip
+%Include qt/qinputdialog.sip
+%Include qt/qinterlacestyle.sip
+%Include qt/qiodevice.sip
+%Include qt/qkeycode.sip
+%Include qt/qkeysequence.sip
+%Include qt/qlabel.sip
+%Include qt/qlayout.sip
+%Include qt/qlcdnumber.sip
+%Include qt/qlibrary.sip
+%Include qt/qlineedit.sip
+%Include qt/qlist.sip
+%Include qt/qlistbox.sip
+%Include qt/qlistview.sip
+%Include qt/qlocale.sip
+%Include qt/qmainwindow.sip
+%Include qt/qmemarray.sip
+%Include qt/qmenubar.sip
+%Include qt/qmenudata.sip
+%Include qt/qmessagebox.sip
+%Include qt/qmetaobject.sip
+%Include qt/qmime.sip
+%Include qt/qmotifplusstyle.sip
+%Include qt/qmotifstyle.sip
+%Include qt/qmovie.sip
+%Include qt/qmultilinedit.sip
+%Include qt/qmutex.sip
+%Include qt/qnetworkprotocol.sip
+%Include qt/qobject.sip
+%Include qt/qobjectcleanuphandler.sip
+%Include qt/qobjectlist.sip
+%Include qt/qpaintdevicemetrics.sip
+%Include qt/qpaintdevice.sip
+%Include qt/qpainter.sip
+%Include qt/qpalette.sip
+%Include qt/qpixmap.sip
+%Include qt/qpixmapcache.sip
+%Include qt/qpair.sip
+%Include qt/qpen.sip
+%Include qt/qpicture.sip
+%Include qt/qplatinumstyle.sip
+%Include qt/qpoint.sip
+%Include qt/qpointarray.sip
+%Include qt/qpopupmenu.sip
+%Include qt/qprintdialog.sip
+%Include qt/qprinter.sip
+%Include qt/qprocess.sip
+%Include qt/qprogressbar.sip
+%Include qt/qprogressdialog.sip
+%Include qt/qptrlist.sip
+%Include qt/qpushbutton.sip
+%Include qt/qradiobutton.sip
+%Include qt/qrangecontrol.sip
+%Include qt/qrect.sip
+%Include qt/qregexp.sip
+%Include qt/qregion.sip
+%Include qt/qscrollbar.sip
+%Include qt/qscrollview.sip
+%Include qt/qsemaphore.sip
+%Include qt/qsemimodal.sip
+%Include qt/qsessionmanager.sip
+%Include qt/qsettings.sip
+%Include qt/qsgistyle.sip
+%Include qt/qsignalmapper.sip
+%Include qt/qsimplerichtext.sip
+%Include qt/qsize.sip
+%Include qt/qsizegrip.sip
+%Include qt/qsizepolicy.sip
+%Include qt/qslider.sip
+%Include qt/qsocketnotifier.sip
+%Include qt/qsound.sip
+%Include qt/qspinbox.sip
+%Include qt/qsplashscreen.sip
+%Include qt/qsplitter.sip
+%Include qt/qstatusbar.sip
+%Include qt/qstring.sip
+%Include qt/qstringlist.sip
+%Include qt/qstrlist.sip
+%Include qt/qstyle.sip
+%Include qt/qstylesheet.sip
+%Include qt/qsyntaxhighlighter.sip
+%Include qt/qtabbar.sip
+%Include qt/qtabdialog.sip
+%Include qt/qtableview.sip
+%Include qt/qtabwidget.sip
+%Include qt/qtextbrowser.sip
+%Include qt/qtextcodec.sip
+%Include qt/qtextedit.sip
+%Include qt/qtextstream.sip
+%Include qt/qtextview.sip
+%Include qt/qthread.sip
+%Include qt/qtimer.sip
+%Include qt/qtoolbar.sip
+%Include qt/qtoolbox.sip
+%Include qt/qtoolbutton.sip
+%Include qt/qtooltip.sip
+%Include qt/qtranslator.sip
+%Include qt/qurl.sip
+%Include qt/qurlinfo.sip
+%Include qt/qurloperator.sip
+%Include qt/quuid.sip
+%Include qt/qvalidator.sip
+%Include qt/qvaluelist.sip
+%Include qt/qvariant.sip
+%Include qt/qvbox.sip
+%Include qt/qvbuttongroup.sip
+%Include qt/qvgroupbox.sip
+%Include qt/qwaitcondition.sip
+%Include qt/qwhatsthis.sip
+%Include qt/qwidget.sip
+%Include qt/qwidgetlist.sip
+%Include qt/qwidgetstack.sip
+%Include qt/qwindow.sip
+%Include qt/qwindowsstyle.sip
+%Include qt/qwindowsxpstyle.sip
+%Include qt/qwizard.sip
+%Include qt/qwmatrix.sip
+%Include qt/qworkspace.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtaxcontainer</Literal> Module Reference</Title>
+%End
+
+%Include qtaxcontainer/qaxbase.sip
+%Include qtaxcontainer/qaxobject.sip
+%Include qtaxcontainer/qaxwidget.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtcanvas</Literal> Module Reference</Title>
+%End
+
+%Include qtcanvas/qcanvas.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtext</Literal> Module Reference</Title>
+
+<Sect2><Title>QextScintilla</Title>
+<FuncSynopsis>
+ <FuncDef>void <Function>getCursorPosition</Function></FuncDef>
+ <ParamDef>int *<Parameter>line</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>index</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned by the
+<Literal>line</Literal> and <Literal>index</Literal> pointers.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>void <Function>getSelection</Function></FuncDef>
+ <ParamDef>int *<Parameter>lineFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexFrom</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>lineTo</Parameter></ParamDef>
+ <ParamDef>int *<Parameter>indexTo</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes no parameters and returns a tuple of the values returned by the
+<Literal>lineFrom</Literal>, <Literal>indexFrom</Literal>,
+<Literal>lineTo</Literal> and <Literal>indexTo</Literal> pointers.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaAPIs</Title>
+<Para>
+<Literal>QextScintillaAPIs</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaBase</Title>
+<Para>
+<Literal>QextScintillaBase</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaCommand</Title>
+<Para>
+<Literal>QextScintillaCommand</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaCommandSet</Title>
+<Para>
+<Literal>QextScintillaCommandSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaDocument</Title>
+<Para>
+<Literal>QextScintillaDocument</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexer</Title>
+<Para>
+<Literal>QextScintillaLexer</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerBash (QScintilla v1.4+)</Title>
+<Para>
+<Literal>QextScintillaLexerBash</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerBatch (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerBatch</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCPP</Title>
+<Para>
+<Literal>QextScintillaLexerCPP</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCSharp</Title>
+<Para>
+<Literal>QextScintillaLexerCSharp</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerCSS (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerCSS</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerDiff (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerDiff</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerHTML (QScintilla v1.1+)</Title>
+<Para>
+<Literal>QextScintillaLexerHTML</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerIDL</Title>
+<Para>
+<Literal>QextScintillaLexerIDL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerJava</Title>
+<Para>
+<Literal>QextScintillaLexerJava</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerJavaScript</Title>
+<Para>
+<Literal>QextScintillaLexerJavaScript</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerLua (QScintilla v1.5+)</Title>
+<Para>
+<Literal>QextScintillaLexerLua</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerMakefile (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerMakefile</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPerl</Title>
+<Para>
+<Literal>QextScintillaLexerPerl</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPOV (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerPOV</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerProperties (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerProperties</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerPython</Title>
+<Para>
+<Literal>QextScintillaLexerPython</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerRuby (QScintilla v1.5+)</Title>
+<Para>
+<Literal>QextScintillaLexerRuby</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerSQL (QScintilla v1.1+)</Title>
+<Para>
+<Literal>QextScintillaLexerSQL</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaLexerTeX (QScintilla v1.6+)</Title>
+<Para>
+<Literal>QextScintillaLexerTeX</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaMacro</Title>
+<Para>
+<Literal>QextScintillaMacro</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QextScintillaPrinter</Title>
+<Para>
+<Literal>QextScintillaPrinter</Literal> is fully implemented.
+</Para>
+</Sect2>
+%End
+
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtgl</Literal> Module Reference</Title>
+%End
+
+%Include qtgl/qgl.sip
+%Include qtgl/qglcolormap.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtnetwork</Literal> Module Reference</Title>
+%End
+
+%Include qtnetwork/qdns.sip
+%Include qtnetwork/qftp.sip
+%Include qtnetwork/qhostaddress.sip
+%Include qtnetwork/qhttp.sip
+%Include qtnetwork/qlocalfs.sip
+%Include qtnetwork/qnetwork.sip
+%Include qtnetwork/qserversocket.sip
+%Include qtnetwork/qsocket.sip
+%Include qtnetwork/qsocketdevice.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtpe</Literal> Module Reference</Title>
+
+<Sect2><Title>QPEApplication</Title>
+<FuncSynopsis>
+ <FuncDef><Function>QApplication</Function></FuncDef>
+ <ParamDef>int& <Parameter>argc</Parameter></ParamDef>
+ <ParamDef>char **<Parameter>argv</Parameter></ParamDef>
+ <ParamDef>Type <Parameter>type</Parameter></ParamDef>
+</FuncSynopsis>
+<Para>
+This takes two parameters, the first of which is a list of argument strings.
+Arguments used by Qt are removed from the list.
+</Para>
+
+<FuncSynopsis>
+ <FuncDef>int <Function>exec</Function></FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_loop</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>AppLnk</Title>
+<FuncSynopsis>
+ <FuncDef>virtual QString <Function>exec</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_property</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>AppLnkSet</Title>
+<Para>
+<Literal>AppLnkSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Config</Title>
+<Para>
+<Literal>Config</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>DateFormat</Title>
+<Para>
+<Literal>DateFormat</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>DocLnk</Title>
+<FuncSynopsis>
+ <FuncDef>QString <Function>exec</Function> const</FuncDef>
+ <ParamDef></ParamDef>
+</FuncSynopsis>
+<Para>
+This has been renamed to <Literal>exec_property</Literal> in Python.
+</Para>
+</Sect2>
+
+<Sect2><Title>DocLnkSet</Title>
+<Para>
+<Literal>DocLnkSet</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileManager</Title>
+<Para>
+<Literal>FileManager</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileSelector</Title>
+<Para>
+<Literal>FileSelector</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FileSelectorItem</Title>
+<Para>
+<Literal>FileSelectorItem</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>FontDatabase</Title>
+<Para>
+<Literal>FontDatabase</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Global</Title>
+<FuncSynopsis>
+ <FuncDef>static void <Function>setBuiltinCommands</Function></FuncDef>
+ <ParamDef>Command *</ParamDef>
+</FuncSynopsis>
+<Para>
+Not implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>MenuButton</Title>
+<Para>
+<Literal>MenuButton</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QCopEnvelope</Title>
+<Para>
+<Literal>QCopEnvelope</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QDawg</Title>
+<Para>
+<Literal>QDawg</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPEMenuBar</Title>
+<Para>
+<Literal>QPEMenuBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>QPEToolBar</Title>
+<Para>
+<Literal>QPEToolBar</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+<Sect2><Title>Resource</Title>
+<Para>
+<Literal>Resource</Literal> is fully implemented.
+</Para>
+</Sect2>
+
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtsql</Literal> Module Reference</Title>
+%End
+
+%Include qtsql/qdatabrowser.sip
+%Include qtsql/qdatatable.sip
+%Include qtsql/qdataview.sip
+%Include qtsql/qeditorfactory.sip
+%Include qtsql/qsql.sip
+%Include qtsql/qsqlcursor.sip
+%Include qtsql/qsqldatabase.sip
+%Include qtsql/qsqldriver.sip
+%Include qtsql/qsqleditorfactory.sip
+%Include qtsql/qsqlerror.sip
+%Include qtsql/qsqlfield.sip
+%Include qtsql/qsqlform.sip
+%Include qtsql/qsqlindex.sip
+%Include qtsql/qsqlpropertymap.sip
+%Include qtsql/qsqlquery.sip
+%Include qtsql/qsqlrecord.sip
+%Include qtsql/qsqlresult.sip
+%Include qtsql/qsqlselectcursor.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qttable</Literal> Module Reference</Title>
+%End
+
+%Include qttable/qtable.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtui</Literal> Module Reference</Title>
+%End
+
+%Include qtui/qwidgetfactory.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%ExportedDoc
+<Sect1><Title><Literal>qtxml</Literal> Module Reference</Title>
+%End
+
+%Include qtxml/qdom.sip
+
+%ExportedDoc
+</Sect1>
+%End
+
+
+%Doc
+</Article>
+%End