// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "editorwidget.h" #include "formeditor.h" #include "formeditorstack.h" #include #include #include using namespace Designer::Constants; namespace Designer { namespace Internal { // ---------- EditorWidget EditorWidget::EditorWidget(QWidget *parent) : Utils::FancyMainWindow(parent), m_stack(new FormEditorStack) { setObjectName("EditorWidget"); setCentralWidget(m_stack); setDocumentMode(true); setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::South); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); QWidget * const * subs = designerSubWindows(); for (int i = 0; i < DesignerSubWindowCount; i++) { QWidget *subWindow = subs[i]; subWindow->setWindowTitle(subs[i]->windowTitle()); m_designerDockWidgets[i] = addDockForWidget(subWindow); // Since we have 1-pixel splitters, we generally want to remove // frames around item views. So we apply this hack for now. QList frames = subWindow->findChildren(); for (int i = 0 ; i< frames.count(); ++i) frames[i]->setFrameStyle(QFrame::NoFrame); } resetToDefaultLayout(); } void EditorWidget::resetToDefaultLayout() { setTrackingEnabled(false); const QList dockWidgetList = dockWidgets(); for (QDockWidget *dockWidget : dockWidgetList) { dockWidget->setFloating(false); removeDockWidget(dockWidget); } addDockWidget(Qt::LeftDockWidgetArea, m_designerDockWidgets[WidgetBoxSubWindow]); addDockWidget(Qt::RightDockWidgetArea, m_designerDockWidgets[ObjectInspectorSubWindow]); addDockWidget(Qt::RightDockWidgetArea, m_designerDockWidgets[PropertyEditorSubWindow]); addDockWidget(Qt::BottomDockWidgetArea, m_designerDockWidgets[ActionEditorSubWindow]); addDockWidget(Qt::BottomDockWidgetArea, m_designerDockWidgets[SignalSlotEditorSubWindow]); tabifyDockWidget(m_designerDockWidgets[ActionEditorSubWindow], m_designerDockWidgets[SignalSlotEditorSubWindow]); for (QDockWidget *dockWidget : dockWidgetList) dockWidget->show(); setTrackingEnabled(true); } QDockWidget* const* EditorWidget::designerDockWidgets() const { return m_designerDockWidgets; } void EditorWidget::add(SharedTools::WidgetHost *widgetHost, FormWindowEditor *formWindowEditor) { EditorData data; data.formWindowEditor = formWindowEditor; data.widgetHost = widgetHost; m_stack->add(data); } void EditorWidget::removeFormWindowEditor(Core::IEditor *xmlEditor) { m_stack->removeFormWindowEditor(xmlEditor); } bool EditorWidget::setVisibleEditor(Core::IEditor *xmlEditor) { return m_stack->setVisibleEditor(xmlEditor); } SharedTools::WidgetHost *EditorWidget::formWindowEditorForXmlEditor(const Core::IEditor *xmlEditor) const { return m_stack->formWindowEditorForXmlEditor(xmlEditor); } EditorData EditorWidget::activeEditor() const { return m_stack->activeEditor(); } SharedTools::WidgetHost *EditorWidget::formWindowEditorForFormWindow(const QDesignerFormWindowInterface *fw) const { return m_stack->formWindowEditorForFormWindow(fw); } } // namespace Internal } // namespace Designer