aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-03-10 18:27:43 +0800
committercrupest <crupest@outlook.com>2022-03-10 18:27:43 +0800
commit159eff724a187f45e8780c0dc1540e75db05af23 (patch)
tree4b2799424a52e856fe409562bd0e81110f9c9870 /src
parent9fa5b4c09507d4f1bc860bb93c077ab3c90cc373 (diff)
downloadcru-159eff724a187f45e8780c0dc1540e75db05af23.tar.gz
cru-159eff724a187f45e8780c0dc1540e75db05af23.tar.bz2
cru-159eff724a187f45e8780c0dc1540e75db05af23.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/theme_builder/CMakeLists.txt1
-rw-r--r--src/theme_builder/components/stylers/FontStylerEditor.cpp23
-rw-r--r--src/theme_builder/components/stylers/FontStylerEditor.h23
-rw-r--r--src/theme_builder/components/stylers/StylerEditor.cpp5
4 files changed, 52 insertions, 0 deletions
diff --git a/src/theme_builder/CMakeLists.txt b/src/theme_builder/CMakeLists.txt
index b12de342..87669da9 100644
--- a/src/theme_builder/CMakeLists.txt
+++ b/src/theme_builder/CMakeLists.txt
@@ -23,6 +23,7 @@ add_executable(cru_theme_builder
components/stylers/CompoundStylerEditor.cpp
components/stylers/ContentBrushStylerEditor.cpp
components/stylers/CursorStylerEditor.cpp
+ components/stylers/FontStylerEditor.cpp
components/stylers/MarginStylerEditor.cpp
components/stylers/PaddingStylerEditor.cpp
components/stylers/PreferredSizeStylerEditor.cpp
diff --git a/src/theme_builder/components/stylers/FontStylerEditor.cpp b/src/theme_builder/components/stylers/FontStylerEditor.cpp
new file mode 100644
index 00000000..9787a4fd
--- /dev/null
+++ b/src/theme_builder/components/stylers/FontStylerEditor.cpp
@@ -0,0 +1,23 @@
+#include "FontStylerEditor.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 {
+FontStylerEditor::FontStylerEditor() {
+ GetContainer()->AddChild(font_editor_.GetRootControl());
+
+ ConnectChangeEvent(font_editor_);
+}
+
+FontStylerEditor::~FontStylerEditor() {}
+
+ClonablePtr<ui::style::FontStyler> FontStylerEditor::GetValue() const {
+ return ui::style::FontStyler::Create(font_editor_.GetValue());
+}
+
+void FontStylerEditor::SetValue(ui::style::FontStyler* value,
+ bool trigger_change) {
+ font_editor_.SetValue(value->GetFont(), trigger_change);
+}
+} // namespace cru::theme_builder::components::stylers
diff --git a/src/theme_builder/components/stylers/FontStylerEditor.h b/src/theme_builder/components/stylers/FontStylerEditor.h
new file mode 100644
index 00000000..ccd12113
--- /dev/null
+++ b/src/theme_builder/components/stylers/FontStylerEditor.h
@@ -0,0 +1,23 @@
+#pragma once
+#include "../Editor.h"
+#include "../properties/FontPropertyEditor.h"
+#include "StylerEditor.h"
+#include "cru/common/ClonablePtr.h"
+#include "cru/ui/style/Styler.h"
+
+namespace cru::theme_builder::components::stylers {
+class FontStylerEditor : public StylerEditor {
+ public:
+ FontStylerEditor();
+ ~FontStylerEditor();
+
+ public:
+ ClonablePtr<ui::style::FontStyler> GetValue() const;
+ void SetValue(ui::style::FontStyler* value, bool trigger_change = true);
+
+ ClonablePtr<ui::style::Styler> GetStyler() override { return GetValue(); }
+
+ private:
+ properties::FontPropertyEditor font_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 d87e80a9..8b18969c 100644
--- a/src/theme_builder/components/stylers/StylerEditor.cpp
+++ b/src/theme_builder/components/stylers/StylerEditor.cpp
@@ -3,6 +3,7 @@
#include "CompoundStylerEditor.h"
#include "ContentBrushStylerEditor.h"
#include "CursorStylerEditor.h"
+#include "FontStylerEditor.h"
#include "MarginStylerEditor.h"
#include "PaddingStylerEditor.h"
#include "PreferredSizeStylerEditor.h"
@@ -56,6 +57,10 @@ std::unique_ptr<StylerEditor> CreateStylerEditor(ui::style::Styler* styler) {
auto editor = std::make_unique<ContentBrushStylerEditor>();
editor->SetValue(content_brush_styler);
return editor;
+ } else if (auto font_styler = dynamic_cast<ui::style::FontStyler*>(styler)) {
+ auto editor = std::make_unique<FontStylerEditor>();
+ editor->SetValue(font_styler);
+ return editor;
} else {
throw Exception(u"Unknown styler type");
}