QComponentEntityEditorMainWindow.cpp 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "UI/QComponentEntityEditorMainWindow.h"
  9. #include <AzCore/Component/Entity.h>
  10. #include <AzCore/Component/ComponentApplicationBus.h>
  11. #include <AzToolsFramework/UI/PropertyEditor/ReflectedPropertyEditor.hxx>
  12. #include <AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx>
  13. #include <QCloseEvent>
  14. #include <QVBoxLayout>
  15. QComponentEntityEditorInspectorWindow::QComponentEntityEditorInspectorWindow(QWidget* parent)
  16. : QMainWindow(parent)
  17. , m_propertyEditor(nullptr)
  18. , m_assetBrowserInspector(nullptr)
  19. , m_inspectorWidgetStack(nullptr)
  20. {
  21. setObjectName("InspectorMainWindow");
  22. gEnv->pSystem->GetISystemEventDispatcher()->RegisterListener(this);
  23. AzToolsFramework::ToolsApplicationNotificationBus::Handler::BusConnect();
  24. AzToolsFramework::AssetBrowser::AssetBrowserPreviewRequestBus::Handler::BusConnect();
  25. Init();
  26. }
  27. QComponentEntityEditorInspectorWindow::~QComponentEntityEditorInspectorWindow()
  28. {
  29. AzToolsFramework::AssetBrowser::AssetBrowserPreviewRequestBus::Handler::BusDisconnect();
  30. AzToolsFramework::ToolsApplicationNotificationBus::Handler::BusDisconnect();
  31. gEnv->pSystem->GetISystemEventDispatcher()->RemoveListener(this);
  32. }
  33. void QComponentEntityEditorInspectorWindow::closeEvent(QCloseEvent* ev)
  34. {
  35. if (m_assetBrowserInspector && m_assetBrowserInspector->HasUnsavedChanges())
  36. {
  37. ev->ignore();
  38. return;
  39. }
  40. ev->accept();
  41. }
  42. void QComponentEntityEditorInspectorWindow::OnSystemEvent([[maybe_unused]] ESystemEvent event, [[maybe_unused]] UINT_PTR wparam, [[maybe_unused]] UINT_PTR lparam)
  43. {
  44. }
  45. void QComponentEntityEditorInspectorWindow::AfterEntitySelectionChanged(
  46. [[maybe_unused]] const AzToolsFramework::EntityIdList& newlySelectedEntities,
  47. [[maybe_unused]] const AzToolsFramework::EntityIdList& newlyDeselectedEntities)
  48. {
  49. if (m_inspectorWidgetStack->currentWidget() != m_propertyEditor && !m_propertyEditor->IsLockedToSpecificEntities())
  50. {
  51. m_inspectorWidgetStack->setCurrentIndex(m_inspectorWidgetStack->indexOf(m_propertyEditor));
  52. }
  53. }
  54. void QComponentEntityEditorInspectorWindow::PreviewAsset([[maybe_unused]] const AzToolsFramework::AssetBrowser::AssetBrowserEntry* selectedEntry)
  55. {
  56. if (m_inspectorWidgetStack->currentWidget() != m_assetBrowserInspector && !m_propertyEditor->IsLockedToSpecificEntities())
  57. {
  58. m_inspectorWidgetStack->setCurrentIndex(m_inspectorWidgetStack->indexOf(m_assetBrowserInspector));
  59. }
  60. }
  61. void QComponentEntityEditorInspectorWindow::Init()
  62. {
  63. QVBoxLayout* layout = new QVBoxLayout();
  64. m_inspectorWidgetStack = new QStackedWidget();
  65. m_inspectorWidgetStack->setContentsMargins(0, 0, 0, 0);
  66. m_propertyEditor = new AzToolsFramework::EntityPropertyEditor(this);
  67. m_assetBrowserInspector = new AzToolsFramework::AssetBrowser::AssetBrowserEntityInspectorWidget(this);
  68. m_inspectorWidgetStack->addWidget(m_propertyEditor);
  69. m_inspectorWidgetStack->addWidget(m_assetBrowserInspector);
  70. layout->addWidget(m_inspectorWidgetStack);
  71. QWidget* window = new QWidget();
  72. window->setLayout(layout);
  73. setCentralWidget(window);
  74. }
  75. ///////////////////////////////////////////////////////////////////////////////
  76. // End of context menu handling
  77. ///////////////////////////////////////////////////////////////////////////////
  78. #include <UI/moc_QComponentEntityEditorMainWindow.cpp>