From f4ea0d79b9e82391f6fa8602fbc056d6393d634a Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Fri, 30 Apr 2010 13:19:31 +0200 Subject: [PATCH] Add a runMode method to the RunControl And use it to implement changing the run icon in the application output. That implementation does only support the two run modes run and debug for now. Further abstraction for more run modes to be done once needed. Task-Nr: QTCREATORBUG-1232 --- src/plugins/debugger/debuggerrunner.cpp | 4 ++-- .../projectexplorer/applicationrunconfiguration.cpp | 6 +++--- .../projectexplorer/applicationrunconfiguration.h | 2 +- src/plugins/projectexplorer/outputwindow.cpp | 12 +++++++++--- src/plugins/projectexplorer/outputwindow.h | 3 +++ src/plugins/projectexplorer/runconfiguration.cpp | 9 +++++++-- src/plugins/projectexplorer/runconfiguration.h | 4 +++- .../qmlprojectmanager/qmlprojectruncontrol.cpp | 11 +++++------ src/plugins/qmlprojectmanager/qmlprojectruncontrol.h | 6 +++--- .../qt4projectmanager/qt-maemo/maemoruncontrol.cpp | 9 +++++---- .../qt4projectmanager/qt-maemo/maemoruncontrol.h | 2 +- .../qt-s60/s60devicerunconfiguration.cpp | 12 ++++++------ .../qt-s60/s60devicerunconfiguration.h | 6 +++--- .../qt-s60/s60emulatorrunconfiguration.cpp | 4 ++-- .../qt-s60/s60emulatorrunconfiguration.h | 2 +- src/plugins/qt4projectmanager/qt-s60/s60manager.cpp | 2 +- 16 files changed, 55 insertions(+), 39 deletions(-) diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 2b6f3684fb7..d5739c46b6f 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -106,7 +106,7 @@ QWidget *DebuggerRunControlFactory::createConfigurationWidget(RunConfiguration * DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, LocalApplicationRunConfiguration *runConfiguration) - : RunControl(runConfiguration), + : RunControl(runConfiguration, ProjectExplorer::Constants::DEBUGMODE), m_startParameters(new DebuggerStartParameters()), m_manager(manager), m_running(false) @@ -157,7 +157,7 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, } DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, const DebuggerStartParametersPtr &startParameters) - : RunControl(0), + : RunControl(0, ProjectExplorer::Constants::DEBUGMODE), m_startParameters(startParameters), m_manager(manager), m_running(false) diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.cpp b/src/plugins/projectexplorer/applicationrunconfiguration.cpp index aab7a569444..05ae8f87650 100644 --- a/src/plugins/projectexplorer/applicationrunconfiguration.cpp +++ b/src/plugins/projectexplorer/applicationrunconfiguration.cpp @@ -80,7 +80,7 @@ QString LocalApplicationRunControlFactory::displayName() const RunControl *LocalApplicationRunControlFactory::create(ProjectExplorer::RunConfiguration *runConfiguration, const QString &mode) { QTC_ASSERT(canRun(runConfiguration, mode), return 0); - return new LocalApplicationRunControl(qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)); + return new LocalApplicationRunControl(qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration), mode); } QWidget *LocalApplicationRunControlFactory::createConfigurationWidget(RunConfiguration *runConfiguration) @@ -91,8 +91,8 @@ QWidget *LocalApplicationRunControlFactory::createConfigurationWidget(RunConfigu // ApplicationRunControl -LocalApplicationRunControl::LocalApplicationRunControl(LocalApplicationRunConfiguration *runConfiguration) - : RunControl(runConfiguration) +LocalApplicationRunControl::LocalApplicationRunControl(LocalApplicationRunConfiguration *runConfiguration, QString mode) + : RunControl(runConfiguration, mode) { m_applicationLauncher.setEnvironment(runConfiguration->environment().toStringList()); m_applicationLauncher.setWorkingDirectory(runConfiguration->workingDirectory()); diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.h b/src/plugins/projectexplorer/applicationrunconfiguration.h index 415126078b0..a9c4241a580 100644 --- a/src/plugins/projectexplorer/applicationrunconfiguration.h +++ b/src/plugins/projectexplorer/applicationrunconfiguration.h @@ -81,7 +81,7 @@ class LocalApplicationRunControl : public RunControl { Q_OBJECT public: - LocalApplicationRunControl(LocalApplicationRunConfiguration *runConfiguration); + LocalApplicationRunControl(LocalApplicationRunConfiguration *runConfiguration, QString mode); virtual ~LocalApplicationRunControl(); virtual void start(); virtual void stop(); diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index 3423d4bae4d..1f27ab70330 100644 --- a/src/plugins/projectexplorer/outputwindow.cpp +++ b/src/plugins/projectexplorer/outputwindow.cpp @@ -64,12 +64,15 @@ static const int MaxBlockCount = 100000; OutputPane::OutputPane() : m_mainWidget(new QWidget) { - QIcon runIcon(Constants::ICON_RUN); - runIcon.addFile(Constants::ICON_RUN_SMALL); + m_runIcon.addFile(Constants::ICON_RUN); + m_runIcon.addFile(Constants::ICON_RUN_SMALL); + + m_debugIcon.addFile(Constants::ICON_DEBUG); + m_debugIcon.addFile(Constants::ICON_DEBUG_SMALL); // Rerun m_reRunButton = new QToolButton; - m_reRunButton->setIcon(runIcon); + m_reRunButton->setIcon(m_runIcon); m_reRunButton->setToolTip(tr("Re-run this run-configuration")); m_reRunButton->setAutoRaise(true); m_reRunButton->setEnabled(false); @@ -296,6 +299,7 @@ void OutputPane::tabChanged(int i) RunControl *rc = runControlForTab(i); m_stopAction->setEnabled(rc->isRunning()); m_reRunButton->setEnabled(!rc->isRunning()); + m_reRunButton->setIcon( rc->runMode() == Constants::DEBUGMODE ? m_debugIcon : m_runIcon); } } @@ -305,6 +309,7 @@ void OutputPane::runControlStarted() if (rc == qobject_cast<RunControl *>(sender())) { m_reRunButton->setEnabled(false); m_stopAction->setEnabled(true); + m_reRunButton->setIcon( rc->runMode() == Constants::DEBUGMODE ? m_debugIcon : m_runIcon); } } @@ -314,6 +319,7 @@ void OutputPane::runControlFinished() if (rc == qobject_cast<RunControl *>(sender())) { m_reRunButton->setEnabled(rc); m_stopAction->setEnabled(false); + m_reRunButton->setIcon( rc->runMode() == Constants::DEBUGMODE ? m_debugIcon : m_runIcon); } } diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h index cc791a574df..32bd14ec5ce 100644 --- a/src/plugins/projectexplorer/outputwindow.h +++ b/src/plugins/projectexplorer/outputwindow.h @@ -35,6 +35,7 @@ #include <QtCore/QObject> #include <QtCore/QHash> +#include <QtGui/QIcon> #include <QtGui/QShowEvent> #include <QtGui/QPlainTextEdit> @@ -115,6 +116,8 @@ private: QAction *m_stopAction; QToolButton *m_reRunButton; QToolButton *m_stopButton; + QIcon m_runIcon; + QIcon m_debugIcon; }; diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index b758aa9d003..33b59d6984a 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -215,8 +215,8 @@ IRunControlFactory::~IRunControlFactory() { } -RunControl::RunControl(RunConfiguration *runConfiguration) - : m_runConfiguration(runConfiguration) +RunControl::RunControl(RunConfiguration *runConfiguration, QString mode) + : m_runMode(mode), m_runConfiguration(runConfiguration) { if (runConfiguration) m_displayName = runConfiguration->displayName(); @@ -227,6 +227,11 @@ RunControl::~RunControl() } +QString RunControl::runMode() const +{ + return m_runMode; +} + QString RunControl::displayName() const { return m_displayName; diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 86efaf680c4..486bc18f96d 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -160,7 +160,7 @@ class PROJECTEXPLORER_EXPORT RunControl : public QObject { Q_OBJECT public: - explicit RunControl(RunConfiguration *runConfiguration); + explicit RunControl(RunConfiguration *runConfiguration, QString mode); virtual ~RunControl(); virtual void start() = 0; virtual void stop() = 0; // Warning: assumed to be synchroneous! @@ -170,6 +170,7 @@ public: bool sameRunConfiguration(RunControl *other); virtual OutputFormatter *createOutputFormatter(QObject *parent = 0); + QString runMode() const; signals: void addToOutputWindow(RunControl *, const QString &line, bool onStdErr); @@ -186,6 +187,7 @@ private slots: private: QString m_displayName; + QString m_runMode; const QWeakPointer<RunConfiguration> m_runConfiguration; #ifdef Q_OS_MAC diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp index de6e9bba300..9d3cbbd1df3 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp @@ -52,11 +52,11 @@ using ProjectExplorer::RunControl; namespace QmlProjectManager { namespace Internal { -QmlRunControl::QmlRunControl(QmlProjectRunConfiguration *runConfiguration, bool debugMode) - : RunControl(runConfiguration), m_debugMode(debugMode) +QmlRunControl::QmlRunControl(QmlProjectRunConfiguration *runConfiguration, QString mode) + : RunControl(runConfiguration, mode) { ProjectExplorer::Environment environment = ProjectExplorer::Environment::systemEnvironment(); - if (debugMode) + if (runMode() == ProjectExplorer::Constants::DEBUGMODE) environment.set(QmlProjectManager::Constants::E_QML_DEBUG_SERVER_PORT, QString::number(runConfiguration->debugServerPort())); m_applicationLauncher.setEnvironment(environment.toStringList()); @@ -121,7 +121,7 @@ void QmlRunControl::slotError(const QString &err, bool isError) void QmlRunControl::slotAddToOutputWindow(const QString &line, bool onStdErr) { - if (m_debugMode && line.startsWith("QDeclarativeDebugServer: Waiting for connection")) { + if (runMode() == ProjectExplorer::Constants::DEBUGMODE && line.startsWith("QDeclarativeDebugServer: Waiting for connection")) { Core::ICore *core = Core::ICore::instance(); core->modeManager()->activateMode(Debugger::Constants::MODE_DEBUG); } @@ -155,8 +155,7 @@ RunControl *QmlRunControlFactory::create(RunConfiguration *runConfiguration, const QString &mode) { QTC_ASSERT(canRun(runConfiguration, mode), return 0); - return new QmlRunControl(qobject_cast<QmlProjectRunConfiguration *>(runConfiguration), - mode == ProjectExplorer::Constants::DEBUGMODE); + return new QmlRunControl(qobject_cast<QmlProjectRunConfiguration *>(runConfiguration), mode); } QString QmlRunControlFactory::displayName() const diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h index d6fe7e1cdb3..89d0d7dc546 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h +++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h @@ -39,10 +39,11 @@ class QmlProjectRunConfiguration; namespace Internal { -class QmlRunControl : public ProjectExplorer::RunControl { +class QmlRunControl : public ProjectExplorer::RunControl +{ Q_OBJECT public: - explicit QmlRunControl(QmlProjectRunConfiguration *runConfiguration, bool debugMode); + explicit QmlRunControl(QmlProjectRunConfiguration *runConfiguration, QString mode); virtual ~QmlRunControl (); // RunControl @@ -63,7 +64,6 @@ private: QString m_executable; QStringList m_commandLineArguments; - bool m_debugMode; }; class QmlRunControlFactory : public ProjectExplorer::IRunControlFactory { diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp index a2f639a78e3..0078661348f 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp @@ -44,6 +44,7 @@ #include <extensionsystem/pluginmanager.h> #include <projectexplorer/toolchain.h> #include <utils/qtcassert.h> +#include <projectexplorer/projectexplorerconstants.h> #include <QtCore/QDir> #include <QtCore/QFileInfo> @@ -59,8 +60,8 @@ namespace Internal { using ProjectExplorer::RunConfiguration; using ProjectExplorer::ToolChain; -AbstractMaemoRunControl::AbstractMaemoRunControl(RunConfiguration *rc) - : RunControl(rc) +AbstractMaemoRunControl::AbstractMaemoRunControl(RunConfiguration *rc, QString mode) + : RunControl(rc, mode) , m_runConfig(qobject_cast<MaemoRunConfiguration *>(rc)) , m_devConfig(m_runConfig ? m_runConfig->deviceConfig() : MaemoDeviceConfig()) { @@ -343,7 +344,7 @@ void AbstractMaemoRunControl::handleError(const QString &errString) MaemoRunControl::MaemoRunControl(RunConfiguration *runConfiguration) - : AbstractMaemoRunControl(runConfiguration) + : AbstractMaemoRunControl(runConfiguration, ProjectExplorer::Constants::RUNMODE) { } @@ -375,7 +376,7 @@ void MaemoRunControl::handleRemoteOutput(const QString &output) MaemoDebugRunControl::MaemoDebugRunControl(RunConfiguration *runConfiguration) - : AbstractMaemoRunControl(runConfiguration) + : AbstractMaemoRunControl(runConfiguration, ProjectExplorer::Constants::DEBUGMODE) , m_debuggerManager(ExtensionSystem::PluginManager::instance() ->getObject<Debugger::DebuggerManager>()) , m_startParams(new Debugger::DebuggerStartParameters) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h index 4fe9744afad..7d4170c1d79 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h @@ -63,7 +63,7 @@ class AbstractMaemoRunControl : public ProjectExplorer::RunControl Q_OBJECT public: - explicit AbstractMaemoRunControl(ProjectExplorer::RunConfiguration *runConfig); + explicit AbstractMaemoRunControl(ProjectExplorer::RunConfiguration *runConfig, QString mode); virtual ~AbstractMaemoRunControl(); protected: diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index 54d08018bbc..fa50bb1618e 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -451,8 +451,8 @@ RunConfiguration *S60DeviceRunConfigurationFactory::clone(Target *parent, RunCon // ======== S60DeviceRunControlBase -S60DeviceRunControlBase::S60DeviceRunControlBase(RunConfiguration *runConfiguration) : - RunControl(runConfiguration), +S60DeviceRunControlBase::S60DeviceRunControlBase(RunConfiguration *runConfiguration, QString mode) : + RunControl(runConfiguration, mode), m_toolChain(ProjectExplorer::ToolChain::INVALID), m_releaseDeviceAfterLauncherFinish(false), m_handleDeviceRemoval(true), @@ -812,8 +812,8 @@ bool S60DeviceRunControlBase::checkConfiguration(QString * /* errorMessage */, // =============== S60DeviceRunControl -S60DeviceRunControl::S60DeviceRunControl(ProjectExplorer::RunConfiguration *runConfiguration) : - S60DeviceRunControlBase(runConfiguration) +S60DeviceRunControl::S60DeviceRunControl(ProjectExplorer::RunConfiguration *runConfiguration, QString mode) : + S60DeviceRunControlBase(runConfiguration, mode) { } @@ -849,8 +849,8 @@ void S60DeviceRunControl::printRunFailNotice(const QString &errorMessage) { // ======== S60DeviceDebugRunControl -S60DeviceDebugRunControl::S60DeviceDebugRunControl(S60DeviceRunConfiguration *runConfiguration) : - S60DeviceRunControlBase(runConfiguration), +S60DeviceDebugRunControl::S60DeviceDebugRunControl(S60DeviceRunConfiguration *runConfiguration, QString mode) : + S60DeviceRunControlBase(runConfiguration, mode), m_startParams(new Debugger::DebuggerStartParameters) { setReleaseDeviceAfterLauncherFinish(true); // Debugger controls device after install diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h index 3ff0bc145af..d1d1ed53db2 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h @@ -144,7 +144,7 @@ class S60DeviceRunControlBase : public ProjectExplorer::RunControl { Q_OBJECT public: - explicit S60DeviceRunControlBase(ProjectExplorer::RunConfiguration *runConfiguration); + explicit S60DeviceRunControlBase(ProjectExplorer::RunConfiguration *runConfiguration, QString mode); ~S60DeviceRunControlBase(); virtual void start(); virtual void stop(); @@ -206,7 +206,7 @@ class S60DeviceRunControl : public S60DeviceRunControlBase { Q_OBJECT public: - explicit S60DeviceRunControl(ProjectExplorer::RunConfiguration *runConfiguration); + explicit S60DeviceRunControl(ProjectExplorer::RunConfiguration *runConfiguration, QString mode); protected: virtual void initLauncher(const QString &executable, trk::Launcher *); @@ -225,7 +225,7 @@ class S60DeviceDebugRunControl : public S60DeviceRunControlBase Q_DISABLE_COPY(S60DeviceDebugRunControl) Q_OBJECT public: - explicit S60DeviceDebugRunControl(S60DeviceRunConfiguration *runConfiguration); + explicit S60DeviceDebugRunControl(S60DeviceRunConfiguration *runConfiguration, QString mode); virtual ~S60DeviceDebugRunControl(); virtual void stop(); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp index 3a6d849d601..9ae33ff517a 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp @@ -293,8 +293,8 @@ QString S60EmulatorRunConfigurationFactory::displayNameForId(const QString &id) // ======== S60EmulatorRunControl -S60EmulatorRunControl::S60EmulatorRunControl(S60EmulatorRunConfiguration *runConfiguration) - : RunControl(runConfiguration) +S60EmulatorRunControl::S60EmulatorRunControl(S60EmulatorRunConfiguration *runConfiguration, QString mode) + : RunControl(runConfiguration, mode) { // stuff like the EPOCROOT and EPOCDEVICE env variable Environment env = Environment::systemEnvironment(); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h index 7fd1dda8f2a..917eac35b3b 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h @@ -129,7 +129,7 @@ class S60EmulatorRunControl : public ProjectExplorer::RunControl { Q_OBJECT public: - explicit S60EmulatorRunControl(S60EmulatorRunConfiguration *runConfiguration); + explicit S60EmulatorRunControl(S60EmulatorRunConfiguration *runConfiguration, QString mode); ~S60EmulatorRunControl() {} void start(); void stop(); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp index 941bdbd484b..cdb49020601 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp @@ -80,7 +80,7 @@ public: ProjectExplorer::RunControl* create(ProjectExplorer::RunConfiguration *runConfiguration, const QString &mode) { RunConfiguration *rc = qobject_cast<RunConfiguration *>(runConfiguration); QTC_ASSERT(rc && mode == m_mode, return 0); - return new RunControl(rc); + return new RunControl(rc, mode); } QString displayName() const { -- GitLab