3
0

SettingsDialog.cpp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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 <AtomToolsFramework/SettingsDialog/SettingsDialog.h>
  9. #include <QDialogButtonBox>
  10. #include <QVBoxLayout>
  11. namespace AtomToolsFramework
  12. {
  13. SettingsDialog::SettingsDialog(QWidget* parent)
  14. : QDialog(parent)
  15. {
  16. setWindowTitle("Settings");
  17. setLayout(new QVBoxLayout(this));
  18. setModal(true);
  19. m_inspectorWidget = new InspectorWidget(this);
  20. layout()->addWidget(m_inspectorWidget);
  21. // Create the bottom row of the dialog with action buttons
  22. auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, this);
  23. QObject::connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
  24. QObject::connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
  25. layout()->addWidget(buttonBox);
  26. }
  27. InspectorWidget* SettingsDialog::GetInspector()
  28. {
  29. return m_inspectorWidget;
  30. }
  31. AZStd::shared_ptr<DynamicPropertyGroup> CreateSettingsPropertyGroup(
  32. const AZStd::string& displayName,
  33. const AZStd::string& description,
  34. AZStd::vector<DynamicProperty> properties,
  35. AZStd::vector<AZStd::shared_ptr<DynamicPropertyGroup>> groups)
  36. {
  37. auto group = aznew DynamicPropertyGroup();
  38. group->m_name = displayName;
  39. group->m_displayName = displayName;
  40. group->m_description = description;
  41. group->m_properties = properties;
  42. group->m_groups = groups;
  43. return AZStd::shared_ptr<DynamicPropertyGroup>(group);
  44. }
  45. DynamicProperty CreateSettingsPropertyValue(
  46. const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const AZStd::string& defaultValue)
  47. {
  48. DynamicPropertyConfig config;
  49. config.m_id = id;
  50. config.m_name = displayName;
  51. config.m_displayName = displayName;
  52. config.m_description = description;
  53. config.m_defaultValue = config.m_originalValue = config.m_parentValue = GetSettingsValue<AZStd::string>(id, defaultValue);
  54. config.m_dataChangeCallback = [id](const AZStd::any& value)
  55. {
  56. SetSettingsValue<AZStd::string>(id, AZStd::any_cast<AZStd::string>(value));
  57. return AZ::Edit::PropertyRefreshLevels::AttributesAndValues;
  58. };
  59. return DynamicProperty(config);
  60. }
  61. DynamicProperty CreateSettingsPropertyValue(
  62. const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const bool& defaultValue)
  63. {
  64. DynamicPropertyConfig config;
  65. config.m_id = id;
  66. config.m_name = displayName;
  67. config.m_displayName = displayName;
  68. config.m_description = description;
  69. config.m_defaultValue = config.m_originalValue = config.m_parentValue = GetSettingsValue<bool>(id, defaultValue);
  70. config.m_dataChangeCallback = [id](const AZStd::any& value)
  71. {
  72. SetSettingsValue<bool>(id, AZStd::any_cast<bool>(value));
  73. return AZ::Edit::PropertyRefreshLevels::AttributesAndValues;
  74. };
  75. return DynamicProperty(config);
  76. }
  77. DynamicProperty CreateSettingsPropertyValue(
  78. const AZStd::string& id,
  79. const AZStd::string& displayName,
  80. const AZStd::string& description,
  81. const double& defaultValue,
  82. const double& minValue,
  83. const double& maxValue)
  84. {
  85. DynamicPropertyConfig config;
  86. config.m_id = id;
  87. config.m_name = displayName;
  88. config.m_displayName = displayName;
  89. config.m_description = description;
  90. config.m_min = aznumeric_cast<float>(minValue);
  91. config.m_max = aznumeric_cast<float>(maxValue);
  92. config.m_defaultValue = config.m_originalValue = config.m_parentValue =
  93. aznumeric_cast<float>(GetSettingsValue<double>(id, defaultValue));
  94. config.m_dataChangeCallback = [id](const AZStd::any& value)
  95. {
  96. SetSettingsValue<double>(id, aznumeric_cast<double>(AZStd::any_cast<float>(value)));
  97. return AZ::Edit::PropertyRefreshLevels::AttributesAndValues;
  98. };
  99. return DynamicProperty(config);
  100. }
  101. DynamicProperty CreateSettingsPropertyValue(
  102. const AZStd::string& id,
  103. const AZStd::string& displayName,
  104. const AZStd::string& description,
  105. const AZ::u64& defaultValue,
  106. const AZ::u64& minValue,
  107. const AZ::u64& maxValue)
  108. {
  109. DynamicPropertyConfig config;
  110. config.m_id = id;
  111. config.m_name = displayName;
  112. config.m_displayName = displayName;
  113. config.m_description = description;
  114. config.m_min = aznumeric_cast<AZ::u32>(minValue);
  115. config.m_max = aznumeric_cast<AZ::u32>(maxValue);
  116. config.m_defaultValue = config.m_originalValue = config.m_parentValue =
  117. aznumeric_cast<AZ::u32>(GetSettingsValue<AZ::u64>(id, defaultValue));
  118. config.m_dataChangeCallback = [id](const AZStd::any& value)
  119. {
  120. SetSettingsValue<AZ::u64>(id, aznumeric_cast<AZ::u64>(AZStd::any_cast<AZ::u32>(value)));
  121. return AZ::Edit::PropertyRefreshLevels::AttributesAndValues;
  122. };
  123. return DynamicProperty(config);
  124. }
  125. DynamicProperty CreateSettingsPropertyValue(
  126. const AZStd::string& id,
  127. const AZStd::string& displayName,
  128. const AZStd::string& description,
  129. const AZ::s64& defaultValue,
  130. const AZ::s64& minValue,
  131. const AZ::s64& maxValue)
  132. {
  133. DynamicPropertyConfig config;
  134. config.m_id = id;
  135. config.m_name = displayName;
  136. config.m_displayName = displayName;
  137. config.m_description = description;
  138. config.m_min = aznumeric_cast<AZ::s32>(minValue);
  139. config.m_max = aznumeric_cast<AZ::s32>(maxValue);
  140. config.m_defaultValue = config.m_originalValue = config.m_parentValue =
  141. aznumeric_cast<AZ::s32>(GetSettingsValue<AZ::s64>(id, defaultValue));
  142. config.m_dataChangeCallback = [id](const AZStd::any& value)
  143. {
  144. SetSettingsValue<AZ::s64>(id, aznumeric_cast<AZ::s64>(AZStd::any_cast<AZ::s32>(value)));
  145. return AZ::Edit::PropertyRefreshLevels::AttributesAndValues;
  146. };
  147. return DynamicProperty(config);
  148. }
  149. } // namespace AtomToolsFramework