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