/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include #include namespace AtomToolsFramework { AtomToolsMainWindow::AtomToolsMainWindow(QWidget* parent) : AzQtComponents::DockMainWindow(parent) { m_advancedDockManager = new AzQtComponents::FancyDocking(this); setDockNestingEnabled(true); setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); m_statusMessage = new QLabel(statusBar()); statusBar()->addPermanentWidget(m_statusMessage, 1); auto menuBar = new QMenuBar(this); menuBar->setObjectName("MenuBar"); setMenuBar(menuBar); auto centralWidget = new QWidget(this); auto centralWidgetLayout = new QVBoxLayout(centralWidget); centralWidgetLayout->setMargin(0); centralWidgetLayout->setContentsMargins(0, 0, 0, 0); centralWidget->setLayout(centralWidgetLayout); setCentralWidget(centralWidget); AtomToolsMainWindowRequestBus::Handler::BusConnect(); } AtomToolsMainWindow::~AtomToolsMainWindow() { AtomToolsMainWindowRequestBus::Handler::BusDisconnect(); } void AtomToolsMainWindow::ActivateWindow() { activateWindow(); raise(); } bool AtomToolsMainWindow::AddDockWidget(const AZStd::string& name, QWidget* widget, uint32_t area, uint32_t orientation) { auto dockWidgetItr = m_dockWidgets.find(name); if (dockWidgetItr != m_dockWidgets.end() || !widget) { return false; } auto dockWidget = new AzQtComponents::StyledDockWidget(name.c_str()); dockWidget->setObjectName(QString("%1_DockWidget").arg(name.c_str())); dockWidget->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); widget->setObjectName(name.c_str()); widget->setParent(dockWidget); widget->setMinimumSize(QSize(300, 300)); dockWidget->setWidget(widget); addDockWidget(aznumeric_cast(area), dockWidget); resizeDocks({ dockWidget }, { 400 }, aznumeric_cast(orientation)); m_dockWidgets[name] = dockWidget; return true; } void AtomToolsMainWindow::RemoveDockWidget(const AZStd::string& name) { auto dockWidgetItr = m_dockWidgets.find(name); if (dockWidgetItr != m_dockWidgets.end()) { delete dockWidgetItr->second; m_dockWidgets.erase(dockWidgetItr); } } void AtomToolsMainWindow::SetDockWidgetVisible(const AZStd::string& name, bool visible) { auto dockWidgetItr = m_dockWidgets.find(name); if (dockWidgetItr != m_dockWidgets.end()) { dockWidgetItr->second->setVisible(visible); } } bool AtomToolsMainWindow::IsDockWidgetVisible(const AZStd::string& name) const { auto dockWidgetItr = m_dockWidgets.find(name); if (dockWidgetItr != m_dockWidgets.end()) { return dockWidgetItr->second->isVisible(); } return false; } AZStd::vector AtomToolsMainWindow::GetDockWidgetNames() const { AZStd::vector names; names.reserve(m_dockWidgets.size()); for (const auto& dockWidgetPair : m_dockWidgets) { names.push_back(dockWidgetPair.first); } return names; } void AtomToolsMainWindow::SetStatusMessage(const QString& message) { m_statusMessage->setText(QString("%1").arg(message)); } void AtomToolsMainWindow::SetStatusWarning(const QString& message) { m_statusMessage->setText(QString("%1").arg(message)); } void AtomToolsMainWindow::SetStatusError(const QString& message) { m_statusMessage->setText(QString("%1").arg(message)); } } // namespace AtomToolsFramework