diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index ca08adcf0681f57ca571be2df9ed7bd3e80b1169..656f2284b9a88b663dfdcdb611538a1e077085a7 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -28,7 +28,6 @@ HEADERS += breakhandler.h \ debuggerconstants.h \ debuggerdialogs.h \ debuggerengine.h \ - debuggermainwindow.h \ debuggerplugin.h \ debuggerrunner.h \ debuggerstreamops.h \ @@ -69,7 +68,6 @@ SOURCES += breakhandler.cpp \ debuggeragents.cpp \ debuggerdialogs.cpp \ debuggerengine.cpp \ - debuggermainwindow.cpp \ debuggerplugin.cpp \ debuggerrunner.cpp \ debuggerstreamops.cpp \ diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 2a3c479ff803628511f22747a1ed6b0d270b3b47..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -1,78 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "debuggermainwindow.h" -#include "debuggeruiswitcher.h" - -#include <QtGui/QMenu> -#include <QtGui/QDockWidget> - -#include <QtCore/QDebug> - -namespace Debugger { -namespace Internal { - -DebuggerMainWindow::DebuggerMainWindow(DebuggerUISwitcher *uiSwitcher, QWidget *parent) : - FancyMainWindow(parent), m_uiSwitcher(uiSwitcher) -{ - // TODO how to "append" style sheet? - // QString sheet; - // After setting it, all prev. style stuff seem to be ignored. - /* sheet = QLatin1String( - "Debugger--DebuggerMainWindow::separator {" - " background: black;" - " width: 1px;" - " height: 1px;" - "}" - ); - setStyleSheet(sheet); - */ -} - -QMenu *DebuggerMainWindow::createPopupMenu() -{ - QMenu *menu = 0; - - const QList<QDockWidget* > dockwidgets = m_uiSwitcher->dockWidgets(); - - if (!dockwidgets.isEmpty()) { - menu = FancyMainWindow::createPopupMenu(); - - foreach (QDockWidget *dockWidget, dockwidgets) { - if (dockWidget->parentWidget() == this) - menu->addAction(dockWidget->toggleViewAction()); - } - menu->addSeparator(); - } - - return menu; -} - -} // namespace Internal -} // namespace Debugger diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h index e16f1a322ffb4fe399a11066dd5dd04c05dabdea..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/src/plugins/debugger/debuggermainwindow.h +++ b/src/plugins/debugger/debuggermainwindow.h @@ -1,58 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef DEBUGGERMAINWINDOW_H -#define DEBUGGERMAINWINDOW_H - -#include <utils/fancymainwindow.h> - -QT_FORWARD_DECLARE_CLASS(QMenu); - -namespace Debugger { -class DebuggerUISwitcher; - -namespace Internal { - -class DebuggerMainWindow : public Utils::FancyMainWindow -{ - Q_OBJECT -public: - explicit DebuggerMainWindow(DebuggerUISwitcher *uiSwitcher, QWidget *parent = 0); - -protected: - virtual QMenu *createPopupMenu(); - -private: - DebuggerUISwitcher *m_uiSwitcher; -}; - -} // namespace Internal -} // namespace Debugger - -#endif // DEBUGGERMAINWINDOW_H diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index d8acb1a11024aad913f496939e9af79176a80c00..86d160e5cacdb22ca4d47de36e47a398245d9243 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -35,7 +35,6 @@ #include "debuggercore.h" #include "debuggerdialogs.h" #include "debuggerengine.h" -#include "debuggermainwindow.h" #include "debuggerrunner.h" #include "debuggerstringutils.h" #include "debuggertooltip.h" @@ -1061,7 +1060,7 @@ public slots: void showQtDumperLibraryWarning(const QString &details); DebuggerMainWindow *debuggerMainWindow() const; - QWidget *mainWindow() const { return m_uiSwitcher->mainWindow(); } + QWidget *mainWindow() const { return m_mainWindow; } bool isRegisterViewVisible() const; bool hasSnapshots() const { return m_snapshotHandler->size(); } @@ -1302,7 +1301,7 @@ public slots: bool isActiveDebugLanguage(int lang) const { - return m_uiSwitcher->activeDebugLanguages() & lang; + return m_mainWindow->activeDebugLanguages() & lang; } void resetLocation(); @@ -1324,7 +1323,7 @@ public slots: public: DebuggerState m_state; - DebuggerUISwitcher *m_uiSwitcher; + DebuggerMainWindow *m_mainWindow; DebuggerPlugin *m_manager; DebugMode *m_debugMode; DebuggerRunControlFactory *m_debuggerRunControlFactory; @@ -1449,7 +1448,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin) m_anyContext = Context(0); m_debugMode = 0; - m_uiSwitcher = 0; + m_mainWindow = 0; m_state = DebuggerNotReady; m_snapshotHandler = 0; m_currentEngine = 0; @@ -1468,9 +1467,9 @@ DebuggerPluginPrivate::~DebuggerPluginPrivate() delete m_debugMode; m_debugMode = 0; - m_plugin->removeObject(m_uiSwitcher); - delete m_uiSwitcher; - m_uiSwitcher = 0; + m_plugin->removeObject(m_mainWindow); + delete m_mainWindow; + m_mainWindow = 0; delete m_snapshotHandler; m_snapshotHandler = 0; @@ -2139,21 +2138,20 @@ void DebuggerPluginPrivate::setBusyCursor(bool busy) void DebuggerPluginPrivate::setSimpleDockWidgetArrangement (Debugger::DebuggerLanguages activeLanguages) { - DebuggerMainWindow *mw = debuggerMainWindow(); - QTC_ASSERT(mw, return); - mw->setTrackingEnabled(false); + QTC_ASSERT(m_mainWindow, return); + m_mainWindow->setTrackingEnabled(false); - QList<QDockWidget *> dockWidgets = mw->dockWidgets(); + QList<QDockWidget *> dockWidgets = m_mainWindow->dockWidgets(); foreach (QDockWidget *dockWidget, dockWidgets) { dockWidget->setFloating(false); - mw->removeDockWidget(dockWidget); + m_mainWindow->removeDockWidget(dockWidget); } foreach (QDockWidget *dockWidget, dockWidgets) { if (dockWidget == m_outputDock /*|| dockWidget == m_consoleDock*/) { - mw->addDockWidget(Qt::TopDockWidgetArea, dockWidget); + m_mainWindow->addDockWidget(Qt::TopDockWidgetArea, dockWidget); } else { - mw->addDockWidget(Qt::BottomDockWidgetArea, dockWidget); + m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dockWidget); } dockWidget->hide(); } @@ -2171,22 +2169,22 @@ void DebuggerPluginPrivate::setSimpleDockWidgetArrangement m_breakDock->show(); m_watchDock->show(); m_scriptConsoleDock->show(); - if (m_uiSwitcher->qmlInspectorWindow()) - m_uiSwitcher->qmlInspectorWindow()->show(); + if (m_mainWindow->qmlInspectorWindow()) + m_mainWindow->qmlInspectorWindow()->show(); } - mw->splitDockWidget(mw->toolBarDockWidget(), m_stackDock, Qt::Vertical); - mw->splitDockWidget(m_stackDock, m_watchDock, Qt::Horizontal); - mw->tabifyDockWidget(m_watchDock, m_breakDock); - mw->tabifyDockWidget(m_watchDock, m_modulesDock); - mw->tabifyDockWidget(m_watchDock, m_registerDock); - mw->tabifyDockWidget(m_watchDock, m_threadsDock); - mw->tabifyDockWidget(m_watchDock, m_sourceFilesDock); - mw->tabifyDockWidget(m_watchDock, m_snapshotDock); - mw->tabifyDockWidget(m_watchDock, m_scriptConsoleDock); - if (m_uiSwitcher->qmlInspectorWindow()) - mw->tabifyDockWidget(m_watchDock, m_uiSwitcher->qmlInspectorWindow()); + m_mainWindow->splitDockWidget(m_mainWindow->toolBarDockWidget(), m_stackDock, Qt::Vertical); + m_mainWindow->splitDockWidget(m_stackDock, m_watchDock, Qt::Horizontal); + m_mainWindow->tabifyDockWidget(m_watchDock, m_breakDock); + m_mainWindow->tabifyDockWidget(m_watchDock, m_modulesDock); + m_mainWindow->tabifyDockWidget(m_watchDock, m_registerDock); + m_mainWindow->tabifyDockWidget(m_watchDock, m_threadsDock); + m_mainWindow->tabifyDockWidget(m_watchDock, m_sourceFilesDock); + m_mainWindow->tabifyDockWidget(m_watchDock, m_snapshotDock); + m_mainWindow->tabifyDockWidget(m_watchDock, m_scriptConsoleDock); + if (m_mainWindow->qmlInspectorWindow()) + m_mainWindow->tabifyDockWidget(m_watchDock, m_mainWindow->qmlInspectorWindow()); - mw->setTrackingEnabled(true); + m_mainWindow->setTrackingEnabled(true); } void DebuggerPluginPrivate::setInitialState() @@ -2412,7 +2410,7 @@ void DebuggerPluginPrivate::onModeChanged(IMode *mode) // different then the debugger mode. E.g. Welcome and Help mode and // also on shutdown. - m_uiSwitcher->onModeChanged(mode); + m_mainWindow->onModeChanged(mode); if (mode != m_debugMode) return; @@ -2535,7 +2533,7 @@ void DebuggerPluginPrivate::coreShutdown() void DebuggerPluginPrivate::writeSettings() const { m_debuggerSettings->writeSettings(); - m_uiSwitcher->writeSettings(); + m_mainWindow->writeSettings(); if (GdbOptionsPage::gdbBinariesChanged) GdbOptionsPage::writeGdbBinarySettings(); } @@ -2544,7 +2542,7 @@ void DebuggerPluginPrivate::readSettings() { //qDebug() << "PLUGIN READ SETTINGS"; m_debuggerSettings->readSettings(); - m_uiSwitcher->readSettings(); + m_mainWindow->readSettings(); GdbOptionsPage::readGdbBinarySettings(); } @@ -2681,7 +2679,7 @@ bool DebuggerPluginPrivate::isRegisterViewVisible() const void DebuggerPluginPrivate::createNewDock(QWidget *widget) { QDockWidget *dockWidget = - m_uiSwitcher->createDockWidget(CppLanguage, widget); + m_mainWindow->createDockWidget(CppLanguage, widget); dockWidget->setWindowTitle(widget->windowTitle()); dockWidget->setObjectName(widget->windowTitle()); dockWidget->setFeatures(QDockWidget::DockWidgetClosable); @@ -2694,7 +2692,7 @@ void DebuggerPluginPrivate::runControlStarted(DebuggerRunControl *runControl) { activateDebugMode(); if (!hasSnapshots()) - m_uiSwitcher->updateActiveLanguages(); + m_mainWindow->updateActiveLanguages(); const QString message = runControl->idString(); showMessage(message, StatusBar); @@ -2745,7 +2743,7 @@ QString DebuggerPluginPrivate::gdbBinaryForToolChain(int toolChain) const DebuggerLanguages DebuggerPluginPrivate::activeLanguages() const { - return m_uiSwitcher->activeDebugLanguages(); + return m_mainWindow->activeDebugLanguages(); } bool DebuggerPluginPrivate::isReverseDebugging() const @@ -2943,52 +2941,52 @@ void DebuggerPluginPrivate::extensionsInitialized() SLOT(executeDebuggerCommand())); // Cpp/Qml ui setup - m_uiSwitcher = new DebuggerUISwitcher(this); - m_debugMode->setWidget(m_uiSwitcher->createContents(m_debugMode)); - ExtensionSystem::PluginManager::instance()->addObject(m_uiSwitcher); - m_uiSwitcher->addLanguage(CppLanguage, cppDebuggercontext); - m_uiSwitcher->addLanguage(QmlLanguage, qmlDebuggerContext); - m_uiSwitcher->initialize(m_coreSettings); + m_mainWindow = new DebuggerMainWindow; + m_debugMode->setWidget(m_mainWindow->createContents(m_debugMode)); + ExtensionSystem::PluginManager::instance()->addObject(m_mainWindow); + m_mainWindow->addLanguage(CppLanguage, cppDebuggercontext); + m_mainWindow->addLanguage(QmlLanguage, qmlDebuggerContext); + m_mainWindow->initialize(m_coreSettings); readSettings(); // Dock widgets - m_breakDock = m_uiSwitcher->createDockWidget(CppLanguage, m_breakWindow); + m_breakDock = m_mainWindow->createDockWidget(CppLanguage, m_breakWindow); m_breakDock->setObjectName(QString(DOCKWIDGET_BREAK)); - //m_consoleDock = m_uiSwitcher->createDockWidget(CppLanguage, m_consoleWindow, + //m_consoleDock = m_mainWindow->createDockWidget(CppLanguage, m_consoleWindow, // Qt::TopDockWidgetArea); //m_consoleDock->setObjectName(QString(DOCKWIDGET_OUTPUT)); - m_modulesDock = m_uiSwitcher->createDockWidget(CppLanguage, m_modulesWindow, + m_modulesDock = m_mainWindow->createDockWidget(CppLanguage, m_modulesWindow, Qt::TopDockWidgetArea); m_modulesDock->setObjectName(QString(DOCKWIDGET_MODULES)); connect(m_modulesDock->toggleViewAction(), SIGNAL(toggled(bool)), SLOT(modulesDockToggled(bool)), Qt::QueuedConnection); - m_registerDock = m_uiSwitcher->createDockWidget(CppLanguage, m_registerWindow, + m_registerDock = m_mainWindow->createDockWidget(CppLanguage, m_registerWindow, Qt::TopDockWidgetArea); m_registerDock->setObjectName(QString(DOCKWIDGET_REGISTER)); connect(m_registerDock->toggleViewAction(), SIGNAL(toggled(bool)), SLOT(registerDockToggled(bool)), Qt::QueuedConnection); - m_outputDock = m_uiSwitcher->createDockWidget(AnyLanguage, m_logWindow, + m_outputDock = m_mainWindow->createDockWidget(AnyLanguage, m_logWindow, Qt::TopDockWidgetArea); m_outputDock->setObjectName(QString(DOCKWIDGET_OUTPUT)); - m_snapshotDock = m_uiSwitcher->createDockWidget(CppLanguage, m_snapshotWindow); + m_snapshotDock = m_mainWindow->createDockWidget(CppLanguage, m_snapshotWindow); m_snapshotDock->setObjectName(QString(DOCKWIDGET_SNAPSHOTS)); - m_stackDock = m_uiSwitcher->createDockWidget(CppLanguage, m_stackWindow); + m_stackDock = m_mainWindow->createDockWidget(CppLanguage, m_stackWindow); m_stackDock->setObjectName(QString(DOCKWIDGET_STACK)); - m_sourceFilesDock = m_uiSwitcher->createDockWidget(CppLanguage, + m_sourceFilesDock = m_mainWindow->createDockWidget(CppLanguage, m_sourceFilesWindow, Qt::TopDockWidgetArea); m_sourceFilesDock->setObjectName(QString(DOCKWIDGET_SOURCE_FILES)); connect(m_sourceFilesDock->toggleViewAction(), SIGNAL(toggled(bool)), SLOT(sourceFilesDockToggled(bool)), Qt::QueuedConnection); - m_threadsDock = m_uiSwitcher->createDockWidget(CppLanguage, m_threadsWindow); + m_threadsDock = m_mainWindow->createDockWidget(CppLanguage, m_threadsWindow); m_threadsDock->setObjectName(QString(DOCKWIDGET_THREADS)); QSplitter *localsAndWatchers = new Core::MiniSplitter(Qt::Vertical); @@ -3001,11 +2999,11 @@ void DebuggerPluginPrivate::extensionsInitialized() localsAndWatchers->setStretchFactor(1, 1); localsAndWatchers->setStretchFactor(2, 1); - m_watchDock = m_uiSwitcher->createDockWidget(CppLanguage, localsAndWatchers); + m_watchDock = m_mainWindow->createDockWidget(CppLanguage, localsAndWatchers); m_watchDock->setObjectName(QString(DOCKWIDGET_WATCHERS)); m_scriptConsoleDock = - m_uiSwitcher->createDockWidget(QmlLanguage, m_scriptConsoleWindow); + m_mainWindow->createDockWidget(QmlLanguage, m_scriptConsoleWindow); m_scriptConsoleDock->setObjectName(QString(DOCKWIDGET_QML_SCRIPTCONSOLE)); // Register factory of DebuggerRunControl. @@ -3119,13 +3117,13 @@ void DebuggerPluginPrivate::extensionsInitialized() cmd = am->registerAction(m_detachAction, Constants::DETACH, globalcontext); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, AnyLanguage, CC::G_DEFAULT_ONE); + m_mainWindow->addMenuAction(cmd, AnyLanguage, CC::G_DEFAULT_ONE); cmd = am->registerAction(m_actions.exitAction, Constants::STOP, globalcontext); //cmd->setDefaultKeySequence(QKeySequence(Constants::STOP_KEY)); cmd->setDefaultText(tr("Stop Debugger")); - m_uiSwitcher->addMenuAction(cmd, AnyLanguage, CC::G_DEFAULT_ONE); + m_mainWindow->addMenuAction(cmd, AnyLanguage, CC::G_DEFAULT_ONE); cmd = am->registerAction(m_actions.interruptAction, Constants::DEBUG, m_interruptibleContext); @@ -3139,77 +3137,77 @@ void DebuggerPluginPrivate::extensionsInitialized() Constants::RESET, globalcontext); //cmd->setDefaultKeySequence(QKeySequence(Constants::RESET_KEY)); cmd->setDefaultText(tr("Reset Debugger")); - m_uiSwitcher->addMenuAction(cmd, AnyLanguage, CC::G_DEFAULT_ONE); + m_mainWindow->addMenuAction(cmd, AnyLanguage, CC::G_DEFAULT_ONE); QAction *sep = new QAction(this); sep->setSeparator(true); cmd = am->registerAction(sep, _("Debugger.Sep.Step"), globalcontext); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.nextAction, Constants::NEXT, cppDebuggercontext); cmd->setDefaultKeySequence(QKeySequence(Constants::NEXT_KEY)); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.stepAction, Constants::STEP, cppDebuggercontext); cmd->setDefaultKeySequence(QKeySequence(Constants::STEP_KEY)); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.stepOutAction, Constants::STEPOUT, cppDebuggercontext); cmd->setDefaultKeySequence(QKeySequence(Constants::STEPOUT_KEY)); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.runToLineAction, Constants::RUN_TO_LINE1, cppDebuggercontext); cmd->setDefaultKeySequence(QKeySequence(Constants::RUN_TO_LINE_KEY)); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.runToFunctionAction, Constants::RUN_TO_FUNCTION, cppDebuggercontext); cmd->setDefaultKeySequence(QKeySequence(Constants::RUN_TO_FUNCTION_KEY)); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.jumpToLineAction, Constants::JUMP_TO_LINE1, cppDebuggercontext); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.returnFromFunctionAction, Constants::RETURN_FROM_FUNCTION, cppDebuggercontext); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.reverseDirectionAction, Constants::REVERSE, cppDebuggercontext); cmd->setDefaultKeySequence(QKeySequence(Constants::REVERSE_KEY)); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); sep = new QAction(this); sep->setSeparator(true); cmd = am->registerAction(sep, _("Debugger.Sep.Break"), globalcontext); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); //cmd = am->registerAction(m_actions.snapshotAction, // Constants::SNAPSHOT, cppDebuggercontext); //cmd->setDefaultKeySequence(QKeySequence(Constants::SNAPSHOT_KEY)); //cmd->setAttribute(Command::CA_Hide); - //m_uiSwitcher->addMenuAction(cmd, CppLanguage); + //m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.frameDownAction, Constants::FRAME_DOWN, cppDebuggercontext); @@ -3220,13 +3218,13 @@ void DebuggerPluginPrivate::extensionsInitialized() cmd = am->registerAction(action(OperateByInstruction), Constants::OPERATE_BY_INSTRUCTION, cppDebuggercontext); cmd->setAttribute(Command::CA_Hide); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.breakAction, Constants::TOGGLE_BREAK, globalcontext); cmd->setDefaultKeySequence(QKeySequence(Constants::TOGGLE_BREAK_KEY)); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); connect(m_actions.breakAction, SIGNAL(triggered()), SLOT(toggleBreakpoint())); @@ -3235,14 +3233,14 @@ void DebuggerPluginPrivate::extensionsInitialized() sep = new QAction(this); sep->setSeparator(true); cmd = am->registerAction(sep, _("Debugger.Sep.Watch"), globalcontext); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); cmd = am->registerAction(m_actions.watchAction1, Constants::ADD_TO_WATCH1, cppeditorcontext); cmd->action()->setEnabled(true); //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+W"))); - m_uiSwitcher->addMenuAction(cmd, CppLanguage); + m_mainWindow->addMenuAction(cmd, CppLanguage); // Editor context menu @@ -3349,8 +3347,8 @@ void DebuggerPluginPrivate::extensionsInitialized() hbox->addSpacerItem(new QSpacerItem(4, 0)); hbox->addWidget(m_statusLabel, 10); - m_uiSwitcher->setToolbar(CppLanguage, toolbarContainer); - connect(m_uiSwitcher, + m_mainWindow->setToolbar(CppLanguage, toolbarContainer); + connect(m_mainWindow, SIGNAL(dockResetRequested(Debugger::DebuggerLanguages)), SLOT(setSimpleDockWidgetArrangement(Debugger::DebuggerLanguages))); @@ -3359,7 +3357,7 @@ void DebuggerPluginPrivate::extensionsInitialized() SLOT(enableReverseDebuggingTriggered(QVariant))); // UI Switcher - connect(m_uiSwitcher, + connect(m_mainWindow, SIGNAL(activeLanguagesChanged(Debugger::DebuggerLanguages)), SLOT(languagesChanged(Debugger::DebuggerLanguages))); @@ -3377,7 +3375,7 @@ void DebuggerPluginPrivate::extensionsInitialized() QTC_ASSERT(m_coreSettings, /**/); m_watchersWindow->setVisible(false); m_returnWindow->setVisible(false); - connect(m_uiSwitcher, SIGNAL(memoryEditorRequested()), + connect(m_mainWindow, SIGNAL(memoryEditorRequested()), SLOT(openMemoryEditor())); // time gdb -i mi -ex 'debuggerplugin.cpp:800' -ex r -ex q bin/qtcreator.bin @@ -3524,9 +3522,9 @@ bool DebuggerPlugin::isActiveDebugLanguage(int language) return theDebuggerCore->isActiveDebugLanguage(language); } -DebuggerUISwitcher *DebuggerPlugin::uiSwitcher() +DebuggerMainWindow *DebuggerPlugin::mainWindow() { - return theDebuggerCore->m_uiSwitcher; + return theDebuggerCore->m_mainWindow; } diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h index 6b0175a6e585050edb83d590b7452daae7925be4..391353bd557b474a06f51d7f37f6ec71c563809b 100644 --- a/src/plugins/debugger/debuggerplugin.h +++ b/src/plugins/debugger/debuggerplugin.h @@ -45,7 +45,7 @@ namespace Debugger { class DebuggerRunControl; class DebuggerStartParameters; -class DebuggerUISwitcher; +class DebuggerMainWindow; // This is the "external" interface of the debugger plugin that's // visible from Creator core. The internal interfact to global @@ -65,7 +65,7 @@ public: static void startDebugger(ProjectExplorer::RunControl *runControl); static void displayDebugger(ProjectExplorer::RunControl *runControl); static bool isActiveDebugLanguage(int language); - static DebuggerUISwitcher *uiSwitcher(); + static DebuggerMainWindow *mainWindow(); private: // IPlugin implementation. diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp index f46013c937c2cd5ecbbf2e8b18b1e650a490484e..28221dc860afca1ebd00b8d5635229e08cd9404d 100644 --- a/src/plugins/debugger/debuggeruiswitcher.cpp +++ b/src/plugins/debugger/debuggeruiswitcher.cpp @@ -28,11 +28,11 @@ **************************************************************************/ #include "debuggeruiswitcher.h" -#include "debuggermainwindow.h" #include "debuggerplugin.h" #include <utils/styledbar.h> #include <utils/qtcassert.h> +#include <utils/fancymainwindow.h> #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/actionmanager.h> @@ -55,17 +55,18 @@ #include <projectexplorer/target.h> #include <projectexplorer/runconfiguration.h> -#include <QtGui/QStackedWidget> -#include <QtGui/QVBoxLayout> -#include <QtGui/QMenu> -#include <QtGui/QDockWidget> -#include <QtGui/QResizeEvent> #include <QtCore/QDebug> #include <QtCore/QList> #include <QtCore/QMap> #include <QtCore/QPair> #include <QtCore/QSettings> +#include <QtGui/QDockWidget> +#include <QtGui/QMenu> +#include <QtGui/QResizeEvent> +#include <QtGui/QStackedWidget> +#include <QtGui/QVBoxLayout> + using namespace Core; namespace Debugger { @@ -98,14 +99,16 @@ bool DockWidgetEventFilter::eventFilter(QObject *obj, QEvent *event) return QObject::eventFilter(obj, event); } -} // first: language id, second: menu item typedef QPair<DebuggerLanguage, QAction *> ViewsMenuItems; -struct DebuggerUISwitcherPrivate +class DebuggerMainWindowPrivate { - explicit DebuggerUISwitcherPrivate(DebuggerUISwitcher *q); +public: + explicit DebuggerMainWindowPrivate(DebuggerMainWindow *mainWindow); +public: + DebuggerMainWindow *q; QList<ViewsMenuItems> m_viewsMenuItems; QList<QDockWidget *> m_dockWidgets; @@ -119,7 +122,6 @@ struct DebuggerUISwitcherPrivate int m_languageCount; QStackedWidget *m_toolbarStack; - Internal::DebuggerMainWindow *m_mainWindow; QHash<DebuggerLanguage, Context> m_contextsForLanguage; @@ -143,8 +145,9 @@ struct DebuggerUISwitcherPrivate QSettings *m_settings; }; -DebuggerUISwitcherPrivate::DebuggerUISwitcherPrivate(DebuggerUISwitcher *q) - : m_resizeEventFilter(new Internal::DockWidgetEventFilter(q)) +DebuggerMainWindowPrivate::DebuggerMainWindowPrivate(DebuggerMainWindow *mw) + : q(mw) + , m_resizeEventFilter(new Internal::DockWidgetEventFilter(mw)) , m_supportedLanguages(AnyLanguage) , m_languageCount(0) , m_toolbarStack(new QStackedWidget) @@ -160,22 +163,27 @@ DebuggerUISwitcherPrivate::DebuggerUISwitcherPrivate(DebuggerUISwitcher *q) { } -DebuggerUISwitcher::DebuggerUISwitcher(QObject *parent) - : QObject(parent), d(new DebuggerUISwitcherPrivate(this)) -{} +} // namespace Internal + +using namespace Internal; -DebuggerUISwitcher::~DebuggerUISwitcher() +DebuggerMainWindow::DebuggerMainWindow() +{ + d = new DebuggerMainWindowPrivate(this); +} + +DebuggerMainWindow::~DebuggerMainWindow() { delete d; } -void DebuggerUISwitcher::updateUiOnFileListChange() +void DebuggerMainWindow::updateUiOnFileListChange() { if (d->m_previousProject) updateUiForTarget(d->m_previousProject.data()->activeTarget()); } -void DebuggerUISwitcher::updateUiForProject(ProjectExplorer::Project *project) +void DebuggerMainWindow::updateUiForProject(ProjectExplorer::Project *project) { if (!project) return; @@ -192,7 +200,7 @@ void DebuggerUISwitcher::updateUiForProject(ProjectExplorer::Project *project) updateUiForTarget(project->activeTarget()); } -void DebuggerUISwitcher::updateUiForTarget(ProjectExplorer::Target *target) +void DebuggerMainWindow::updateUiForTarget(ProjectExplorer::Target *target) { if (!target) return; @@ -210,7 +218,7 @@ void DebuggerUISwitcher::updateUiForTarget(ProjectExplorer::Target *target) } // updates default debug language settings per run config. -void DebuggerUISwitcher::updateUiForRunConfiguration(ProjectExplorer::RunConfiguration *rc) +void DebuggerMainWindow::updateUiForRunConfiguration(ProjectExplorer::RunConfiguration *rc) { if (rc) { if (d->m_previousRunConfiguration) { @@ -227,12 +235,12 @@ void DebuggerUISwitcher::updateUiForRunConfiguration(ProjectExplorer::RunConfigu } } -void DebuggerUISwitcher::updateUiForCurrentRunConfiguration() +void DebuggerMainWindow::updateUiForCurrentRunConfiguration() { updateActiveLanguages(); } -void DebuggerUISwitcher::updateActiveLanguages() +void DebuggerMainWindow::updateActiveLanguages() { DebuggerLanguages newLanguages = AnyLanguage; @@ -251,27 +259,27 @@ void DebuggerUISwitcher::updateActiveLanguages() updateUi(); } -DebuggerLanguages DebuggerUISwitcher::supportedLanguages() const +DebuggerLanguages DebuggerMainWindow::supportedLanguages() const { return d->m_supportedLanguages; } -void DebuggerUISwitcher::addMenuAction(Command *command, +void DebuggerMainWindow::addMenuAction(Command *command, const DebuggerLanguage &language, const QString &group) { d->m_debugMenu->addAction(command, group); d->m_menuCommands.insert(language, command); } -DebuggerLanguages DebuggerUISwitcher::activeDebugLanguages() const +DebuggerLanguages DebuggerMainWindow::activeDebugLanguages() const { return d->m_activeDebugLanguages; } -void DebuggerUISwitcher::onModeChanged(IMode *mode) +void DebuggerMainWindow::onModeChanged(IMode *mode) { d->m_inDebugMode = (mode->id() == Constants::MODE_DEBUG); - d->m_mainWindow->setDockActionsVisible(d->m_inDebugMode); + setDockActionsVisible(d->m_inDebugMode); hideInactiveWidgets(); if (mode->id() != Constants::MODE_DEBUG) @@ -281,7 +289,7 @@ void DebuggerUISwitcher::onModeChanged(IMode *mode) updateActiveLanguages(); } -void DebuggerUISwitcher::hideInactiveWidgets() +void DebuggerMainWindow::hideInactiveWidgets() { // Hide all the debugger windows if mode is different. if (d->m_inDebugMode) @@ -293,7 +301,7 @@ void DebuggerUISwitcher::hideInactiveWidgets() } } -void DebuggerUISwitcher::createViewsMenuItems() +void DebuggerMainWindow::createViewsMenuItems() { ICore *core = ICore::instance(); ActionManager *am = core->actionManager(); @@ -310,21 +318,21 @@ void DebuggerUISwitcher::createViewsMenuItems() Core::Id("Debugger.Views.OpenMemoryEditor"), Core::Context(Constants::C_DEBUGMODE)); d->m_viewsMenu->addAction(cmd); - cmd = am->registerAction(d->m_mainWindow->menuSeparator1(), + cmd = am->registerAction(menuSeparator1(), Core::Id("Debugger.Views.Separator1"), globalcontext); d->m_viewsMenu->addAction(cmd); - cmd = am->registerAction(d->m_mainWindow->toggleLockedAction(), + cmd = am->registerAction(toggleLockedAction(), Core::Id("Debugger.Views.ToggleLocked"), globalcontext); d->m_viewsMenu->addAction(cmd); - cmd = am->registerAction(d->m_mainWindow->menuSeparator2(), + cmd = am->registerAction(menuSeparator2(), Core::Id("Debugger.Views.Separator2"), globalcontext); d->m_viewsMenu->addAction(cmd); - cmd = am->registerAction(d->m_mainWindow->resetLayoutAction(), + cmd = am->registerAction(resetLayoutAction(), Core::Id("Debugger.Views.ResetSimple"), globalcontext); d->m_viewsMenu->addAction(cmd); } -void DebuggerUISwitcher::addLanguage(const DebuggerLanguage &languageId, const Context &context) +void DebuggerMainWindow::addLanguage(const DebuggerLanguage &languageId, const Context &context) { bool activate = (d->m_supportedLanguages == AnyLanguage); d->m_supportedLanguages = d->m_supportedLanguages | languageId; @@ -339,7 +347,7 @@ void DebuggerUISwitcher::addLanguage(const DebuggerLanguage &languageId, const C updateUi(); } -void DebuggerUISwitcher::updateUi() +void DebuggerMainWindow::updateUi() { if (d->m_changingUI || !d->m_initialized || !d->m_inDebugMode) return; @@ -357,7 +365,7 @@ void DebuggerUISwitcher::updateUi() d->m_changingUI = false; } -void DebuggerUISwitcher::activateQmlCppLayout() +void DebuggerMainWindow::activateQmlCppLayout() { ICore *core = ICore::instance(); Context qmlCppContext = d->m_contextsForLanguage.value(QmlLanguage); @@ -367,18 +375,18 @@ void DebuggerUISwitcher::activateQmlCppLayout() d->m_toolbarStack->setCurrentWidget(d->m_toolBars.value(CppLanguage)); if (d->m_previousDebugLanguages & QmlLanguage) { - d->m_dockWidgetActiveStateQmlCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateQmlCpp = saveSettings(); core->updateAdditionalContexts(qmlCppContext, Context()); } else if (d->m_previousDebugLanguages & CppLanguage) { - d->m_dockWidgetActiveStateCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateCpp = saveSettings(); core->updateAdditionalContexts(d->m_contextsForLanguage.value(CppLanguage), Context()); } - d->m_mainWindow->restoreSettings(d->m_dockWidgetActiveStateQmlCpp); + restoreSettings(d->m_dockWidgetActiveStateQmlCpp); core->updateAdditionalContexts(Context(), qmlCppContext); } -void DebuggerUISwitcher::activateCppLayout() +void DebuggerMainWindow::activateCppLayout() { ICore *core = ICore::instance(); Context qmlCppContext = d->m_contextsForLanguage.value(QmlLanguage); @@ -386,67 +394,62 @@ void DebuggerUISwitcher::activateCppLayout() d->m_toolbarStack->setCurrentWidget(d->m_toolBars.value(CppLanguage)); if (d->m_previousDebugLanguages & QmlLanguage) { - d->m_dockWidgetActiveStateQmlCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateQmlCpp = saveSettings(); core->updateAdditionalContexts(qmlCppContext, Context()); } else if (d->m_previousDebugLanguages & CppLanguage) { - d->m_dockWidgetActiveStateCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateCpp = saveSettings(); core->updateAdditionalContexts(d->m_contextsForLanguage.value(CppLanguage), Context()); } - d->m_mainWindow->restoreSettings(d->m_dockWidgetActiveStateCpp); + restoreSettings(d->m_dockWidgetActiveStateCpp); const Context &cppContext = d->m_contextsForLanguage.value(CppLanguage); core->updateAdditionalContexts(Context(), cppContext); } -void DebuggerUISwitcher::setToolbar(const DebuggerLanguage &language, QWidget *widget) +void DebuggerMainWindow::setToolbar(const DebuggerLanguage &language, QWidget *widget) { Q_ASSERT(d->m_toolBars.contains(language)); d->m_toolBars[language] = widget; d->m_toolbarStack->addWidget(widget); } -Utils::FancyMainWindow *DebuggerUISwitcher::mainWindow() const -{ - return d->m_mainWindow; -} - -QDockWidget *DebuggerUISwitcher::breakWindow() const +QDockWidget *DebuggerMainWindow::breakWindow() const { return dockWidget(Constants::DOCKWIDGET_BREAK); } -QDockWidget *DebuggerUISwitcher::stackWindow() const +QDockWidget *DebuggerMainWindow::stackWindow() const { return dockWidget(Constants::DOCKWIDGET_STACK); } -QDockWidget *DebuggerUISwitcher::watchWindow() const +QDockWidget *DebuggerMainWindow::watchWindow() const { return dockWidget(Constants::DOCKWIDGET_WATCHERS); } -QDockWidget *DebuggerUISwitcher::outputWindow() const +QDockWidget *DebuggerMainWindow::outputWindow() const { return dockWidget(Constants::DOCKWIDGET_OUTPUT); } -QDockWidget *DebuggerUISwitcher::snapshotsWindow() const +QDockWidget *DebuggerMainWindow::snapshotsWindow() const { return dockWidget(Constants::DOCKWIDGET_SNAPSHOTS); } -QDockWidget *DebuggerUISwitcher::threadsWindow() const +QDockWidget *DebuggerMainWindow::threadsWindow() const { return dockWidget(Constants::DOCKWIDGET_THREADS); } -QDockWidget *DebuggerUISwitcher::qmlInspectorWindow() const +QDockWidget *DebuggerMainWindow::qmlInspectorWindow() const { return dockWidget(Constants::DOCKWIDGET_QML_INSPECTOR); } -QDockWidget *DebuggerUISwitcher::dockWidget(const QString &objectName) const +QDockWidget *DebuggerMainWindow::dockWidget(const QString &objectName) const { foreach(QDockWidget *dockWidget, d->m_dockWidgets) { if (dockWidget->objectName() == objectName) @@ -458,13 +461,13 @@ QDockWidget *DebuggerUISwitcher::dockWidget(const QString &objectName) const /*! Keep track of dock widgets so they can be shown/hidden for different languages */ -QDockWidget *DebuggerUISwitcher::createDockWidget(const DebuggerLanguage &language, +QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &language, QWidget *widget, Qt::DockWidgetArea area) { // qDebug() << "CREATE DOCK" << widget->objectName() << "LANGUAGE ID" << language // << "VISIBLE BY DEFAULT" << ((d->m_activeDebugLanguages & language) ? "true" : "false"); - QDockWidget *dockWidget = d->m_mainWindow->addDockForWidget(widget); - d->m_mainWindow->addDockWidget(area, dockWidget); + QDockWidget *dockWidget = addDockForWidget(widget); + addDockWidget(area, dockWidget); d->m_dockWidgets.append(dockWidget); if (!(d->m_activeDebugLanguages & language)) @@ -493,7 +496,7 @@ QDockWidget *DebuggerUISwitcher::createDockWidget(const DebuggerLanguage &langua return dockWidget; } -QWidget *DebuggerUISwitcher::createContents(IMode *mode) +QWidget *DebuggerMainWindow::createContents(IMode *mode) { ICore *core = ICore::instance(); ActionManager *am = core->actionManager(); @@ -509,12 +512,12 @@ QWidget *DebuggerUISwitcher::createContents(IMode *mode) d->m_viewsMenu = am->actionContainer(Core::Id(Core::Constants::M_WINDOW_VIEWS)); QTC_ASSERT(d->m_viewsMenu, return 0) - d->m_mainWindow = new Internal::DebuggerMainWindow(this); - d->m_mainWindow->setDocumentMode(true); - d->m_mainWindow->setDockNestingEnabled(true); - connect(d->m_mainWindow, SIGNAL(resetLayout()), + //d->m_mainWindow = new Internal::DebuggerMainWindow(this); + setDocumentMode(true); + setDockNestingEnabled(true); + connect(this, SIGNAL(resetLayout()), SLOT(resetDebuggerLayout())); - connect(d->m_mainWindow->toggleLockedAction(), SIGNAL(triggered()), + connect(toggleLockedAction(), SIGNAL(triggered()), SLOT(updateDockWidgetSettings())); QBoxLayout *editorHolderLayout = new QVBoxLayout; @@ -547,11 +550,11 @@ QWidget *DebuggerUISwitcher::createContents(IMode *mode) dock->setFeatures(QDockWidget::NoDockWidgetFeatures); dock->setAllowedAreas(Qt::BottomDockWidgetArea); dock->setTitleBarWidget(new QWidget(dock)); - d->m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dock); - d->m_mainWindow->setToolBarDockWidget(dock); + addDockWidget(Qt::BottomDockWidgetArea, dock); + setToolBarDockWidget(dock); QWidget *centralWidget = new QWidget; - d->m_mainWindow->setCentralWidget(centralWidget); + setCentralWidget(centralWidget); QVBoxLayout *centralLayout = new QVBoxLayout(centralWidget); centralWidget->setLayout(centralLayout); @@ -563,7 +566,7 @@ QWidget *DebuggerUISwitcher::createContents(IMode *mode) // Right-side window with editor, output etc. MiniSplitter *mainWindowSplitter = new MiniSplitter; - mainWindowSplitter->addWidget(d->m_mainWindow); + mainWindowSplitter->addWidget(this); mainWindowSplitter->addWidget(new OutputPanePlaceHolder(mode, mainWindowSplitter)); mainWindowSplitter->setStretchFactor(0, 10); mainWindowSplitter->setStretchFactor(1, 0); @@ -578,7 +581,7 @@ QWidget *DebuggerUISwitcher::createContents(IMode *mode) return splitter; } -void DebuggerUISwitcher::writeSettings() const +void DebuggerMainWindow::writeSettings() const { d->m_settings->beginGroup(QLatin1String("DebugMode.CppMode")); QHashIterator<QString, QVariant> it(d->m_dockWidgetActiveStateCpp); @@ -597,7 +600,7 @@ void DebuggerUISwitcher::writeSettings() const d->m_settings->endGroup(); } -void DebuggerUISwitcher::readSettings() +void DebuggerMainWindow::readSettings() { d->m_dockWidgetActiveStateCpp.clear(); d->m_dockWidgetActiveStateQmlCpp.clear(); @@ -625,7 +628,7 @@ void DebuggerUISwitcher::readSettings() d->m_activeDebugLanguages = langs; } -void DebuggerUISwitcher::initialize(QSettings *settings) +void DebuggerMainWindow::initialize(QSettings *settings) { d->m_settings = settings; createViewsMenuItems(); @@ -636,47 +639,60 @@ void DebuggerUISwitcher::initialize(QSettings *settings) updateUi(); hideInactiveWidgets(); - d->m_mainWindow->setDockActionsVisible(false); + setDockActionsVisible(false); d->m_initialized = true; } -void DebuggerUISwitcher::resetDebuggerLayout() +void DebuggerMainWindow::resetDebuggerLayout() { emit dockResetRequested(d->m_activeDebugLanguages); if (isQmlActive()) - d->m_dockWidgetActiveStateQmlCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateQmlCpp = saveSettings(); else - d->m_dockWidgetActiveStateCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateCpp = saveSettings(); updateActiveLanguages(); } -void DebuggerUISwitcher::updateDockWidgetSettings() +void DebuggerMainWindow::updateDockWidgetSettings() { if (!d->m_inDebugMode || d->m_changingUI) return; if (isQmlActive()) - d->m_dockWidgetActiveStateQmlCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateQmlCpp = saveSettings(); else - d->m_dockWidgetActiveStateCpp = d->m_mainWindow->saveSettings(); + d->m_dockWidgetActiveStateCpp = saveSettings(); } -bool DebuggerUISwitcher::isQmlCppActive() const +bool DebuggerMainWindow::isQmlCppActive() const { return (d->m_activeDebugLanguages & CppLanguage) && (d->m_activeDebugLanguages & QmlLanguage); } -bool DebuggerUISwitcher::isQmlActive() const +bool DebuggerMainWindow::isQmlActive() const { return (d->m_activeDebugLanguages & QmlLanguage); } -QList<QDockWidget *> DebuggerUISwitcher::dockWidgets() const +QMenu *DebuggerMainWindow::createPopupMenu() { - return d->m_dockWidgets; + QMenu *menu = 0; + + const QList<QDockWidget* > dockwidgets = d->m_dockWidgets; + + if (!dockwidgets.isEmpty()) { + menu = FancyMainWindow::createPopupMenu(); + + foreach (QDockWidget *dockWidget, dockwidgets) { + if (dockWidget->parentWidget() == this) + menu->addAction(dockWidget->toggleViewAction()); + } + menu->addSeparator(); + } + return menu; } } // namespace Debugger diff --git a/src/plugins/debugger/debuggeruiswitcher.h b/src/plugins/debugger/debuggeruiswitcher.h index 7d88a44a6026a765a31a0eeb3311b94d688f89fe..c75b258127e74f721ceee6c150e7a1bffc0aab0f 100644 --- a/src/plugins/debugger/debuggeruiswitcher.h +++ b/src/plugins/debugger/debuggeruiswitcher.h @@ -33,11 +33,14 @@ #include "debugger_global.h" #include "debuggerconstants.h" +#include <utils/fancymainwindow.h> + #include <QtCore/QObject> QT_BEGIN_NAMESPACE class QDockWidget; class QSettings; +class QMenu; QT_END_NAMESPACE namespace Core { @@ -46,10 +49,6 @@ class Context; class IMode; } -namespace Utils { -class FancyMainWindow; -} - namespace ProjectExplorer { class Project; class Target; @@ -57,19 +56,18 @@ class RunConfiguration; } namespace Debugger { -struct DebuggerUISwitcherPrivate; namespace Internal { -class DebuggerMainWindow; -}; +class DebuggerMainWindowPrivate; +} -class DEBUGGER_EXPORT DebuggerUISwitcher : public QObject +class DEBUGGER_EXPORT DebuggerMainWindow : public Utils::FancyMainWindow { Q_OBJECT public: - explicit DebuggerUISwitcher(QObject *parent = 0); - ~DebuggerUISwitcher(); + DebuggerMainWindow(); + ~DebuggerMainWindow(); // debuggable languages are registered with this function. void addLanguage(const DebuggerLanguage &language, const Core::Context &context); @@ -107,8 +105,8 @@ public: QDockWidget *createDockWidget(const DebuggerLanguage &language, QWidget *widget, Qt::DockWidgetArea area = Qt::TopDockWidgetArea); - Utils::FancyMainWindow *mainWindow() const; QWidget *createContents(Core::IMode *mode); + QMenu *createPopupMenu(); signals: // emit when user changes active languages from the menu. @@ -134,10 +132,6 @@ public slots: void writeSettings() const; private: - // Used by MainWindow - friend class Internal::DebuggerMainWindow; - QList<QDockWidget *> dockWidgets() const; - void activateQmlCppLayout(); void activateCppLayout(); @@ -146,7 +140,7 @@ private: bool isQmlCppActive() const; bool isQmlActive() const; - DebuggerUISwitcherPrivate *d; + Internal::DebuggerMainWindowPrivate *d; }; } // namespace Debugger diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 385ffdfc0dfd22c4da188eacfb29b46b26df648d..3b95e761fe1a5eb69f9335248669fe2a15e78828 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -33,7 +33,6 @@ #include "gdboptionspage.h" #include "debuggeruiswitcher.h" -#include "debuggermainwindow.h" #include "debuggercore.h" #include "debuggerplugin.h" #include "debuggerrunner.h" diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index 542826809f95d1522b801c4d125d0e3fc143ec37..afe4afaeecbf5660639e527a3017152cb285bb9a 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -488,8 +488,7 @@ void InspectorUi::reloadQmlViewer() void InspectorUi::setSimpleDockWidgetArrangement(const Debugger::DebuggerLanguages &activeLanguages) { - Debugger::DebuggerUISwitcher *uiSwitcher = Debugger::DebuggerPlugin::uiSwitcher(); - Utils::FancyMainWindow *mw = uiSwitcher->mainWindow(); + Debugger::DebuggerMainWindow *mw = Debugger::DebuggerPlugin::mainWindow(); mw->setTrackingEnabled(false); @@ -502,7 +501,7 @@ void InspectorUi::setSimpleDockWidgetArrangement(const Debugger::DebuggerLanguag mw->removeDockWidget(dockWidget); } foreach (QDockWidget *dockWidget, dockWidgets) { - if (dockWidget == uiSwitcher->outputWindow()) { + if (dockWidget == mw->outputWindow()) { mw->addDockWidget(Qt::TopDockWidgetArea, dockWidget); } else { mw->addDockWidget(Qt::BottomDockWidgetArea, dockWidget); @@ -515,17 +514,17 @@ void InspectorUi::setSimpleDockWidgetArrangement(const Debugger::DebuggerLanguag } } - uiSwitcher->stackWindow()->show(); - uiSwitcher->watchWindow()->show(); - uiSwitcher->breakWindow()->show(); - uiSwitcher->threadsWindow()->show(); - uiSwitcher->snapshotsWindow()->show(); + mw->stackWindow()->show(); + mw->watchWindow()->show(); + mw->breakWindow()->show(); + mw->threadsWindow()->show(); + mw->snapshotsWindow()->show(); m_inspectorDockWidget->show(); - mw->splitDockWidget(mw->toolBarDockWidget(), uiSwitcher->stackWindow(), Qt::Vertical); - mw->splitDockWidget(uiSwitcher->stackWindow(), uiSwitcher->watchWindow(), Qt::Horizontal); - mw->tabifyDockWidget(uiSwitcher->watchWindow(), uiSwitcher->breakWindow()); - mw->tabifyDockWidget(uiSwitcher->watchWindow(), m_inspectorDockWidget); + mw->splitDockWidget(mw->toolBarDockWidget(), mw->stackWindow(), Qt::Vertical); + mw->splitDockWidget(mw->stackWindow(), mw->watchWindow(), Qt::Horizontal); + mw->tabifyDockWidget(mw->watchWindow(), mw->breakWindow()); + mw->tabifyDockWidget(mw->watchWindow(), m_inspectorDockWidget); } @@ -594,8 +593,6 @@ bool InspectorUi::addQuotesForData(const QVariant &value) const void InspectorUi::setupDockWidgets() { - Debugger::DebuggerUISwitcher *uiSwitcher = Debugger::DebuggerPlugin::uiSwitcher(); - m_toolbar->createActions(Core::Context(Debugger::Constants::C_QMLDEBUGGER)); m_toolbar->setObjectName("QmlInspectorToolbar"); @@ -618,9 +615,9 @@ void InspectorUi::setupDockWidgets() wlay->addWidget(m_objectTreeWidget); wlay->addWidget(m_crumblePath); - - m_inspectorDockWidget = uiSwitcher->createDockWidget(Debugger::QmlLanguage, - observerWidget, Qt::BottomDockWidgetArea); + Debugger::DebuggerMainWindow *mw = Debugger::DebuggerPlugin::mainWindow(); + m_inspectorDockWidget = mw->createDockWidget(Debugger::QmlLanguage, + observerWidget, Qt::BottomDockWidgetArea); m_inspectorDockWidget->setObjectName(Debugger::Constants::DOCKWIDGET_QML_INSPECTOR); m_inspectorDockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); m_inspectorDockWidget->setTitleBarWidget(new QWidget(m_inspectorDockWidget));