diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp index 8899d32ff67..d8ed89bf878 100644 --- a/src/plugins/analyzerbase/analyzermanager.cpp +++ b/src/plugins/analyzerbase/analyzermanager.cpp @@ -564,15 +564,18 @@ void AnalyzerManagerPrivate::saveToolSettings(Id toolId) void AnalyzerManagerPrivate::updateRunActions() { QString disabledReason; - if (m_isRunning) + bool enabled = true; + if (m_isRunning) { disabledReason = tr("An analysis is still in progress."); - else if (!m_currentAction) + enabled = false; + } else if (!m_currentAction) { disabledReason = tr("No analyzer tool selected."); - else - ProjectExplorerPlugin::canRun(SessionManager::startupProject(), - m_currentAction->runMode(), &disabledReason); + enabled = false; + } else { + enabled = m_currentAction->isRunnable(&disabledReason); + } - m_startAction->setEnabled(!m_isRunning && m_currentAction && m_currentAction->isRunnable()); + m_startAction->setEnabled(enabled); m_startAction->setToolTip(disabledReason); m_toolBox->setEnabled(!m_isRunning); m_stopAction->setEnabled(m_isRunning); diff --git a/src/plugins/analyzerbase/ianalyzertool.cpp b/src/plugins/analyzerbase/ianalyzertool.cpp index a22d7bab468..b93e6dad57d 100644 --- a/src/plugins/analyzerbase/ianalyzertool.cpp +++ b/src/plugins/analyzerbase/ianalyzertool.cpp @@ -62,12 +62,12 @@ AnalyzerAction::AnalyzerAction(QObject *parent) : QAction(parent) {} -bool AnalyzerAction::isRunnable() const +bool AnalyzerAction::isRunnable(QString *reason) const { if (m_startMode == StartRemote) return true; - return ProjectExplorerPlugin::canRun(SessionManager::startupProject(), runMode(), 0); + return ProjectExplorerPlugin::canRun(SessionManager::startupProject(), m_runMode, reason); } AnalyzerRunControl *AnalyzerAction::tryCreateRunControl(const AnalyzerStartParameters &sp, RunConfiguration *runConfiguration) const diff --git a/src/plugins/analyzerbase/ianalyzertool.h b/src/plugins/analyzerbase/ianalyzertool.h index c28b6cae072..171bb6c903c 100644 --- a/src/plugins/analyzerbase/ianalyzertool.h +++ b/src/plugins/analyzerbase/ianalyzertool.h @@ -90,10 +90,8 @@ public: Core::Id toolId() const { return m_toolId; } void setToolId(Core::Id id) { m_toolId = id; } - ProjectExplorer::RunMode runMode() const { return m_runMode; } void setRunMode(ProjectExplorer::RunMode mode) { m_runMode = mode; } - - bool isRunnable() const; + bool isRunnable(QString *reason = 0) const; /// Creates all widgets used by the tool. /// Returns a control widget which will be shown in the status bar when