/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include namespace AtomToolsFramework { SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent) { setWindowTitle("Settings"); setLayout(new QVBoxLayout(this)); setModal(true); m_inspectorWidget = new InspectorWidget(this); layout()->addWidget(m_inspectorWidget); // Create the bottom row of the dialog with action buttons auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, this); QObject::connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); QObject::connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); layout()->addWidget(buttonBox); } InspectorWidget* SettingsDialog::GetInspector() { return m_inspectorWidget; } AZStd::shared_ptr CreateSettingsPropertyGroup( const AZStd::string& displayName, const AZStd::string& description, AZStd::vector properties, AZStd::vector> groups) { auto group = aznew DynamicPropertyGroup(); group->m_name = displayName; group->m_displayName = displayName; group->m_description = description; group->m_properties = properties; group->m_groups = groups; return AZStd::shared_ptr(group); } DynamicProperty CreateSettingsPropertyValue( const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const AZStd::string& defaultValue) { DynamicPropertyConfig config; config.m_id = id; config.m_name = displayName; config.m_displayName = displayName; config.m_description = description; config.m_defaultValue = config.m_originalValue = config.m_parentValue = GetSettingsValue(id, defaultValue); config.m_dataChangeCallback = [id](const AZStd::any& value) { SetSettingsValue(id, AZStd::any_cast(value)); return AZ::Edit::PropertyRefreshLevels::AttributesAndValues; }; return DynamicProperty(config); } DynamicProperty CreateSettingsPropertyValue( const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const bool& defaultValue) { DynamicPropertyConfig config; config.m_id = id; config.m_name = displayName; config.m_displayName = displayName; config.m_description = description; config.m_defaultValue = config.m_originalValue = config.m_parentValue = GetSettingsValue(id, defaultValue); config.m_dataChangeCallback = [id](const AZStd::any& value) { SetSettingsValue(id, AZStd::any_cast(value)); return AZ::Edit::PropertyRefreshLevels::AttributesAndValues; }; return DynamicProperty(config); } DynamicProperty CreateSettingsPropertyValue( const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const double& defaultValue, const double& minValue, const double& maxValue) { DynamicPropertyConfig config; config.m_id = id; config.m_name = displayName; config.m_displayName = displayName; config.m_description = description; config.m_min = aznumeric_cast(minValue); config.m_max = aznumeric_cast(maxValue); config.m_defaultValue = config.m_originalValue = config.m_parentValue = aznumeric_cast(GetSettingsValue(id, defaultValue)); config.m_dataChangeCallback = [id](const AZStd::any& value) { SetSettingsValue(id, aznumeric_cast(AZStd::any_cast(value))); return AZ::Edit::PropertyRefreshLevels::AttributesAndValues; }; return DynamicProperty(config); } DynamicProperty CreateSettingsPropertyValue( const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const AZ::u64& defaultValue, const AZ::u64& minValue, const AZ::u64& maxValue) { DynamicPropertyConfig config; config.m_id = id; config.m_name = displayName; config.m_displayName = displayName; config.m_description = description; config.m_min = aznumeric_cast(minValue); config.m_max = aznumeric_cast(maxValue); config.m_defaultValue = config.m_originalValue = config.m_parentValue = aznumeric_cast(GetSettingsValue(id, defaultValue)); config.m_dataChangeCallback = [id](const AZStd::any& value) { SetSettingsValue(id, aznumeric_cast(AZStd::any_cast(value))); return AZ::Edit::PropertyRefreshLevels::AttributesAndValues; }; return DynamicProperty(config); } DynamicProperty CreateSettingsPropertyValue( const AZStd::string& id, const AZStd::string& displayName, const AZStd::string& description, const AZ::s64& defaultValue, const AZ::s64& minValue, const AZ::s64& maxValue) { DynamicPropertyConfig config; config.m_id = id; config.m_name = displayName; config.m_displayName = displayName; config.m_description = description; config.m_min = aznumeric_cast(minValue); config.m_max = aznumeric_cast(maxValue); config.m_defaultValue = config.m_originalValue = config.m_parentValue = aznumeric_cast(GetSettingsValue(id, defaultValue)); config.m_dataChangeCallback = [id](const AZStd::any& value) { SetSettingsValue(id, aznumeric_cast(AZStd::any_cast(value))); return AZ::Edit::PropertyRefreshLevels::AttributesAndValues; }; return DynamicProperty(config); } } // namespace AtomToolsFramework