summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2010-05-12 11:48:00 +0200
committerhjk <qtc-committer@nokia.com>2010-05-12 11:48:00 +0200
commite65e011706915a90e98ee67046a150ade84757e6 (patch)
tree761291dc60d842dbb1534b54111114c310f1b12f /src/plugins
parent84f4193019a895d392dfb7491af9696af6837289 (diff)
downloadqt-creator-e65e011706915a90e98ee67046a150ade84757e6.tar.gz
debugger: let the user specify a working directory when starting a local
application
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/debugger/debuggerdialogs.cpp12
-rw-r--r--src/plugins/debugger/debuggerdialogs.h41
-rw-r--r--src/plugins/debugger/debuggermanager.cpp4
-rw-r--r--src/plugins/debugger/debuggermanager.h4
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp5
-rw-r--r--src/plugins/debugger/debuggerrunner.cpp4
-rw-r--r--src/plugins/debugger/gdb/localplaingdbadapter.cpp4
-rw-r--r--src/plugins/debugger/gdb/remoteplaingdbadapter.cpp4
-rw-r--r--src/plugins/debugger/gdb/termgdbadapter.cpp2
-rw-r--r--src/plugins/debugger/startexternaldialog.ui16
10 files changed, 67 insertions, 29 deletions
diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp
index 3f07315ef8..f4677bbcb5 100644
--- a/src/plugins/debugger/debuggerdialogs.cpp
+++ b/src/plugins/debugger/debuggerdialogs.cpp
@@ -516,6 +516,8 @@ StartExternalDialog::StartExternalDialog(QWidget *parent)
m_ui->execFile->setExpectedKind(Utils::PathChooser::File);
m_ui->execFile->setPromptDialogTitle(tr("Select Executable"));
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
+ m_ui->workingDirectory->setExpectedKind(Utils::PathChooser::Directory);
+ m_ui->workingDirectory->setPromptDialogTitle(tr("Select Working Directory"));
//execLabel->setHidden(false);
//execEdit->setHidden(false);
@@ -543,6 +545,16 @@ QString StartExternalDialog::executableFile() const
return m_ui->execFile->path();
}
+void StartExternalDialog::setWorkingDirectory(const QString &str)
+{
+ m_ui->workingDirectory->setPath(str);
+}
+
+QString StartExternalDialog::workingDirectory() const
+{
+ return m_ui->workingDirectory->path();
+}
+
void StartExternalDialog::setExecutableArguments(const QString &str)
{
m_ui->argsEdit->setText(str);
diff --git a/src/plugins/debugger/debuggerdialogs.h b/src/plugins/debugger/debuggerdialogs.h
index 13ad67358f..1cc868af4f 100644
--- a/src/plugins/debugger/debuggerdialogs.h
+++ b/src/plugins/debugger/debuggerdialogs.h
@@ -116,15 +116,17 @@ public:
explicit AttachTcfDialog(QWidget *parent);
~AttachTcfDialog();
+ QString remoteChannel() const;
void setRemoteChannel(const QString &host);
+
+ QString remoteArchitecture() const;
void setRemoteArchitecture(const QString &arch);
void setRemoteArchitectures(const QStringList &arches);
- QString remoteChannel() const;
- QString remoteArchitecture() const;
- void setServerStartScript(const QString &scriptName);
+
QString serverStartScript() const;
- void setUseServerStartScript(bool on);
bool useServerStartScript() const;
+ void setUseServerStartScript(bool on);
+ void setServerStartScript(const QString &scriptName);
private slots:
void updateState();
@@ -141,11 +143,15 @@ public:
explicit StartExternalDialog(QWidget *parent);
~StartExternalDialog();
+ QString executableFile() const;
void setExecutableFile(const QString &executable);
- void setExecutableArguments(const QString &args);
- QString executableFile() const;
QString executableArguments() const;
+ void setExecutableArguments(const QString &args);
+
+ QString workingDirectory() const;
+ void setWorkingDirectory(const QString &str);
+
bool breakAtMain() const;
private:
@@ -160,21 +166,26 @@ public:
explicit StartRemoteDialog(QWidget *parent);
~StartRemoteDialog();
- void setRemoteChannel(const QString &host);
- void setRemoteArchitecture(const QString &arch);
- void setRemoteArchitectures(const QStringList &arches);
- void setLocalExecutable(const QString &executable);
- void setDebugger(const QString &debugger);
QString localExecutable() const;
+ void setLocalExecutable(const QString &executable);
+
QString remoteChannel() const;
+ void setRemoteChannel(const QString &host);
+
QString remoteArchitecture() const;
- void setServerStartScript(const QString &scriptName);
- QString serverStartScript() const;
- void setUseServerStartScript(bool on);
+ void setRemoteArchitecture(const QString &arch);
+ void setRemoteArchitectures(const QStringList &arches);
+
bool useServerStartScript() const;
- void setSysRoot(const QString &sysRoot);
+ void setUseServerStartScript(bool on);
+ QString serverStartScript() const;
+ void setServerStartScript(const QString &scriptName);
+
QString sysRoot() const;
+ void setSysRoot(const QString &sysRoot);
+
QString debugger() const;
+ void setDebugger(const QString &debugger);
private slots:
void updateState();
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 064430b12c..39d3d30855 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -181,7 +181,7 @@ DEBUGGER_EXPORT QDebug operator<<(QDebug str, const DebuggerStartParameters &p)
nospace << "executable=" << p.executable << " coreFile=" << p.coreFile
<< " processArgs=" << p.processArgs.join(sep)
<< " environment=<" << p.environment.size() << " variables>"
- << " workingDir=" << p.workingDir << " buildDir=" << p.buildDir
+ << " workingDir=" << p.workingDirectory << " buildDir=" << p.buildDirectory
<< " attachPID=" << p.attachPID << " useTerminal=" << p.useTerminal
<< " remoteChannel=" << p.remoteChannel
<< " remoteArchitecture=" << p.remoteArchitecture
@@ -2068,7 +2068,7 @@ void DebuggerManager::runTest(const QString &fileName)
{
d->m_startParameters->executable = fileName;
d->m_startParameters->processArgs = QStringList() << "--run-debuggee";
- d->m_startParameters->workingDir.clear();
+ d->m_startParameters->workingDirectory.clear();
//startNewDebugger(StartInternal);
}
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index 8b15b6487f..5d3f03fe39 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -111,8 +111,8 @@ public:
QString coreFile;
QStringList processArgs;
QStringList environment;
- QString workingDir;
- QString buildDir;
+ QString workingDirectory;
+ QString buildDirectory;
qint64 attachPID;
bool useTerminal;
QString crashParameter; // for AttachCrashedExternal
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 0418a1830e..1dc865804a 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1401,6 +1401,8 @@ void DebuggerPlugin::startExternalApplication()
configValue(_("LastExternalExecutableFile")).toString());
dlg.setExecutableArguments(
configValue(_("LastExternalExecutableArguments")).toString());
+ dlg.setWorkingDirectory(
+ configValue(_("LastExternalWorkingDirectory")).toString());
if (dlg.exec() != QDialog::Accepted)
return;
@@ -1408,8 +1410,11 @@ void DebuggerPlugin::startExternalApplication()
dlg.executableFile());
setConfigValue(_("LastExternalExecutableArguments"),
dlg.executableArguments());
+ setConfigValue(_("LastExternalWorkingDirectory"),
+ dlg.workingDirectory());
sp->executable = dlg.executableFile();
sp->startMode = StartExternal;
+ sp->workingDirectory = dlg.workingDirectory();
if (!dlg.executableArguments().isEmpty())
sp->processArgs = dlg.executableArguments().split(QLatin1Char(' '));
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index d5739c46b6..450c6ce649 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -118,7 +118,7 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
m_startParameters->startMode = StartInternal;
m_startParameters->executable = runConfiguration->executable();
m_startParameters->environment = runConfiguration->environment().toStringList();
- m_startParameters->workingDir = runConfiguration->workingDirectory();
+ m_startParameters->workingDirectory = runConfiguration->workingDirectory();
m_startParameters->processArgs = runConfiguration->commandLineArguments();
switch (m_startParameters->toolChainType) {
@@ -130,7 +130,7 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
break;
}
if (runConfiguration->target()->project()) {
- m_startParameters->buildDir =
+ m_startParameters->buildDirectory =
runConfiguration->target()->activeBuildConfiguration()->buildDirectory();
}
m_startParameters->useTerminal =
diff --git a/src/plugins/debugger/gdb/localplaingdbadapter.cpp b/src/plugins/debugger/gdb/localplaingdbadapter.cpp
index 7c370cb946..a5f168f081 100644
--- a/src/plugins/debugger/gdb/localplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/localplaingdbadapter.cpp
@@ -79,8 +79,8 @@ void LocalPlainGdbAdapter::startAdapter()
}
gdbArgs.append(_("--tty=") + m_outputCollector.serverName());
- if (!startParameters().workingDir.isEmpty())
- m_gdbProc.setWorkingDirectory(startParameters().workingDir);
+ if (!startParameters().workingDirectory.isEmpty())
+ m_gdbProc.setWorkingDirectory(startParameters().workingDirectory);
if (!startParameters().environment.isEmpty())
m_gdbProc.setEnvironment(startParameters().environment);
diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
index 4bddbbe578..77443ad753 100644
--- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
@@ -50,8 +50,8 @@ void RemotePlainGdbAdapter::startAdapter()
setState(AdapterStarting);
debugMessage(QLatin1String("TRYING TO START ADAPTER"));
- if (!startParameters().workingDir.isEmpty())
- m_gdbProc.setWorkingDirectory(startParameters().workingDir);
+ if (!startParameters().workingDirectory.isEmpty())
+ m_gdbProc.setWorkingDirectory(startParameters().workingDirectory);
if (!startParameters().environment.isEmpty())
m_gdbProc.setEnvironment(startParameters().environment);
diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp
index ddb95c5559..489a5791d8 100644
--- a/src/plugins/debugger/gdb/termgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/termgdbadapter.cpp
@@ -91,7 +91,7 @@ void TermGdbAdapter::startAdapter()
// m_stubProc.stop();
// m_stubProc.blockSignals(false);
- m_stubProc.setWorkingDirectory(startParameters().workingDir);
+ m_stubProc.setWorkingDirectory(startParameters().workingDirectory);
// Set environment + dumper preload.
QStringList environment = startParameters().environment;
m_stubProc.setEnvironment(environment);
diff --git a/src/plugins/debugger/startexternaldialog.ui b/src/plugins/debugger/startexternaldialog.ui
index 90ed85ac59..c3408136a4 100644
--- a/src/plugins/debugger/startexternaldialog.ui
+++ b/src/plugins/debugger/startexternaldialog.ui
@@ -48,6 +48,9 @@
</property>
</widget>
</item>
+ <item row="0" column="1">
+ <widget class="Utils::PathChooser" name="execFile" native="true"/>
+ </item>
<item row="1" column="0">
<widget class="QLabel" name="argLabel">
<property name="text">
@@ -58,17 +61,24 @@
<item row="1" column="1">
<widget class="QLineEdit" name="argsEdit"/>
</item>
- <item row="0" column="1">
- <widget class="Utils::PathChooser" name="execFile" native="true"/>
+ <item row="2" column="0">
+ <widget class="QLabel" name="workingDirectoryLabel">
+ <property name="text">
+ <string>Working directory:</string>
+ </property>
+ </widget>
</item>
<item row="2" column="1">
+ <widget class="Utils::PathChooser" name="workingDirectory" native="true"/>
+ </item>
+ <item row="3" column="1">
<widget class="QCheckBox" name="checkBoxBreakAtMain">
<property name="text">
<string/>
</property>
</widget>
</item>
- <item row="2" column="0">
+ <item row="3" column="0">
<widget class="QLabel" name="labelBreakAtMain">
<property name="text">
<string>Break at 'main':</string>