From 678d1cc9c9c1222b46ab358bb78bfd11f0f31c46 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 4 Apr 2011 14:39:28 +0200 Subject: Add analyzer multiple tools, mode & remote support Merge-request: 284 Reviewed-by: hjk --- src/plugins/analyzerbase/analyzerruncontrol.cpp | 99 +++++++++---------------- 1 file changed, 33 insertions(+), 66 deletions(-) (limited to 'src/plugins/analyzerbase/analyzerruncontrol.cpp') diff --git a/src/plugins/analyzerbase/analyzerruncontrol.cpp b/src/plugins/analyzerbase/analyzerruncontrol.cpp index 55058f13eb..926267a90b 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.cpp +++ b/src/plugins/analyzerbase/analyzerruncontrol.cpp @@ -37,10 +37,8 @@ #include "analyzerconstants.h" #include "ianalyzerengine.h" #include "ianalyzertool.h" -#include "analyzerplugin.h" #include "analyzermanager.h" -#include "analyzerrunconfigwidget.h" -#include "analyzersettings.h" +#include "analyzerstartparameters.h" #include #include @@ -50,88 +48,54 @@ #include #include -#include -#include -#include using namespace Analyzer; using namespace Analyzer::Internal; -// AnalyzerRunControlFactory //////////////////////////////////////////////////// -AnalyzerRunControlFactory::AnalyzerRunControlFactory(QObject *parent) - : IRunControlFactory(parent) -{ -} +// AnalyzerRunControl::Private /////////////////////////////////////////// -bool AnalyzerRunControlFactory::canRun(RunConfiguration *runConfiguration, const QString &mode) const -{ - if (!qobject_cast(runConfiguration)) - return false; - return mode == Constants::MODE_ANALYZE; -} +class AnalyzerRunControl::Private { +public: + Private(); -ProjectExplorer::RunControl *AnalyzerRunControlFactory::create(RunConfiguration *runConfiguration, - const QString &mode) -{ - if (!qobject_cast(runConfiguration) || - mode != Constants::MODE_ANALYZE) { - return 0; - } - AnalyzerRunControl *rc = new AnalyzerRunControl(runConfiguration); - emit runControlCreated(rc); - return rc; -} + bool m_isRunning; + IAnalyzerEngine *m_engine; +}; -QString AnalyzerRunControlFactory::displayName() const +AnalyzerRunControl::Private::Private() +: m_isRunning(false) +, m_engine(0) { - return tr("Analyzer"); -} -ProjectExplorer::IRunConfigurationAspect *AnalyzerRunControlFactory::createRunConfigurationAspect() -{ - return new AnalyzerProjectSettings; } -ProjectExplorer::RunConfigWidget *AnalyzerRunControlFactory::createConfigurationWidget(RunConfiguration - *runConfiguration) -{ - ProjectExplorer::LocalApplicationRunConfiguration *localRc = - qobject_cast(runConfiguration); - if (!localRc) - return 0; - AnalyzerProjectSettings *settings = runConfiguration->extraAspect(); - if (!settings) - return 0; - - AnalyzerRunConfigWidget *ret = new AnalyzerRunConfigWidget; - ret->setRunConfiguration(runConfiguration); - return ret; -} // AnalyzerRunControl //////////////////////////////////////////////////// -AnalyzerRunControl::AnalyzerRunControl(RunConfiguration *runConfiguration) +AnalyzerRunControl::AnalyzerRunControl(const AnalyzerStartParameters &sp, + RunConfiguration *runConfiguration) : RunControl(runConfiguration, Constants::MODE_ANALYZE), - m_isRunning(false), - m_engine(0) + d(new Private) { IAnalyzerTool *tool = AnalyzerManager::instance()->currentTool(); - m_engine = tool->createEngine(runConfiguration); + d->m_engine = tool->createEngine(sp, runConfiguration); - connect(m_engine, SIGNAL(standardErrorReceived(QString)), + connect(d->m_engine, SIGNAL(standardErrorReceived(QString)), SLOT(receiveStandardError(QString))); - connect(m_engine, SIGNAL(standardOutputReceived(QString)), + connect(d->m_engine, SIGNAL(standardOutputReceived(QString)), SLOT(receiveStandardOutput(QString))); - connect(m_engine, SIGNAL(taskToBeAdded(ProjectExplorer::Task::TaskType,QString,QString,int)), + connect(d->m_engine, SIGNAL(taskToBeAdded(ProjectExplorer::Task::TaskType,QString,QString,int)), SLOT(addTask(ProjectExplorer::Task::TaskType,QString,QString,int))); - connect(m_engine, SIGNAL(finished()), + connect(d->m_engine, SIGNAL(finished()), SLOT(engineFinished())); } AnalyzerRunControl::~AnalyzerRunControl() { - if (m_isRunning) + if (d->m_isRunning) stop(); - delete m_engine; + + delete d->m_engine; + d->m_engine = 0; } void AnalyzerRunControl::start() @@ -141,32 +105,35 @@ void AnalyzerRunControl::start() ProjectExplorer::TaskHub *hub = pm->getObject(); hub->clearTasks(Constants::ANALYZERTASK_ID); - m_isRunning = true; + d->m_isRunning = true; emit started(); - m_engine->start(); + d->m_engine->start(); } ProjectExplorer::RunControl::StopResult AnalyzerRunControl::stop() { - m_engine->stop(); - m_isRunning = false; + if (!d->m_isRunning) + return StoppedSynchronously; + + d->m_engine->stop(); + d->m_isRunning = false; return AsynchronousStop; } void AnalyzerRunControl::engineFinished() { - m_isRunning = false; + d->m_isRunning = false; emit finished(); } bool AnalyzerRunControl::isRunning() const { - return m_isRunning; + return d->m_isRunning; } QString AnalyzerRunControl::displayName() const { - return AnalyzerManager::instance()->currentTool()->displayName(); + return d->m_engine->startParameters().displayName; } QIcon AnalyzerRunControl::icon() const -- cgit v1.2.1