forked from qt-creator/qt-creator
Debugger: Consolidate Debugger view creation
Change-Id: I43353911c7c0c8250ee2bccddcf5fdccf04d457c Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
@@ -1,73 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator.
|
|
||||||
**
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** 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.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
|
|
||||||
#include "debuggeractions.h"
|
|
||||||
#include "debuggercore.h"
|
|
||||||
|
|
||||||
#include <aggregation/aggregate.h>
|
|
||||||
#include <coreplugin/findplaceholder.h>
|
|
||||||
#include <coreplugin/find/treeviewfind.h>
|
|
||||||
#include <utils/savedaction.h>
|
|
||||||
#include <utils/basetreeview.h>
|
|
||||||
|
|
||||||
#include <QVBoxLayout>
|
|
||||||
|
|
||||||
namespace Debugger {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
BaseWindow::BaseWindow(QTreeView *treeView, QWidget *parent)
|
|
||||||
: QWidget(parent), m_treeView(treeView)
|
|
||||||
{
|
|
||||||
QAction *act = debuggerCore()->action(UseAlternatingRowColors);
|
|
||||||
m_treeView->setAlternatingRowColors(act->isChecked());
|
|
||||||
connect(act, SIGNAL(toggled(bool)),
|
|
||||||
SLOT(setAlternatingRowColorsHelper(bool)));
|
|
||||||
|
|
||||||
if (Utils::BaseTreeView *tv = qobject_cast<Utils::BaseTreeView *>(m_treeView)) {
|
|
||||||
act = debuggerCore()->action(AlwaysAdjustColumnWidths);
|
|
||||||
tv->setAlwaysAdjustColumns(act->isChecked());
|
|
||||||
connect(act, SIGNAL(toggled(bool)),
|
|
||||||
SLOT(setAlwaysAdjustColumns(bool)));
|
|
||||||
}
|
|
||||||
|
|
||||||
QVBoxLayout *vbox = new QVBoxLayout(this);
|
|
||||||
vbox->setMargin(0);
|
|
||||||
vbox->setSpacing(0);
|
|
||||||
vbox->addWidget(m_treeView);
|
|
||||||
vbox->addWidget(new Core::FindToolBarPlaceHolder(this));
|
|
||||||
|
|
||||||
Aggregation::Aggregate *agg = new Aggregation::Aggregate;
|
|
||||||
agg->add(m_treeView);
|
|
||||||
agg->add(new Core::TreeViewFind(m_treeView));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace Debugger
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator.
|
|
||||||
**
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** 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.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef DEBUGGER_BASEWINDOW_H
|
|
||||||
#define DEBUGGER_BASEWINDOW_H
|
|
||||||
|
|
||||||
#include <QTreeView>
|
|
||||||
|
|
||||||
namespace Debugger {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class BaseWindow : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit BaseWindow(QTreeView *treeView, QWidget *parent = 0);
|
|
||||||
void setModel(QAbstractItemModel *model) { m_treeView->setModel(model); }
|
|
||||||
QHeaderView *header() const { return m_treeView->header(); }
|
|
||||||
QAbstractItemModel *model() const { return m_treeView->model(); }
|
|
||||||
QTreeView *treeView() const { return m_treeView; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
QTreeView *m_treeView;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace Debugger
|
|
||||||
|
|
||||||
#endif // DEBUGGER_BASEWINDOW_H
|
|
||||||
@@ -674,8 +674,7 @@ MultiBreakPointsDialog::MultiBreakPointsDialog(QWidget *parent) :
|
|||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
BreakTreeView::BreakTreeView(QWidget *parent)
|
BreakTreeView::BreakTreeView()
|
||||||
: BaseTreeView(parent)
|
|
||||||
{
|
{
|
||||||
setWindowIcon(QIcon(QLatin1String(":/debugger/images/debugger_breakpoints.png")));
|
setWindowIcon(QIcon(QLatin1String(":/debugger/images/debugger_breakpoints.png")));
|
||||||
setSelectionMode(QAbstractItemView::ExtendedSelection);
|
setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
@@ -952,12 +951,6 @@ void BreakTreeView::rowActivated(const QModelIndex &index)
|
|||||||
breakHandler()->gotoLocation(breakHandler()->findBreakpointByIndex(index));
|
breakHandler()->gotoLocation(breakHandler()->findBreakpointByIndex(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
BreakWindow::BreakWindow()
|
|
||||||
: BaseWindow(new BreakTreeView)
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Breakpoints"));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
#define DEBUGGER_BREAKWINDOW_H
|
#define DEBUGGER_BREAKWINDOW_H
|
||||||
|
|
||||||
#include "breakpoint.h"
|
#include "breakpoint.h"
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -42,7 +41,7 @@ class BreakTreeView : public Utils::BaseTreeView
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit BreakTreeView(QWidget *parent = 0);
|
BreakTreeView();
|
||||||
|
|
||||||
static void editBreakpoint(BreakpointModelId id, QWidget *parent);
|
static void editBreakpoint(BreakpointModelId id, QWidget *parent);
|
||||||
void setModel(QAbstractItemModel *model);
|
void setModel(QAbstractItemModel *model);
|
||||||
@@ -64,14 +63,6 @@ private:
|
|||||||
void setBreakpointsEnabled(const BreakpointModelIds &ids, bool enabled);
|
void setBreakpointsEnabled(const BreakpointModelIds &ids, bool enabled);
|
||||||
};
|
};
|
||||||
|
|
||||||
class BreakWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
BreakWindow();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ QT += gui \
|
|||||||
CONFIG += exceptions
|
CONFIG += exceptions
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
basewindow.h \
|
|
||||||
breakhandler.h \
|
breakhandler.h \
|
||||||
breakpoint.h \
|
breakpoint.h \
|
||||||
breakpointmarker.h \
|
breakpointmarker.h \
|
||||||
@@ -76,7 +75,6 @@ HEADERS += \
|
|||||||
unstartedappwatcherdialog.h
|
unstartedappwatcherdialog.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
basewindow.cpp \
|
|
||||||
breakhandler.cpp \
|
breakhandler.cpp \
|
||||||
breakpoint.cpp \
|
breakpoint.cpp \
|
||||||
breakpointmarker.cpp \
|
breakpointmarker.cpp \
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ QtcPlugin {
|
|||||||
Group {
|
Group {
|
||||||
name: "General"
|
name: "General"
|
||||||
files: [
|
files: [
|
||||||
"basewindow.cpp", "basewindow.h",
|
|
||||||
"breakhandler.cpp", "breakhandler.h",
|
"breakhandler.cpp", "breakhandler.h",
|
||||||
"breakpoint.cpp", "breakpoint.h",
|
"breakpoint.cpp", "breakpoint.h",
|
||||||
"breakpointmarker.cpp", "breakpointmarker.h",
|
"breakpointmarker.cpp", "breakpointmarker.h",
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QIcon;
|
class QIcon;
|
||||||
class QMessageBox;
|
class QMessageBox;
|
||||||
class QWidget;
|
class QWidget;
|
||||||
|
class QTreeView;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace CPlusPlus { class Snapshot; }
|
namespace CPlusPlus { class Snapshot; }
|
||||||
@@ -122,6 +123,8 @@ public:
|
|||||||
virtual DebuggerToolTipManager *toolTipManager() const = 0;
|
virtual DebuggerToolTipManager *toolTipManager() const = 0;
|
||||||
virtual QSharedPointer<GlobalDebuggerOptions> globalDebuggerOptions() const = 0;
|
virtual QSharedPointer<GlobalDebuggerOptions> globalDebuggerOptions() const = 0;
|
||||||
|
|
||||||
|
static QTreeView *inspectorView();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void attachExternalApplication(ProjectExplorer::RunControl *rc) = 0;
|
virtual void attachExternalApplication(ProjectExplorer::RunControl *rc) = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -101,11 +101,13 @@
|
|||||||
#include <texteditor/fontsettings.h>
|
#include <texteditor/fontsettings.h>
|
||||||
#include <texteditor/texteditorsettings.h>
|
#include <texteditor/texteditorsettings.h>
|
||||||
|
|
||||||
|
#include <utils/basetreeview.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcassert.h>
|
|
||||||
#include <utils/styledbar.h>
|
|
||||||
#include <utils/proxyaction.h>
|
#include <utils/proxyaction.h>
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/savedaction.h>
|
||||||
#include <utils/statuslabel.h>
|
#include <utils/statuslabel.h>
|
||||||
|
#include <utils/styledbar.h>
|
||||||
#include <utils/winutils.h>
|
#include <utils/winutils.h>
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
@@ -121,6 +123,11 @@
|
|||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QtPlugin>
|
#include <QtPlugin>
|
||||||
#include <QTreeWidget>
|
#include <QTreeWidget>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include <aggregation/aggregate.h>
|
||||||
|
#include <coreplugin/findplaceholder.h>
|
||||||
|
#include <coreplugin/find/treeviewfind.h>
|
||||||
|
|
||||||
#ifdef WITH_TESTS
|
#ifdef WITH_TESTS
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
@@ -526,6 +533,36 @@ public:
|
|||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static QWidget *addSearch(BaseTreeView *treeView, const QString &title, const char *objectName)
|
||||||
|
{
|
||||||
|
QWidget *widget = new QWidget;
|
||||||
|
|
||||||
|
QAction *act = debuggerCore()->action(UseAlternatingRowColors);
|
||||||
|
treeView->setAlternatingRowColors(act->isChecked());
|
||||||
|
QObject::connect(act, SIGNAL(toggled(bool)),
|
||||||
|
treeView, SLOT(setAlternatingRowColorsHelper(bool)));
|
||||||
|
|
||||||
|
act = debuggerCore()->action(AlwaysAdjustColumnWidths);
|
||||||
|
treeView->setAlwaysAdjustColumns(act->isChecked());
|
||||||
|
QObject::connect(act, SIGNAL(toggled(bool)),
|
||||||
|
treeView, SLOT(setAlwaysAdjustColumns(bool)));
|
||||||
|
|
||||||
|
QVBoxLayout *vbox = new QVBoxLayout(widget);
|
||||||
|
vbox->setMargin(0);
|
||||||
|
vbox->setSpacing(0);
|
||||||
|
vbox->addWidget(treeView);
|
||||||
|
vbox->addWidget(new Core::FindToolBarPlaceHolder(widget));
|
||||||
|
|
||||||
|
Aggregation::Aggregate *agg = new Aggregation::Aggregate;
|
||||||
|
agg->add(treeView);
|
||||||
|
agg->add(new Core::TreeViewFind(treeView));
|
||||||
|
|
||||||
|
widget->setObjectName(QLatin1String(objectName));
|
||||||
|
widget->setWindowTitle(title);
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
|
|
||||||
static QString executableForPid(qint64 pid)
|
static QString executableForPid(qint64 pid)
|
||||||
{
|
{
|
||||||
foreach (const DeviceProcessItem &p, DeviceProcessList::localProcesses())
|
foreach (const DeviceProcessItem &p, DeviceProcessList::localProcesses())
|
||||||
@@ -817,8 +854,8 @@ public slots:
|
|||||||
|
|
||||||
void updateWatchersHeader(int section, int, int newSize)
|
void updateWatchersHeader(int section, int, int newSize)
|
||||||
{
|
{
|
||||||
m_watchersWindow->header()->resizeSection(section, newSize);
|
m_watchersView->header()->resizeSection(section, newSize);
|
||||||
m_returnWindow->header()->resizeSection(section, newSize);
|
m_returnView->header()->resizeSection(section, newSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1240,18 +1277,30 @@ public:
|
|||||||
StatusLabel *m_statusLabel;
|
StatusLabel *m_statusLabel;
|
||||||
QComboBox *m_threadBox;
|
QComboBox *m_threadBox;
|
||||||
|
|
||||||
BaseWindow *m_breakWindow;
|
BaseTreeView *m_breakView;
|
||||||
|
BaseTreeView *m_returnView;
|
||||||
|
BaseTreeView *m_localsView;
|
||||||
|
BaseTreeView *m_watchersView;
|
||||||
|
BaseTreeView *m_inspectorView;
|
||||||
|
BaseTreeView *m_registerView;
|
||||||
|
BaseTreeView *m_modulesView;
|
||||||
|
BaseTreeView *m_snapshotView;
|
||||||
|
BaseTreeView *m_sourceFilesView;
|
||||||
|
BaseTreeView *m_stackView;
|
||||||
|
BaseTreeView *m_threadsView;
|
||||||
|
|
||||||
|
QWidget *m_breakWindow;
|
||||||
BreakHandler *m_breakHandler;
|
BreakHandler *m_breakHandler;
|
||||||
WatchWindow *m_returnWindow;
|
QWidget *m_returnWindow;
|
||||||
WatchWindow *m_localsWindow;
|
QWidget *m_localsWindow;
|
||||||
WatchWindow *m_watchersWindow;
|
QWidget *m_watchersWindow;
|
||||||
WatchWindow *m_inspectorWindow;
|
QWidget *m_inspectorWindow;
|
||||||
BaseWindow *m_registerWindow;
|
QWidget *m_registerWindow;
|
||||||
BaseWindow *m_modulesWindow;
|
QWidget *m_modulesWindow;
|
||||||
BaseWindow *m_snapshotWindow;
|
QWidget *m_snapshotWindow;
|
||||||
BaseWindow *m_sourceFilesWindow;
|
QWidget *m_sourceFilesWindow;
|
||||||
BaseWindow *m_stackWindow;
|
QWidget *m_stackWindow;
|
||||||
BaseWindow *m_threadsWindow;
|
QWidget *m_threadsWindow;
|
||||||
LogWindow *m_logWindow;
|
LogWindow *m_logWindow;
|
||||||
LocalsAndExpressionsWindow *m_localsAndExpressionsWindow;
|
LocalsAndExpressionsWindow *m_localsAndExpressionsWindow;
|
||||||
|
|
||||||
@@ -2097,15 +2146,15 @@ void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine)
|
|||||||
m_currentEngine->resetLocation();
|
m_currentEngine->resetLocation();
|
||||||
m_currentEngine = engine;
|
m_currentEngine = engine;
|
||||||
|
|
||||||
m_localsWindow->setModel(engine->watchModel());
|
m_localsView->setModel(engine->watchModel());
|
||||||
m_modulesWindow->setModel(engine->modulesModel());
|
m_modulesView->setModel(engine->modulesModel());
|
||||||
m_registerWindow->setModel(engine->registerModel());
|
m_registerView->setModel(engine->registerModel());
|
||||||
m_returnWindow->setModel(engine->watchModel());
|
m_returnView->setModel(engine->watchModel());
|
||||||
m_sourceFilesWindow->setModel(engine->sourceFilesModel());
|
m_sourceFilesView->setModel(engine->sourceFilesModel());
|
||||||
m_stackWindow->setModel(engine->stackModel());
|
m_stackView->setModel(engine->stackModel());
|
||||||
m_threadsWindow->setModel(engine->threadsModel());
|
m_threadsView->setModel(engine->threadsModel());
|
||||||
m_watchersWindow->setModel(engine->watchModel());
|
m_watchersView->setModel(engine->watchModel());
|
||||||
m_inspectorWindow->setModel(engine->watchModel());
|
m_inspectorView->setModel(engine->watchModel());
|
||||||
|
|
||||||
mainWindow()->setEngineDebugLanguages(engine->startParameters().languages);
|
mainWindow()->setEngineDebugLanguages(engine->startParameters().languages);
|
||||||
}
|
}
|
||||||
@@ -2239,8 +2288,8 @@ void DebuggerPluginPrivate::updateWatchersWindow(bool showWatch, bool showReturn
|
|||||||
void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
|
void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(engine, return);
|
QTC_ASSERT(engine, return);
|
||||||
QTC_ASSERT(m_watchersWindow->model(), return);
|
QTC_ASSERT(m_watchersView->model(), return);
|
||||||
QTC_ASSERT(m_returnWindow->model(), return);
|
QTC_ASSERT(m_returnView->model(), return);
|
||||||
QTC_ASSERT(!engine->isSlaveEngine(), return);
|
QTC_ASSERT(!engine->isSlaveEngine(), return);
|
||||||
|
|
||||||
m_threadBox->setCurrentIndex(engine->threadsHandler()->currentThreadIndex());
|
m_threadBox->setCurrentIndex(engine->threadsHandler()->currentThreadIndex());
|
||||||
@@ -2539,6 +2588,11 @@ QVariant DebuggerCore::sessionValue(const QByteArray &key)
|
|||||||
return SessionManager::value(QString::fromUtf8(key));
|
return SessionManager::value(QString::fromUtf8(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTreeView *DebuggerCore::inspectorView()
|
||||||
|
{
|
||||||
|
return theDebuggerCore->m_inspectorView;
|
||||||
|
}
|
||||||
|
|
||||||
void DebuggerPluginPrivate::openTextEditor(const QString &titlePattern0,
|
void DebuggerPluginPrivate::openTextEditor(const QString &titlePattern0,
|
||||||
const QString &contents)
|
const QString &contents)
|
||||||
{
|
{
|
||||||
@@ -2741,40 +2795,49 @@ void DebuggerPluginPrivate::extensionsInitialized()
|
|||||||
|
|
||||||
m_statusLabel = new StatusLabel;
|
m_statusLabel = new StatusLabel;
|
||||||
|
|
||||||
m_breakHandler = new BreakHandler;
|
|
||||||
m_breakWindow = new BreakWindow;
|
|
||||||
m_breakWindow->setObjectName(QLatin1String(DOCKWIDGET_BREAK));
|
|
||||||
m_breakWindow->setModel(m_breakHandler->model());
|
|
||||||
|
|
||||||
m_modulesWindow = new ModulesWindow;
|
|
||||||
m_modulesWindow->setObjectName(QLatin1String(DOCKWIDGET_MODULES));
|
|
||||||
m_logWindow = new LogWindow;
|
m_logWindow = new LogWindow;
|
||||||
m_logWindow->setObjectName(QLatin1String(DOCKWIDGET_OUTPUT));
|
m_logWindow->setObjectName(QLatin1String(DOCKWIDGET_OUTPUT));
|
||||||
m_registerWindow = new RegisterWindow;
|
|
||||||
m_registerWindow->setObjectName(QLatin1String(DOCKWIDGET_REGISTER));
|
m_breakHandler = new BreakHandler;
|
||||||
m_stackWindow = new StackWindow;
|
m_breakView = new BreakTreeView;
|
||||||
m_stackWindow->setObjectName(QLatin1String(DOCKWIDGET_STACK));
|
m_breakView->setModel(m_breakHandler->model());
|
||||||
m_sourceFilesWindow = new SourceFilesWindow;
|
m_breakWindow = addSearch(m_breakView, tr("Breakpoints"), DOCKWIDGET_BREAK);
|
||||||
m_sourceFilesWindow->setObjectName(QLatin1String(DOCKWIDGET_SOURCE_FILES));
|
|
||||||
m_threadsWindow = new ThreadsWindow;
|
m_modulesView = new ModulesTreeView;
|
||||||
m_threadsWindow->setObjectName(QLatin1String(DOCKWIDGET_THREADS));
|
m_modulesWindow = addSearch(m_modulesView, tr("Modules"), DOCKWIDGET_MODULES);
|
||||||
m_returnWindow = new WatchWindow(ReturnType);
|
|
||||||
m_returnWindow->setObjectName(QLatin1String("CppDebugReturn"));
|
m_registerView = new RegisterTreeView;
|
||||||
m_localsWindow = new WatchWindow(LocalsType);
|
m_registerWindow = addSearch(m_registerView, tr("Registers"), DOCKWIDGET_REGISTER);
|
||||||
m_localsWindow->setObjectName(QLatin1String("CppDebugLocals"));
|
|
||||||
m_watchersWindow = new WatchWindow(WatchersType);
|
m_stackView = new StackTreeView;
|
||||||
m_watchersWindow->setObjectName(QLatin1String("CppDebugWatchers"));
|
m_stackWindow = addSearch(m_stackView, tr("Stack"), DOCKWIDGET_STACK);
|
||||||
m_inspectorWindow = new WatchWindow(InspectType);
|
|
||||||
m_inspectorWindow->setObjectName(QLatin1String("Inspector"));
|
m_sourceFilesView = new SourceFilesTreeView;
|
||||||
|
m_sourceFilesWindow = addSearch(m_sourceFilesView, tr("Source Files"), DOCKWIDGET_SOURCE_FILES);
|
||||||
|
|
||||||
|
m_threadsView = new ThreadsTreeView;
|
||||||
|
m_threadsWindow = addSearch(m_threadsView, tr("Threads"), DOCKWIDGET_THREADS);
|
||||||
|
|
||||||
|
m_returnView = new WatchTreeView(ReturnType);
|
||||||
|
m_returnWindow = addSearch(m_returnView, tr("Locals and Expressions"), "CppDebugReturn");
|
||||||
|
|
||||||
|
m_localsView = new WatchTreeView(LocalsType);
|
||||||
|
m_localsWindow = addSearch(m_localsView, tr("Locals and Expressions"), "CppDebugLocals");
|
||||||
|
|
||||||
|
m_watchersView = new WatchTreeView(WatchersType);
|
||||||
|
m_watchersWindow = addSearch(m_watchersView, tr("Locals and Expressions"), "CppDebugWatchers");
|
||||||
|
|
||||||
|
m_inspectorView = new WatchTreeView(InspectType);
|
||||||
|
m_inspectorWindow = addSearch(m_inspectorView, tr("Locals and Expressions"), "Inspector");
|
||||||
|
|
||||||
// Snapshot
|
// Snapshot
|
||||||
m_snapshotHandler = new SnapshotHandler;
|
m_snapshotHandler = new SnapshotHandler;
|
||||||
m_snapshotWindow = new SnapshotWindow(m_snapshotHandler);
|
m_snapshotView = new SnapshotTreeView(m_snapshotHandler);
|
||||||
m_snapshotWindow->setObjectName(QLatin1String(DOCKWIDGET_SNAPSHOTS));
|
m_snapshotView->setModel(m_snapshotHandler->model());
|
||||||
m_snapshotWindow->setModel(m_snapshotHandler->model());
|
m_snapshotWindow = addSearch(m_snapshotView, tr("Snapshots"), DOCKWIDGET_SNAPSHOTS);
|
||||||
|
|
||||||
// Watchers
|
// Watchers
|
||||||
connect(m_localsWindow->header(), SIGNAL(sectionResized(int,int,int)),
|
connect(m_localsView->header(), SIGNAL(sectionResized(int,int,int)),
|
||||||
SLOT(updateWatchersHeader(int,int,int)), Qt::QueuedConnection);
|
SLOT(updateWatchersHeader(int,int,int)), Qt::QueuedConnection);
|
||||||
|
|
||||||
QAction *act = 0;
|
QAction *act = 0;
|
||||||
|
|||||||
@@ -53,8 +53,7 @@
|
|||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
ModulesTreeView::ModulesTreeView(QWidget *parent)
|
ModulesTreeView::ModulesTreeView()
|
||||||
: BaseTreeView(parent)
|
|
||||||
{
|
{
|
||||||
setSortingEnabled(true);
|
setSortingEnabled(true);
|
||||||
|
|
||||||
@@ -175,11 +174,5 @@ void ModulesTreeView::contextMenuEvent(QContextMenuEvent *ev)
|
|||||||
QProcess::startDetached(QLatin1String("depends"), QStringList(fileName));
|
QProcess::startDetached(QLatin1String("depends"), QStringList(fileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
ModulesWindow::ModulesWindow()
|
|
||||||
: BaseWindow(new ModulesTreeView)
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Modules"));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef DEBUGGER_MODULESWINDOW_H
|
#ifndef DEBUGGER_MODULESWINDOW_H
|
||||||
#define DEBUGGER_MODULESWINDOW_H
|
#define DEBUGGER_MODULESWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -41,7 +40,7 @@ class ModulesTreeView : public Utils::BaseTreeView
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ModulesTreeView(QWidget *parent = 0);
|
ModulesTreeView();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void moduleActivated(const QModelIndex &index);
|
void moduleActivated(const QModelIndex &index);
|
||||||
@@ -50,14 +49,6 @@ private:
|
|||||||
void contextMenuEvent(QContextMenuEvent *ev);
|
void contextMenuEvent(QContextMenuEvent *ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
class ModulesWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
ModulesWindow();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -80,6 +80,11 @@ using namespace AST;
|
|||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
static QTreeView *inspectorTreeView()
|
||||||
|
{
|
||||||
|
return DebuggerCore::inspectorView();
|
||||||
|
}
|
||||||
|
|
||||||
class ASTWalker : public Visitor
|
class ASTWalker : public Visitor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -1359,15 +1364,6 @@ bool QmlEngine::adjustBreakpointLineAndColumn(
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
WatchTreeView *QmlEngine::inspectorTreeView() const
|
|
||||||
{
|
|
||||||
DebuggerMainWindow *dw = qobject_cast<DebuggerMainWindow *>(debuggerCore()->mainWindow());
|
|
||||||
LocalsAndExpressionsWindow *leW = qobject_cast<LocalsAndExpressionsWindow *>(
|
|
||||||
dw->dockWidget(_(DOCKWIDGET_WATCHERS))->widget());
|
|
||||||
WatchWindow *inspectorWindow = qobject_cast<WatchWindow *>(leW->inspectorWidget());
|
|
||||||
return qobject_cast<WatchTreeView *>(inspectorWindow->treeView());
|
|
||||||
}
|
|
||||||
|
|
||||||
DebuggerEngine *createQmlEngine(const DebuggerStartParameters &sp)
|
DebuggerEngine *createQmlEngine(const DebuggerStartParameters &sp)
|
||||||
{
|
{
|
||||||
return new QmlEngine(sp);
|
return new QmlEngine(sp);
|
||||||
|
|||||||
@@ -184,8 +184,6 @@ private:
|
|||||||
bool adjustBreakpointLineAndColumn(const QString &filePath, quint32 *line,
|
bool adjustBreakpointLineAndColumn(const QString &filePath, quint32 *line,
|
||||||
quint32 *column, bool *valid);
|
quint32 *column, bool *valid);
|
||||||
|
|
||||||
WatchTreeView *inspectorTreeView() const;
|
|
||||||
|
|
||||||
QmlAdapter m_adapter;
|
QmlAdapter m_adapter;
|
||||||
QmlInspectorAdapter m_inspectorAdapter;
|
QmlInspectorAdapter m_inspectorAdapter;
|
||||||
ProjectExplorer::ApplicationLauncher m_applicationLauncher;
|
ProjectExplorer::ApplicationLauncher m_applicationLauncher;
|
||||||
|
|||||||
@@ -157,8 +157,7 @@ public:
|
|||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
RegisterTreeView::RegisterTreeView(QWidget *parent)
|
RegisterTreeView::RegisterTreeView()
|
||||||
: BaseTreeView(parent)
|
|
||||||
{
|
{
|
||||||
setItemDelegate(new RegisterDelegate(this));
|
setItemDelegate(new RegisterDelegate(this));
|
||||||
}
|
}
|
||||||
@@ -267,11 +266,5 @@ void RegisterTreeView::reloadRegisters()
|
|||||||
currentEngine()->reloadRegisters();
|
currentEngine()->reloadRegisters();
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterWindow::RegisterWindow()
|
|
||||||
: BaseWindow(new RegisterTreeView)
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Registers"));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef DEBUGGER_REGISTERWINDOW_H
|
#ifndef DEBUGGER_REGISTERWINDOW_H
|
||||||
#define DEBUGGER_REGISTERWINDOW_H
|
#define DEBUGGER_REGISTERWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -41,7 +40,7 @@ class RegisterTreeView : public Utils::BaseTreeView
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit RegisterTreeView(QWidget *parent = 0);
|
RegisterTreeView();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void reloadRegisters();
|
void reloadRegisters();
|
||||||
@@ -50,14 +49,6 @@ private:
|
|||||||
void contextMenuEvent(QContextMenuEvent *ev);
|
void contextMenuEvent(QContextMenuEvent *ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
class RegisterWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
RegisterWindow();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef DEBUGGER_SNAPSHOTWINDOW_H
|
#ifndef DEBUGGER_SNAPSHOTWINDOW_H
|
||||||
#define DEBUGGER_SNAPSHOTWINDOW_H
|
#define DEBUGGER_SNAPSHOTWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -54,17 +53,6 @@ private:
|
|||||||
SnapshotHandler *m_snapshotHandler;
|
SnapshotHandler *m_snapshotHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SnapshotWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit SnapshotWindow(SnapshotHandler *handler)
|
|
||||||
: BaseWindow(new SnapshotTreeView(handler))
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Snapshots"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -51,8 +51,7 @@
|
|||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
SourceFilesTreeView::SourceFilesTreeView(QWidget *parent)
|
SourceFilesTreeView::SourceFilesTreeView()
|
||||||
: BaseTreeView(parent)
|
|
||||||
{
|
{
|
||||||
setSortingEnabled(true);
|
setSortingEnabled(true);
|
||||||
}
|
}
|
||||||
@@ -100,12 +99,6 @@ void SourceFilesTreeView::contextMenuEvent(QContextMenuEvent *ev)
|
|||||||
engine->gotoLocation(name);
|
engine->gotoLocation(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceFilesWindow::SourceFilesWindow()
|
|
||||||
: BaseWindow(new SourceFilesTreeView)
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Source Files"));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef SOURCEFILESWINDOW_H
|
#ifndef SOURCEFILESWINDOW_H
|
||||||
#define SOURCEFILESWINDOW_H
|
#define SOURCEFILESWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -41,21 +40,13 @@ class SourceFilesTreeView : public Utils::BaseTreeView
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SourceFilesTreeView(QWidget *parent = 0);
|
SourceFilesTreeView();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void rowActivated(const QModelIndex &index);
|
void rowActivated(const QModelIndex &index);
|
||||||
void contextMenuEvent(QContextMenuEvent *ev);
|
void contextMenuEvent(QContextMenuEvent *ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
class SourceFilesWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
SourceFilesWindow();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -60,8 +60,7 @@ static DebuggerEngine *currentEngine()
|
|||||||
return debuggerCore()->currentEngine();
|
return debuggerCore()->currentEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
StackTreeView::StackTreeView(QWidget *parent)
|
StackTreeView::StackTreeView()
|
||||||
: BaseTreeView(parent)
|
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Stack"));
|
setWindowTitle(tr("Stack"));
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef DEBUGGER_STACKWINDOW_H
|
#ifndef DEBUGGER_STACKWINDOW_H
|
||||||
#define DEBUGGER_STACKWINDOW_H
|
#define DEBUGGER_STACKWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -41,7 +40,7 @@ class StackTreeView : public Utils::BaseTreeView
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit StackTreeView(QWidget *parent = 0);
|
StackTreeView();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void showAddressColumn(bool on);
|
void showAddressColumn(bool on);
|
||||||
@@ -54,17 +53,6 @@ private:
|
|||||||
void copyContentsToClipboard();
|
void copyContentsToClipboard();
|
||||||
};
|
};
|
||||||
|
|
||||||
class StackWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
StackWindow() : BaseWindow(new StackTreeView)
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Stack"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -60,12 +60,5 @@ void ThreadsTreeView::contextMenuEvent(QContextMenuEvent *ev)
|
|||||||
menu.exec(ev->globalPos());
|
menu.exec(ev->globalPos());
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadsWindow::ThreadsWindow()
|
|
||||||
: BaseWindow(new ThreadsTreeView)
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Threads"));
|
|
||||||
setObjectName(QLatin1String("ThreadsWindow"));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef THREADSWINDOW_H
|
#ifndef THREADSWINDOW_H
|
||||||
#define THREADSWINDOW_H
|
#define THREADSWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -48,14 +47,6 @@ private:
|
|||||||
void contextMenuEvent(QContextMenuEvent *ev);
|
void contextMenuEvent(QContextMenuEvent *ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
class ThreadsWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
ThreadsWindow();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
@@ -470,9 +470,8 @@ static void addStackLayoutMemoryView(DebuggerEngine *engine, bool separateView,
|
|||||||
//
|
//
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
WatchTreeView::WatchTreeView(WatchType type, QWidget *parent)
|
WatchTreeView::WatchTreeView(WatchType type)
|
||||||
: BaseTreeView(parent),
|
: m_type(type)
|
||||||
m_type(type)
|
|
||||||
{
|
{
|
||||||
setObjectName(QLatin1String("WatchWindow"));
|
setObjectName(QLatin1String("WatchWindow"));
|
||||||
m_grabbing = false;
|
m_grabbing = false;
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#ifndef DEBUGGER_WATCHWINDOW_H
|
#ifndef DEBUGGER_WATCHWINDOW_H
|
||||||
#define DEBUGGER_WATCHWINDOW_H
|
#define DEBUGGER_WATCHWINDOW_H
|
||||||
|
|
||||||
#include "basewindow.h"
|
|
||||||
#include <utils/basetreeview.h>
|
#include <utils/basetreeview.h>
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -49,7 +48,7 @@ class WatchTreeView : public Utils::BaseTreeView
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit WatchTreeView(WatchType type, QWidget *parent = 0);
|
explicit WatchTreeView(WatchType type);
|
||||||
WatchType type() const { return m_type; }
|
WatchType type() const { return m_type; }
|
||||||
|
|
||||||
void setModel(QAbstractItemModel *model);
|
void setModel(QAbstractItemModel *model);
|
||||||
@@ -98,18 +97,6 @@ private:
|
|||||||
bool m_grabbing;
|
bool m_grabbing;
|
||||||
};
|
};
|
||||||
|
|
||||||
class WatchWindow : public BaseWindow
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit WatchWindow(WatchType type)
|
|
||||||
: BaseWindow(new WatchTreeView(type))
|
|
||||||
{
|
|
||||||
setWindowTitle(tr("Locals and Expressions"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user