From 673f1939beb1b477a23d9641a07a2e05fff903b4 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 26 Feb 2022 20:12:54 +0800 Subject: ... --- src/theme_builder/CMakeLists.txt | 2 ++ .../components/stylers/MarginStylerEditor.cpp | 28 ++++++++++++++++++++++ .../components/stylers/MarginStylerEditor.h | 25 +++++++++++++++++++ .../components/stylers/PaddingStylerEditor.cpp | 28 ++++++++++++++++++++++ .../components/stylers/PaddingStylerEditor.h | 25 +++++++++++++++++++ .../components/stylers/StylerEditor.cpp | 12 ++++++++++ 6 files changed, 120 insertions(+) create mode 100644 src/theme_builder/components/stylers/MarginStylerEditor.cpp create mode 100644 src/theme_builder/components/stylers/MarginStylerEditor.h create mode 100644 src/theme_builder/components/stylers/PaddingStylerEditor.cpp create mode 100644 src/theme_builder/components/stylers/PaddingStylerEditor.h (limited to 'src/theme_builder') diff --git a/src/theme_builder/CMakeLists.txt b/src/theme_builder/CMakeLists.txt index 709c4d76..40d23c4a 100644 --- a/src/theme_builder/CMakeLists.txt +++ b/src/theme_builder/CMakeLists.txt @@ -21,6 +21,8 @@ add_executable(cru_theme_builder components/stylers/BorderStylerEditor.cpp components/stylers/CompoundStylerEditor.cpp components/stylers/CursorStylerEditor.cpp + components/stylers/MarginStylerEditor.cpp + components/stylers/PaddingStylerEditor.cpp components/stylers/PreferredSizeStylerEditor.cpp components/stylers/StylerEditor.cpp ) diff --git a/src/theme_builder/components/stylers/MarginStylerEditor.cpp b/src/theme_builder/components/stylers/MarginStylerEditor.cpp new file mode 100644 index 00000000..d7d89acb --- /dev/null +++ b/src/theme_builder/components/stylers/MarginStylerEditor.cpp @@ -0,0 +1,28 @@ +#include "MarginStylerEditor.h" +#include "cru/ui/style/Styler.h" + +namespace cru::theme_builder::components::stylers { +MarginStylerEditor::MarginStylerEditor() { + SetLabel(u"Margin Styler"); + GetContainer()->AddChild(thickness_editor_.GetRootControl()); + + thickness_editor_.SetLabel(u"Thickness"); + + ConnectChangeEvent(thickness_editor_); +} + +MarginStylerEditor::~MarginStylerEditor() {} + +ClonablePtr MarginStylerEditor::GetValue() { + return ui::style::MarginStyler::Create(thickness_editor_.GetValue()); +} + +void MarginStylerEditor::SetValue(ui::style::MarginStyler* styler, + bool trigger_change) { + thickness_editor_.SetValue(styler->GetMargin(), false); + + if (trigger_change) { + RaiseChangeEvent(); + } +} +} // namespace cru::theme_builder::components::stylers diff --git a/src/theme_builder/components/stylers/MarginStylerEditor.h b/src/theme_builder/components/stylers/MarginStylerEditor.h new file mode 100644 index 00000000..9de6f1a2 --- /dev/null +++ b/src/theme_builder/components/stylers/MarginStylerEditor.h @@ -0,0 +1,25 @@ +#pragma once +#include "../properties/ThicknessPropertyEditor.h" +#include "StylerEditor.h" +#include "cru/common/ClonablePtr.h" +#include "cru/ui/style/Styler.h" + +namespace cru::theme_builder::components::stylers { +class MarginStylerEditor : public StylerEditor { + public: + MarginStylerEditor(); + ~MarginStylerEditor() override; + + ClonablePtr GetValue(); + void SetValue(ui::style::MarginStyler* styler, bool trigger_change = true); + void SetValue(const ClonablePtr& styler, + bool trigger_change = true) { + SetValue(styler.get(), trigger_change); + } + + ClonablePtr GetStyler() override { return GetValue(); } + + private: + properties::ThicknessPropertyEditor thickness_editor_; +}; +} // namespace cru::theme_builder::components::stylers diff --git a/src/theme_builder/components/stylers/PaddingStylerEditor.cpp b/src/theme_builder/components/stylers/PaddingStylerEditor.cpp new file mode 100644 index 00000000..476d21f1 --- /dev/null +++ b/src/theme_builder/components/stylers/PaddingStylerEditor.cpp @@ -0,0 +1,28 @@ +#include "PaddingStylerEditor.h" +#include "cru/ui/style/Styler.h" + +namespace cru::theme_builder::components::stylers { +PaddingStylerEditor::PaddingStylerEditor() { + SetLabel(u"Padding Styler"); + GetContainer()->AddChild(thickness_editor_.GetRootControl()); + + thickness_editor_.SetLabel(u"Thickness"); + + ConnectChangeEvent(thickness_editor_); +} + +PaddingStylerEditor::~PaddingStylerEditor() {} + +ClonablePtr PaddingStylerEditor::GetValue() { + return ui::style::PaddingStyler::Create(thickness_editor_.GetValue()); +} + +void PaddingStylerEditor::SetValue(ui::style::PaddingStyler* styler, + bool trigger_change) { + thickness_editor_.SetValue(styler->GetPadding(), false); + + if (trigger_change) { + RaiseChangeEvent(); + } +} +} // namespace cru::theme_builder::components::stylers diff --git a/src/theme_builder/components/stylers/PaddingStylerEditor.h b/src/theme_builder/components/stylers/PaddingStylerEditor.h new file mode 100644 index 00000000..b78d310b --- /dev/null +++ b/src/theme_builder/components/stylers/PaddingStylerEditor.h @@ -0,0 +1,25 @@ +#pragma once +#include "../properties/ThicknessPropertyEditor.h" +#include "StylerEditor.h" +#include "cru/common/ClonablePtr.h" +#include "cru/ui/style/Styler.h" + +namespace cru::theme_builder::components::stylers { +class PaddingStylerEditor : public StylerEditor { + public: + PaddingStylerEditor(); + ~PaddingStylerEditor() override; + + ClonablePtr GetValue(); + void SetValue(ui::style::PaddingStyler* styler, bool trigger_change = true); + void SetValue(const ClonablePtr& styler, + bool trigger_change = true) { + SetValue(styler.get(), trigger_change); + } + + ClonablePtr GetStyler() override { return GetValue(); } + + private: + properties::ThicknessPropertyEditor thickness_editor_; +}; +} // namespace cru::theme_builder::components::stylers diff --git a/src/theme_builder/components/stylers/StylerEditor.cpp b/src/theme_builder/components/stylers/StylerEditor.cpp index 08684edc..030a3752 100644 --- a/src/theme_builder/components/stylers/StylerEditor.cpp +++ b/src/theme_builder/components/stylers/StylerEditor.cpp @@ -2,6 +2,8 @@ #include "BorderStylerEditor.h" #include "CompoundStylerEditor.h" #include "CursorStylerEditor.h" +#include "MarginStylerEditor.h" +#include "PaddingStylerEditor.h" #include "PreferredSizeStylerEditor.h" #include "cru/ui/style/Styler.h" @@ -33,6 +35,16 @@ std::unique_ptr CreateStylerEditor(ui::style::Styler* styler) { auto editor = std::make_unique(); editor->SetValue(preferred_size_styler); return editor; + } else if (auto margin_styler = + dynamic_cast(styler)) { + auto editor = std::make_unique(); + editor->SetValue(margin_styler); + return editor; + } else if (auto padding_styler = + dynamic_cast(styler)) { + auto editor = std::make_unique(); + editor->SetValue(padding_styler); + return editor; } else { throw Exception(u"Unknown styler type"); } -- cgit v1.2.3