aboutsummaryrefslogtreecommitdiff
path: root/src/ThemeBuilder/components/properties/FontPropertyEditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ThemeBuilder/components/properties/FontPropertyEditor.cpp')
-rw-r--r--src/ThemeBuilder/components/properties/FontPropertyEditor.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/ThemeBuilder/components/properties/FontPropertyEditor.cpp b/src/ThemeBuilder/components/properties/FontPropertyEditor.cpp
new file mode 100644
index 00000000..927ada7d
--- /dev/null
+++ b/src/ThemeBuilder/components/properties/FontPropertyEditor.cpp
@@ -0,0 +1,60 @@
+#include "FontPropertyEditor.h"
+#include "cru/platform/graphics/Factory.h"
+#include "cru/platform/graphics/Font.h"
+#include "cru/platform/gui/UiApplication.h"
+#include "cru/ui/controls/FlexLayout.h"
+#include "cru/ui/render/FlexLayoutRenderObject.h"
+
+namespace cru::theme_builder::components::properties {
+using namespace cru::ui::controls;
+
+FontPropertyEditor::FontPropertyEditor() {
+ main_container_.SetFlexDirection(FlexDirection::Horizontal);
+ main_container_.AddChild(&label_);
+ main_container_.AddChild(&right_container_);
+
+ right_container_.SetFlexDirection(FlexDirection::Vertical);
+ right_container_.AddChild(&font_family_container_);
+ right_container_.AddChild(&font_size_container_);
+
+ font_family_container_.SetFlexDirection(FlexDirection::Horizontal);
+ font_family_container_.AddChild(&font_family_label_);
+ font_family_container_.AddChild(&font_family_text_);
+ font_family_label_.SetText(u"Font Family");
+
+ font_size_container_.SetFlexDirection(FlexDirection::Horizontal);
+ font_size_container_.AddChild(&font_size_label_);
+ font_size_container_.AddChild(font_size_input_.GetRootControl());
+ font_size_label_.SetText(u"Font Size");
+ font_size_input_.SetMin(0.0f);
+
+ font_family_text_.TextChangeEvent()->AddSpyOnlyHandler(
+ [this] { RaiseChangeEvent(); });
+
+ font_size_input_.ChangeEvent()->AddSpyOnlyHandler(
+ [this] { RaiseChangeEvent(); });
+}
+
+FontPropertyEditor::~FontPropertyEditor() {}
+
+Control* FontPropertyEditor::GetRootControl() { return &main_container_; }
+
+std::shared_ptr<platform::graphics::IFont> FontPropertyEditor::GetValue()
+ const {
+ return platform::gui::IUiApplication::GetInstance()
+ ->GetGraphicsFactory()
+ ->CreateFont(font_family_text_.GetText(), font_size_input_.GetValue());
+}
+
+void FontPropertyEditor::SetValue(
+ std::shared_ptr<platform::graphics::IFont> value, bool trigger_change) {
+ SuppressNextChangeEvent();
+ font_family_text_.SetText(value->GetFontName());
+ SuppressNextChangeEvent();
+ font_size_input_.SetValue(value->GetFontSize());
+
+ if (trigger_change) {
+ RaiseChangeEvent();
+ }
+}
+} // namespace cru::theme_builder::components::properties