From 2086d94866c462c299680398c355e43fe4117e9b Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 1 Jul 2011 14:19:12 +0200 Subject: [PATCH] analyzer: finish split of tools into "tools-with-modes" Change-Id: I82b61c07172a33b861a7d6db903ac2516019498b Reviewed-on: http://codereview.qt.nokia.com/1054 Reviewed-by: hjk --- src/plugins/analyzerbase/analyzermanager.cpp | 224 ++++++++++-------- src/plugins/analyzerbase/analyzermanager.h | 8 +- .../analyzerbase/analyzerruncontrol.cpp | 2 +- src/plugins/analyzerbase/analyzerruncontrol.h | 2 +- .../analyzerruncontrolfactory.cpp | 14 +- src/plugins/analyzerbase/ianalyzerengine.h | 3 +- src/plugins/analyzerbase/ianalyzertool.cpp | 19 +- src/plugins/analyzerbase/ianalyzertool.h | 24 +- src/plugins/debugger/debuggerconstants.h | 2 +- src/plugins/qmlprofiler/qmlprofilerengine.cpp | 2 +- src/plugins/qmlprofiler/qmlprofilertool.cpp | 3 +- src/plugins/qmlprofiler/qmlprofilertool.h | 2 +- .../qmlprojectanalyzerruncontrolfactory.cpp | 1 + src/plugins/valgrind/callgrindtool.cpp | 6 +- src/plugins/valgrind/callgrindtool.h | 2 +- src/plugins/valgrind/memchecktool.cpp | 7 +- src/plugins/valgrind/memchecktool.h | 5 +- src/plugins/valgrind/valgrindengine.cpp | 2 +- 18 files changed, 176 insertions(+), 152 deletions(-) diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp index 4cc96a059cf..d74034c8ede 100644 --- a/src/plugins/analyzerbase/analyzermanager.cpp +++ b/src/plugins/analyzerbase/analyzermanager.cpp @@ -105,7 +105,7 @@ using namespace Analyzer::Internal; namespace Analyzer { namespace Internal { -const char lastActiveToolC[] = "Analyzer.Plugin.LastActiveTool"; +const char LAST_ACTIVE_TOOL[] = "Analyzer.Plugin.LastActiveTool"; const char INITIAL_DOCK_AREA[] = "initial_dock_area"; AnalyzerStartParameters localStartParameters(ProjectExplorer::RunConfiguration *runConfiguration) @@ -209,11 +209,13 @@ public: void addDock(Qt::DockWidgetArea area, QDockWidget *dockWidget); void addTool(IAnalyzerTool *tool, const StartModes &modes); - void stopTool(IAnalyzerTool *tool); - void handleToolFinished(IAnalyzerTool *tool); - void saveToolSettings(IAnalyzerTool *tool); - void loadToolSettings(IAnalyzerTool *tool); + void selectSavedTool(); void selectTool(IAnalyzerTool *tool, StartMode mode); + void stopTool(IAnalyzerTool *tool, StartMode mode); + void handleToolFinished(IAnalyzerTool *tool, StartMode mode); + void saveToolSettings(IAnalyzerTool *tool, StartMode mode); + void loadToolSettings(IAnalyzerTool *tool); + QAction *actionFromToolAndMode(IAnalyzerTool *tool, StartMode mode); ProjectExplorer::RunControl *createRunControl (ProjectExplorer::RunConfiguration *runConfiguration, const QString &mode); @@ -224,7 +226,7 @@ public: public slots: void startTool(); - void stopTool() { stopTool(m_currentTool); } + void stopTool() { stopTool(m_currentTool, m_currentMode); } void selectAction(); void selectAction(QAction *); @@ -242,6 +244,7 @@ public: IAnalyzerTool *m_currentTool; StartMode m_currentMode; QHash m_toolFromAction; + QHash m_modeFromAction; QList m_tools; QList m_actions; QAction *m_startAction; @@ -446,11 +449,12 @@ void AnalyzerManagerPrivate::addDock(Qt::DockWidgetArea area, QDockWidget *dockW ActionManager *am = ICore::instance()->actionManager(); QAction *toggleViewAction = dockWidget->toggleViewAction(); toggleViewAction->setText(dockWidget->windowTitle()); - Command *cmd = am->registerAction(toggleViewAction, QString("Analyzer." + dockWidget->objectName()), - globalContext); + Command *cmd = am->registerAction(toggleViewAction, + QString("Analyzer." + dockWidget->objectName()), globalContext); cmd->setAttribute(Command::CA_Hide); - ActionContainer *viewsMenu = am->actionContainer(Core::Id(Core::Constants::M_WINDOW_VIEWS)); + ActionContainer *viewsMenu = + am->actionContainer(Core::Id(Core::Constants::M_WINDOW_VIEWS)); viewsMenu->addAction(cmd); } @@ -492,14 +496,16 @@ ProjectExplorer::RunControl *AnalyzerManagerPrivate::createRunControl { Q_UNUSED(mode); + // FIXME: Move to tool implementations. AnalyzerStartParameters sp; if (qobject_cast(runConfiguration)) { sp = localStartParameters(runConfiguration); } else if (qobject_cast(runConfiguration)) { sp = remoteLinuxStartParameters(runConfiguration); } else { - // might be S60DeviceRunfiguration, or something else ... - sp.startMode = StartRemote; + // Might be S60DeviceRunfiguration, or something else ... + //sp.startMode = StartRemote; + sp.startMode = m_currentMode; } IAnalyzerTool *tool = m_currentTool; @@ -524,12 +530,11 @@ void AnalyzerManagerPrivate::startRemoteTool(IAnalyzerTool *tool, StartMode mode sp.displayName = dlg.executable(); sp.workingDirectory = dlg.workingDirectory(); - AnalyzerRunControl *runControl = new AnalyzerRunControl(tool, sp, 0); - - m_currentRunControl = runControl; + AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, 0); + m_currentRunControl = rc; ProjectExplorer::ProjectExplorerPlugin::instance() - ->startRunControl(runControl, Constants::MODE_ANALYZE); + ->startRunControl(rc, Constants::MODE_ANALYZE); } void AnalyzerManagerPrivate::startLocalTool(IAnalyzerTool *tool, StartMode mode) @@ -566,7 +571,7 @@ void AnalyzerManagerPrivate::startLocalTool(IAnalyzerTool *tool, StartMode mode) const QString msg = tr("
%1 is still running. " "You have to quit the Analyzer before being able to run another instance." "
Force it to quit?
") - .arg(m_currentRunControl->displayName()); + .arg(m_currentTool->displayName()); bool stopRequested = showPromptDialog(tr("Analyzer Still Running"), msg, tr("Stop Active Run"), tr("Keep Running")); if (!stopRequested) @@ -574,17 +579,16 @@ void AnalyzerManagerPrivate::startLocalTool(IAnalyzerTool *tool, StartMode mode) // user selected to stop the active run. stop it, activate restart on stop m_restartOnStop = true; - stopTool(m_currentTool); + stopTool(m_currentTool, m_currentMode); return; } - IAnalyzerTool::ToolMode toolMode = tool->mode(); + 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 toolMode = IAnalyzerTool::modeString(tool->mode()); const QString currentMode = buildType == ProjectExplorer::BuildConfiguration::Debug ? tr("Debug") : tr("Release"); QSettings *settings = Core::ICore::instance()->settings(); @@ -593,11 +597,20 @@ void AnalyzerManagerPrivate::startLocalTool(IAnalyzerTool *tool, StartMode mode) if (settings->contains(configKey)) { ret = settings->value(configKey, QDialog::Accepted).toInt(); } else { + QString toolModeString; + switch (toolMode) { + case IAnalyzerTool::DebugMode: + toolModeString = tr("Debug"); + case IAnalyzerTool::ReleaseMode: + toolModeString = tr("Release"); + case IAnalyzerTool::AnyMode: + break; + } 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.

" "Do you want to continue and run it in %2 mode?

"). - arg(toolName).arg(currentMode).arg(toolMode); + arg(toolName).arg(currentMode).arg(toolModeString); const QString checkBoxText = tr("&Do not ask again"); bool checkBoxSetting = false; const QDialogButtonBox::StandardButton button = @@ -623,15 +636,16 @@ void AnalyzerManagerPrivate::startTool() m_currentTool->startTool(m_currentMode); } -void AnalyzerManagerPrivate::stopTool(IAnalyzerTool *tool) +void AnalyzerManagerPrivate::stopTool(IAnalyzerTool *tool, StartMode mode) { QTC_ASSERT(tool == m_currentTool, /**/); + QTC_ASSERT(mode == m_currentMode, /**/); if (m_currentRunControl) return; // be sure to call handleToolFinished only once, and only when the engine is really finished if (m_currentRunControl->stop() == ProjectExplorer::RunControl::StoppedSynchronously) - handleToolFinished(tool); + handleToolFinished(tool, mode); // else: wait for the finished() signal to trigger handleToolFinished() } @@ -645,52 +659,28 @@ void AnalyzerManagerPrivate::modeChanged(IMode *mode) m_mainWindow->setDockActionsVisible(makeVisible); } -void AnalyzerManagerPrivate::selectTool(IAnalyzerTool *tool, StartMode mode) +QAction *AnalyzerManagerPrivate::actionFromToolAndMode(IAnalyzerTool *tool, StartMode mode) { - int idx = m_tools.indexOf(tool); - QTC_ASSERT(idx >= 0, return); - if (m_currentTool == tool) - return; + foreach (QAction *action, m_actions) + if (m_toolFromAction[action] == tool && m_modeFromAction[action] == mode) + return action; + QTC_ASSERT(false, /**/); + return 0; +} - if (m_currentTool) { - IAnalyzerTool *oldTool = m_currentTool; - saveToolSettings(oldTool); - - ActionManager *am = ICore::instance()->actionManager(); - - foreach (QDockWidget *widget, m_toolWidgets.value(oldTool)) { - QAction *toggleViewAction = widget->toggleViewAction(); - am->unregisterAction(toggleViewAction, - QString("Analyzer." + widget->objectName())); - m_mainWindow->removeDockWidget(widget); - ///NOTE: QMainWindow (and FancyMainWindow) just look at - /// @c findChildren() - ///if we don't do this, all kind of havoc might happen, including: - ///- improper saveState/restoreState - ///- improper list of qdockwidgets in popup menu - ///- ... - widget->setParent(0); +void AnalyzerManagerPrivate::selectSavedTool() +{ + const QSettings *settings = Core::ICore::instance()->settings(); + const QByteArray lastActiveAction = + settings->value(QLatin1String(LAST_ACTIVE_TOOL), QString()).toByteArray(); + foreach (QAction *action, m_actions) { + IAnalyzerTool *tool = m_toolFromAction[action]; + StartMode mode = m_modeFromAction[action]; + if (tool->actionId(mode) == lastActiveAction) { + selectTool(tool, mode); + break; } - oldTool->toolDeselected(); } - - m_currentTool = tool; - m_currentMode = mode; - - m_toolBox->setCurrentIndex(idx); - m_controlsWidget->setCurrentIndex(idx); - - const bool firstTime = !m_defaultSettings.contains(tool); - if (firstTime) { - tool->initializeDockWidgets(); - m_defaultSettings.insert(tool, m_mainWindow->saveSettings()); - } else { - foreach (QDockWidget *widget, m_toolWidgets.value(tool)) - addDock(Qt::DockWidgetArea(widget->property(INITIAL_DOCK_AREA).toInt()), widget); - } - - loadToolSettings(tool); - updateRunActions(); } void AnalyzerManagerPrivate::selectAction() @@ -705,8 +695,67 @@ void AnalyzerManagerPrivate::selectAction(int index) void AnalyzerManagerPrivate::selectAction(QAction *action) { - StartMode mode = StartMode(action->property("StartMode").toInt()); - selectTool(m_toolFromAction[action], mode); + selectTool(m_toolFromAction[action], m_modeFromAction[action]); +} + +void AnalyzerManagerPrivate::selectTool(IAnalyzerTool *tool, StartMode mode) +{ + if (m_currentTool == tool && m_currentMode == mode) + return; + + QAction *action = actionFromToolAndMode(tool, mode); + const int actionIndex = m_actions.indexOf(action); + QTC_ASSERT(actionIndex >= 0, return); + + // Guard against recursion by m_toolBox->setCurrentIndex. + static bool inSelectTool = false; + if (inSelectTool) + return; + inSelectTool = true; + + saveToolSettings(m_currentTool, m_currentMode); + + + // Clean up old tool. + if (m_currentTool) { + ActionManager *am = ICore::instance()->actionManager(); + + foreach (QDockWidget *widget, m_toolWidgets.value(m_currentTool)) { + QAction *toggleViewAction = widget->toggleViewAction(); + am->unregisterAction(toggleViewAction, + QString("Analyzer." + widget->objectName())); + m_mainWindow->removeDockWidget(widget); + ///NOTE: QMainWindow (and FancyMainWindow) just look at + /// @c findChildren() + ///if we don't do this, all kind of havoc might happen, including: + ///- improper saveState/restoreState + ///- improper list of qdockwidgets in popup menu + ///- ... + widget->setParent(0); + } + m_currentTool->toolDeselected(); + } + + // Now change the tool. + m_currentTool = tool; + m_currentMode = mode; + + const bool firstTime = !m_defaultSettings.contains(tool); + if (firstTime) { + tool->initializeDockWidgets(); + m_defaultSettings.insert(tool, m_mainWindow->saveSettings()); + } else { + foreach (QDockWidget *widget, m_toolWidgets.value(tool)) + addDock(Qt::DockWidgetArea(widget->property(INITIAL_DOCK_AREA).toInt()), widget); + } + + loadToolSettings(tool); + + m_toolBox->setCurrentIndex(actionIndex); + m_controlsWidget->setCurrentIndex(actionIndex); + + updateRunActions(); + inSelectTool = false; } void AnalyzerManagerPrivate::addTool(IAnalyzerTool *tool, const StartModes &modes) @@ -714,7 +763,6 @@ void AnalyzerManagerPrivate::addTool(IAnalyzerTool *tool, const StartModes &mode delayedInit(); // Make sure that there is a valid IMode instance. const bool blocked = m_toolBox->blockSignals(true); // Do not make current. - m_controlsWidget->addWidget(tool->createControlWidget()); ActionManager *am = Core::ICore::instance()->actionManager(); foreach (StartMode mode, modes) { @@ -722,24 +770,24 @@ void AnalyzerManagerPrivate::addTool(IAnalyzerTool *tool, const StartModes &mode QString menuGroup = tool->menuGroup(mode); QString actionId = tool->actionId(mode); QAction *action = new QAction(actionName, 0); - action->setProperty("StartMode", int(mode)); Core::Command *command = am->registerAction(action, actionId, Core::Context(Core::Constants::C_GLOBAL)); m_menu->addAction(command, menuGroup); m_actions.append(action); m_toolFromAction[action] = tool; + m_modeFromAction[action] = mode; m_toolBox->addItem(actionName); m_toolBox->blockSignals(blocked); connect(action, SIGNAL(triggered()), SLOT(selectAction())); } - m_toolBox->setEnabled(true); - m_tools.append(tool); + m_toolBox->setEnabled(true); } -void AnalyzerManagerPrivate::handleToolFinished(IAnalyzerTool *tool) +void AnalyzerManagerPrivate::handleToolFinished(IAnalyzerTool *tool, StartMode mode) { QTC_ASSERT(tool == m_currentTool, /**/); + QTC_ASSERT(mode == m_currentMode, /**/); m_currentRunControl = 0; updateRunActions(); @@ -759,7 +807,7 @@ void AnalyzerManagerPrivate::loadToolSettings(IAnalyzerTool *tool) settings->endGroup(); } -void AnalyzerManagerPrivate::saveToolSettings(IAnalyzerTool *tool) +void AnalyzerManagerPrivate::saveToolSettings(IAnalyzerTool *tool, StartMode mode) { if (!tool) return; // no active tool, do nothing @@ -770,7 +818,7 @@ void AnalyzerManagerPrivate::saveToolSettings(IAnalyzerTool *tool) m_mainWindow->saveSettings(settings); settings->setValue("ToolSettingsSaved", true); settings->endGroup(); - settings->setValue(QLatin1String(lastActiveToolC), tool->id()); + settings->setValue(QLatin1String(LAST_ACTIVE_TOOL), tool->actionId(mode)); } void AnalyzerManagerPrivate::updateRunActions() @@ -781,7 +829,7 @@ void AnalyzerManagerPrivate::updateRunActions() bool startEnabled = !m_currentRunControl && pe->canRun(project, Constants::MODE_ANALYZE) - && m_currentTool >= 0; + && m_currentTool; QString disabledReason; if (m_currentRunControl) @@ -822,24 +870,14 @@ void AnalyzerManager::extensionsInitialized() if (d->m_tools.isEmpty()) return; - const QSettings *settings = Core::ICore::instance()->settings(); - const QString lastActiveToolId = - settings->value(QLatin1String(lastActiveToolC), QString()).toString(); - foreach (IAnalyzerTool *tool, d->m_tools) tool->extensionsInitialized(); - - QAction *lastAction = 0; - foreach (QAction *action, d->m_actions) - if (d->m_toolFromAction[action]->id() == lastActiveToolId) - lastAction = action; - if (lastAction) - d->selectAction(lastAction); + d->selectSavedTool(); } void AnalyzerManager::shutdown() { - d->saveToolSettings(d->m_currentTool); + d->saveToolSettings(d->m_currentTool, d->m_currentMode); } void AnalyzerManager::addTool(IAnalyzerTool *tool, const StartModes &modes) @@ -910,30 +948,30 @@ void AnalyzerManager::showMode() ModeManager::instance()->activateMode(m_instance->d->m_mode->id()); } -void AnalyzerManager::stopTool(IAnalyzerTool *tool) +void AnalyzerManager::stopTool(IAnalyzerTool *tool, StartMode mode) { - m_instance->stopTool(tool); + m_instance->d->stopTool(tool, mode); } void AnalyzerManager::startLocalTool(IAnalyzerTool *tool, StartMode mode) { - m_instance->startLocalTool(tool, mode); + m_instance->d->startLocalTool(tool, mode); } void AnalyzerManager::startRemoteTool(IAnalyzerTool *tool, StartMode mode) { - m_instance->startRemoteTool(tool, mode); + m_instance->d->startRemoteTool(tool, mode); } ProjectExplorer::RunControl *AnalyzerManager::createRunControl (ProjectExplorer::RunConfiguration *runConfiguration, const QString &mode) { - return m_instance->createRunControl(runConfiguration, mode); + return m_instance->d->createRunControl(runConfiguration, mode); } -void AnalyzerManager::handleToolFinished(IAnalyzerTool *tool) +void AnalyzerManager::handleToolFinished(IAnalyzerTool *tool, StartMode mode) { - m_instance->d->handleToolFinished(tool); + m_instance->d->handleToolFinished(tool, mode); } IAnalyzerTool *AnalyzerManager::toolById(const QByteArray &id) diff --git a/src/plugins/analyzerbase/analyzermanager.h b/src/plugins/analyzerbase/analyzermanager.h index cc5f4edd5d6..0c66e9ff780 100644 --- a/src/plugins/analyzerbase/analyzermanager.h +++ b/src/plugins/analyzerbase/analyzermanager.h @@ -71,7 +71,7 @@ public: (ProjectExplorer::RunConfiguration *runConfiguration, const QString &mode); // Register a tool and initialize it. - static void addTool(Analyzer::IAnalyzerTool *tool, const StartModes &mode); + static void addTool(IAnalyzerTool *tool, const StartModes &mode); static IAnalyzerTool *toolById(const QByteArray &id); // Dockwidgets are registered to the main window. @@ -83,9 +83,9 @@ public: static void showMode(); static void selectTool(IAnalyzerTool *tool, StartMode mode); static void startTool(IAnalyzerTool *tool, StartMode mode); - static void stopTool(IAnalyzerTool *tool); + static void stopTool(IAnalyzerTool *tool, StartMode mode); - // Convienience functions. + // Convenience functions. static void startLocalTool(IAnalyzerTool *tool, StartMode mode); static void startRemoteTool(IAnalyzerTool *tool, StartMode mode); @@ -95,7 +95,7 @@ public: static void showStatusMessage(const QString &message, int timeoutMS = 10000); static void showPermanentStatusMessage(const QString &message); - static void handleToolFinished(IAnalyzerTool *tool); + static void handleToolFinished(IAnalyzerTool *tool, StartMode mode); private: friend class AnalyzerManagerPrivate; diff --git a/src/plugins/analyzerbase/analyzerruncontrol.cpp b/src/plugins/analyzerbase/analyzerruncontrol.cpp index a9f42e5408a..efa2ecebb0d 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.cpp +++ b/src/plugins/analyzerbase/analyzerruncontrol.cpp @@ -131,7 +131,7 @@ void AnalyzerRunControl::engineFinished() void AnalyzerRunControl::runControlFinished() { - AnalyzerManager::handleToolFinished(d->m_engine->tool()); + AnalyzerManager::handleToolFinished(d->m_engine->tool(), d->m_engine->mode()); } bool AnalyzerRunControl::isRunning() const diff --git a/src/plugins/analyzerbase/analyzerruncontrol.h b/src/plugins/analyzerbase/analyzerruncontrol.h index a2d0c893d1d..e066ccfac4d 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.h +++ b/src/plugins/analyzerbase/analyzerruncontrol.h @@ -57,7 +57,7 @@ public: RunConfiguration *runConfiguration); ~AnalyzerRunControl(); - // pure virtuals from ProjectExplorer::RunControl + // ProjectExplorer::RunControl void start(); StopResult stop(); bool isRunning() const; diff --git a/src/plugins/analyzerbase/analyzerruncontrolfactory.cpp b/src/plugins/analyzerbase/analyzerruncontrolfactory.cpp index a3a5258e9b6..2c173cb5930 100644 --- a/src/plugins/analyzerbase/analyzerruncontrolfactory.cpp +++ b/src/plugins/analyzerbase/analyzerruncontrolfactory.cpp @@ -45,6 +45,7 @@ using namespace Analyzer; using namespace Analyzer::Internal; +using namespace ProjectExplorer; ///////////////////////////////////////////////////////////////////////////////// // @@ -55,6 +56,7 @@ using namespace Analyzer::Internal; AnalyzerRunControlFactory::AnalyzerRunControlFactory(QObject *parent) : IRunControlFactory(parent) { + setObjectName(QLatin1String("AnalyzerRunControlFactory")); } bool AnalyzerRunControlFactory::canRun(RunConfiguration *runConfiguration, const QString &mode) const @@ -62,8 +64,7 @@ bool AnalyzerRunControlFactory::canRun(RunConfiguration *runConfiguration, const return runConfiguration->isEnabled() && mode == Constants::MODE_ANALYZE; } -ProjectExplorer::RunControl *AnalyzerRunControlFactory::create(RunConfiguration *runConfiguration, - const QString &mode) +RunControl *AnalyzerRunControlFactory::create(RunConfiguration *runConfiguration, const QString &mode) { QTC_ASSERT(canRun(runConfiguration, mode), return 0); return AnalyzerManager::createRunControl(runConfiguration, mode); @@ -74,16 +75,15 @@ QString AnalyzerRunControlFactory::displayName() const return tr("Analyzer"); } -ProjectExplorer::IRunConfigurationAspect *AnalyzerRunControlFactory::createRunConfigurationAspect() +IRunConfigurationAspect *AnalyzerRunControlFactory::createRunConfigurationAspect() { return new AnalyzerProjectSettings; } -ProjectExplorer::RunConfigWidget *AnalyzerRunControlFactory::createConfigurationWidget(RunConfiguration - *runConfiguration) +RunConfigWidget *AnalyzerRunControlFactory::createConfigurationWidget(RunConfiguration *runConfiguration) { - ProjectExplorer::LocalApplicationRunConfiguration *localRc = - qobject_cast(runConfiguration); + LocalApplicationRunConfiguration *localRc = + qobject_cast(runConfiguration); if (!localRc) return 0; AnalyzerProjectSettings *settings = runConfiguration->extraAspect(); diff --git a/src/plugins/analyzerbase/ianalyzerengine.h b/src/plugins/analyzerbase/ianalyzerengine.h index d3191682fc2..8596fbf53c5 100644 --- a/src/plugins/analyzerbase/ianalyzerengine.h +++ b/src/plugins/analyzerbase/ianalyzerengine.h @@ -83,7 +83,8 @@ public: const AnalyzerStartParameters &startParameters() const { return m_sp; } /// The tool this engine is associated with. - IAnalyzerTool *tool() { return m_tool; } + IAnalyzerTool *tool() const { return m_tool; } + StartMode mode() const { return m_sp.startMode; } signals: /// Should be emitted when the debuggee outputted something. diff --git a/src/plugins/analyzerbase/ianalyzertool.cpp b/src/plugins/analyzerbase/ianalyzertool.cpp index eb0abbfd488..2e234cc11d4 100644 --- a/src/plugins/analyzerbase/ianalyzertool.cpp +++ b/src/plugins/analyzerbase/ianalyzertool.cpp @@ -41,19 +41,6 @@ IAnalyzerTool::IAnalyzerTool(QObject *parent) : QObject(parent) {} -QString IAnalyzerTool::modeString(ToolMode mode) -{ - switch (mode) { - case IAnalyzerTool::DebugMode: - return tr("Debug"); - case IAnalyzerTool::ReleaseMode: - return tr("Release"); - case IAnalyzerTool::AnyMode: - break; - } - return QString(); -} - QByteArray IAnalyzerTool::defaultMenuGroup(StartMode mode) { if (mode == StartRemote) @@ -61,15 +48,17 @@ QByteArray IAnalyzerTool::defaultMenuGroup(StartMode mode) return Analyzer::Constants::G_ANALYZER_TOOLS; } -QByteArray IAnalyzerTool::defaultActionId(const QByteArray &id, StartMode mode) +QByteArray IAnalyzerTool::defaultActionId(const IAnalyzerTool *tool, StartMode mode) { + QByteArray id = tool->id(); if (mode == StartRemote) return "Action." + id + ".RemoteStart." + QByteArray::number(mode); return "Action." + id + ".LocalStart." + QByteArray::number(mode); } -QString IAnalyzerTool::defaultActionName(const QString &base, StartMode mode) +QString IAnalyzerTool::defaultActionName(const IAnalyzerTool *tool, StartMode mode) { + QString base = tool->displayName(); if (mode == StartRemote) return base + tr(" (Remote)"); return base; diff --git a/src/plugins/analyzerbase/ianalyzertool.h b/src/plugins/analyzerbase/ianalyzertool.h index 50e526ed2ec..1f6f23a49cb 100644 --- a/src/plugins/analyzerbase/ianalyzertool.h +++ b/src/plugins/analyzerbase/ianalyzertool.h @@ -78,12 +78,14 @@ public: /// Returns a user readable description name for this tool. virtual QString description() const = 0; /// Returns an id for the start action. - virtual QByteArray actionId(StartMode m) const { return defaultActionId(id(), m); } + virtual QByteArray actionId(StartMode mode) const + { return defaultActionId(this, mode); } /// Returns the menu group the start action should go to. - virtual QByteArray menuGroup(StartMode m) const { return defaultMenuGroup(m); } + virtual QByteArray menuGroup(StartMode mode) const + { return defaultMenuGroup(mode); } /// Returns a short user readable action name for this tool. - virtual QString actionName(StartMode m) const - { return defaultActionName(displayName(), m); } + virtual QString actionName(StartMode mode) const + { return defaultActionName(this, mode); } /** * The mode in which this tool should preferably be run @@ -97,14 +99,12 @@ public: ReleaseMode, AnyMode }; - virtual ToolMode mode() const = 0; - - static QString modeString(ToolMode mode); + virtual ToolMode toolMode() const = 0; /// Convenience implementation. - static QByteArray defaultMenuGroup(StartMode m); - static QByteArray defaultActionId(const QByteArray &id, StartMode m); - static QString defaultActionName(const QString &base, StartMode m); + static QByteArray defaultMenuGroup(StartMode mode); + static QByteArray defaultActionId(const IAnalyzerTool *tool, StartMode mode); + static QString defaultActionName(const IAnalyzerTool *tool, StartMode mode); static void defaultStartTool(IAnalyzerTool *tool, StartMode mode); /// This gets called after all analyzation tools where initialized. @@ -125,8 +125,8 @@ public: virtual IAnalyzerEngine *createEngine(const AnalyzerStartParameters &sp, ProjectExplorer::RunConfiguration *runConfiguration = 0) = 0; - virtual void startTool(StartMode m) - { return defaultStartTool(this, m); } + virtual void startTool(StartMode mode) + { return defaultStartTool(this, mode); } /// Called when tools gets selected. virtual void toolSelected() const {} diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h index 7ff518a5b37..904d369606d 100644 --- a/src/plugins/debugger/debuggerconstants.h +++ b/src/plugins/debugger/debuggerconstants.h @@ -48,7 +48,7 @@ const char * const C_QMLDEBUGGER = "Qml/JavaScript Debugger"; // Project Explorer run mode (RUN/DEBUG) const char * const DEBUGMODE = "Debugger.DebugMode"; -const char * const DEBUGMODE2 = "Debugger.DebugMode2"; +const char * const DEBUGMODE2 = "Debugger.DebugMode2"; // Breaks on main. // Common actions (accessed by QML inspector) const char * const INTERRUPT = "Debugger.Interrupt"; diff --git a/src/plugins/qmlprofiler/qmlprofilerengine.cpp b/src/plugins/qmlprofiler/qmlprofilerengine.cpp index a1e700c3949..93b87f3dfdb 100644 --- a/src/plugins/qmlprofiler/qmlprofilerengine.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerengine.cpp @@ -159,7 +159,7 @@ void QmlProfilerEngine::stop() void QmlProfilerEngine::stopped() { d->m_running = false; - AnalyzerManager::stopTool(tool()); + AnalyzerManager::stopTool(tool(), mode()); emit finished(); } diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index f766a555121..372ceccc919 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -121,6 +121,7 @@ public: QmlProfilerTool::QmlProfilerTool(QObject *parent) : IAnalyzerTool(parent), d(new QmlProfilerToolPrivate(this)) { + setObjectName("QmlProfilerTool"); d->m_client = 0; d->m_connectionAttempts = 0; d->m_traceWindow = 0; @@ -163,7 +164,7 @@ QString QmlProfilerTool::description() const "applications using QML."); } -IAnalyzerTool::ToolMode QmlProfilerTool::mode() const +IAnalyzerTool::ToolMode QmlProfilerTool::toolMode() const { return AnyMode; } diff --git a/src/plugins/qmlprofiler/qmlprofilertool.h b/src/plugins/qmlprofiler/qmlprofilertool.h index 15884b89481..50e3d1d55c0 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.h +++ b/src/plugins/qmlprofiler/qmlprofilertool.h @@ -51,7 +51,7 @@ public: QByteArray id() const; QString displayName() const; QString description() const; - ToolMode mode() const; + ToolMode toolMode() const; void extensionsInitialized() {} void initializeDockWidgets(); diff --git a/src/plugins/qmlprofiler/qmlprojectanalyzerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprojectanalyzerruncontrolfactory.cpp index e1171609dc2..7d5bb347526 100644 --- a/src/plugins/qmlprofiler/qmlprojectanalyzerruncontrolfactory.cpp +++ b/src/plugins/qmlprofiler/qmlprojectanalyzerruncontrolfactory.cpp @@ -68,6 +68,7 @@ AnalyzerStartParameters localStartParameters(ProjectExplorer::RunConfiguration * QmlProjectAnalyzerRunControlFactory::QmlProjectAnalyzerRunControlFactory(QObject *parent) : IRunControlFactory(parent) { + setObjectName(QLatin1String("QmlProjectAnalyzerRunControlFactory")); } bool QmlProjectAnalyzerRunControlFactory::canRun(RunConfiguration *runConfiguration, const QString &mode) const diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp index 70dc87a05a7..88abedc536a 100644 --- a/src/plugins/valgrind/callgrindtool.cpp +++ b/src/plugins/valgrind/callgrindtool.cpp @@ -501,9 +501,9 @@ CallgrindTool::CallgrindTool(QObject *parent) : Analyzer::IAnalyzerTool(parent) { d = new CallgrindToolPrivate(this); - Core::ICore *core = Core::ICore::instance(); + setObjectName(QLatin1String("CallgrindTool")); - // EditorManager + Core::ICore *core = Core::ICore::instance(); QObject *editorManager = core->editorManager(); connect(editorManager, SIGNAL(editorOpened(Core::IEditor*)), d, SLOT(editorOpened(Core::IEditor*))); @@ -530,7 +530,7 @@ QString CallgrindTool::description() const "record function calls when a program runs."); } -IAnalyzerTool::ToolMode CallgrindTool::mode() const +IAnalyzerTool::ToolMode CallgrindTool::toolMode() const { return ReleaseMode; } diff --git a/src/plugins/valgrind/callgrindtool.h b/src/plugins/valgrind/callgrindtool.h index 6aba3c7b14a..517753287f3 100644 --- a/src/plugins/valgrind/callgrindtool.h +++ b/src/plugins/valgrind/callgrindtool.h @@ -51,7 +51,7 @@ public: QByteArray id() const; QString displayName() const; QString description() const; - ToolMode mode() const; + ToolMode toolMode() const; void extensionsInitialized(); void initializeDockWidgets(); diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 7b7094f2900..b2b744ba95a 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -229,11 +229,6 @@ void MemcheckTool::settingsDestroyed(QObject *settings) m_settings = AnalyzerGlobalSettings::instance(); } -void MemcheckTool::extensionsInitialized() -{ - //ensureWidgets(); // FIXME: Try to do that later. -} - void MemcheckTool::maybeActiveRunConfigurationChanged() { ensureWidgets(); @@ -308,7 +303,7 @@ QString MemcheckTool::description() const "memory leaks"); } -IAnalyzerTool::ToolMode MemcheckTool::mode() const +IAnalyzerTool::ToolMode MemcheckTool::toolMode() const { return DebugMode; } diff --git a/src/plugins/valgrind/memchecktool.h b/src/plugins/valgrind/memchecktool.h index c83b4d6d84b..3035c0d7c3c 100644 --- a/src/plugins/valgrind/memchecktool.h +++ b/src/plugins/valgrind/memchecktool.h @@ -110,10 +110,10 @@ private slots: void suppressionActionTriggered(); private: - ToolMode mode() const; + ToolMode toolMode() const; void ensureWidgets(); void initializeDockWidgets(); - void extensionsInitialized(); + void extensionsInitialized() {} QWidget *createControlWidget(); Analyzer::IAnalyzerEngine *createEngine(const Analyzer::AnalyzerStartParameters &sp, @@ -122,7 +122,6 @@ private: void clearErrorView(); private: - bool m_local; Analyzer::AnalyzerSettings *m_settings; QMenu *m_filterMenu; diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp index d3a01fc7e4e..26420cb65fb 100644 --- a/src/plugins/valgrind/valgrindengine.cpp +++ b/src/plugins/valgrind/valgrindengine.cpp @@ -130,7 +130,7 @@ QString ValgrindEngine::executable() const void ValgrindEngine::handleProgressCanceled() { - AnalyzerManager::stopTool(tool()); + AnalyzerManager::stopTool(tool(), mode()); } void ValgrindEngine::handleProgressFinished()