CommentNodeTextComponent.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. AZ_PUSH_DISABLE_WARNING(4251 4800 4244, "-Wunknown-warning-option")
  10. #include <QGraphicsGridLayout>
  11. #include <QGraphicsLinearLayout>
  12. #include <QGraphicsProxyWidget>
  13. #include <QGraphicsWidget>
  14. #include <QPlainTextEdit>
  15. #include <QTimer>
  16. AZ_POP_DISABLE_WARNING
  17. #include <AzCore/Component/Component.h>
  18. #include <AzCore/Math/Color.h>
  19. #include <AzCore/RTTI/TypeInfo.h>
  20. #include <Components/Nodes/General/GeneralNodeLayoutComponent.h>
  21. #include <GraphCanvas/Components/EntitySaveDataBus.h>
  22. #include <GraphCanvas/Components/GraphCanvasPropertyBus.h>
  23. #include <GraphCanvas/Components/Nodes/Comment/CommentBus.h>
  24. #include <GraphCanvas/Components/Nodes/NodeLayoutBus.h>
  25. #include <GraphCanvas/Components/SceneBus.h>
  26. #include <GraphCanvas/Components/Slots/Data/DataSlotBus.h>
  27. #include <GraphCanvas/Types/EntitySaveData.h>
  28. #include <Widgets/GraphCanvasLabel.h>
  29. #include <Widgets/NodePropertyDisplayWidget.h>
  30. class QGraphicsGridLayout;
  31. namespace GraphCanvas
  32. {
  33. class CommentTextGraphicsWidget;
  34. class CommentNodeTextComponent
  35. : public GraphCanvasPropertyComponent
  36. , public NodeNotificationBus::Handler
  37. , public CommentRequestBus::Handler
  38. , public CommentLayoutRequestBus::Handler
  39. , public EntitySaveDataRequestBus::Handler
  40. , public CommentNodeTextSaveDataInterface
  41. {
  42. public:
  43. AZ_COMPONENT(CommentNodeTextComponent, "{15C568B0-425C-4655-814D-0A299341F757}", GraphCanvasPropertyComponent);
  44. static void Reflect(AZ::ReflectContext*);
  45. CommentNodeTextComponent();
  46. CommentNodeTextComponent(AZStd::string_view initialText);
  47. ~CommentNodeTextComponent() = default;
  48. // AZ::Component
  49. static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
  50. {
  51. provided.push_back(AZ_CRC("GraphCanvas_CommentTextService", 0xb650db99));
  52. }
  53. static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incombatible)
  54. {
  55. incombatible.push_back(AZ_CRC("GraphCanvas_CommentTextService", 0xb650db99));
  56. }
  57. static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent)
  58. {
  59. (void)dependent;
  60. }
  61. static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required)
  62. {
  63. required.push_back(AZ_CRC("GraphCanvas_StyledGraphicItemService", 0xeae4cdf4));
  64. required.push_back(AZ_CRC("GraphCanvas_SceneMemberService", 0xe9759a2d));
  65. }
  66. void Init() override;
  67. void Activate() override;
  68. void Deactivate() override;
  69. ////
  70. // NodeNotification
  71. void OnAddedToScene(const AZ::EntityId&) override;
  72. ////
  73. // CommentRequestBus
  74. void SetComment(const AZStd::string& comment) override;
  75. const AZStd::string& GetComment() const override;
  76. void SetCommentMode(CommentMode commentMode) override;
  77. void SetBackgroundColor(const AZ::Color& color) override;
  78. AZ::Color GetBackgroundColor() const override;
  79. ////
  80. // CommentNodeTextSaveDataInterface
  81. CommentMode GetCommentMode() const override;
  82. ////
  83. // CommentLayoutRequestBus
  84. QGraphicsLayoutItem* GetGraphicsLayoutItem() override;
  85. ////
  86. // EntitySaveDataRequestBus
  87. void WriteSaveData(EntitySaveDataContainer& saveDataContainer) const override;
  88. void ReadSaveData(const EntitySaveDataContainer& saveDataContainer) override;
  89. void ApplyPresetData(const EntitySaveDataContainer& saveDataContainer) override;
  90. ////
  91. protected:
  92. // CommentNodeTextSaveDataInterface
  93. void OnCommentChanged() override;
  94. void OnBackgroundColorChanged() override;
  95. void UpdateStyleOverrides() override;
  96. ////
  97. private:
  98. CommentNodeTextComponent(const CommentNodeTextComponent&) = delete;
  99. CommentMode m_commentMode;
  100. CommentNodeTextSaveData m_saveData;
  101. CommentTextGraphicsWidget* m_commentTextWidget;
  102. };
  103. }
  104. namespace AZ
  105. {
  106. AZ_TYPE_INFO_SPECIALIZE(Qt::AlignmentFlag, "{8CCC83B0-F267-49FE-A9B7-8065F5869E91}")
  107. AZ_TYPE_INFO_SPECIALIZE(QFont::Style, "{49E7569D-19FE-4BC2-8242-D5DCF5454137}");
  108. AZ_TYPE_INFO_SPECIALIZE(QFont::Capitalization, "{37EDD868-C58E-4C21-840A-3CE4714CEEA3}");
  109. }