forked from qt-creator/qt-creator
add "run in terminal" options
This commit is contained in:
@@ -39,7 +39,7 @@ using namespace CMakeProjectManager;
|
||||
using namespace CMakeProjectManager::Internal;
|
||||
|
||||
CMakeRunConfiguration::CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory)
|
||||
: ProjectExplorer::ApplicationRunConfiguration(pro), m_target(target), m_workingDirectory(workingDirectory)
|
||||
: ProjectExplorer::ApplicationRunConfiguration(pro), m_runMode(Gui), m_target(target), m_workingDirectory(workingDirectory)
|
||||
{
|
||||
setName(target);
|
||||
}
|
||||
@@ -60,7 +60,7 @@ QString CMakeRunConfiguration::executable() const
|
||||
|
||||
ProjectExplorer::ApplicationRunConfiguration::RunMode CMakeRunConfiguration::runMode() const
|
||||
{
|
||||
return ProjectExplorer::ApplicationRunConfiguration::Gui;
|
||||
return m_runMode;
|
||||
}
|
||||
|
||||
QString CMakeRunConfiguration::workingDirectory() const
|
||||
@@ -85,6 +85,7 @@ void CMakeRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writ
|
||||
ProjectExplorer::ApplicationRunConfiguration::save(writer);
|
||||
writer.saveValue("CMakeRunConfiguration.Target", m_target);
|
||||
writer.saveValue("CMakeRunConfiguration.WorkingDirectory", m_workingDirectory);
|
||||
writer.saveValue("CMakeRunConfiguration.UseTerminal", m_runMode == Console);
|
||||
}
|
||||
|
||||
void CMakeRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader)
|
||||
@@ -92,6 +93,7 @@ void CMakeRunConfiguration::restore(const ProjectExplorer::PersistentSettingsRea
|
||||
ProjectExplorer::ApplicationRunConfiguration::restore(reader);
|
||||
m_target = reader.restoreValue("CMakeRunConfiguration.Target").toString();
|
||||
m_workingDirectory = reader.restoreValue("CMakeRunConfiguration.WorkingDirectory").toString();
|
||||
m_runMode = reader.restoreValue("CMakeRunConfiguration.UseTerminal").toBool() ? Console : Gui;
|
||||
}
|
||||
|
||||
QWidget *CMakeRunConfiguration::configurationWidget()
|
||||
|
||||
@@ -55,6 +55,7 @@ public:
|
||||
virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
||||
virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
||||
private:
|
||||
RunMode m_runMode;
|
||||
QString m_target;
|
||||
QString m_workingDirectory;
|
||||
};
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "environment.h"
|
||||
#include "project.h"
|
||||
|
||||
#include <QtGui/QCheckBox>
|
||||
#include <QtGui/QFormLayout>
|
||||
#include <QtGui/QLineEdit>
|
||||
#include <QtGui/QLabel>
|
||||
@@ -61,6 +62,9 @@ CustomExecutableConfigurationWidget::CustomExecutableConfigurationWidget(CustomE
|
||||
m_workingDirectory = new Core::Utils::PathChooser();
|
||||
layout->addRow("Working Directory:", m_workingDirectory);
|
||||
|
||||
m_useTerminalCheck = new QCheckBox(tr("Run in &Terminal"));
|
||||
layout->addRow(QString(), m_useTerminalCheck);
|
||||
|
||||
setLayout(layout);
|
||||
changed();
|
||||
|
||||
@@ -70,7 +74,9 @@ CustomExecutableConfigurationWidget::CustomExecutableConfigurationWidget(CustomE
|
||||
this, SLOT(setCommandLineArguments(const QString&)));
|
||||
connect(m_workingDirectory, SIGNAL(changed()),
|
||||
this, SLOT(setWorkingDirectory()));
|
||||
|
||||
connect(m_useTerminalCheck, SIGNAL(toggled(bool)),
|
||||
this, SLOT(termToggled(bool)));
|
||||
|
||||
connect(m_runConfiguration, SIGNAL(changed()), this, SLOT(changed()));
|
||||
}
|
||||
|
||||
@@ -93,6 +99,14 @@ void CustomExecutableConfigurationWidget::setWorkingDirectory()
|
||||
m_ignoreChange = false;
|
||||
}
|
||||
|
||||
void CustomExecutableConfigurationWidget::termToggled(bool on)
|
||||
{
|
||||
m_ignoreChange = true;
|
||||
m_runConfiguration->setRunMode(on ? ApplicationRunConfiguration::Console
|
||||
: ApplicationRunConfiguration::Gui);
|
||||
m_ignoreChange = false;
|
||||
}
|
||||
|
||||
void CustomExecutableConfigurationWidget::changed()
|
||||
{
|
||||
// We triggered the change, don't update us
|
||||
@@ -101,6 +115,7 @@ void CustomExecutableConfigurationWidget::changed()
|
||||
m_executableChooser->setPath(m_runConfiguration->baseExecutable());
|
||||
m_commandLineArgumentsLineEdit->setText(ProjectExplorer::Environment::joinArgumentList(m_runConfiguration->commandLineArguments()));
|
||||
m_workingDirectory->setPath(m_runConfiguration->baseWorkingDirectory());
|
||||
m_useTerminalCheck->setChecked(m_runConfiguration->runMode() == ApplicationRunConfiguration::Console);
|
||||
}
|
||||
|
||||
CustomExecutableRunConfiguration::CustomExecutableRunConfiguration(Project *pro)
|
||||
@@ -166,7 +181,7 @@ QString CustomExecutableRunConfiguration::executable() const
|
||||
|
||||
ApplicationRunConfiguration::RunMode CustomExecutableRunConfiguration::runMode() const
|
||||
{
|
||||
return ApplicationRunConfiguration::Gui;
|
||||
return m_runMode;
|
||||
}
|
||||
|
||||
QString CustomExecutableRunConfiguration::baseWorkingDirectory() const
|
||||
@@ -197,6 +212,7 @@ void CustomExecutableRunConfiguration::save(PersistentSettingsWriter &writer) co
|
||||
writer.saveValue("Executable", m_executable);
|
||||
writer.saveValue("Arguments", m_cmdArguments);
|
||||
writer.saveValue("WorkingDirectory", m_workingDirectory);
|
||||
writer.saveValue("UseTerminal", m_runMode == Console);
|
||||
ApplicationRunConfiguration::save(writer);
|
||||
}
|
||||
|
||||
@@ -205,6 +221,7 @@ void CustomExecutableRunConfiguration::restore(const PersistentSettingsReader &r
|
||||
m_executable = reader.restoreValue("Executable").toString();
|
||||
m_cmdArguments = reader.restoreValue("Arguments").toStringList();
|
||||
m_workingDirectory = reader.restoreValue("WorkingDirectory").toString();
|
||||
m_runMode = reader.restoreValue("UseTerminal").toBool() ? Console : Gui;
|
||||
ApplicationRunConfiguration::restore(reader);
|
||||
}
|
||||
|
||||
@@ -227,6 +244,12 @@ void CustomExecutableRunConfiguration::setWorkingDirectory(const QString &workin
|
||||
emit changed();
|
||||
}
|
||||
|
||||
void CustomExecutableRunConfiguration::setRunMode(RunMode runMode)
|
||||
{
|
||||
m_runMode = runMode;
|
||||
emit changed();
|
||||
}
|
||||
|
||||
QWidget *CustomExecutableRunConfiguration::configurationWidget()
|
||||
{
|
||||
return new CustomExecutableConfigurationWidget(this);
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <QtGui/QToolButton>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QCheckBox;
|
||||
class QLineEdit;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
@@ -75,14 +76,15 @@ public:
|
||||
virtual QWidget *configurationWidget();
|
||||
signals:
|
||||
void changed();
|
||||
private slots:
|
||||
private:
|
||||
void setExecutable(const QString &executable);
|
||||
void setCommandLineArguments(const QString &commandLineArguments);
|
||||
void setWorkingDirectory(const QString &workingDirectory);
|
||||
private:
|
||||
void setRunMode(RunMode runMode);
|
||||
QString m_executable;
|
||||
QString m_workingDirectory;
|
||||
QStringList m_cmdArguments;
|
||||
RunMode m_runMode;
|
||||
};
|
||||
|
||||
class CustomExecutableRunConfigurationFactory : public IRunConfigurationFactory
|
||||
@@ -110,12 +112,14 @@ private slots:
|
||||
void setExecutable();
|
||||
void setCommandLineArguments(const QString &commandLineArguments);
|
||||
void setWorkingDirectory();
|
||||
void termToggled(bool);
|
||||
private:
|
||||
bool m_ignoreChange;
|
||||
CustomExecutableRunConfiguration *m_runConfiguration;
|
||||
Core::Utils::PathChooser *m_executableChooser;
|
||||
QLineEdit *m_commandLineArgumentsLineEdit;
|
||||
Core::Utils::PathChooser *m_workingDirectory;
|
||||
QCheckBox *m_useTerminalCheck;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <QtGui/QFormLayout>
|
||||
#include <QtGui/QInputDialog>
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QCheckBox>
|
||||
|
||||
using namespace Qt4ProjectManager::Internal;
|
||||
using namespace Qt4ProjectManager;
|
||||
@@ -106,16 +107,25 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run
|
||||
argumentsLabel->setBuddy(m_argumentsLineEdit);
|
||||
toplayout->addRow(argumentsLabel, m_argumentsLineEdit);
|
||||
|
||||
m_useTerminalCheck = new QCheckBox(tr("Run in &Terminal"));
|
||||
m_useTerminalCheck->setChecked(m_qt4RunConfiguration->runMode() == ProjectExplorer::ApplicationRunConfiguration::Console);
|
||||
toplayout->addRow(QString(), m_useTerminalCheck);
|
||||
|
||||
connect(m_argumentsLineEdit, SIGNAL(textEdited(const QString&)),
|
||||
this, SLOT(setCommandLineArguments(const QString&)));
|
||||
|
||||
connect(m_nameLineEdit, SIGNAL(textEdited(const QString&)),
|
||||
this, SLOT(nameEdited(const QString&)));
|
||||
|
||||
connect(m_useTerminalCheck, SIGNAL(toggled(bool)),
|
||||
this, SLOT(termToggled(bool)));
|
||||
|
||||
connect(qt4RunConfiguration, SIGNAL(commandLineArgumentsChanged(QString)),
|
||||
this, SLOT(commandLineArgumentsChanged(QString)));
|
||||
connect(qt4RunConfiguration, SIGNAL(nameChanged(QString)),
|
||||
this, SLOT(nameChanged(QString)));
|
||||
connect(qt4RunConfiguration, SIGNAL(runModeChanged(ProjectExplorer::ApplicationRunConfiguration::RunMode)),
|
||||
this, SLOT(runModeChanged(ProjectExplorer::ApplicationRunConfiguration::RunMode)));
|
||||
|
||||
connect(qt4RunConfiguration, SIGNAL(effectiveExecutableChanged()),
|
||||
this, SLOT(effectiveExecutableChanged()));
|
||||
@@ -138,6 +148,14 @@ void Qt4RunConfigurationWidget::nameEdited(const QString &name)
|
||||
m_ignoreChange = false;
|
||||
}
|
||||
|
||||
void Qt4RunConfigurationWidget::termToggled(bool on)
|
||||
{
|
||||
m_ignoreChange = true;
|
||||
m_qt4RunConfiguration->setRunMode(on ? ApplicationRunConfiguration::Console
|
||||
: ApplicationRunConfiguration::Gui);
|
||||
m_ignoreChange = false;
|
||||
}
|
||||
|
||||
void Qt4RunConfigurationWidget::commandLineArgumentsChanged(const QString &args)
|
||||
{
|
||||
if (!m_ignoreChange)
|
||||
@@ -150,6 +168,12 @@ void Qt4RunConfigurationWidget::nameChanged(const QString &name)
|
||||
m_nameLineEdit->setText(name);
|
||||
}
|
||||
|
||||
void Qt4RunConfigurationWidget::runModeChanged(ApplicationRunConfiguration::RunMode runMode)
|
||||
{
|
||||
if (!m_ignoreChange)
|
||||
m_useTerminalCheck->setChecked(runMode == ApplicationRunConfiguration::Console);
|
||||
}
|
||||
|
||||
void Qt4RunConfigurationWidget::effectiveExecutableChanged()
|
||||
{
|
||||
m_executableLabel->setText(m_qt4RunConfiguration->executable());
|
||||
@@ -172,6 +196,7 @@ void Qt4RunConfiguration::save(PersistentSettingsWriter &writer) const
|
||||
writer.saveValue("CommandLineArguments", m_commandLineArguments);
|
||||
writer.saveValue("ProFile", m_proFilePath);
|
||||
writer.saveValue("UserSetName", m_userSetName);
|
||||
writer.saveValue("UseTerminal", m_runMode == Console);
|
||||
ApplicationRunConfiguration::save(writer);
|
||||
}
|
||||
|
||||
@@ -181,6 +206,7 @@ void Qt4RunConfiguration::restore(const PersistentSettingsReader &reader)
|
||||
m_commandLineArguments = reader.restoreValue("CommandLineArguments").toStringList();
|
||||
m_proFilePath = reader.restoreValue("ProFile").toString();
|
||||
m_userSetName = reader.restoreValue("UserSetName").toBool();
|
||||
m_runMode = reader.restoreValue("UseTerminal").toBool() ? Console : Gui;
|
||||
if (!m_proFilePath.isEmpty()) {
|
||||
updateCachedValues();
|
||||
if (!m_userSetName)
|
||||
@@ -221,6 +247,12 @@ void Qt4RunConfiguration::setCommandLineArguments(const QString &argumentsString
|
||||
emit commandLineArgumentsChanged(argumentsString);
|
||||
}
|
||||
|
||||
void Qt4RunConfiguration::setRunMode(RunMode runMode)
|
||||
{
|
||||
m_runMode = runMode;
|
||||
emit runModeChanged(runMode);
|
||||
}
|
||||
|
||||
void Qt4RunConfiguration::nameEdited(const QString &name)
|
||||
{
|
||||
if (name == "") {
|
||||
@@ -283,8 +315,6 @@ void Qt4RunConfiguration::updateCachedValues()
|
||||
m_targets = reader->values(QLatin1String("TARGET"));
|
||||
|
||||
m_srcDir = QFileInfo(m_proFilePath).path();
|
||||
const QStringList config = reader->values(QLatin1String("CONFIG"));
|
||||
m_runMode = ProjectExplorer::ApplicationRunConfiguration::Gui;
|
||||
|
||||
delete reader;
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QWidget;
|
||||
class QCheckBox;
|
||||
class QLabel;
|
||||
class QLineEdit;
|
||||
QT_END_NAMESPACE
|
||||
@@ -78,6 +79,7 @@ public:
|
||||
signals:
|
||||
void nameChanged(const QString&);
|
||||
void commandLineArgumentsChanged(const QString&);
|
||||
void runModeChanged(ProjectExplorer::ApplicationRunConfiguration::RunMode runMode);
|
||||
|
||||
// note those signals might not emited for every change
|
||||
void effectiveExecutableChanged();
|
||||
@@ -86,6 +88,7 @@ signals:
|
||||
private slots:
|
||||
void setCommandLineArguments(const QString &argumentsString);
|
||||
void nameEdited(const QString&);
|
||||
void setRunMode(RunMode runMode);
|
||||
|
||||
private:
|
||||
void detectQtShadowBuild(const QString &buildConfig) const;
|
||||
@@ -119,8 +122,10 @@ private slots:
|
||||
// TODO connect to signals from qt4runconfiguration for changed arguments and names
|
||||
void commandLineArgumentsChanged(const QString &args);
|
||||
void nameChanged(const QString &name);
|
||||
void runModeChanged(ProjectExplorer::ApplicationRunConfiguration::RunMode runMode);
|
||||
void effectiveExecutableChanged();
|
||||
void effectiveWorkingDirectoryChanged();
|
||||
void termToggled(bool);
|
||||
private:
|
||||
Qt4RunConfiguration *m_qt4RunConfiguration;
|
||||
bool m_ignoreChange;
|
||||
@@ -128,6 +133,7 @@ private:
|
||||
QLabel *m_workingDirectoryLabel;
|
||||
QLineEdit *m_nameLineEdit;
|
||||
QLineEdit *m_argumentsLineEdit;
|
||||
QCheckBox *m_useTerminalCheck;
|
||||
};
|
||||
|
||||
class Qt4RunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory
|
||||
|
||||
Reference in New Issue
Block a user