summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@digia.com>2012-09-28 11:23:52 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-29 02:31:35 +0200
commit42b88337121151a99b60d8a785e896437cdcd971 (patch)
tree8baf23273263f86542a9c0b0ad8255652b812b94 /src/tools/qdoc
parent8e90e0805f2981014d3382d8841617b4c56dfc50 (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.cpp17
-rw-r--r--src/tools/qdoc/config.h2
-rw-r--r--src/tools/qdoc/generator.cpp24
-rw-r--r--src/tools/qdoc/generator.h1
-rw-r--r--src/tools/qdoc/main.cpp18
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.