Integrate ADS in QtCreator

- Integrate DockManager in DesignModeWidget (create factory default
   workspace, create menu items, add qds constants, remove unused
   shortcuts)
 - Remove unused functions and variables due to new docking system usage
 - Add DockWidget style sheet to resources
 - Fix scrollbar style by merging base and scrollbar style sheets
 - Fix update of StatesEditorWidget when switching tabs
 - Add missing unique ids in widget info
 - Set minimum size on ItemLibraryWidget

Change-Id: I08be6d753233fc767037a33b41af335cec6d43b1
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Henning Gruendl
2020-01-24 17:14:05 +01:00
committed by Henning Gründl
parent 8f686e985c
commit 79612417e3
20 changed files with 450 additions and 307 deletions

View File

@@ -1,6 +1,6 @@
add_qtc_plugin(QmlDesigner add_qtc_plugin(QmlDesigner
DEPENDS DEPENDS
QmlJS LanguageUtils QmlEditorWidgets QmlJS LanguageUtils QmlEditorWidgets AdvancedDockingSystem
Qt5::QuickWidgets Qt5::CorePrivate Qt5::QuickWidgets Qt5::CorePrivate
DEFINES DEFINES
DESIGNER_CORE_LIBRARY DESIGNER_CORE_LIBRARY

View File

@@ -87,8 +87,6 @@ ConnectionViewWidget::ConnectionViewWidget(QWidget *parent) :
QStyle *style = QStyleFactory::create("fusion"); QStyle *style = QStyleFactory::create("fusion");
setStyle(style); setStyle(style);
setStyleSheet(Theme::replaceCssColors(QLatin1String(Utils::FileReader::fetchQrc(QLatin1String(":/connectionview/stylesheet.css")))));
//ui->tabWidget->tabBar()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); //ui->tabWidget->tabBar()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->tabBar->setUsesScrollButtons(true); ui->tabBar->setUsesScrollButtons(true);
@@ -105,13 +103,9 @@ ConnectionViewWidget::ConnectionViewWidget(QWidget *parent) :
ui->tabBar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); ui->tabBar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
const QString themedScrollBarCss = Theme::replaceCssColors( QByteArray sheet = Utils::FileReader::fetchQrc(":/connectionview/stylesheet.css");
QLatin1String(Utils::FileReader::fetchQrc(QLatin1String(":/qmldesigner/scrollbar.css")))); sheet += Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css");
setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet)));
ui->connectionView->setStyleSheet(themedScrollBarCss);
ui->bindingView->setStyleSheet(themedScrollBarCss);
ui->dynamicPropertiesView->setStyleSheet(themedScrollBarCss);
ui->backendView->setStyleSheet(themedScrollBarCss);
connect(ui->tabBar, &QTabBar::currentChanged, connect(ui->tabBar, &QTabBar::currentChanged,
ui->stackedWidget, &QStackedWidget::setCurrentIndex); ui->stackedWidget, &QStackedWidget::setCurrentIndex);

View File

@@ -59,8 +59,6 @@ namespace QmlDesigner {
FormEditorWidget::FormEditorWidget(FormEditorView *view) : FormEditorWidget::FormEditorWidget(FormEditorView *view) :
m_formEditorView(view) m_formEditorView(view)
{ {
setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(QLatin1String(":/qmldesigner/formeditorstylesheet.css")))));
auto fillLayout = new QVBoxLayout(this); auto fillLayout = new QVBoxLayout(this);
fillLayout->setContentsMargins(0, 0, 0, 0); fillLayout->setContentsMargins(0, 0, 0, 0);
fillLayout->setSpacing(0); fillLayout->setSpacing(0);
@@ -168,7 +166,10 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) :
m_graphicsView = new FormEditorGraphicsView(this); m_graphicsView = new FormEditorGraphicsView(this);
fillLayout->addWidget(m_graphicsView.data()); fillLayout->addWidget(m_graphicsView.data());
m_graphicsView.data()->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(QLatin1String(":/qmldesigner/scrollbar.css")))));
QByteArray sheet = Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css");
sheet += Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css");
setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet)));
} }
void FormEditorWidget::changeTransformTool(bool checked) void FormEditorWidget::changeTransformTool(bool checked)

View File

@@ -56,7 +56,7 @@ WidgetInfo ImportManagerView::widgetInfo()
m_importsWidget->setImports(model()->imports()); m_importsWidget->setImports(model()->imports());
} }
return createWidgetInfo(m_importsWidget, nullptr, QLatin1String("ImportManager"), WidgetInfo::LeftPane, 1); return createWidgetInfo(m_importsWidget, nullptr, QLatin1String("ImportManager"), WidgetInfo::LeftPane, 1, tr("Import Manager"));
} }
void ImportManagerView::modelAttached(Model *model) void ImportManagerView::modelAttached(Model *model)

View File

@@ -58,7 +58,8 @@ WidgetInfo ItemLibraryView::widgetInfo()
new WidgetInfo::ToolBarWidgetDefaultFactory<ItemLibraryWidget>(m_widget.data()), new WidgetInfo::ToolBarWidgetDefaultFactory<ItemLibraryWidget>(m_widget.data()),
QStringLiteral("Library"), QStringLiteral("Library"),
WidgetInfo::LeftPane, WidgetInfo::LeftPane,
0); 0,
tr("Library"));
} }
void ItemLibraryView::modelAttached(Model *model) void ItemLibraryView::modelAttached(Model *model)

View File

@@ -83,7 +83,7 @@ static QString propertyEditorResourcesPath() {
ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
QFrame(parent), QFrame(parent),
m_itemIconSize(24, 24), m_itemIconSize(24, 24),
m_itemViewQuickWidget(new QQuickWidget), m_itemViewQuickWidget(new QQuickWidget(this)),
m_resourcesView(new ItemLibraryResourceView(this)), m_resourcesView(new ItemLibraryResourceView(this)),
m_importTagsWidget(new QWidget(this)), m_importTagsWidget(new QWidget(this)),
m_addResourcesWidget(new QWidget(this)), m_addResourcesWidget(new QWidget(this)),
@@ -147,6 +147,8 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
m_stackedWidget = new QStackedWidget(this); m_stackedWidget = new QStackedWidget(this);
m_stackedWidget->addWidget(m_itemViewQuickWidget.data()); m_stackedWidget->addWidget(m_itemViewQuickWidget.data());
m_stackedWidget->addWidget(m_resourcesView.data()); m_stackedWidget->addWidget(m_resourcesView.data());
m_stackedWidget->setMinimumHeight(30);
m_stackedWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
QWidget *spacer = new QWidget(this); QWidget *spacer = new QWidget(this);
spacer->setObjectName(QStringLiteral("itemLibrarySearchInputSpacer")); spacer->setObjectName(QStringLiteral("itemLibrarySearchInputSpacer"));

View File

@@ -142,7 +142,8 @@ WidgetInfo NavigatorView::widgetInfo()
new WidgetInfo::ToolBarWidgetDefaultFactory<NavigatorWidget>(m_widget.data()), new WidgetInfo::ToolBarWidgetDefaultFactory<NavigatorWidget>(m_widget.data()),
QStringLiteral("Navigator"), QStringLiteral("Navigator"),
WidgetInfo::LeftPane, WidgetInfo::LeftPane,
0); 0,
tr("Navigator"));
} }
void NavigatorView::modelAttached(Model *model) void NavigatorView::modelAttached(Model *model)

View File

@@ -92,8 +92,9 @@ NavigatorWidget::NavigatorWidget(NavigatorView *view)
setWindowTitle(tr("Navigator", "Title of navigator view")); setWindowTitle(tr("Navigator", "Title of navigator view"));
#ifndef QMLDESIGNER_TEST #ifndef QMLDESIGNER_TEST
setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css")))); QByteArray sheet = Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css");
m_treeView->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css")))); sheet += Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css");
setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet)));
#endif #endif
} }

View File

@@ -760,7 +760,7 @@ bool PropertyEditorView::hasWidget() const
WidgetInfo PropertyEditorView::widgetInfo() WidgetInfo PropertyEditorView::widgetInfo()
{ {
return createWidgetInfo(m_stackedWidget, nullptr, QStringLiteral("Properties"), WidgetInfo::RightPane, 0); return createWidgetInfo(m_stackedWidget, nullptr, QStringLiteral("Properties"), WidgetInfo::RightPane, 0, tr("Properties"));
} }
void PropertyEditorView::currentStateChanged(const ModelNode &node) void PropertyEditorView::currentStateChanged(const ModelNode &node)

View File

@@ -0,0 +1,128 @@
ADS--DockContainerWidget
{
background-color: creatorTheme.QmlDesigner_BackgroundColorDarkAlternate;
}
ADS--DockContainerWidget QSplitter::handle
{
background-color: creatorTheme.QmlDesigner_BackgroundColorDarkAlternate;
}
ADS--DockAreaWidget
{
background-color: creatorTheme.BackgroundColorNormal;
}
ADS--DockAreaWidget #tabsMenuButton::menu-indicator
{
image: none;
}
ADS--DockSplitter::handle:horizontal {
width: 1px;
background-color: creatorTheme.SplitterColor;
}
ADS--DockSplitter::handle:vertical {
height: 1px;
background-color: creatorTheme.SplitterColor;
}
ADS--DockWidgetTab
{
background-color: creatorTheme.BackgroundColorDark;
border-color: creatorTheme.SplitterColor;
border-style: solid;
border-width: 0 1px 0 0;
}
ADS--DockWidgetTab[activeTab="true"]
{
background-color: creatorTheme.QmlDesigner_TabLight;
}
ADS--DockWidgetTab QLabel
{
color: creatorTheme.QmlDesigner_TabLight;
}
ADS--DockWidgetTab[activeTab="true"] QLabel
{
color: creatorTheme.QmlDesigner_TabDark;
}
ADS--DockWidget
{
background-color: palette(light);
border-color: red;
border-style: solid;
border-width: 0;
}
ADS--DockAreaTitleBar{ background-color: creatorTheme.BackgroundColorDark; }
QWidget#tabsContainerWidget { background-color: creatorTheme.BackgroundColorDark; }
ADS--TitleBarButton
{
padding: 0px 0px;
}
QScrollArea#dockWidgetScrollArea
{
padding: 0px;
border: none;
}
#tabCloseButton
{
margin-top: 2px;
background: none;
border: none;
padding: 0px -2px;
}
#tabCloseButton:hover
{
border: 1px solid rgba(0, 0, 0, 32);
background: rgba(0, 0, 0, 16);
}
#tabCloseButton:pressed
{
background: rgba(0, 0, 0, 32);
}
QScrollBar {
background-color: creatorTheme.BackgroundColorDark;
}
QScrollBar:vertical {
width: 10px;
}
QScrollBar:horizontal {
height: 10px;
}
QScrollBar::handle {
background-color: creatorTheme.QmlDesigner_ScrollBarHandleColor;
}
QScrollBar::handle:vertical {
min-height: 30px;
}
QScrollBar::handle:horizontal {
min-width: 30px;
}
QScrollBar::add-line,
QScrollBar::sub-line,
QScrollBar::left-arrow,
QScrollBar::right-arrow,
QScrollBar::add-page,
QScrollBar::sub-page {
height: 0px;
width: 0px;
}

View File

@@ -4,6 +4,7 @@
<file>scrollbar.css</file> <file>scrollbar.css</file>
<file>formeditorstylesheet.css</file> <file>formeditorstylesheet.css</file>
<file>centerwidget.css</file> <file>centerwidget.css</file>
<file>dockwidgets.css</file>
<file>images/spliteditorhorizontally.png</file> <file>images/spliteditorhorizontally.png</file>
<file>images/spliteditorhorizontally@2x.png</file> <file>images/spliteditorhorizontally@2x.png</file>
<file>images/spliteditorvertically.png</file> <file>images/spliteditorvertically.png</file>

View File

@@ -127,6 +127,12 @@ void StatesEditorWidget::toggleStatesViewExpanded()
rootObject()->setProperty("expanded", !expanded); rootObject()->setProperty("expanded", !expanded);
} }
void StatesEditorWidget::showEvent(QShowEvent *event)
{
Q_UNUSED(event)
update();
}
void StatesEditorWidget::reloadQmlSource() void StatesEditorWidget::reloadQmlSource()
{ {
QString statesListQmlFilePath = qmlSourcesPath() + QStringLiteral("/StatesList.qml"); QString statesListQmlFilePath = qmlSourcesPath() + QStringLiteral("/StatesList.qml");

View File

@@ -59,6 +59,9 @@ public:
void toggleStatesViewExpanded(); void toggleStatesViewExpanded();
protected:
void showEvent(QShowEvent *) override;
private: private:
void reloadQmlSource(); void reloadQmlSource();
Q_SLOT void handleExpandedChanged(); Q_SLOT void handleExpandedChanged();

View File

@@ -37,6 +37,12 @@
#include <itemlibrarywidget.h> #include <itemlibrarywidget.h>
#include <theme.h> #include <theme.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actionmanager_p.h>
#include <coreplugin/actionmanager/command.h>
#include <qmldesigner/qmldesignerconstants.h>
#include <coreplugin/outputpane.h> #include <coreplugin/outputpane.h>
#include <coreplugin/modemanager.h> #include <coreplugin/modemanager.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
@@ -56,6 +62,10 @@
#include <QToolBar> #include <QToolBar>
#include <QLayout> #include <QLayout>
#include <QBoxLayout> #include <QBoxLayout>
#include <QDir>
#include <advanceddockingsystem/dockareawidget.h>
#include <advanceddockingsystem/docksplitter.h>
using Core::MiniSplitter; using Core::MiniSplitter;
using Core::IEditor; using Core::IEditor;
@@ -67,13 +77,9 @@ enum {
debug = false debug = false
}; };
const char SB_PROJECTS[] = "Projects";
const char SB_FILESYSTEM[] = "FileSystem";
const char SB_OPENDOCUMENTS[] = "OpenDocuments";
static void hideToolButtons(QList<QToolButton*> &buttons) static void hideToolButtons(QList<QToolButton*> &buttons)
{ {
foreach (QToolButton *button, buttons) for (QToolButton *button : buttons)
button->hide(); button->hide();
} }
@@ -138,36 +144,12 @@ DesignModeWidget::DesignModeWidget()
DesignModeWidget::~DesignModeWidget() DesignModeWidget::~DesignModeWidget()
{ {
m_leftSideBar.reset(); for (QPointer<QWidget> widget : m_viewWidgets) {
m_rightSideBar.reset();
foreach (QPointer<QWidget> widget, m_viewWidgets) {
if (widget) if (widget)
widget.clear(); widget.clear();
} }
}
void DesignModeWidget::restoreDefaultView() delete m_dockManager;
{
QSettings *settings = Core::ICore::settings();
m_leftSideBar->closeAllWidgets();
m_rightSideBar->closeAllWidgets();
m_leftSideBar->readSettings(settings, "none.LeftSideBar");
m_rightSideBar->readSettings(settings, "none.RightSideBar");
m_leftSideBar->show();
m_rightSideBar->show();
}
void DesignModeWidget::toggleLeftSidebar()
{
if (m_leftSideBar)
m_leftSideBar->setVisible(!m_leftSideBar->isVisible());
}
void DesignModeWidget::toggleRightSidebar()
{
if (m_rightSideBar)
m_rightSideBar->setVisible(!m_rightSideBar->isVisible());
} }
QWidget *DesignModeWidget::createProjectExplorerWidget(QWidget *parent) QWidget *DesignModeWidget::createProjectExplorerWidget(QWidget *parent)
@@ -178,7 +160,7 @@ QWidget *DesignModeWidget::createProjectExplorerWidget(QWidget *parent)
Core::NavigationView navigationView; Core::NavigationView navigationView;
navigationView.widget = nullptr; navigationView.widget = nullptr;
foreach (Core::INavigationWidgetFactory *factory, factories) { for (Core::INavigationWidgetFactory *factory : factories) {
if (factory->id() == "Projects") { if (factory->id() == "Projects") {
navigationView = factory->createWidget(); navigationView = factory->createWidget();
hideToolButtons(navigationView.dockToolBarWidgets); hideToolButtons(navigationView.dockToolBarWidgets);
@@ -196,29 +178,23 @@ QWidget *DesignModeWidget::createProjectExplorerWidget(QWidget *parent)
return navigationView.widget; return navigationView.widget;
} }
void DesignModeWidget::readSettings() void DesignModeWidget::readSettings() // readPerspectives
{ {
return;
QSettings *settings = Core::ICore::settings(); QSettings *settings = Core::ICore::settings();
settings->beginGroup("Bauhaus"); settings->beginGroup("Bauhaus");
m_leftSideBar->readSettings(settings, QStringLiteral("LeftSideBar"));
m_rightSideBar->readSettings(settings, QStringLiteral("RightSideBar"));
if (settings->contains("MainSplitter")) {
const QByteArray splitterState = settings->value("MainSplitter").toByteArray();
m_mainSplitter->restoreState(splitterState);
m_mainSplitter->setOpaqueResize(); // force opaque resize since it used to be off
}
settings->endGroup(); settings->endGroup();
} }
void DesignModeWidget::saveSettings() void DesignModeWidget::saveSettings() // savePerspectives
{ {
return;
QSettings *settings = Core::ICore::settings(); QSettings *settings = Core::ICore::settings();
settings->beginGroup("Bauhaus"); settings->beginGroup("Bauhaus");
m_leftSideBar->saveSettings(settings, QStringLiteral("LeftSideBar"));
m_rightSideBar->saveSettings(settings, QStringLiteral("RightSideBar"));
settings->setValue("MainSplitter", m_mainSplitter->saveState());
settings->endGroup(); settings->endGroup();
} }
@@ -240,12 +216,20 @@ void DesignModeWidget::disableWidgets()
m_isDisabled = true; m_isDisabled = true;
} }
void DesignModeWidget::switchTextOrForm() bool DesignModeWidget::eventFilter(QObject *obj, QEvent *event) // TODO
{ {
if (m_centralTabWidget->currentWidget() == viewManager().widget("TextEditor")) if (event->type() == QEvent::Hide) {
m_centralTabWidget->switchTo(viewManager().widget("FormEditor")); qDebug() << ">>> HIDE";
else m_outputPaneDockWidget->toggleView(false);
m_centralTabWidget->switchTo(viewManager().widget("TextEditor")); return true;
} else if (event->type() == QEvent::Show) {
qDebug() << ">>> SHOW";
m_outputPaneDockWidget->toggleView(true);
return true;
} else {
// standard event processing
return QObject::eventFilter(obj, event);
}
} }
void DesignModeWidget::setup() void DesignModeWidget::setup()
@@ -255,42 +239,122 @@ void DesignModeWidget::setup()
actionManager.createDefaultAddResourceHandler(); actionManager.createDefaultAddResourceHandler();
actionManager.polishActions(); actionManager.polishActions();
QList<Core::INavigationWidgetFactory *> factories = m_dockManager = new ADS::DockManager(this);
Core::INavigationWidgetFactory::allNavigationFactories(); m_dockManager->setConfigFlags(ADS::DockManager::DefaultNonOpaqueConfig);
m_dockManager->setSettings(Core::ICore::settings(QSettings::UserScope));
QWidget *openDocumentsWidget = nullptr; QString sheet = QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/dockwidgets.css"));
QWidget *projectsExplorer = nullptr; m_dockManager->setStyleSheet(Theme::replaceCssColors(sheet));
QWidget *fileSystemExplorer = nullptr;
foreach (Core::INavigationWidgetFactory *factory, factories) { // Setup Actions and Menus
Core::ActionContainer *mwindow = Core::ActionManager::actionContainer(Core::Constants::M_WINDOW);
// Window > Views
Core::ActionContainer *mviews = Core::ActionManager::createMenu(Core::Constants::M_WINDOW_VIEWS);
mviews->menu()->addSeparator();
// Window > Workspaces
Core::ActionContainer *mworkspaces = Core::ActionManager::createMenu(QmlDesigner::Constants::M_WINDOW_WORKSPACES);
mwindow->addMenu(mworkspaces, Core::Constants::G_WINDOW_VIEWS);
mworkspaces->menu()->setTitle(tr("&Workspaces"));
mworkspaces->setOnAllDisabledBehavior(Core::ActionContainer::Show); // TODO what does it exactly do?!
// Connect opening of the 'window' menu with creation of the workspaces menu
connect(mwindow->menu(), &QMenu::aboutToShow, this, &DesignModeWidget::aboutToShowWorkspaces);
// Create a DockWidget for each QWidget and add them to the DockManager
const Core::Context designContext(Core::Constants::C_DESIGN_MODE);
static const Core::Id actionToggle("QmlDesigner.Toggle");
// First get all navigation views
QList<Core::INavigationWidgetFactory *> factories = Core::INavigationWidgetFactory::allNavigationFactories();
for (Core::INavigationWidgetFactory *factory : factories) {
Core::NavigationView navigationView; Core::NavigationView navigationView;
navigationView.widget = nullptr; navigationView.widget = nullptr;
QString uniqueId;
QString title;
if (factory->id() == "Projects") { if (factory->id() == "Projects") {
navigationView = factory->createWidget(); navigationView = factory->createWidget();
projectsExplorer = navigationView.widget;
hideToolButtons(navigationView.dockToolBarWidgets); hideToolButtons(navigationView.dockToolBarWidgets);
projectsExplorer->setWindowTitle(tr("Projects")); navigationView.widget->setWindowTitle(tr(factory->id().name()));
} else if (factory->id() == "File System") { uniqueId = "Projects";
title = "Projects";
}
if (factory->id() == "File System") {
navigationView = factory->createWidget(); navigationView = factory->createWidget();
fileSystemExplorer = navigationView.widget;
hideToolButtons(navigationView.dockToolBarWidgets); hideToolButtons(navigationView.dockToolBarWidgets);
fileSystemExplorer->setWindowTitle(tr("File System")); navigationView.widget->setWindowTitle(tr(factory->id().name()));
} else if (factory->id() == "Open Documents") { uniqueId = "FileSystem";
title = "File System";
}
if (factory->id() == "Open Documents") {
navigationView = factory->createWidget(); navigationView = factory->createWidget();
openDocumentsWidget = navigationView.widget;
hideToolButtons(navigationView.dockToolBarWidgets); hideToolButtons(navigationView.dockToolBarWidgets);
openDocumentsWidget->setWindowTitle(tr("Open Documents")); navigationView.widget->setWindowTitle(tr(factory->id().name()));
uniqueId = "OpenDocuments";
title = "Open Documents";
} }
if (navigationView.widget) { if (navigationView.widget) {
// Apply stylesheet to QWidget
QByteArray sheet = Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"); QByteArray sheet = Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css");
sheet += Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css"); sheet += Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css");
sheet += "QLabel { background-color: #4f4f4f; }"; sheet += "QLabel { background-color: #4f4f4f; }";
navigationView.widget->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet))); navigationView.widget->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet)));
// Create DockWidget
ADS::DockWidget *dockWidget = new ADS::DockWidget(uniqueId);
dockWidget->setWidget(navigationView.widget);
dockWidget->setWindowTitle(title);
m_dockManager->addDockWidget(ADS::NoDockWidgetArea, dockWidget);
// Create menu action
auto command = Core::ActionManager::registerAction(dockWidget->toggleViewAction(),
actionToggle.withSuffix(uniqueId + "Widget"),
designContext);
command->setAttribute(Core::Command::CA_Hide);
mviews->addAction(command);
} }
} }
auto toolBar = new QToolBar; // Afterwards get all the other widgets
for (const WidgetInfo &widgetInfo : viewManager().widgetInfos()) {
// Create DockWidget
ADS::DockWidget *dockWidget = new ADS::DockWidget(widgetInfo.uniqueId);
dockWidget->setWidget(widgetInfo.widget);
dockWidget->setWindowTitle(widgetInfo.tabName);
m_dockManager->addDockWidget(ADS::NoDockWidgetArea, dockWidget);
// Add to view widgets
m_viewWidgets.append(widgetInfo.widget);
// Create menu action
auto command = Core::ActionManager::registerAction(dockWidget->toggleViewAction(),
actionToggle.withSuffix(widgetInfo.uniqueId + "Widget"),
designContext);
command->setAttribute(Core::Command::CA_Hide);
mviews->addAction(command);
}
// Finally the output pane
{
auto outputPanePlaceholder = new Core::OutputPanePlaceHolder(Core::Constants::MODE_DESIGN);
m_outputPaneDockWidget = new ADS::DockWidget("OutputPane");
m_outputPaneDockWidget->setWidget(outputPanePlaceholder);
m_outputPaneDockWidget->setWindowTitle("Output Pane");
m_dockManager->addDockWidget(ADS::NoDockWidgetArea, m_outputPaneDockWidget);
// Create menu action
auto command = Core::ActionManager::registerAction(m_outputPaneDockWidget->toggleViewAction(),
actionToggle.withSuffix("OutputPaneWidget"),
designContext);
command->setAttribute(Core::Command::CA_Hide);
mviews->addAction(command);
//outputPanePlaceholder->installEventFilter(this);
}
// Create toolbars
auto toolBar = new QToolBar();
toolBar->addAction(viewManager().componentViewAction()); toolBar->addAction(viewManager().componentViewAction());
toolBar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); toolBar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
DesignerActionToolBar *designerToolBar = QmlDesignerPlugin::instance()->viewManager().designerActionManager().createToolBar(m_toolBar); DesignerActionToolBar *designerToolBar = QmlDesignerPlugin::instance()->viewManager().designerActionManager().createToolBar(m_toolBar);
@@ -298,99 +362,164 @@ void DesignModeWidget::setup()
designerToolBar->layout()->addWidget(toolBar); designerToolBar->layout()->addWidget(toolBar);
m_toolBar->addCenterToolBar(designerToolBar); m_toolBar->addCenterToolBar(designerToolBar);
m_toolBar->setMinimumWidth(320); m_toolBar->setMinimumWidth(320);
m_mainSplitter = new MiniSplitter(this);
m_mainSplitter->setObjectName("mainSplitter");
QList<Core::SideBarItem*> sideBarItems;
QList<Core::SideBarItem*> leftSideBarItems;
QList<Core::SideBarItem*> rightSideBarItems;
foreach (const WidgetInfo &widgetInfo, viewManager().widgetInfos()) {
if (widgetInfo.placementHint == widgetInfo.LeftPane) {
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
sideBarItems.append(sideBarItem);
leftSideBarItems.append(sideBarItem);
}
if (widgetInfo.placementHint == widgetInfo.RightPane) {
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
sideBarItems.append(sideBarItem);
rightSideBarItems.append(sideBarItem);
}
m_viewWidgets.append(widgetInfo.widget);
}
if (projectsExplorer) {
Core::SideBarItem *projectExplorerItem = new Core::SideBarItem(projectsExplorer, QLatin1String(SB_PROJECTS));
sideBarItems.append(projectExplorerItem);
}
if (fileSystemExplorer) {
Core::SideBarItem *fileSystemExplorerItem = new Core::SideBarItem(fileSystemExplorer, QLatin1String(SB_FILESYSTEM));
sideBarItems.append(fileSystemExplorerItem);
}
if (openDocumentsWidget) {
Core::SideBarItem *openDocumentsItem = new Core::SideBarItem(openDocumentsWidget, QLatin1String(SB_OPENDOCUMENTS));
sideBarItems.append(openDocumentsItem);
}
m_leftSideBar.reset(new Core::SideBar(sideBarItems, leftSideBarItems));
m_rightSideBar.reset(new Core::SideBar(sideBarItems, rightSideBarItems));
connect(m_leftSideBar.data(), &Core::SideBar::availableItemsChanged, [=](){
// event comes from m_leftSidebar, so update right side.
m_rightSideBar->setUnavailableItemIds(m_leftSideBar->unavailableItemIds());
});
connect(m_rightSideBar.data(), &Core::SideBar::availableItemsChanged, [=](){
// event comes from m_rightSidebar, so update left side.
m_leftSideBar->setUnavailableItemIds(m_rightSideBar->unavailableItemIds());
});
connect(Core::ICore::instance(), &Core::ICore::coreAboutToClose, [=](){
m_leftSideBar.reset();
m_rightSideBar.reset();
});
m_toolBar->setToolbarCreationFlags(Core::EditorToolBar::FlagsStandalone); m_toolBar->setToolbarCreationFlags(Core::EditorToolBar::FlagsStandalone);
m_toolBar->setNavigationVisible(true); m_toolBar->setNavigationVisible(true);
connect(m_toolBar, &Core::EditorToolBar::goForwardClicked, this, &DesignModeWidget::toolBarOnGoForwardClicked); connect(m_toolBar, &Core::EditorToolBar::goForwardClicked, this, &DesignModeWidget::toolBarOnGoForwardClicked);
connect(m_toolBar, &Core::EditorToolBar::goBackClicked, this, &DesignModeWidget::toolBarOnGoBackClicked); connect(m_toolBar, &Core::EditorToolBar::goBackClicked, this, &DesignModeWidget::toolBarOnGoBackClicked);
QToolBar* toolBarWrapper = new QToolBar();
toolBarWrapper->addWidget(m_toolBar);
toolBarWrapper->addWidget(createCrumbleBarFrame());
toolBarWrapper->setMovable(false);
addToolBar(Qt::TopToolBarArea, toolBarWrapper);
if (currentDesignDocument()) if (currentDesignDocument())
setupNavigatorHistory(currentDesignDocument()->textEditor()); setupNavigatorHistory(currentDesignDocument()->textEditor());
// m_mainSplitter area: // Get a list of all available workspaces
m_mainSplitter->addWidget(m_leftSideBar.data()); QStringList workspaces = m_dockManager->workspaces();
m_mainSplitter->addWidget(createCenterWidget()); QString workspace = ADS::Constants::FACTORY_DEFAULT_NAME;
m_mainSplitter->addWidget(m_rightSideBar.data());
// Finishing touches: // If there is no factory default workspace create one and write the xml file
m_mainSplitter->setStretchFactor(1, 1); if (!workspaces.contains(ADS::Constants::FACTORY_DEFAULT_NAME)) {
m_mainSplitter->setSizes({150, 300, 150}); createFactoryDefaultWorkspace();
// List of workspaces needs to be updated
workspaces = m_dockManager->workspaces();
}
QLayout *mainLayout = new QBoxLayout(QBoxLayout::RightToLeft, this); // Determine workspace to restore at startup
mainLayout->setContentsMargins(0, 0, 0, 0); if (m_dockManager->autoRestorLastWorkspace()) {
mainLayout->setSpacing(0); QString lastWorkspace = m_dockManager->lastWorkspace();
mainLayout->addWidget(m_mainSplitter); if (!lastWorkspace.isEmpty() && workspaces.contains(lastWorkspace))
workspace = lastWorkspace;
else
qDebug() << "Couldn't restore last workspace!";
}
if (workspace.isNull() && workspaces.contains(ADS::Constants::DEFAULT_NAME)) {
workspace = ADS::Constants::DEFAULT_NAME;
}
m_dockManager->openWorkspace(workspace);
viewManager().enableWidgets(); viewManager().enableWidgets();
m_leftSideBar->setEnabled(true);
m_rightSideBar->setEnabled(true);
m_leftSideBar->setCloseWhenEmpty(false);
m_rightSideBar->setCloseWhenEmpty(false);
readSettings(); readSettings();
show(); show();
} }
void DesignModeWidget::aboutToShowWorkspaces()
{
Core::ActionContainer *aci = Core::ActionManager::actionContainer(QmlDesigner::Constants::M_WINDOW_WORKSPACES);
QMenu *menu = aci->menu();
menu->clear();
auto *ag = new QActionGroup(menu);
connect(ag, &QActionGroup::triggered, this, [this](QAction *action) {
QString workspace = action->data().toString();
m_dockManager->openWorkspace(workspace);
});
QAction *action = menu->addAction("Manage...");
connect(action, &QAction::triggered,
m_dockManager, &ADS::DockManager::showWorkspaceMananger);
menu->addSeparator();
for (const auto &workspace : m_dockManager->workspaces())
{
QAction *action = ag->addAction(workspace);
action->setData(workspace);
action->setCheckable(true);
if (workspace == m_dockManager->activeWorkspace())
action->setChecked(true);
}
menu->addActions(ag->actions());
}
void DesignModeWidget::createFactoryDefaultWorkspace()
{
ADS::DockAreaWidget* centerArea = nullptr;
ADS::DockAreaWidget* leftArea = nullptr;
ADS::DockAreaWidget* rightArea = nullptr;
ADS::DockAreaWidget* bottomArea = nullptr;
// Iterate over all widgets and only get the central once to start with creating the factory
// default workspace layout.
for (const WidgetInfo &widgetInfo : viewManager().widgetInfos()) {
if (widgetInfo.placementHint == widgetInfo.CentralPane) {
ADS::DockWidget *dockWidget = m_dockManager->findDockWidget(widgetInfo.uniqueId);
if (centerArea)
m_dockManager->addDockWidget(ADS::CenterDockWidgetArea, dockWidget, centerArea);
else
centerArea = m_dockManager->addDockWidget(ADS::CenterDockWidgetArea, dockWidget);
}
}
// Iterate over all widgets and get the remaining left, right and bottom widgets
for (const WidgetInfo &widgetInfo : viewManager().widgetInfos()) {
if (widgetInfo.placementHint == widgetInfo.LeftPane) {
ADS::DockWidget *dockWidget = m_dockManager->findDockWidget(widgetInfo.uniqueId);
if (leftArea)
m_dockManager->addDockWidget(ADS::CenterDockWidgetArea, dockWidget, leftArea);
else
leftArea = m_dockManager->addDockWidget(ADS::LeftDockWidgetArea, dockWidget, centerArea);
}
if (widgetInfo.placementHint == widgetInfo.RightPane) {
ADS::DockWidget *dockWidget = m_dockManager->findDockWidget(widgetInfo.uniqueId);
if (rightArea)
m_dockManager->addDockWidget(ADS::CenterDockWidgetArea, dockWidget, rightArea);
else
rightArea = m_dockManager->addDockWidget(ADS::RightDockWidgetArea, dockWidget, centerArea);
}
if (widgetInfo.placementHint == widgetInfo.BottomPane) {
ADS::DockWidget *dockWidget = m_dockManager->findDockWidget(widgetInfo.uniqueId);
if (bottomArea)
m_dockManager->addDockWidget(ADS::CenterDockWidgetArea, dockWidget, bottomArea);
else
bottomArea = m_dockManager->addDockWidget(ADS::BottomDockWidgetArea, dockWidget, centerArea);
}
}
// Iterate over all 'special' widgets
QStringList specialWidgets = {"Projects", "FileSystem", "OpenDocuments"};
ADS::DockAreaWidget* leftBottomArea = nullptr;
for (const QString &uniqueId : specialWidgets) {
ADS::DockWidget *dockWidget = m_dockManager->findDockWidget(uniqueId);
if (leftBottomArea)
m_dockManager->addDockWidget(ADS::CenterDockWidgetArea, dockWidget, leftBottomArea);
else
leftBottomArea = m_dockManager->addDockWidget(ADS::BottomDockWidgetArea, dockWidget, leftArea);
}
// Add the last widget 'OutputPane' as the bottom bottom area
ADS::DockWidget *dockWidget = m_dockManager->findDockWidget("OutputPane");
m_dockManager->addDockWidget(ADS::BottomDockWidgetArea, dockWidget, bottomArea);
// TODO This is just a test
auto splitter = centerArea->dockContainer()->rootSplitter();
splitter->setSizes({100, 800, 100});
// TODO
m_dockManager->createWorkspace(ADS::Constants::FACTORY_DEFAULT_NAME);
// Write the xml file
Utils::FilePath fileName = m_dockManager->workspaceNameToFileName(ADS::Constants::FACTORY_DEFAULT_NAME);
QString errorString;
Utils::FileSaver fileSaver(fileName.toString(), QIODevice::Text);
QByteArray data = m_dockManager->saveState();
if (!fileSaver.hasError()) {
fileSaver.write(data);
}
if (!fileSaver.finalize()) {
errorString = fileSaver.errorString();
}
}
void DesignModeWidget::toolBarOnGoBackClicked() void DesignModeWidget::toolBarOnGoBackClicked()
{ {
if (m_navigatorHistoryCounter > 0) { if (m_navigatorHistoryCounter > 0) {
@@ -445,93 +574,6 @@ void DesignModeWidget::addNavigatorHistoryEntry(const Utils::FilePath &fileName)
++m_navigatorHistoryCounter; ++m_navigatorHistoryCounter;
} }
static QTabWidget *createWidgetsInTabWidget(const QList<WidgetInfo> &widgetInfos)
{
auto tabWidget = new QTabWidget;
foreach (const WidgetInfo &widgetInfo, widgetInfos)
tabWidget->addTab(widgetInfo.widget, widgetInfo.tabName);
return tabWidget;
}
static QWidget *createbottomSideBarWidget(const QList<WidgetInfo> &widgetInfos)
{
//### we now own these here
QList<WidgetInfo> topWidgetInfos;
foreach (const WidgetInfo &widgetInfo, widgetInfos) {
if (widgetInfo.placementHint == widgetInfo.BottomPane)
topWidgetInfos.append(widgetInfo);
}
QWidget *widget = topWidgetInfos.constFirst().widget;
if (topWidgetInfos.count() > 1) {
QWidget *background = new QWidget();
background->setProperty("designerBackgroundColor", true);
QString sheet = QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"));
sheet.prepend("QWidget[designerBackgroundColor=\"true\"] {background-color: creatorTheme.QmlDesigner_BackgroundColorDarkAlternate;}");
background->setStyleSheet(Theme::replaceCssColors(sheet));
background->setLayout(new QVBoxLayout);
background->layout()->setContentsMargins(0, 0, 0, 0);
background->layout()->addWidget(createWidgetsInTabWidget(topWidgetInfos));
widget = background;
}
return widget;
}
static Core::MiniSplitter *createCentralSplitter(const QList<WidgetInfo> &widgetInfos)
{
// editor and output panes
auto outputPlaceholderSplitter = new Core::MiniSplitter;
outputPlaceholderSplitter->setOrientation(Qt::Vertical);
auto switchSplitTabWidget = new SwitchSplitTabWidget();
foreach (const WidgetInfo &widgetInfo, widgetInfos) {
if (widgetInfo.placementHint == widgetInfo.CentralPane)
switchSplitTabWidget->addTab(widgetInfo.widget, widgetInfo.tabName);
}
outputPlaceholderSplitter->addWidget(switchSplitTabWidget);
QWidget *bottomSideBar = createbottomSideBarWidget(widgetInfos);
bottomSideBar->setObjectName("bottomSideBar");
outputPlaceholderSplitter->addWidget(bottomSideBar);
auto outputPanePlaceholder = new Core::OutputPanePlaceHolder(Core::Constants::MODE_DESIGN, outputPlaceholderSplitter);
outputPlaceholderSplitter->addWidget(outputPanePlaceholder);
outputPlaceholderSplitter->setStretchFactor(0, 10);
outputPlaceholderSplitter->setStretchFactor(1, 1);
return outputPlaceholderSplitter;
}
QWidget *DesignModeWidget::createCenterWidget()
{
QWidget *centerWidget = new QWidget;
auto horizontalLayout = new QVBoxLayout(centerWidget);
horizontalLayout->setContentsMargins(0, 0, 0, 0);
horizontalLayout->setSpacing(0);
horizontalLayout->addWidget(m_toolBar);
horizontalLayout->addWidget(createCrumbleBarFrame());
Core::MiniSplitter *centralSplitter = createCentralSplitter(viewManager().widgetInfos());
m_centralTabWidget = centralSplitter->findChild<SwitchSplitTabWidget*>();
Q_ASSERT(m_centralTabWidget);
m_centralTabWidget->switchTo(viewManager().widget("FormEditor"));
m_bottomSideBar = centralSplitter->findChild<QWidget*>("bottomSideBar");
Q_ASSERT(m_bottomSideBar);
horizontalLayout->addWidget(centralSplitter);
return centerWidget;
}
QWidget *DesignModeWidget::createCrumbleBarFrame() QWidget *DesignModeWidget::createCrumbleBarFrame()
{ {
auto frame = new Utils::StyledBar(this); auto frame = new Utils::StyledBar(this);
@@ -551,7 +593,9 @@ CrumbleBar *DesignModeWidget::crumbleBar() const
void DesignModeWidget::showInternalTextEditor() void DesignModeWidget::showInternalTextEditor()
{ {
m_centralTabWidget->switchTo(viewManager().widget("TextEditor")); auto dockWidget = m_dockManager->findDockWidget("TextEditor");
if (dockWidget)
dockWidget->toggleView(true);
} }
void DesignModeWidget::contextHelp(const Core::IContext::HelpCallback &callback) const void DesignModeWidget::contextHelp(const Core::IContext::HelpCallback &callback) const

View File

@@ -32,8 +32,11 @@
#include <modelnode.h> #include <modelnode.h>
#include <QWidget> #include <QWidget>
#include <QMainWindow>
#include <QScopedPointer> #include <QScopedPointer>
#include <advanceddockingsystem/dockmanager.h>
namespace Core { namespace Core {
class SideBar; class SideBar;
class SideBarItem; class SideBarItem;
@@ -53,7 +56,7 @@ namespace Internal {
class DesignMode; class DesignMode;
class DocumentWidget; class DocumentWidget;
class DesignModeWidget : public QWidget class DesignModeWidget : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
@@ -75,17 +78,17 @@ public:
void enableWidgets(); void enableWidgets();
void disableWidgets(); void disableWidgets();
void switchTextOrForm();
CrumbleBar* crumbleBar() const; CrumbleBar* crumbleBar() const;
void showInternalTextEditor(); void showInternalTextEditor();
void restoreDefaultView(); void determineWorkspaceToRestoreAtStartup();
void toggleLeftSidebar();
void toggleRightSidebar();
static QWidget *createProjectExplorerWidget(QWidget *parent); static QWidget *createProjectExplorerWidget(QWidget *parent);
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
private: // functions private: // functions
enum InitializeStatus { NotInitialized, Initializing, Initialized }; enum InitializeStatus { NotInitialized, Initializing, Initialized };
@@ -99,12 +102,13 @@ private: // functions
QWidget *createCenterWidget(); QWidget *createCenterWidget();
QWidget *createCrumbleBarFrame(); QWidget *createCrumbleBarFrame();
void aboutToShowWorkspaces();
void createFactoryDefaultWorkspace();
private: // variables private: // variables
QSplitter *m_mainSplitter = nullptr;
SwitchSplitTabWidget* m_centralTabWidget = nullptr; SwitchSplitTabWidget* m_centralTabWidget = nullptr;
QScopedPointer<Core::SideBar> m_leftSideBar;
QScopedPointer<Core::SideBar> m_rightSideBar;
QPointer<QWidget> m_bottomSideBar; QPointer<QWidget> m_bottomSideBar;
Core::EditorToolBar *m_toolBar; Core::EditorToolBar *m_toolBar;
CrumbleBar *m_crumbleBar; CrumbleBar *m_crumbleBar;
@@ -118,6 +122,9 @@ private: // variables
bool m_keepNavigatorHistory = false; bool m_keepNavigatorHistory = false;
QList<QPointer<QWidget> >m_viewWidgets; QList<QPointer<QWidget> >m_viewWidgets;
ADS::DockManager *m_dockManager = nullptr;
ADS::DockWidget *m_outputPaneDockWidget = nullptr;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -2,7 +2,8 @@ QTC_PLUGIN_NAME = QmlDesigner
QTC_LIB_DEPENDS += \ QTC_LIB_DEPENDS += \
utils \ utils \
qmljs \ qmljs \
qmleditorwidgets qmleditorwidgets \
advanceddockingsystem
QTC_PLUGIN_DEPENDS += \ QTC_PLUGIN_DEPENDS += \
coreplugin \ coreplugin \
texteditor \ texteditor \

View File

@@ -56,6 +56,9 @@ const char QUICK_3D_ASSET_ICON_DIR[] = "_icons";
const char DEFAULT_ASSET_IMPORT_FOLDER[] = "/asset_imports"; const char DEFAULT_ASSET_IMPORT_FOLDER[] = "/asset_imports";
const char QT_QUICK_3D_MODULE_NAME[] = "QtQuick3D"; const char QT_QUICK_3D_MODULE_NAME[] = "QtQuick3D";
// Menus
const char M_WINDOW_WORKSPACES[] = "QmlDesigner.Menu.Window.Workspaces";
namespace Internal { namespace Internal {
enum { debug = 0 }; enum { debug = 0 };
} }

View File

@@ -15,6 +15,7 @@ Project {
"core-private", "quickwidgets" "core-private", "quickwidgets"
] ]
} }
Depends { name: "AdvancedDockingSystem" }
Depends { name: "Core" } Depends { name: "Core" }
Depends { name: "QmlJS" } Depends { name: "QmlJS" }
Depends { name: "QmlEditorWidgets" } Depends { name: "QmlEditorWidgets" }

View File

@@ -53,7 +53,6 @@
#include "qmldesignerconstants.h" #include "qmldesignerconstants.h"
#include "qmldesignerplugin.h" #include "qmldesignerplugin.h"
#include "designmodewidget.h"
#include <QApplication> #include <QApplication>
#include <QClipboard> #include <QClipboard>
@@ -71,10 +70,6 @@ ShortCutManager::ShortCutManager()
m_pasteAction(tr("&Paste")), m_pasteAction(tr("&Paste")),
m_selectAllAction(tr("Select &All")), m_selectAllAction(tr("Select &All")),
m_collapseExpandStatesAction(tr("Toggle States")), m_collapseExpandStatesAction(tr("Toggle States")),
m_restoreDefaultViewAction(tr("&Restore Default View")),
m_toggleLeftSidebarAction(tr("Toggle &Left Sidebar")),
m_toggleRightSidebarAction(tr("Toggle &Right Sidebar")),
m_switchTextFormAction(tr("Switch Text/Design")),
m_escapeAction(this) m_escapeAction(this)
{ {
@@ -101,26 +96,6 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
connect(&m_selectAllAction,&QAction::triggered, this, &ShortCutManager::selectAll); connect(&m_selectAllAction,&QAction::triggered, this, &ShortCutManager::selectAll);
connect(&m_restoreDefaultViewAction,
&QAction::triggered,
QmlDesignerPlugin::instance()->mainWidget(),
&Internal::DesignModeWidget::restoreDefaultView);
connect(&m_toggleLeftSidebarAction,
&QAction::triggered,
QmlDesignerPlugin::instance()->mainWidget(),
&Internal::DesignModeWidget::toggleLeftSidebar);
connect(&m_toggleRightSidebarAction,
&QAction::triggered,
QmlDesignerPlugin::instance()->mainWidget(),
&Internal::DesignModeWidget::toggleRightSidebar);
connect(&m_switchTextFormAction,
&QAction::triggered,
QmlDesignerPlugin::instance()->mainWidget(),
&Internal::DesignModeWidget::switchTextOrForm);
connect(&m_collapseExpandStatesAction, &QAction::triggered, [] { connect(&m_collapseExpandStatesAction, &QAction::triggered, [] {
QmlDesignerPlugin::instance()->viewManager().toggleStatesViewExpanded(); QmlDesignerPlugin::instance()->viewManager().toggleStatesViewExpanded();
}); });
@@ -216,21 +191,11 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
Core::ActionContainer *viewsMenu = Core::ActionManager::actionContainer(Core::Constants::M_WINDOW_VIEWS); Core::ActionContainer *viewsMenu = Core::ActionManager::actionContainer(Core::Constants::M_WINDOW_VIEWS);
Core::ActionManager::registerAction(&m_toggleLeftSidebarAction, Core::Constants::TOGGLE_LEFT_SIDEBAR, qmlDesignerMainContext);
Core::ActionManager::registerAction(&m_toggleRightSidebarAction, Core::Constants::TOGGLE_RIGHT_SIDEBAR, qmlDesignerMainContext);
command = Core::ActionManager::registerAction(&m_collapseExpandStatesAction, Constants::TOGGLE_STATES_EDITOR, qmlDesignerMainContext); command = Core::ActionManager::registerAction(&m_collapseExpandStatesAction, Constants::TOGGLE_STATES_EDITOR, qmlDesignerMainContext);
command->setAttribute(Core::Command::CA_Hide); command->setAttribute(Core::Command::CA_Hide);
command->setDefaultKeySequence(QKeySequence("Ctrl+Alt+s")); command->setDefaultKeySequence(QKeySequence("Ctrl+Alt+s"));
viewsMenu->addAction(command); viewsMenu->addAction(command);
command = Core::ActionManager::registerAction(&m_restoreDefaultViewAction, Constants::RESTORE_DEFAULT_VIEW, qmlDesignerMainContext);
command->setAttribute(Core::Command::CA_Hide);
viewsMenu->addAction(command);
command = Core::ActionManager::registerAction(&m_switchTextFormAction, QmlDesigner::Constants::SWITCH_TEXT_DESIGN, qmlDesignerMainContext);
command->setDefaultKeySequence(QKeySequence(Qt::Key_F4));
/* Registering disabled action for Escape, because Qt Quick does not support shortcut overrides. */ /* Registering disabled action for Escape, because Qt Quick does not support shortcut overrides. */
command = Core::ActionManager::registerAction(&m_escapeAction, Core::Constants::S_RETURNTOEDITOR, qmlDesignerMainContext); command = Core::ActionManager::registerAction(&m_escapeAction, Core::Constants::S_RETURNTOEDITOR, qmlDesignerMainContext);
command->setDefaultKeySequence(QKeySequence(Qt::Key_Escape)); command->setDefaultKeySequence(QKeySequence(Qt::Key_Escape));
@@ -326,16 +291,6 @@ void ShortCutManager::selectAll()
currentDesignDocument()->selectAll(); currentDesignDocument()->selectAll();
} }
void ShortCutManager::toggleLeftSidebar()
{
QmlDesignerPlugin::instance()->mainWidget()->toggleLeftSidebar();
}
void ShortCutManager::toggleRightSidebar()
{
QmlDesignerPlugin::instance()->mainWidget()->toggleRightSidebar();
}
void ShortCutManager::connectUndoActions(DesignDocument *designDocument) void ShortCutManager::connectUndoActions(DesignDocument *designDocument)
{ {
if (designDocument) { if (designDocument) {

View File

@@ -63,8 +63,6 @@ private:
void copySelected(); void copySelected();
void paste(); void paste();
void selectAll(); void selectAll();
void toggleLeftSidebar();
void toggleRightSidebar();
void undoAvailable(bool isAvailable); void undoAvailable(bool isAvailable);
void redoAvailable(bool isAvailable); void redoAvailable(bool isAvailable);
void goIntoComponent(); void goIntoComponent();
@@ -85,10 +83,6 @@ private:
QAction m_pasteAction; QAction m_pasteAction;
QAction m_selectAllAction; QAction m_selectAllAction;
QAction m_collapseExpandStatesAction; QAction m_collapseExpandStatesAction;
QAction m_restoreDefaultViewAction;
QAction m_toggleLeftSidebarAction;
QAction m_toggleRightSidebarAction;
QAction m_switchTextFormAction;
QAction m_escapeAction; QAction m_escapeAction;
}; };