diff options
author | crupest <crupest@outlook.com> | 2022-03-10 18:23:42 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-03-10 18:23:42 +0800 |
commit | 9fa5b4c09507d4f1bc860bb93c077ab3c90cc373 (patch) | |
tree | fbdc0a5ae5ce3bc62ee7fb7d4761059a667bac42 /src | |
parent | 1cf1002f1d3cd81ddb920eb7196a067b566f11e2 (diff) | |
download | cru-9fa5b4c09507d4f1bc860bb93c077ab3c90cc373.tar.gz cru-9fa5b4c09507d4f1bc860bb93c077ab3c90cc373.tar.bz2 cru-9fa5b4c09507d4f1bc860bb93c077ab3c90cc373.zip |
...
Diffstat (limited to 'src')
4 files changed, 62 insertions, 0 deletions
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<ui::style::ContentBrushStyler> 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<platform::graphics::ISolidColorBrush>( + 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<ui::style::ContentBrushStyler> GetValue() const; + void SetValue(ui::style::ContentBrushStyler* value, + bool trigger_change = true); + + ClonablePtr<ui::style::Styler> 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<StylerEditor> CreateStylerEditor(ui::style::Styler* styler) { auto editor = std::make_unique<PaddingStylerEditor>(); editor->SetValue(padding_styler); return editor; + } else if (auto content_brush_styler = + dynamic_cast<ui::style::ContentBrushStyler*>(styler)) { + auto editor = std::make_unique<ContentBrushStylerEditor>(); + editor->SetValue(content_brush_styler); + return editor; } else { throw Exception(u"Unknown styler type"); } |