diff options
Diffstat (limited to 'src/theme_builder/components/conditions')
4 files changed, 43 insertions, 8 deletions
diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp index c53b2b69..b4f0b458 100644 --- a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp +++ b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp @@ -3,6 +3,7 @@ #include "ClickStateConditionEditor.h" #include "ConditionEditor.h" #include "FocusConditionEditor.h" +#include "NoConditionEditor.h" #include "cru/common/ClonablePtr.h" #include "cru/ui/style/Condition.h" @@ -32,13 +33,9 @@ CompoundConditionEditor::CompoundConditionEditor() { GetContainer()->AddChild(&children_container_); GetContainer()->AddChild(add_child_button_.GetRootControl()); add_child_button_.SetButtonText(u"+"); - add_child_button_.SetMenuItems({ - u"And Condtion", - u"Or Condtion", - u"Click State Condtion", - u"Focus Condtion", - u"Checked Condtion", - }); + add_child_button_.SetMenuItems({u"And Condition", u"Or Condition", + u"Click State Condition", u"Focus Condition", + u"Checked Condition", u"No Condition"}); add_child_button_.MenuItemSelectedEvent()->AddHandler([this](Index index) { std::unique_ptr<ConditionEditor> editor; switch (index) { @@ -57,6 +54,9 @@ CompoundConditionEditor::CompoundConditionEditor() { case 4: editor = std::make_unique<CheckedConditionEditor>(); break; + case 5: + editor = std::make_unique<NoConditionEditor>(); + break; default: break; } diff --git a/src/theme_builder/components/conditions/ConditionEditor.cpp b/src/theme_builder/components/conditions/ConditionEditor.cpp index f5edf674..8ffd33a5 100644 --- a/src/theme_builder/components/conditions/ConditionEditor.cpp +++ b/src/theme_builder/components/conditions/ConditionEditor.cpp @@ -3,6 +3,8 @@ #include "ClickStateConditionEditor.h" #include "CompoundConditionEditor.h" #include "FocusConditionEditor.h" +#include "NoConditionEditor.h" +#include "cru/common/Exception.h" #include "cru/ui/controls/FlexLayout.h" namespace cru::theme_builder::components::conditions { @@ -24,6 +26,10 @@ std::unique_ptr<ConditionEditor> CreateConditionEditor( auto result = std::make_unique<OrConditionEditor>(); result->SetValue(or_condition); return result; + } else if (auto no_condition = + dynamic_cast<ui::style::NoCondition*>(condition)) { + auto result = std::make_unique<NoConditionEditor>(); + return result; } else if (auto click_state_condition = dynamic_cast<ui::style::ClickStateCondition*>(condition)) { auto result = std::make_unique<ClickStateConditionEditor>(); @@ -40,7 +46,7 @@ std::unique_ptr<ConditionEditor> CreateConditionEditor( result->SetValue(checked_condition); return result; } else { - return nullptr; + throw Exception(u"Unknown condition type"); } } } // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/NoConditionEditor.cpp b/src/theme_builder/components/conditions/NoConditionEditor.cpp new file mode 100644 index 00000000..a5087159 --- /dev/null +++ b/src/theme_builder/components/conditions/NoConditionEditor.cpp @@ -0,0 +1,7 @@ +#include "NoConditionEditor.h" + +namespace cru::theme_builder::components::conditions { +NoConditionEditor::NoConditionEditor() { SetLabel(u"No condition"); } + +NoConditionEditor::~NoConditionEditor() {} +} // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/NoConditionEditor.h b/src/theme_builder/components/conditions/NoConditionEditor.h new file mode 100644 index 00000000..da5f99b0 --- /dev/null +++ b/src/theme_builder/components/conditions/NoConditionEditor.h @@ -0,0 +1,22 @@ +#pragma once +#include "ConditionEditor.h" +#include "cru/common/ClonablePtr.h" +#include "cru/ui/style/Condition.h" + +namespace cru::theme_builder::components::conditions { +class NoConditionEditor : public ConditionEditor { + public: + NoConditionEditor(); + ~NoConditionEditor() override; + + public: + ClonablePtr<ui::style::Condition> GetCondition() override { + return ui::style::NoCondition::Create(); + } + + IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; } + + private: + Event<std::nullptr_t> change_event_; +}; +} // namespace cru::theme_builder::components::conditions |
