ManifestNameHandler.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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 <AzCore/EBus/EBus.h>
  9. #include <AzToolsFramework/Debug/TraceContext.h>
  10. #include <SceneAPI/SceneUI/RowWidgets/ManifestNameHandler.h>
  11. namespace AZ
  12. {
  13. namespace SceneAPI
  14. {
  15. namespace SceneUI
  16. {
  17. AZ_CLASS_ALLOCATOR_IMPL(ManifestNameHandler, SystemAllocator);
  18. ManifestNameHandler* ManifestNameHandler::s_instance = nullptr;
  19. QWidget* ManifestNameHandler::CreateGUI(QWidget* parent)
  20. {
  21. ManifestNameWidget* instance = aznew ManifestNameWidget(parent);
  22. connect(instance, &ManifestNameWidget::valueChanged, this,
  23. [instance]()
  24. {
  25. EBUS_EVENT(AzToolsFramework::PropertyEditorGUIMessages::Bus, RequestWrite, instance);
  26. });
  27. return instance;
  28. }
  29. u32 ManifestNameHandler::GetHandlerName() const
  30. {
  31. return AZ_CRC_CE("ManifestName");
  32. }
  33. bool ManifestNameHandler::AutoDelete() const
  34. {
  35. return false;
  36. }
  37. void ManifestNameHandler::ConsumeAttribute(ManifestNameWidget* widget, u32 attrib,
  38. AzToolsFramework::PropertyAttributeReader* attrValue, const char* debugName)
  39. {
  40. AZ_TraceContext("Attribute name", debugName);
  41. if (attrib == AZ_CRC_CE("FilterType"))
  42. {
  43. ConsumeFilterTypeAttribute(widget, attrValue);
  44. }
  45. }
  46. void ManifestNameHandler::WriteGUIValuesIntoProperty(size_t /*index*/, ManifestNameWidget* GUI,
  47. property_t& instance, AzToolsFramework::InstanceDataNode* /*node*/)
  48. {
  49. instance = static_cast<property_t>(GUI->GetName());
  50. }
  51. bool ManifestNameHandler::ReadValuesIntoGUI(size_t /*index*/, ManifestNameWidget* GUI, const property_t& instance,
  52. AzToolsFramework::InstanceDataNode* /*node*/)
  53. {
  54. GUI->SetName(instance);
  55. return false;
  56. }
  57. void ManifestNameHandler::Register()
  58. {
  59. if (!s_instance)
  60. {
  61. s_instance = aznew ManifestNameHandler();
  62. EBUS_EVENT(AzToolsFramework::PropertyTypeRegistrationMessages::Bus, RegisterPropertyType, s_instance);
  63. }
  64. }
  65. void ManifestNameHandler::Unregister()
  66. {
  67. if (s_instance)
  68. {
  69. EBUS_EVENT(AzToolsFramework::PropertyTypeRegistrationMessages::Bus, UnregisterPropertyType, s_instance);
  70. delete s_instance;
  71. s_instance = nullptr;
  72. }
  73. }
  74. void ManifestNameHandler::ConsumeFilterTypeAttribute(ManifestNameWidget* widget,
  75. AzToolsFramework::PropertyAttributeReader* attrValue)
  76. {
  77. Uuid filterType;
  78. if (attrValue->Read<Uuid>(filterType))
  79. {
  80. widget->SetFilterType(filterType);
  81. }
  82. else
  83. {
  84. AZ_Assert(false, "Failed to read uuid from 'FilterType' attribute.");
  85. }
  86. }
  87. } // SceneUI
  88. } // SceneAPI
  89. } // AZ
  90. #include <RowWidgets/moc_ManifestNameHandler.cpp>