forked from qt-creator/qt-creator
Utils/ProjectExplorer: Use FilePath for Runnable::workingDirectory
... and in some using code. Change-Id: I231ea56628908f7d305d13f07eabe8803fe8a791 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -589,12 +589,20 @@ static QString quoteArgWin(const QString &arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ProcessArgs ProcessArgs::prepareArgs(const QString &cmd, SplitError *err, OsType osType,
|
ProcessArgs ProcessArgs::prepareArgs(const QString &cmd, SplitError *err, OsType osType,
|
||||||
const Environment *env, const QString *pwd, bool abortOnMeta)
|
const Environment *env, const FilePath *pwd, bool abortOnMeta)
|
||||||
{
|
{
|
||||||
|
QString wdcopy;
|
||||||
|
QString *wd = nullptr;
|
||||||
|
if (pwd) {
|
||||||
|
wdcopy = pwd->toString();
|
||||||
|
wd = &wdcopy;
|
||||||
|
}
|
||||||
|
ProcessArgs res;
|
||||||
if (osType == OsTypeWindows)
|
if (osType == OsTypeWindows)
|
||||||
return prepareArgsWin(cmd, err, env, pwd);
|
res = prepareArgsWin(cmd, err, env, wd);
|
||||||
else
|
else
|
||||||
return createUnixArgs(splitArgs(cmd, osType, abortOnMeta, err, env, pwd));
|
res = createUnixArgs(splitArgs(cmd, osType, abortOnMeta, err, env, wd));
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ProcessArgs::quoteArg(const QString &arg, OsType osType)
|
QString ProcessArgs::quoteArg(const QString &arg, OsType osType)
|
||||||
@@ -637,7 +645,7 @@ void ProcessArgs::addArgs(QString *args, const QStringList &inArgs)
|
|||||||
|
|
||||||
bool ProcessArgs::prepareCommand(const QString &command, const QString &arguments,
|
bool ProcessArgs::prepareCommand(const QString &command, const QString &arguments,
|
||||||
QString *outCmd, ProcessArgs *outArgs, OsType osType,
|
QString *outCmd, ProcessArgs *outArgs, OsType osType,
|
||||||
const Environment *env, const QString *pwd)
|
const Environment *env, const FilePath *pwd)
|
||||||
{
|
{
|
||||||
ProcessArgs::SplitError err;
|
ProcessArgs::SplitError err;
|
||||||
*outArgs = ProcessArgs::prepareArgs(arguments, &err, osType, env, pwd);
|
*outArgs = ProcessArgs::prepareArgs(arguments, &err, osType, env, pwd);
|
||||||
|
@@ -64,12 +64,12 @@ public:
|
|||||||
//! Prepare argument of a shell command for feeding into QProcess
|
//! Prepare argument of a shell command for feeding into QProcess
|
||||||
static ProcessArgs prepareArgs(const QString &cmd, SplitError *err,
|
static ProcessArgs prepareArgs(const QString &cmd, SplitError *err,
|
||||||
OsType osType = HostOsInfo::hostOs(),
|
OsType osType = HostOsInfo::hostOs(),
|
||||||
const Environment *env = nullptr, const QString *pwd = nullptr,
|
const Environment *env = nullptr, const FilePath *pwd = nullptr,
|
||||||
bool abortOnMeta = true);
|
bool abortOnMeta = true);
|
||||||
//! Prepare a shell command for feeding into QProcess
|
//! Prepare a shell command for feeding into QProcess
|
||||||
static bool prepareCommand(const QString &command, const QString &arguments,
|
static bool prepareCommand(const QString &command, const QString &arguments,
|
||||||
QString *outCmd, ProcessArgs *outArgs, OsType osType = HostOsInfo::hostOs(),
|
QString *outCmd, ProcessArgs *outArgs, OsType osType = HostOsInfo::hostOs(),
|
||||||
const Environment *env = nullptr, const QString *pwd = nullptr);
|
const Environment *env = nullptr, const FilePath *pwd = nullptr);
|
||||||
//! Quote and append each argument to a shell command
|
//! Quote and append each argument to a shell command
|
||||||
static void addArgs(QString *args, const QStringList &inArgs);
|
static void addArgs(QString *args, const QStringList &inArgs);
|
||||||
//! Append already quoted arguments to a shell command
|
//! Append already quoted arguments to a shell command
|
||||||
|
@@ -83,7 +83,7 @@ public:
|
|||||||
|
|
||||||
static QString m_defaultConsoleProcess;
|
static QString m_defaultConsoleProcess;
|
||||||
ConsoleProcess::Mode m_mode = ConsoleProcess::Run;
|
ConsoleProcess::Mode m_mode = ConsoleProcess::Run;
|
||||||
QString m_workingDir;
|
FilePath m_workingDir;
|
||||||
Environment m_environment;
|
Environment m_environment;
|
||||||
qint64 m_appPid = 0;
|
qint64 m_appPid = 0;
|
||||||
int m_appCode;
|
int m_appCode;
|
||||||
@@ -462,7 +462,7 @@ bool ConsoleProcess::start()
|
|||||||
d->m_pid = new PROCESS_INFORMATION;
|
d->m_pid = new PROCESS_INFORMATION;
|
||||||
ZeroMemory(d->m_pid, sizeof(PROCESS_INFORMATION));
|
ZeroMemory(d->m_pid, sizeof(PROCESS_INFORMATION));
|
||||||
|
|
||||||
QString workDir = QDir::toNativeSeparators(workingDirectory());
|
QString workDir = workingDirectory().toUserOutput();
|
||||||
if (!workDir.isEmpty() && !workDir.endsWith(QLatin1Char('\\')))
|
if (!workDir.isEmpty() && !workDir.endsWith(QLatin1Char('\\')))
|
||||||
workDir.append(QLatin1Char('\\'));
|
workDir.append(QLatin1Char('\\'));
|
||||||
|
|
||||||
@@ -583,7 +583,7 @@ bool ConsoleProcess::start()
|
|||||||
<< modeOption(d->m_mode)
|
<< modeOption(d->m_mode)
|
||||||
<< d->m_stubServer.fullServerName()
|
<< d->m_stubServer.fullServerName()
|
||||||
<< msgPromptToClose()
|
<< msgPromptToClose()
|
||||||
<< workingDirectory()
|
<< workingDirectory().path()
|
||||||
<< (d->m_tempFile ? d->m_tempFile->fileName() : QString())
|
<< (d->m_tempFile ? d->m_tempFile->fileName() : QString())
|
||||||
<< QString::number(getpid())
|
<< QString::number(getpid())
|
||||||
<< pcmd
|
<< pcmd
|
||||||
@@ -958,12 +958,12 @@ QProcess::ExitStatus ConsoleProcess::exitStatus() const
|
|||||||
return d->m_appStatus;
|
return d->m_appStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleProcess::setWorkingDirectory(const QString &dir)
|
void ConsoleProcess::setWorkingDirectory(const FilePath &dir)
|
||||||
{
|
{
|
||||||
d->m_workingDir = dir;
|
d->m_workingDir = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ConsoleProcess::workingDirectory() const
|
FilePath ConsoleProcess::workingDirectory() const
|
||||||
{
|
{
|
||||||
return d->m_workingDir;
|
return d->m_workingDir;
|
||||||
}
|
}
|
||||||
@@ -1025,9 +1025,9 @@ QString ConsoleProcess::msgUnexpectedOutput(const QByteArray &what)
|
|||||||
return tr("Unexpected output from helper program (%1).").arg(QString::fromLatin1(what));
|
return tr("Unexpected output from helper program (%1).").arg(QString::fromLatin1(what));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ConsoleProcess::msgCannotChangeToWorkDir(const QString & dir, const QString &why)
|
QString ConsoleProcess::msgCannotChangeToWorkDir(const FilePath &dir, const QString &why)
|
||||||
{
|
{
|
||||||
return tr("Cannot change to working directory \"%1\": %2").arg(dir, why);
|
return tr("Cannot change to working directory \"%1\": %2").arg(dir.toString(), why);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ConsoleProcess::msgCannotExecute(const QString & p, const QString &why)
|
QString ConsoleProcess::msgCannotExecute(const QString & p, const QString &why)
|
||||||
|
@@ -36,8 +36,9 @@ QT_END_NAMESPACE
|
|||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
|
|
||||||
class Environment;
|
|
||||||
class CommandLine;
|
class CommandLine;
|
||||||
|
class Environment;
|
||||||
|
class FilePath;
|
||||||
|
|
||||||
class QTCREATOR_UTILS_EXPORT TerminalCommand
|
class QTCREATOR_UTILS_EXPORT TerminalCommand
|
||||||
{
|
{
|
||||||
@@ -69,8 +70,8 @@ public:
|
|||||||
|
|
||||||
void setAbortOnMetaChars(bool abort);
|
void setAbortOnMetaChars(bool abort);
|
||||||
|
|
||||||
void setWorkingDirectory(const QString &dir);
|
void setWorkingDirectory(const Utils::FilePath &dir);
|
||||||
QString workingDirectory() const;
|
Utils::FilePath workingDirectory() const;
|
||||||
|
|
||||||
void setEnvironment(const Environment &env);
|
void setEnvironment(const Environment &env);
|
||||||
Environment environment() const;
|
Environment environment() const;
|
||||||
@@ -135,7 +136,7 @@ private:
|
|||||||
static QString msgCannotWriteTempFile();
|
static QString msgCannotWriteTempFile();
|
||||||
static QString msgCannotCreateTempDir(const QString & dir, const QString &why);
|
static QString msgCannotCreateTempDir(const QString & dir, const QString &why);
|
||||||
static QString msgUnexpectedOutput(const QByteArray &what);
|
static QString msgUnexpectedOutput(const QByteArray &what);
|
||||||
static QString msgCannotChangeToWorkDir(const QString & dir, const QString &why);
|
static QString msgCannotChangeToWorkDir(const Utils::FilePath &dir, const QString &why);
|
||||||
static QString msgCannotExecute(const QString & p, const QString &why);
|
static QString msgCannotExecute(const QString & p, const QString &why);
|
||||||
|
|
||||||
void emitError(QProcess::ProcessError err, const QString &errorString);
|
void emitError(QProcess::ProcessError err, const QString &errorString);
|
||||||
|
@@ -591,14 +591,14 @@ void QtcProcess::start()
|
|||||||
env = Environment::systemEnvironment();
|
env = Environment::systemEnvironment();
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString workDir = d->m_workingDirectory.path();
|
d->m_process->setWorkingDirectory(d->m_workingDirectory.path());
|
||||||
d->m_process->setWorkingDirectory(workDir);
|
|
||||||
|
|
||||||
QString command;
|
QString command;
|
||||||
ProcessArgs arguments;
|
ProcessArgs arguments;
|
||||||
bool success = ProcessArgs::prepareCommand(d->m_commandLine.executable().toString(),
|
bool success = ProcessArgs::prepareCommand(d->m_commandLine.executable().toString(),
|
||||||
d->m_commandLine.arguments(),
|
d->m_commandLine.arguments(),
|
||||||
&command, &arguments, osType, &env, &workDir);
|
&command, &arguments, osType, &env,
|
||||||
|
&d->m_workingDirectory);
|
||||||
if (osType == OsTypeWindows) {
|
if (osType == OsTypeWindows) {
|
||||||
QString args;
|
QString args;
|
||||||
if (d->m_useCtrlCStub) {
|
if (d->m_useCtrlCStub) {
|
||||||
|
@@ -125,7 +125,7 @@ QList<ITestConfiguration *> CTestTreeItem::testConfigurationsFor(const QStringLi
|
|||||||
}
|
}
|
||||||
const ProjectExplorer::BuildConfiguration *buildConfig = target->activeBuildConfiguration();
|
const ProjectExplorer::BuildConfiguration *buildConfig = target->activeBuildConfiguration();
|
||||||
if (QTC_GUARD(buildConfig))
|
if (QTC_GUARD(buildConfig))
|
||||||
config->setWorkingDirectory(buildConfig->buildDirectory().toString());
|
config->setWorkingDirectory(buildConfig->buildDirectory());
|
||||||
|
|
||||||
if (selected.isEmpty())
|
if (selected.isEmpty())
|
||||||
config->setTestCaseCount(testBase()->asTestTool()->rootNode()->childCount());
|
config->setTestCaseCount(testBase()->asTestTool()->rootNode()->childCount());
|
||||||
|
@@ -57,7 +57,7 @@ ITestConfiguration::ITestConfiguration(Autotest::ITestBase *testBase)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ITestConfiguration::setWorkingDirectory(const QString &workingDirectory)
|
void ITestConfiguration::setWorkingDirectory(const FilePath &workingDirectory)
|
||||||
{
|
{
|
||||||
m_runnable.workingDirectory = workingDirectory;
|
m_runnable.workingDirectory = workingDirectory;
|
||||||
}
|
}
|
||||||
@@ -65,9 +65,8 @@ void ITestConfiguration::setWorkingDirectory(const QString &workingDirectory)
|
|||||||
Utils::FilePath ITestConfiguration::workingDirectory() const
|
Utils::FilePath ITestConfiguration::workingDirectory() const
|
||||||
{
|
{
|
||||||
if (!m_runnable.workingDirectory.isEmpty()) {
|
if (!m_runnable.workingDirectory.isEmpty()) {
|
||||||
const QFileInfo info(m_runnable.workingDirectory);
|
if (m_runnable.workingDirectory.isDir()) // ensure wanted working dir does exist
|
||||||
if (info.isDir()) // ensure wanted working dir does exist
|
return m_runnable.workingDirectory.absoluteFilePath();
|
||||||
return Utils::FilePath::fromString(info.absoluteFilePath());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Utils::FilePath executable = executableFilePath();
|
const Utils::FilePath executable = executableFilePath();
|
||||||
|
@@ -60,7 +60,7 @@ public:
|
|||||||
|
|
||||||
void setEnvironment(const Utils::Environment &env) { m_runnable.environment = env; }
|
void setEnvironment(const Utils::Environment &env) { m_runnable.environment = env; }
|
||||||
Utils::Environment environment() const { return m_runnable.environment; }
|
Utils::Environment environment() const { return m_runnable.environment; }
|
||||||
void setWorkingDirectory(const QString &workingDirectory);
|
void setWorkingDirectory(const Utils::FilePath &workingDirectory);
|
||||||
Utils::FilePath workingDirectory() const;
|
Utils::FilePath workingDirectory() const;
|
||||||
bool hasExecutable() const;
|
bool hasExecutable() const;
|
||||||
Utils::FilePath executableFilePath() const;
|
Utils::FilePath executableFilePath() const;
|
||||||
|
@@ -67,7 +67,7 @@ public:
|
|||||||
QTC_ASSERT(m_testConfig, return r);
|
QTC_ASSERT(m_testConfig, return r);
|
||||||
r.executable = m_testConfig->executableFilePath();
|
r.executable = m_testConfig->executableFilePath();
|
||||||
r.commandLineArguments = m_testConfig->argumentsForTestRunner().join(' ');
|
r.commandLineArguments = m_testConfig->argumentsForTestRunner().join(' ');
|
||||||
r.workingDirectory = m_testConfig->workingDirectory().toString();
|
r.workingDirectory = m_testConfig->workingDirectory();
|
||||||
r.environment = m_testConfig->environment();
|
r.environment = m_testConfig->environment();
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@@ -911,7 +911,7 @@ void RunConfigurationSelectionDialog::populate()
|
|||||||
auto runnable = rc->runnable();
|
auto runnable = rc->runnable();
|
||||||
const QStringList rcDetails = { runnable.executable.toString(),
|
const QStringList rcDetails = { runnable.executable.toString(),
|
||||||
runnable.commandLineArguments,
|
runnable.commandLineArguments,
|
||||||
runnable.workingDirectory };
|
runnable.workingDirectory.toString() };
|
||||||
m_rcCombo->addItem(rc->displayName(), rcDetails);
|
m_rcCombo->addItem(rc->displayName(), rcDetails);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,8 @@
|
|||||||
#include <projectexplorer/runcontrol.h>
|
#include <projectexplorer/runcontrol.h>
|
||||||
#include <projectexplorer/target.h>
|
#include <projectexplorer/target.h>
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Qdb {
|
namespace Qdb {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -102,7 +104,7 @@ void QdbStopApplicationService::doDeploy()
|
|||||||
ProjectExplorer::Runnable runnable;
|
ProjectExplorer::Runnable runnable;
|
||||||
runnable.executable = Utils::FilePath::fromString(Constants::AppcontrollerFilepath);
|
runnable.executable = Utils::FilePath::fromString(Constants::AppcontrollerFilepath);
|
||||||
runnable.commandLineArguments = QStringLiteral("--stop");
|
runnable.commandLineArguments = QStringLiteral("--stop");
|
||||||
runnable.workingDirectory = QStringLiteral("/usr/bin");
|
runnable.workingDirectory = FilePath::fromString("/usr/bin");
|
||||||
|
|
||||||
d->applicationLauncher.start(runnable,
|
d->applicationLauncher.start(runnable,
|
||||||
ProjectExplorer::DeviceKitAspect::device(target()->kit()));
|
ProjectExplorer::DeviceKitAspect::device(target()->kit()));
|
||||||
|
@@ -334,7 +334,7 @@ void CorePlugin::addToPathChooserContextMenu(Utils::PathChooser *pathChooser, QM
|
|||||||
if (pathChooser->openTerminalHandler())
|
if (pathChooser->openTerminalHandler())
|
||||||
pathChooser->openTerminalHandler()();
|
pathChooser->openTerminalHandler()();
|
||||||
else
|
else
|
||||||
FileUtils::openTerminal(pathChooser->filePath().toString());
|
FileUtils::openTerminal(pathChooser->filePath());
|
||||||
});
|
});
|
||||||
menu->insertAction(firstAction, showInTerminal);
|
menu->insertAction(firstAction, showInTerminal);
|
||||||
|
|
||||||
|
@@ -2573,7 +2573,7 @@ void EditorManagerPrivate::openTerminal()
|
|||||||
{
|
{
|
||||||
if (!d->m_contextMenuEntry || d->m_contextMenuEntry->fileName().isEmpty())
|
if (!d->m_contextMenuEntry || d->m_contextMenuEntry->fileName().isEmpty())
|
||||||
return;
|
return;
|
||||||
FileUtils::openTerminal(d->m_contextMenuEntry->fileName().parentDir().toString());
|
FileUtils::openTerminal(d->m_contextMenuEntry->fileName().parentDir());
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorManagerPrivate::findInDirectory()
|
void EditorManagerPrivate::findInDirectory()
|
||||||
|
@@ -124,14 +124,14 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileUtils::openTerminal(const QString &path)
|
void FileUtils::openTerminal(const FilePath &path)
|
||||||
{
|
{
|
||||||
openTerminal(path, Environment::systemEnvironment());
|
openTerminal(path, Environment::systemEnvironment());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileUtils::openTerminal(const QString &path, const Environment &env)
|
void FileUtils::openTerminal(const FilePath &path, const Environment &env)
|
||||||
{
|
{
|
||||||
const QFileInfo fileInfo(path);
|
const QFileInfo fileInfo = path.toFileInfo();
|
||||||
const QString pwd = QDir::toNativeSeparators(fileInfo.isDir() ?
|
const QString pwd = QDir::toNativeSeparators(fileInfo.isDir() ?
|
||||||
fileInfo.absoluteFilePath() :
|
fileInfo.absoluteFilePath() :
|
||||||
fileInfo.absolutePath());
|
fileInfo.absolutePath());
|
||||||
|
@@ -43,8 +43,8 @@ struct CORE_EXPORT FileUtils
|
|||||||
{
|
{
|
||||||
// Helpers for common directory browser options.
|
// Helpers for common directory browser options.
|
||||||
static void showInGraphicalShell(QWidget *parent, const QString &path);
|
static void showInGraphicalShell(QWidget *parent, const QString &path);
|
||||||
static void openTerminal(const QString &path);
|
static void openTerminal(const Utils::FilePath &path);
|
||||||
static void openTerminal(const QString &path, const Utils::Environment &env);
|
static void openTerminal(const Utils::FilePath &path, const Utils::Environment &env);
|
||||||
static QString msgFindInDirectory();
|
static QString msgFindInDirectory();
|
||||||
// Platform-dependent action descriptions
|
// Platform-dependent action descriptions
|
||||||
static QString msgGraphicalShellAction();
|
static QString msgGraphicalShellAction();
|
||||||
|
@@ -132,9 +132,9 @@ Runnable StartRemoteDialog::runnable() const
|
|||||||
Kit *kit = d->kitChooser->currentKit();
|
Kit *kit = d->kitChooser->currentKit();
|
||||||
Runnable r;
|
Runnable r;
|
||||||
r.device = DeviceKitAspect::device(kit);
|
r.device = DeviceKitAspect::device(kit);
|
||||||
r.executable = Utils::FilePath::fromString(d->executable->text());
|
r.executable = FilePath::fromString(d->executable->text());
|
||||||
r.commandLineArguments = d->arguments->text();
|
r.commandLineArguments = d->arguments->text();
|
||||||
r.workingDirectory = d->workingDirectory->text();
|
r.workingDirectory = FilePath::fromString(d->workingDirectory->text());
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -176,7 +176,7 @@ void StartApplicationParameters::toSettings(QSettings *settings) const
|
|||||||
settings->setValue("LastServerAddress", serverAddress);
|
settings->setValue("LastServerAddress", serverAddress);
|
||||||
settings->setValue("LastExternalExecutable", runnable.executable.toVariant());
|
settings->setValue("LastExternalExecutable", runnable.executable.toVariant());
|
||||||
settings->setValue("LastExternalExecutableArguments", runnable.commandLineArguments);
|
settings->setValue("LastExternalExecutableArguments", runnable.commandLineArguments);
|
||||||
settings->setValue("LastExternalWorkingDirectory", runnable.workingDirectory);
|
settings->setValue("LastExternalWorkingDirectory", runnable.workingDirectory.toVariant());
|
||||||
settings->setValue("LastExternalBreakAtMain", breakAtMain);
|
settings->setValue("LastExternalBreakAtMain", breakAtMain);
|
||||||
settings->setValue("LastExternalRunInTerminal", runInTerminal);
|
settings->setValue("LastExternalRunInTerminal", runInTerminal);
|
||||||
settings->setValue("LastExternalUseTargetExtended", useTargetExtendedRemote);
|
settings->setValue("LastExternalUseTargetExtended", useTargetExtendedRemote);
|
||||||
@@ -193,7 +193,7 @@ void StartApplicationParameters::fromSettings(const QSettings *settings)
|
|||||||
serverAddress = settings->value("LastServerAddress").toString();
|
serverAddress = settings->value("LastServerAddress").toString();
|
||||||
runnable.executable = FilePath::fromVariant(settings->value("LastExternalExecutable"));
|
runnable.executable = FilePath::fromVariant(settings->value("LastExternalExecutable"));
|
||||||
runnable.commandLineArguments = settings->value("LastExternalExecutableArguments").toString();
|
runnable.commandLineArguments = settings->value("LastExternalExecutableArguments").toString();
|
||||||
runnable.workingDirectory = settings->value("LastExternalWorkingDirectory").toString();
|
runnable.workingDirectory = FilePath::fromVariant(settings->value("LastExternalWorkingDirectory"));
|
||||||
breakAtMain = settings->value("LastExternalBreakAtMain").toBool();
|
breakAtMain = settings->value("LastExternalBreakAtMain").toBool();
|
||||||
runInTerminal = settings->value("LastExternalRunInTerminal").toBool();
|
runInTerminal = settings->value("LastExternalRunInTerminal").toBool();
|
||||||
useTargetExtendedRemote = settings->value("LastExternalUseTargetExtended").toBool();
|
useTargetExtendedRemote = settings->value("LastExternalUseTargetExtended").toBool();
|
||||||
@@ -490,7 +490,7 @@ StartApplicationParameters StartApplicationDialog::parameters() const
|
|||||||
result.kitId = d->kitChooser->currentKitId();
|
result.kitId = d->kitChooser->currentKitId();
|
||||||
result.debugInfoLocation = d->debuginfoPathChooser->filePath().toString();
|
result.debugInfoLocation = d->debuginfoPathChooser->filePath().toString();
|
||||||
result.runnable.commandLineArguments = d->arguments->text();
|
result.runnable.commandLineArguments = d->arguments->text();
|
||||||
result.runnable.workingDirectory = d->workingDirectory->filePath().toString();
|
result.runnable.workingDirectory = d->workingDirectory->filePath();
|
||||||
result.breakAtMain = d->breakAtMainCheckBox->isChecked();
|
result.breakAtMain = d->breakAtMainCheckBox->isChecked();
|
||||||
result.runInTerminal = d->runInTerminalCheckBox->isChecked();
|
result.runInTerminal = d->runInTerminalCheckBox->isChecked();
|
||||||
result.useTargetExtendedRemote = d->useTargetExtendedRemoteCheckBox->isChecked();
|
result.useTargetExtendedRemote = d->useTargetExtendedRemoteCheckBox->isChecked();
|
||||||
@@ -508,7 +508,7 @@ void StartApplicationDialog::setParameters(const StartApplicationParameters &p)
|
|||||||
d->serverResetCommandsTextEdit->setPlainText(p.serverResetCommands);
|
d->serverResetCommandsTextEdit->setPlainText(p.serverResetCommands);
|
||||||
d->debuginfoPathChooser->setPath(p.debugInfoLocation);
|
d->debuginfoPathChooser->setPath(p.debugInfoLocation);
|
||||||
d->arguments->setText(p.runnable.commandLineArguments);
|
d->arguments->setText(p.runnable.commandLineArguments);
|
||||||
d->workingDirectory->setPath(p.runnable.workingDirectory);
|
d->workingDirectory->setFilePath(p.runnable.workingDirectory);
|
||||||
d->breakAtMainCheckBox->setChecked(p.breakAtMain);
|
d->breakAtMainCheckBox->setChecked(p.breakAtMain);
|
||||||
d->runInTerminalCheckBox->setChecked(p.runInTerminal);
|
d->runInTerminalCheckBox->setChecked(p.runInTerminal);
|
||||||
d->useTargetExtendedRemoteCheckBox->setChecked(p.useTargetExtendedRemote);
|
d->useTargetExtendedRemoteCheckBox->setChecked(p.useTargetExtendedRemote);
|
||||||
|
@@ -2627,8 +2627,7 @@ QString DebuggerEngine::formatStartParameters() const
|
|||||||
str << " [terminal]";
|
str << " [terminal]";
|
||||||
str << '\n';
|
str << '\n';
|
||||||
if (!sp.inferior.workingDirectory.isEmpty())
|
if (!sp.inferior.workingDirectory.isEmpty())
|
||||||
str << "Directory: " << QDir::toNativeSeparators(sp.inferior.workingDirectory)
|
str << "Directory: " << sp.inferior.workingDirectory.toUserOutput() << '\n';
|
||||||
<< '\n';
|
|
||||||
}
|
}
|
||||||
if (!sp.debugger.executable.isEmpty())
|
if (!sp.debugger.executable.isEmpty())
|
||||||
str << "Debugger: " << sp.debugger.executable.toUserOutput() << '\n';
|
str << "Debugger: " << sp.debugger.executable.toUserOutput() << '\n';
|
||||||
|
@@ -346,7 +346,7 @@ Runnable DebuggerKitAspect::runnable(const Kit *kit)
|
|||||||
Runnable runnable;
|
Runnable runnable;
|
||||||
if (const DebuggerItem *item = debugger(kit)) {
|
if (const DebuggerItem *item = debugger(kit)) {
|
||||||
runnable.executable = item->command();
|
runnable.executable = item->command();
|
||||||
runnable.workingDirectory = item->workingDirectory().toString();
|
runnable.workingDirectory = item->workingDirectory();
|
||||||
runnable.environment = kit->runEnvironment();
|
runnable.environment = kit->runEnvironment();
|
||||||
runnable.environment.set("LC_NUMERIC", "C");
|
runnable.environment.set("LC_NUMERIC", "C");
|
||||||
}
|
}
|
||||||
|
@@ -889,7 +889,7 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, AllowTerminal allowTerm
|
|||||||
m_runParameters.inferior = runnable();
|
m_runParameters.inferior = runnable();
|
||||||
// Normalize to work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch'...)
|
// Normalize to work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch'...)
|
||||||
m_runParameters.inferior.workingDirectory =
|
m_runParameters.inferior.workingDirectory =
|
||||||
FileUtils::normalizePathName(m_runParameters.inferior.workingDirectory);
|
FilePath::fromString(FileUtils::normalizePathName(m_runParameters.inferior.workingDirectory.toString()));
|
||||||
setUseTerminal(allowTerminal == DoAllowTerminal && m_runParameters.useTerminal);
|
setUseTerminal(allowTerminal == DoAllowTerminal && m_runParameters.useTerminal);
|
||||||
|
|
||||||
const QByteArray envBinary = qgetenv("QTC_DEBUGGER_PATH");
|
const QByteArray envBinary = qgetenv("QTC_DEBUGGER_PATH");
|
||||||
|
@@ -3848,7 +3848,7 @@ void GdbEngine::setupEngine()
|
|||||||
showMessage("STARTING " + gdbCommand.toUserOutput());
|
showMessage("STARTING " + gdbCommand.toUserOutput());
|
||||||
|
|
||||||
m_gdbProc.setCommand(gdbCommand);
|
m_gdbProc.setCommand(gdbCommand);
|
||||||
if (QFileInfo(rp.debugger.workingDirectory).isDir())
|
if (rp.debugger.workingDirectory.isDir())
|
||||||
m_gdbProc.setWorkingDirectory(rp.debugger.workingDirectory);
|
m_gdbProc.setWorkingDirectory(rp.debugger.workingDirectory);
|
||||||
m_gdbProc.setEnvironment(gdbEnv);
|
m_gdbProc.setEnvironment(gdbEnv);
|
||||||
m_gdbProc.setKeepWriteChannelOpen();
|
m_gdbProc.setKeepWriteChannelOpen();
|
||||||
@@ -4463,7 +4463,7 @@ void GdbEngine::setupInferior()
|
|||||||
|
|
||||||
setEnvironmentVariables();
|
setEnvironmentVariables();
|
||||||
if (!rp.inferior.workingDirectory.isEmpty())
|
if (!rp.inferior.workingDirectory.isEmpty())
|
||||||
runCommand({"cd " + rp.inferior.workingDirectory});
|
runCommand({"cd " + rp.inferior.workingDirectory.path()});
|
||||||
if (!rp.inferior.commandLineArguments.isEmpty()) {
|
if (!rp.inferior.commandLineArguments.isEmpty()) {
|
||||||
QString args = rp.inferior.commandLineArguments;
|
QString args = rp.inferior.commandLineArguments;
|
||||||
runCommand({"-exec-arguments " + args});
|
runCommand({"-exec-arguments " + args});
|
||||||
|
@@ -213,7 +213,7 @@ void LldbEngine::setupEngine()
|
|||||||
Environment environment = runParameters().debugger.environment;
|
Environment environment = runParameters().debugger.environment;
|
||||||
environment.appendOrSet("PYTHONUNBUFFERED", "1"); // avoid flushing problem on macOS
|
environment.appendOrSet("PYTHONUNBUFFERED", "1"); // avoid flushing problem on macOS
|
||||||
m_lldbProc.setEnvironment(environment);
|
m_lldbProc.setEnvironment(environment);
|
||||||
if (QFileInfo(runParameters().debugger.workingDirectory).isDir())
|
if (runParameters().debugger.workingDirectory.isDir())
|
||||||
m_lldbProc.setWorkingDirectory(runParameters().debugger.workingDirectory);
|
m_lldbProc.setWorkingDirectory(runParameters().debugger.workingDirectory);
|
||||||
|
|
||||||
if (HostOsInfo::isRunningUnderRosetta())
|
if (HostOsInfo::isRunningUnderRosetta())
|
||||||
|
@@ -134,7 +134,7 @@ void PdbEngine::setupEngine()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QStringList args = {bridge, scriptFile.fileName()};
|
QStringList args = {bridge, scriptFile.fileName()};
|
||||||
args.append(Utils::ProcessArgs::splitArgs(runParameters().inferior.workingDirectory));
|
args.append(Utils::ProcessArgs::splitArgs(runParameters().inferior.workingDirectory.path()));
|
||||||
showMessage("STARTING " + m_interpreter + ' ' + args.join(' '));
|
showMessage("STARTING " + m_interpreter + ' ' + args.join(' '));
|
||||||
m_proc.setEnvironment(runParameters().debugger.environment.toStringList());
|
m_proc.setEnvironment(runParameters().debugger.environment.toStringList());
|
||||||
m_proc.start(m_interpreter, args);
|
m_proc.start(m_interpreter, args);
|
||||||
|
@@ -481,7 +481,7 @@ DockerDevice::DockerDevice(const DockerDeviceData &data)
|
|||||||
setDisplayName(tr("Docker Image \"%1\" (%2)").arg(data.repo).arg(data.imageId));
|
setDisplayName(tr("Docker Image \"%1\" (%2)").arg(data.repo).arg(data.imageId));
|
||||||
setAllowEmptyCommand(true);
|
setAllowEmptyCommand(true);
|
||||||
|
|
||||||
setOpenTerminal([this](const Environment &env, const QString &workingDir) {
|
setOpenTerminal([this](const Environment &env, const FilePath &workingDir) {
|
||||||
DeviceProcess * const proc = createProcess(nullptr);
|
DeviceProcess * const proc = createProcess(nullptr);
|
||||||
QObject::connect(proc, &DeviceProcess::finished, [proc] {
|
QObject::connect(proc, &DeviceProcess::finished, [proc] {
|
||||||
if (!proc->errorString().isEmpty()) {
|
if (!proc->errorString().isEmpty()) {
|
||||||
@@ -508,7 +508,7 @@ DockerDevice::DockerDevice(const DockerDeviceData &data)
|
|||||||
|
|
||||||
if (HostOsInfo::isAnyUnixHost()) {
|
if (HostOsInfo::isAnyUnixHost()) {
|
||||||
addDeviceAction({tr("Open Shell in Container"), [](const IDevice::Ptr &device, QWidget *) {
|
addDeviceAction({tr("Open Shell in Container"), [](const IDevice::Ptr &device, QWidget *) {
|
||||||
device->openTerminal(Environment(), QString());
|
device->openTerminal(Environment(), FilePath());
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -97,9 +97,8 @@ public:
|
|||||||
runControl->runConfiguration()->aspect<StringAspect>()->value(),
|
runControl->runConfiguration()->aspect<StringAspect>()->value(),
|
||||||
CommandLine::Raw);
|
CommandLine::Raw);
|
||||||
Runnable r;
|
Runnable r;
|
||||||
r.workingDirectory =
|
|
||||||
target->activeBuildConfiguration()->buildDirectory().toUserOutput();
|
|
||||||
r.setCommandLine(cmd);
|
r.setCommandLine(cmd);
|
||||||
|
r.workingDirectory = target->activeBuildConfiguration()->buildDirectory();
|
||||||
r.environment = target->activeBuildConfiguration()->environment();
|
r.environment = target->activeBuildConfiguration()->environment();
|
||||||
SimpleTargetRunner::doStart(r, {});
|
SimpleTargetRunner::doStart(r, {});
|
||||||
});
|
});
|
||||||
|
@@ -373,9 +373,9 @@ void ApplicationLauncherPrivate::start(const Runnable &runnable, const IDevice::
|
|||||||
|
|
||||||
if (m_isLocal) {
|
if (m_isLocal) {
|
||||||
// Work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch' ...)
|
// Work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch' ...)
|
||||||
const QString fixedPath = FileUtils::normalizePathName(runnable.workingDirectory);
|
const QString fixedPath = FileUtils::normalizePathName(runnable.workingDirectory.toString());
|
||||||
m_guiProcess.setWorkingDirectory(fixedPath);
|
m_guiProcess.setWorkingDirectory(fixedPath);
|
||||||
m_consoleProcess.setWorkingDirectory(fixedPath);
|
m_consoleProcess.setWorkingDirectory(FilePath::fromString(fixedPath));
|
||||||
|
|
||||||
Environment env = runnable.environment;
|
Environment env = runnable.environment;
|
||||||
if (m_runAsRoot)
|
if (m_runAsRoot)
|
||||||
|
@@ -64,7 +64,7 @@ BuildDirectoryAspect::BuildDirectoryAspect(const BuildConfiguration *bc) : d(new
|
|||||||
return pathChooser() ? pathChooser()->defaultValidationFunction()(edit, error) : true;
|
return pathChooser() ? pathChooser()->defaultValidationFunction()(edit, error) : true;
|
||||||
});
|
});
|
||||||
setOpenTerminalHandler([this, bc] {
|
setOpenTerminalHandler([this, bc] {
|
||||||
Core::FileUtils::openTerminal(value(), bc->environment());
|
Core::FileUtils::openTerminal(FilePath::fromString(value()), bc->environment());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -103,7 +103,7 @@ Runnable CustomExecutableRunConfiguration::runnable() const
|
|||||||
Runnable r;
|
Runnable r;
|
||||||
r.setCommandLine(commandLine());
|
r.setCommandLine(commandLine());
|
||||||
r.environment = aspect<EnvironmentAspect>()->environment();
|
r.environment = aspect<EnvironmentAspect>()->environment();
|
||||||
r.workingDirectory = workingDirectory.toString();
|
r.workingDirectory = workingDirectory;
|
||||||
r.device = DeviceManager::defaultDesktopDevice();
|
r.device = DeviceManager::defaultDesktopDevice();
|
||||||
|
|
||||||
if (!r.executable.isEmpty()) {
|
if (!r.executable.isEmpty()) {
|
||||||
|
@@ -64,7 +64,7 @@ DesktopDevice::DesktopDevice()
|
|||||||
const QString portRange =
|
const QString portRange =
|
||||||
QString::fromLatin1("%1-%2").arg(DESKTOP_PORT_START).arg(DESKTOP_PORT_END);
|
QString::fromLatin1("%1-%2").arg(DESKTOP_PORT_START).arg(DESKTOP_PORT_END);
|
||||||
setFreePorts(Utils::PortList::fromString(portRange));
|
setFreePorts(Utils::PortList::fromString(portRange));
|
||||||
setOpenTerminal([](const Utils::Environment &env, const QString &workingDir) {
|
setOpenTerminal([](const Environment &env, const FilePath &workingDir) {
|
||||||
Core::FileUtils::openTerminal(workingDir, env);
|
Core::FileUtils::openTerminal(workingDir, env);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -186,7 +186,7 @@ bool IDevice::canOpenTerminal() const
|
|||||||
return bool(d->openTerminal);
|
return bool(d->openTerminal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDevice::openTerminal(const Utils::Environment &env, const QString &workingDir) const
|
void IDevice::openTerminal(const Environment &env, const FilePath &workingDir) const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(canOpenTerminal(), return);
|
QTC_ASSERT(canOpenTerminal(), return);
|
||||||
d->openTerminal(env, workingDir);
|
d->openTerminal(env, workingDir);
|
||||||
|
@@ -223,7 +223,7 @@ public:
|
|||||||
void setupId(Origin origin, Utils::Id id = Utils::Id());
|
void setupId(Origin origin, Utils::Id id = Utils::Id());
|
||||||
|
|
||||||
bool canOpenTerminal() const;
|
bool canOpenTerminal() const;
|
||||||
void openTerminal(const Utils::Environment &env, const QString &workingDir) const;
|
void openTerminal(const Utils::Environment &env, const Utils::FilePath &workingDir) const;
|
||||||
|
|
||||||
bool isEmptyCommandAllowed() const;
|
bool isEmptyCommandAllowed() const;
|
||||||
void setAllowEmptyCommand(bool allow);
|
void setAllowEmptyCommand(bool allow);
|
||||||
@@ -274,7 +274,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
IDevice();
|
IDevice();
|
||||||
|
|
||||||
using OpenTerminal = std::function<void(const Utils::Environment &, const QString &)>;
|
using OpenTerminal = std::function<void(const Utils::Environment &, const Utils::FilePath &)>;
|
||||||
void setOpenTerminal(const OpenTerminal &openTerminal);
|
void setOpenTerminal(const OpenTerminal &openTerminal);
|
||||||
void setDisplayType(const QString &type);
|
void setDisplayType(const QString &type);
|
||||||
void setOsType(Utils::OsType osType);
|
void setOsType(Utils::OsType osType);
|
||||||
|
@@ -56,6 +56,8 @@
|
|||||||
#include <QTreeWidgetItem>
|
#include <QTreeWidgetItem>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
|
|
||||||
class PathTreeWidget : public QTreeWidget
|
class PathTreeWidget : public QTreeWidget
|
||||||
@@ -320,7 +322,7 @@ EnvironmentWidget::EnvironmentWidget(QWidget *parent, Type type, QWidget *additi
|
|||||||
if (d->m_openTerminalFunc)
|
if (d->m_openTerminalFunc)
|
||||||
d->m_openTerminalFunc(env);
|
d->m_openTerminalFunc(env);
|
||||||
else
|
else
|
||||||
Core::FileUtils::openTerminal(QDir::currentPath(), env);
|
Core::FileUtils::openTerminal(FilePath::fromString(QDir::currentPath()), env);
|
||||||
});
|
});
|
||||||
connect(d->m_detailsContainer, &Utils::DetailsWidget::linkActivated,
|
connect(d->m_detailsContainer, &Utils::DetailsWidget::linkActivated,
|
||||||
this, &EnvironmentWidget::linkActivated);
|
this, &EnvironmentWidget::linkActivated);
|
||||||
|
@@ -164,7 +164,7 @@ QString ProcessParameters::prettyCommand() const
|
|||||||
QString ProcessParameters::prettyArguments() const
|
QString ProcessParameters::prettyArguments() const
|
||||||
{
|
{
|
||||||
QString margs = effectiveArguments();
|
QString margs = effectiveArguments();
|
||||||
QString workDir = effectiveWorkingDirectory().toString();
|
FilePath workDir = effectiveWorkingDirectory();
|
||||||
ProcessArgs::SplitError err;
|
ProcessArgs::SplitError err;
|
||||||
ProcessArgs args =
|
ProcessArgs args =
|
||||||
ProcessArgs::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir);
|
ProcessArgs::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir);
|
||||||
|
@@ -3704,7 +3704,7 @@ void ProjectExplorerPluginPrivate::openTerminalHere(const EnvironmentGetter &env
|
|||||||
if (!environment)
|
if (!environment)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Core::FileUtils::openTerminal(currentNode->directory().toString(), environment.value());
|
Core::FileUtils::openTerminal(currentNode->directory(), environment.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPluginPrivate::openTerminalHereWithRunEnv()
|
void ProjectExplorerPluginPrivate::openTerminalHereWithRunEnv()
|
||||||
@@ -3725,8 +3725,8 @@ void ProjectExplorerPluginPrivate::openTerminalHereWithRunEnv()
|
|||||||
if (!device)
|
if (!device)
|
||||||
device = DeviceKitAspect::device(target->kit());
|
device = DeviceKitAspect::device(target->kit());
|
||||||
QTC_ASSERT(device && device->canOpenTerminal(), return);
|
QTC_ASSERT(device && device->canOpenTerminal(), return);
|
||||||
const QString workingDir = device->type() == Constants::DESKTOP_DEVICE_TYPE
|
const FilePath workingDir = device->type() == Constants::DESKTOP_DEVICE_TYPE
|
||||||
? currentNode->directory().toString() : runnable.workingDirectory;
|
? currentNode->directory() : runnable.workingDirectory;
|
||||||
device->openTerminal(runnable.environment, workingDir);
|
device->openTerminal(runnable.environment, workingDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -400,7 +400,7 @@ Runnable RunConfiguration::runnable() const
|
|||||||
Runnable r;
|
Runnable r;
|
||||||
r.setCommandLine(commandLine());
|
r.setCommandLine(commandLine());
|
||||||
if (auto workingDirectoryAspect = aspect<WorkingDirectoryAspect>())
|
if (auto workingDirectoryAspect = aspect<WorkingDirectoryAspect>())
|
||||||
r.workingDirectory = workingDirectoryAspect->workingDirectory(macroExpander()).toString();
|
r.workingDirectory = workingDirectoryAspect->workingDirectory(macroExpander());
|
||||||
if (auto environmentAspect = aspect<EnvironmentAspect>())
|
if (auto environmentAspect = aspect<EnvironmentAspect>())
|
||||||
r.environment = environmentAspect->environment();
|
r.environment = environmentAspect->environment();
|
||||||
if (m_runnableModifier)
|
if (m_runnableModifier)
|
||||||
|
@@ -72,7 +72,7 @@ public:
|
|||||||
|
|
||||||
Utils::FilePath executable;
|
Utils::FilePath executable;
|
||||||
QString commandLineArguments;
|
QString commandLineArguments;
|
||||||
QString workingDirectory;
|
Utils::FilePath workingDirectory;
|
||||||
Utils::Environment environment;
|
Utils::Environment environment;
|
||||||
IDevice::ConstPtr device; // Override the kit's device. Keep unset by default.
|
IDevice::ConstPtr device; // Override the kit's device. Keep unset by default.
|
||||||
QHash<Utils::Id, QVariant> extraData;
|
QHash<Utils::Id, QVariant> extraData;
|
||||||
|
@@ -517,10 +517,10 @@ void openPythonRepl(const FilePath &file, ReplType type)
|
|||||||
static const auto workingDir = [](const FilePath &file) {
|
static const auto workingDir = [](const FilePath &file) {
|
||||||
if (file.isEmpty()) {
|
if (file.isEmpty()) {
|
||||||
if (ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject())
|
if (ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject())
|
||||||
return project->projectDirectory().toFileInfo().filePath();
|
return project->projectDirectory();
|
||||||
return QDir::currentPath();
|
return FilePath::fromString(QDir::currentPath());
|
||||||
}
|
}
|
||||||
return file.toFileInfo().path();
|
return file;
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto args = QStringList{"-i"} + replImportArgs(file, type);
|
const auto args = QStringList{"-i"} + replImportArgs(file, type);
|
||||||
|
@@ -138,7 +138,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
|
|||||||
|
|
||||||
setRunnableModifier([this](Runnable &r) {
|
setRunnableModifier([this](Runnable &r) {
|
||||||
const QmlBuildSystem *bs = static_cast<QmlBuildSystem *>(activeBuildSystem());
|
const QmlBuildSystem *bs = static_cast<QmlBuildSystem *>(activeBuildSystem());
|
||||||
r.workingDirectory = bs->targetDirectory().toString();
|
r.workingDirectory = bs->targetDirectory();
|
||||||
});
|
});
|
||||||
|
|
||||||
setDisplayName(tr("QML Utility", "QMLRunConfiguration display name."));
|
setDisplayName(tr("QML Utility", "QMLRunConfiguration display name."));
|
||||||
|
@@ -55,7 +55,8 @@ QString QnxDeviceProcess::fullCommandLine(const Runnable &runnable) const
|
|||||||
"test -f $HOME/profile && . $HOME/profile ; ";
|
"test -f $HOME/profile && . $HOME/profile ; ";
|
||||||
|
|
||||||
if (!runnable.workingDirectory.isEmpty())
|
if (!runnable.workingDirectory.isEmpty())
|
||||||
fullCommandLine += QString::fromLatin1("cd %1 ; ").arg(ProcessArgs::quoteArg(runnable.workingDirectory));
|
fullCommandLine += QString::fromLatin1("cd %1 ; ").arg(
|
||||||
|
ProcessArgs::quoteArg(runnable.workingDirectory.toString()));
|
||||||
|
|
||||||
const Environment env = runnable.environment;
|
const Environment env = runnable.environment;
|
||||||
for (auto it = env.constBegin(); it != env.constEnd(); ++it) {
|
for (auto it = env.constBegin(); it != env.constEnd(); ++it) {
|
||||||
|
@@ -189,7 +189,7 @@ LinuxDevice::LinuxDevice()
|
|||||||
}
|
}
|
||||||
}});
|
}});
|
||||||
|
|
||||||
setOpenTerminal([this](const Utils::Environment &env, const QString &workingDir) {
|
setOpenTerminal([this](const Environment &env, const FilePath &workingDir) {
|
||||||
DeviceProcess * const proc = createProcess(nullptr);
|
DeviceProcess * const proc = createProcess(nullptr);
|
||||||
QObject::connect(proc, &DeviceProcess::finished, [proc] {
|
QObject::connect(proc, &DeviceProcess::finished, [proc] {
|
||||||
if (!proc->errorString().isEmpty()) {
|
if (!proc->errorString().isEmpty()) {
|
||||||
@@ -218,7 +218,7 @@ LinuxDevice::LinuxDevice()
|
|||||||
|
|
||||||
if (Utils::HostOsInfo::isAnyUnixHost()) {
|
if (Utils::HostOsInfo::isAnyUnixHost()) {
|
||||||
addDeviceAction({tr("Open Remote Shell"), [](const IDevice::Ptr &device, QWidget *) {
|
addDeviceAction({tr("Open Remote Shell"), [](const IDevice::Ptr &device, QWidget *) {
|
||||||
device->openTerminal(Utils::Environment(), QString());
|
device->openTerminal(Environment(), FilePath());
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -96,7 +96,7 @@ QString LinuxDeviceProcess::fullCommandLine(const Runnable &runnable) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!runnable.workingDirectory.isEmpty()) {
|
if (!runnable.workingDirectory.isEmpty()) {
|
||||||
cmd.addArgs({"cd", runnable.workingDirectory});
|
cmd.addArgs({"cd", runnable.workingDirectory.path()});
|
||||||
cmd.addArgs("&&", CommandLine::Raw);
|
cmd.addArgs("&&", CommandLine::Raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
using namespace RemoteLinux::Internal;
|
using namespace RemoteLinux::Internal;
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const QString FetchEnvButtonText
|
const QString FetchEnvButtonText
|
||||||
@@ -79,7 +80,7 @@ RemoteLinuxEnvironmentAspectWidget::RemoteLinuxEnvironmentAspectWidget
|
|||||||
}
|
}
|
||||||
const auto linuxDevice = device.dynamicCast<const LinuxDevice>();
|
const auto linuxDevice = device.dynamicCast<const LinuxDevice>();
|
||||||
QTC_ASSERT(linuxDevice, return);
|
QTC_ASSERT(linuxDevice, return);
|
||||||
linuxDevice->openTerminal(env, QString());
|
linuxDevice->openTerminal(env, FilePath());
|
||||||
};
|
};
|
||||||
envWidget()->setOpenTerminalFunc(openTerminalFunc);
|
envWidget()->setOpenTerminalFunc(openTerminalFunc);
|
||||||
}
|
}
|
||||||
|
@@ -207,7 +207,7 @@ void CallgrindController::getLocalDataFile()
|
|||||||
{
|
{
|
||||||
// we look for callgrind.out.PID, but there may be updated ones called ~.PID.NUM
|
// we look for callgrind.out.PID, but there may be updated ones called ~.PID.NUM
|
||||||
const QString baseFileName = QString("callgrind.out.%1").arg(m_pid);
|
const QString baseFileName = QString("callgrind.out.%1").arg(m_pid);
|
||||||
const QString workingDir = m_valgrindRunnable.workingDirectory;
|
const QString workingDir = m_valgrindRunnable.workingDirectory.toString();
|
||||||
// first, set the to-be-parsed file to callgrind.out.PID
|
// first, set the to-be-parsed file to callgrind.out.PID
|
||||||
QString fileName = workingDir.isEmpty() ? baseFileName : (workingDir + '/' + baseFileName);
|
QString fileName = workingDir.isEmpty() ? baseFileName : (workingDir + '/' + baseFileName);
|
||||||
|
|
||||||
|
@@ -752,7 +752,7 @@ void MemcheckToolPrivate::heobAction()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString executable = sr.executable.toString();
|
QString executable = sr.executable.toString();
|
||||||
const QString workingDirectory = Utils::FileUtils::normalizePathName(sr.workingDirectory);
|
const QString workingDirectory = Utils::FileUtils::normalizePathName(sr.workingDirectory.toString());
|
||||||
const QString commandLineArguments = sr.commandLineArguments;
|
const QString commandLineArguments = sr.commandLineArguments;
|
||||||
const QStringList envStrings = sr.environment.toStringList();
|
const QStringList envStrings = sr.environment.toStringList();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user