qdoc: better copying of .css files

This fix searches for the css files specified in the
stylesheets variable. It searches for them in the
directory specified as the templatedir. It copies
them into the style subdirectory of the outputdir.

It also tests QT_INSTALL_DOCS before setting it to
the library info. If it was set on the command line,
it is not set from the library info.

This change also includes some debug code, which
will be removed after testing.

Task-number: QTBUG-27878
Change-Id: I7a9469b840e13b966aca44b99aebba102e5d4f0c
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
This commit is contained in:
Martin Smith 2012-11-09 15:33:02 +01:00
parent 80f91f4e1b
commit 6326746d22
4 changed files with 27 additions and 9 deletions

View File

@ -50,6 +50,7 @@
#include <qtextstream.h>
#include <qdebug.h>
#include "config.h"
#include "generator.h"
#include <stdlib.h>
QT_BEGIN_NAMESPACE
@ -148,6 +149,7 @@ QStringList MetaStack::getExpanded(const Location& location)
}
QT_STATIC_CONST_IMPL QString Config::dot = QLatin1String(".");
bool Config::debug = false;
bool Config::generateExamples = true;
QString Config::overrideOutputDir;
QString Config::installDir;
@ -548,6 +550,10 @@ QString Config::findFile(const Location& location,
const QString& fileName,
QString& userFriendlyFilePath)
{
if (debug)
qDebug() << "FILES:" << files
<< "DIRS:" << dirs
<< "FILENAME:" << fileName;
if (fileName.isEmpty() || fileName.startsWith(QLatin1Char('/'))) {
userFriendlyFilePath = fileName;
return fileName;
@ -572,6 +578,8 @@ QString Config::findFile(const Location& location,
if (fileInfo.fileName().isEmpty()) {
QStringList::ConstIterator d = dirs.constBegin();
while (d != dirs.constEnd()) {
if (debug)
qDebug() << "TEST:" << QDir(*d).absolutePath() << firstComponent;
fileInfo.setFile(QDir(*d), firstComponent);
if (fileInfo.exists()) {
break;
@ -853,9 +861,7 @@ void Config::load(Location location, const QString& fileName)
/*
Here is the recursive call.
*/
load(location,
QFileInfo(QFileInfo(fileName).dir(), includeFile)
.filePath());
load(location, QFileInfo(QFileInfo(fileName).dir(), includeFile).filePath());
}
else {
/*

View File

@ -114,6 +114,7 @@ public:
QT_STATIC_CONST QString dot;
static bool debug;
static bool generateExamples;
static QString installDir;
static QString overrideOutputDir;

View File

@ -1548,10 +1548,10 @@ void Generator::initialize(const Config &config)
// Documentation template handling
QStringList searchDirs;
QString templateDir = config.getString((*g)->format() + Config::dot + CONFIG_TEMPLATEDIR);
qDebug() << "TEMPLATEDIR:" << templateDir << (*g)->format() + Config::dot + CONFIG_TEMPLATEDIR;
if (templateDir.isEmpty())
templateDir = ".";
searchDirs.append(templateDir);
QStringList noExts;
QStringList scripts = config.getCleanPathList((*g)->format()+Config::dot+CONFIG_SCRIPTS);
e = scripts.constBegin();
@ -1573,6 +1573,10 @@ void Generator::initialize(const Config &config)
}
QStringList styles = config.getCleanPathList((*g)->format()+Config::dot+CONFIG_STYLESHEETS);
qDebug() << "STYLES:" << styles;
qDebug() << "SEARCHDIRS:" << searchDirs;
qDebug() << "STYLEFILES:" << styleFiles;
Config::debug = true;
e = styles.constBegin();
while (e != styles.constEnd()) {
QString userFriendlyFilePath;
@ -1582,6 +1586,7 @@ void Generator::initialize(const Config &config)
*e,
noExts,
userFriendlyFilePath);
qDebug() << "FILEPATH:" << filePath;
if (!filePath.isEmpty())
Config::copyFile(config.lastLocation(),
filePath,
@ -1590,6 +1595,7 @@ void Generator::initialize(const Config &config)
"/style");
++e;
}
Config::debug = false;
}
++g;
}

View File

@ -261,11 +261,16 @@ static void processQdocconfFile(const QString &fileName)
config.setStringList(CONFIG_NOLINKERRORS, QStringList(noLinkErrors ? "true" : "false"));
config.setStringList(CONFIG_OBSOLETELINKS, QStringList(obsoleteLinks ? "true" : "false"));
documentationPath = QLibraryInfo::rawLocation(QLibraryInfo::DocumentationPath,
QLibraryInfo::EffectivePaths);
// Set a few environment variables that can be used from the qdocconf file
qputenv("QT_INSTALL_DOCS", documentationPath.toLatin1());
/*
If QT_INSTALL_DOCS is not set, set it here so it can be used from
the qdocconf files.
*/
QString qt_install_docs = qgetenv("QT_INSTALL_DOCS");
if (qt_install_docs.isEmpty()) {
documentationPath = QLibraryInfo::rawLocation(QLibraryInfo::DocumentationPath,
QLibraryInfo::EffectivePaths);
qputenv("QT_INSTALL_DOCS", documentationPath.toLatin1());
}
/*
With the default configuration values in place, load