Commit aaf05f5a authored by hjk's avatar hjk

Move analyzerbase to debugger

This is the first mechanical step to execute on the 'shared pool of
debugger/analyzer views' idea.

Future steps would be providing infrastructure for the view pool,
making all analyzer/debugger views use the pool and then re-extract
a sensible base for a 'analyzer-and/or-debugger' tool plugin interface.

Change-Id: I1bb392e6dd3084fc56937956bee1d6fd9530335d
Reviewed-by: default avatarEike Ziller <eike.ziller@theqtcompany.com>
parent 40e7e2cc
{
\"Name\" : \"AnalyzerBase\",
\"Version\" : \"$$QTCREATOR_VERSION\",
\"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
\"Vendor\" : \"The Qt Company Ltd\",
\"Copyright\" : \"(C) 2016 The Qt Company Ltd\",
\"License\" : [ \"Commercial Usage\",
\"\",
\"Licensees holding valid Qt Commercial licenses may use this plugin 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 The Qt Company.\",
\"\",
\"GNU General Public License Usage\",
\"\",
\"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html.\"
],
\"Category\" : \"Code Analyzer\",
\"Description\" : \"Code Analyzer Base Plugin.\",
\"Url\" : \"http://www.qt.io\",
$$dependencyList
}
DEFINES += ANALYZERBASE_LIBRARY
include(../../qtcreatorplugin.pri)
QT += network
# AnalyzerBase files
SOURCES += \
ianalyzertool.cpp \
analyzerplugin.cpp \
analyzerruncontrol.cpp \
analyzermanager.cpp \
analyzerrunconfigwidget.cpp \
analyzerutils.cpp \
detailederrorview.cpp \
diagnosticlocation.cpp \
startremotedialog.cpp
HEADERS += \
ianalyzertool.h \
analyzerbase_global.h \
analyzerconstants.h \
analyzerplugin.h \
analyzerruncontrol.h \
analyzermanager.h \
analyzerstartparameters.h \
analyzerrunconfigwidget.h \
analyzerutils.h \
detailederrorview.h \
diagnosticlocation.h \
startremotedialog.h \
analyzericons.h
RESOURCES += \
analyzerbase.qrc
import qbs 1.0
QtcPlugin {
name: "AnalyzerBase"
Depends { name: "Qt.widgets" }
Depends { name: "Utils" }
Depends { name: "QtcSsh" }
Depends { name: "Core" }
Depends { name: "CppTools" }
Depends { name: "ProjectExplorer" }
Depends { name: "TextEditor" }
files: [
"analyzerbase.qrc",
"analyzerbase_global.h",
"analyzerconstants.h",
"analyzericons.h",
"analyzermanager.cpp",
"analyzermanager.h",
"analyzerplugin.cpp",
"analyzerplugin.h",
"analyzerrunconfigwidget.cpp",
"analyzerrunconfigwidget.h",
"analyzerruncontrol.cpp",
"analyzerruncontrol.h",
"analyzerstartparameters.h",
"analyzerutils.cpp",
"analyzerutils.h",
"detailederrorview.cpp",
"detailederrorview.h",
"diagnosticlocation.cpp",
"diagnosticlocation.h",
"ianalyzertool.cpp",
"ianalyzertool.h",
"startremotedialog.cpp",
"startremotedialog.h",
]
Group {
name: "Images"
prefix: "images/"
files: ["*.png"]
}
Export {
Depends { name: "CPlusPlus" }
}
}
QTC_PLUGIN_NAME = AnalyzerBase
QTC_LIB_DEPENDS += \
cplusplus \
extensionsystem \
ssh \
utils
QTC_PLUGIN_DEPENDS += \
coreplugin \
projectexplorer \
texteditor \
cpptools
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Author: Nicolas Arnaud-Cormos, KDAB (nicolas.arnaud-cormos@kdab.com)
** Contact: https://www.qt.io/licensing/
**
** 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 The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "analyzerplugin.h"
#include "analyzerconstants.h"
#include "analyzermanager.h"
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/taskhub.h>
#include <QtPlugin>
using namespace Analyzer;
using namespace Analyzer::Internal;
static AnalyzerPlugin *m_instance = 0;
////////////////////////////////////////////////////////////////////////
//
// AnalyzerPlugin
//
////////////////////////////////////////////////////////////////////////
AnalyzerPlugin::AnalyzerPlugin()
{
m_instance = this;
}
AnalyzerPlugin::~AnalyzerPlugin()
{
m_instance = 0;
}
bool AnalyzerPlugin::initialize(const QStringList &arguments, QString *errorString)
{
Q_UNUSED(arguments)
Q_UNUSED(errorString)
(void) new AnalyzerManager(this);
// Task integration.
//: Category under which Analyzer tasks are listed in Issues view
ProjectExplorer::TaskHub::addCategory(Constants::ANALYZERTASK_ID, tr("Analyzer"));
return true;
}
ExtensionSystem::IPlugin::ShutdownFlag AnalyzerPlugin::aboutToShutdown()
{
AnalyzerManager::shutdown();
return SynchronousShutdown;
}
AnalyzerPlugin *AnalyzerPlugin::instance()
{
return m_instance;
}
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Author: Nicolas Arnaud-Cormos, KDAB (nicolas.arnaud-cormos@kdab.com)
** Contact: https://www.qt.io/licensing/
**
** 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 The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#ifndef ANALYZERPLUGIN_H
#define ANALYZERPLUGIN_H
#include <extensionsystem/iplugin.h>
namespace Analyzer {
namespace Internal {
class AnalyzerPlugin : public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "AnalyzerBase.json")
public:
static AnalyzerPlugin *instance();
AnalyzerPlugin();
virtual ~AnalyzerPlugin();
bool initialize(const QStringList &arguments, QString *errorString);
void extensionsInitialized() {}
ShutdownFlag aboutToShutdown();
};
} // namespace Internal
} // namespace Analyzer
#endif // ANALYZERPLUGIN_H
...@@ -4,7 +4,6 @@ QtcPlugin { ...@@ -4,7 +4,6 @@ QtcPlugin {
name: "Android" name: "Android"
Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] } Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] }
Depends { name: "AnalyzerBase" }
Depends { name: "Core" } Depends { name: "Core" }
Depends { name: "Debugger" } Depends { name: "Debugger" }
Depends { name: "ProjectExplorer" } Depends { name: "ProjectExplorer" }
......
...@@ -4,8 +4,7 @@ QTC_PLUGIN_DEPENDS += \ ...@@ -4,8 +4,7 @@ QTC_PLUGIN_DEPENDS += \
debugger \ debugger \
projectexplorer \ projectexplorer \
qtsupport \ qtsupport \
texteditor \ texteditor
analyzerbase
QTC_LIB_DEPENDS += \ QTC_LIB_DEPENDS += \
extensionsystem \ extensionsystem \
......
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
#include "androidrunner.h" #include "androidrunner.h"
#include "androidmanager.h" #include "androidmanager.h"
#include <analyzerbase/ianalyzertool.h> #include <debugger/analyzer/ianalyzertool.h>
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <analyzerbase/analyzerruncontrol.h> #include <debugger/analyzer/analyzerruncontrol.h>
#include <analyzerbase/analyzerstartparameters.h> #include <debugger/analyzer/analyzerstartparameters.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
......
...@@ -40,9 +40,9 @@ ...@@ -40,9 +40,9 @@
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <analyzerbase/analyzerstartparameters.h> #include <debugger/analyzer/analyzerstartparameters.h>
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <analyzerbase/analyzerruncontrol.h> #include <debugger/analyzer/analyzerruncontrol.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/portlist.h> #include <utils/portlist.h>
......
...@@ -3,7 +3,7 @@ import qbs ...@@ -3,7 +3,7 @@ import qbs
QtcPlugin { QtcPlugin {
name: "ClangStaticAnalyzer" name: "ClangStaticAnalyzer"
Depends { name: "AnalyzerBase" } Depends { name: "Debugger" }
Depends { name: "Core" } Depends { name: "Core" }
Depends { name: "CppTools" } Depends { name: "CppTools" }
Depends { name: "ExtensionSystem" } Depends { name: "ExtensionSystem" }
......
...@@ -3,7 +3,7 @@ QTC_LIB_DEPENDS += \ ...@@ -3,7 +3,7 @@ QTC_LIB_DEPENDS += \
extensionsystem \ extensionsystem \
utils utils
QTC_PLUGIN_DEPENDS += \ QTC_PLUGIN_DEPENDS += \
analyzerbase \ debugger \
cpptools cpptools
QTC_TEST_DEPENDS += \ QTC_TEST_DEPENDS += \
qbsprojectmanager \ qbsprojectmanager \
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef CLANGSTATICANALZYERDIAGNOSTIC_H #ifndef CLANGSTATICANALZYERDIAGNOSTIC_H
#define CLANGSTATICANALZYERDIAGNOSTIC_H #define CLANGSTATICANALZYERDIAGNOSTIC_H
#include <analyzerbase/diagnosticlocation.h> #include <debugger/analyzer/diagnosticlocation.h>
#include <QList> #include <QList>
#include <QMetaType> #include <QMetaType>
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include "clangstaticanalyzerdiagnostic.h" #include "clangstaticanalyzerdiagnostic.h"
#include "clangstaticanalyzerprojectsettings.h" #include "clangstaticanalyzerprojectsettings.h"
#include <analyzerbase/detailederrorview.h> #include <debugger/analyzer/detailederrorview.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/treemodel.h> #include <utils/treemodel.h>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef CLANGSTATICANALYZERDIAGNOSTICVIEW_H #ifndef CLANGSTATICANALYZERDIAGNOSTICVIEW_H
#define CLANGSTATICANALYZERDIAGNOSTICVIEW_H #define CLANGSTATICANALYZERDIAGNOSTICVIEW_H
#include <analyzerbase/detailederrorview.h> #include <debugger/analyzer/detailederrorview.h>
namespace ClangStaticAnalyzer { namespace ClangStaticAnalyzer {
namespace Internal { namespace Internal {
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "clangstaticanalyzerunittests.h" #include "clangstaticanalyzerunittests.h"
#endif #endif
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actionmanager.h>
......
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
#include "clangstaticanalyzersettings.h" #include "clangstaticanalyzersettings.h"
#include "clangstaticanalyzerutils.h" #include "clangstaticanalyzerutils.h"
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <analyzerbase/analyzerutils.h> #include <debugger/analyzer/analyzerutils.h>
#include <clangcodemodel/clangutils.h> #include <clangcodemodel/clangutils.h>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef CLANGSTATICANALYZERRUNCONTROL_H #ifndef CLANGSTATICANALYZERRUNCONTROL_H
#define CLANGSTATICANALYZERRUNCONTROL_H #define CLANGSTATICANALYZERRUNCONTROL_H
#include <analyzerbase/analyzerruncontrol.h> #include <debugger/analyzer/analyzerruncontrol.h>
#include <cpptools/projectinfo.h> #include <cpptools/projectinfo.h>
#include <utils/environment.h> #include <utils/environment.h>
......
...@@ -27,9 +27,9 @@ ...@@ -27,9 +27,9 @@
#include "clangstaticanalyzerconstants.h" #include "clangstaticanalyzerconstants.h"
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <analyzerbase/analyzerruncontrol.h> #include <debugger/analyzer/analyzerruncontrol.h>
#include <analyzerbase/analyzerstartparameters.h> #include <debugger/analyzer/analyzerstartparameters.h>
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#include "clangstaticanalyzerdiagnosticview.h" #include "clangstaticanalyzerdiagnosticview.h"
#include "clangstaticanalyzerruncontrol.h" #include "clangstaticanalyzerruncontrol.h"
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/coreicons.h> #include <coreplugin/coreicons.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef CLANGSTATICANALYZERTOOL_H #ifndef CLANGSTATICANALYZERTOOL_H
#define CLANGSTATICANALYZERTOOL_H #define CLANGSTATICANALYZERTOOL_H
#include <analyzerbase/ianalyzertool.h> #include <debugger/analyzer/ianalyzertool.h>
#include <cpptools/projectinfo.h> #include <cpptools/projectinfo.h>
#include <QHash> #include <QHash>
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include "clangstaticanalyzertool.h" #include "clangstaticanalyzertool.h"
#include "clangstaticanalyzerutils.h" #include "clangstaticanalyzerutils.h"
#include <analyzerbase/analyzermanager.h> #include <debugger/analyzer/analyzermanager.h>
#include <cpptools/cppmodelmanager.h> #include <cpptools/cppmodelmanager.h>
#include <cpptools/cpptoolstestcase.h> #include <cpptools/cpptoolstestcase.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
......
QT += network
# AnalyzerBase files
SOURCES += \
$$PWD/ianalyzertool.cpp \
$$PWD/analyzerruncontrol.cpp \
$$PWD/analyzermanager.cpp \
$$PWD/analyzerrunconfigwidget.cpp \
$$PWD/analyzerutils.cpp \
$$PWD/detailederrorview.cpp \
$$PWD/diagnosticlocation.cpp \
$$PWD/startremotedialog.cpp
HEADERS += \
$$PWD/ianalyzertool.h \
$$PWD/analyzerbase_global.h \
$$PWD/analyzerconstants.h \
$$PWD/analyzerruncontrol.h \
$$PWD/analyzermanager.h \
$$PWD/analyzerstartparameters.h \
$$PWD/analyzerrunconfigwidget.h \
$$PWD/analyzerutils.h \
$$PWD/detailederrorview.h \
$$PWD/diagnosticlocation.h \
$$PWD/startremotedialog.h \
$$PWD/analyzericons.h
RESOURCES += \
$$PWD/analyzerbase.qrc
...@@ -27,10 +27,11 @@ ...@@ -27,10 +27,11 @@
#include "analyzermanager.h" #include "analyzermanager.h"
#include "analyzericons.h" #include "analyzericons.h"
#include "analyzerplugin.h"
#include "analyzerstartparameters.h" #include "analyzerstartparameters.h"
#include "ianalyzertool.h" #include "ianalyzertool.h"
#include "../debuggerplugin.h"
#include <coreplugin/coreicons.h> #include <coreplugin/coreicons.h>
#include <coreplugin/findplaceholder.h> #include <coreplugin/findplaceholder.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
...@@ -77,7 +78,6 @@ ...@@ -77,7 +78,6 @@
using namespace Core; using namespace Core;
using namespace Utils; using namespace Utils;
using namespace Core::Constants; using namespace Core::Constants;
using namespace Analyzer::Internal;
using namespace Analyzer::Constants; using namespace Analyzer::Constants;
using namespace ProjectExplorer; using namespace ProjectExplorer;
...@@ -161,7 +161,7 @@ public: ...@@ -161,7 +161,7 @@ public:
public: public:
AnalyzerManager *q; AnalyzerManager *q;
AnalyzerMode *m_mode; Internal::AnalyzerMode *m_mode;
bool m_isRunning; bool m_isRunning;
FancyMainWindow *m_mainWindow; FancyMainWindow *m_mainWindow;
AnalyzerAction *m_currentAction; AnalyzerAction *m_currentAction;
...@@ -259,7 +259,7 @@ void AnalyzerManagerPrivate::delayedInit() ...@@ -259,7 +259,7 @@ void AnalyzerManagerPrivate::delayedInit()
if (m_mode) if (m_mode)
return; return;
m_mode = new AnalyzerMode(q); m_mode = new Internal::AnalyzerMode(q);
createModeMainWindow(); createModeMainWindow();
connect(ModeManager::instance(), &ModeManager::currentModeChanged, connect(ModeManager::instance(), &ModeManager::currentModeChanged,
...@@ -286,7 +286,7 @@ void AnalyzerManagerPrivate::delayedInit() ...@@ -286,7 +286,7 @@ void AnalyzerManagerPrivate::delayedInit()
ICore::addContextObject(modeContextObject); ICore::addContextObject(modeContextObject);
m_mode->setWidget(splitter); m_mode->setWidget(splitter);
AnalyzerPlugin::instance()->addAutoReleasedObject(m_mode); Debugger::Internal::DebuggerPlugin::instance()->addAutoReleasedObject(m_mode);
// Populate Windows->Views menu with standard actions. // Populate Windows->Views menu with standard actions.
Context analyzerContext(C_ANALYZEMODE); Context analyzerContext(C_ANALYZEMODE);
...@@ -444,8 +444,8 @@ void AnalyzerManagerPrivate::selectSavedTool() ...@@ -444,8 +444,8 @@ void AnalyzerManagerPrivate::selectSavedTool()
{ {
const QSettings *settings = ICore::settings(); const QSettings *settings = ICore::settings();
if (settings->contains(QLatin1String(LAST_ACTIVE_TOOL))) { if (settings->contains(QLatin1String(Internal::LAST_ACTIVE_TOOL))) {
const Id lastAction = Id::fromSetting(settings->value(QLatin1String(LAST_ACTIVE_TOOL))); const Id lastAction = Id::fromSetting(settings->value(QLatin1String(Internal::LAST_ACTIVE_TOOL)));
foreach (AnalyzerAction *action, m_actions) { foreach (AnalyzerAction *action, m_actions) {
if (action->toolId() == lastAction) { if (action->toolId() == lastAction) {
selectAction(action); selectAction(action);
...@@ -497,7 +497,7 @@ void AnalyzerManagerPrivate::selectAction(AnalyzerAction *action) ...@@ -497,7 +497,7 @@ void AnalyzerManagerPrivate::selectAction(AnalyzerAction *action)
m_statusLabelsStackWidget->addWidget(toolStatusLabel); m_statusLabelsStackWidget->addWidget(toolStatusLabel);
} }
foreach (QDockWidget *widget, m_toolWidgets.value(toolId)) foreach (QDockWidget *widget, m_toolWidgets.value(toolId))
activateDock(Qt::DockWidgetArea(widget->property(INITIAL_DOCK_AREA).toInt()), widget); activateDock(Qt::DockWidgetArea(widget->property(Internal::INITIAL_DOCK_AREA).toInt()), widget);
loadToolSettings(action->toolId()); loadToolSettings(action->toolId());
...@@ -581,7 +581,7 @@ void AnalyzerManagerPrivate::saveToolSettings(Id toolId) ...@@ -581,7 +581,7 @@ void AnalyzerManagerPrivate::saveToolSettings(Id toolId)
m_mainWindow->saveSettings(settings); m_mainWindow->saveSettings(settings);
settings->setValue(QLatin1String("ToolSettingsSaved"), true); settings->setValue(QLatin1String("ToolSettingsSaved"), true);
settings->endGroup(); settings->endGroup();
settings->setValue(QLatin1String(LAST_ACTIVE_TOOL), toolId.toString()); settings->setValue(QLatin1String(Internal::LAST_ACTIVE_TOOL), toolId.toString());
} }
void AnalyzerManagerPrivate::updateRunActions() void AnalyzerManagerPrivate::updateRunActions()
...@@ -644,7 +644,7 @@ QDockWidget *AnalyzerManager::createDockWidget(Core::Id toolId, ...@@ -644,7 +644,7 @@ QDockWidget *AnalyzerManager::createDockWidget(Core::Id toolId,
{ {
QTC_ASSERT(!widget->objectName().isEmpty(), return 0); QTC_ASSERT(!widget->objectName().isEmpty(), return 0);
QDockWidget *dockWidget = d->m_mainWindow->addDockForWidget(widget); QDockWidget *dockWidget = d->m_mainWindow->addDockForWidget(widget);
dockWidget->setProperty(INITIAL_DOCK_AREA, int(area)); dockWidget->setProperty(Internal::INITIAL_DOCK_AREA, int(area));
d->m_dockWidgets.append(AnalyzerManagerPrivate::DockPtr(dockWidget)); d->m_dockWidgets.append(AnalyzerManagerPrivate::DockPtr(dockWidget));
d->m_toolWidgets[toolId].push_back(dockWidget); d->m_toolWidgets[toolId].push_back(dockWidget);
return dockWidget; return dockWidget;
......