summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/development/qmake-manual.qdoc3
-rw-r--r--doc/src/development/qtestlib.qdoc2
-rw-r--r--doc/src/examples/basicgraphicslayouts.qdoc8
-rw-r--r--doc/src/examples/concentriccircles.qdoc2
-rw-r--r--doc/src/examples/drilldown.qdoc2
-rw-r--r--doc/src/examples/elasticnodes.qdoc14
-rw-r--r--doc/src/examples/fancybrowser.qdoc4
-rw-r--r--doc/src/getting-started/installation.qdoc287
-rwxr-xr-xdoc/src/images/modelview-header.png (renamed from doc/src/images/header.png)bin30302 -> 30302 bytes
-rw-r--r--doc/src/porting/porting4.qdoc2
-rw-r--r--doc/src/qt4-intro.qdoc4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp2
-rw-r--r--doc/src/snippets/qabstractsliderisnippet.cpp2
-rw-r--r--doc/src/tutorials/modelview.qdoc2
-rw-r--r--src/corelib/global/qnamespace.qdoc7
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp6
-rw-r--r--tools/qdoc3/config.h1
-rw-r--r--tools/qdoc3/cppcodemarker.cpp32
-rw-r--r--tools/qdoc3/doc.cpp17
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdoc21
-rw-r--r--tools/qdoc3/generator.cpp16
-rw-r--r--tools/qdoc3/generator.h2
-rw-r--r--tools/qdoc3/helpprojectwriter.cpp32
-rw-r--r--tools/qdoc3/htmlgenerator.cpp147
-rw-r--r--tools/qdoc3/htmlgenerator.h1
-rw-r--r--tools/qdoc3/node.cpp2
-rw-r--r--tools/qdoc3/pagegenerator.cpp8
-rw-r--r--tools/qdoc3/tree.cpp162
28 files changed, 578 insertions, 210 deletions
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index c33e777..9a46ea8 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -555,7 +555,8 @@
\c qmake output will be a Makefile.
\o \c -project \BR
\c qmake output will be a project file. \BR
-\bold{Note:} It is likely that the created file will need to be edited for example adding the \c QT variable to suit what modules are required for the project.
+ \bold{Note:} It is likely that the created file will need to be edited; for example,
+ adding the \c QT variable to suit what modules are required for the project.
\endlist
The following \c options are used to specify both general and mode-specific
diff --git a/doc/src/development/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
index 34429ae..8924bdb 100644
--- a/doc/src/development/qtestlib.qdoc
+++ b/doc/src/development/qtestlib.qdoc
@@ -130,7 +130,7 @@
\snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 1
- If you are using other buildtools, make sure that you add the location
+ If you are using other build tools, make sure that you add the location
of the QTestLib header files to your include path (usually \c{include/QtTest}
under your Qt installation directory). If you are using a release build
of Qt, link your test to the \c QtTest library. For debug builds, use
diff --git a/doc/src/examples/basicgraphicslayouts.qdoc b/doc/src/examples/basicgraphicslayouts.qdoc
index 11b99f3..0110e29 100644
--- a/doc/src/examples/basicgraphicslayouts.qdoc
+++ b/doc/src/examples/basicgraphicslayouts.qdoc
@@ -133,19 +133,19 @@
\snippet examples/graphicsview/basicgraphicslayouts/layoutitem.cpp 2
- The reimplementation of {QGraphicsItem::boundingRect()}{boundingRect()}
+ The reimplementation of \l{QGraphicsItem::}{boundingRect()}
will set the top left corner at (0,0), and the size of it will be
the size of the layout items
- {QGraphicsLayoutItem::geometry()}{geometry()}. This is the area that
+ \l{QGraphicsLayoutItem::}{geometry()}. This is the area that
we paint within.
\snippet examples/graphicsview/basicgraphicslayouts/layoutitem.cpp 3
- The reimplementation of {QGraphicsLayoutItem::setGeometry()}{setGeometry()}
+ The reimplementation of \l{QGraphicsLayoutItem::setGeometry()}{setGeometry()}
simply calls its baseclass implementation. However, since this will change
the boundingRect we must also call
- {QGraphicsItem::prepareGeometryChange()}{prepareGeometryChange()}.
+ \l{QGraphicsItem::prepareGeometryChange()}{prepareGeometryChange()}.
Finally, we move the item according to \c geom.topLeft().
\snippet examples/graphicsview/basicgraphicslayouts/layoutitem.cpp 4
diff --git a/doc/src/examples/concentriccircles.qdoc b/doc/src/examples/concentriccircles.qdoc
index dc17871..315469b 100644
--- a/doc/src/examples/concentriccircles.qdoc
+++ b/doc/src/examples/concentriccircles.qdoc
@@ -192,7 +192,7 @@
\snippet examples/painting/concentriccircles/window.h 0
- We declare the various components of the main window, i.e the text
+ We declare the various components of the main window, i.e., the text
labels and a double array that will hold reference to the four \c
{CircleWidget}s. In addition we declare the private \c
createLabel() function to simplify the constructor.
diff --git a/doc/src/examples/drilldown.qdoc b/doc/src/examples/drilldown.qdoc
index bc45db3..8739270 100644
--- a/doc/src/examples/drilldown.qdoc
+++ b/doc/src/examples/drilldown.qdoc
@@ -444,7 +444,7 @@
Finally, we store the location ID that this particular record is
associated with as well as a z-value. In the \l {Graphics View
Framework}, an item's z-value determines its position in the item
- stack. An item of high Z-value will be drawn on top of an item
+ stack. An item of high z-value will be drawn on top of an item
with a lower z-value if they share the same parent item. We also
provide an \c updateItemPosition() function to refresh the view
when required.
diff --git a/doc/src/examples/elasticnodes.qdoc b/doc/src/examples/elasticnodes.qdoc
index d6676e8..bba6d90 100644
--- a/doc/src/examples/elasticnodes.qdoc
+++ b/doc/src/examples/elasticnodes.qdoc
@@ -77,12 +77,12 @@
function is called to calculate the forces that push and pull on this node
and its neighbors.
- The \c Node class also reimplements
- \l{QGraphicsItem::itemChange()}{itemChange()} to react to state changes (in
- this case, position changes), and
- \l{QGraphicsItem::mousePressEvent()}{mousePressEvent()} and
- \l{QGraphicsItem::mouseReleaseEvent()}{mouseReleaseEvent()} to update the
- item's visual appearance.
+ The \c Node class also reimplements
+ \l{QGraphicsItem::itemChange()}{itemChange()} to react to state changes (in
+ this case, position changes), and
+ \l{QGraphicsItem::mousePressEvent()}{mousePressEvent()} and
+ \l{QGraphicsItem::mouseReleaseEvent()}{mouseReleaseEvent()} to update the
+ item's visual appearance.
We will start reviewing the \c Node implementation by looking at its
constructor:
@@ -242,7 +242,7 @@
The \c adjust() function repositions the edge, and the item also implements
\l{QGraphicsItem::boundingRect()}{boundingRect()} and
- \{QGraphicsItem::paint()}{paint()}.
+ \l{QGraphicsItem::paint()}{paint()}.
We will now review its implementation.
diff --git a/doc/src/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc
index 4121904..b46903d 100644
--- a/doc/src/examples/fancybrowser.qdoc
+++ b/doc/src/examples/fancybrowser.qdoc
@@ -118,7 +118,7 @@
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
@@ -127,7 +127,7 @@
\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
+ 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
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index d39bb39..c906f84 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -1298,3 +1298,290 @@ We hope you will enjoy using Qt.
\sa {Known Issues}
*/
+
+/*!
+ \page configure-options.html
+ \title Configure options for Qt
+ \ingroup installation
+ \brief Brief description of available options building Qt.
+
+ This page gives a brief description of the different options
+ available when building Qt using configure. To build Qt using
+ default options, just call configure from the command line like
+ showed below. If you would like to customize your build, please
+ use the options listed in the following tables.
+
+ \c {.\configure.exe}
+
+ \section2 Cross platform options:
+
+ \table
+ \header \o Option \o Description \o Note
+ \row \o \c {-buildkey } <key> \o Build the Qt library and plugins
+ using the specified \o
+ \row \o \c {<key>} \o When the library loads plugins, it will only
+ load those that have a matching <key>. \o
+ \row \o \c {-release } \o Compile and link Qt with debugging turned off. \o
+ \row \o \c {-debug } \o Compile and link Qt with debugging turned on.
+ \o Defualt value.
+ \row \o \c {-debug-and-release} \o Compile and link two Qt libraries,
+ with and without debugging turned on. \o This option denotes a default
+ value and needs to be evaluated. If the evaluation succeeds, the
+ feature is included.
+ \row \o \c {-opensource} \o Compile and link the Open-Source Edition
+ of Qt. \o
+ \row \o \c {-commercial } \o Compile and link the Commercial Edition
+ of Qt. \o
+ \row \o \c {-developer-build} \o Compile and link Qt with Qt developer
+ options including auto-tests exporting) \o
+ \row \o \c {-shared} \o Create and use shared Qt libraries. \o Defualt
+ value.
+ \row \o \c {-static} \o Create and use static Qt libraries. \o
+ \row \o \c {-ltcg} \o Use Link Time Code Generation. \o Apply to release
+ builds only.
+ \row \o \c {-no-ltcg} \o Do not use Link Time Code Generation. \o Defualt
+ value.
+ \row \o \c {-no-fast} \o Configure Qt normally by generating Makefiles for
+ all project files. \o Defualt value.
+ \row \o \c {-fast} \o Configure Qt quickly by generating Makefiles only for
+ library and subdirectory targets. \o All other Makefiles are created as
+ wrappers which will in turn run qmake.
+ \row \o \c {-no-exceptions} \o Disable exceptions on platforms that support
+ it. \o
+ \row \o \c {-exceptions} \o Enable exceptions on platforms that support it.
+ \o Defualt value.
+ \row \o \c {-no-accessibility} \o Do not compile Windows Active
+ Accessibility support. \o
+ \row \o \c {-accessibility} \o Compile Windows Active Accessibility
+ support. \o Defualt value.
+ \row \o \c {-no-stl} \o Do not compile STL support. \o
+ \row \o \c {-stl} \o Compile STL support. \o Defualt value.
+ \row \o \c {-no-sql-<driver>} \o Disable SQL <driver> entirely, by default
+ none are turned on. \o
+ \row \o \c {-qt-sql-<driver>} \o Enable a SQL <driver> in the Qt Library.
+ \o
+ \row \o \c {-plugin-sql-<driver>} \o Enable SQL <driver> as a plugin to be
+ linked to at run time. \o Available values for <driver>: mysql, psql,
+ oci, odbc, tds, db2, sqlite, sqlite2, ibase. Drivers marked with a
+ '+' during configure have been detected as available on this system.
+ \row \o \c {-system-sqlite} \o Use sqlite from the operating system. \o
+ \row \o \c {-no-qt3support} \o Disables the Qt 3 support functionality. \o
+ \row \o \c {-no-opengl} \o Disables OpenGL functionality \o
+ \row \o \c {-opengl <api>} \o Enable OpenGL support with specified API
+ version. \o Available values for <api>: desktop - Enable support for
+ Desktop OpenGL (Default), es1 - Enable support for OpenGL ES Common
+ Profile, es2 - Enable support for OpenGL ES 2.0.
+ \row \o \c {-no-openvg} \o Disables OpenVG functionality \o Defualt value.
+ \row \o \c {-openvg} \o Enables OpenVG functionality \o Requires EGL
+ support, typically supplied by an OpenGL or other graphics
+ implementation.
+ \row \o \c {-platform <spec> } \o The operating system and compiler you
+ are building on. \o The default value is %QMAKESPEC%.
+ \row \o \c {-xplatform <spec> } \o The operating system and compiler you
+ are cross compiling to. \o See the README file for a list of supported
+ operating systems and compilers.
+ \row \o \c {-qtnamespace <namespace>} \o Wraps all Qt library code in
+ 'namespace name {..} \o
+ \row \o \c {-qtlibinfix <infix>} \o Renames all Qt* libs to Qt*<infix>
+ \o
+ \row \o \c {-D <define>} \o Add an explicit define to the preprocessor.
+ \o
+ \row \o \c {-I <includepath>} \o Add an explicit include path. \o
+ \row \o \c {-L <librarypath>} \o Add an explicit library path. \o
+ \row \o \c {-l <libraryname>} \o Add an explicit library name, residing
+ in a librarypath. \o
+ \row \o \c {-graphicssystem <sys>} \o Specify which graphicssystem should
+ be used. \o Available values for <sys>: * raster - Software rasterizer,
+ opengl - Using OpenGL acceleration, experimental!, openvg - Using
+ OpenVG acceleration, experimental!
+ \row \o \c {-help, -h, -?} \o Display this information. \o
+ \endtable
+
+ \section2 Third Party Libraries:
+ \table
+ \header \o Option \o Description \o Note
+ \row \o \c {-qt-zlib} \o Use the zlib bundled with Qt. \o
+ \row \o \c {-system-zlib} \o Use zlib from the operating system.
+ \o See http://www.gzip.org/zlib
+ \row \o \c {-no-gif} \o Do not compile GIF reading support.
+ \o This option denotes a default value and needs to be evaluated.
+ If the evaluation succeeds, the feature is included.
+ \row \o \c {-qt-gif} \o Compile GIF reading support. \o See also
+ src/gui/image/qgifhandler_p.h
+ \row \o \c {-no-libpng} \o Do not compile PNG support. \o
+ \row \o \c {-qt-libpng} \o Use the libpng bundled with Qt.
+ \o This option denotes a default value and needs to be evaluated.
+ If the evaluation succeeds, the feature is included.
+ \row \o \c {-system-libpng} \o Use libpng from the operating system.
+ \o See http://www.libpng.org/pub/png
+ \row \o \c {-no-libmng} \o Do not compile MNG support. \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-qt-libmng} \o Use the libmng bundled with Qt. \o
+ \row \o \c {-system-libmng} \o Use libmng from the operating system.
+ \o See See http://www.libmng.com
+ \row \o \c {-no-libtiff} \o Do not compile TIFF support. \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-qt-libtiff} \o Use the libtiff bundled with Qt. \o
+ \row \o \c {-system-libtiff} \o Use libtiff from the operating system.
+ \o See http://www.libtiff.org
+ \row \o \c {-no-libjpeg} \o Do not compile JPEG support. \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-qt-libjpeg} \o Use the libjpeg bundled with Qt. \o
+ \row \o \c {-system-libjpeg} \o Use libjpeg from the operating system.
+ \o See http://www.ijg.org. This option denotes a default value and
+ needs to be evaluated. If the evaluation succeeds, the feature is
+ included.
+ \endtable
+
+ \section2 Qt for Windows only:
+ \table
+ \header \o Option \o Description \o Note
+ \row \o \c {-no-dsp} \o Do not generate VC++ .dsp files. \o
+ \row \o \c {-dsp} \o Generate VC++ .dsp files, only if spec "win32-msvc".
+ \o Defualt value.
+ \row \o \c {-no-vcproj} \o Do not generate VC++ .vcproj files. \o
+ \row \o \c {-vcproj} \o Generate VC++ .vcproj files, only if platform
+ "win32-msvc.net". \o Defualt value.
+ \row \o \c {-no-incredibuild-xge} \o Do not add IncrediBuild XGE distribution
+ commands to custom build steps. \o
+ \row \o \c {-incredibuild-xge} \o Add IncrediBuild XGE distribution commands
+ to custom build steps. This will distribute MOC and UIC steps, and other
+ custom buildsteps which are added to the INCREDIBUILD_XGE variable.
+ \o The IncrediBuild distribution commands are only added to Visual Studio
+ projects. This option denotes a default value and needs to be evaluated.
+ If the evaluation succeeds, the feature is included.
+ \row \o \c {-no-plugin-manifests} \o Do not embed manifests in plugins. \o
+ \row \o \c {-plugin-manifests} \o Embed manifests in plugins.
+ \o Defualt value.
+ \row \o \c {-no-qmake} \o Do not compile qmake. \o
+ \row \o \c {-qmake} \o Compile qmake. \o Defualt value
+ \row \o \c {-dont-process} \o Do not generate Makefiles/Project files. This
+ will override -no-fast if specified. \o
+ \row \o \c {-process} \o Generate Makefiles/Project files. \o Defualt value.
+ \row \o \c {-no-rtti} \o Do not compile runtime type information. \o
+ \row \o \c {-rtti} \o Compile runtime type information. \o Defualt value.
+ \row \o \c {-no-mmx} \o Do not compile with use of MMX instructions \o
+ \row \o \c {-mmx} \o Compile with use of MMX instructions \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-no-3dnow} \o Do not compile with use of 3DNOW instructions \o
+ \row \o \c {-3dnow} \o Compile with use of 3DNOW instructions \o This
+ option denotes a default value and needs to be evaluated. If the
+ evaluation succeeds, the feature is included.
+ \row \o \c {-no-sse} \o Do not compile with use of SSE instructions \o
+ \row \o \c {-sse} \o Compile with use of SSE instructions \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-no-sse2} \o Do not compile with use of SSE2 instructions \o
+ \row \o \c {-sse2} \o Compile with use of SSE2 instructions \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-no-openssl} \o Do not compile in OpenSSL support \o
+ \row \o \c {-openssl} \o Compile in run-time OpenSSL support \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-openssl-linked} \o Compile in linked OpenSSL support \o
+ \row \o \c {-no-dbus} \o Do not compile in D-Bus support \o
+ \row \o \c {-dbus} \o Compile in D-Bus support and load libdbus-1 dynamically.
+ \o This option denotes a default value and needs to be evaluated.
+ If the evaluation succeeds, the feature is included.
+ \row \o \c {-dbus-linked} \o Compile in D-Bus support and link to
+ libdbus-1 \o
+ \row \o \c {-no-phonon} \o Do not compile in the Phonon module \o
+ \row \o \c {-phonon} \o Compile the Phonon module. \o Phonon is built if a
+ decent C++ compiler is used. This option denotes a default value and needs
+ to be evaluated. If the evaluation succeeds, the feature is included.
+ \row \o \c {-no-phonon-backend} \o Do not compile the platform-specific
+ Phonon backend-plugin \o
+ \row \o \c {-phonon-backend} \o Compile in the platform-specific Phonon
+ backend-plugin \o Defualt value.
+ \row \o \c {-no-multimedia} \o Do not compile the multimedia module \o
+ \row \o \c {-multimedia} \o Compile in multimedia module \o Defualt value.
+ \row \o \c {-no-audio-backend} \o Do not compile in the platform audio
+ backend into QtMultimedia \o
+ \row \o \c {-audio-backend} \o Compile in the platform audio backend into
+ QtMultimedia \o This option denotes a default value and needs to be
+ evaluated. If the evaluation succeeds, the feature is included.
+ \row \o \c {-no-webkit} \o Do not compile in the WebKit module \o
+ \row \o \c {-webkit} \o Compile in the WebKit module \o WebKit is built
+ if a decent C++ compiler is used. This option denotes a default value
+ and needs to be evaluated. If the evaluation succeeds, the feature is
+ included.
+ \row \o \c {-webkit-debug} \o Compile in the WebKit module with debug
+ symbols. \o
+ \row \o \c {-no-script} \o Do not build the QtScript module. \o
+ \row \o \c {-script} \o Build the QtScript module. \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-no-scripttools} \o Do not build the QtScriptTools module. \o
+ \row \o \c {-scripttools} \o Build the QtScriptTools module. \o This
+ option denotes a default value and needs to be evaluated. If the
+ evaluation succeeds, the feature is included.
+ \row \o \c {-no-declarative} \o Do not build the declarative module \o
+ \row \o \c {-declarative} \o Build the declarative module \o This option
+ denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-no-declarative-debug} \o Do not build the declarative debugging
+ support \o
+ \row \o \c {-declarative-debug} \o Build the declarative debugging support
+ \o Defualt value.
+ \row \o \c {-arch <arch>} \o Specify an architecture. \o Available values for
+ <arch>: * windows, windowsce, symbian, boundschecker, generic.
+ \row \o \c {-no-style-<style>} \o Disable <style> entirely. \o
+ \row \o \c {-qt-style-<style>} \o Enable <style> in the Qt Library.
+ \o Available styles: * windows, + windowsxp, + windowsvista,
+ * plastique, * cleanlooks, * motif, * cde, windowsce, windowsmobile,
+ s60
+ \row \o \c {-no-native-gestures} \o Do not use native gestures on Windows 7.
+ \o
+ \row \o \c {-native-gestures} \o Use native gestures on Windows 7.
+ \o Defualt value.
+ \row \o \c {-no-mp} \o Do not use multiple processors for compiling with MSVC
+ \o Defualt value.
+ \row \o \c {-mp} \o Use multiple processors for compiling with MSVC (-MP) \o
+ \row \o \c {-loadconfig <config>} \o Run configure with the parameters from file
+ configure_<config>.cache. \o
+ \row \o \c {-saveconfig <config>} \o Run configure and save the parameters in
+ file configure_<config>.cache. \o
+ \row \o \c {-redo} \o Run configure with the same parameters as last time. \o
+\endtable
+
+\section2 Qt for Windows CE only:
+ \table
+ \header \o Option \o Description \o Note
+ \row \o \c {-no-iwmmxt} \o Do not compile with use of IWMMXT instructions \o
+ \row \o \c {-iwmmxt} \o Do compile with use of IWMMXT instructions. \o This is
+ for Qt for Windows CE on Arm only. This option denotes a default value and
+ needs to be evaluated. If the evaluation succeeds, the feature is included.
+ \row \o \c {-no-crt} \o Do not add the C runtime to default deployment rules.
+ \o Defualt value.
+ \row \o \c {-qt-crt} \o Qt identifies C runtime during project generation \o
+ \row \o \c {-crt <path>} \o Specify path to C runtime used for project
+ generation. \o
+ \row \o \c {-no-cetest} \o Do not compile Windows CE remote test application \o
+ \row \o \c {-cetest} \o Compile Windows CE remote test application \o This
+ option denotes a default value and needs to be evaluated. If the evaluation
+ succeeds, the feature is included.
+ \row \o \c {-signature <file>} \o Use file for signing the target project \o
+ \row \o \c {-phonon-wince-ds9} \o Enable Phonon Direct Show 9 backend for
+ Windows CE \o Defualt value
+ \endtable
+
+ \section2 Qt for Symbian OS only:
+ \table
+ \header \o Option \o Description \o Note
+ \row \o \c {-no-freetype} \o Do not compile in Freetype2 support.
+ \o Defualt value.
+ \row \o \c {-qt-freetype} \o Use the libfreetype bundled with Qt. \o
+ \row \o \c {-fpu <flags>} \o VFP type on ARM, supported options:
+ softvfp(default) |vfpv2 | softvfp+vfpv2 \o
+ \row \o \c {-no-s60} \o Do not compile in S60 support. \o
+ \row \o \c {-s60} \o Compile with support for the S60 UI Framework
+ \o Defualt value.
+ \row \o \c {-no-usedeffiles} \o Disable the usage of DEF files. \o
+ \row \o \c {-usedeffiles} \o Enable the usage of DEF files. \o
+ \endtable
+*/
diff --git a/doc/src/images/header.png b/doc/src/images/modelview-header.png
index 2597635..2597635 100755
--- a/doc/src/images/header.png
+++ b/doc/src/images/modelview-header.png
Binary files differ
diff --git a/doc/src/porting/porting4.qdoc b/doc/src/porting/porting4.qdoc
index b5fdbee..862d22b 100644
--- a/doc/src/porting/porting4.qdoc
+++ b/doc/src/porting/porting4.qdoc
@@ -3609,7 +3609,7 @@
\row \o \c PE_WindowFrame \o QStyle::PE_FrameWindow
\row \o \c PE_CheckListController \o QStyle::PE_Q3CheckListController
\row \o \c PE_CheckListIndicator \o QStyle::PE_Q3CheckListIndicator
- \row \o \c PE_CheckListExclusiveIndicato\o QStyle::PE_Q3CheckListExclusiveIndicator
+ \row \o \c PE_CheckListExclusiveIndicator \o QStyle::PE_Q3CheckListExclusiveIndicator
\row \o \c PE_PanelGroupBox \o QStyle::PE_FrameGroupBox
\row \o \c PE_TreeBranch \o QStyle::PE_IndicatorBranch
\row \o \c PE_RubberBand \o QStyle::CE_RubberBand \o uses QStyle::drawControl()
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 6effbfa..3cabb1c 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -328,7 +328,7 @@
With Qt 4, the Qt class has become the Qt namespace. If you want
to access a constant that is part of the Qt namespace, prefix it
- with \c Qt:: (e.g., \c{Qt::yellow}), or add the directive
+ with \c{Qt::} (e.g., \c{Qt::yellow}), or add the directive
\snippet doc/src/snippets/code/doc_src_qt4-intro.qdoc 7
@@ -341,7 +341,7 @@
in Qt 3, it was legal to write \c QWidget::yellow instead of \c
Qt::yellow, because QWidget inherited from Qt. This won't work in
Qt 4; you must write \c Qt::yellow or add the "using namespace"
- directive and drop the \c Qt:: prefix.
+ directive and drop the \c{Qt::} prefix.
The \l{qt3to4 - The Qt 3 to 4 Porting Tool}{qt3to4} porting tool
automates this conversion.
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
index 2494eb2..11f5163 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
@@ -75,7 +75,7 @@ QString result = future.result();
//! [4]
// call 'QList<QByteArray> QByteArray::split(char sep) const' in a separate thread
-QByteArray bytearray = "hello world;
+QByteArray bytearray = "hello world";
QFuture<QList<QByteArray> > future = QtConcurrent::run(bytearray, &QByteArray::split), ',');
...
QList<QByteArray> result = future.result();
diff --git a/doc/src/snippets/qabstractsliderisnippet.cpp b/doc/src/snippets/qabstractsliderisnippet.cpp
index 6b684e9..cb0f8cc 100644
--- a/doc/src/snippets/qabstractsliderisnippet.cpp
+++ b/doc/src/snippets/qabstractsliderisnippet.cpp
@@ -50,7 +50,7 @@ QAbstractSliderPrivate::~QAbstractSliderPrivate()
{
}
-oid QAbstractSlider::setRange(int min, int max)
+void QAbstractSlider::setRange(int min, int max)
{
Q_D(QAbstractSlider);
int oldMin = d->minimum;
diff --git a/doc/src/tutorials/modelview.qdoc b/doc/src/tutorials/modelview.qdoc
index 679d2a9..cae7764 100644
--- a/doc/src/tutorials/modelview.qdoc
+++ b/doc/src/tutorials/modelview.qdoc
@@ -348,7 +348,7 @@
\section2 2.4 Setting up Headers for Columns and Rows
Headers can be hidden via a view method: \c{tableView->verticalHeader()->hide();}
- \image header.png
+ \image modelview-header.png
The header content, however, is set via the model, so we reimplement the
\l{QAbstractItemModel::headerData()}{headerData()} method:
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 8440542..65cd7f4 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -1252,6 +1252,13 @@
to this top level window. This attribute has no effect on non-X11
platforms.
+ \value WA_LockPortraitOrientation Locks the widget to a portrait orientation,
+ ignoring changes to the display's orientation with respect to the user.
+ \value WA_LockLandscapeOrientation Locks the widget to a landscape orientation,
+ ignoring changes to the display's orientation with respect to the user.
+ \value WA_AutoOrientation Causes the widget to change orientation whenever the
+ display changes orientation with respect to the user.
+
\omitvalue WA_SetLayoutDirection
\omitvalue WA_InputMethodTransparent
\omitvalue WA_WState_CompressKeys
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 5e5077b..16f92f2 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -130,7 +130,7 @@
item on the scene gains focus, the scene automatically gains focus. If the
scene has focus, hasFocus() will return true, and key events will be
forwarded to the focus item, if any. If the scene loses focus, (i.e.,
- someone calls clearFocus(),) while an item has focus, the scene will
+ someone calls clearFocus()) while an item has focus, the scene will
maintain its item focus information, and once the scene regains focus, it
will make sure the last focus item regains focus.
@@ -3104,8 +3104,8 @@ bool QGraphicsScene::stickyFocus() const
\list
\o If the item receives a mouse release event when there are no other
buttons pressed, it loses the mouse grab.
- \o If the item becomes invisible (i.e., someone calls \c {item->setVisible(false))},
- or if it becomes disabled (i.e., someone calls \c {item->setEnabled(false))},
+ \o If the item becomes invisible (i.e., someone calls \c {item->setVisible(false)}),
+ or if it becomes disabled (i.e., someone calls \c {item->setEnabled(false)}),
it loses the mouse grab.
\o If the item is removed from the scene, it loses the mouse grab.
\endlist
diff --git a/tools/qdoc3/config.h b/tools/qdoc3/config.h
index bc2b6a2..9ebc0f8 100644
--- a/tools/qdoc3/config.h
+++ b/tools/qdoc3/config.h
@@ -148,6 +148,7 @@ class Config
#define CONFIG_OUTPUTENCODING "outputencoding"
#define CONFIG_OUTPUTLANGUAGE "outputlanguage"
#define CONFIG_OUTPUTFORMATS "outputformats"
+#define CONFIG_OUTPUTPREFIXES "outputprefixes"
#define CONFIG_PROJECT "project"
#define CONFIG_QHP "qhp"
#define CONFIG_QUOTINGINFORMATION "quotinginformation"
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index 1b1e8f2..e27916b 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -935,6 +935,8 @@ QString CppCodeMarker::addMarkUp(const QString &in,
int braceDepth = 0;
int parenDepth = 0;
int i = 0;
+ int start = 0;
+ int finish = 0;
char ch;
QRegExp classRegExp("Qt?(?:[A-Z3]+[a-z][A-Za-z]*|t)");
QRegExp functionRegExp("q([A-Z][a-z]+)+");
@@ -942,7 +944,6 @@ QString CppCodeMarker::addMarkUp(const QString &in,
readChar();
while (ch != EOF) {
- int second = i;
QString tag;
bool target = false;
@@ -950,6 +951,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
QString ident;
do {
ident += ch;
+ finish = i;
readChar();
} while (isalnum(ch) || ch == '_');
@@ -970,6 +972,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
}
} else if (isdigit(ch)) {
do {
+ finish = i;
readChar();
} while (isalnum(ch) || ch == '.');
tag = QLatin1String("number");
@@ -992,10 +995,12 @@ QString CppCodeMarker::addMarkUp(const QString &in,
case ']':
case '|':
case '~':
+ finish = i;
readChar();
tag = QLatin1String("op");
break;
case '"':
+ finish = i;
readChar();
while (ch != EOF && ch != '"') {
@@ -1003,19 +1008,23 @@ QString CppCodeMarker::addMarkUp(const QString &in,
readChar();
readChar();
}
+ finish = i;
readChar();
tag = QLatin1String("string");
break;
case '#':
+ finish = i;
readChar();
while (ch != EOF && ch != '\n') {
if (ch == '\\')
readChar();
+ finish = i;
readChar();
}
tag = QLatin1String("preprocessor");
break;
case '\'':
+ finish = i;
readChar();
while (ch != EOF && ch != '\'') {
@@ -1023,28 +1032,35 @@ QString CppCodeMarker::addMarkUp(const QString &in,
readChar();
readChar();
}
+ finish = i;
readChar();
tag = QLatin1String("char");
break;
case '(':
+ finish = i;
readChar();
parenDepth++;
break;
case ')':
+ finish = i;
readChar();
parenDepth--;
break;
case ':':
+ finish = i;
readChar();
if (ch == ':') {
+ finish = i;
readChar();
tag = QLatin1String("op");
}
break;
case '/':
+ finish = i;
readChar();
if (ch == '/') {
do {
+ finish = i;
readChar();
} while (ch != EOF && ch != '\n');
tag = QLatin1String("comment");
@@ -1052,6 +1068,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
bool metAster = false;
bool metAsterSlash = false;
+ finish = i;
readChar();
while (!metAsterSlash) {
@@ -1064,6 +1081,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
metAsterSlash = true;
else
metAster = false;
+ finish = i;
readChar();
}
tag = QLatin1String("comment");
@@ -1072,23 +1090,24 @@ QString CppCodeMarker::addMarkUp(const QString &in,
}
break;
case '{':
+ finish = i;
readChar();
braceDepth++;
break;
case '}':
+ finish = i;
readChar();
braceDepth--;
break;
default:
+ finish = i;
readChar();
}
}
QString text;
- if ((tag.isEmpty() || second == 1) && i == code.length())
- text = code.mid(second - 1, i - second + 1);
- else
- text = code.mid(second - 1, i - second);
+ text = code.mid(start, finish - start);
+ start = finish;
if (!tag.isEmpty()) {
out += QLatin1String("<@") + tag;
@@ -1101,7 +1120,10 @@ QString CppCodeMarker::addMarkUp(const QString &in,
if (!tag.isEmpty())
out += QLatin1String("</@") + tag + QLatin1String(">");
+ }
+ if (start < code.length()) {
+ out += protect(code.mid(start));
}
return out;
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index 76c47a2..a730799 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -369,6 +369,7 @@ class DocParser
void appendChar(QChar ch);
void appendWord(const QString &word);
void appendToCode(const QString &code);
+ void appendToCode(const QString &code, Atom::Type defaultType);
void startNewPara();
void enterPara(Atom::Type leftType = Atom::ParaLeft,
Atom::Type rightType = Atom::ParaRight,
@@ -1112,9 +1113,8 @@ void DocParser::parse(const QString& source,
append(Atom::SnippetIdentifier, identifier);
}
else {
- Doc::quoteFromFile(location(),quoter,snippet);
- appendToCode(quoter.quoteSnippet(location(),
- identifier));
+ marker = Doc::quoteFromFile(location(),quoter,snippet);
+ appendToCode(quoter.quoteSnippet(location(), identifier), marker->atomType());
}
}
break;
@@ -1855,7 +1855,7 @@ void DocParser::appendToCode(const QString& markedCode)
{
Atom::Type lastType = priv->text.lastAtom()->type();
#ifdef QDOC_QML
- if (lastType != Atom::Qml)
+ if (lastType != Atom::Qml && lastType != Atom::Code && lastType != Atom::JavaScript)
append(Atom::Qml);
#else
if (lastType != Atom::Code)
@@ -1864,6 +1864,15 @@ void DocParser::appendToCode(const QString& markedCode)
priv->text.lastAtom()->appendString(markedCode);
}
+void DocParser::appendToCode(const QString &markedCode, Atom::Type defaultType)
+{
+ Atom::Type lastType = priv->text.lastAtom()->type();
+ if (lastType != Atom::Qml && lastType != Atom::Code && lastType != Atom::JavaScript)
+ append(defaultType, markedCode);
+ else
+ priv->text.lastAtom()->appendString(markedCode);
+}
+
void DocParser::startNewPara()
{
leavePara();
diff --git a/tools/qdoc3/doc/qdoc-manual.qdoc b/tools/qdoc3/doc/qdoc-manual.qdoc
index adf92fe..7290c0e 100644
--- a/tools/qdoc3/doc/qdoc-manual.qdoc
+++ b/tools/qdoc3/doc/qdoc-manual.qdoc
@@ -7069,6 +7069,8 @@
\l {22-qdoc-configuration-generalvariables.html#outputdir}{outputdir},
\l {22-qdoc-configuration-generalvariables.html#outputformats}
{outputformats},
+ \l {22-qdoc-configuration-generalvariables.html#outputprefixes}
+ {outputprefixes},
\l {22-qdoc-configuration-generalvariables.html#slow}{slow},
\l {22-qdoc-configuration-generalvariables.html#sourcedirs}{sourcedirs},
\l {22-qdoc-configuration-generalvariables.html#sources}{sources},
@@ -7155,6 +7157,8 @@
\l {22-qdoc-configuration-generalvariables.html#outputdir}{outputdir},
\l {22-qdoc-configuration-generalvariables.html#outputformats}
{outputformats},
+ \l {22-qdoc-configuration-generalvariables.html#outputprefixes}
+ {outputprefixes},
\l {22-qdoc-configuration-generalvariables.html#slow}{slow},
\l {22-qdoc-configuration-generalvariables.html#sourcedirs}{sourcedirs},
\l {22-qdoc-configuration-generalvariables.html#sources}{sources},
@@ -7796,6 +7800,23 @@
the default format, and doesn't need to be specified.
\row
+ \o \bold outputprefixes \target outputprefixes
+ \o \bold {The \c outputprefixes variable specifies a mapping between
+ types of files and the prefixes to prepend to the HTML file names
+ in the generated documentation.}
+
+ For example:
+
+ \code
+ outputprefixes = QML
+ outputprefixes.QML = qt-components-
+ \endcode
+
+ Be default, files containing the API documentation for QML elements
+ or components are prefixed with "qml-". In the above example, the
+ prefix "qt-components-" is used instead.
+
+ \row
\o \bold qhp \target qhp
\o \bold{The \c qhp variable is used to define the information to be
written out to Qt Help Project (\c{qhp}) files.}
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index 276eab4..b4768db 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -43,7 +43,9 @@
generator.cpp
*/
#include <qdir.h>
+#ifdef DEBUG_MULTIPLE_QDOCCONF_FILES
#include <qdebug.h>
+#endif
#include "codemarker.h"
#include "config.h"
#include "doc.h"
@@ -73,6 +75,7 @@ QStringList Generator::styleFiles;
QStringList Generator::styleDirs;
QString Generator::outDir;
QString Generator::project;
+QHash<QString, QString> Generator::outputPrefixes;
static void singularPlural(Text& text, const NodeList& nodes)
{
@@ -272,6 +275,14 @@ void Generator::initialize(const Config &config)
}
project = config.getString(CONFIG_PROJECT);
+
+ QStringList prefixes = config.getStringList(CONFIG_OUTPUTPREFIXES);
+ if (!prefixes.isEmpty()) {
+ foreach (QString prefix, prefixes)
+ outputPrefixes[prefix] = config.getString(
+ CONFIG_OUTPUTPREFIXES + Config::dot + prefix);
+ } else
+ outputPrefixes[QLatin1String("QML")] = QLatin1String("qml-");
}
void Generator::terminate()
@@ -1259,4 +1270,9 @@ QString Generator::fullName(const Node *node,
return marker->plainFullName(node, relative);
}
+QString Generator::outputPrefix(const QString &nodeType)
+{
+ return outputPrefixes[nodeType];
+}
+
QT_END_NAMESPACE
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index 8378d07..4482313 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -148,6 +148,7 @@ class Generator
static QString trimmedTrailing(const QString &string);
static bool matchAhead(const Atom *atom, Atom::Type expectedAtomType);
static void supplementAlsoList(const Node *node, QList<Text> &alsoList);
+ static QString outputPrefix(const QString &nodeType);
private:
void generateReimplementedFrom(const FunctionNode *func,
@@ -198,6 +199,7 @@ class Generator
static QStringList styleDirs;
static QString outDir;
static QString project;
+ static QHash<QString, QString> outputPrefixes;
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/helpprojectwriter.cpp b/tools/qdoc3/helpprojectwriter.cpp
index 386ce20..f2e2f04 100644
--- a/tools/qdoc3/helpprojectwriter.cpp
+++ b/tools/qdoc3/helpprojectwriter.cpp
@@ -214,7 +214,7 @@ QStringList HelpProjectWriter::keywordDetails(const Node *node) const
details << node->name();
details << node->name();
}
- details << tree->fullDocumentLocation(node);
+ details << HtmlGenerator::fullDocumentLocation(node);
return details;
}
@@ -274,12 +274,12 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
case Node::Class:
project.keywords.append(keywordDetails(node));
- project.files.insert(tree->fullDocumentLocation(node));
+ project.files.insert(HtmlGenerator::fullDocumentLocation(node));
break;
case Node::Namespace:
project.keywords.append(keywordDetails(node));
- project.files.insert(tree->fullDocumentLocation(node));
+ project.files.insert(HtmlGenerator::fullDocumentLocation(node));
break;
case Node::Enum:
@@ -299,7 +299,7 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
details << item.name(); // "name"
details << item.name(); // "id"
}
- details << tree->fullDocumentLocation(node);
+ details << HtmlGenerator::fullDocumentLocation(node);
project.keywords.append(details);
}
}
@@ -330,7 +330,7 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
if (node->relates()) {
project.memberStatus[node->relates()].insert(node->status());
- project.files.insert(tree->fullDocumentLocation(node->relates()));
+ project.files.insert(HtmlGenerator::fullDocumentLocation(node->relates()));
} else if (node->parent())
project.memberStatus[node->parent()].insert(node->status());
}
@@ -344,7 +344,7 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
// Use the location of any associated enum node in preference
// to that of the typedef.
if (enumNode)
- typedefDetails[2] = tree->fullDocumentLocation(enumNode);
+ typedefDetails[2] = HtmlGenerator::fullDocumentLocation(enumNode);
project.keywords.append(typedefDetails);
}
@@ -364,11 +364,11 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
QStringList details;
details << keyword->string()
<< keyword->string()
- << tree->fullDocumentLocation(node) + "#" + Doc::canonicalTitle(keyword->string());
+ << HtmlGenerator::fullDocumentLocation(node) + "#" + Doc::canonicalTitle(keyword->string());
project.keywords.append(details);
} else
fakeNode->doc().location().warning(
- tr("Bad keyword in %1").arg(tree->fullDocumentLocation(node))
+ tr("Bad keyword in %1").arg(HtmlGenerator::fullDocumentLocation(node))
);
}
}
@@ -382,16 +382,16 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
QStringList details;
details << title
<< title
- << tree->fullDocumentLocation(node) + "#" + Doc::canonicalTitle(title);
+ << HtmlGenerator::fullDocumentLocation(node) + "#" + Doc::canonicalTitle(title);
project.keywords.append(details);
} else
fakeNode->doc().location().warning(
- tr("Bad contents item in %1").arg(tree->fullDocumentLocation(node))
+ tr("Bad contents item in %1").arg(HtmlGenerator::fullDocumentLocation(node))
);
}
}
*/
- project.files.insert(tree->fullDocumentLocation(node));
+ project.files.insert(HtmlGenerator::fullDocumentLocation(node));
}
break;
}
@@ -470,7 +470,7 @@ void HelpProjectWriter::generate(const Tree *tre)
void HelpProjectWriter::writeNode(HelpProject &project, QXmlStreamWriter &writer,
const Node *node)
{
- QString href = tree->fullDocumentLocation(node);
+ QString href = HtmlGenerator::fullDocumentLocation(node);
QString objName = node->name();
switch (node->type()) {
@@ -613,12 +613,12 @@ void HelpProjectWriter::generateProject(HelpProject &project)
writer.writeStartElement("toc");
writer.writeStartElement("section");
- QString indexPath = tree->fullDocumentLocation(tree->findFakeNodeByTitle(project.indexTitle));
+ QString indexPath = HtmlGenerator::fullDocumentLocation(tree->findFakeNodeByTitle(project.indexTitle));
if (indexPath.isEmpty())
indexPath = "index.html";
writer.writeAttribute("ref", HtmlGenerator::cleanRef(indexPath));
writer.writeAttribute("title", project.indexTitle);
- project.files.insert(tree->fullDocumentLocation(rootNode));
+ project.files.insert(HtmlGenerator::fullDocumentLocation(rootNode));
generateSections(project, writer, rootNode);
@@ -656,7 +656,7 @@ void HelpProjectWriter::generateProject(HelpProject &project)
const FakeNode *page = tree->findFakeNodeByTitle(atom->string());
writer.writeStartElement("section");
- QString indexPath = tree->fullDocumentLocation(page);
+ QString indexPath = HtmlGenerator::fullDocumentLocation(page);
writer.writeAttribute("ref", HtmlGenerator::cleanRef(indexPath));
writer.writeAttribute("title", atom->string());
project.files.insert(indexPath);
@@ -681,7 +681,7 @@ void HelpProjectWriter::generateProject(HelpProject &project)
if (!name.isEmpty()) {
writer.writeStartElement("section");
- QString indexPath = tree->fullDocumentLocation(tree->findFakeNodeByTitle(subproject.indexTitle));
+ QString indexPath = HtmlGenerator::fullDocumentLocation(tree->findFakeNodeByTitle(subproject.indexTitle));
writer.writeAttribute("ref", HtmlGenerator::cleanRef(indexPath));
writer.writeAttribute("title", subproject.title);
project.files.insert(indexPath);
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 196bd44..0ff28af 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -4246,6 +4246,151 @@ void HtmlGenerator::generateExtractionMark(const Node *node, ExtractionMarkType
}
}
+/*!
+ Returns the full document location for HTML-based documentation.
+ */
+QString HtmlGenerator::fullDocumentLocation(const Node *node)
+{
+ if (!node)
+ return "";
+ if (!node->url().isEmpty())
+ return node->url();
+
+ QString parentName;
+ QString anchorRef;
+
+ if (node->type() == Node::Namespace) {
+
+ // The root namespace has no name - check for this before creating
+ // an attribute containing the location of any documentation.
+
+ if (!node->fileBase().isEmpty())
+ parentName = node->fileBase() + ".html";
+ else
+ return "";
+ }
+ else if (node->type() == Node::Fake) {
+#ifdef QDOC_QML
+ if ((node->subType() == Node::QmlClass) ||
+ (node->subType() == Node::QmlBasicType)) {
+ QString fb = node->fileBase();
+ if (fb.startsWith(Generator::outputPrefix(QLatin1String("QML"))))
+ return fb + ".html";
+ else
+ return Generator::outputPrefix(QLatin1String("QML")) + node->fileBase() + QLatin1String(".html");
+ } else
+#endif
+ parentName = node->fileBase() + ".html";
+ }
+ else if (node->fileBase().isEmpty())
+ return "";
+
+ Node *parentNode = 0;
+
+ if ((parentNode = node->relates()))
+ parentName = fullDocumentLocation(node->relates());
+ else if ((parentNode = node->parent())) {
+ if (parentNode->subType() == Node::QmlPropertyGroup) {
+ parentNode = parentNode->parent();
+ parentName = fullDocumentLocation(parentNode);
+ }
+ else
+ parentName = fullDocumentLocation(node->parent());
+ }
+
+ switch (node->type()) {
+ case Node::Class:
+ case Node::Namespace:
+ if (parentNode && !parentNode->name().isEmpty())
+ parentName = parentName.replace(".html", "") + "-"
+ + node->fileBase().toLower() + ".html";
+ else
+ parentName = node->fileBase() + ".html";
+ break;
+ case Node::Function:
+ {
+ /*
+ Functions can be destructors, overloaded, or
+ have associated properties.
+ */
+ const FunctionNode *functionNode =
+ static_cast<const FunctionNode *>(node);
+
+ if (functionNode->metaness() == FunctionNode::Dtor)
+ anchorRef = "#dtor." + functionNode->name().mid(1);
+
+ else if (functionNode->associatedProperty())
+ return fullDocumentLocation(functionNode->associatedProperty());
+
+ else if (functionNode->overloadNumber() > 1)
+ anchorRef = "#" + functionNode->name()
+ + "-" + QString::number(functionNode->overloadNumber());
+ else
+ anchorRef = "#" + functionNode->name();
+ }
+
+ /*
+ Use node->name() instead of node->fileBase() as
+ the latter returns the name in lower-case. For
+ HTML anchors, we need to preserve the case.
+ */
+ break;
+ case Node::Enum:
+ anchorRef = "#" + node->name() + "-enum";
+ break;
+ case Node::Typedef:
+ anchorRef = "#" + node->name() + "-typedef";
+ break;
+ case Node::Property:
+ anchorRef = "#" + node->name() + "-prop";
+ break;
+ case Node::QmlProperty:
+ anchorRef = "#" + node->name() + "-prop";
+ break;
+ case Node::QmlSignal:
+ anchorRef = "#" + node->name() + "-signal";
+ break;
+ case Node::QmlMethod:
+ anchorRef = "#" + node->name() + "-method";
+ break;
+ case Node::Variable:
+ anchorRef = "#" + node->name() + "-var";
+ break;
+ case Node::Target:
+ anchorRef = "#" + Doc::canonicalTitle(node->name());
+ break;
+ case Node::Fake:
+ {
+ /*
+ Use node->fileBase() for fake nodes because they are represented
+ by pages whose file names are lower-case.
+ */
+ parentName = node->fileBase();
+ parentName.replace("/", "-").replace(".", "-");
+ parentName += ".html";
+ }
+ break;
+ default:
+ break;
+ }
+
+ // Various objects can be compat (deprecated) or obsolete.
+ if (node->type() != Node::Class && node->type() != Node::Namespace) {
+ switch (node->status()) {
+ case Node::Compat:
+ parentName.replace(".html", "-qt3.html");
+ break;
+ case Node::Obsolete:
+ parentName.replace(".html", "-obsolete.html");
+ break;
+ default:
+ ;
+ }
+ }
+
+ return parentName.toLower() + anchorRef;
+}
+
#endif
- QT_END_NAMESPACE
+QT_END_NAMESPACE
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 6e00ed3..eed96e7 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -98,6 +98,7 @@ class HtmlGenerator : public PageGenerator
static QString protect(const QString &string, const QString &encoding = "ISO-8859-1");
static QString cleanRef(const QString& ref);
static QString sinceTitle(int i) { return sinceTitles[i]; }
+ static QString fullDocumentLocation(const Node *node);
protected:
virtual void startText(const Node *relative, CodeMarker *marker);
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index a36d440..7195322 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -1693,7 +1693,7 @@ static QString valueType(const QString& n)
read-only. The algorithm for figuring this out is long
amd tedious and almost certainly will break. It currently
doesn't work for qmlproperty bool PropertyChanges::explicit,
- because the tokenized gets confused on "explicit" .
+ because the tokenizer gets confused on "explicit".
*/
bool QmlPropertyNode::isWritable(const Tree* tree) const
{
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index 89ec6fe..d5564f7 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -206,15 +206,15 @@ QString PageGenerator::fileBase(const Node *node) const
#ifdef QDOC_QML
/*
To avoid file name conflicts in the html directory,
- we prepend "qml-" to the file name of QML element doc
- files.
+ we prepend a prefix (by default, "qml-") to the file name of QML
+ element doc files.
*/
if ((p->subType() == Node::QmlClass) ||
(p->subType() == Node::QmlBasicType)) {
if (!base.startsWith(QLatin1String("QML:")))
- base.prepend("qml-");
+ base.prepend(outputPrefix(QLatin1String("QML")));
}
-#endif
+#endif
if (!pp || pp->name().isEmpty() || pp->type() == Node::Fake)
break;
base.prepend(QLatin1Char('-'));
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 5972b9f..eec6578 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1226,7 +1226,7 @@ bool Tree::generateIndexSection(QXmlStreamWriter &writer,
QString fullName = fullDocumentName(node);
if (fullName != objName)
writer.writeAttribute("fullname", fullName);
- writer.writeAttribute("href", fullDocumentLocation(node));
+ writer.writeAttribute("href", HtmlGenerator::fullDocumentLocation(node));
if ((node->type() != Node::Fake) && (!node->isQmlNode()))
writer.writeAttribute("location", node->location().fileName());
@@ -1364,6 +1364,8 @@ bool Tree::generateIndexSection(QXmlStreamWriter &writer,
{
const QmlPropertyNode *qpn = static_cast<const QmlPropertyNode*>(node);
writer.writeAttribute("type", qpn->dataType());
+ writer.writeAttribute("attached", qpn->isAttached() ? "true" : "false");
+ writer.writeAttribute("writable", qpn->isWritable(this) ? "true" : "false");
}
break;
case Node::Property:
@@ -1667,7 +1669,7 @@ void Tree::generateTagFileCompounds(QXmlStreamWriter &writer,
if (node->type() == Node::Class) {
writer.writeTextElement("name", fullDocumentName(node));
- writer.writeTextElement("filename", fullDocumentLocation(node));
+ writer.writeTextElement("filename", HtmlGenerator::fullDocumentLocation(node));
// Classes contain information about their base classes.
const ClassNode *classNode = static_cast<const ClassNode*>(node);
@@ -1685,7 +1687,7 @@ void Tree::generateTagFileCompounds(QXmlStreamWriter &writer,
generateTagFileCompounds(writer, static_cast<const InnerNode *>(node));
} else {
writer.writeTextElement("name", fullDocumentName(node));
- writer.writeTextElement("filename", fullDocumentLocation(node));
+ writer.writeTextElement("filename", HtmlGenerator::fullDocumentLocation(node));
// Recurse to write all members.
generateTagFileMembers(writer, static_cast<const InnerNode *>(node));
@@ -1806,7 +1808,7 @@ void Tree::generateTagFileMembers(QXmlStreamWriter &writer,
"virtual " + functionNode->returnType());
writer.writeTextElement("name", objName);
- QStringList pieces = fullDocumentLocation(node).split("#");
+ QStringList pieces = HtmlGenerator::fullDocumentLocation(node).split("#");
writer.writeTextElement("anchorfile", pieces[0]);
writer.writeTextElement("anchor", pieces[1]);
@@ -1846,7 +1848,7 @@ void Tree::generateTagFileMembers(QXmlStreamWriter &writer,
const PropertyNode *propertyNode = static_cast<const PropertyNode*>(node);
writer.writeAttribute("type", propertyNode->dataType());
writer.writeTextElement("name", objName);
- QStringList pieces = fullDocumentLocation(node).split("#");
+ QStringList pieces = HtmlGenerator::fullDocumentLocation(node).split("#");
writer.writeTextElement("anchorfile", pieces[0]);
writer.writeTextElement("anchor", pieces[1]);
writer.writeTextElement("arglist", "");
@@ -1858,7 +1860,7 @@ void Tree::generateTagFileMembers(QXmlStreamWriter &writer,
{
const EnumNode *enumNode = static_cast<const EnumNode*>(node);
writer.writeTextElement("name", objName);
- QStringList pieces = fullDocumentLocation(node).split("#");
+ QStringList pieces = HtmlGenerator::fullDocumentLocation(node).split("#");
writer.writeTextElement("anchor", pieces[1]);
writer.writeTextElement("arglist", "");
writer.writeEndElement(); // member
@@ -1882,7 +1884,7 @@ void Tree::generateTagFileMembers(QXmlStreamWriter &writer,
else
writer.writeAttribute("type", "");
writer.writeTextElement("name", objName);
- QStringList pieces = fullDocumentLocation(node).split("#");
+ QStringList pieces = HtmlGenerator::fullDocumentLocation(node).split("#");
writer.writeTextElement("anchorfile", pieces[0]);
writer.writeTextElement("anchor", pieces[1]);
writer.writeTextElement("arglist", "");
@@ -1934,152 +1936,6 @@ void Tree::addExternalLink(const QString &url, const Node *relative)
}
/*!
- Returns the full document location for HTML-based documentation.
- This should be moved into the HTML generator.
- */
-QString Tree::fullDocumentLocation(const Node *node) const
-{
- if (!node)
- return "";
- if (!node->url().isEmpty())
- return node->url();
-
- QString parentName;
- QString anchorRef;
-
- if (node->type() == Node::Namespace) {
-
- // The root namespace has no name - check for this before creating
- // an attribute containing the location of any documentation.
-
- if (!node->fileBase().isEmpty())
- parentName = node->fileBase() + ".html";
- else
- return "";
- }
- else if (node->type() == Node::Fake) {
-#ifdef QDOC_QML
- if ((node->subType() == Node::QmlClass) ||
- (node->subType() == Node::QmlBasicType)) {
- QString fb = node->fileBase();
- if (fb.startsWith(QLatin1String("qml-")))
- return fb + ".html";
- else
- return "qml-" + node->fileBase() + ".html";
- } else
-#endif
- parentName = node->fileBase() + ".html";
- }
- else if (node->fileBase().isEmpty())
- return "";
-
- Node *parentNode = 0;
-
- if ((parentNode = node->relates()))
- parentName = fullDocumentLocation(node->relates());
- else if ((parentNode = node->parent())) {
- if (parentNode->subType() == Node::QmlPropertyGroup) {
- parentNode = parentNode->parent();
- parentName = fullDocumentLocation(parentNode);
- }
- else
- parentName = fullDocumentLocation(node->parent());
- }
-
- switch (node->type()) {
- case Node::Class:
- case Node::Namespace:
- if (parentNode && !parentNode->name().isEmpty())
- parentName = parentName.replace(".html", "") + "-"
- + node->fileBase().toLower() + ".html";
- else
- parentName = node->fileBase() + ".html";
- break;
- case Node::Function:
- {
- /*
- Functions can be destructors, overloaded, or
- have associated properties.
- */
- const FunctionNode *functionNode =
- static_cast<const FunctionNode *>(node);
-
- if (functionNode->metaness() == FunctionNode::Dtor)
- anchorRef = "#dtor." + functionNode->name().mid(1);
-
- else if (functionNode->associatedProperty())
- return fullDocumentLocation(functionNode->associatedProperty());
-
- else if (functionNode->overloadNumber() > 1)
- anchorRef = "#" + functionNode->name()
- + "-" + QString::number(functionNode->overloadNumber());
- else
- anchorRef = "#" + functionNode->name();
- }
-
- /*
- Use node->name() instead of node->fileBase() as
- the latter returns the name in lower-case. For
- HTML anchors, we need to preserve the case.
- */
- break;
- case Node::Enum:
- anchorRef = "#" + node->name() + "-enum";
- break;
- case Node::Typedef:
- anchorRef = "#" + node->name() + "-typedef";
- break;
- case Node::Property:
- anchorRef = "#" + node->name() + "-prop";
- break;
- case Node::QmlProperty:
- anchorRef = "#" + node->name() + "-prop";
- break;
- case Node::QmlSignal:
- anchorRef = "#" + node->name() + "-signal";
- break;
- case Node::QmlMethod:
- anchorRef = "#" + node->name() + "-method";
- break;
- case Node::Variable:
- anchorRef = "#" + node->name() + "-var";
- break;
- case Node::Target:
- anchorRef = "#" + Doc::canonicalTitle(node->name());
- break;
- case Node::Fake:
- {
- /*
- Use node->fileBase() for fake nodes because they are represented
- by pages whose file names are lower-case.
- */
- parentName = node->fileBase();
- parentName.replace("/", "-").replace(".", "-");
- parentName += ".html";
- }
- break;
- default:
- break;
- }
-
- // Various objects can be compat (deprecated) or obsolete.
- if (node->type() != Node::Class && node->type() != Node::Namespace) {
- switch (node->status()) {
- case Node::Compat:
- parentName.replace(".html", "-qt3.html");
- break;
- case Node::Obsolete:
- parentName.replace(".html", "-obsolete.html");
- break;
- default:
- ;
- }
- }
-
- return parentName.toLower() + anchorRef;
-}
-
-/*!
Construct the full document name for \a node and return the
name.
*/