diff options
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"); } |