From b7563b3db24d9c53eeacaa428c48ff50d18da32f Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Fri, 11 Jun 2010 16:06:13 +0200 Subject: [PATCH] debugger: streamline RunControl creation a bit --- src/plugins/debugger/debuggerrunner.cpp | 112 +++++++++++------------- src/plugins/debugger/debuggerrunner.h | 9 +- 2 files changed, 59 insertions(+), 62 deletions(-) diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index d7c606dc2e0..665877e7986 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -76,75 +76,39 @@ QString DebuggerRunControlFactory::displayName() const return tr("Debug"); } -RunControl *DebuggerRunControlFactory::create(const DebuggerStartParametersPtr &sp) +static DebuggerStartParametersPtr localStartParameters(RunConfiguration *runConfiguration) { - return new DebuggerRunControl(m_manager, sp); -} - -RunControl *DebuggerRunControlFactory::create(RunConfiguration *runConfiguration, - const QString &mode) -{ - QTC_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE, return 0); - LocalApplicationRunConfiguration *rc = qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration); - QTC_ASSERT(rc, return 0); - return new DebuggerRunControl(m_manager, rc); -} + DebuggerStartParametersPtr sp(new DebuggerStartParameters()); + QTC_ASSERT(runConfiguration, return sp); + LocalApplicationRunConfiguration *rc = + qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration); + QTC_ASSERT(rc, return sp); -QWidget *DebuggerRunControlFactory::createConfigurationWidget(RunConfiguration *runConfiguration) -{ - // NBS TODO: Add GDB-specific configuration widget - Q_UNUSED(runConfiguration) - return 0; -} - - - -//////////////////////////////////////////////////////////////////////// -// -// DebuggerRunControl -// -//////////////////////////////////////////////////////////////////////// - - -DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, - LocalApplicationRunConfiguration *runConfiguration) - : RunControl(runConfiguration, ProjectExplorer::Constants::DEBUGMODE), - m_startParameters(new DebuggerStartParameters()), - m_manager(manager), - m_running(false) -{ - init(); - if (!runConfiguration) - return; + sp->startMode = StartInternal; + sp->executable = rc->executable(); + sp->environment = rc->environment().toStringList(); + sp->workingDirectory = rc->workingDirectory(); + sp->processArgs = rc->commandLineArguments(); - m_startParameters->startMode = StartInternal; - m_startParameters->executable = runConfiguration->executable(); - m_startParameters->environment = runConfiguration->environment().toStringList(); - m_startParameters->workingDirectory = runConfiguration->workingDirectory(); - m_startParameters->processArgs = runConfiguration->commandLineArguments(); - - switch (m_startParameters->toolChainType) { + switch (sp->toolChainType) { case ProjectExplorer::ToolChain::UNKNOWN: case ProjectExplorer::ToolChain::INVALID: - m_startParameters->toolChainType = runConfiguration->toolChainType(); + sp->toolChainType = rc->toolChainType(); break; default: break; } - if (runConfiguration->target()->project()) { - BuildConfiguration *bc = runConfiguration->target()->activeBuildConfiguration(); + if (rc->target()->project()) { + BuildConfiguration *bc = rc->target()->activeBuildConfiguration(); if (bc) - m_startParameters->buildDirectory = bc->buildDirectory(); + sp->buildDirectory = bc->buildDirectory(); } - m_startParameters->useTerminal = - runConfiguration->runMode() == LocalApplicationRunConfiguration::Console; - m_startParameters->dumperLibrary = - runConfiguration->dumperLibrary(); - m_startParameters->dumperLibraryLocations = - runConfiguration->dumperLibraryLocations(); + sp->useTerminal = rc->runMode() == LocalApplicationRunConfiguration::Console; + sp->dumperLibrary = rc->dumperLibrary(); + sp->dumperLibraryLocations = rc->dumperLibraryLocations(); QString qmakePath = ProjectExplorer::DebuggingHelperLibrary::findSystemQt( - runConfiguration->environment()); + rc->environment()); if (!qmakePath.isEmpty()) { QProcess proc; QStringList args; @@ -154,13 +118,43 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, proc.waitForFinished(); QByteArray ba = proc.readAllStandardOutput().trimmed(); QFileInfo fi(QString::fromLocal8Bit(ba) + "/.."); - m_startParameters->qtInstallPath = fi.absoluteFilePath(); + sp->qtInstallPath = fi.absoluteFilePath(); } + return sp; +} +RunControl *DebuggerRunControlFactory::create(RunConfiguration *runConfiguration, + const QString &mode) +{ + QTC_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE, return 0); + DebuggerStartParametersPtr sp = localStartParameters(runConfiguration); + return new DebuggerRunControl(m_manager, sp, runConfiguration); +} + +RunControl *DebuggerRunControlFactory::create(const DebuggerStartParametersPtr &sp) +{ + return new DebuggerRunControl(m_manager, sp, 0); +} + +QWidget *DebuggerRunControlFactory::createConfigurationWidget(RunConfiguration *runConfiguration) +{ + // NBS TODO: Add GDB-specific configuration widget + Q_UNUSED(runConfiguration) + return 0; } -DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, const DebuggerStartParametersPtr &startParameters) - : RunControl(0, ProjectExplorer::Constants::DEBUGMODE), + + +//////////////////////////////////////////////////////////////////////// +// +// DebuggerRunControl +// +//////////////////////////////////////////////////////////////////////// + +DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, + const DebuggerStartParametersPtr &startParameters, + ProjectExplorer::RunConfiguration *runConfiguration) + : RunControl(runConfiguration, ProjectExplorer::Constants::DEBUGMODE), m_startParameters(startParameters), m_manager(manager), m_running(false) diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h index 9c39fdd80e8..5660e170304 100644 --- a/src/plugins/debugger/debuggerrunner.h +++ b/src/plugins/debugger/debuggerrunner.h @@ -55,6 +55,7 @@ public: virtual QWidget *createConfigurationWidget(ProjectExplorer::RunConfiguration *runConfiguration); + // This is used by the "Non-Standard" scenarios, e.g. Attach to Core. ProjectExplorer::RunControl *create(const DebuggerStartParametersPtr &sp); private: @@ -69,9 +70,11 @@ class DEBUGGER_EXPORT DebuggerRunControl Q_OBJECT public: - DebuggerRunControl(DebuggerManager *manager, - ProjectExplorer::LocalApplicationRunConfiguration *runConfiguration); - DebuggerRunControl(DebuggerManager *manager, const DebuggerStartParametersPtr &startParameters); + // startParameters are primary. If the user code has a RunConfiguration + // (like the 'standard' LocalRunConfiguration), it should pass it so + // we can pass it down to the ProjectExplorer::RunControl constructor. + DebuggerRunControl(DebuggerManager *manager, const DebuggerStartParametersPtr &startParameters, + ProjectExplorer::RunConfiguration *runConfiguration = 0); void setCustomEnvironment(ProjectExplorer::Environment env); -- GitLab