PathChooser: Provide static way to expand a directory...

...to be able to fetch working directory even for
non-active targets.

Change-Id: I563e9b56e8a8393b998811e0fb364078d4c37d03
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
Christian Stenger
2016-01-07 13:46:54 +01:00
parent 9cd8e7f252
commit 069f8c234c
3 changed files with 28 additions and 2 deletions

View File

@@ -330,6 +330,20 @@ FileName PathChooser::fileName() const
return FileName::fromString(path());
}
// FIXME: try to remove again
QString PathChooser::expandedDirectory(const QString &input, const Environment &env,
const QString &baseDir)
{
if (input.isEmpty())
return input;
const QString path = QDir::cleanPath(env.expandVariables(input));
if (path.isEmpty())
return path;
if (!baseDir.isEmpty() && QFileInfo(path).isRelative())
return QFileInfo(baseDir + QLatin1Char('/') + path).absoluteFilePath();
return path;
}
void PathChooser::setPath(const QString &path)
{
d->m_lineEdit->setText(QDir::toNativeSeparators(path));

View File

@@ -96,6 +96,9 @@ public:
FileName rawFileName() const; // The raw unexpanded input.
FileName fileName() const;
static QString expandedDirectory(const QString &input, const Utils::Environment &env,
const QString &baseDir);
QString baseDirectory() const;
void setBaseDirectory(const QString &directory);

View File

@@ -204,11 +204,20 @@ void WorkingDirectoryAspect::toMap(QVariantMap &data) const
FileName WorkingDirectoryAspect::workingDirectory() const
{
QTC_ASSERT(m_chooser, return m_defaultWorkingDirectory);
if (m_workingDirectory.isEmpty())
return m_defaultWorkingDirectory;
return FileName::fromString(
if (m_chooser) {
return FileName::fromString(
runConfiguration()->macroExpander()->expandProcessArgs(m_chooser->path()));
} else {
auto envAspect = runConfiguration()->extraAspect<EnvironmentAspect>();
const Utils::Environment env = envAspect ? envAspect->environment()
: Utils::Environment::systemEnvironment();
return FileName::fromString(
runConfiguration()->macroExpander()->expandProcessArgs(
PathChooser::expandedDirectory(m_workingDirectory.toString(), env, QString())));
}
}
FileName WorkingDirectoryAspect::defaultWorkingDirectory() const