aboutsummaryrefslogtreecommitdiff
path: root/src/theme_builder/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/theme_builder/components')
-rw-r--r--src/theme_builder/components/StyleRuleEditor.cpp29
-rw-r--r--src/theme_builder/components/StyleRuleEditor.h5
-rw-r--r--src/theme_builder/components/conditions/CompoundConditionEditor.cpp19
-rw-r--r--src/theme_builder/components/conditions/CompoundConditionEditor.h2
-rw-r--r--src/theme_builder/components/conditions/ConditionEditor.cpp5
-rw-r--r--src/theme_builder/components/conditions/ConditionEditor.h3
-rw-r--r--src/theme_builder/components/properties/CornerRadiusPropertyEditor.cpp11
-rw-r--r--src/theme_builder/components/properties/OptionalPropertyEditor.h7
-rw-r--r--src/theme_builder/components/stylers/BorderStylerEditor.cpp5
-rw-r--r--src/theme_builder/components/stylers/CompoundStylerEditor.cpp16
-rw-r--r--src/theme_builder/components/stylers/StylerEditor.cpp7
-rw-r--r--src/theme_builder/components/stylers/StylerEditor.h3
12 files changed, 92 insertions, 20 deletions
diff --git a/src/theme_builder/components/StyleRuleEditor.cpp b/src/theme_builder/components/StyleRuleEditor.cpp
index aa2806b1..eefe9451 100644
--- a/src/theme_builder/components/StyleRuleEditor.cpp
+++ b/src/theme_builder/components/StyleRuleEditor.cpp
@@ -1,17 +1,30 @@
#include "StyleRuleEditor.h"
#include "conditions/ConditionEditor.h"
+#include "cru/ui/ThemeManager.h"
#include "cru/ui/style/StyleRule.h"
namespace cru::theme_builder {
StyleRuleEditor::StyleRuleEditor() {
- main_layout_.SetFlexDirection(ui::controls::FlexDirection::Horizontal);
- main_layout_.AddChild(&remove_button_);
+ main_layout_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
+ main_layout_.SetItemCrossAlign(ui::controls::FlexCrossAlignment::Start);
+ main_layout_.AddChild(&head_layout_);
+
+ label_.SetText(u"Style Rule");
+ head_layout_.AddChild(&label_);
+ head_layout_.AddChild(&remove_button_);
+
+ remove_button_.GetStyleRuleSet()->SetParent(
+ ui::ThemeManager::GetInstance()->GetResourceStyleRuleSet(
+ u"cru.theme_builder.icon-button.style"));
remove_button_.SetChild(&remove_button_text_);
- remove_button_text_.SetText(u"X");
+ remove_button_text_.SetText(u"x");
+ remove_button_text_.SetTextColor(ui::colors::red);
- main_layout_.AddChild(&right_layout_);
- right_layout_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
+ main_layout_.AddChild(&body_layout_);
+ body_layout_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
+ body_layout_.SetItemCrossAlign(ui::controls::FlexCrossAlignment::Start);
+ body_layout_.SetMargin({20, 0, 0, 0});
remove_button_.ClickEvent()->AddSpyOnlyHandler(
[this] { remove_event_.Raise(nullptr); });
@@ -26,13 +39,13 @@ ui::style::StyleRule StyleRuleEditor::GetValue() const {
void StyleRuleEditor::SetValue(const ui::style::StyleRule& style_rule,
bool trigger_change) {
- right_layout_.ClearChildren();
+ body_layout_.ClearChildren();
condition_editor_ =
components::conditions::CreateConditionEditor(style_rule.GetCondition());
styler_editor_ =
components::stylers::CreateStylerEditor(style_rule.GetStyler());
- right_layout_.AddChild(condition_editor_->GetRootControl());
- right_layout_.AddChild(styler_editor_->GetRootControl());
+ body_layout_.AddChild(condition_editor_->GetRootControl());
+ body_layout_.AddChild(styler_editor_->GetRootControl());
condition_editor_->ChangeEvent()->AddSpyOnlyHandler(
[this] { change_event_.Raise(nullptr); });
styler_editor_->ChangeEvent()->AddSpyOnlyHandler(
diff --git a/src/theme_builder/components/StyleRuleEditor.h b/src/theme_builder/components/StyleRuleEditor.h
index 204b65b4..8cee966f 100644
--- a/src/theme_builder/components/StyleRuleEditor.h
+++ b/src/theme_builder/components/StyleRuleEditor.h
@@ -4,6 +4,7 @@
#include "cru/ui/controls/Button.h"
#include "cru/ui/controls/Control.h"
#include "cru/ui/controls/FlexLayout.h"
+#include "cru/ui/controls/TextBlock.h"
#include "cru/ui/style/StyleRule.h"
#include "stylers/StylerEditor.h"
@@ -29,9 +30,11 @@ class StyleRuleEditor : public ui::components::Component {
private:
ui::controls::FlexLayout main_layout_;
+ ui::controls::TextBlock label_;
+ ui::controls::FlexLayout head_layout_;
ui::controls::Button remove_button_;
ui::controls::TextBlock remove_button_text_;
- ui::controls::FlexLayout right_layout_;
+ ui::controls::FlexLayout body_layout_;
std::unique_ptr<components::conditions::ConditionEditor> condition_editor_;
std::unique_ptr<components::stylers::StylerEditor> styler_editor_;
diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp
index b7f54f77..beede667 100644
--- a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp
+++ b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp
@@ -5,6 +5,9 @@
#include "FocusConditionEditor.h"
#include "NoConditionEditor.h"
#include "cru/common/ClonablePtr.h"
+#include "cru/platform/Color.h"
+#include "cru/ui/ThemeManager.h"
+#include "cru/ui/controls/FlexLayout.h"
#include "cru/ui/style/Condition.h"
namespace cru::theme_builder::components::conditions {
@@ -14,8 +17,12 @@ CompoundConditionEditorChild::CompoundConditionEditorChild(
container_.SetFlexDirection(ui::controls::FlexDirection::Horizontal);
container_.AddChild(&remove_button_);
+ remove_button_.GetStyleRuleSet()->SetParent(
+ ui::ThemeManager::GetInstance()->GetResourceStyleRuleSet(
+ u"cru.theme_builder.icon-button.style"));
remove_button_.SetChild(&remove_button_text_);
- remove_button_text_.SetText(u"-");
+ remove_button_text_.SetText(u"x");
+ remove_button_text_.SetTextColor(ui::colors::red);
container_.AddChild(condition_editor_->GetRootControl());
@@ -29,8 +36,16 @@ CompoundConditionEditor::CompoundConditionEditor() {
SetLabel(u"Compound Condition");
GetContainer()->AddChild(&children_container_);
- GetContainer()->AddChild(add_child_button_.GetRootControl());
+ children_container_.SetItemCrossAlign(
+ ui::controls::FlexCrossAlignment::Start);
+
+ GetHeadContainer()->AddChild(add_child_button_.GetRootControl());
+
+ add_child_button_.GetButton()->GetStyleRuleSet()->SetParent(
+ ui::ThemeManager::GetInstance()->GetResourceStyleRuleSet(
+ u"cru.theme_builder.icon-button.style"));
add_child_button_.SetButtonText(u"+");
+ add_child_button_.SetButtonTextColor(ui::colors::green);
add_child_button_.SetMenuItems({u"And Condition", u"Or Condition",
u"Click State Condition", u"Focus Condition",
u"Checked Condition", u"No Condition"});
diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.h b/src/theme_builder/components/conditions/CompoundConditionEditor.h
index 771d694f..471087ae 100644
--- a/src/theme_builder/components/conditions/CompoundConditionEditor.h
+++ b/src/theme_builder/components/conditions/CompoundConditionEditor.h
@@ -43,8 +43,8 @@ class CompoundConditionEditor : public ConditionEditor {
bool trigger_change = true);
private:
- ui::controls::FlexLayout children_container_;
ui::components::PopupMenuTextButton add_child_button_;
+ ui::controls::FlexLayout children_container_;
std::vector<std::unique_ptr<CompoundConditionEditorChild>> children_;
};
diff --git a/src/theme_builder/components/conditions/ConditionEditor.cpp b/src/theme_builder/components/conditions/ConditionEditor.cpp
index 2840b250..3babe19c 100644
--- a/src/theme_builder/components/conditions/ConditionEditor.cpp
+++ b/src/theme_builder/components/conditions/ConditionEditor.cpp
@@ -10,7 +10,10 @@
namespace cru::theme_builder::components::conditions {
ConditionEditor::ConditionEditor() {
container_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
- container_.AddChild(&label_);
+ container_.AddChild(&head_container_);
+
+ head_container_.SetFlexDirection(ui::controls::FlexDirection::Horizontal);
+ head_container_.AddChild(&label_);
}
ConditionEditor::~ConditionEditor() {}
diff --git a/src/theme_builder/components/conditions/ConditionEditor.h b/src/theme_builder/components/conditions/ConditionEditor.h
index 426e6ba8..35bac560 100644
--- a/src/theme_builder/components/conditions/ConditionEditor.h
+++ b/src/theme_builder/components/conditions/ConditionEditor.h
@@ -16,6 +16,8 @@ class ConditionEditor : public Editor {
ui::controls::FlexLayout* GetContainer() { return &container_; }
+ ui::controls::FlexLayout* GetHeadContainer() { return &head_container_; }
+
String GetLabel() const { return label_.GetText(); }
void SetLabel(String label) { label_.SetText(std::move(label)); }
@@ -23,6 +25,7 @@ class ConditionEditor : public Editor {
private:
ui::controls::FlexLayout container_;
+ ui::controls::FlexLayout head_container_;
ui::controls::TextBlock label_;
};
diff --git a/src/theme_builder/components/properties/CornerRadiusPropertyEditor.cpp b/src/theme_builder/components/properties/CornerRadiusPropertyEditor.cpp
index 91e2c614..fc86b0ed 100644
--- a/src/theme_builder/components/properties/CornerRadiusPropertyEditor.cpp
+++ b/src/theme_builder/components/properties/CornerRadiusPropertyEditor.cpp
@@ -1,12 +1,15 @@
#include "CornerRadiusPropertyEditor.h"
#include "cru/ui/Base.h"
+#include "cru/ui/controls/FlexLayout.h"
namespace cru::theme_builder::components::properties {
CornerRadiusPropertyEditor::CornerRadiusPropertyEditor() {
- left_top_editor_.SetLabel(u"Left Top");
- right_top_editor_.SetLabel(u"Right Top");
- left_bottom_editor_.SetLabel(u"Left Bottom");
- right_bottom_editor_.SetLabel(u"Right Bottom");
+ container_.SetItemCrossAlign(ui::controls::FlexCrossAlignment::Start);
+
+ left_top_editor_.SetLabel(u"⌜");
+ right_top_editor_.SetLabel(u"⌝");
+ left_bottom_editor_.SetLabel(u"⌞");
+ right_bottom_editor_.SetLabel(u"⌟");
container_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
container_.AddChild(left_top_editor_.GetRootControl());
diff --git a/src/theme_builder/components/properties/OptionalPropertyEditor.h b/src/theme_builder/components/properties/OptionalPropertyEditor.h
index d7362d50..0f22616a 100644
--- a/src/theme_builder/components/properties/OptionalPropertyEditor.h
+++ b/src/theme_builder/components/properties/OptionalPropertyEditor.h
@@ -2,6 +2,7 @@
#include "../Editor.h"
#include "cru/ui/controls/CheckBox.h"
#include "cru/ui/controls/FlexLayout.h"
+#include "cru/ui/controls/TextBlock.h"
#include <optional>
@@ -12,7 +13,9 @@ class OptionalPropertyEditor : public Editor {
using PropertyType = typename TEditor::PropertyType;
OptionalPropertyEditor() {
+ container_.AddChild(&label_);
container_.AddChild(&check_box_);
+ check_box_.SetMargin({0, 0, 10, 0});
container_.AddChild(editor_.GetRootControl());
editor_.ChangeEvent()->AddHandler([this](std::nullptr_t) {
@@ -25,6 +28,9 @@ class OptionalPropertyEditor : public Editor {
ui::controls::Control* GetRootControl() override { return &container_; }
+ String GetLabel() const { return label_.GetText(); }
+ void SetLabel(String label) { label_.SetText(std::move(label)); }
+
bool IsEnabled() const { return check_box_.IsChecked(); }
void SetEnabled(bool enabled, bool trigger_change = true) {
check_box_.SetChecked(enabled);
@@ -52,6 +58,7 @@ class OptionalPropertyEditor : public Editor {
private:
ui::controls::FlexLayout container_;
+ ui::controls::TextBlock label_;
ui::controls::CheckBox check_box_;
TEditor editor_;
};
diff --git a/src/theme_builder/components/stylers/BorderStylerEditor.cpp b/src/theme_builder/components/stylers/BorderStylerEditor.cpp
index b2522786..81eb66d3 100644
--- a/src/theme_builder/components/stylers/BorderStylerEditor.cpp
+++ b/src/theme_builder/components/stylers/BorderStylerEditor.cpp
@@ -15,6 +15,11 @@ BorderStylerEditor::BorderStylerEditor() {
GetContainer()->AddChild(foreground_brush_editor_.GetRootControl());
GetContainer()->AddChild(background_brush_editor_.GetRootControl());
+ thickness_editor_.GetEditor()->SetLabel(u"Thickness");
+ brush_editor_.GetEditor()->SetLabel(u"Border");
+ foreground_brush_editor_.GetEditor()->SetLabel(u"Foreground");
+ background_brush_editor_.GetEditor()->SetLabel(u"Background");
+
ConnectChangeEvent(corner_radius_editor_);
ConnectChangeEvent(thickness_editor_);
ConnectChangeEvent(brush_editor_);
diff --git a/src/theme_builder/components/stylers/CompoundStylerEditor.cpp b/src/theme_builder/components/stylers/CompoundStylerEditor.cpp
index ac1cc0ea..258eeb26 100644
--- a/src/theme_builder/components/stylers/CompoundStylerEditor.cpp
+++ b/src/theme_builder/components/stylers/CompoundStylerEditor.cpp
@@ -2,6 +2,7 @@
#include "BorderStylerEditor.h"
#include "CursorStylerEditor.h"
#include "cru/common/ClonablePtr.h"
+#include "cru/ui/ThemeManager.h"
#include "cru/ui/style/Styler.h"
namespace cru::theme_builder::components::stylers {
@@ -11,8 +12,12 @@ CompoundStylerEditorChild::CompoundStylerEditorChild(
container_.SetFlexDirection(ui::controls::FlexDirection::Horizontal);
container_.AddChild(&remove_button_);
+ remove_button_.GetStyleRuleSet()->SetParent(
+ ui::ThemeManager::GetInstance()->GetResourceStyleRuleSet(
+ u"cru.theme_builder.icon-button.style"));
remove_button_.SetChild(&remove_button_text_);
- remove_button_text_.SetText(u"X");
+ remove_button_text_.SetText(u"x");
+ remove_button_text_.SetTextColor(ui::colors::red);
container_.AddChild(styler_editor_->GetRootControl());
@@ -24,10 +29,17 @@ CompoundStylerEditorChild::~CompoundStylerEditorChild() {}
CompoundStylerEditor::CompoundStylerEditor() {
SetLabel(u"Compound Styler");
- children_container_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
GetContainer()->AddChild(&children_container_);
+ children_container_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
+ children_container_.SetItemCrossAlign(
+ ui::controls::FlexCrossAlignment::Start);
+ GetHeadContainer()->AddChild(add_child_button_.GetRootControl());
add_child_button_.SetButtonText(u"+");
+ add_child_button_.GetButton()->GetStyleRuleSet()->SetParent(
+ ui::ThemeManager::GetInstance()->GetResourceStyleRuleSet(
+ u"cru.theme_builder.icon-button.style"));
+ add_child_button_.SetButtonTextColor(ui::colors::green);
add_child_button_.SetMenuItems({
u"Compound Styler",
u"Border Styler",
diff --git a/src/theme_builder/components/stylers/StylerEditor.cpp b/src/theme_builder/components/stylers/StylerEditor.cpp
index 030a3752..56dec813 100644
--- a/src/theme_builder/components/stylers/StylerEditor.cpp
+++ b/src/theme_builder/components/stylers/StylerEditor.cpp
@@ -5,12 +5,17 @@
#include "MarginStylerEditor.h"
#include "PaddingStylerEditor.h"
#include "PreferredSizeStylerEditor.h"
+#include "cru/ui/controls/FlexLayout.h"
+#include "cru/ui/render/FlexLayoutRenderObject.h"
#include "cru/ui/style/Styler.h"
namespace cru::theme_builder::components::stylers {
StylerEditor::StylerEditor() {
container_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
- container_.AddChild(&label_);
+ container_.AddChild(&head_container_);
+ container_.SetItemCrossAlign(ui::controls::FlexCrossAlignment::Start);
+ head_container_.SetFlexDirection(ui::render::FlexDirection::Horizontal);
+ head_container_.AddChild(&label_);
}
StylerEditor::~StylerEditor() {}
diff --git a/src/theme_builder/components/stylers/StylerEditor.h b/src/theme_builder/components/stylers/StylerEditor.h
index 02005481..482cce7d 100644
--- a/src/theme_builder/components/stylers/StylerEditor.h
+++ b/src/theme_builder/components/stylers/StylerEditor.h
@@ -15,6 +15,8 @@ class StylerEditor : public Editor {
ui::controls::FlexLayout* GetContainer() { return &container_; }
+ ui::controls::FlexLayout* GetHeadContainer() { return &head_container_; }
+
String GetLabel() const { return label_.GetText(); }
void SetLabel(String label) { label_.SetText(std::move(label)); }
@@ -22,6 +24,7 @@ class StylerEditor : public Editor {
private:
ui::controls::FlexLayout container_;
+ ui::controls::FlexLayout head_container_;
ui::controls::TextBlock label_;
};