diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp index d0fee1c787d..b20293a0a76 100644 --- a/src/plugins/analyzerbase/analyzermanager.cpp +++ b/src/plugins/analyzerbase/analyzermanager.cpp @@ -156,7 +156,6 @@ public: QAction *actionFromToolAndMode(IAnalyzerTool *tool, StartMode mode); // Convenience. - void startLocalTool(IAnalyzerTool *tool); bool isActionRunnable(QAction *action) const; public slots: @@ -409,22 +408,6 @@ void AnalyzerManagerPrivate::deactivateDock(QDockWidget *dockWidget) dockWidget->setParent(0); } -bool buildTypeAccepted(IAnalyzerTool::ToolMode toolMode, - BuildConfiguration::BuildType buildType) -{ - if (toolMode == IAnalyzerTool::AnyMode) - return true; - if (buildType == BuildConfiguration::Unknown) - return true; - if (buildType == BuildConfiguration::Debug - && toolMode == IAnalyzerTool::DebugMode) - return true; - if (buildType == BuildConfiguration::Release - && toolMode == IAnalyzerTool::ReleaseMode) - return true; - return false; -} - bool AnalyzerManagerPrivate::showPromptDialog(const QString &title, const QString &text, const QString &stopButtonText, const QString &cancelButtonText) const { @@ -442,83 +425,6 @@ bool AnalyzerManagerPrivate::showPromptDialog(const QString &title, const QStrin return messageBox.clickedStandardButton() == QDialogButtonBox::Yes; } -void AnalyzerManagerPrivate::startLocalTool(IAnalyzerTool *tool) -{ - int index = m_tools.indexOf(tool); - QTC_ASSERT(index >= 0, return); - QTC_ASSERT(index < m_tools.size(), return); - QTC_ASSERT(tool == m_currentTool, return); - - // Make sure mode is shown. - q->showMode(); - - ProjectExplorerPlugin *pe = ProjectExplorerPlugin::instance(); - - // ### not sure if we're supposed to check if the RunConFiguration isEnabled - Project *pro = pe->startupProject(); - BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown; - if (pro) { - if (const Target *target = pro->activeTarget()) { - // Build configuration is 0 for QML projects. - if (const BuildConfiguration *buildConfig = target->activeBuildConfiguration()) - buildType = buildConfig->buildType(); - } - } - - IAnalyzerTool::ToolMode toolMode = tool->toolMode(); - - // Check the project for whether the build config is in the correct mode - // if not, notify the user and urge him to use the correct mode. - if (!buildTypeAccepted(toolMode, buildType)) { - const QString toolName = tool->displayName(); - const QString currentMode = - buildType == BuildConfiguration::Debug ? tr("Debug") : tr("Release"); - - QSettings *settings = ICore::settings(); - const QString configKey = QLatin1String("Analyzer.AnalyzeCorrectMode"); - int ret; - if (settings->contains(configKey)) { - ret = settings->value(configKey, QDialog::Accepted).toInt(); - } else { - QString toolModeString; - switch (toolMode) { - case IAnalyzerTool::DebugMode: - toolModeString = tr("Debug"); - break; - case IAnalyzerTool::ReleaseMode: - toolModeString = tr("Release"); - break; - default: - QTC_CHECK(false); - } - const QString title = tr("Run %1 in %2 Mode?").arg(toolName).arg(currentMode); - const QString message = tr("
You are trying " - "to run the tool \"%1\" on an application in %2 mode. " - "The tool is designed to be used in %3 mode.
" - "Debug and Release mode run-time characteristics differ " - "significantly, analytical findings for one mode may or " - "may not be relevant for the other.
" - "Do you want to continue and run the tool in %2 mode?
") - .arg(toolName).arg(currentMode).arg(toolModeString); - const QString checkBoxText = tr("&Do not ask again"); - bool checkBoxSetting = false; - const QDialogButtonBox::StandardButton button = - Utils::CheckableMessageBox::question(ICore::mainWindow(), - title, message, checkBoxText, - &checkBoxSetting, QDialogButtonBox::Yes|QDialogButtonBox::Cancel, - QDialogButtonBox::Cancel); - ret = button == QDialogButtonBox::Yes ? QDialog::Accepted : QDialog::Rejected; - - if (checkBoxSetting && ret == QDialog::Accepted) - settings->setValue(configKey, ret); - } - if (ret == QDialog::Rejected) - return; - } - - pe->runProject(pro, tool->runMode()); -} - bool AnalyzerManagerPrivate::isActionRunnable(QAction *action) const { if (!action || m_isRunning) @@ -847,11 +753,6 @@ void AnalyzerManager::stopTool() stopAction()->trigger(); } -void AnalyzerManager::startLocalTool(IAnalyzerTool *tool) -{ - m_instance->d->startLocalTool(tool); -} - QAction *AnalyzerManager::stopAction() { return m_instance->d->m_stopAction; diff --git a/src/plugins/analyzerbase/analyzermanager.h b/src/plugins/analyzerbase/analyzermanager.h index ec5a884962a..d27cfe659c3 100644 --- a/src/plugins/analyzerbase/analyzermanager.h +++ b/src/plugins/analyzerbase/analyzermanager.h @@ -85,8 +85,6 @@ public: static void stopTool(); // Convenience functions. - static void startLocalTool(IAnalyzerTool *tool); - static QString msgToolStarted(const QString &name); static QString msgToolFinished(const QString &name, int issuesFound); diff --git a/src/plugins/analyzerbase/ianalyzertool.cpp b/src/plugins/analyzerbase/ianalyzertool.cpp index f1355824d6c..25394f0b569 100644 --- a/src/plugins/analyzerbase/ianalyzertool.cpp +++ b/src/plugins/analyzerbase/ianalyzertool.cpp @@ -30,7 +30,29 @@ #include "ianalyzertool.h" +#include "analyzermanager.h" +#include "analyzerruncontrol.h" +#include "startremotedialog.h" + +#includeYou are trying " + "to run the tool \"%1\" on an application in %2 mode. " + "The tool is designed to be used in %3 mode.
" + "Debug and Release mode run-time characteristics differ " + "significantly, analytical findings for one mode may or " + "may not be relevant for the other.
" + "Do you want to continue and run the tool in %2 mode?
") + .arg(toolName).arg(currentMode).arg(toolModeString); + const QString checkBoxText = AnalyzerManager::tr("&Do not ask again"); + bool checkBoxSetting = false; + const QDialogButtonBox::StandardButton button = + Utils::CheckableMessageBox::question(ICore::mainWindow(), + title, message, checkBoxText, + &checkBoxSetting, QDialogButtonBox::Yes|QDialogButtonBox::Cancel, + QDialogButtonBox::Cancel); + ret = button == QDialogButtonBox::Yes ? QDialog::Accepted : QDialog::Rejected; + + if (checkBoxSetting && ret == QDialog::Accepted) + settings->setValue(configKey, ret); + } + if (ret == QDialog::Rejected) + return; + } + + pe->runProject(pro, tool->runMode()); +} + +static void startRemoteTool(IAnalyzerTool *tool) +{ + StartRemoteDialog dlg; + if (dlg.exec() != QDialog::Accepted) + return; + + AnalyzerStartParameters sp; + sp.startMode = StartRemote; + sp.connParams = dlg.sshParams(); + sp.debuggee = dlg.executable(); + sp.debuggeeArgs = dlg.arguments(); + sp.displayName = dlg.executable(); + sp.workingDirectory = dlg.workingDirectory(); + + AnalyzerRunControl *rc = tool->createRunControl(sp, 0); + QObject::connect(AnalyzerManager::stopAction(), SIGNAL(triggered()), rc, SLOT(stopIt())); + + ProjectExplorerPlugin::instance()->startRunControl(rc, tool->runMode()); +} + +void IAnalyzerTool::startTool(StartMode mode) +{ + if (mode == StartLocal) + startLocalTool(this); + if (mode == StartRemote) + startRemoteTool(this); +} + } // namespace Analyzer diff --git a/src/plugins/analyzerbase/ianalyzertool.h b/src/plugins/analyzerbase/ianalyzertool.h index a13ba6caef7..ae34431bc7a 100644 --- a/src/plugins/analyzerbase/ianalyzertool.h +++ b/src/plugins/analyzerbase/ianalyzertool.h @@ -112,7 +112,7 @@ public: virtual AnalyzerRunControl *createRunControl(const AnalyzerStartParameters &sp, ProjectExplorer::RunConfiguration *runConfiguration = 0) = 0; - virtual void startTool(StartMode mode) = 0; + virtual void startTool(StartMode mode); /// Called when tools gets selected. virtual void toolSelected() const {} diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp index 078f55797b7..c1611cf63d3 100644 --- a/src/plugins/valgrind/callgrindtool.cpp +++ b/src/plugins/valgrind/callgrindtool.cpp @@ -612,7 +612,7 @@ AnalyzerRunControl *CallgrindToolPrivate::createRunControl(const AnalyzerStartPa void CallgrindTool::startTool(StartMode mode) { - ValgrindPlugin::startValgrindTool(this, mode); + IAnalyzerTool::startTool(mode); d->setBusyCursor(true); } diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 644c947e159..273d1ef45f2 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -464,11 +464,6 @@ AnalyzerRunControl *MemcheckTool::createRunControl(const AnalyzerStartParameters return engine; } -void MemcheckTool::startTool(StartMode mode) -{ - ValgrindPlugin::startValgrindTool(this, mode); -} - void MemcheckTool::engineStarting(const AnalyzerRunControl *engine) { setBusyCursor(true); diff --git a/src/plugins/valgrind/memchecktool.h b/src/plugins/valgrind/memchecktool.h index 550ea520e0f..69344659699 100644 --- a/src/plugins/valgrind/memchecktool.h +++ b/src/plugins/valgrind/memchecktool.h @@ -113,7 +113,6 @@ private: Analyzer::AnalyzerRunControl *createRunControl(const Analyzer::AnalyzerStartParameters &sp, ProjectExplorer::RunConfiguration *runConfiguration = 0); - void startTool(Analyzer::StartMode mode); void clearErrorView(); diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp index bef11e453bd..f62d963ecaf 100644 --- a/src/plugins/valgrind/valgrindplugin.cpp +++ b/src/plugins/valgrind/valgrindplugin.cpp @@ -34,62 +34,16 @@ #include "memchecktool.h" #include "valgrindruncontrolfactory.h" -#include