diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 8d2c9582236e712682f21adfc979ee7163961dd8..ddf3098c158f739d6d37699a344734db5fe6e4ef 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -277,6 +277,15 @@ struct DebuggerManagerPrivate QLabel *m_statusLabel; + // FIXME: Move to DebuggerRunControl + BreakHandler *m_breakHandler; + ModulesHandler *m_modulesHandler; + RegisterHandler *m_registerHandler; + SnapshotHandler *m_snapshotHandler; + StackHandler *m_stackHandler; + ThreadsHandler *m_threadsHandler; + WatchHandler *m_watchHandler; + QDockWidget *m_breakDock; QDockWidget *m_modulesDock; QDockWidget *m_outputDock; @@ -288,14 +297,6 @@ struct DebuggerManagerPrivate QDockWidget *m_watchDock; QList<QDockWidget *> m_dockWidgets; - BreakHandler *m_breakHandler; - ModulesHandler *m_modulesHandler; - RegisterHandler *m_registerHandler; - SnapshotHandler *m_snapshotHandler; - StackHandler *m_stackHandler; - ThreadsHandler *m_threadsHandler; - WatchHandler *m_watchHandler; - DebuggerManagerActions m_actions; QWidget *m_breakWindow; @@ -711,41 +712,6 @@ IDebuggerEngine *DebuggerManager::currentEngine() const return d->m_engine; } -ModulesHandler *DebuggerManager::modulesHandler() const -{ - return d->m_modulesHandler; -} - -BreakHandler *DebuggerManager::breakHandler() const -{ - return d->m_breakHandler; -} - -RegisterHandler *DebuggerManager::registerHandler() const -{ - return d->m_registerHandler; -} - -StackHandler *DebuggerManager::stackHandler() const -{ - return d->m_stackHandler; -} - -ThreadsHandler *DebuggerManager::threadsHandler() const -{ - return d->m_threadsHandler; -} - -WatchHandler *DebuggerManager::watchHandler() const -{ - return d->m_watchHandler; -} - -SnapshotHandler *DebuggerManager::snapshotHandler() const -{ - return d->m_snapshotHandler; -} - const CPlusPlus::Snapshot &DebuggerManager::cppCodeModelSnapshot() const { if (d->m_codeModelSnapshot.isEmpty() && theDebuggerAction(UseCodeModel)->isChecked()) @@ -2010,6 +1976,40 @@ DebuggerOutputWindow *DebuggerManager::debuggerOutputWindow() const return d->m_outputWindow; } +ModulesHandler *DebuggerManager::modulesHandler() const +{ + return d->m_modulesHandler; +} + +BreakHandler *DebuggerManager::breakHandler() const +{ + return d->m_breakHandler; +} + +RegisterHandler *DebuggerManager::registerHandler() const +{ + return d->m_registerHandler; +} + +StackHandler *DebuggerManager::stackHandler() const +{ + return d->m_stackHandler; +} + +ThreadsHandler *DebuggerManager::threadsHandler() const +{ + return d->m_threadsHandler; +} + +WatchHandler *DebuggerManager::watchHandler() const +{ + return d->m_watchHandler; +} + +SnapshotHandler *DebuggerManager::snapshotHandler() const +{ + return d->m_snapshotHandler; +} ////////////////////////////////////////////////////////////////////// // diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 0e70d9376b686c8b4962181fb4d9afa5609da916..89c031f3db0ddaa1d06f3ef23394c793407fc1ea 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -69,16 +69,10 @@ namespace Internal { class DebuggerOutputWindow; class DebuggerPlugin; -class BreakHandler; class BreakpointData; -class ModulesHandler; -class RegisterHandler; class SourceFilesWindow; struct StackFrame; -class StackHandler; class Symbol; -class SnapshotHandler; -class ThreadsHandler; class WatchData; class WatchHandler; class IDebuggerEngine; @@ -257,8 +251,9 @@ public slots: // FIXME void operateByInstructionTriggered(); void startFailed(); -public: + friend class DebuggerRunControl; Internal::ModulesHandler *modulesHandler() const; +public: Internal::BreakHandler *breakHandler() const; Internal::RegisterHandler *registerHandler() const; Internal::StackHandler *stackHandler() const; diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index f5b0a34e2968323751cb16ea7373da33af3a84eb..94b225e948e06eb247f62192fe20e2882061b418 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -52,14 +52,14 @@ using namespace ProjectExplorer; using namespace Debugger::Internal; -namespace Debugger { - //////////////////////////////////////////////////////////////////////// // // DebuggerRunControlFactory // //////////////////////////////////////////////////////////////////////// +namespace Debugger { + // A factory to create DebuggerRunControls DebuggerRunControlFactory::DebuggerRunControlFactory(DebuggerManager *manager) : m_manager(manager) @@ -112,8 +112,8 @@ static DebuggerStartParameters localStartParameters(RunConfiguration *runConfigu return sp; } -RunControl *DebuggerRunControlFactory::create(RunConfiguration *runConfiguration, - const QString &mode) +RunControl *DebuggerRunControlFactory::create + (RunConfiguration *runConfiguration, const QString &mode) { QTC_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE, return 0); DebuggerStartParameters sp = localStartParameters(runConfiguration); @@ -133,6 +133,41 @@ QWidget *DebuggerRunControlFactory::createConfigurationWidget(RunConfiguration * } +//////////////////////////////////////////////////////////////////////// +// +// DebuggerRunControl::Private +// +//////////////////////////////////////////////////////////////////////// + +class DebuggerRunControl::Private +{ +public: + Private(DebuggerRunControl *parent); + +public: + DebuggerRunControl *q; + + DebuggerStartParameters m_startParameters; + DebuggerManager *m_manager; + bool m_running; + +/* + // FIXME: Move from DebuggerManager + BreakHandler *m_breakHandler; + ModulesHandler *m_modulesHandler; + RegisterHandler *m_registerHandler; + SnapshotHandler *m_snapshotHandler; + StackHandler *m_stackHandler; + ThreadsHandler *m_threadsHandler; + WatchHandler *m_watchHandler; +*/ +}; + +DebuggerRunControl::Private::Private(DebuggerRunControl *parent) + : q(parent) +{ +} + //////////////////////////////////////////////////////////////////////// // @@ -143,35 +178,41 @@ QWidget *DebuggerRunControlFactory::createConfigurationWidget(RunConfiguration * DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, const DebuggerStartParameters &startParameters) : RunControl(0, ProjectExplorer::Constants::DEBUGMODE), - m_startParameters(startParameters), - m_manager(manager), - m_running(false) + d(new Private(this)) { - connect(m_manager, SIGNAL(debuggingFinished()), + d->m_startParameters = startParameters; + d->m_manager = manager; + d->m_running = false; + connect(d->m_manager, SIGNAL(debuggingFinished()), this, SLOT(debuggingFinished()), Qt::QueuedConnection); - connect(m_manager, SIGNAL(messageAvailable(QString, bool)), + connect(d->m_manager, SIGNAL(messageAvailable(QString, bool)), this, SLOT(slotMessageAvailable(QString, bool))); - connect(m_manager, SIGNAL(inferiorPidChanged(qint64)), + connect(d->m_manager, SIGNAL(inferiorPidChanged(qint64)), this, SLOT(bringApplicationToForeground(qint64)), Qt::QueuedConnection); connect(this, SIGNAL(stopRequested()), - m_manager, SLOT(exitDebugger())); + d->m_manager, SLOT(exitDebugger())); - if (m_startParameters.environment.empty()) - m_startParameters.environment = ProjectExplorer::Environment().toStringList(); - m_startParameters.useTerminal = false; + if (d->m_startParameters.environment.empty()) + d->m_startParameters.environment = ProjectExplorer::Environment().toStringList(); + d->m_startParameters.useTerminal = false; } +DebuggerRunControl::~DebuggerRunControl() +{ + delete d; +} + QString DebuggerRunControl::displayName() const { - return m_startParameters.displayName; + return d->m_startParameters.displayName; } void DebuggerRunControl::setCustomEnvironment(ProjectExplorer::Environment env) { - m_startParameters.environment = env.toStringList(); + d->m_startParameters.environment = env.toStringList(); } void DebuggerRunControl::init() @@ -180,13 +221,13 @@ void DebuggerRunControl::init() void DebuggerRunControl::start() { - m_running = true; + d->m_running = true; QString errorMessage; QString settingsCategory; QString settingsPage; - if (m_manager->checkDebugConfiguration(m_startParameters.toolChainType, + if (d->m_manager->checkDebugConfiguration(d->m_startParameters.toolChainType, &errorMessage, &settingsCategory, &settingsPage)) { - m_manager->startNewDebugger(this); + d->m_manager->startNewDebugger(this); emit started(); } else { appendMessage(this, errorMessage, true); @@ -199,13 +240,13 @@ void DebuggerRunControl::start() void DebuggerRunControl::showMessage(const QString &msg, int channel, int timeout) { - if (!m_manager) + if (!d->m_manager) return; - DebuggerOutputWindow *ow = m_manager->debuggerOutputWindow(); + DebuggerOutputWindow *ow = d->m_manager->debuggerOutputWindow(); QTC_ASSERT(ow, return); switch (channel) { case StatusBar: - m_manager->showStatusMessage(msg, timeout); + d->m_manager->showStatusMessage(msg, timeout); ow->showOutput(LogStatus, msg); break; case AppOutput: @@ -233,22 +274,61 @@ void DebuggerRunControl::slotMessageAvailable(const QString &data, bool isError) emit appendMessage(this, data, isError); } - void DebuggerRunControl::stop() { - m_running = false; + d->m_running = false; emit stopRequested(); } void DebuggerRunControl::debuggingFinished() { - m_running = false; + d->m_running = false; emit finished(); } bool DebuggerRunControl::isRunning() const { - return m_running; + return d->m_running; +} + +const DebuggerStartParameters &DebuggerRunControl::sp() const +{ + return d->m_startParameters; +} + +ModulesHandler *DebuggerRunControl::modulesHandler() const +{ + return d->m_manager->modulesHandler(); +} + +BreakHandler *DebuggerRunControl::breakHandler() const +{ + return d->m_manager->breakHandler(); +} + +RegisterHandler *DebuggerRunControl::registerHandler() const +{ + return d->m_manager->registerHandler(); +} + +StackHandler *DebuggerRunControl::stackHandler() const +{ + return d->m_manager->stackHandler(); +} + +ThreadsHandler *DebuggerRunControl::threadsHandler() const +{ + return d->m_manager->threadsHandler(); +} + +WatchHandler *DebuggerRunControl::watchHandler() const +{ + return d->m_manager->watchHandler(); +} + +SnapshotHandler *DebuggerRunControl::snapshotHandler() const +{ + return d->m_manager->snapshotHandler(); } } // namespace Debugger diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h index 7c47ba3d92a2745a22782e61b6087e6199a45c0b..35ed5708797ab35073aa3d36bb95b18d6f349c3a 100644 --- a/src/plugins/debugger/debuggerrunner.h +++ b/src/plugins/debugger/debuggerrunner.h @@ -39,13 +39,24 @@ #include <QtCore/QStringList> namespace ProjectExplorer { - class Environment; +class Environment; } + namespace Debugger { class DebuggerManager; +namespace Internal { +class BreakHandler; +class ModulesHandler; +class RegisterHandler; +class StackHandler; +class SnapshotHandler; +class ThreadsHandler; +class WatchHandler; +} + class DEBUGGER_EXPORT DebuggerStartParameters { public: @@ -104,7 +115,8 @@ private: DebuggerManager *m_manager; }; -// This is a job description +// This is a job description containing all data "local" to the jobs, including +// the models of the individual debugger views. class DEBUGGER_EXPORT DebuggerRunControl : public ProjectExplorer::RunControl { @@ -113,6 +125,7 @@ class DEBUGGER_EXPORT DebuggerRunControl public: DebuggerRunControl(DebuggerManager *manager, const DebuggerStartParameters &startParameters); + ~DebuggerRunControl(); void setCustomEnvironment(ProjectExplorer::Environment env); @@ -124,7 +137,15 @@ public: Q_SLOT void debuggingFinished(); - const DebuggerStartParameters &sp() const { return m_startParameters; } + const DebuggerStartParameters &sp() const; + + Internal::ModulesHandler *modulesHandler() const; + Internal::BreakHandler *breakHandler() const; + Internal::RegisterHandler *registerHandler() const; + Internal::StackHandler *stackHandler() const; + Internal::ThreadsHandler *threadsHandler() const; + Internal::WatchHandler *watchHandler() const; + Internal::SnapshotHandler *snapshotHandler() const; signals: void stopRequested(); @@ -137,9 +158,8 @@ private slots: private: void init(); - DebuggerStartParameters m_startParameters; - DebuggerManager *m_manager; - bool m_running; + class Private; + Private *d; }; } // namespace Debugger