summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2009-06-10 12:34:54 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2009-06-10 12:34:54 (GMT)
commitd8a284783b56e2ddbcedff3fc9577ec6038aab57 (patch)
tree1d49be6cb7de25836957adf30ac113c3a0499911 /doc
parent4a6548b83a6f1df42b82664efaca26c7efbc1909 (diff)
parentc0bbe44ab6290dee088138c01724779026d2c033 (diff)
downloadQt-d8a284783b56e2ddbcedff3fc9577ec6038aab57.zip
Qt-d8a284783b56e2ddbcedff3fc9577ec6038aab57.tar.gz
Qt-d8a284783b56e2ddbcedff3fc9577ec6038aab57.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Conflicts: src/corelib/animation/qanimationgroup.cpp src/gui/graphicsview/qgraphicsitem.cpp
Diffstat (limited to 'doc')
-rw-r--r--doc/src/3rdparty.qdoc136
-rw-r--r--doc/src/accessible.qdoc2
-rw-r--r--doc/src/animation.qdoc42
-rw-r--r--doc/src/credits.qdoc2
-rw-r--r--doc/src/declarative/basictypes.qdoc20
-rw-r--r--doc/src/declarative/elements.qdoc1
-rw-r--r--doc/src/declarative/pics/gradient.pngbin0 -> 364 bytes
-rw-r--r--doc/src/declarative/qmlforcpp.qdoc6
-rw-r--r--doc/src/deployment.qdoc2
-rw-r--r--doc/src/designer-manual.qdoc151
-rw-r--r--doc/src/diagrams/animations-architecture.svg351
-rw-r--r--doc/src/diagrams/dependencies.lout59
-rw-r--r--doc/src/diagrams/x11_dependencies.sk1542
-rw-r--r--doc/src/emb-fonts.qdoc2
-rw-r--r--doc/src/emb-makeqpf.qdoc9
-rw-r--r--doc/src/examples.qdoc6
-rw-r--r--doc/src/examples/codeeditor.qdoc2
-rw-r--r--doc/src/examples/containerextension.qdoc2
-rw-r--r--doc/src/examples/contiguouscache.qdoc97
-rw-r--r--doc/src/examples/fancybrowser.qdoc103
-rw-r--r--doc/src/examples/fortuneserver.qdoc2
-rw-r--r--doc/src/examples/ftp.qdoc4
-rw-r--r--doc/src/examples/icons.qdoc2
-rw-r--r--doc/src/examples/musicplayerexample.qdoc2
-rw-r--r--doc/src/examples/qobjectxmlmodel.qdoc2
-rw-r--r--doc/src/examples/stickman.qdoc115
-rw-r--r--doc/src/examples/tabdialog.qdoc2
-rw-r--r--doc/src/examples/tankgame.qdoc2
-rw-r--r--doc/src/examples/tooltips.qdoc2
-rw-r--r--doc/src/examples/trafficinfo.qdoc2
-rw-r--r--doc/src/examples/transformations.qdoc2
-rw-r--r--doc/src/examples/trollprint.qdoc2
-rw-r--r--doc/src/images/animations-architecture.pngbin0 -> 27619 bytes
-rw-r--r--doc/src/images/designer-choosing-form.pngbin38078 -> 39080 bytes
-rw-r--r--doc/src/images/inputdialogs.pngbin4244 -> 30369 bytes
-rw-r--r--doc/src/images/rgbController-arrangement.pngbin0 -> 10813 bytes
-rw-r--r--doc/src/images/rgbController-configure-connection1.pngbin0 -> 23241 bytes
-rw-r--r--doc/src/images/rgbController-configure-connection2.pngbin0 -> 28655 bytes
-rw-r--r--doc/src/images/rgbController-final-layout.pngbin0 -> 11275 bytes
-rw-r--r--doc/src/images/rgbController-form-gridLayout.pngbin0 -> 11235 bytes
-rw-r--r--doc/src/images/rgbController-no-toplevel-layout.pngbin0 -> 1343 bytes
-rw-r--r--doc/src/images/rgbController-property-editing.pngbin0 -> 9158 bytes
-rw-r--r--doc/src/images/rgbController-screenshot.pngbin0 -> 8995 bytes
-rw-r--r--doc/src/images/rgbController-selectForLayout.pngbin0 -> 20981 bytes
-rw-r--r--doc/src/images/rgbController-signalsAndSlots.pngbin0 -> 10050 bytes
-rw-r--r--doc/src/images/stickman-example.pngbin0 -> 18867 bytes
-rw-r--r--doc/src/images/stickman-example1.pngbin0 -> 64543 bytes
-rw-r--r--doc/src/images/stickman-example2.pngbin0 -> 37412 bytes
-rw-r--r--doc/src/images/stickman-example3.pngbin0 -> 23591 bytes
-rw-r--r--doc/src/images/x11_dependencies.pngbin93480 -> 68043 bytes
-rw-r--r--doc/src/index.qdoc7
-rw-r--r--doc/src/installation.qdoc12
-rw-r--r--doc/src/layout.qdoc22
-rw-r--r--doc/src/licenses.qdoc2
-rw-r--r--doc/src/mac-differences.qdoc2
-rw-r--r--doc/src/model-view-programming.qdoc2
-rw-r--r--doc/src/phonon-api.qdoc34
-rw-r--r--doc/src/porting4-overview.qdoc6
-rw-r--r--doc/src/properties.qdoc8
-rw-r--r--doc/src/q3valuelist.qdoc2
-rw-r--r--doc/src/qalgorithms.qdoc2
-rw-r--r--doc/src/qnamespace.qdoc4
-rw-r--r--doc/src/qset.qdoc11
-rw-r--r--doc/src/qstyles.qdoc261
-rw-r--r--doc/src/qtdesigner.qdoc2
-rw-r--r--doc/src/qtscriptdebugger-manual.qdoc2
-rw-r--r--doc/src/signalsandslots.qdoc14
-rw-r--r--doc/src/snippets/animation/sequential/icons.qrc6
-rw-r--r--doc/src/snippets/animation/sequential/icons/left.pngbin0 -> 413 bytes
-rw-r--r--doc/src/snippets/animation/sequential/icons/right.pngbin0 -> 414 bytes
-rw-r--r--doc/src/snippets/animation/sequential/main.cpp50
-rw-r--r--doc/src/snippets/animation/sequential/sequential.pro4
-rw-r--r--doc/src/snippets/animation/sequential/tracer.cpp25
-rw-r--r--doc/src/snippets/animation/sequential/tracer.h23
-rw-r--r--doc/src/snippets/code/doc_src_layout.qdoc45
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp2
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmapcache.cpp2
-rw-r--r--doc/src/snippets/declarative/gradient.qml8
-rw-r--r--doc/src/snippets/picture/picture.cpp2
-rw-r--r--doc/src/snippets/widgets-tutorial/template.cpp14
-rw-r--r--doc/src/stylesheet.qdoc16
-rw-r--r--doc/src/tech-preview/known-issues.html2
-rw-r--r--doc/src/timers.qdoc4
-rw-r--r--doc/src/tools-list.qdoc6
-rw-r--r--doc/src/topics.qdoc2
-rw-r--r--doc/src/tutorials/addressbook-fr.qdoc7
-rw-r--r--doc/src/tutorials/addressbook.qdoc40
-rw-r--r--doc/src/tutorials/declarative.qdoc3
-rw-r--r--doc/src/tutorials/widgets-tutorial.qdoc132
-rw-r--r--doc/src/xquery-introduction.qdoc2
90 files changed, 2478 insertions, 984 deletions
diff --git a/doc/src/3rdparty.qdoc b/doc/src/3rdparty.qdoc
index a87878e..23dfb12 100644
--- a/doc/src/3rdparty.qdoc
+++ b/doc/src/3rdparty.qdoc
@@ -61,6 +61,15 @@
\tableofcontents
+ \section1 DES (\c des.cpp)
+
+ \e{Implementation of DES encryption for NTLM\br
+ Copyright 1997-2005 Simon Tatham.\br
+ This software is released under the MIT license.}
+
+ See \c src/3rdparty/des/des.cpp for more information about the terms and
+ conditions under which the code is supplied.
+
\section1 FreeType 2 (\c freetype) version 2.3.6
\e{The FreeType project is a team of volunteers who develop free, portable
@@ -108,18 +117,6 @@
See \c src/3rdparty/harfbuzz/COPYING.FTL and src/3rdparty/harfbuzz/COPYING.GPL
for license details.
- \section1 MD5 (\c md5.cpp and \c md5.h)
-
- \e{This code implements the MD5 message-digest algorithm.
- The algorithm is due to Ron Rivest. This code was
- written by Colin Plumb in 1993, no copyright is claimed.
- This code is in the public domain; do with it what you wish.} -- quoted from
- \c src/3rdparty/md5/md5.h
-
- See \c src/3rdparty/md5/md5.cpp and \c src/3rdparty/md5/md5.h for more
- information about the terms and conditions under which the code is
- supplied.
-
\section1 The Independent JPEG Group's JPEG Software (\c libjpeg) version 6b
\e{This package contains C software to implement JPEG image compression and
@@ -132,6 +129,29 @@
See \c src/3rdparty/libjpeg/README for license details.
+ \section1 MD4 (\c md4.cpp and \c md4.h)
+
+ \e{MD4 (RFC-1320) message digest.\br
+ Modified from MD5 code by Andrey Panin <pazke@donpac.ru>\br\br
+ Written by Solar Designer <solar@openwall.com> in 2001, and placed in\br
+ the public domain. There's absolutely no warranty.}
+
+ See \c src/3rdparty/md4/md4.cpp and \c src/3rdparty/md4/md4.h for more
+ information about the terms and conditions under which the code is
+ supplied.
+
+ \section1 MD5 (\c md5.cpp and \c md5.h)
+
+ \e{This code implements the MD5 message-digest algorithm.
+ The algorithm is due to Ron Rivest. This code was
+ written by Colin Plumb in 1993, no copyright is claimed.
+ This code is in the public domain; do with it what you wish.} -- quoted from
+ \c src/3rdparty/md5/md5.h
+
+ See \c src/3rdparty/md5/md5.cpp and \c src/3rdparty/md5/md5.h for more
+ information about the terms and conditions under which the code is
+ supplied.
+
\section1 MNG Library (\c libmng) version 1.0.10
\e{The libmng library supports decoding, displaying, encoding, and various
@@ -152,6 +172,56 @@
See \c src/3rdparty/libpng/LICENSE for license details.
+ \section1 The ptmalloc memory allocator (\c ptmalloc3) version 1.8
+
+ \e ptmcalloc3 is a scalable concurrent memory allocator suitable
+ for use in multi-threaded programs.
+
+ \hr
+
+ Copyright (c) 2001-2006 Wolfram Gloger
+
+ Permission to use, copy, modify, distribute, and sell this software
+ and its documentation for any purpose is hereby granted without fee,
+ provided that (i) the above copyright notices and this permission
+ notice appear in all copies of the software and related documentation,
+ and (ii) the name of Wolfram Gloger may not be used in any advertising
+ or publicity relating to the software.
+
+ THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+ IN NO EVENT SHALL WOLFRAM GLOGER BE LIABLE FOR ANY SPECIAL,
+ INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
+ DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
+ OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+ \hr
+
+ See \c src/3rdparty/ptmalloc/COPYRIGHT for license details.
+
+ \section1 SHA-1 (\c sha1.cpp)
+
+ \e{Based on the public domain implementation of the SHA-1 algorithm\br
+ Copyright (C) Dominik Reichl <dominik.reichl@t-online.de>}
+
+ See \c src/3rdparty/sha1/sha1.cpp for more information about the terms and
+ conditions under which the code is supplied.
+
+ \section1 SQLite (\c sqlite) version 3.5.9
+
+ \e{SQLite is a small C library that implements a
+ self-contained, embeddable, zero-configuration SQL database engine.}
+ -- quoted from \l{http://www.sqlite.org/}{www.sqlite.org}.
+
+ According to the comments in the source files, the code is in the public
+ domain. See the
+ \l{http://www.sqlite.org/copyright.html}{SQLite Copyright} page on the
+ SQLite web site for further information.
+
\section1 TIFF Software Distribution (\c libtiff) version 3.8.2
\e {libtiff is a set of C functions (a library) that support the
@@ -212,17 +282,6 @@
See \c src/3rdparty/libtiff/COPYRIGHT for license details.
- \section1 SQLite (\c sqlite) version 3.5.9
-
- \e{SQLite is a small C library that implements a
- self-contained, embeddable, zero-configuration SQL database engine.}
- -- quoted from \l{http://www.sqlite.org/}{www.sqlite.org}.
-
- According to the comments in the source files, the code is in the public
- domain. See the
- \l{http://www.sqlite.org/copyright.html}{SQLite Copyright} page on the
- SQLite web site for further information.
-
\section1 Wintab API (\c wintab)
Wintab is a de facto API for pointing devices on Windows. The
@@ -238,35 +297,4 @@
src/3rdparty/zlib/README.
See \c src/3rdparty/zlib/README for license details.
-
- \section1 The ptmalloc memory allocator (\c ptmalloc3) version 1.8
-
- \e ptmcalloc3 is a scalable concurrent memory allocator suitable
- for use in multi-threaded programs.
-
- \hr
-
- Copyright (c) 2001-2006 Wolfram Gloger
-
- Permission to use, copy, modify, distribute, and sell this software
- and its documentation for any purpose is hereby granted without fee,
- provided that (i) the above copyright notices and this permission
- notice appear in all copies of the software and related documentation,
- and (ii) the name of Wolfram Gloger may not be used in any advertising
- or publicity relating to the software.
-
- THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
- IN NO EVENT SHALL WOLFRAM GLOGER BE LIABLE FOR ANY SPECIAL,
- INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
- DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
- OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-
- \hr
-
- See \c src/3rdparty/ptmalloc/COPYRIGHT for license details.
*/
diff --git a/doc/src/accessible.qdoc b/doc/src/accessible.qdoc
index 090da86..ad9f4f1 100644
--- a/doc/src/accessible.qdoc
+++ b/doc/src/accessible.qdoc
@@ -527,7 +527,7 @@
on plugins, consult the plugins \l{How to Create Qt
Plugins}{overview document}.
- You can omit the the first macro unless you want the plugin
+ You can omit the first macro unless you want the plugin
to be statically linked with the application.
\section2 Implementing Interface Factories
diff --git a/doc/src/animation.qdoc b/doc/src/animation.qdoc
index 3bbabaa..e96eca2 100644
--- a/doc/src/animation.qdoc
+++ b/doc/src/animation.qdoc
@@ -64,7 +64,10 @@
We will in this section take a high-level look at the animation
framework's architecture and how it is used to animate Qt
- properties.
+ properties. The following diagram shows the most important classes
+ in the animation framework.
+
+ \image animations-architecture.png
The animation framework foundation consists of the base class
QAbstractAnimation, and its two subclasses QVariantAnimation and
@@ -268,10 +271,10 @@
\code
QPushButton *bonnie = new QPushButton("Bonnie");
- bonnie.show();
+ bonnie->show();
QPushButton *clyde = new QPushButton("Clyde");
- clyde.show();
+ clyde->show();
QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry");
// Set up anim1
@@ -324,14 +327,14 @@
\section1 Animations and States
When using a \l{The State Machine Framework}{state machine}, we
- have a special state, QAnimationState, that will play one or more
- animations.
-
- The QState::addAnimatedTransition() convenience function lets you
- associate an animation to a state transition. The function will
- create the QAnimationState for you, and insert it into the state
- machine. We also have the possibility to associate properties with
- the states rather than setting the start and end values ourselves.
+ can associate an animation to a transition between states using a
+ QSignalTransition or QEventTransition class. These classes are both
+ derived from QAbstractClass, which defines the convenience function
+ addAnimation() that enables the appending of one or more animations
+ triggered when the transition occurs.
+
+ We also have the possibility to associate properties with the
+ states rather than setting the start and end values ourselves.
Below is a complete code example that animates the geometry of a
QPushButton.
@@ -342,18 +345,19 @@
QStateMachine *machine = new QStateMachine;
QState *state1 = new QState(machine->rootState());
- state1->setPropertyOnEntry(button, "geometry",
- QRect(0, 0, 100, 30));
+ state1->assignProperty(button, "geometry", QRect(0, 0, 100, 30));
machine->setInitialState(state1);
QState *state2 = new QState(machine->rootState());
- state2->setPropertyOnEntry(button, "geometry",
- QRect(250, 250, 100, 30));
+ state2->assignProperty(button, "geometry", QRect(250, 250, 100, 30));
+
+ QSignalTransition *transition1 = state1->addTransition(button,
+ SIGNAL(clicked()), state2);
+ transition1->addAnimation(new QPropertyAnimation(button, "geometry"));
- state1->addAnimatedTransition(button, SIGNAL(clicked()), state2,
- new QPropertyAnimation(button, "geometry"));
- state2->addAnimatedTransition(button, SIGNAL(clicked()), state1,
- new QPropertyAnimation(button, "geometry"));
+ QSignalTransition *transition2 = state2->addTransition(button,
+ SIGNAL(clicked()), state1);
+ transition2->addAnimation(new QPropertyAnimation(button, "geometry"));
machine->start();
\endcode
diff --git a/doc/src/credits.qdoc b/doc/src/credits.qdoc
index 114e28d..6b48514 100644
--- a/doc/src/credits.qdoc
+++ b/doc/src/credits.qdoc
@@ -188,7 +188,7 @@
Jesper K. Pedersen <blackie atklaralvdalens-datakonsult.se>\br
Jim Lauchlan <jim.lauchlan at gecm.com>\br
Joachim Backes <backes at rhrk.uni-kl.de>\br
- Jochen R&ouml;mmler <jochen at concept.de>\br
+ Jochen R\ouml\c{}mmler <jochen at concept.de>\br
Jochen Scharrlach <jscharrl at BA-Stuttgart.De>\br
Joe Croft <jcroft at swbell.net>\br
Joel Lindholm <wizball at kewl.campus.luth.se>\br
diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc
index f7eee50..2ef91e6 100644
--- a/doc/src/declarative/basictypes.qdoc
+++ b/doc/src/declarative/basictypes.qdoc
@@ -82,6 +82,26 @@
\raw HTML
\endraw
+ \target basicqmlurl
+ \raw HTML
+ <br>
+ <table>
+ <tr><td><div class="qmltype">url</div></td></tr>
+ </table>
+ \endraw
+
+ URLs are resource locators, such as file names. They can be either absolute, like "http://qtsoftware.com",
+ or relative, like "pics/logo.png". Relative URLs are resolved relative to the URL of the component where
+ the URL is converted from a JavaScript string expression to a url property value.
+
+ Setting a url looks like this:
+ \code
+ Image { source: "pics/logo.png" }
+ \endcode
+
+ \raw HTML
+ \endraw
+
\target basicqmlcolor
\raw HTML
<br>
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index 976e2f1..3298699 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -140,6 +140,7 @@ The following table lists the Qml elements provided by the Qt Declarative module
\o
\list
+\o \l Rotation
\o \l Squish
\o \l Rotation3D
\endlist
diff --git a/doc/src/declarative/pics/gradient.png b/doc/src/declarative/pics/gradient.png
new file mode 100644
index 0000000..5eefdd2
--- /dev/null
+++ b/doc/src/declarative/pics/gradient.png
Binary files differ
diff --git a/doc/src/declarative/qmlforcpp.qdoc b/doc/src/declarative/qmlforcpp.qdoc
index e29b962..2898499 100644
--- a/doc/src/declarative/qmlforcpp.qdoc
+++ b/doc/src/declarative/qmlforcpp.qdoc
@@ -28,7 +28,8 @@
based on a simple declarative component description.
\code
- QmlComponent redRectangle("Rect { color: \"red\"; width: 100; height: 100 }");
+ QmlEngine engine;
+ QmlComponent redRectangle(&engine, "Rect { color: \"red\"; width: 100; height: 100 }");
for (int ii = 0; ii < 100; ++ii) {
QObject *rectangle = redRectangle.create();
// ... do something with the rectangle ...
@@ -581,7 +582,8 @@
\row
\o
\code
- QmlComponent component(xmlData);
+ QmlEngine engine;
+ QmlComponent component(&engine, qmlData);
QObject *object = component.create();
// Will print "Hello world!"
qDebug() << object->property("text2");
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment.qdoc
index bcfa93d..446c91b 100644
--- a/doc/src/deployment.qdoc
+++ b/doc/src/deployment.qdoc
@@ -1247,7 +1247,7 @@
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 48
Then we update the source code in \c tools/plugandpaint/main.cpp
- to look for the the new plugins. After constructing the
+ to look for the new plugins. After constructing the
QApplication, we add the following code:
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 49
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc
index 2706182..bc39c56 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/designer-manual.qdoc
@@ -58,7 +58,8 @@
and custom plugins allow you to use your own components with \QD.
If you are new to \QD, you can take a look at the
- \l{Getting To Know Qt Designer} document.
+ \l{Getting To Know Qt Designer} document. For a quick tutorial on how to
+ use \QD, refer to \l{A Quick Start to Qt Designer}.
Qt Designer 4.5 boasts a long list of improvements. For a detailed list of
what is new, refer \l{What's New in Qt Designer 4.5}.
@@ -235,6 +236,7 @@
\page designer-to-know.html
\contentspage {Qt Designer Manual}{Contents}
+
\title Getting to Know Qt Designer
\tableofcontents
@@ -298,12 +300,12 @@
\row
\i \inlineimage designer-widget-box.png
\i \bold{Qt Designer's Widget Box}
-
+
The widget box provides a selection of standard Qt widgets, layouts,
and other objects that can be used to create user interfaces on forms.
Each of the categories in the widget box contain widgets with similar
uses or related features.
-
+
\note Since Qt 4.4, new widgets have been included, e.g.,
QPlainTextEdit, QCommandLinkButton, QScrollArea, QMdiArea, and
QWebView.
@@ -357,7 +359,7 @@
using a grid. The coordinates on the screenshot show the position of each
widget within the grid.
- \image addressbook-tutorial-part3-labeled-layout.png
+ \image addressbook-tutorial-part3-labeled-layout.png
\note Inside the grid, the QPushButton objects are actually nested. The
buttons on the right are first placed in a QVBoxLayout; the buttons at the
@@ -366,7 +368,7 @@
To visualize, imagine the layout as a box that shrinks as much as possible,
attempting to \e squeeze your widgets in a neat arrangement, and, at the
- same time, maximize the use of available space.
+ same time, maximize the use of available space.
Qt's layouts help when you:
@@ -408,6 +410,7 @@
\page designer-quick-start.html
\contentspage {Qt Designer Manual}{Contents}
+
\title A Quick Start to Qt Designer
Using \QD involves \bold four basic steps:
@@ -419,16 +422,14 @@
\o Preview the form
\endlist
- \omit
\image rgbController-screenshot.png
- \endomit
- Suppose you would like to design a small widget (see screenshot above)
- that contains the controls needed to manipulate Red, Green and Blue (RGB)
- values -- a type of widget that can be seen everywhere in image
- manipulation programs.
+ Suppose you would like to design a small widget (see screenshot above) that
+ contains the controls needed to manipulate Red, Green and Blue (RGB) values
+ -- a type of widget that can be seen everywhere in image manipulation
+ programs.
- \table
+ \table
\row
\i \inlineimage designer-choosing-form.png
\i \bold{Choosing a Form}
@@ -436,64 +437,64 @@
You start by choosing \gui Widget from the \gui{New Form} dialog.
\endtable
- Then you drag three labels, three spin boxes and three vertical sliders
- on to your form. You can roughly arrange them according to how you would
- like them to be laid out.
- \omit
\table
- \row \o \inlineimage rgbController-widgetBox.png
- \o \inlineimage rgbController-arrangement.png
+ \row
+ \i \inlineimage rgbController-arrangement.png
+ \i \bold{Placing Widgets on a Form}
+
+ Drag three labels, three spin boxes and three vertical sliders on to your
+ form. To change the label's default text, simply double-click on it. You
+ can arrange them according to how you would like them to be laid out.
\endtable
- \endomit
To ensure that they are laid out exactly like this in your program, you
need to place these widgets into a layout. We will do this in groups of
- three. Select the "RED" label. Then, hold down \key Shift while you select
+ three. Select the "RED" label. Then, hold down \key Ctrl while you select
its corresponding spin box and slider. In the \gui{Form} menu, select
\gui{Lay Out in a Grid}.
- \omit
\table
\row
\i \inlineimage rgbController-form-gridLayout.png
\i \inlineimage rgbController-selectForLayout.png
\endtable
- \endomit
Repeat the step for the other two labels along with their corresponding
- spin boxes and sliders as well. Your form will now look similar to the
- screenshot below.
-
- \omit
- \image rgbController-almostLaidOut.png
- \endomit
+ spin boxes and sliders as well.
The next step is to combine all three layouts into one \bold{main layout}.
- It is important that your form has a main layout; otherwise, the widgets
- on your form will not resize when your form is resized. To set the main
- layout, \gui{Right click} anywhere on your form, outside of the three
- separate layouts, and select \gui{Lay Out Horizontally}. Alternatively, you
- could also select \gui{Lay Out in a Grid} -- you will still see the same
- arrangement.
+ The main layout is the top level widget's (in this case, the QWidget)
+ layout. It is important that your top level widget has a layout; otherwise,
+ the widgets on your window will not resize when your window is resized. To
+ set the layout, \gui{Right click} anywhere on your form, outside of the
+ three separate layouts, and select \gui{Lay Out Horizontally}.
+ Alternatively, you could also select \gui{Lay Out in a Grid} -- you will
+ still see the same arrangement (shown below).
+
+ \image rgbController-final-layout.png
\note Main layouts cannot be seen on the form. To check if you have a main
layout installed, try resizing your form; your widgets should resize
- accordingly.
+ accordingly. Alternatively, you can take a look at \QD's
+ \gui{Object Inspector}. If your top level widget does not have a layout,
+ you will see the broken layout icon next to it,
+ \inlineimage rgbController-no-toplevel-layout.png
+ .
When you click on the slider and drag it to a certain value, you want the
- spin box to display the slider's position. To do this, you need to connect
- the slider's \l{QAbstractSlider::}{valueChanged()} signal to the spin box's
- \l{QSpinBox::}{setValue()} slot. You also need to make the reverse
- connections, e.g., connect the spin box's \l{QSpinBox::}{valueChanged()}
- signal to the slider's \l{QAbstractSlider::value()}{setValue()} slot.
+ spin box to display the slider's position. To accomplish this behavior, you
+ need to connect the slider's \l{QAbstractSlider::}{valueChanged()} signal
+ to the spin box's \l{QSpinBox::}{setValue()} slot. You also need to make
+ the reverse connections, e.g., connect the spin box's \l{QSpinBox::}
+ {valueChanged()} signal to the slider's \l{QAbstractSlider::value()}
+ {setValue()} slot.
To do this, you have to switch to \gui{Edit Signals/Slots} mode, either by
pressing \key{F4} or something \gui{Edit Signals/Slots} from the \gui{Edit}
menu.
- \omit
\table
\row
\i \inlineimage rgbController-signalsAndSlots.png
@@ -503,17 +504,19 @@
\gui{Configure Connection} dialog, shown below, will pop up. Select the
correct signal and slot and click \gui OK.
\endtable
- \endomit
- \omit
- \image rgbController-configureConnection.png
- \endomit
+ \image rgbController-configure-connection1.png
Repeat the step (in reverse order), clicking on the spin box and dragging
the cursor towards the slider, to connect the spin box's
\l{QSpinBox::}{valueChanged()} signal to the slider's
\l{QAbstractSlider::value()}{setValue()} slot.
+ You can use the screenshot below as a guide to selecting the correct signal
+ and slot.
+
+ \image rgbController-configure-connection2.png
+
Now that you have successfully connected the objects for the "RED"
component of the RGB Controller, do the same for the "GREEN" and "BLUE"
components as well.
@@ -521,7 +524,6 @@
Since RGB values range between 0 and 255, we need to limit the spin box
and slider to that particular range.
- \omit
\table
\row
\i \inlineimage rgbController-property-editing.png
@@ -532,21 +534,14 @@
\l{QSpinBox::}{maximum} property. Then, click on the first vertical
slider, you will see \l{QAbstractSlider}'s properties. Enter "255" for
the \l{QAbstractSlider::}{maximum} property as well. Repeat this
- process for the remaining spin boxes and sliders.
+ process for the remaining spin boxes and sliders.
\endtable
- \endomit
-
- Now, we preview your form to see how it would look in your application. To
- preview your form, press \key{Ctrl + R} or select \gui Preview from the
- \gui Form menu.
-
- \omit
- \image rgbController-preview.png
- \endomit
- Try dragging the slider - the spin box will mirror its value too (and vice
- versa). Also, you can resize it to see how the layouts used to manage the
- child widgets respond to different window sizes.
+ Now, we preview your form to see how it would look in your application -
+ press \key{Ctrl + R} or select \gui Preview from the \gui Form menu. Try
+ dragging the slider - the spin box will mirror its value too (and vice
+ versa). Also, you can resize it to see how the layouts that are used to
+ manage the child widgets, respond to different window sizes.
*/
@@ -788,11 +783,11 @@
have a \c text property that can also be edited by double-clicking
on the widget or by pressing \gui F2. \QD interprets the backslash
(\\) character specially, enabling newline (\\n) characters to be
- inserted into the text; the \\\\ character sequence is used to
+ inserted into the text; the \\\\ character sequence is used to
insert a single backslash into the text. A context menu can also be
opened while editing, providing another way to insert special
characters and newlines into the text.
- \endlist
+ \endlist
\section2 Dynamic Properties
@@ -804,12 +799,12 @@
\image designer-property-editor-toolbar.png
- To add a dynamic property, clcik on the \gui Add button
+ To add a dynamic property, clcik on the \gui Add button
\inlineimage designer-property-editor-add-dynamic.png
- . To remove it, click on the \gui Remove button
+ . To remove it, click on the \gui Remove button
\inlineimage designer-property-editor-remove-dynamic.png
instead. You can also sort the properties alphabetically and change the
- color groups by clickinig on the \gui Configure button
+ color groups by clickinig on the \gui Configure button
\inlineimage designer-property-editor-configure.png
.
@@ -911,7 +906,7 @@
\section2 Horizontal and Vertical Layouts
-
+
The simplest way to arrange objects on a form is to place them in a
horizontal or vertical layout. Horizontal layouts ensure that the widgets
within are aligned horizontally; vertical layouts ensure that they are
@@ -1138,7 +1133,7 @@
spacers just provide spacing hints to layouts, so they cannot be connected
to other objects.
-
+
\target HighlightedObjects
\table
\row
@@ -1177,7 +1172,7 @@
\image designer-connection-dialog.png
- To complete the connection, select a signal from the source object and a
+ To complete the connection, select a signal from the source object and a
slot from the destination object, then click \key OK. Click \key Cancel if
you wish to abandon the connection.
@@ -1720,22 +1715,22 @@
\i \bold{Resource Files}
Within the resource browser, you can open existing resource files or
- create new ones. Click the \gui{Edit Resources} button
+ create new ones. Click the \gui{Edit Resources} button
\inlineimage designer-edit-resources-button.png
to edit your resources. To reload resources, click on the \gui Reload
- button
+ button
\inlineimage designer-reload-resources-button.png
.
\endtable
Once a resource file is loaded, you can create or remove entries in it
- using the given \gui{Add Files}
- \inlineimage designer-add-resource-entry-button.png
- and \gui{Remove Files}
+ using the given \gui{Add Files}
+ \inlineimage designer-add-resource-entry-button.png
+ and \gui{Remove Files}
\inlineimage designer-remove-resource-entry-button.png
buttons, and specify resources (e.g., images) using the \gui{Add Files}
- button
+ button
\inlineimage designer-add-files-button.png
. Note that these resources must reside within the current resource file's
directory or one of its subdirectories.
@@ -1747,15 +1742,15 @@
\i \inlineimage designer-edit-resource.png
\i \bold{Editing Resource Files}
- Press the
+ Press the
\inlineimage designer-add-resource-entry-button.png
button to add a new resource entry to the file. Then use the
- \gui{Add Files} button
+ \gui{Add Files} button
\inlineimage designer-add-files-button.png
to specify the resource.
You can remove resources by selecting the corresponding entry in the
- resource editor, and pressing the
+ resource editor, and pressing the
\inlineimage designer-remove-resource-entry-button.png
button.
\endtable
@@ -2657,7 +2652,7 @@ pixmap property in the property editor.
QDesignerTaskMenuExtension is useful for custom widgets. It provides an
extension that allows you to add custom menu entries to \QD's task
menu.
-
+
The \l{designer/taskmenuextension}{Task Menu Extension} example
illustrates how to use this class.
@@ -2758,7 +2753,7 @@ pixmap property in the property editor.
function, making it able to create your extension, such as a
\l{designer/containerextension}{MultiPageWidget} container extension.
- You can either create a new QExtensionFactory and reimplement the
+ You can either create a new QExtensionFactory and reimplement the
QExtensionFactory::createExtension() function:
\snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 8
diff --git a/doc/src/diagrams/animations-architecture.svg b/doc/src/diagrams/animations-architecture.svg
new file mode 100644
index 0000000..0246510
--- /dev/null
+++ b/doc/src/diagrams/animations-architecture.svg
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="950.00006"
+ height="365.28983"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="animations-architecture.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.0">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3736"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"
+ transform="scale(-0.6,-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3730"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3712"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3852"
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)" />
+ </marker>
+ <linearGradient
+ id="linearGradient3165">
+ <stop
+ style="stop-color:#c8c8dc;stop-opacity:1;"
+ offset="0"
+ id="stop3167" />
+ <stop
+ style="stop-color:#b4b4c8;stop-opacity:0;"
+ offset="1"
+ id="stop3169" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3165"
+ id="linearGradient3171"
+ x1="249.25"
+ y1="89.862183"
+ x2="475.75"
+ y2="89.862183"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2195969,0,0,3.7006494,-257.93754,-842.42203)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3165"
+ id="linearGradient3183"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2195969,0,0,3.7006494,-383.02298,-676.69717)"
+ x1="249.25"
+ y1="89.862183"
+ x2="475.75"
+ y2="89.862183" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3165"
+ id="linearGradient3191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2195969,0,0,3.7006494,-382.93759,-1004.922)"
+ x1="249.25"
+ y1="89.862183"
+ x2="475.75"
+ y2="89.862183" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3165"
+ id="linearGradient7165"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2195969,0,0,3.7006494,-483.69907,-593.77419)"
+ x1="249.25"
+ y1="89.862183"
+ x2="475.75"
+ y2="89.862183" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3165"
+ id="linearGradient7195"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2195969,0,0,3.7006494,-571.87523,-1167.422)"
+ x1="249.25"
+ y1="89.862183"
+ x2="475.75"
+ y2="89.862183" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3165"
+ id="linearGradient7203"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2195969,0,0,3.7006494,-572.46592,-841.2256)"
+ x1="249.25"
+ y1="89.862183"
+ x2="475.75"
+ y2="89.862183" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="276.75951"
+ inkscape:cy="155.06417"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:snap-bbox="true"
+ inkscape:window-width="1592"
+ inkscape:window-height="1124"
+ inkscape:window-x="0"
+ inkscape:window-y="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383"
+ visible="true"
+ enabled="true"
+ units="pt"
+ spacingx="2pt"
+ spacingy="2pt" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-121.77519,-152.95286)">
+ <rect
+ style="opacity:1;fill:url(#linearGradient3171);fill-opacity:1;stroke:#202020;stroke-width:1.35220754;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2385"
+ width="49.409317"
+ height="277.54871"
+ x="-203.03828"
+ y="-648.64777"
+ ry="12.582828"
+ rx="10.562523"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="380.311"
+ y="185.86879"
+ id="text3173"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan3175"
+ x="380.311"
+ y="185.86879">QAbstractAnimation</tspan></text>
+ <rect
+ style="opacity:1;fill:url(#linearGradient3183);fill-opacity:1;stroke:#202020;stroke-width:1.35220754;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3177"
+ width="49.409317"
+ height="277.54871"
+ x="-328.12369"
+ y="-482.92297"
+ ry="12.582828"
+ rx="10.562523"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="221.80489"
+ y="310.95419"
+ id="text3179"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan3181"
+ x="221.80489"
+ y="310.95419">QVariantAnimation</tspan></text>
+ <rect
+ style="opacity:1;fill:url(#linearGradient3191);fill-opacity:1;stroke:#202020;stroke-width:1.35220754;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3185"
+ width="49.409317"
+ height="277.54871"
+ x="-328.03827"
+ y="-811.14777"
+ ry="12.582828"
+ rx="10.562523"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="564.13324"
+ y="310.86877"
+ id="text3187"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan3189"
+ x="564.13324"
+ y="310.86877">QAnimationGroup</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 346.77519,279.39048 L 346.77519,241.89048 L 509.27519,241.89048 L 509.27519,204.39048"
+ id="path3195"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 671.77519,279.39048 L 671.77519,241.89048 L 509.27519,241.89048"
+ id="path7137"
+ sodipodi:nodetypes="ccc" />
+ <rect
+ style="opacity:1;fill:url(#linearGradient7165);fill-opacity:1;stroke:#202020;stroke-width:1.35220754;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7159"
+ width="49.409317"
+ height="277.54871"
+ x="-428.7998"
+ y="-400"
+ ry="12.582828"
+ rx="10.562523"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="131.66315"
+ y="411.63031"
+ id="text7161"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan7163"
+ x="131.66315"
+ y="411.63031">QPropertyAnimation</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 309.27519,379.39048 L 309.27519,329.39048"
+ id="path7167"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:1;fill:url(#linearGradient7195);fill-opacity:1;stroke:#202020;stroke-width:1.35220754;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7189"
+ width="49.409317"
+ height="375"
+ x="-516.97589"
+ y="-1071.0991"
+ ry="12.582828"
+ rx="10.562523"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="703.17139"
+ y="499.8064"
+ id="text7191"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan7193"
+ x="703.17139"
+ y="499.8064">QSequentialAnimationGroup</tspan></text>
+ <rect
+ style="opacity:1;fill:url(#linearGradient7203);fill-opacity:1;stroke:#202020;stroke-width:1.35220754;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7197"
+ width="50"
+ height="350"
+ x="-517.56659"
+ y="-647.45129"
+ ry="12.582828"
+ rx="10.562523"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="306.46109"
+ y="500.39709"
+ id="text7199"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan7201"
+ x="306.46109"
+ y="500.39709">QParallelAnimationGroup</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 859.27519,466.89048 L 859.27519,391.89048 L 671.77519,391.89048"
+ id="path7205"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 496.77519,466.89048 L 496.77519,391.89048 L 671.77519,391.89048 L 671.77519,329.39048"
+ id="path7207"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/doc/src/diagrams/dependencies.lout b/doc/src/diagrams/dependencies.lout
index d20f4f1..256f7de 100644
--- a/doc/src/diagrams/dependencies.lout
+++ b/doc/src/diagrams/dependencies.lout
@@ -1,7 +1,13 @@
+# This file is used to create x11_dependencies.sk, which is then converted to a PNG image.
+#
+# lout -EPS -o dependencies.eps dependencies.lout
+# pstoedit -f sk dependencies.eps x11_dependencies.sk
+# makeimage.py x11_dependencies.sk x11_dependencies.png 0.25 --anti-alias
+
@SysInclude { picture }
@SysInclude { tbl }
@SysInclude { diag }
-# lout -EPS dependencies.lout > dependencies.eps
+
macro @TTGreenColour { {cmyk 0.40 0.00 1.00 0.01} }
macro @TTPurpleColour { {cmyk 0.39 0.39 0.00 0.00} }
macro @DefaultColour { rgb { 0.961 0.961 0.863 } }
@@ -41,31 +47,33 @@ macro @GlibColour { rgb { 0.7 0.7 0.7 } }
div { top }
# fmarginbelow { 0c }
- aformat { @Cell A | @Cell B | @Cell marginbelow { 0c } font { +2p } C | @Cell D | @Cell E }
- bformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F }
- cformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell marginleft { 1.5c } E | @Cell F }
- dformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F }
- eformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F }
- fformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F }
- gformat { @Cell A | @Cell B | @Cell C | @Cell D | @StartHSpan @Cell E | @HSpan }
+ aformat { @Cell A | @Cell B | @StartHSpan @Cell marginbelow { 0c } font { +2p } C | @HSpan | @HSpan | @Cell F | @Cell G}
+ bformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F | @Cell G }
+ cformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell marginleft { 1.5c } F | @Cell G }
+ dformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F | @Cell G }
+ eformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F | @Cell G }
+ fformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @Cell F | @Cell G }
+ gformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E | @StartHSpan @Cell F | @HSpan }
{
@Rowa C { Qt"/"X11 library dependencies }
- @Rowb C { QTGUI:: @Node paint { @TTGreenColour } QtGui }
- @Rowc B { XCURSOR:: @Node paint { @OptionalColour } Xcursor }
- C { XRANDR:: @Node paint { @OptionalColour } Xrandr }
- D { XINERAMA:: @Node paint { @OptionalColour } Xinerama }
- E { Xi:: @Node paint { @OptionalColour } Xi }
- @Rowd C { XRENDER:: @Node paint { @OptionalColour } XRender }
- F { Xt:: @Node paint { @DefaultColour } Xt* }
- @Rowe A { QTCORE:: @Node paint { @TTPurpleColour } QtCore }
- C { XFIXES:: @Node paint { @OptionalColour } Xfixes }
- D { XEXT:: @Node paint { @DefaultColour } Xext }
- F { SM:: @Node paint { @SMColour } SM }
- @Rowf A { PTHREAD:: @Node paint { @PthreadColour } pthread }
- B { GLIB:: @Node paint { @GlibColour } Glib }
- D { X:: @Node paint { @DefaultColour } X11 }
- F { ICE:: @Node paint { @SMColour } ICE }
- @Rowg E {
+ @Rowb D { QTGUI:: @Node paint { @TTGreenColour } QtGui }
+ @Rowc C { XCURSOR:: @Node paint { @OptionalColour } Xcursor }
+ D { XRANDR:: @Node paint { @OptionalColour } Xrandr }
+ E { XINERAMA:: @Node paint { @OptionalColour } Xinerama }
+ F { Xi:: @Node paint { @OptionalColour } Xi }
+ @Rowd A { FONTCONFIG:: @Node paint { @OptionalColour } Fontconfig }
+ D { XRENDER:: @Node paint { @OptionalColour } XRender }
+ G { Xt:: @Node paint { @DefaultColour } Xt* }
+ @Rowe A { FREETYPE:: @Node paint { @OptionalColour } FreeType }
+ B { QTCORE:: @Node paint { @TTPurpleColour } QtCore }
+ D { XFIXES:: @Node paint { @OptionalColour } Xfixes }
+ E { XEXT:: @Node paint { @DefaultColour } Xext }
+ G { SM:: @Node paint { @SMColour } SM }
+ @Rowf B { PTHREAD:: @Node paint { @PthreadColour } pthread }
+ C { GLIB:: @Node paint { @GlibColour } Glib }
+ E { X:: @Node paint { @DefaultColour } X11 }
+ G { ICE:: @Node paint { @SMColour } ICE }
+ @Rowg F {
@Tbl
font { -2p }
margin { 0.15f }
@@ -101,6 +109,9 @@ macro @GlibColour { rgb { 0.7 0.7 0.7 } }
@Arrow from { XEXT } to { X }
@VHCurveArrow from { XCURSOR } to { XFIXES }
@VHVCurveArrow from { XFIXES } to { X }
+@HVCurveArrow from { QTGUI } to { FONTCONFIG } pathstyle { dotted }
+@Arrow from { FONTCONFIG } to { FREETYPE } pathstyle { dotted }
+@VHVCurveArrow from { FREETYPE } to { PTHREAD }
@Link from { C@W } to { D@E } pathstyle { dotted }
}
}
diff --git a/doc/src/diagrams/x11_dependencies.sk b/doc/src/diagrams/x11_dependencies.sk
index 5f6b304..a9eb3e3 100644
--- a/doc/src/diagrams/x11_dependencies.sk
+++ b/doc/src/diagrams/x11_dependencies.sk
@@ -2,1415 +2,1619 @@
document()
layout('A4',0)
layer('Layer 1',1,1,0,0,(0,0,0))
-G()
+fp((0,0,0))
+Fn('Helvetica')
+Fs(16)
+txt('Qt/X11',(254.1,398.35))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(16)
+txt('libr',(304.9,398.35))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(16)
+txt('ar',(326.07,398.35))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(16)
+txt('y',(340.739,398.35))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(16)
+txt('dependencies',(352.85,398.35))
fp((0,0,0))
le()
b()
-bs(268.8,339.25,0)
-bs(268.8,337.15,0)
-bs(352.8,337.15,0)
-bs(352.8,362.2,0)
-bs(350.7,362.2,0)
-bs(350.7,339.25,0)
-bs(268.8,339.25,0)
+bs(312.898,344.199,0)
+bs(312.898,342.102,0)
+bs(396.898,342.102,0)
+bs(396.898,367.148,0)
+bs(394.801,367.148,0)
+bs(394.801,344.199,0)
+bs(312.898,344.199,0)
bC()
-fp((0.59,0.99,0))
+fp((0.594,0.99,0))
le()
b()
-bs(266.7,339.25,0)
-bs(350.7,339.25,0)
-bs(350.7,364.3,0)
-bs(266.7,364.3,0)
-bs(266.7,339.25,0)
+bs(310.801,344.199,0)
+bs(394.801,344.199,0)
+bs(394.801,369.25,0)
+bs(310.801,369.25,0)
+bs(310.801,344.199,0)
lw(1.12)
lc(2)
b()
-bs(266.7,339.25,0)
-bs(350.7,339.25,0)
+bs(310.801,344.199,0)
+bs(394.801,344.199,0)
lw(1.12)
lc(2)
b()
-bs(350.7,339.25,0)
-bs(350.7,364.3,0)
+bs(394.801,344.199,0)
+bs(394.801,369.25,0)
lw(1.12)
lc(2)
b()
-bs(350.7,364.3,0)
-bs(266.7,364.3,0)
+bs(394.801,369.25,0)
+bs(310.801,369.25,0)
lw(1.12)
lc(2)
b()
-bs(266.7,364.3,0)
-bs(266.7,339.25,0)
+bs(310.801,369.25,0)
+bs(310.801,344.199,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('QtGui',(290.95,347))
+txt('QtGui',(335.05,351.95))
fp((0,0,0))
le()
b()
-bs(111.3,280.05,0)
-bs(111.3,277.95,0)
-bs(195.3,277.95,0)
-bs(195.3,302.15,0)
-bs(193.2,302.15,0)
-bs(193.2,280.05,0)
-bs(111.3,280.05,0)
+bs(212.102,285,0)
+bs(212.102,282.898,0)
+bs(296.102,282.898,0)
+bs(296.102,307.102,0)
+bs(294,307.102,0)
+bs(294,285,0)
+bs(212.102,285,0)
bC()
fp((0.792,0.882,1))
le()
b()
-bs(109.2,280.05,0)
-bs(193.2,280.05,0)
-bs(193.2,304.25,0)
-bs(109.2,304.25,0)
-bs(109.2,280.05,0)
+bs(210,285,0)
+bs(294,285,0)
+bs(294,309.199,0)
+bs(210,309.199,0)
+bs(210,285,0)
lw(1.12)
lc(2)
b()
-bs(109.2,280.05,0)
-bs(193.2,280.05,0)
+bs(210,285,0)
+bs(294,285,0)
lw(1.12)
lc(2)
b()
-bs(193.2,280.05,0)
-bs(193.2,304.25,0)
+bs(294,285,0)
+bs(294,309.199,0)
lw(1.12)
lc(2)
b()
-bs(193.2,304.25,0)
-bs(109.2,304.25,0)
+bs(294,309.199,0)
+bs(210,309.199,0)
lw(1.12)
lc(2)
b()
-bs(109.2,304.25,0)
-bs(109.2,280.05,0)
+bs(210,309.199,0)
+bs(210,285,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xcursor',(127.15,287.25))
+txt('Xcursor',(227.95,292.2))
fp((0,0,0))
le()
b()
-bs(268.8,280.05,0)
-bs(268.8,277.95,0)
-bs(352.8,277.95,0)
-bs(352.8,302.15,0)
-bs(350.7,302.15,0)
-bs(350.7,280.05,0)
-bs(268.8,280.05,0)
+bs(312.898,285,0)
+bs(312.898,282.898,0)
+bs(396.898,282.898,0)
+bs(396.898,307.102,0)
+bs(394.801,307.102,0)
+bs(394.801,285,0)
+bs(312.898,285,0)
bC()
fp((0.792,0.882,1))
le()
b()
-bs(266.7,280.05,0)
-bs(350.7,280.05,0)
-bs(350.7,304.25,0)
-bs(266.7,304.25,0)
-bs(266.7,280.05,0)
+bs(310.801,285,0)
+bs(394.801,285,0)
+bs(394.801,309.199,0)
+bs(310.801,309.199,0)
+bs(310.801,285,0)
lw(1.12)
lc(2)
b()
-bs(266.7,280.05,0)
-bs(350.7,280.05,0)
+bs(310.801,285,0)
+bs(394.801,285,0)
lw(1.12)
lc(2)
b()
-bs(350.7,280.05,0)
-bs(350.7,304.25,0)
+bs(394.801,285,0)
+bs(394.801,309.199,0)
lw(1.12)
lc(2)
b()
-bs(350.7,304.25,0)
-bs(266.7,304.25,0)
+bs(394.801,309.199,0)
+bs(310.801,309.199,0)
lw(1.12)
lc(2)
b()
-bs(266.7,304.25,0)
-bs(266.7,280.05,0)
+bs(310.801,309.199,0)
+bs(310.801,285,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xr',(287.8,287.25))
+txt('Xr',(331.9,292.2))
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('andr',(301.7,287.25))
+txt('andr',(345.796,292.2))
fp((0,0,0))
le()
b()
-bs(426.3,280.05,0)
-bs(426.3,277.95,0)
-bs(510.3,277.95,0)
-bs(510.3,302.15,0)
-bs(508.2,302.15,0)
-bs(508.2,280.05,0)
-bs(426.3,280.05,0)
+bs(413.699,285,0)
+bs(413.699,282.898,0)
+bs(497.699,282.898,0)
+bs(497.699,307.102,0)
+bs(495.602,307.102,0)
+bs(495.602,285,0)
+bs(413.699,285,0)
bC()
fp((0.792,0.882,1))
le()
b()
-bs(424.2,280.05,0)
-bs(508.2,280.05,0)
-bs(508.2,304.25,0)
-bs(424.2,304.25,0)
-bs(424.2,280.05,0)
+bs(411.602,285,0)
+bs(495.602,285,0)
+bs(495.602,309.199,0)
+bs(411.602,309.199,0)
+bs(411.602,285,0)
lw(1.12)
lc(2)
b()
-bs(424.2,280.05,0)
-bs(508.2,280.05,0)
+bs(411.602,285,0)
+bs(495.602,285,0)
lw(1.12)
lc(2)
b()
-bs(508.2,280.05,0)
-bs(508.2,304.25,0)
+bs(495.602,285,0)
+bs(495.602,309.199,0)
lw(1.12)
lc(2)
b()
-bs(508.2,304.25,0)
-bs(424.2,304.25,0)
+bs(495.602,309.199,0)
+bs(411.602,309.199,0)
lw(1.12)
lc(2)
b()
-bs(424.2,304.25,0)
-bs(424.2,280.05,0)
+bs(411.602,309.199,0)
+bs(411.602,285,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xiner',(436.55,287.25))
+txt('Xiner',(423.95,292.2))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(14)
+txt('ama',(456.514,292.2))
+fp((0,0,0))
+le()
+b()
+bs(548.602,285.102,0)
+bs(548.602,283,0)
+bs(632.602,283,0)
+bs(632.602,307,0)
+bs(630.5,307,0)
+bs(630.5,285.102,0)
+bs(548.602,285.102,0)
+bC()
+fp((0.792,0.882,1))
+le()
+b()
+bs(546.5,285.102,0)
+bs(630.5,285.102,0)
+bs(630.5,309.102,0)
+bs(546.5,309.102,0)
+bs(546.5,285.102,0)
+lw(1.12)
+lc(2)
+b()
+bs(546.5,285.102,0)
+bs(630.5,285.102,0)
+lw(1.12)
+lc(2)
+b()
+bs(630.5,285.102,0)
+bs(630.5,309.102,0)
+lw(1.12)
+lc(2)
+b()
+bs(630.5,309.102,0)
+bs(546.5,309.102,0)
+lw(1.12)
+lc(2)
+b()
+bs(546.5,309.102,0)
+bs(546.5,285.102,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('ama',(469.125,287.25))
+txt('Xi',(582.75,292.1))
fp((0,0,0))
le()
b()
-bs(561.2,280.15,0)
-bs(561.2,278.05,0)
-bs(645.2,278.05,0)
-bs(645.2,302.05,0)
-bs(643.1,302.05,0)
-bs(643.1,280.15,0)
-bs(561.2,280.15,0)
+bs(10.5,222.801,0)
+bs(10.5,220.699,0)
+bs(94.5,220.699,0)
+bs(94.5,247.898,0)
+bs(92.3984,247.898,0)
+bs(92.3984,222.801,0)
+bs(10.5,222.801,0)
bC()
fp((0.792,0.882,1))
le()
b()
-bs(559.1,280.15,0)
-bs(643.1,280.15,0)
-bs(643.1,304.15,0)
-bs(559.1,304.15,0)
-bs(559.1,280.15,0)
+bs(8.39844,222.801,0)
+bs(92.3984,222.801,0)
+bs(92.3984,250,0)
+bs(8.39844,250,0)
+bs(8.39844,222.801,0)
lw(1.12)
lc(2)
b()
-bs(559.1,280.15,0)
-bs(643.1,280.15,0)
+bs(8.39844,222.801,0)
+bs(92.3984,222.801,0)
lw(1.12)
lc(2)
b()
-bs(643.1,280.15,0)
-bs(643.1,304.15,0)
+bs(92.3984,222.801,0)
+bs(92.3984,250,0)
lw(1.12)
lc(2)
b()
-bs(643.1,304.15,0)
-bs(559.1,304.15,0)
+bs(92.3984,250,0)
+bs(8.39844,250,0)
lw(1.12)
lc(2)
b()
-bs(559.1,304.15,0)
-bs(559.1,280.15,0)
+bs(8.39844,250,0)
+bs(8.39844,222.801,0)
+fp((0,0,0))
+Fn('Helvetica')
+Fs(14)
+txt('F',(18.4,232.85))
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xi',(595.35,287.15))
+txt('ontconfig',(26.5508,232.85))
fp((0,0,0))
le()
b()
-bs(268.8,220.85,0)
-bs(268.8,218.75,0)
-bs(352.8,218.75,0)
-bs(352.8,242.95,0)
-bs(350.7,242.95,0)
-bs(350.7,220.85,0)
-bs(268.8,220.85,0)
+bs(312.898,225.801,0)
+bs(312.898,223.699,0)
+bs(396.898,223.699,0)
+bs(396.898,247.898,0)
+bs(394.801,247.898,0)
+bs(394.801,225.801,0)
+bs(312.898,225.801,0)
bC()
fp((0.792,0.882,1))
le()
b()
-bs(266.7,220.85,0)
-bs(350.7,220.85,0)
-bs(350.7,245.05,0)
-bs(266.7,245.05,0)
-bs(266.7,220.85,0)
+bs(310.801,225.801,0)
+bs(394.801,225.801,0)
+bs(394.801,250,0)
+bs(310.801,250,0)
+bs(310.801,225.801,0)
lw(1.12)
lc(2)
b()
-bs(266.7,220.85,0)
-bs(350.7,220.85,0)
+bs(310.801,225.801,0)
+bs(394.801,225.801,0)
lw(1.12)
lc(2)
b()
-bs(350.7,220.85,0)
-bs(350.7,245.05,0)
+bs(394.801,225.801,0)
+bs(394.801,250,0)
lw(1.12)
lc(2)
b()
-bs(350.7,245.05,0)
-bs(266.7,245.05,0)
+bs(394.801,250,0)
+bs(310.801,250,0)
lw(1.12)
lc(2)
b()
-bs(266.7,245.05,0)
-bs(266.7,220.85,0)
+bs(310.801,250,0)
+bs(310.801,225.801,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('XRender',(281.15,228.05))
+txt('XRender',(325.25,233))
fp((0,0,0))
le()
b()
-bs(662,220.95,0)
-bs(662,218.85,0)
-bs(746,218.85,0)
-bs(746,242.95,0)
-bs(743.9,242.95,0)
-bs(743.9,220.95,0)
-bs(662,220.95,0)
+bs(649.398,225.898,0)
+bs(649.398,223.801,0)
+bs(733.398,223.801,0)
+bs(733.398,247.898,0)
+bs(731.301,247.898,0)
+bs(731.301,225.898,0)
+bs(649.398,225.898,0)
bC()
fp((0.961,0.961,0.863))
le()
b()
-bs(659.9,220.95,0)
-bs(743.9,220.95,0)
-bs(743.9,245.05,0)
-bs(659.9,245.05,0)
-bs(659.9,220.95,0)
+bs(647.301,225.898,0)
+bs(731.301,225.898,0)
+bs(731.301,250,0)
+bs(647.301,250,0)
+bs(647.301,225.898,0)
lw(1.12)
lc(2)
b()
-bs(659.9,220.95,0)
-bs(743.9,220.95,0)
+bs(647.301,225.898,0)
+bs(731.301,225.898,0)
lw(1.12)
lc(2)
b()
-bs(743.9,220.95,0)
-bs(743.9,245.05,0)
+bs(731.301,225.898,0)
+bs(731.301,250,0)
lw(1.12)
lc(2)
b()
-bs(743.9,245.05,0)
-bs(659.9,245.05,0)
+bs(731.301,250,0)
+bs(647.301,250,0)
lw(1.12)
lc(2)
b()
-bs(659.9,245.05,0)
-bs(659.9,220.95,0)
+bs(647.301,250,0)
+bs(647.301,225.898,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xt*',(692.9,228.05))
+txt('Xt*',(680.3,233))
fp((0,0,0))
le()
b()
-bs(10.4998,160.8,0)
-bs(10.4998,158.7,0)
-bs(94.4998,158.7,0)
-bs(94.4998,183.75,0)
-bs(92.3999,183.75,0)
-bs(92.3999,160.8,0)
-bs(10.4998,160.8,0)
+bs(10.5,160.801,0)
+bs(10.5,158.699,0)
+bs(94.5,158.699,0)
+bs(94.5,185.699,0)
+bs(92.3984,185.699,0)
+bs(92.3984,160.801,0)
+bs(10.5,160.801,0)
+bC()
+fp((0.792,0.882,1))
+le()
+b()
+bs(8.39844,160.801,0)
+bs(92.3984,160.801,0)
+bs(92.3984,187.801,0)
+bs(8.39844,187.801,0)
+bs(8.39844,160.801,0)
+lw(1.12)
+lc(2)
+b()
+bs(8.39844,160.801,0)
+bs(92.3984,160.801,0)
+lw(1.12)
+lc(2)
+b()
+bs(92.3984,160.801,0)
+bs(92.3984,187.801,0)
+lw(1.12)
+lc(2)
+b()
+bs(92.3984,187.801,0)
+bs(8.39844,187.801,0)
+lw(1.12)
+lc(2)
+b()
+bs(8.39844,187.801,0)
+bs(8.39844,160.801,0)
+fp((0,0,0))
+Fn('Helvetica')
+Fs(14)
+txt('F',(21.9,170.8))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(14)
+txt('reeT',(29.8508,170.8))
+fp((0,0,0))
+Fn('Helvetica')
+Fs(14)
+txt('ype',(56.9742,170.8))
+fp((0,0,0))
+le()
+b()
+bs(111.301,161.801,0)
+bs(111.301,159.699,0)
+bs(195.301,159.699,0)
+bs(195.301,184.75,0)
+bs(193.199,184.75,0)
+bs(193.199,161.801,0)
+bs(111.301,161.801,0)
bC()
fp((0.61,0.61,1))
le()
b()
-bs(8.3999,160.8,0)
-bs(92.3999,160.8,0)
-bs(92.3999,185.85,0)
-bs(8.3999,185.85,0)
-bs(8.3999,160.8,0)
+bs(109.199,161.801,0)
+bs(193.199,161.801,0)
+bs(193.199,186.852,0)
+bs(109.199,186.852,0)
+bs(109.199,161.801,0)
lw(1.12)
lc(2)
b()
-bs(8.3999,160.8,0)
-bs(92.3999,160.8,0)
+bs(109.199,161.801,0)
+bs(193.199,161.801,0)
lw(1.12)
lc(2)
b()
-bs(92.3999,160.8,0)
-bs(92.3999,185.85,0)
+bs(193.199,161.801,0)
+bs(193.199,186.852,0)
lw(1.12)
lc(2)
b()
-bs(92.3999,185.85,0)
-bs(8.3999,185.85,0)
+bs(193.199,186.852,0)
+bs(109.199,186.852,0)
lw(1.12)
lc(2)
b()
-bs(8.3999,185.85,0)
-bs(8.3999,160.8,0)
+bs(109.199,186.852,0)
+bs(109.199,161.801,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('QtCore',(28.1997,168.55))
+txt('QtCore',(129,169.55))
fp((0,0,0))
le()
b()
-bs(268.8,161.15,0)
-bs(268.8,159.05,0)
-bs(352.8,159.05,0)
-bs(352.8,183.4,0)
-bs(350.7,183.4,0)
-bs(350.7,161.15,0)
-bs(268.8,161.15,0)
+bs(312.898,162.148,0)
+bs(312.898,160.051,0)
+bs(396.898,160.051,0)
+bs(396.898,184.398,0)
+bs(394.801,184.398,0)
+bs(394.801,162.148,0)
+bs(312.898,162.148,0)
bC()
fp((0.792,0.882,1))
le()
b()
-bs(266.7,161.15,0)
-bs(350.7,161.15,0)
-bs(350.7,185.5,0)
-bs(266.7,185.5,0)
-bs(266.7,161.15,0)
+bs(310.801,162.148,0)
+bs(394.801,162.148,0)
+bs(394.801,186.5,0)
+bs(310.801,186.5,0)
+bs(310.801,162.148,0)
lw(1.12)
lc(2)
b()
-bs(266.7,161.15,0)
-bs(350.7,161.15,0)
+bs(310.801,162.148,0)
+bs(394.801,162.148,0)
lw(1.12)
lc(2)
b()
-bs(350.7,161.15,0)
-bs(350.7,185.5,0)
+bs(394.801,162.148,0)
+bs(394.801,186.5,0)
lw(1.12)
lc(2)
b()
-bs(350.7,185.5,0)
-bs(266.7,185.5,0)
+bs(394.801,186.5,0)
+bs(310.801,186.5,0)
lw(1.12)
lc(2)
b()
-bs(266.7,185.5,0)
-bs(266.7,161.15,0)
+bs(310.801,186.5,0)
+bs(310.801,162.148,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xfix',(290.1,168.35))
+txt('Xfix',(334.2,169.35))
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('es',(313.038,168.35))
+txt('es',(357.136,169.35))
fp((0,0,0))
le()
b()
-bs(426.3,161.25,0)
-bs(426.3,159.15,0)
-bs(510.3,159.15,0)
-bs(510.3,183.35,0)
-bs(508.2,183.35,0)
-bs(508.2,161.25,0)
-bs(426.3,161.25,0)
+bs(413.699,162.199,0)
+bs(413.699,160.102,0)
+bs(497.699,160.102,0)
+bs(497.699,184.301,0)
+bs(495.602,184.301,0)
+bs(495.602,162.199,0)
+bs(413.699,162.199,0)
bC()
fp((0.961,0.961,0.863))
le()
b()
-bs(424.2,161.25,0)
-bs(508.2,161.25,0)
-bs(508.2,185.45,0)
-bs(424.2,185.45,0)
-bs(424.2,161.25,0)
+bs(411.602,162.199,0)
+bs(495.602,162.199,0)
+bs(495.602,186.398,0)
+bs(411.602,186.398,0)
+bs(411.602,162.199,0)
lw(1.12)
lc(2)
b()
-bs(424.2,161.25,0)
-bs(508.2,161.25,0)
+bs(411.602,162.199,0)
+bs(495.602,162.199,0)
lw(1.12)
lc(2)
b()
-bs(508.2,161.25,0)
-bs(508.2,185.45,0)
+bs(495.602,162.199,0)
+bs(495.602,186.398,0)
lw(1.12)
lc(2)
b()
-bs(508.2,185.45,0)
-bs(424.2,185.45,0)
+bs(495.602,186.398,0)
+bs(411.602,186.398,0)
lw(1.12)
lc(2)
b()
-bs(424.2,185.45,0)
-bs(424.2,161.25,0)
+bs(411.602,186.398,0)
+bs(411.602,162.199,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Xe',(452.55,168.45))
+txt('Xe',(439.95,169.4))
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('xt',(469.272,168.45))
+txt('xt',(456.667,169.4))
fp((0,0,0))
le()
b()
-bs(662,161.05,0)
-bs(662,158.95,0)
-bs(746,158.95,0)
-bs(746,183.5,0)
-bs(743.9,183.5,0)
-bs(743.9,161.05,0)
-bs(662,161.05,0)
+bs(649.398,162.051,0)
+bs(649.398,159.949,0)
+bs(733.398,159.949,0)
+bs(733.398,184.5,0)
+bs(731.301,184.5,0)
+bs(731.301,162.051,0)
+bs(649.398,162.051,0)
bC()
fp((0.761,0.98,0.98))
le()
b()
-bs(659.9,161.05,0)
-bs(743.9,161.05,0)
-bs(743.9,185.6,0)
-bs(659.9,185.6,0)
-bs(659.9,161.05,0)
+bs(647.301,162.051,0)
+bs(731.301,162.051,0)
+bs(731.301,186.602,0)
+bs(647.301,186.602,0)
+bs(647.301,162.051,0)
lw(1.12)
lc(2)
b()
-bs(659.9,161.05,0)
-bs(743.9,161.05,0)
+bs(647.301,162.051,0)
+bs(731.301,162.051,0)
lw(1.12)
lc(2)
b()
-bs(743.9,161.05,0)
-bs(743.9,185.6,0)
+bs(731.301,162.051,0)
+bs(731.301,186.602,0)
lw(1.12)
lc(2)
b()
-bs(743.9,185.6,0)
-bs(659.9,185.6,0)
+bs(731.301,186.602,0)
+bs(647.301,186.602,0)
lw(1.12)
lc(2)
b()
-bs(659.9,185.6,0)
-bs(659.9,161.05,0)
+bs(647.301,186.602,0)
+bs(647.301,162.051,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('SM',(691.9,168.3))
+txt('SM',(679.3,169.3))
fp((0,0,0))
le()
b()
-bs(10.4998,98.9001,0)
-bs(10.4998,96.8003,0)
-bs(94.4998,96.8003,0)
-bs(94.4998,123.7,0)
-bs(92.3999,123.7,0)
-bs(92.3999,98.9001,0)
-bs(10.4998,98.9001,0)
+bs(111.301,98.8984,0)
+bs(111.301,96.8008,0)
+bs(195.301,96.8008,0)
+bs(195.301,123.699,0)
+bs(193.199,123.699,0)
+bs(193.199,98.8984,0)
+bs(111.301,98.8984,0)
bC()
fp((0.741,0.718,0.42))
le()
b()
-bs(8.3999,98.9001,0)
-bs(92.3999,98.9001,0)
-bs(92.3999,125.8,0)
-bs(8.3999,125.8,0)
-bs(8.3999,98.9001,0)
+bs(109.199,98.8984,0)
+bs(193.199,98.8984,0)
+bs(193.199,125.801,0)
+bs(109.199,125.801,0)
+bs(109.199,98.8984,0)
lw(1.12)
lc(2)
b()
-bs(8.3999,98.9001,0)
-bs(92.3999,98.9001,0)
+bs(109.199,98.8984,0)
+bs(193.199,98.8984,0)
lw(1.12)
lc(2)
b()
-bs(92.3999,98.9001,0)
-bs(92.3999,125.8,0)
+bs(193.199,98.8984,0)
+bs(193.199,125.801,0)
lw(1.12)
lc(2)
b()
-bs(92.3999,125.8,0)
-bs(8.3999,125.8,0)
+bs(193.199,125.801,0)
+bs(109.199,125.801,0)
lw(1.12)
lc(2)
b()
-bs(8.3999,125.8,0)
-bs(8.3999,98.9001,0)
+bs(109.199,125.801,0)
+bs(109.199,98.8984,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('pthread',(27.1499,108.8))
+txt('pthread',(127.95,108.8))
fp((0,0,0))
le()
b()
-bs(111.3,100.1,0)
-bs(111.3,98.0002,0)
-bs(195.3,98.0002,0)
-bs(195.3,122.55,0)
-bs(193.2,122.55,0)
-bs(193.2,100.1,0)
-bs(111.3,100.1,0)
+bs(212.102,100.102,0)
+bs(212.102,98,0)
+bs(296.102,98,0)
+bs(296.102,122.551,0)
+bs(294,122.551,0)
+bs(294,100.102,0)
+bs(212.102,100.102,0)
bC()
fp((0.7,0.7,0.7))
le()
b()
-bs(109.2,100.1,0)
-bs(193.2,100.1,0)
-bs(193.2,124.65,0)
-bs(109.2,124.65,0)
-bs(109.2,100.1,0)
+bs(210,100.102,0)
+bs(294,100.102,0)
+bs(294,124.648,0)
+bs(210,124.648,0)
+bs(210,100.102,0)
lw(1.12)
lc(2)
b()
-bs(109.2,100.1,0)
-bs(193.2,100.1,0)
+bs(210,100.102,0)
+bs(294,100.102,0)
lw(1.12)
lc(2)
b()
-bs(193.2,100.1,0)
-bs(193.2,124.65,0)
+bs(294,100.102,0)
+bs(294,124.648,0)
lw(1.12)
lc(2)
b()
-bs(193.2,124.65,0)
-bs(109.2,124.65,0)
+bs(294,124.648,0)
+bs(210,124.648,0)
lw(1.12)
lc(2)
b()
-bs(109.2,124.65,0)
-bs(109.2,100.1,0)
+bs(210,124.648,0)
+bs(210,100.102,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('Glib',(139.05,107.35))
+txt('Glib',(239.85,107.35))
fp((0,0,0))
le()
b()
-bs(426.3,100.35,0)
-bs(426.3,98.2502,0)
-bs(510.3,98.2502,0)
-bs(510.3,122.25,0)
-bs(508.2,122.25,0)
-bs(508.2,100.35,0)
-bs(426.3,100.35,0)
+bs(413.699,100.352,0)
+bs(413.699,98.25,0)
+bs(497.699,98.25,0)
+bs(497.699,122.25,0)
+bs(495.602,122.25,0)
+bs(495.602,100.352,0)
+bs(413.699,100.352,0)
bC()
fp((0.961,0.961,0.863))
le()
b()
-bs(424.2,100.35,0)
-bs(508.2,100.35,0)
-bs(508.2,124.35,0)
-bs(424.2,124.35,0)
-bs(424.2,100.35,0)
+bs(411.602,100.352,0)
+bs(495.602,100.352,0)
+bs(495.602,124.352,0)
+bs(411.602,124.352,0)
+bs(411.602,100.352,0)
lw(1.12)
lc(2)
b()
-bs(424.2,100.35,0)
-bs(508.2,100.35,0)
+bs(411.602,100.352,0)
+bs(495.602,100.352,0)
lw(1.12)
lc(2)
b()
-bs(508.2,100.35,0)
-bs(508.2,124.35,0)
+bs(495.602,100.352,0)
+bs(495.602,124.352,0)
lw(1.12)
lc(2)
b()
-bs(508.2,124.35,0)
-bs(424.2,124.35,0)
+bs(495.602,124.352,0)
+bs(411.602,124.352,0)
lw(1.12)
lc(2)
b()
-bs(424.2,124.35,0)
-bs(424.2,100.35,0)
+bs(411.602,124.352,0)
+bs(411.602,100.352,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('X11',(455.15,107.35))
+txt('X11',(442.55,107.35))
fp((0,0,0))
le()
b()
-bs(662,100.1,0)
-bs(662,98.0002,0)
-bs(746,98.0002,0)
-bs(746,122.55,0)
-bs(743.9,122.55,0)
-bs(743.9,100.1,0)
-bs(662,100.1,0)
+bs(649.398,100.102,0)
+bs(649.398,98,0)
+bs(733.398,98,0)
+bs(733.398,122.551,0)
+bs(731.301,122.551,0)
+bs(731.301,100.102,0)
+bs(649.398,100.102,0)
bC()
fp((0.761,0.98,0.98))
le()
b()
-bs(659.9,100.1,0)
-bs(743.9,100.1,0)
-bs(743.9,124.65,0)
-bs(659.9,124.65,0)
-bs(659.9,100.1,0)
+bs(647.301,100.102,0)
+bs(731.301,100.102,0)
+bs(731.301,124.648,0)
+bs(647.301,124.648,0)
+bs(647.301,100.102,0)
lw(1.12)
lc(2)
b()
-bs(659.9,100.1,0)
-bs(743.9,100.1,0)
+bs(647.301,100.102,0)
+bs(731.301,100.102,0)
lw(1.12)
lc(2)
b()
-bs(743.9,100.1,0)
-bs(743.9,124.65,0)
+bs(731.301,100.102,0)
+bs(731.301,124.648,0)
lw(1.12)
lc(2)
b()
-bs(743.9,124.65,0)
-bs(659.9,124.65,0)
+bs(731.301,124.648,0)
+bs(647.301,124.648,0)
lw(1.12)
lc(2)
b()
-bs(659.9,124.65,0)
-bs(659.9,100.1,0)
+bs(647.301,124.648,0)
+bs(647.301,100.102,0)
fp((0,0,0))
Fn('Helvetica')
Fs(14)
-txt('ICE',(690.6,107.35))
+txt('ICE',(678,107.35))
fp((0,0,0))
Fn('Helvetica')
-txt('some',(585.05,38.7002))
+txt('some',(572.45,38.7))
fp((0,0,0))
Fn('Helvetica')
-txt('configur',(617.15,38.7002))
+txt('configur',(604.55,38.7))
fp((0,0,0))
Fn('Helvetica')
-txt('ations',(659.733,38.7002))
+txt('ations',(647.13,38.7))
fp((0,0,0))
Fn('Helvetica')
-txt('only',(694.4,38.7002))
+txt('only',(681.8,38.7))
fp((0,0,0))
Fn('Helvetica')
-txt('*',(568.85,22.5002))
+txt('*',(556.25,22.5))
fp((0,0,0))
Fn('Helvetica')
-txt('Xt',(585.05,22.5002))
+txt('Xt',(572.45,22.5))
fp((0,0,0))
Fn('Helvetica')
-txt('intr',(599.4,22.5002))
+txt('intr',(586.8,22.5))
fp((0,0,0))
Fn('Helvetica')
-txt('insics',(616.217,22.5002))
+txt('insics',(603.61,22.5))
fp((0,0,0))
Fn('Helvetica')
-txt('only',(648.95,22.5002))
+txt('only',(636.35,22.5))
lw(1.12)
lc(2)
-ld((0, 2.4999899999999999))
+ld((0, 2.5))
b()
-bs(308.7,339.25,0)
-bs(308.7,328.05,0)
+bs(352.801,344.199,0)
+bs(352.801,333,0)
lw(1.12)
lc(2)
-ld((0, 2.0312000000000001))
+ld((0, 2.03125))
b()
-bs(308.7,328.05,0)
-bs(308.7,332.6,0)
+bs(352.801,333,0)
+bs(352.801,337.551,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(308.7,332.6,0)
-bs(308.7,332.6,0)
-bc(308.7,330.744,309.438,328.963,310.75,327.651,0)
+bs(352.801,337.551,0)
+bs(352.801,337.551,0)
+bc(352.801,335.695,353.539,333.914,354.852,332.602,0)
lw(1.12)
lc(2)
-ld((0, 2.4543599999999999))
+ld((0, 2.45438))
b()
-bs(310.75,327.65,0)
-bs(310.75,327.651,0)
-bc(312.063,326.338,313.844,325.6,315.7,325.6,0)
+bs(354.852,332.602,0)
+bs(354.852,332.602,0)
+bc(356.164,331.289,357.945,330.551,359.801,330.551,0)
lw(1.12)
lc(2)
-ld((0, 2.4639500000000001))
+ld((0, 2.4218799999999998))
b()
-bs(315.7,325.6,0)
-bs(387.45,325.6,0)
+bs(359.801,330.551,0)
+bs(403.199,330.551,0)
lw(1.12)
lc(2)
-ld((0, 2.4639500000000001))
+ld((0, 2.4218799999999998))
b()
-bs(387.45,325.6,0)
-bs(459.2,325.6,0)
+bs(403.199,330.551,0)
+bs(446.602,330.551,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(459.2,325.6,0)
-bs(459.2,325.6,0)
-bc(461.056,325.6,462.837,324.863,464.15,323.55,0)
+bs(446.602,330.551,0)
+bs(446.602,330.551,0)
+bc(448.457,330.551,450.238,329.812,451.551,328.5,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(464.15,323.55,0)
-bs(464.15,323.55,0)
-bc(465.462,322.237,466.2,320.457,466.2,318.6,0)
+bs(451.551,328.5,0)
+bs(451.551,328.5,0)
+bc(452.863,327.188,453.602,325.406,453.602,323.551,0)
lw(1.12)
lc(2)
-ld((0, 2.3437899999999998))
+ld((0, 2.3437399999999999))
b()
-bs(466.2,318.6,0)
-bs(466.2,313.35,0)
+bs(453.602,323.551,0)
+bs(453.602,318.301,0)
lw(1.12)
lc(2)
ld((0, 2.5))
b()
-bs(466.2,313.35,0)
-bs(466.2,311.95,0)
+bs(453.602,318.301,0)
+bs(453.602,316.898,0)
fp((0,0,0))
le()
b()
-bs(462.35,311.95,0)
-bs(466.199,304.25,0)
-bs(470.05,311.95,0)
+bs(449.75,316.898,0)
+bs(453.602,309.199,0)
+bs(457.449,316.898,0)
lw(1.12)
lc(2)
-ld((0, 2.4999899999999999))
+ld((0, 2.5))
b()
-bs(308.7,339.25,0)
-bs(308.7,328.05,0)
+bs(352.801,344.199,0)
+bs(352.801,333,0)
lw(1.12)
lc(2)
-ld((0, 2.0088900000000001))
+ld((0, 2.0089299999999999))
b()
-bs(308.7,328.05,0)
-bs(308.7,332.55,0)
+bs(352.801,333,0)
+bs(352.801,337.5,0)
+lw(1.12)
+lc(2)
+ld((0, 2.4543599999999999))
+b()
+bs(352.801,337.5,0)
+bs(352.801,337.5,0)
+bc(352.801,335.645,353.539,333.863,354.852,332.551,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(308.7,332.55,0)
-bs(308.7,332.55,0)
-bc(308.7,330.694,309.438,328.913,310.75,327.601,0)
+bs(354.852,332.551,0)
+bs(354.852,332.551,0)
+bc(356.164,331.238,357.945,330.5,359.801,330.5,0)
lw(1.12)
lc(2)
-ld((0, 2.4543599999999999))
+ld((0, 2.4743300000000001))
b()
-bs(310.75,327.6,0)
-bs(310.75,327.601,0)
-bc(312.063,326.288,313.844,325.55,315.7,325.55,0)
+bs(359.801,330.5,0)
+bs(470.648,330.5,0)
lw(1.12)
lc(2)
-ld((0, 2.4857100000000001))
+ld((0, 2.4743300000000001))
b()
-bs(459.2,325.6,0)
-bs(594.1,325.55,0)
+bs(470.648,330.5,0)
+bs(581.5,330.5,0)
lw(1.12)
lc(2)
-ld((0, 2.4543900000000001))
+ld((0, 2.45438))
b()
-bs(594.1,325.55,0)
-bs(594.1,325.55,0)
-bc(595.956,325.55,597.737,324.813,599.05,323.5,0)
+bs(581.5,330.5,0)
+bs(581.5,330.5,0)
+bc(583.355,330.5,585.137,329.762,586.449,328.449,0)
lw(1.12)
lc(2)
-ld((0, 2.4544100000000002))
+ld((0, 2.45438))
b()
-bs(599.05,323.5,0)
-bs(599.05,323.5,0)
-bc(600.362,322.187,601.1,320.407,601.1,318.55,0)
+bs(586.449,328.449,0)
+bs(586.449,328.449,0)
+bc(587.762,327.137,588.5,325.355,588.5,323.5,0)
lw(1.12)
lc(2)
-ld((0, 2.3660899999999998))
+ld((0, 2.36605))
b()
-bs(601.1,318.55,0)
-bs(601.1,313.25,0)
+bs(588.5,323.5,0)
+bs(588.5,318.199,0)
lw(1.12)
lc(2)
ld((0, 2.5))
b()
-bs(601.1,313.25,0)
-bs(601.1,311.85,0)
+bs(588.5,318.199,0)
+bs(588.5,316.801,0)
fp((0,0,0))
le()
b()
-bs(597.25,311.85,0)
-bs(601.099,304.15,0)
-bs(604.949,311.85,0)
+bs(584.648,316.801,0)
+bs(588.5,309.102,0)
+bs(592.352,316.801,0)
lw(1.12)
lc(2)
b()
-bs(266.7,351.775,0)
-bs(255.5,351.775,0)
+bs(310.801,356.727,0)
+bs(299.602,356.727,0)
lw(1.12)
lc(2)
b()
-bs(255.5,351.775,0)
-bs(57.3999,351.775,0)
+bs(299.602,356.727,0)
+bs(158.199,356.727,0)
lw(1.12)
lc(2)
b()
-bs(57.3999,351.775,0)
-bs(57.3999,351.775,0)
-bc(53.5339,351.775,50.3999,348.641,50.3999,344.775,0)
+bs(158.199,356.727,0)
+bs(158.199,356.727,0)
+bc(154.336,356.727,151.199,353.59,151.199,349.727,0)
lw(1.12)
lc(2)
b()
-bs(50.3999,344.775,0)
-bs(50.3999,194.95,0)
+bs(151.199,349.727,0)
+bs(151.199,195.949,0)
lw(1.12)
lc(2)
b()
-bs(50.3999,194.95,0)
-bs(50.3999,193.55,0)
+bs(151.199,195.949,0)
+bs(151.199,194.551,0)
fp((0,0,0))
le()
b()
-bs(46.5496,193.55,0)
-bs(50.3994,185.85,0)
-bs(54.2495,193.55,0)
+bs(147.352,194.551,0)
+bs(151.199,186.852,0)
+bs(155.051,194.551,0)
lw(1.12)
lc(2)
b()
-bs(50.3999,160.8,0)
-bs(50.3999,133.5,0)
+bs(151.199,161.801,0)
+bs(151.199,133.5,0)
fp((0,0,0))
le()
b()
-bs(46.5496,133.5,0)
-bs(50.3994,125.8,0)
-bs(54.2495,133.5,0)
+bs(147.352,133.5,0)
+bs(151.199,125.801,0)
+bs(155.051,133.5,0)
lw(1.12)
lc(2)
ld((0, 2))
b()
-bs(50.3999,160.8,0)
-bs(50.3999,149.6,0)
+bs(151.199,161.801,0)
+bs(151.199,150.602,0)
lw(1.12)
lc(2)
-ld((0, 1.7745500000000001))
+ld((0, 1.5513600000000001))
b()
-bs(50.3999,149.6,0)
-bs(50.3999,153.575,0)
+bs(151.199,150.602,0)
+bs(151.199,154.074,0)
lw(1.12)
lc(2)
-ld((0, 2.4543599999999999))
+ld((0, 2.4543400000000002))
b()
-bs(50.3999,153.575,0)
-bs(50.3999,153.575,0)
-bc(50.3999,151.719,51.1375,149.938,52.4502,148.625,0)
+bs(151.199,154.074,0)
+bs(151.199,154.074,0)
+bc(151.199,152.219,151.938,150.438,153.25,149.125,0)
lw(1.12)
lc(2)
ld((0, 2.4543699999999999))
b()
-bs(52.45,148.625,0)
-bs(52.4502,148.625,0)
-bc(53.7629,147.313,55.5435,146.575,57.3999,146.575,0)
+bs(153.25,149.125,0)
+bs(153.25,149.125,0)
+bc(154.562,147.812,156.344,147.074,158.199,147.074,0)
lw(1.12)
lc(2)
ld((0, 2.4218799999999998))
b()
-bs(57.3999,146.575,0)
-bs(100.8,146.575,0)
+bs(158.199,147.074,0)
+bs(201.602,147.074,0)
lw(1.12)
lc(2)
ld((0, 2.4218799999999998))
b()
-bs(100.8,146.575,0)
-bs(144.2,146.575,0)
+bs(201.602,147.074,0)
+bs(245,147.074,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(144.2,146.575,0)
-bs(144.2,146.575,0)
-bc(146.056,146.575,147.837,145.838,149.15,144.525,0)
+bs(245,147.074,0)
+bs(245,147.074,0)
+bc(246.855,147.074,248.637,146.336,249.949,145.023,0)
lw(1.12)
lc(2)
-ld((0, 2.4543699999999999))
+ld((0, 2.4543900000000001))
b()
-bs(149.15,144.525,0)
-bs(149.15,144.525,0)
-bc(150.462,143.212,151.2,141.432,151.2,139.575,0)
+bs(249.949,145.023,0)
+bs(249.949,145.023,0)
+bc(251.262,143.711,252,141.93,252,140.074,0)
lw(1.12)
lc(2)
-ld((0, 1.73363))
+ld((0, 1.88243))
b()
-bs(151.2,139.575,0)
-bs(151.2,133.75,0)
+bs(252,140.074,0)
+bs(252,133.75,0)
lw(1.12)
lc(2)
ld((0, 2.5))
b()
-bs(151.2,133.75,0)
-bs(151.2,132.35,0)
+bs(252,133.75,0)
+bs(252,132.352,0)
fp((0,0,0))
le()
b()
-bs(147.35,132.35,0)
-bs(151.199,124.65,0)
-bs(155.05,132.35,0)
+bs(248.148,132.352,0)
+bs(252,124.648,0)
+bs(255.852,132.352,0)
lw(1.12)
lc(2)
b()
-bs(350.7,351.775,0)
-bs(361.9,351.775,0)
+bs(394.801,356.727,0)
+bs(406,356.727,0)
lw(1.12)
lc(2)
b()
-bs(361.9,351.775,0)
-bs(694.9,351.775,0)
+bs(406,356.727,0)
+bs(682.301,356.727,0)
lw(1.12)
lc(2)
b()
-bs(694.9,351.775,0)
-bs(694.9,351.775,0)
-bc(698.766,351.775,701.9,348.641,701.9,344.775,0)
+bs(682.301,356.727,0)
+bs(682.301,356.727,0)
+bc(686.164,356.727,689.301,353.59,689.301,349.727,0)
lw(1.12)
lc(2)
b()
-bs(701.9,344.775,0)
-bs(701.9,254.15,0)
+bs(689.301,349.727,0)
+bs(689.301,259.102,0)
lw(1.12)
lc(2)
b()
-bs(701.9,254.15,0)
-bs(701.9,252.75,0)
+bs(689.301,259.102,0)
+bs(689.301,257.699,0)
fp((0,0,0))
le()
b()
-bs(698.05,252.75,0)
-bs(701.899,245.05,0)
-bs(705.75,252.75,0)
+bs(685.449,257.699,0)
+bs(689.301,250,0)
+bs(693.148,257.699,0)
lw(1.12)
lc(2)
-ld((0, 2.4375200000000001))
+ld((0, 2.4375))
b()
-bs(308.7,339.25,0)
-bs(308.7,311.95,0)
+bs(352.801,344.199,0)
+bs(352.801,316.898,0)
fp((0,0,0))
le()
b()
-bs(304.85,311.95,0)
-bs(308.699,304.25,0)
-bs(312.55,311.95,0)
+bs(348.949,316.898,0)
+bs(352.801,309.199,0)
+bs(356.648,316.898,0)
lw(1.12)
lc(2)
-ld((0, 2.4999899999999999))
+ld((0, 2.5))
b()
-bs(308.7,339.25,0)
-bs(308.7,328.05,0)
+bs(352.801,344.199,0)
+bs(352.801,333,0)
lw(1.12)
lc(2)
-ld((0, 2.0312000000000001))
+ld((0, 2.03125))
b()
-bs(308.7,328.05,0)
-bs(308.7,332.6,0)
+bs(352.801,333,0)
+bs(352.801,337.551,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(308.7,332.6,0)
-bs(308.7,332.6,0)
-bc(308.7,330.744,307.962,328.963,306.65,327.651,0)
+bs(352.801,337.551,0)
+bs(352.801,337.551,0)
+bc(352.801,335.695,352.062,333.914,350.75,332.602,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(306.65,327.65,0)
-bs(306.65,327.651,0)
-bc(305.337,326.338,303.556,325.601,301.7,325.601,0)
+bs(350.75,332.602,0)
+bs(350.75,332.602,0)
+bc(349.438,331.289,347.656,330.551,345.801,330.551,0)
lw(1.12)
lc(2)
-ld((0, 2.4639500000000001))
+ld((0, 2.4218799999999998))
b()
-bs(301.7,325.6,0)
-bs(229.95,325.6,0)
+bs(345.801,330.551,0)
+bs(302.398,330.551,0)
lw(1.12)
lc(2)
-ld((0, 2.4639500000000001))
+ld((0, 2.4218799999999998))
b()
-bs(229.95,325.6,0)
-bs(158.2,325.6,0)
+bs(302.398,330.551,0)
+bs(259,330.551,0)
lw(1.12)
lc(2)
-ld((0, 2.4543699999999999))
+ld((0, 2.45438))
b()
-bs(158.2,325.6,0)
-bs(158.2,325.6,0)
-bc(156.344,325.6,154.563,324.863,153.25,323.55,0)
+bs(259,330.551,0)
+bs(259,330.551,0)
+bc(257.145,330.551,255.363,329.812,254.051,328.5,0)
lw(1.12)
lc(2)
ld((0, 2.45438))
b()
-bs(153.25,323.55,0)
-bs(153.25,323.55,0)
-bc(151.938,322.237,151.2,320.457,151.2,318.6,0)
+bs(254.051,328.5,0)
+bs(254.051,328.5,0)
+bc(252.738,327.188,252,325.406,252,323.551,0)
lw(1.12)
lc(2)
-ld((0, 2.3437899999999998))
+ld((0, 2.3437399999999999))
b()
-bs(151.2,318.6,0)
-bs(151.2,313.35,0)
+bs(252,323.551,0)
+bs(252,318.301,0)
lw(1.12)
lc(2)
ld((0, 2.5))
b()
-bs(151.2,313.35,0)
-bs(151.2,311.95,0)
+bs(252,318.301,0)
+bs(252,316.898,0)
fp((0,0,0))
le()
b()
-bs(147.35,311.95,0)
-bs(151.199,304.25,0)
-bs(155.05,311.95,0)
+bs(248.148,316.898,0)
+bs(252,309.199,0)
+bs(255.852,316.898,0)
lw(1.12)
lc(2)
b()
-bs(308.7,280.05,0)
-bs(308.7,252.75,0)
+bs(352.801,285,0)
+bs(352.801,257.699,0)
fp((0,0,0))
le()
b()
-bs(304.85,252.75,0)
-bs(308.699,245.05,0)
-bs(312.55,252.75,0)
+bs(348.949,257.699,0)
+bs(352.801,250,0)
+bs(356.648,257.699,0)
lw(1.12)
lc(2)
b()
-bs(466.2,280.05,0)
-bs(466.2,193.15,0)
+bs(453.602,285,0)
+bs(453.602,194.102,0)
fp((0,0,0))
le()
b()
-bs(462.35,193.15,0)
-bs(466.199,185.45,0)
-bs(470.05,193.15,0)
+bs(449.75,194.102,0)
+bs(453.602,186.398,0)
+bs(457.449,194.102,0)
lw(1.12)
lc(2)
b()
-bs(151.2,280.05,0)
-bs(151.2,268.85,0)
+bs(252,285,0)
+bs(252,273.801,0)
lw(1.12)
lc(2)
b()
-bs(151.2,268.85,0)
-bs(151.2,239.95,0)
+bs(252,273.801,0)
+bs(252,244.898,0)
lw(1.12)
lc(2)
b()
-bs(151.2,239.95,0)
-bs(151.2,239.95,0)
-bc(151.2,236.084,154.334,232.95,158.2,232.95,0)
+bs(252,244.898,0)
+bs(252,244.898,0)
+bc(252,241.035,255.137,237.898,259,237.898,0)
lw(1.12)
lc(2)
b()
-bs(158.2,232.95,0)
-bs(257.6,232.95,0)
+bs(259,237.898,0)
+bs(301.699,237.898,0)
lw(1.12)
lc(2)
b()
-bs(257.6,232.95,0)
-bs(259,232.95,0)
+bs(301.699,237.898,0)
+bs(303.102,237.898,0)
fp((0,0,0))
le()
b()
-bs(259,229.1,0)
-bs(266.699,232.95,0)
-bs(259,236.8,0)
+bs(303.102,234.051,0)
+bs(310.801,237.898,0)
+bs(303.102,241.75,0)
lw(1.12)
lc(2)
b()
-bs(350.7,232.95,0)
-bs(361.9,232.95,0)
+bs(394.801,237.898,0)
+bs(406,237.898,0)
lw(1.12)
lc(2)
b()
-bs(361.9,232.95,0)
-bs(459.2,232.95,0)
+bs(406,237.898,0)
+bs(446.602,237.898,0)
lw(1.12)
lc(2)
b()
-bs(459.2,232.95,0)
-bs(459.2,232.95,0)
-bc(463.066,232.95,466.2,229.816,466.2,225.95,0)
+bs(446.602,237.898,0)
+bs(446.602,237.898,0)
+bc(450.465,237.898,453.602,234.762,453.602,230.898,0)
lw(1.12)
lc(2)
b()
-bs(466.2,225.95,0)
-bs(466.2,194.55,0)
+bs(453.602,230.898,0)
+bs(453.602,195.5,0)
lw(1.12)
lc(2)
b()
-bs(466.2,194.55,0)
-bs(466.2,193.15,0)
+bs(453.602,195.5,0)
+bs(453.602,194.102,0)
fp((0,0,0))
le()
b()
-bs(462.35,193.15,0)
-bs(466.199,185.45,0)
-bs(470.05,193.15,0)
+bs(449.75,194.102,0)
+bs(453.602,186.398,0)
+bs(457.449,194.102,0)
lw(1.12)
lc(2)
b()
-bs(559.1,292.15,0)
-bs(547.9,292.15,0)
+bs(546.5,297.102,0)
+bs(535.301,297.102,0)
lw(1.12)
lc(2)
b()
-bs(547.9,292.15,0)
-bs(544.5,292.15,0)
+bs(535.301,297.102,0)
+bs(531.898,297.102,0)
lw(1.12)
lc(2)
b()
-bs(544.5,292.15,0)
-bs(544.5,292.15,0)
-bc(542.643,292.15,540.863,291.413,539.55,290.1,0)
+bs(531.898,297.102,0)
+bs(531.898,297.102,0)
+bc(530.043,297.102,528.262,296.363,526.949,295.051,0)
lw(1.12)
lc(2)
b()
-bs(539.55,290.1,0)
-bs(539.55,290.1,0)
-bc(538.238,288.787,537.5,287.007,537.5,285.15,0)
+bs(526.949,295.051,0)
+bs(526.949,295.051,0)
+bc(525.637,293.738,524.898,291.957,524.898,290.102,0)
lw(1.12)
lc(2)
b()
-bs(537.5,285.15,0)
-bs(537.5,232.75,0)
+bs(524.898,290.102,0)
+bs(524.898,235.699,0)
lw(1.12)
lc(2)
b()
-bs(537.5,232.75,0)
-bs(537.5,180.35,0)
+bs(524.898,235.699,0)
+bs(524.898,181.301,0)
lw(1.12)
lc(2)
b()
-bs(537.5,180.35,0)
-bs(537.5,180.35,0)
-bc(537.5,178.494,536.762,176.713,535.449,175.401,0)
+bs(524.898,181.301,0)
+bs(524.898,181.301,0)
+bc(524.898,179.445,524.16,177.664,522.852,176.352,0)
lw(1.12)
lc(2)
b()
-bs(535.449,175.4,0)
-bs(535.449,175.401,0)
-bc(534.137,174.088,532.356,173.35,530.5,173.35,0)
+bs(522.852,176.352,0)
+bs(522.852,176.352,0)
+bc(521.539,175.039,519.754,174.301,517.898,174.301,0)
lw(1.12)
lc(2)
b()
-bs(530.5,173.35,0)
-bs(517.3,173.35,0)
+bs(517.898,174.301,0)
+bs(504.699,174.301,0)
lw(1.12)
lc(2)
b()
-bs(517.3,173.35,0)
-bs(515.9,173.35,0)
+bs(504.699,174.301,0)
+bs(503.301,174.301,0)
fp((0,0,0))
le()
b()
-bs(515.9,177.2,0)
-bs(508.2,173.351,0)
-bs(515.9,169.5,0)
+bs(503.301,178.148,0)
+bs(495.602,174.301,0)
+bs(503.301,170.449,0)
lw(1.12)
lc(2)
b()
-bs(701.9,220.95,0)
-bs(701.9,193.3,0)
+bs(689.301,225.898,0)
+bs(689.301,194.301,0)
fp((0,0,0))
le()
b()
-bs(698.05,193.3,0)
-bs(701.899,185.6,0)
-bs(705.75,193.3,0)
+bs(685.449,194.301,0)
+bs(689.301,186.602,0)
+bs(693.148,194.301,0)
lw(1.12)
lc(2)
b()
-bs(659.9,233,0)
-bs(648.7,233,0)
+bs(647.301,237.949,0)
+bs(636.102,237.949,0)
lw(1.12)
lc(2)
b()
-bs(648.7,233,0)
-bs(594.9,233,0)
+bs(636.102,237.949,0)
+bs(582.301,237.949,0)
lw(1.12)
lc(2)
b()
-bs(594.9,233,0)
-bs(594.9,233,0)
-bc(593.043,233,591.263,232.263,589.95,230.95,0)
+bs(582.301,237.949,0)
+bs(582.301,237.949,0)
+bc(580.445,237.949,578.664,237.211,577.352,235.898,0)
lw(1.12)
lc(2)
b()
-bs(589.95,230.95,0)
-bs(589.95,230.95,0)
-bc(588.638,229.637,587.9,227.857,587.9,226,0)
+bs(577.352,235.898,0)
+bs(577.352,235.898,0)
+bc(576.039,234.586,575.301,232.805,575.301,230.949,0)
lw(1.12)
lc(2)
b()
-bs(587.9,226,0)
-bs(587.9,172.675,0)
+bs(575.301,230.949,0)
+bs(575.301,175.148,0)
lw(1.12)
lc(2)
b()
-bs(587.9,172.675,0)
-bs(587.9,119.35,0)
+bs(575.301,175.148,0)
+bs(575.301,119.352,0)
lw(1.12)
lc(2)
b()
-bs(587.9,119.35,0)
-bs(587.9,119.35,0)
-bc(587.9,117.494,587.162,115.713,585.85,114.401,0)
+bs(575.301,119.352,0)
+bs(575.301,119.352,0)
+bc(575.301,117.496,574.562,115.711,573.25,114.398,0)
lw(1.12)
lc(2)
b()
-bs(585.85,114.4,0)
-bs(585.85,114.401,0)
-bc(584.537,113.088,582.756,112.35,580.9,112.35,0)
+bs(573.25,114.398,0)
+bs(573.25,114.398,0)
+bc(571.938,113.09,570.156,112.352,568.301,112.352,0)
lw(1.12)
lc(2)
b()
-bs(580.9,112.35,0)
-bs(517.3,112.35,0)
+bs(568.301,112.352,0)
+bs(504.699,112.352,0)
lw(1.12)
lc(2)
b()
-bs(517.3,112.35,0)
-bs(515.9,112.35,0)
+bs(504.699,112.352,0)
+bs(503.301,112.352,0)
fp((0,0,0))
le()
b()
-bs(515.9,116.2,0)
-bs(508.2,112.35,0)
-bs(515.9,108.5,0)
+bs(503.301,116.199,0)
+bs(495.602,112.352,0)
+bs(503.301,108.5,0)
lw(1.12)
lc(2)
b()
-bs(701.9,161.05,0)
-bs(701.9,132.35,0)
+bs(689.301,162.051,0)
+bs(689.301,132.352,0)
fp((0,0,0))
le()
b()
-bs(698.05,132.35,0)
-bs(701.899,124.65,0)
-bs(705.75,132.35,0)
+bs(685.449,132.352,0)
+bs(689.301,124.648,0)
+bs(693.148,132.352,0)
lw(1.12)
lc(2)
b()
-bs(466.2,161.25,0)
-bs(466.2,132.05,0)
+bs(453.602,162.199,0)
+bs(453.602,132.051,0)
fp((0,0,0))
le()
b()
-bs(462.35,132.05,0)
-bs(466.199,124.35,0)
-bs(470.05,132.05,0)
+bs(449.75,132.051,0)
+bs(453.602,124.352,0)
+bs(457.449,132.051,0)
lw(1.12)
lc(2)
b()
-bs(151.2,280.05,0)
-bs(151.2,268.85,0)
+bs(252,285,0)
+bs(252,273.801,0)
lw(1.12)
lc(2)
b()
-bs(151.2,268.85,0)
-bs(151.2,180.325,0)
+bs(252,273.801,0)
+bs(252,181.324,0)
lw(1.12)
lc(2)
b()
-bs(151.2,180.325,0)
-bs(151.2,180.325,0)
-bc(151.2,176.459,154.334,173.325,158.2,173.325,0)
+bs(252,181.324,0)
+bs(252,181.324,0)
+bc(252,177.461,255.137,174.324,259,174.324,0)
lw(1.12)
lc(2)
b()
-bs(158.2,173.325,0)
-bs(257.6,173.325,0)
+bs(259,174.324,0)
+bs(301.699,174.324,0)
lw(1.12)
lc(2)
b()
-bs(257.6,173.325,0)
-bs(259,173.325,0)
+bs(301.699,174.324,0)
+bs(303.102,174.324,0)
fp((0,0,0))
le()
b()
-bs(259,169.475,0)
-bs(266.699,173.325,0)
-bs(259,177.175,0)
+bs(303.102,170.477,0)
+bs(310.801,174.324,0)
+bs(303.102,178.176,0)
lw(1.12)
lc(2)
b()
-bs(308.7,161.15,0)
-bs(308.7,149.95,0)
+bs(352.801,162.148,0)
+bs(352.801,150.949,0)
lw(1.12)
lc(2)
b()
-bs(308.7,149.95,0)
-bs(308.7,153.6,0)
+bs(352.801,150.949,0)
+bs(352.801,154.102,0)
lw(1.12)
lc(2)
b()
-bs(308.7,153.6,0)
-bs(308.7,153.6,0)
-bc(308.7,151.744,309.438,149.963,310.75,148.651,0)
+bs(352.801,154.102,0)
+bs(352.801,154.102,0)
+bc(352.801,152.246,353.539,150.461,354.852,149.148,0)
lw(1.12)
lc(2)
b()
-bs(310.75,148.65,0)
-bs(310.75,148.651,0)
-bc(312.063,147.338,313.844,146.6,315.7,146.6,0)
+bs(354.852,149.148,0)
+bs(354.852,149.148,0)
+bc(356.164,147.84,357.945,147.102,359.801,147.102,0)
lw(1.12)
lc(2)
b()
-bs(315.7,146.6,0)
-bs(387.45,146.6,0)
+bs(359.801,147.102,0)
+bs(403.199,147.102,0)
lw(1.12)
lc(2)
b()
-bs(387.45,146.6,0)
-bs(459.2,146.6,0)
+bs(403.199,147.102,0)
+bs(446.602,147.102,0)
lw(1.12)
lc(2)
b()
-bs(459.2,146.6,0)
-bs(459.2,146.6,0)
-bc(461.056,146.6,462.837,145.863,464.15,144.55,0)
+bs(446.602,147.102,0)
+bs(446.602,147.102,0)
+bc(448.457,147.102,450.238,146.363,451.551,145.051,0)
lw(1.12)
lc(2)
b()
-bs(464.15,144.55,0)
-bs(464.15,144.55,0)
-bc(465.462,143.237,466.2,141.457,466.2,139.6,0)
+bs(451.551,145.051,0)
+bs(451.551,145.051,0)
+bc(452.863,143.738,453.602,141.957,453.602,140.102,0)
lw(1.12)
lc(2)
b()
-bs(466.2,139.6,0)
-bs(466.2,133.45,0)
+bs(453.602,140.102,0)
+bs(453.602,133.449,0)
lw(1.12)
lc(2)
b()
-bs(466.2,133.45,0)
-bs(466.2,132.05,0)
+bs(453.602,133.449,0)
+bs(453.602,132.051,0)
fp((0,0,0))
le()
b()
-bs(462.35,132.05,0)
-bs(466.199,124.35,0)
-bs(470.05,132.05,0)
+bs(449.75,132.051,0)
+bs(453.602,124.352,0)
+bs(457.449,132.051,0)
lw(1.12)
lc(2)
-ld((0, 2.2889599999999999))
+ld((0, 2.5))
b()
-bs(552.65,41.8,0)
-bs(580.85,41.8,0)
-G_()
-G()
-fp((0,0,0))
-Fn('Helvetica')
-Fs(16)
-txt('libr',(341.317,393.4))
-fp((0,0,0))
-Fn('Helvetica')
-Fs(16)
-txt('ar',(362.494,393.4))
+bs(310.801,356.727,0)
+bs(299.602,356.727,0)
+lw(1.12)
+lc(2)
+ld((0, 2.48563))
+b()
+bs(299.602,356.727,0)
+bs(57.3984,356.727,0)
+lw(1.12)
+lc(2)
+ld((0, 2.4543699999999999))
+b()
+bs(57.3984,356.727,0)
+bs(57.3984,356.727,0)
+bc(53.5352,356.727,50.3984,353.59,50.3984,349.727,0)
+lw(1.12)
+lc(2)
+ld((0, 2.4519700000000002))
+b()
+bs(50.3984,349.727,0)
+bs(50.3984,259.102,0)
+lw(1.12)
+lc(2)
+ld((0, 2.5))
+b()
+bs(50.3984,259.102,0)
+bs(50.3984,257.699,0)
fp((0,0,0))
-Fn('Helvetica')
-Fs(16)
-txt('y',(377.168,393.4))
+le()
+b()
+bs(46.5508,257.699,0)
+bs(50.3984,250,0)
+bs(54.25,257.699,0)
+lw(1.12)
+lc(2)
+ld((0, 2.4375100000000001))
+b()
+bs(50.3984,222.801,0)
+bs(50.3984,195.5,0)
fp((0,0,0))
-Fn('Helvetica')
-Fs(16)
-txt('dependencies',(389.267,393.4))
+le()
+b()
+bs(46.5508,195.5,0)
+bs(50.3984,187.801,0)
+bs(54.25,195.5,0)
+lw(1.12)
+lc(2)
+b()
+bs(50.3984,160.801,0)
+bs(50.3984,154.148,0)
+lw(1.12)
+lc(2)
+b()
+bs(50.3984,154.148,0)
+bs(50.3984,154.148,0)
+bc(50.3984,152.293,51.1367,150.512,52.4492,149.199,0)
+lw(1.12)
+lc(2)
+b()
+bs(52.4492,149.199,0)
+bs(52.4492,149.199,0)
+bc(53.7617,147.887,55.543,147.148,57.3984,147.148,0)
+lw(1.12)
+lc(2)
+b()
+bs(57.3984,147.148,0)
+bs(100.801,147.148,0)
+lw(1.12)
+lc(2)
+b()
+bs(100.801,147.148,0)
+bs(144.199,147.148,0)
+lw(1.12)
+lc(2)
+b()
+bs(144.199,147.148,0)
+bs(144.199,147.148,0)
+bc(146.055,147.148,147.836,146.41,149.148,145.102,0)
+lw(1.12)
+lc(2)
+b()
+bs(149.148,145.102,0)
+bs(149.148,145.102,0)
+bc(150.461,143.789,151.199,142.004,151.199,140.148,0)
+lw(1.12)
+lc(2)
+b()
+bs(151.199,140.148,0)
+bs(151.199,134.898,0)
+lw(1.12)
+lc(2)
+b()
+bs(151.199,134.898,0)
+bs(151.199,133.5,0)
fp((0,0,0))
-Fn('Helvetica')
-Fs(16)
-txt('Qt for X11',(265.517,393.4))
-G_()
+le()
+b()
+bs(147.352,133.5,0)
+bs(151.199,125.801,0)
+bs(155.051,133.5,0)
+lw(1.12)
+lc(2)
+ld((0, 2.2889599999999999))
+b()
+bs(540.051,41.8008,0)
+bs(568.25,41.8008,0)
guidelayer('Guide Lines',1,0,0,1,(0,0,1))
grid((0,0,5,5),1,(0,0,1),'Grid')
diff --git a/doc/src/emb-fonts.qdoc b/doc/src/emb-fonts.qdoc
index 3ed23c3..86e169d 100644
--- a/doc/src/emb-fonts.qdoc
+++ b/doc/src/emb-fonts.qdoc
@@ -131,7 +131,7 @@
The Qt Prerendered Font (QPF2) is an architecture-independent,
light-weight and non-scalable font format specific to \l{Qt for Embedded Linux}.
- Nokia provides the cross-platform \c makeqpf tool, included in the
+ Nokia provides the cross-platform \l makeqpf tool, included in the
\c tools directory of both \l {Qt} and \l{Qt for Embedded Linux}, which allows
generation of QPF2 files from system fonts.
diff --git a/doc/src/emb-makeqpf.qdoc b/doc/src/emb-makeqpf.qdoc
index ca33eda..8f5d10b 100644
--- a/doc/src/emb-makeqpf.qdoc
+++ b/doc/src/emb-makeqpf.qdoc
@@ -44,7 +44,10 @@
\title makeqpf
\ingroup qt-embedded-linux
- \c makeqpf is not part of Qt 4. However, Qt 4 can still read QPF
- files generated by Qt 2 or 3. To generate QPF files, use makeqpf from Qt 2
- or 3.
+ \c makeqpf is a tool to generate pre-rendered fonts in QPF2 format for use on Embedded Linux.
+
+ Qt 4 can read files in QPF2 format in addition to QPF files generated by older versions of
+ \c makeqpf from Qt 2 or 3.
+
+ \sa {Qt for Embedded Linux Fonts}
*/
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
index 6603390..c55d29f 100644
--- a/doc/src/examples.qdoc
+++ b/doc/src/examples.qdoc
@@ -86,6 +86,12 @@
\o \l{activeqt/webbrowser}{Web Browser}\raisedaster
\o \l{activeqt/wrapper}{Wrapper}\raisedaster
\endlist
+
+ \section1 Animation
+
+ \list
+ \o \l{animation/stickman}{Stick man}\raisedaster
+ \endlist
\section1 Concurrent Programming
diff --git a/doc/src/examples/codeeditor.qdoc b/doc/src/examples/codeeditor.qdoc
index 669ab45..d218d0d 100644
--- a/doc/src/examples/codeeditor.qdoc
+++ b/doc/src/examples/codeeditor.qdoc
@@ -67,7 +67,7 @@
QTextEdit because it is optimized for handling plain text. See
the QPlainTextEdit class description for details.
- QPlainTextEdit lets us add selections in addition to the the
+ QPlainTextEdit lets us add selections in addition to the
selection the user can make with the mouse or keyboard. We use
this functionality to highlight the current line. More on this
later.
diff --git a/doc/src/examples/containerextension.qdoc b/doc/src/examples/containerextension.qdoc
index a4fbcea..6d29cf6 100644
--- a/doc/src/examples/containerextension.qdoc
+++ b/doc/src/examples/containerextension.qdoc
@@ -305,7 +305,7 @@
MultiPageWidget class \l
{designer/containerextension/multipagewidget.cpp}{implementation}).
Finally, we implicitly force an update of the page's property
- sheet by calling the the
+ sheet by calling the
QDesignerPropertySheetExtension::setChanged() function.
\snippet examples/designer/containerextension/multipagewidgetplugin.cpp 4
diff --git a/doc/src/examples/contiguouscache.qdoc b/doc/src/examples/contiguouscache.qdoc
new file mode 100644
index 0000000..fbfde3f
--- /dev/null
+++ b/doc/src/examples/contiguouscache.qdoc
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example tools/contiguouscache
+ \title Contiguous Cache Example
+
+ The Contiguous Cache example shows how to use QContiguousCache to manage memory usage for
+ very large models. In some environments memory is limited and, even when it
+ isn't, users still dislike an application using excessive memory.
+ Using QContiguousCache to manage a list, rather than loading
+ the entire list into memory, allows the application to limit the amount
+ of memory it uses, regardless of the size of the data set it accesses
+
+ The simplest way to use QContiguousCache is to cache as items are requested. When
+ a view requests an item at row N it is also likely to ask for items at rows near
+ to N.
+
+ \snippet examples/tools/contiguouscache/randomlistmodel.cpp 0
+
+ After getting the row, the class determines if the row is in the bounds
+ of the contiguous cache's current range. It would have been equally valid to
+ simply have the following code instead.
+
+ \code
+ while (row > m_rows.lastIndex())
+ m_rows.append(fetchWord(m_rows.lastIndex()+1);
+ while (row < m_rows.firstIndex())
+ m_rows.prepend(fetchWord(m_rows.firstIndex()-1);
+ \endcode
+
+ However a list will often jump rows if the scroll bar is used directly, resulting in
+ the code above causing every row between the old and new rows to be fetched.
+
+ Using QContiguousCache::lastIndex() and QContiguousCache::firstIndex() allows
+ the example to determine what part of the list the cache is currently caching.
+ These values don't represent the indexes into the cache's own memory, but rather
+ a virtual infinite array that the cache represents.
+
+ By using QContiguousCache::append() and QContiguousCache::prepend() the code ensures
+ that items that may be still on the screen are not lost when the requested row
+ has not moved far from the current cache range. QContiguousCache::insert() can
+ potentially remove more than one item from the cache as QContiguousCache does not
+ allow for gaps. If your cache needs to quickly jump back and forth between
+ rows with significant gaps between them consider using QCache instead.
+
+ And thats it. A perfectly reasonable cache, using minimal memory for a very large
+ list. In this case the accessor for getting the words into the cache
+ generates random information rather than fixed information. This allows you
+ to see how the cache range is kept for a local number of rows when running the
+ example.
+
+ \snippet examples/tools/contiguouscache/randomlistmodel.cpp 1
+
+ It is also worth considering pre-fetching items into the cache outside of the
+ application's paint routine. This can be done either with a separate thread
+ or using a QTimer to incrementally expand the range of the cache prior to
+ rows being requested out of the current cache range.
+*/
diff --git a/doc/src/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc
index 9001c20..631aff9 100644
--- a/doc/src/examples/fancybrowser.qdoc
+++ b/doc/src/examples/fancybrowser.qdoc
@@ -40,12 +40,109 @@
****************************************************************************/
/*!
- \example webkit/fancybrowser
- \title Fancy Browser Example
+ \example webkit/fancybrowser
+ \title Fancy Browser Example
The Fancy Browser example shows how to use jQuery with QtWebKit to
- make a web browser with some special effects and content manipulation.
+ create a web browser with special effects and content
+ manipulation.
\image fancybrowser-example.png
+ The application makes use of QWebFrame::evaluateJavaScript to
+ evaluate the jQuery JavaScript code. A QMainWindow with a QWebView
+ as central widget builds up the browser itself.
+
+ \section1 MainWindow Class Definition
+
+ The \c MainWindow class inherits QMainWindow. It implements a number of
+ slots to perform actions on both the application and on the web content.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.h 1
+
+ We also declare a QString that contains the jQuery, a QWebView
+ that displays the web content, and a QLineEdit that acts as the
+ address bar.
+
+ \section1 MainWindow Class Implementation
+
+ We start by implementing the constructor.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 1
+
+ The first part of the constructor sets the value of \c progress to
+ 0. This value will be used later in the code to visualize the
+ loading of a webpage.
+
+ Next, the jQuery library is loaded using a QFile and reading the file
+ content. The jQuery library is a JavaScript library that provides different
+ functions for manipulating HTML.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 2
+
+ The second part of the constructor creates a QWebView and connects
+ slots to the views signals. Furthermore, we create a QLineEdit as
+ the browsers address bar. We then set the horizontal QSizePolicy
+ to fill the available area in the browser at all times. We add the
+ QLineEdit to a QToolbar together with a set of navigation actions
+ from QWebView::pageAction.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 3
+
+ The third and last part of the constructor implements two QMenus and assigns
+ a set of actions to them. The last line sets the QWebView as the central
+ widget in the QMainWindow.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 4
+
+ When the page is loaded, \c adjustLocation() updates the address
+ bar; \c adjustLocation() is triggered by the \c loadFinished()
+ signal in QWebView. In \c changeLocation() we create a QUrl
+ object, and then use it to load the page into the QWebView. When
+ the new web page has finished loading, \c adjustLocation() will be
+ run once more to update the address bar.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 5
+
+ \c adjustTitle() sets the window title and displays the loading
+ progress. This slot is triggered by the \c titleChanged() signal
+ in QWebView.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 6
+
+ When a web page has loaded, \c finishLoading() is triggered by the
+ \c loadFinished() signal in QWebView. \c finishLoading() then updates the
+ progress in the title bar and calls \c evaluateJavaScript() to evaluate the
+ jQuery library. This evaluates the JavaScript against the current web page.
+ What that means is that the JavaScript can be viewed as part of the content
+ loaded into the QWebView, and therefore needs to be loaded every time a new
+ page is loaded. Once the jQuery library is loaded, we can start executing
+ the different jQuery functions in the browser.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 7
+
+ The first jQuery-based function, \c highlightAllLinks(), is designed to
+ highlight all links in the current webpage. The JavaScript code looks
+ for web elements named \e {a}, which is the tag for a hyperlink.
+ For each such element, the background color is set to be yellow by
+ using CSS.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 8
+
+ The \c rotateImages() function rotates the images on the current
+ web page. Webkit supports CSS transforms and this JavaScript code
+ looks up all \e {img} elements and rotates the images 180 degrees
+ and then back again.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 9
+
+ The remaining four methods remove different elements from the current web
+ page. \c removeGifImages() removes all Gif images on the page by looking up
+ the \e {src} attribute of all the elements on the web page. Any element with
+ a \e {gif} file as its source is removed. \c removeInlineFrames() removes all
+ \e {iframe} or inline elements. \c removeObjectElements() removes all
+ \e {object} elements, and \c removeEmbeddedElements() removes any elements
+ such as plugins embedded on the page using the \e {embed} tag.
+
*/
+
diff --git a/doc/src/examples/fortuneserver.qdoc b/doc/src/examples/fortuneserver.qdoc
index e6a7f85..848a3a3 100644
--- a/doc/src/examples/fortuneserver.qdoc
+++ b/doc/src/examples/fortuneserver.qdoc
@@ -45,7 +45,7 @@
The Fortune Server example shows how to create a server for a simple
network service. It is intended to be run alongside the
- \l{network/fortuneclient}{Fortune Client} example or the the
+ \l{network/fortuneclient}{Fortune Client} example or the
\l{network/blockingfortuneclient}{Blocking Fortune Client} example.
\image fortuneserver-example.png Screenshot of the Fortune Server example
diff --git a/doc/src/examples/ftp.qdoc b/doc/src/examples/ftp.qdoc
index 9cc9cd1..7a74a37 100644
--- a/doc/src/examples/ftp.qdoc
+++ b/doc/src/examples/ftp.qdoc
@@ -172,7 +172,7 @@
no entries were found (in which case our \c addToList() function
would not have been called).
- Let's continue with the the \c addToList() slot:
+ Let's continue with the \c addToList() slot:
\snippet examples/network/ftp/ftpwindow.cpp 10
@@ -190,7 +190,7 @@
\snippet examples/network/ftp/ftpwindow.cpp 12
- \c cdToParent() is invoked when the the user requests to go to the
+ \c cdToParent() is invoked when the user requests to go to the
parent directory of the one displayed in the file list. After
changing the directory, we QFtp::List its contents.
diff --git a/doc/src/examples/icons.qdoc b/doc/src/examples/icons.qdoc
index 750ef2e..a81ddb9 100644
--- a/doc/src/examples/icons.qdoc
+++ b/doc/src/examples/icons.qdoc
@@ -479,7 +479,7 @@
QTableWidget::openPersistentEditor() function to create
comboboxes for the mode and state columns of the items.
- Due to the the connection between the table widget's \l
+ Due to the connection between the table widget's \l
{QTableWidget::itemChanged()}{itemChanged()} signal and the \c
changeIcon() slot, the new image is automatically converted into a
pixmap and made part of the set of pixmaps available to the icon
diff --git a/doc/src/examples/musicplayerexample.qdoc b/doc/src/examples/musicplayerexample.qdoc
index d23c1f1..9f04bf6 100644
--- a/doc/src/examples/musicplayerexample.qdoc
+++ b/doc/src/examples/musicplayerexample.qdoc
@@ -154,7 +154,7 @@
\snippet examples/phonon/musicplayer/mainwindow.cpp 5
- We move on to the the slots of \c MainWindow, starting with \c
+ We move on to the slots of \c MainWindow, starting with \c
addFiles():
\snippet examples/phonon/musicplayer/mainwindow.cpp 6
diff --git a/doc/src/examples/qobjectxmlmodel.qdoc b/doc/src/examples/qobjectxmlmodel.qdoc
index ce1dab6..37c66bc 100644
--- a/doc/src/examples/qobjectxmlmodel.qdoc
+++ b/doc/src/examples/qobjectxmlmodel.qdoc
@@ -71,7 +71,7 @@
The query engine can only traverse two dimensional trees, because an
XML document is always a two dimensional tree. If we want to add the
QMetaObject tree to the node model, we have to somehow flatten it
- into the the same plane as the QObject tree. This requires that the
+ into the same plane as the QObject tree. This requires that the
node model class must build an auxiliary data structure and make it
part of the two dimensional QObject node model. How to do this is
explained in \l{Including The QMetaObject Tree}.
diff --git a/doc/src/examples/stickman.qdoc b/doc/src/examples/stickman.qdoc
new file mode 100644
index 0000000..49f4953
--- /dev/null
+++ b/doc/src/examples/stickman.qdoc
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example animation/stickman
+ \title Stickman Example
+
+ The Stickman example shows how to animate transitions in a state machine to implement key frame
+ animations.
+
+ \image stickman-example.png
+
+ In this example, we will write a small application which animates the joints in a skeleton and
+ projects a stickman figure on top. The stickman can be either "alive" or "dead", and when in the
+ "alive" state, he can be performing different actions defined by key frame animations.
+
+ Animations are implemented as composite states. Each child state of the animation state
+ represents a frame in the animation by setting the position of each joint in the stickman's
+ skeleton to the positions defined for the particular frame. The frames are then bound together
+ with animated transitions that trigger on the source state's polished() signal. Thus, the
+ machine will enter the state representing the next frame in the animation immediately after it
+ has finished animating into the previous frame.
+
+ \image stickman-example1.png
+
+ The states for an animation is constructed by reading a custom animation file format and
+ creating states that assign values to the the "position" properties of each of the nodes in the
+ skeleton graph.
+
+ \snippet examples/animation/stickman/lifecycle.cpp 1
+
+ The states are then bound together with signal transitions that listen to the polished() signal.
+
+ \snippet examples/animation/stickman/lifecycle.cpp 2
+
+ The last frame state is given a transition to the first one, so that the animation will loop
+ until it is interrupted when a transition out from the animation state is taken. To get smooth
+ animations between the different key frames, we set a default animation on the state machine.
+ This is a parallel animation group which contains animations for all the "position" properties
+ and will be selected by default when taking any transition that leads into a state that assigns
+ values to these properties.
+
+ \snippet examples/animation/stickman/lifecycle.cpp 3
+
+ Several such animation states are constructed, and are placed together as children of a top
+ level "alive" state which represents the stickman life cycle. Transitions go from the parent
+ state to the child state to ensure that each of the child states inherit them.
+
+ \image stickman-example2.png
+
+ This saves us the effort of connect every state to every state with identical transitions. The
+ state machine makes sure that transitions between the key frame animations are also smooth by
+ applying the default animation when interrupting one and starting another.
+
+ Finally, there is a transition out from the "alive" state and into the "dead" state. This is
+ a custom transition type called LightningSrikesTransition which samples every second and
+ triggers at random (one out of fifty times on average.)
+
+ \snippet examples/animation/stickman/lifecycle.cpp 4
+
+ When it triggers, the machine will first enter a "lightningBlink" state which uses a timer to
+ pause for a brief period of time while the background color of the scene is white. This gives us
+ a flash effect when the lightning strikes.
+
+ \snippet examples/animation/stickman/lifecycle.cpp 5
+
+ We start and stop a QTimer object when entering and exiting the state. Then we transition into
+ the "dead" state when the timer times out.
+
+ \snippet examples/animation/stickman/lifecycle.cpp 0
+
+ When the machine is in the "dead" state, it will be unresponsive. This is because the "dead"
+ state has no transitions leading out.
+
+ \image stickman-example3.png
+
+*/
diff --git a/doc/src/examples/tabdialog.qdoc b/doc/src/examples/tabdialog.qdoc
index c9500af..5394b82 100644
--- a/doc/src/examples/tabdialog.qdoc
+++ b/doc/src/examples/tabdialog.qdoc
@@ -91,7 +91,7 @@
\snippet examples/dialogs/tabdialog/tabdialog.cpp 1
\snippet examples/dialogs/tabdialog/tabdialog.cpp 3
- We arrange the the tab widget above the buttons in the dialog:
+ We arrange the tab widget above the buttons in the dialog:
\snippet examples/dialogs/tabdialog/tabdialog.cpp 4
diff --git a/doc/src/examples/tankgame.qdoc b/doc/src/examples/tankgame.qdoc
index 1501a99..ab3e0f4 100644
--- a/doc/src/examples/tankgame.qdoc
+++ b/doc/src/examples/tankgame.qdoc
@@ -82,6 +82,8 @@
"Add tank" menu item should be disabled. This is implemented by giving the "stopped" state two
children which define whether the map is full or not.
+ \snippet examples/statemachine/tankgame/mainwindow.cpp 5
+
To make sure that we go into the correct child state when returning from the "running" state
(if the "Stop game" menu item is selected while the game is running) we also give the "stopped"
state a history state which we make the initial state of "stopped" state.
diff --git a/doc/src/examples/tooltips.qdoc b/doc/src/examples/tooltips.qdoc
index 5daa2b2..78b350b 100644
--- a/doc/src/examples/tooltips.qdoc
+++ b/doc/src/examples/tooltips.qdoc
@@ -353,7 +353,7 @@
Whenever the user creates a new shape item, we want the new item
to appear at a random position, and we use the \c
randomItemPosition() function to calculate such a position. We
- make sure that the item appears within the the visible area of the
+ make sure that the item appears within the visible area of the
\c SortingBox widget, using the widget's current width and heigth
when calculating the random coordinates.
diff --git a/doc/src/examples/trafficinfo.qdoc b/doc/src/examples/trafficinfo.qdoc
index c9b6890..13181cd 100644
--- a/doc/src/examples/trafficinfo.qdoc
+++ b/doc/src/examples/trafficinfo.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
diff --git a/doc/src/examples/transformations.qdoc b/doc/src/examples/transformations.qdoc
index eabb803..58c8b80 100644
--- a/doc/src/examples/transformations.qdoc
+++ b/doc/src/examples/transformations.qdoc
@@ -208,7 +208,7 @@
After transforming the coordinate system, we draw the \c
RenderArea's shape, and then we restore the painter state using
- the the QPainter::restore() function (i.e. popping the saved state off
+ the QPainter::restore() function (i.e. popping the saved state off
the stack).
\snippet examples/painting/transformations/renderarea.cpp 7
diff --git a/doc/src/examples/trollprint.qdoc b/doc/src/examples/trollprint.qdoc
index 38251ee..489012e 100644
--- a/doc/src/examples/trollprint.qdoc
+++ b/doc/src/examples/trollprint.qdoc
@@ -142,7 +142,7 @@
We can easily determine which file must be changed because the
translator's "context" is in fact the class name for the class where
the texts that must be changed appears. In this case the file is \c
- printpanel.cpp, where the there are four lines to change. Add the
+ printpanel.cpp, where there are four lines to change. Add the
second argument "two-sided" in the appropriate \c tr() calls to the
first pair of radio buttons:
diff --git a/doc/src/images/animations-architecture.png b/doc/src/images/animations-architecture.png
new file mode 100644
index 0000000..9b581af
--- /dev/null
+++ b/doc/src/images/animations-architecture.png
Binary files differ
diff --git a/doc/src/images/designer-choosing-form.png b/doc/src/images/designer-choosing-form.png
index fa6e470..bee4b29 100644
--- a/doc/src/images/designer-choosing-form.png
+++ b/doc/src/images/designer-choosing-form.png
Binary files differ
diff --git a/doc/src/images/inputdialogs.png b/doc/src/images/inputdialogs.png
index 135c2f6..8bda185 100644
--- a/doc/src/images/inputdialogs.png
+++ b/doc/src/images/inputdialogs.png
Binary files differ
diff --git a/doc/src/images/rgbController-arrangement.png b/doc/src/images/rgbController-arrangement.png
new file mode 100644
index 0000000..d9e8bab
--- /dev/null
+++ b/doc/src/images/rgbController-arrangement.png
Binary files differ
diff --git a/doc/src/images/rgbController-configure-connection1.png b/doc/src/images/rgbController-configure-connection1.png
new file mode 100644
index 0000000..4e5dcf2
--- /dev/null
+++ b/doc/src/images/rgbController-configure-connection1.png
Binary files differ
diff --git a/doc/src/images/rgbController-configure-connection2.png b/doc/src/images/rgbController-configure-connection2.png
new file mode 100644
index 0000000..f3fcc62
--- /dev/null
+++ b/doc/src/images/rgbController-configure-connection2.png
Binary files differ
diff --git a/doc/src/images/rgbController-final-layout.png b/doc/src/images/rgbController-final-layout.png
new file mode 100644
index 0000000..d32a93e
--- /dev/null
+++ b/doc/src/images/rgbController-final-layout.png
Binary files differ
diff --git a/doc/src/images/rgbController-form-gridLayout.png b/doc/src/images/rgbController-form-gridLayout.png
new file mode 100644
index 0000000..c8f3dcf
--- /dev/null
+++ b/doc/src/images/rgbController-form-gridLayout.png
Binary files differ
diff --git a/doc/src/images/rgbController-no-toplevel-layout.png b/doc/src/images/rgbController-no-toplevel-layout.png
new file mode 100644
index 0000000..0a9bc29
--- /dev/null
+++ b/doc/src/images/rgbController-no-toplevel-layout.png
Binary files differ
diff --git a/doc/src/images/rgbController-property-editing.png b/doc/src/images/rgbController-property-editing.png
new file mode 100644
index 0000000..64fc500
--- /dev/null
+++ b/doc/src/images/rgbController-property-editing.png
Binary files differ
diff --git a/doc/src/images/rgbController-screenshot.png b/doc/src/images/rgbController-screenshot.png
new file mode 100644
index 0000000..6019233
--- /dev/null
+++ b/doc/src/images/rgbController-screenshot.png
Binary files differ
diff --git a/doc/src/images/rgbController-selectForLayout.png b/doc/src/images/rgbController-selectForLayout.png
new file mode 100644
index 0000000..7a8e184
--- /dev/null
+++ b/doc/src/images/rgbController-selectForLayout.png
Binary files differ
diff --git a/doc/src/images/rgbController-signalsAndSlots.png b/doc/src/images/rgbController-signalsAndSlots.png
new file mode 100644
index 0000000..2ba3aba
--- /dev/null
+++ b/doc/src/images/rgbController-signalsAndSlots.png
Binary files differ
diff --git a/doc/src/images/stickman-example.png b/doc/src/images/stickman-example.png
new file mode 100644
index 0000000..a40f37b
--- /dev/null
+++ b/doc/src/images/stickman-example.png
Binary files differ
diff --git a/doc/src/images/stickman-example1.png b/doc/src/images/stickman-example1.png
new file mode 100644
index 0000000..1596a68
--- /dev/null
+++ b/doc/src/images/stickman-example1.png
Binary files differ
diff --git a/doc/src/images/stickman-example2.png b/doc/src/images/stickman-example2.png
new file mode 100644
index 0000000..980276a
--- /dev/null
+++ b/doc/src/images/stickman-example2.png
Binary files differ
diff --git a/doc/src/images/stickman-example3.png b/doc/src/images/stickman-example3.png
new file mode 100644
index 0000000..3635ff7
--- /dev/null
+++ b/doc/src/images/stickman-example3.png
Binary files differ
diff --git a/doc/src/images/x11_dependencies.png b/doc/src/images/x11_dependencies.png
index 02bce1a..6ad952e 100644
--- a/doc/src/images/x11_dependencies.png
+++ b/doc/src/images/x11_dependencies.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index f0debdb..2d64dfe 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -153,6 +153,7 @@
<li><a href="overviews.html">All Overviews and HOWTOs</a></li>
<li><a href="gallery.html">Qt Widget Gallery</a></li>
<li><a href="http://doc.trolltech.com/extras/qt43-class-chart.pdf">Class Chart</a></li>
+ <li><a href="qtglobal.html">Qt Global Declarations</a></li>
</ul>
</td>
<td valign="top">
@@ -208,10 +209,10 @@
<td valign="top">
<ul>
<li><a href="http://www.qtsoftware.com/products/add-on-products">Qt Solutions</a></li>
- <li><a href="http://www.qtsoftware.com/products/qt/3rdparty/">Partner Add-ons</a></li>
+ <li><a href="http://www.qtsoftware.com/products/appdev">Partner Add-ons</a></li>
<li><a href="http://qt-apps.org">Third-Party Qt Components (qt-apps.org)</a></li>
- <li><a href="http://www.qtsoftware.com/support/">Support</a></li>
- <li><a href="http://www.qtsoftware.com/support/training/">Training</a></li>
+ <li><a href="http://www.qtsoftware.com/support-services/support-services/">Support</a></li>
+ <li><a href="http://www.qtsoftware.com/support-services/training/">Training</a></li>
</ul>
</td>
<td valign="top">
diff --git a/doc/src/installation.qdoc b/doc/src/installation.qdoc
index 925a195..bc310c9 100644
--- a/doc/src/installation.qdoc
+++ b/doc/src/installation.qdoc
@@ -612,6 +612,14 @@ in the \l{Qt for Windows CE Requirements} document.
</tr><tr id="OptionalColor">
<td> Xinerama </td><td> libXinerama </td><td> Multi-head support</td>
<td><tt>-xinerama</tt> or auto-detected</td><td>1.1.0</td>
+
+ </tr><tr id="OptionalColor">
+ <td> Fontconfig </td><td> libfontconfig </td><td> Font customization and configuration</td>
+ <td><tt>-fontconfig</tt> or auto-detected</td><td>2.1</td>
+ </tr><tr id="OptionalColor">
+ <td> FreeType </td><td> libfreetype </td><td> Font engine</td>
+ <td></td><td>2.1.3</td>
+
</tr><tr id="DefaultColor">
<td> Xi </td><td> libXi </td><td> X11 Input Extensions</td>
<td><tt>-xinput</tt> or auto-detected</td><td>1.3.0</td>
@@ -621,12 +629,14 @@ in the \l{Qt for Windows CE Requirements} document.
<td> Xext </td><td> libXext </td><td> X Extensions</td><td></td><td>6.4.3</td>
</tr><tr id="DefaultColor">
<td> X11 </td><td> libX11 </td><td> X11 Client-Side Library</td><td></td><td>6.2.1</td>
+
</tr><tr id="SMColor">
<td> SM </td><td> libSM </td><td> X Session Management</td>
<td><tt>-sm</tt> or auto-detected</td><td>6.0.4</td>
</tr><tr id="SMColor">
<td> ICE </td><td> libICE </td><td> Inter-Client Exchange</td>
<td><tt>-sm</tt> or auto-detected</td><td>6.3.5</td>
+
</tr><tr id="GlibColor">
<td> glib </td><td> libglib-2.0 </td><td> Common event loop handling</td>
<td><tt>-glib</tt> or auto-detected</td><td>2.8.3</td>
@@ -738,8 +748,6 @@ in the \l{Qt for Windows CE Requirements} document.
\header \o Minimal \o Normal \o Minimal \o Normal \o Minimal \o Normal \o Minimal \o Normal
\row \o linux-x86-g++ \o GCC 4.2.4 \o 1.7M \o 2.7M \o 3.3M \o 9.9M \o 653K \o 1.1M \o N/A \o 17M
\row \o linux-arm-g++ \o GCC 4.1.1 \o 1.9M \o 3.2M \o 4.1M \o 11M \o 507K \o 1.0M \o N/A \o 17M
- \row \o linux-arm-g++ (thumb)
- \o GCC 4.1.1 \o 1.7M \o 2.8M \o 4.0M \o 9.8M \o 409K \o 796K \o N/A \o 17M
\row \o linux-mips-g++ (MIPS32)
\o GCC 4.2.4 \o 2.0M \o 3.2M \o 4.5M \o 12M \o 505K \o 1003K \o N/A \o 21M
\endtable
diff --git a/doc/src/layout.qdoc b/doc/src/layout.qdoc
index 55dfd8b..d97fcfc 100644
--- a/doc/src/layout.qdoc
+++ b/doc/src/layout.qdoc
@@ -315,7 +315,11 @@
\snippet doc/src/snippets/code/doc_src_layout.qdoc 1
- First we define two functions that iterate over the layout: \c{itemAt()}
+ First we define \c{count()} to fetch the number of items in the list.
+
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 2
+
+ Then we define two functions that iterate over the layout: \c{itemAt()}
and \c{takeAt()}. These functions are used internally by the layout system
to handle deletion of widgets. They are also available for application
programmers.
@@ -326,7 +330,7 @@
structure, we may have to spend more effort defining a linear order for the
items.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 2
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 3
\c{addItem()} implements the default placement strategy for layout items.
This function must be implemented. It is used by QLayout::add(), by the
@@ -336,26 +340,26 @@
QGridLayout::addItem(), QGridLayout::addWidget(), and
QGridLayout::addLayout().
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 3
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 4
The layout takes over responsibility of the items added. Since QLayoutItem
- does not inherit QObject, we must delete the items manually. The function
- QLayout::deleteAllItems() uses \c{takeAt()} defined above to delete all the
- items in the layout.
+ does not inherit QObject, we must delete the items manually. In the
+ destructor, we remove each item from the list using \c{takeAt()}, and
+ then delete it.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 4
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 5
The \c{setGeometry()} function actually performs the layout. The rectangle
supplied as an argument does not include \c{margin()}. If relevant, use
\c{spacing()} as the distance between items.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 5
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 6
\c{sizeHint()} and \c{minimumSize()} are normally very similar in
implementation. The sizes returned by both functions should include
\c{spacing()}, but not \c{margin()}.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 6
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 7
\section2 Further Notes
diff --git a/doc/src/licenses.qdoc b/doc/src/licenses.qdoc
index 1c3f6d2..a11c071 100644
--- a/doc/src/licenses.qdoc
+++ b/doc/src/licenses.qdoc
@@ -45,7 +45,7 @@
\ingroup licensing
\brief Information about other licenses used for Qt components and third-party code.
- Qt contains some code that is not provided under the the
+ Qt contains some code that is not provided under the
\l{GNU General Public License (GPL)},
\l{GNU Lesser General Public License (LGPL)} or the
\l{Qt Commercial Editions}{Qt Commercial License Agreement}, but rather under
diff --git a/doc/src/mac-differences.qdoc b/doc/src/mac-differences.qdoc
index 573e62d..5849850 100644
--- a/doc/src/mac-differences.qdoc
+++ b/doc/src/mac-differences.qdoc
@@ -128,7 +128,7 @@
If you want to build a new dynamic library combining the Qt 4
dynamic libraries, you need to introduce the \c{ld -r} flag. Then
- relocation information is stored in the the output file, so that
+ relocation information is stored in the output file, so that
this file could be the subject of another \c ld run. This is done
by setting the \c -r flag in the \c .pro file, and the \c LFLAGS
settings.
diff --git a/doc/src/model-view-programming.qdoc b/doc/src/model-view-programming.qdoc
index bf0c1c8..8874cfa 100644
--- a/doc/src/model-view-programming.qdoc
+++ b/doc/src/model-view-programming.qdoc
@@ -249,7 +249,7 @@
provide an API that allows you to sort your model data
programmatically. In addition, you can enable interactive sorting
(i.e. allowing the users to sort the data by clicking the view's
- headers), by connecting the QHeaderView::sectionClicked() signal
+ headers), by connecting the QHeaderView::sortIndicatorChanged() signal
to the QTableView::sortByColumn() slot or the
QTreeView::sortByColumn() slot, respectively.
diff --git a/doc/src/phonon-api.qdoc b/doc/src/phonon-api.qdoc
index 501b5a5..5deb64e 100644
--- a/doc/src/phonon-api.qdoc
+++ b/doc/src/phonon-api.qdoc
@@ -1032,6 +1032,7 @@
\value Stream The MediaSource object describes a data stream.
This is the type used for \l{QIODevice}s. Note
that a stream opened with a QUrl, will still be of the Url type.
+ \value Empty The media source doesn't have a source.
\sa MediaSource::type()
*/
@@ -2026,6 +2027,15 @@
*/
/*!
+ \fn void Phonon::MediaObject::clear()
+
+ Stops and removes all playing and enqueued media sources.
+
+ \sa setCurrentSource()
+*/
+
+
+/*!
\fn void Phonon::MediaObject::stateChanged(Phonon::State newstate, Phonon::State oldstate)
This signal is emitted when the state of the MediaObject has changed.
@@ -2973,7 +2983,7 @@
\value ToggledHint
If this hint is set it means that
- the the control has only two states: zero and non-zero
+ the control has only two states: zero and non-zero
(see isToggleControl()).
\value LogarithmicHint
@@ -3027,6 +3037,12 @@
*/
/*!
+ \typedef Phonon::AudioOutputInterface
+ \inmodule Phonon
+ \internal
+*/
+
+/*!
\class Phonon::AudioOutputInterface40
\inmodule Phonon
\since 4.4
@@ -3251,7 +3267,19 @@
/*!
\fn bool Phonon::Path::operator!=(const Path &p) const;
- Returns true if this Path is not equal to \a p; otherwise returns false;
+ Returns true if this Path is not equal to \a p; otherwise returns false.
+*/
+
+/*!
+ \fn MediaNode *Phonon::Path::source() const;
+
+ Returns the source MediaNode used by the path.
+*/
+
+/*!
+ \fn MediaNode *Phonon::Path::sink() const;
+
+ Returns the sink MediaNode used by the path.
*/
/*!
@@ -4878,7 +4906,7 @@
*/
/*!
- \typedef typedef void (*CleanUpFunction)()
+ \typedef Phonon::CleanUpFunction
\inmodule Phonon
\internal
*/
diff --git a/doc/src/porting4-overview.qdoc b/doc/src/porting4-overview.qdoc
index b0146a6..462f849 100644
--- a/doc/src/porting4-overview.qdoc
+++ b/doc/src/porting4-overview.qdoc
@@ -364,4 +364,10 @@
In Qt 4.2 and later, \l{Qt Style Sheets} can be used to
implement many common modifications to existing styles, and
this may be sufficient for Qt 3 applications.
+
+ \section2 Events
+ In Qt 3, QCloseEvents were not accepted by default. In Qt 4,
+ the event handler QWidget::closeEvent() receives QCloseEvents,
+ and accepts them by default closing the application. To avoid
+ this, please reimplement QWidget::closeEvent().
*/
diff --git a/doc/src/properties.qdoc b/doc/src/properties.qdoc
index d934f13..0251d3f 100644
--- a/doc/src/properties.qdoc
+++ b/doc/src/properties.qdoc
@@ -71,10 +71,10 @@
\list
\o A \c READ accessor function is required. It is for reading the
- property value. It must be const and must return either the
- property's type or a pointer or reference to that type. e.g.,
- QWidget::focus is a read-only property with \c READ function
- QWidget::hasFocus().
+ property value. Ideally, a const function is used for this purpose,
+ and it must return either the property's type or a pointer or
+ reference to that type. e.g., QWidget::focus is a read-only property
+ with \c READ function, QWidget::hasFocus().
\o A \c WRITE accessor function is optional. It is for setting the
property value. It must return void and must take exactly one
diff --git a/doc/src/q3valuelist.qdoc b/doc/src/q3valuelist.qdoc
index be315c2..e3681af 100644
--- a/doc/src/q3valuelist.qdoc
+++ b/doc/src/q3valuelist.qdoc
@@ -108,7 +108,7 @@
pointing to the removed member become invalid. Inserting into the
list does not invalidate any iterator. For convenience, the
function last() returns a reference to the last item in the list,
- and first() returns a reference to the the first item. If the
+ and first() returns a reference to the first item. If the
list is empty(), both last() and first() have undefined behavior
(your application will crash or do unpredictable things). Use
last() and first() with caution, for example:
diff --git a/doc/src/qalgorithms.qdoc b/doc/src/qalgorithms.qdoc
index b33c250..90289f9 100644
--- a/doc/src/qalgorithms.qdoc
+++ b/doc/src/qalgorithms.qdoc
@@ -59,7 +59,7 @@
If STL is available on all your target platforms, you can use the
STL algorithms instead of their Qt counterparts. One reason why
- you might want to use the the STL algorithms is that STL provides
+ you might want to use the STL algorithms is that STL provides
dozens and dozens of algorithms, whereas Qt only provides the most
important ones, making no attempt to duplicate functionality that
is already provided by the C++ standard.
diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc
index 65f9b5d..b66ebee 100644
--- a/doc/src/qnamespace.qdoc
+++ b/doc/src/qnamespace.qdoc
@@ -528,6 +528,10 @@
Qt::DirectConnection; otherwise the
signal is queued, as with
Qt::QueuedConnection.
+ \value UniqueConnection Same as AutoConnection, but there will be a check that the signal is
+ not already connected to the same slot before connecting, otherwise,
+ the connection will fail.
+ \since 4.6
With queued connections, the parameters must be of types that are known to
Qt's meta-object system, because Qt needs to copy the arguments to store them
diff --git a/doc/src/qset.qdoc b/doc/src/qset.qdoc
index 9795123..a168800 100644
--- a/doc/src/qset.qdoc
+++ b/doc/src/qset.qdoc
@@ -447,7 +447,7 @@
\fn QSet::const_iterator QSet::insert(const T &value)
Inserts item \a value into the set, if \a value isn't already
- in the set, and returns an iterator positioned at the inserted
+ in the set, and returns an iterator pointing at the inserted
item.
\sa operator<<(), remove(), contains()
@@ -695,11 +695,12 @@
*/
/*!
- \typedef QSet::iterator::iterator_category
- \typedef QSet::const_iterator::iterator_category
+ \typedef QSet::iterator::iterator_category
+ \typedef QSet::const_iterator::iterator_category
- \internal
-*/
+ Synonyms for \e {std::bidirectional_iterator_tag} indicating
+ these iterators are bidirectional iterators.
+ */
/*!
\typedef QSet::iterator::difference_type
diff --git a/doc/src/qstyles.qdoc b/doc/src/qstyles.qdoc
new file mode 100644
index 0000000..e17097a
--- /dev/null
+++ b/doc/src/qstyles.qdoc
@@ -0,0 +1,261 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+/*!
+ \class QMacStyle
+ \brief The QMacStyle class provides a Mac OS X style using the Apple Appearance Manager.
+
+ \ingroup appearance
+
+ This class is implemented as a wrapper to the HITheme
+ APIs, allowing applications to be styled according to the current
+ theme in use on Mac OS X. This is done by having primitives
+ in QStyle implemented in terms of what Mac OS X would normally theme.
+
+ \warning This style is only available on Mac OS X because it relies on the
+ HITheme APIs.
+
+ There are additional issues that should be taken
+ into consideration to make an application compatible with the
+ \link http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html
+ Apple Human Interface Guidelines \endlink. Some of these issues are outlined
+ below.
+
+ \list
+
+ \i Layout - The restrictions on window layout are such that some
+ aspects of layout that are style-dependent cannot be achieved
+ using QLayout. Changes are being considered (and feedback would be
+ appreciated) to make layouts QStyle-able. Some of the restrictions
+ involve horizontal and vertical widget alignment and widget size
+ (covered below).
+
+ \i Widget size - Mac OS X allows widgets to have specific fixed sizes. Qt
+ does not fully implement this behavior so as to maintain cross-platform
+ compatibility. As a result some widgets sizes may be inappropriate (and
+ subsequently not rendered correctly by the HITheme APIs).The
+ QWidget::sizeHint() will return the appropriate size for many
+ managed widgets (widgets enumerated in \l QStyle::ContentsType).
+
+ \i Effects - QMacStyle uses HITheme for performing most of the drawing, but
+ also uses emulation in a few cases where HITheme does not provide the
+ required functionality (for example, tab bars on Panther, the toolbar
+ separator, etc). We tried to make the emulation as close to the original as
+ possible. Please report any issues you see in effects or non-standard
+ widgets.
+
+ \endlist
+
+ There are other issues that need to be considered in the feel of
+ your application (including the general color scheme to match the
+ Aqua colors). The Guidelines mentioned above will remain current
+ with new advances and design suggestions for Mac OS X.
+
+ Note that the functions provided by QMacStyle are
+ reimplementations of QStyle functions; see QStyle for their
+ documentation.
+
+ \img qmacstyle.png
+ \sa QWindowsXPStyle, QWindowsStyle, QPlastiqueStyle, QCDEStyle, QMotifStyle
+*/
+
+
+/*!
+ \enum QMacStyle::WidgetSizePolicy
+
+ \value SizeSmall
+ \value SizeLarge
+ \value SizeMini
+ \value SizeDefault
+ \omitvalue SizeNone
+*/
+
+/*! \fn QMacStyle::QMacStyle()
+ Constructs a QMacStyle object.
+*/
+
+/*! \fn QMacStyle::~QMacStyle()
+ Destructs a QMacStyle object.
+*/
+
+/*! \fn void QMacStyle::polish(QPalette &pal)
+ \reimp
+*/
+
+/*! \fn void QMacStyle::polish(QApplication *)
+ \reimp
+*/
+
+/*! \fn void QMacStyle::unpolish(QApplication *)
+ \reimp
+*/
+
+/*! \fn void QMacStyle::polish(QWidget* w)
+ \reimp
+*/
+
+/*! \fn void QMacStyle::unpolish(QWidget* w)
+ \reimp
+*/
+
+/*! \fn int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QWidget *widget) const
+ \reimp
+*/
+
+/*! \fn QPalette QMacStyle::standardPalette() const
+ \reimp
+*/
+
+/*! \fn int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *hret) const
+ \reimp
+*/
+
+/*! \fn QPixmap QMacStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
+ \reimp
+*/
+
+/*! \fn QPixmap QMacStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget) const
+ \reimp
+*/
+
+/*!
+ \enum QMacStyle::FocusRectPolicy
+
+ This type is used to signify a widget's focus rectangle policy.
+
+ \value FocusEnabled show a focus rectangle when the widget has focus.
+ \value FocusDisabled never show a focus rectangle for the widget.
+ \value FocusDefault show a focus rectangle when the widget has
+ focus and the widget is a QSpinWidget, QDateTimeEdit, QLineEdit,
+ QListBox, QListView, editable QTextEdit, or one of their
+ subclasses.
+*/
+
+/*! \fn void QMacStyle::setFocusRectPolicy(QWidget *w, FocusRectPolicy policy)
+ \obsolete
+ Sets the focus rectangle policy of \a w. The \a policy can be one of
+ \l{QMacStyle::FocusRectPolicy}.
+
+ This is now simply an interface to the Qt::WA_MacShowFocusRect attribute and the
+ FocusDefault value does nothing anymore. If you want to set a widget back
+ to its default value, you must save the old value of the attribute before
+ you change it.
+
+ \sa focusRectPolicy() QWidget::setAttribute()
+*/
+
+/*! \fn QMacStyle::FocusRectPolicy QMacStyle::focusRectPolicy(const QWidget *w)
+ \obsolete
+ Returns the focus rectangle policy for the widget \a w.
+
+ The focus rectangle policy can be one of \l{QMacStyle::FocusRectPolicy}.
+
+ In 4.3 and up this function will simply test for the
+ Qt::WA_MacShowFocusRect attribute and will never return
+ QMacStyle::FocusDefault.
+
+ \sa setFocusRectPolicy(), QWidget::testAttribute()
+*/
+
+/*! \fn void QMacStyle::setWidgetSizePolicy(const QWidget *widget, WidgetSizePolicy policy)
+
+ \obsolete
+
+ Call QWidget::setAttribute() with Qt::WA_MacMiniSize, Qt::WA_MacSmallSize,
+ or Qt::WA_MacNormalSize instead.
+*/
+
+/*! \fn QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget)
+ \obsolete
+
+ Call QWidget::testAttribute() with Qt::WA_MacMiniSize, Qt::WA_MacSmallSize,
+ or Qt::WA_MacNormalSize instead.
+*/
+
+/*! \fn void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const
+
+ \reimp
+*/
+
+/*! \fn void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter *p, const QWidget *w) const
+
+ \reimp
+*/
+
+/*! \fn QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt, const QWidget *widget) const
+
+ \reimp
+*/
+
+/*! \fn void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const
+ \reimp
+*/
+
+/*! \fn QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const
+ \reimp
+*/
+
+/*! \fn QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const
+ \reimp
+*/
+
+/*! \fn QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz, const QWidget *widget) const
+ \reimp
+*/
+
+/*! \fn void QMacStyle::drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const
+ \reimp
+*/
+
+/*! \fn bool QMacStyle::event(QEvent *e)
+ \reimp
+*/
+
+/*! \fn QIcon QMacStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *opt, const QWidget *widget) const
+ \internal
+*/
+
+/*! \fn int QMacStyle::layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const
+
+ \internal
+*/
+
diff --git a/doc/src/qtdesigner.qdoc b/doc/src/qtdesigner.qdoc
index 7e3b619..9699c5b 100644
--- a/doc/src/qtdesigner.qdoc
+++ b/doc/src/qtdesigner.qdoc
@@ -632,7 +632,7 @@
/*!
\fn void QDesignerContainerExtension::setCurrentIndex(int index)
- Sets the the currently selected page in the container to be the
+ Sets the currently selected page in the container to be the
page at the given \a index in the extension's list of pages.
\sa currentIndex()
diff --git a/doc/src/qtscriptdebugger-manual.qdoc b/doc/src/qtscriptdebugger-manual.qdoc
index 3dfe879..75d87f8 100644
--- a/doc/src/qtscriptdebugger-manual.qdoc
+++ b/doc/src/qtscriptdebugger-manual.qdoc
@@ -367,7 +367,7 @@
\section3 continue
Continues execution normally, i.e, gives the execution control over
- the script back the the QScriptEngine.
+ the script back to the QScriptEngine.
\section3 eval <program>
diff --git a/doc/src/signalsandslots.qdoc b/doc/src/signalsandslots.qdoc
index 5432bd4..29c8215 100644
--- a/doc/src/signalsandslots.qdoc
+++ b/doc/src/signalsandslots.qdoc
@@ -178,9 +178,13 @@
looping in the case of cyclic connections (e.g., if
\c{b.valueChanged()} were connected to \c{a.setValue()}).
- A signal is emitted for every connection you make; if you
- duplicate a connection, two signals will be emitted. You can
- always break a connection using QObject::disconnect().
+ By default, for every connection you make, a signal is emitted;
+ two signals are emitted for duplicate connections. You can break
+ all of these connections with a single disconnect() call.
+ If you pass the Qt::UniqueConnection \a type, the connection will only
+ be made if it is not a duplicate. If there is already a duplicate
+ (exact same signal to the exact same slot on the same objects),
+ the connection will fail and connect will return false
This example illustrates that objects can work together without needing to
know any information about each other. To enable this, the objects only
@@ -218,8 +222,8 @@
will continue immediately, and the slots will be executed later.
If several slots are connected to one signal, the slots will be
- executed one after the other, in an arbitrary order, when the signal
- is emitted.
+ executed one after the other, in the order they have been connected,
+ when the signal is emitted.
Signals are automatically generated by the \l moc and must not be
implemented in the \c .cpp file. They can never have return types
diff --git a/doc/src/snippets/animation/sequential/icons.qrc b/doc/src/snippets/animation/sequential/icons.qrc
new file mode 100644
index 0000000..d55f797
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/icons.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+ <qresource>
+ <file>icons/left.png</file>
+ <file>icons/right.png</file>
+ </qresource>
+</RCC>
diff --git a/doc/src/snippets/animation/sequential/icons/left.png b/doc/src/snippets/animation/sequential/icons/left.png
new file mode 100644
index 0000000..5dd8da0
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/icons/left.png
Binary files differ
diff --git a/doc/src/snippets/animation/sequential/icons/right.png b/doc/src/snippets/animation/sequential/icons/right.png
new file mode 100644
index 0000000..ac61326
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/icons/right.png
Binary files differ
diff --git a/doc/src/snippets/animation/sequential/main.cpp b/doc/src/snippets/animation/sequential/main.cpp
new file mode 100644
index 0000000..aff8f29
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/main.cpp
@@ -0,0 +1,50 @@
+#include <QApplication>
+#include <QLabel>
+#include <QPropertyAnimation>
+#include <QSequentialAnimationGroup>
+#include "tracer.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ QWidget window;
+ window.resize(720, 96);
+ window.show();
+
+ QLabel *label1 = new QLabel(&window);
+ label1->setPixmap(QPixmap(":/icons/left.png"));
+ label1->move(16, 16);
+ label1->show();
+
+ QLabel *label2 = new QLabel(&window);
+ label2->setPixmap(QPixmap(":/icons/right.png"));
+ label2->move(320, 16);
+ label2->show();
+
+ QPropertyAnimation *anim1 = new QPropertyAnimation(label1, "pos");
+ anim1->setDuration(2500);
+ anim1->setStartValue(QPoint(16, 16));
+ anim1->setEndValue(QPoint(320, 16));
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(label2, "pos");
+ anim2->setDuration(2500);
+ anim2->setStartValue(QPoint(320, 16));
+ anim2->setEndValue(QPoint(640, 16));
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(anim1);
+ group.addAnimation(anim2);
+
+ Tracer tracer(&window);
+
+ QObject::connect(anim1, SIGNAL(valueChanged(QVariant)),
+ &tracer, SLOT(recordValue(QVariant)));
+ QObject::connect(anim2, SIGNAL(valueChanged(QVariant)),
+ &tracer, SLOT(recordValue(QVariant)));
+ QObject::connect(anim1, SIGNAL(finished()), &tracer, SLOT(checkValue()));
+ QObject::connect(anim2, SIGNAL(finished()), &tracer, SLOT(checkValue()));
+
+ group.start();
+ return app.exec();
+}
diff --git a/doc/src/snippets/animation/sequential/sequential.pro b/doc/src/snippets/animation/sequential/sequential.pro
new file mode 100644
index 0000000..fcf017f
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/sequential.pro
@@ -0,0 +1,4 @@
+HEADERS = tracer.h
+RESOURCES = icons.qrc
+SOURCES = main.cpp \
+ tracer.cpp
diff --git a/doc/src/snippets/animation/sequential/tracer.cpp b/doc/src/snippets/animation/sequential/tracer.cpp
new file mode 100644
index 0000000..49bd51e
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/tracer.cpp
@@ -0,0 +1,25 @@
+#include <QAbstractAnimation>
+#include <QDebug>
+#include <QPoint>
+#include "tracer.h"
+
+Tracer::Tracer(QObject *parent)
+ : QObject(parent)
+{
+}
+
+void Tracer::checkValue()
+{
+ QAbstractAnimation *animation = static_cast<QAbstractAnimation *>(sender());
+ if (time != animation->duration()) {
+ qDebug() << "Animation's last recorded time" << time;
+ qDebug() << "Expected" << animation->duration();
+ }
+}
+
+void Tracer::recordValue(const QVariant &value)
+{
+ QAbstractAnimation *animation = static_cast<QAbstractAnimation *>(sender());
+ this->value = value;
+ time = animation->currentTime();
+}
diff --git a/doc/src/snippets/animation/sequential/tracer.h b/doc/src/snippets/animation/sequential/tracer.h
new file mode 100644
index 0000000..1adb018
--- /dev/null
+++ b/doc/src/snippets/animation/sequential/tracer.h
@@ -0,0 +1,23 @@
+#ifndef TRACER_H
+#define TRACER_H
+
+#include <QObject>
+#include <QVariant>
+
+class Tracer : public QObject
+{
+ Q_OBJECT
+
+public:
+ Tracer(QObject *parent = 0);
+
+public slots:
+ void checkValue();
+ void recordValue(const QVariant &value);
+
+private:
+ QVariant value;
+ int time;
+};
+
+#endif
diff --git a/doc/src/snippets/code/doc_src_layout.qdoc b/doc/src/snippets/code/doc_src_layout.qdoc
index 48e10e9..60f36b0 100644
--- a/doc/src/snippets/code/doc_src_layout.qdoc
+++ b/doc/src/snippets/code/doc_src_layout.qdoc
@@ -2,23 +2,21 @@
#ifndef CARD_H
#define CARD_H
-#include <QLayout>
+#include <QtGui>
#include <QList>
class CardLayout : public QLayout
{
public:
- CardLayout(QWidget *parent, int dist)
- : QLayout(parent, 0, dist) {}
- CardLayout(QLayout *parent, int dist)
- : QLayout(parent, dist) {}
- CardLayout(int dist)
- : QLayout(dist) {}
+ CardLayout(QWidget *parent, int dist): QLayout(parent, 0, dist) {}
+ CardLayout(QLayout *parent, int dist): QLayout(parent, dist) {}
+ CardLayout(int dist): QLayout(dist) {}
~CardLayout();
void addItem(QLayoutItem *item);
QSize sizeHint() const;
QSize minimumSize() const;
+ QLayoutItem *count() const;
QLayoutItem *itemAt(int) const;
QLayoutItem *takeAt(int);
void setGeometry(const QRect &rect);
@@ -31,11 +29,18 @@ private:
//! [1]
-#include "card.h"
+//#include "card.h"
//! [1]
-
//! [2]
+QLayoutItem *CardLayout::count() const
+{
+ // QList::size() returns the number of QLayoutItems in the list
+ return list.size();
+}
+//! [2]
+
+//! [3]
QLayoutItem *CardLayout::itemAt(int idx) const
{
// QList::value() performs index checking, and returns 0 if we are
@@ -48,26 +53,28 @@ QLayoutItem *CardLayout::takeAt(int idx)
// QList::take does not do index checking
return idx >= 0 && idx < list.size() ? list.takeAt(idx) : 0;
}
-//! [2]
+//! [3]
-//! [3]
+//! [4]
void CardLayout::addItem(QLayoutItem *item)
{
list.append(item);
}
-//! [3]
+//! [4]
-//! [4]
+//! [5]
CardLayout::~CardLayout()
{
- deleteAllItems();
+ QLayoutItem *item;
+ while ((item = takeAt(0)))
+ delete item;
}
-//! [4]
+//! [5]
-//! [5]
+//! [6]
void CardLayout::setGeometry(const QRect &r)
{
QLayout::setGeometry(r);
@@ -85,10 +92,10 @@ void CardLayout::setGeometry(const QRect &r)
++i;
}
}
-//! [5]
+//! [6]
-//! [6]
+//! [7]
QSize CardLayout::sizeHint() const
{
QSize s(0,0);
@@ -116,4 +123,4 @@ QSize CardLayout::minimumSize() const
}
return s + n*QSize(spacing(), spacing());
}
-//! [6]
+//! [7]
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
index a57de9d..d9e38ed 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
@@ -6,7 +6,7 @@ public:
{
qreal penWidth = 1;
return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
- 20 + penWidth / 2, 20 + penWidth / 2);
+ 20 + penWidth, 20 + penWidth);
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
diff --git a/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp b/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
index c4b6353..2a04f64 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
@@ -13,7 +13,7 @@ painter->drawPixmap(0, 0, p);
//! [1]
QPixmap pm;
-if (!QPixmapCache::find("my_big_image", pm)) {
+if (!QPixmapCache::find("my_big_image", &pm)) {
pm.load("bigimage.png");
QPixmapCache::insert("my_big_image", pm);
}
diff --git a/doc/src/snippets/declarative/gradient.qml b/doc/src/snippets/declarative/gradient.qml
new file mode 100644
index 0000000..28018b8
--- /dev/null
+++ b/doc/src/snippets/declarative/gradient.qml
@@ -0,0 +1,8 @@
+Rect {
+ width: 100; height: 100
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "red" }
+ GradientStop { position: 0.33; color: "yellow" }
+ GradientStop { position: 1.0; color: "green" }
+ }
+}
diff --git a/doc/src/snippets/picture/picture.cpp b/doc/src/snippets/picture/picture.cpp
index 07cedbf..be171c6 100644
--- a/doc/src/snippets/picture/picture.cpp
+++ b/doc/src/snippets/picture/picture.cpp
@@ -66,7 +66,7 @@ int main()
QPicture picture;
picture.load("drawing.pic"); // load picture
QPainter painter;
- painter.begin(&myWidget); // paint in myWidget
+ painter.begin(&myImage); // paint in myImage
painter.drawPicture(0, 0, picture); // draw the picture at (0,0)
painter.end(); // painting done
//! [1]
diff --git a/doc/src/snippets/widgets-tutorial/template.cpp b/doc/src/snippets/widgets-tutorial/template.cpp
new file mode 100644
index 0000000..5958676
--- /dev/null
+++ b/doc/src/snippets/widgets-tutorial/template.cpp
@@ -0,0 +1,14 @@
+#include <QtGui>
+
+// Include header files for application components.
+// ...
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ // Set up and show widgets.
+ // ...
+
+ return app.exec();
+}
diff --git a/doc/src/stylesheet.qdoc b/doc/src/stylesheet.qdoc
index c0d13da..4060f33 100644
--- a/doc/src/stylesheet.qdoc
+++ b/doc/src/stylesheet.qdoc
@@ -332,7 +332,7 @@
respect to the reference element.
Once positioned, they are treated the same as widgets and can be styled
- using the the \l{box model}.
+ using the \l{box model}.
See the \l{List of Sub-Controls} below for a list of supported
sub-controls, and \l{Customizing the QPushButton's Menu Indicator
@@ -398,7 +398,7 @@
(usually) refers to a single object, not to all instances of a
class.
- Similarly, selectors with pseudo-states are more specific that
+ Similarly, selectors with pseudo-states are more specific than
ones that do not specify pseudo-states. Thus, the following style
sheet specifies that a \l{QPushButton} should have white text
when the mouse is hovering over it, otherwise red text:
@@ -653,7 +653,7 @@
\target sub controls
\section1 Sub-controls
- A widget is considered as a heirarchy (tree) of subcontrols drawn on top
+ A widget is considered as a hierarchy (tree) of subcontrols drawn on top
of each other. For example, the QComboBox draws the drop-down sub-control
followed by the down-arrow sub-control. A QComboBox is thus rendered as
follows:
@@ -671,7 +671,7 @@
\l{Qt Style Sheets Reference#subcontrol-origin-prop}{subcontrol-origin}
properties.
- Once positioned, sub-controls can be styled using the the \l{box model}.
+ Once positioned, sub-controls can be styled using the \l{box model}.
\note With complex widgets such as QComboBox and QScrollBar, if one
property or sub-control is customized, \bold{all} the other properties or
@@ -1154,7 +1154,7 @@
\l{#pane-sub}{::pane} subcontrol. The left and right
corners are styled using the \l{#left-corner-sub}{::left-corner}
and \l{#right-corner-sub}{::right-corner} respectively.
- The position of the the tab bar is controlled using the
+ The position of the tab bar is controlled using the
\l{#tab-bar-sub}{::tab-bar} subcontrol.
By default, the subcontrols have positions of a QTabWidget in
@@ -1254,7 +1254,7 @@
the \l{#menu-button-sub}{::menu-button} subcontrol is used to draw the
menu button. \l{#menu-arrow-sub}{::menu-arrow} subcontrol is used to
draw the menu arrow inside the menu-button. By default, it is
- positioned in the center of the Contents rectangle of the the
+ positioned in the center of the Contents rectangle of the
menu-button subcontrol.
When the QToolButton displays arrows, the \l{#up-arrow-sub}{::up-arrow},
@@ -1872,10 +1872,6 @@
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 54
- \note If you specify more than one parameter in \c font-family,
- e.g., \c{font-family: Verdana, Arial}, Qt will only use the first
- font. If it cannot be found, Qt uses the system fallbacks instead.
-
\row
\o \c font-size
\o \l{#Font Size}{Font Size}
diff --git a/doc/src/tech-preview/known-issues.html b/doc/src/tech-preview/known-issues.html
index 05df69e..885104e 100644
--- a/doc/src/tech-preview/known-issues.html
+++ b/doc/src/tech-preview/known-issues.html
@@ -16,7 +16,7 @@
<td align="right" valign="middle"></td></tr></table>
<h1>Known Issues: Qt 4.0.0 Technology Preview 1</h1>
<p>
- This is the list of known and reported issues for the the Qt 4.0.0
+ This is the list of known and reported issues for the Qt 4.0.0
Technology Preview 1. This list is updated daily.
</p>
<br><br>
diff --git a/doc/src/timers.qdoc b/doc/src/timers.qdoc
index 4f54343..1b48d7d 100644
--- a/doc/src/timers.qdoc
+++ b/doc/src/timers.qdoc
@@ -62,7 +62,7 @@
In multithreaded applications, you can use the timer mechanism in
any thread that has an event loop. To start an event loop from a
- non-GUI thread, use QThread::exec(). Qt uses the the object's
+ non-GUI thread, use QThread::exec(). Qt uses the object's
\l{QObject::thread()}{thread affinity} to determine which thread
will deliver the QTimerEvent. Because of this, you must start and
stop all timers in the object's thread; it is not possible to
@@ -105,7 +105,7 @@
In multithreaded applications, you can use QTimer in any thread
that has an event loop. To start an event loop from a non-GUI
- thread, use QThread::exec(). Qt uses the the timer's
+ thread, use QThread::exec(). Qt uses the timer's
\l{QObject::thread()}{thread affinity} to determine which thread
will emit the \l{QTimer::}{timeout()} signal. Because of this, you
must start and stop the timer in its thread; it is not possible to
diff --git a/doc/src/tools-list.qdoc b/doc/src/tools-list.qdoc
index 7af9936..caef268 100644
--- a/doc/src/tools-list.qdoc
+++ b/doc/src/tools-list.qdoc
@@ -58,12 +58,10 @@
\o Translate applications to reach international markets.
\row \o \l{qmake Manual}{qmake}
\o Create makefiles from simple platform-independent project files (\c .pro files).
- \omit
- \row \o \l{emb-qvfb.html}{qvfb}
+ \row \o \l{The Virtual Framebuffer}{qvfb}
\o Run and test embedded applications on the desktop.
- \row \o \l{emb-makeqpf.html}{makeqpf}
+ \row \o \l{makeqpf}
\o Create pre-rendered fonts for embedded devices.
- \endomit
\row \o \l{moc}{Meta-Object Compiler (moc)}
\o Generate meta-object information for QObject subclasses.
\row \o \l{User Interface Compiler (uic)}
diff --git a/doc/src/topics.qdoc b/doc/src/topics.qdoc
index 33bf21a..4cc6617 100644
--- a/doc/src/topics.qdoc
+++ b/doc/src/topics.qdoc
@@ -293,11 +293,9 @@ including ARM, Intel x86, MIPS and SH-4.
\o \l {Qt for Windows CE Requirements}
\o \l {Installing Qt on Windows CE}
\o \l {Windows CE - Introduction to using Qt}{Introduction to using Qt}
- \o \l {Qt Examples#Qt for Embedded Linux}{Examples}
\endlist
\o
\list
- \o \l {Qt for Embedded Linux Classes}{Classes}
\o \l {Windows CE - Using shadow builds}{Using shadow builds}
\o \l {Windows CE - Working with Custom SDKs}{Working with Custom SDKs}
\endlist
diff --git a/doc/src/tutorials/addressbook-fr.qdoc b/doc/src/tutorials/addressbook-fr.qdoc
index 2847f1b..512a404 100644
--- a/doc/src/tutorials/addressbook-fr.qdoc
+++ b/doc/src/tutorials/addressbook-fr.qdoc
@@ -239,13 +239,16 @@
\snippet tutorials/addressbook/part1/main.cpp main function
- On construit un nouveau widget \c AddressBook sur le tas en utilisant le mot-clé
- \c new et en invoquant sa méthode \l{QWidget::show()}{show()} pour l'afficher.
+ On construit un nouveau widget \c AddressBook sur la pile et on invoque
+ sa méthode \l{QWidget::show()}{show()} pour l'afficher.
Cependant, le widget ne sera pas visible tant que la boucle d'évènements
n'aura pas été lancée. On démarre la boucle d'évènements en appelant la
méthode \l{QApplication::}{exec()} de l'application; le résultat renvoyé
par cette méthode est lui même utilisé comme valeur de retour pour la méthode
\c main().
+ On comprend maintenant pourquoi \c AddressBook a été créé sur la pile: à la fin
+ du programme, l'objet sort du scope de la fonction \c main() et tous ses widgets enfants
+ sont supprimés, assurant ainsi qu'il n'y aura pas de fuites de mémoire.
*/
/*!
diff --git a/doc/src/tutorials/addressbook.qdoc b/doc/src/tutorials/addressbook.qdoc
index 3b0d2bc..465eb91 100644
--- a/doc/src/tutorials/addressbook.qdoc
+++ b/doc/src/tutorials/addressbook.qdoc
@@ -242,12 +242,15 @@
\snippet tutorials/addressbook/part1/main.cpp main function
- We construct a new \c AddressBook widget on the heap using the \c new
- keyword and invoke its \l{QWidget::show()}{show()} function to display it.
+ We construct a new \c AddressBook widget on the stack and invoke
+ its \l{QWidget::show()}{show()} function to display it.
However, the widget will not be shown until the application's event loop
is started. We start the event loop by calling the application's
\l{QApplication::}{exec()} function; the result returned by this function
- is used as the return value from the \c main() function.
+ is used as the return value from the \c main() function. At this point,
+ it becomes apparent why we instanciated \c AddressBook on the stack: It
+ will now go out of scope. Therefore, \c AddressBook and all its child widgets
+ will be deleted, thus preventing memory leaks.
*/
/*!
@@ -296,14 +299,14 @@
We also declare two private QString objects, \c oldName and \c oldAddress.
These objects are needed to hold the name and address of the contact that
- was last displayed, before the user clicked "Add". So, when the user clicks
- "Cancel", we can revert to displaying the details of the last contact.
+ was last displayed, before the user clicked \gui Add. So, when the user clicks
+ \gui Cancel, we can revert to displaying the details of the last contact.
\section1 Implementing the AddressBook Class
Within the constructor of \c AddressBook, we set the \c nameLine and
\c addressText to read-only, so that we can only display but not edit
- existing cotact details.
+ existing contact details.
\dots
\snippet tutorials/addressbook/part2/addressbook.cpp setting readonly 1
@@ -318,7 +321,7 @@
The \c addButton is displayed by invoking the \l{QPushButton::show()}
{show()} function, while the \c submitButton and \c cancelButton are
hidden by invoking \l{QPushButton::hide()}{hide()}. These two push
- buttons will only be displayed when the user clicks "Add" and this is
+ buttons will only be displayed when the user clicks \gui Add and this is
handled by the \c addContact() function discussed below.
\snippet tutorials/addressbook/part2/addressbook.cpp connecting signals and slots
@@ -362,7 +365,7 @@
\list 1
\o We extract the contact's details from \c nameLine and \c addressText
and store them in QString objects. We also validate to make sure that the
- user did not click "Submit" with empty input fields; otherwise, a
+ user did not click \gui Submit with empty input fields; otherwise, a
QMessageBox is displayed to remind the user for a name and address.
\snippet tutorials/addressbook/part2/addressbook.cpp submitContact part1
@@ -374,8 +377,8 @@
\snippet tutorials/addressbook/part2/addressbook.cpp submitContact part2
If the contact already exists, again, we display a QMessageBox to inform
- the user about this, to prevent the user from adding duplicate contacts.
- Our \c contacts object is based on key-value pairs of name and addresses,
+ the user about this, preventing the user from adding duplicate contacts.
+ Our \c contacts object is based on key-value pairs of name and address,
hence, we want to ensure that \e key is unique.
\o Once we have handled both cases mentioned above, we restore the push
@@ -396,9 +399,9 @@
\snippet tutorials/addressbook/part2/addressbook.cpp cancel
- The general idea to add a contact is to give the user the flexibility to
- click "Submit" or "Cancel" at any time. The flowchart below further
- explains this concept:
+ The general idea behind adding a contact is to give the user the
+ flexibility to click \gui Submit or \gui Cancel at any time. The flowchart below
+ further explains this concept:
\image addressbook-tutorial-part2-add-flowchart.png
*/
@@ -454,7 +457,7 @@
\snippet tutorials/addressbook/part3/addressbook.cpp connecting navigation signals
The image below is our expected graphical user interface. Notice that it
- is getting closer to our expected final output.
+ is getting closer to our final application.
\image addressbook-tutorial-part3-screenshot.png
@@ -510,7 +513,7 @@
\list
\o If the iterator is at the end of \c contacts, we clear the
display and return.
- \o If the iterator is the beginning of \c contacts, we move it to
+ \o If the iterator is at the beginning of \c contacts, we move it to
the end.
\o We then decrement the iterator by one.
\endlist
@@ -529,7 +532,7 @@
\example tutorials/addressbook/part4
\title Address Book 4 - Editing and Removing Addresses
- In this chapter, we look at ways to modify the contents of contact stored
+ In this chapter, we look at ways to modify the contents of contacts stored
in the address book application.
\image addressbook-tutorial-screenshot.png
@@ -539,7 +542,7 @@
edit and remove functions so that a contact's details can be changed
when needed. However, this requires a little improvement, in the form of
enums. In our previous chapters, we had two modes: \c{AddingMode} and
- \c{NavigationMode} - but they weren't defined as enums. Instead, we
+ \c{NavigationMode} - but they were not defined as enums. Instead, we
enabled and disabled the corresponding buttons manually, resulting in
multiple lines of repeated code.
@@ -573,8 +576,7 @@
\dots
\snippet tutorials/addressbook/part4/addressbook.h mode declaration
- Lastly, we declare \c currentMode to keep track of the current mode of the
- enum.
+ Lastly, we declare \c currentMode to keep track of the enum's current mode.
\section1 Implementing the AddressBook Class
diff --git a/doc/src/tutorials/declarative.qdoc b/doc/src/tutorials/declarative.qdoc
index 75d0c06..3fad672 100644
--- a/doc/src/tutorials/declarative.qdoc
+++ b/doc/src/tutorials/declarative.qdoc
@@ -381,10 +381,7 @@
\list
\o Any imported directories. These are listed at the start of the file using
\c { import "path" }.
- \o The run directory
- \o The run directory + "/qml"
\o the directory of the QML code file
- \o the directory of the QML code file + "/qml"
\endlist
All the properties of the button are
diff --git a/doc/src/tutorials/widgets-tutorial.qdoc b/doc/src/tutorials/widgets-tutorial.qdoc
index ead44af..1e89431 100644
--- a/doc/src/tutorials/widgets-tutorial.qdoc
+++ b/doc/src/tutorials/widgets-tutorial.qdoc
@@ -41,11 +41,14 @@
/*!
\page widgets-tutorial.html
+ \startpage {index.html}{Qt Reference Documentation}
+ \nextpage {tutorials/widgets/toplevel}{Creating a Window}
\title Widgets Tutorial
\ingroup tutorials
- \brief This tutorial covers basic usage of widgets and layouts, showing how they are used to build GUI applications.
+ \brief This tutorial covers basic usage of widgets and layouts, showing how
+ they are used to build GUI applications.
\section1 Introduction
@@ -68,7 +71,60 @@
occupied by its parent. This means that, when a window is deleted, all
the widgets it contains are automatically deleted.
- \section1 Creating a Window
+ \section1 Writing a main Function
+
+ Many of the GUI examples in Qt follow the pattern of having a \c{main.cpp}
+ file containing code to initialize the application, and a number of other
+ source and header files containing the application logic and custom GUI
+ components.
+
+ A typical \c main() function, written in \c{main.cpp}, looks like this:
+
+ \quotefile doc/src/snippets/widgets-tutorial/template.cpp
+
+ We first construct a QApplication object which is configured using any
+ arguments passed in from the command line. After any widgets have been
+ created and shown, we call QApplication::exec() to start Qt's event loop.
+ Control passes to Qt until this function returns, at which point we return
+ the value we obtain from this function.
+
+ In each part of this tutorial, we provide an example that is written
+ entirely within a \c main() function. In more sophisticated examples, the
+ code to set up widgets and layouts is written in other parts of the
+ example. For example, the GUI for a main window may be set up in the
+ constructor of a QMainWindow subclass.
+
+ The \l{Qt Examples#Widgets}{Widgets examples} are a good place to look for
+ more complex and complete examples and applications.
+
+ \section1 Building Examples and Tutorials
+
+ If you obtained a binary package of Qt or compiled it yourself, the
+ examples described in this tutorial should already be ready to run.
+ However, if you may wish to modify them and recompile them, you need to
+ perform the following steps:
+
+ \list 1
+ \o At the command line, enter the directory containing the example you
+ wish to recompile.
+ \o Type \c qmake and press \key{Return}. If this doesn't work, make sure
+ that the executable is on your path, or enter its full location.
+ \o On Linux/Unix and Mac OS X, type \c make and press \key{Return};
+ on Windows with Visual Studio, type \c nmake and press \key{Return}.
+ \endlist
+
+ An executable file should have been created within the current directory.
+ On Windows, this file may be located within a \c debug or \c release
+ subdirectory. You can run this file to see the example code at work.
+*/
+
+/*!
+ \page widgets-tutorial-toplevel.html
+ \contentspage {Widgets Tutorial}{Contents}
+ \previouspage {Widgets Tutorial}
+ \nextpage {Widgets Tutorial - Child Widgets}
+ \example tutorials/widgets/toplevel
+ \title Widgets Tutorial - Creating a Window
If a widget is created without a parent, it is treated as a window, or
\e{top-level widget}, when it is shown. Since it has no parent object to
@@ -82,7 +138,7 @@
<table align="left" width="100%">
<tr class="qt-code"><td>
\endraw
- \snippet snippets/widgets-tutorial/toplevel/main.cpp create, resize and show
+ \snippet tutorials/widgets/toplevel/main.cpp main program
\raw HTML
</td><td align="right">
\endraw
@@ -92,15 +148,28 @@
</table>
\endraw
- We can add a child widget to this window by passing \c window as the
- parent to its constructor. In this case, we add a button to the window
- and place it in a specific location:
+ To create a real GUI, we need to place widgets inside the window. To do
+ this, we pass a QWidget instance to a widget's constructor, as we will
+ demonstrate in the next part of this tutorial.
+*/
+
+/*!
+ \page widgets-tutorial-childwidget.html
+ \contentspage {Widgets Tutorial}{Contents}
+ \previouspage {Widgets Tutorial - Creating a Window}
+ \nextpage {Widgets Tutorial - Using Layouts}
+ \example tutorials/widgets/childwidget
+ \title Widgets Tutorial - Child Widgets
+
+ We can add a child widget to the window created in the previous example by
+ passing \c window as the parent to its constructor. In this case, we add a
+ button to the window and place it in a specific location:
\raw HTML
<table align="left" width="100%">
<tr class="qt-code"><td>
\endraw
- \snippet snippets/widgets-tutorial/childwidget/main.cpp create, position and show
+ \snippet tutorials/widgets/childwidget/main.cpp main program
\raw HTML
</td><td align="right">
\endraw
@@ -112,9 +181,16 @@
The button is now a child of the window and will be deleted when the
window is destroyed. Note that hiding or closing the window does not
- automatically destroy it.
+ automatically destroy it. It will be destroyed when the example exits.
+*/
- \section1 Using Layouts
+/*!
+ \page widgets-tutorial-windowlayout.html
+ \contentspage {Widgets Tutorial}{Contents}
+ \previouspage {Widgets Tutorial - Child Widgets}
+ \nextpage {Widgets Tutorial - Nested Layouts}
+ \example tutorials/widgets/windowlayout
+ \title Widgets Tutorial - Using Layouts
Usually, child widgets are arranged inside a window using layout objects
rather than by specifying positions and sizes explicitly. Here, we
@@ -125,7 +201,7 @@
<table align="left" width="100%">
<tr class="qt-code"><td>
\endraw
- \snippet snippets/widgets-tutorial/windowlayout/main.cpp create, lay out widgets and show
+ \snippet tutorials/widgets/windowlayout/main.cpp main program
\raw HTML
</td><td align="right">
\endraw
@@ -149,17 +225,31 @@
manage the label and line edit and set the layout on the window, both the
widgets and the layout itself are ''reparented'' to become children of
the window.
+*/
+
+/*!
+ \page widgets-tutorial-nestedlayouts.html
+ \contentspage {Widgets Tutorial}{Contents}
+ \previouspage {Widgets Tutorial - Using Layouts}
+ \example tutorials/widgets/nestedlayouts
+ \title Widgets Tutorial - Nested Layouts
Just as widgets can contain other widgets, layouts can be used to provide
different levels of grouping for widgets. Here, we want to display a
label alongside a line edit at the top of a window, above a table view
showing the results of a query.
+ We achieve this by creating two layouts: \c{queryLayout} is a QHBoxLayout
+ that contains QLabel and QLineEdit widgets placed side-by-side;
+ \c{mainLayout} is a QVBoxLayout that contains \c{queryLayout} and a
+ QTableView arranged vertically.
+
\raw HTML
<table align="left" width="100%">
<tr class="qt-code"><td>
\endraw
- \snippet snippets/widgets-tutorial/nestedlayouts/main.cpp create, lay out widgets and show
+ \snippet tutorials/widgets/nestedlayouts/main.cpp first part
+ \snippet tutorials/widgets/nestedlayouts/main.cpp last part
\raw HTML
</td><td align="right">
\endraw
@@ -169,6 +259,26 @@
</table>
\endraw
+ Note that we call the \c{mainLayout}'s \l{QBoxLayout::}{addLayout()}
+ function to insert the \c{queryLayout} above the \c{resultView} table.
+
+ We have omitted the code that sets up the model containing the data shown
+ by the QTableView widget, \c resultView. For completeness, we show this below.
+
As well as QHBoxLayout and QVBoxLayout, Qt also provides QGridLayout
and QFormLayout classes to help with more complex user interfaces.
+ These can be seen if you run \l{Qt Designer}.
+
+ \section1 Setting up the Model
+
+ In the code above, we did not show where the table's data came from
+ because we wanted to concentrate on the use of layouts. Here, we see
+ that the model holds a number of items corresponding to rows, each of
+ which is set up to contain data for two columns.
+
+ \snippet tutorials/widgets/nestedlayouts/main.cpp set up the model
+
+ The use of models and views is covered in the
+ \l{Qt Examples#Item Views}{item view examples} and in the
+ \l{Model/View Programming} overview.
*/
diff --git a/doc/src/xquery-introduction.qdoc b/doc/src/xquery-introduction.qdoc
index 37a45ac..fe541e2 100644
--- a/doc/src/xquery-introduction.qdoc
+++ b/doc/src/xquery-introduction.qdoc
@@ -347,7 +347,7 @@ has a more detailed section on the shorthand form, which it calls the
\l{http://www.w3.org/TR/xquery/#abbrev} {abbreviated syntax}. More
examples of path expressions written in the shorthand form are found
there. There is also a section listing examples of path expressions
-written in the the \l{http://www.w3.org/TR/xquery/#unabbrev} {longhand
+written in the \l{http://www.w3.org/TR/xquery/#unabbrev} {longhand
form}.
\target Name Tests