diff options
author | Martin Smith <martin.smith@digia.com> | 2012-09-28 11:23:52 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-09-29 02:31:35 +0200 |
commit | 42b88337121151a99b60d8a785e896437cdcd971 (patch) | |
tree | 8baf23273263f86542a9c0b0ad8255652b812b94 /src/tools/qdoc | |
parent | 8e90e0805f2981014d3382d8841617b4c56dfc50 (diff) |
qdoc: Augment imagedirs list
Modularization of examples has resulted in putting
all documentation and code for an example in each
example subdirectory. In particular, each example
subdirectory now contains a doc/images subdirectoy,
where images are stored that are linked to from the
example .qdoc files, which are in the doc/src
subdirectory of the example directory.
Because there are so many example subdirectories,
it would be difficult to list all the doc/images
directories in the imagedirs variable of the
qdocconf file. Therefore, qdoc now searches all
the directories listed in the exampledirs variable
to find all the doc/images subdirectories there,
and it adds these to the imagedirs variable for
use in finding images called out in \image and
\inlineimage commands.
Task Nr: QTBUG-27248
Change-Id: I070ba1a558ab32e1db06429a71c083b55f9dd0ea
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Diffstat (limited to 'src/tools/qdoc')
-rw-r--r-- | src/tools/qdoc/config.cpp | 17 | ||||
-rw-r--r-- | src/tools/qdoc/config.h | 2 | ||||
-rw-r--r-- | src/tools/qdoc/generator.cpp | 24 | ||||
-rw-r--r-- | src/tools/qdoc/generator.h | 1 | ||||
-rw-r--r-- | src/tools/qdoc/main.cpp | 18 |
5 files changed, 54 insertions, 8 deletions
diff --git a/src/tools/qdoc/config.cpp b/src/tools/qdoc/config.cpp index e86fb33930..1ecfb6ddaf 100644 --- a/src/tools/qdoc/config.cpp +++ b/src/tools/qdoc/config.cpp @@ -507,7 +507,7 @@ QStringList Config::getExampleQdocFiles(const QSet<QString> &excludedDirs, const QSet<QString> &excludedFiles) { QStringList result; - QStringList dirs = getStringList("exampledirs"); + QStringList dirs = getCanonicalRelativePathList("exampledirs"); QString nameFilter = " *.qdoc"; QStringList::ConstIterator d = dirs.constBegin(); @@ -518,6 +518,21 @@ QStringList Config::getExampleQdocFiles(const QSet<QString> &excludedDirs, return result; } +QStringList Config::getExampleImageFiles(const QSet<QString> &excludedDirs, + const QSet<QString> &excludedFiles) +{ + QStringList result; + QStringList dirs = getCanonicalRelativePathList("exampledirs"); + QString nameFilter = getString(CONFIG_EXAMPLES + dot + QLatin1String(CONFIG_IMAGEEXTENSIONS)); + + QStringList::ConstIterator d = dirs.constBegin(); + while (d != dirs.constEnd()) { + result += getFilesHere(*d, nameFilter, location(), excludedDirs, excludedFiles); + ++d; + } + return result; +} + /*! \a fileName is the path of the file to find. diff --git a/src/tools/qdoc/config.h b/src/tools/qdoc/config.h index 9f49c7682d..31e073730e 100644 --- a/src/tools/qdoc/config.h +++ b/src/tools/qdoc/config.h @@ -87,6 +87,8 @@ public: const QSet<QString> &excludedDirs = QSet<QString>(), const QSet<QString> &excludedFiles = QSet<QString>()); QStringList getExampleQdocFiles(const QSet<QString> &excludedDirs, const QSet<QString> &excludedFiles); + QStringList getExampleImageFiles(const QSet<QString> &excludedDirs, const QSet<QString> &excludedFiles); + static QStringList getFilesHere(const QString& dir, const QString& nameFilter, const Location &location = Location(), diff --git a/src/tools/qdoc/generator.cpp b/src/tools/qdoc/generator.cpp index d40fec81f4..830ac06908 100644 --- a/src/tools/qdoc/generator.cpp +++ b/src/tools/qdoc/generator.cpp @@ -1405,9 +1405,12 @@ QStringList Generator::getMetadataElements(const InnerNode* inner, const QString QString Generator::imageFileName(const Node *relative, const QString& fileBase) { QString userFriendlyFilePath; - QString filePath = Config::findFile( - relative->doc().location(), imageFiles, imageDirs, fileBase, - imgFileExts[format()], userFriendlyFilePath); + QString filePath = Config::findFile(relative->doc().location(), + imageFiles, + imageDirs, + fileBase, + imgFileExts[format()], + userFriendlyFilePath); if (filePath.isEmpty()) return QString(); @@ -1620,6 +1623,21 @@ void Generator::initialize(const Config &config) outputPrefixes[QLatin1String("QML")] = QLatin1String("qml-"); } +/*! + Appends each directory path in \a moreImageDirs to the + list of image directories. + */ +void Generator::augmentImageDirs(QSet<QString>& moreImageDirs) +{ + if (moreImageDirs.isEmpty()) + return; + QSet<QString>::const_iterator i = moreImageDirs.begin(); + while (i != moreImageDirs.end()) { + imageDirs.append(*i); + ++i; + } +} + void Generator::initializeGenerator(const Config & /* config */) { } diff --git a/src/tools/qdoc/generator.h b/src/tools/qdoc/generator.h index 1b25dc48cd..344112e956 100644 --- a/src/tools/qdoc/generator.h +++ b/src/tools/qdoc/generator.h @@ -85,6 +85,7 @@ public: static const QString& outputDir() { return outDir_; } static void terminate(); static void writeOutFileNames(); + static void augmentImageDirs(QSet<QString>& moreImageDirs); protected: virtual void beginSubPage(const InnerNode* node, const QString& fileName); diff --git a/src/tools/qdoc/main.cpp b/src/tools/qdoc/main.cpp index e9ab11d4d6..ea42b3f4f3 100644 --- a/src/tools/qdoc/main.cpp +++ b/src/tools/qdoc/main.cpp @@ -165,10 +165,8 @@ static void processQdocconfFile(const QString &fileName) ++i; } config.setStringList(CONFIG_SYNTAXHIGHLIGHTING, QStringList(highlighting ? "true" : "false")); - config.setStringList(CONFIG_SHOWINTERNAL, - QStringList(showInternal ? "true" : "false")); - config.setStringList(CONFIG_OBSOLETELINKS, - QStringList(obsoleteLinks ? "true" : "false")); + config.setStringList(CONFIG_SHOWINTERNAL, QStringList(showInternal ? "true" : "false")); + config.setStringList(CONFIG_OBSOLETELINKS, QStringList(obsoleteLinks ? "true" : "false")); /* With the default configuration values in place, load @@ -372,6 +370,18 @@ static void processQdocconfFile(const QString &fileName) } } + QSet<QString> exampleImageDirs; + QStringList exampleImageList = config.getExampleImageFiles(excludedDirs, excludedFiles); + for (int i=0; i<exampleImageList.size(); ++i) { + if (exampleImageList[i].contains("doc/images")) { + QString t = exampleImageList[i].left(exampleImageList[i].lastIndexOf("doc/images")+10); + if (!exampleImageDirs.contains(t)) { + exampleImageDirs.insert(t); + } + } + } + Generator::augmentImageDirs(exampleImageDirs); + /* Parse each header file in the set using the appropriate parser and add it to the big tree. |