aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-03-10 18:23:42 +0800
committercrupest <crupest@outlook.com>2022-03-10 18:23:42 +0800
commit9fa5b4c09507d4f1bc860bb93c077ab3c90cc373 (patch)
treefbdc0a5ae5ce3bc62ee7fb7d4761059a667bac42 /src
parent1cf1002f1d3cd81ddb920eb7196a067b566f11e2 (diff)
downloadcru-9fa5b4c09507d4f1bc860bb93c077ab3c90cc373.tar.gz
cru-9fa5b4c09507d4f1bc860bb93c077ab3c90cc373.tar.bz2
cru-9fa5b4c09507d4f1bc860bb93c077ab3c90cc373.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/theme_builder/CMakeLists.txt1
-rw-r--r--src/theme_builder/components/stylers/ContentBrushStylerEditor.cpp31
-rw-r--r--src/theme_builder/components/stylers/ContentBrushStylerEditor.h24
-rw-r--r--src/theme_builder/components/stylers/StylerEditor.cpp6
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");
}