aboutsummaryrefslogtreecommitdiffstats
path: root/generators/qtdoc/qtdocgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'generators/qtdoc/qtdocgenerator.cpp')
-rw-r--r--generators/qtdoc/qtdocgenerator.cpp35
1 files changed, 30 insertions, 5 deletions
diff --git a/generators/qtdoc/qtdocgenerator.cpp b/generators/qtdoc/qtdocgenerator.cpp
index 016090fca..04e648be5 100644
--- a/generators/qtdoc/qtdocgenerator.cpp
+++ b/generators/qtdoc/qtdocgenerator.cpp
@@ -213,12 +213,31 @@ QString QtXmlToSphinx::transform(const QString& doc)
return retval;
}
-QString QtXmlToSphinx::readFromLocation(QString& location, QString& identifier)
+QString QtXmlToSphinx::readFromLocations(const QStringList& locations, const QString& path, const QString& identifier)
+{
+ QString result;
+ bool ok;
+ foreach (QString location, locations) {
+ location.append('/');
+ location.append(path);
+ result = readFromLocation(location, identifier, &ok);
+ if (ok)
+ break;
+ }
+ if (!ok)
+ ReportHandler::warning("Couldn't read code snippet file: {"+ locations.join("|") + '}' + path);
+ return result;
+}
+
+QString QtXmlToSphinx::readFromLocation(const QString& location, const QString& identifier, bool* ok)
{
QFile inputFile;
inputFile.setFileName(location);
if (!inputFile.open(QIODevice::ReadOnly)) {
- ReportHandler::warning("Couldn't read code snippet file: "+inputFile.fileName());
+ if (!ok)
+ ReportHandler::warning("Couldn't read code snippet file: "+inputFile.fileName());
+ else
+ *ok = false;
return QString();
}
@@ -246,6 +265,8 @@ QString QtXmlToSphinx::readFromLocation(QString& location, QString& identifier)
if (code.isEmpty())
ReportHandler::warning("Code snippet file found ("+location+"), but snippet "+ identifier +" not found.");
+ if (ok)
+ *ok = true;
return code;
}
@@ -345,8 +366,7 @@ void QtXmlToSphinx::handleSnippetTag(QXmlStreamReader& reader)
}
QString location = reader.attributes().value("location").toString();
QString identifier = reader.attributes().value("identifier").toString();
- location.prepend(m_generator->codeSnippetDir() + '/');
- QString code = readFromLocation(location, identifier);
+ QString code = readFromLocations(m_generator->codeSnippetDirs(), location, identifier);
if (!consecutiveSnippet)
m_output << INDENT << "::\n\n";
@@ -1406,7 +1426,12 @@ bool QtDocGenerator::doSetup(const QMap<QString, QString>& args)
{
m_libSourceDir = args.value("library-source-dir");
m_docDataDir = args.value("documentation-data-dir");
- m_codeSnippetDir = args.value("documentation-code-snippets-dir", m_libSourceDir);
+#ifdef __WIN32__
+# define PATH_SEP ";"
+#else
+# define PATH_SEP ":"
+#endif
+ m_codeSnippetDirs = args.value("documentation-code-snippets-dir", m_libSourceDir).split(PATH_SEP);
m_extraSectionDir = args.value("documentation-extra-sections-dir");
if (m_libSourceDir.isEmpty() || m_docDataDir.isEmpty()) {