From 9fa5b4c09507d4f1bc860bb93c077ab3c90cc373 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 10 Mar 2022 18:23:42 +0800 Subject: ... --- src/theme_builder/CMakeLists.txt | 1 + .../stylers/ContentBrushStylerEditor.cpp | 31 ++++++++++++++++++++++ .../components/stylers/ContentBrushStylerEditor.h | 24 +++++++++++++++++ .../components/stylers/StylerEditor.cpp | 6 +++++ 4 files changed, 62 insertions(+) create mode 100644 src/theme_builder/components/stylers/ContentBrushStylerEditor.cpp create mode 100644 src/theme_builder/components/stylers/ContentBrushStylerEditor.h (limited to 'src') diff --git a/src/theme_builder/CMakeLists.txt b/src/theme_builder/CMakeLists.txt index d1f30d61..b12de342 100644 --- a/src/theme_builder/CMakeLists.txt +++ b/src/theme_builder/CMakeLists.txt @@ -21,6 +21,7 @@ add_executable(cru_theme_builder components/properties/ThicknessPropertyEditor.cpp components/stylers/BorderStylerEditor.cpp components/stylers/CompoundStylerEditor.cpp + components/stylers/ContentBrushStylerEditor.cpp components/stylers/CursorStylerEditor.cpp components/stylers/MarginStylerEditor.cpp components/stylers/PaddingStylerEditor.cpp diff --git a/src/theme_builder/components/stylers/ContentBrushStylerEditor.cpp b/src/theme_builder/components/stylers/ContentBrushStylerEditor.cpp new file mode 100644 index 00000000..bd649c67 --- /dev/null +++ b/src/theme_builder/components/stylers/ContentBrushStylerEditor.cpp @@ -0,0 +1,31 @@ +#include "ContentBrushStylerEditor.h" +#include "cru/platform/graphics/Factory.h" +#include "cru/platform/gui/UiApplication.h" +#include "cru/ui/style/Styler.h" + +namespace cru::theme_builder::components::stylers { +ContentBrushStylerEditor::ContentBrushStylerEditor() { + GetContainer()->AddChild(color_editor_.GetRootControl()); + + ConnectChangeEvent(color_editor_); +} + +ContentBrushStylerEditor::~ContentBrushStylerEditor() {} + +ClonablePtr ContentBrushStylerEditor::GetValue() + const { + return ui::style::ContentBrushStyler::Create( + platform::gui::IUiApplication::GetInstance() + ->GetGraphicsFactory() + ->CreateSolidColorBrush(color_editor_.GetValue())); +} + +void ContentBrushStylerEditor::SetValue(ui::style::ContentBrushStyler* value, + bool trigger_change) { + color_editor_.SetValue( + std::dynamic_pointer_cast( + value->GetBrush()) + ->GetColor(), + trigger_change); +} +} // namespace cru::theme_builder::components::stylers diff --git a/src/theme_builder/components/stylers/ContentBrushStylerEditor.h b/src/theme_builder/components/stylers/ContentBrushStylerEditor.h new file mode 100644 index 00000000..8385b7c3 --- /dev/null +++ b/src/theme_builder/components/stylers/ContentBrushStylerEditor.h @@ -0,0 +1,24 @@ +#pragma once +#include "../Editor.h" +#include "../properties/ColorPropertyEditor.h" +#include "StylerEditor.h" +#include "cru/common/ClonablePtr.h" +#include "cru/ui/style/Styler.h" + +namespace cru::theme_builder::components::stylers { +class ContentBrushStylerEditor : public StylerEditor { + public: + ContentBrushStylerEditor(); + ~ContentBrushStylerEditor(); + + public: + ClonablePtr GetValue() const; + void SetValue(ui::style::ContentBrushStyler* value, + bool trigger_change = true); + + ClonablePtr GetStyler() override { return GetValue(); } + + private: + properties::ColorPropertyEditor color_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 56dec813..d87e80a9 100644 --- a/src/theme_builder/components/stylers/StylerEditor.cpp +++ b/src/theme_builder/components/stylers/StylerEditor.cpp @@ -1,6 +1,7 @@ #include "StylerEditor.h" #include "BorderStylerEditor.h" #include "CompoundStylerEditor.h" +#include "ContentBrushStylerEditor.h" #include "CursorStylerEditor.h" #include "MarginStylerEditor.h" #include "PaddingStylerEditor.h" @@ -50,6 +51,11 @@ std::unique_ptr CreateStylerEditor(ui::style::Styler* styler) { auto editor = std::make_unique(); editor->SetValue(padding_styler); return editor; + } else if (auto content_brush_styler = + dynamic_cast(styler)) { + auto editor = std::make_unique(); + editor->SetValue(content_brush_styler); + return editor; } else { throw Exception(u"Unknown styler type"); } -- cgit v1.2.3