3
0

MaterialCanvasMainWindow.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. #pragma once
  9. #if !defined(Q_MOC_RUN)
  10. #include <AtomToolsFramework/Document/AtomToolsDocumentInspector.h>
  11. #include <AtomToolsFramework/Document/AtomToolsDocumentMainWindow.h>
  12. #include <AtomToolsFramework/EntityPreviewViewport/EntityPreviewViewportSettingsInspector.h>
  13. #include <AtomToolsFramework/EntityPreviewViewport/EntityPreviewViewportToolBar.h>
  14. #include <AtomToolsFramework/EntityPreviewViewport/EntityPreviewViewportWidget.h>
  15. #include <AtomToolsFramework/Graph/GraphViewSettings.h>
  16. #include <AzCore/Component/ComponentApplicationBus.h>
  17. #include <GraphCanvas/Styling/StyleManager.h>
  18. #include <GraphCanvas/Widgets/Bookmarks/BookmarkDockWidget.h>
  19. #include <GraphCanvas/Widgets/MiniMapGraphicsView/MiniMapGraphicsView.h>
  20. #include <GraphCanvas/Widgets/NodePalette/NodePaletteDockWidget.h>
  21. #include <GraphCanvas/Widgets/NodePalette/NodePaletteWidget.h>
  22. #include <QTranslator>
  23. #endif
  24. namespace MaterialCanvas
  25. {
  26. //! MaterialCanvasMainWindow creates and manages all of the graph canvas and viewport related docked windows for Material Canvas.
  27. class MaterialCanvasMainWindow : public AtomToolsFramework::AtomToolsDocumentMainWindow
  28. {
  29. Q_OBJECT
  30. public:
  31. AZ_CLASS_ALLOCATOR(MaterialCanvasMainWindow, AZ::SystemAllocator);
  32. using Base = AtomToolsFramework::AtomToolsDocumentMainWindow;
  33. MaterialCanvasMainWindow(
  34. const AZ::Crc32& toolId, AtomToolsFramework::GraphViewSettingsPtr graphViewSettingsPtr, QWidget* parent = 0);
  35. ~MaterialCanvasMainWindow() = default;
  36. protected:
  37. // AtomToolsFramework::AtomToolsMainWindowRequestBus::Handler overrides...
  38. void ResizeViewportRenderTarget(uint32_t width, uint32_t height) override;
  39. void LockViewportRenderTargetSize(uint32_t width, uint32_t height) override;
  40. void UnlockViewportRenderTargetSize() override;
  41. // AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler overrides...
  42. void OnDocumentOpened(const AZ::Uuid& documentId) override;
  43. // AtomToolsFramework::AtomToolsDocumentMainWindow overrides...
  44. void PopulateSettingsInspector(AtomToolsFramework::InspectorWidget* inspector) const override;
  45. void OnSettingsDialogClosed() override;
  46. AZStd::string GetHelpUrl() const override;
  47. private:
  48. AtomToolsFramework::AtomToolsDocumentInspector* m_documentInspector = {};
  49. AtomToolsFramework::EntityPreviewViewportSettingsInspector* m_viewportSettingsInspector = {};
  50. AtomToolsFramework::EntityPreviewViewportToolBar* m_toolBar = {};
  51. AtomToolsFramework::EntityPreviewViewportWidget* m_materialViewport = {};
  52. AtomToolsFramework::GraphViewSettingsPtr m_graphViewSettingsPtr;
  53. GraphCanvas::BookmarkDockWidget* m_bookmarkDockWidget = {};
  54. GraphCanvas::NodePaletteDockWidget* m_nodePalette = {};
  55. GraphCanvas::StyleManager m_styleManager;
  56. QTranslator m_translator;
  57. mutable AZStd::shared_ptr<AtomToolsFramework::DynamicPropertyGroup> m_materialCanvasCompileSettingsGroup;
  58. };
  59. } // namespace MaterialCanvas