NodePropertyDisplayWidget.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. #include <QGraphicsWidget>
  10. #include <QGraphicsLayoutItem>
  11. #include <QTimer>
  12. #include <AzCore/Component/EntityId.h>
  13. #include <GraphCanvas/Components/Nodes/NodeUIBus.h>
  14. #include <GraphCanvas/Components/Slots/SlotBus.h>
  15. #include <GraphCanvas/Components/SceneBus.h>
  16. #include <GraphCanvas/Components/VisualBus.h>
  17. #include <GraphCanvas/Widgets/NodePropertyBus.h>
  18. class QGraphicsLayoutItem;
  19. class QGraphicsLinearLayout;
  20. namespace GraphCanvas
  21. {
  22. class NodePropertyDisplayWidget
  23. : public QGraphicsWidget
  24. , public RootGraphicsItemNotificationBus::Handler
  25. , public NodePropertiesRequestBus::Handler
  26. , public NodePropertyRequestBus::Handler
  27. {
  28. public:
  29. AZ_CLASS_ALLOCATOR(NodePropertyDisplayWidget, AZ::SystemAllocator);
  30. NodePropertyDisplayWidget(QGraphicsItem* parent = nullptr);
  31. ~NodePropertyDisplayWidget() override;
  32. void RefreshStyle();
  33. // RootGraphicsItemNotificationBus
  34. void OnDisplayStateChanged(RootGraphicsItemDisplayState oldState, RootGraphicsItemDisplayState newState) override;
  35. ////
  36. // NodePropertiesRequestBus
  37. void LockEditState(NodePropertyDisplay* propertyDisplay) override;
  38. void UnlockEditState(NodePropertyDisplay* propertyDisplay) override;
  39. void ForceLayoutState(NodePropertyLayoutState layoutState) override;
  40. ////
  41. // NodePropertyRequestBus
  42. void SetDisabled(bool disabled) override;
  43. void SetNodePropertyDisplay(NodePropertyDisplay* nodePropertyDisplay) override;
  44. NodePropertyDisplay* GetNodePropertyDisplay() const override;
  45. ////
  46. void ClearDisplay();
  47. private:
  48. void ClearLayout();
  49. void UpdateLayout(bool forceUpdate = false);
  50. void UpdateGeometry();
  51. NodePropertyDisplay* m_nodePropertyDisplay;
  52. QGraphicsLayoutItem* m_layoutItem;
  53. QGraphicsLinearLayout* m_layout;
  54. bool m_disabled;
  55. bool m_editing;
  56. NodePropertyLayoutState m_forcedLayout;
  57. QTimer m_layoutTimer;
  58. AZStd::unordered_set<NodePropertyDisplay*> m_forceEditSet;
  59. };
  60. }