summaryrefslogtreecommitdiff
path: root/src/types
diff options
context:
space:
mode:
authorpml68 <contact@pml68.me>2024-09-19 23:26:22 +0200
committerpml68 <contact@pml68.me>2024-09-22 23:55:11 +0200
commit71743cb18fbb69430d092df59a722f5995be31c3 (patch)
tree707e4a8076085623b2bb3bcf2ec8ef1054f1bdf2 /src/types
parentfeat: finish codegen with limited props and elements (diff)
downloadiced-builder-71743cb18fbb69430d092df59a722f5995be31c3.tar.gz
feat: rework props
w
Diffstat (limited to 'src/types')
-rw-r--r--src/types/mod.rs6
-rw-r--r--src/types/props.rs44
-rw-r--r--src/types/rendered_element.rs17
3 files changed, 16 insertions, 51 deletions
diff --git a/src/types/mod.rs b/src/types/mod.rs
index 1fa23d4..c837ee1 100644
--- a/src/types/mod.rs
+++ b/src/types/mod.rs
@@ -1,4 +1,3 @@
-pub mod props;
pub mod rendered_element;
use iced::widget::text_editor;
@@ -10,9 +9,10 @@ pub struct DesignerState {
pub designer_page: DesignerPage,
}
+#[derive(Debug)]
pub enum ElementName {
- Text(String),
- Button(String),
+ Text(&'static str),
+ Button(&'static str),
TextEditor(text_editor::Content),
SVG(PathBuf),
Image(PathBuf),
diff --git a/src/types/props.rs b/src/types/props.rs
deleted file mode 100644
index 6dbb0a4..0000000
--- a/src/types/props.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-use core::f32;
-
-use iced::{
- alignment::{Horizontal, Vertical},
- widget::text::Shaping,
- Alignment, ContentFit, Font, Length, Padding,
-};
-pub struct Props {
- pub align_items: Option<Alignment>,
- pub align_x: Option<Horizontal>,
- pub align_y: Option<Vertical>,
- pub horizontal_alignment: Option<Horizontal>,
- pub vertical_alignment: Option<Vertical>,
- pub width: Option<Length>,
- pub height: Option<Length>,
- pub max_width: Option<f32>,
- pub max_height: Option<f32>,
- pub font: Option<Font>,
- pub padding: Option<Padding>,
- pub spacing: Option<f32>,
- pub content_fit: Option<ContentFit>,
- pub shaping: Option<Shaping>,
-}
-
-impl Default for Props {
- fn default() -> Self {
- Self {
- align_items: None,
- align_x: None,
- align_y: None,
- horizontal_alignment: None,
- vertical_alignment: None,
- width: None,
- height: None,
- max_width: None,
- max_height: None,
- font: None,
- padding: None,
- spacing: None,
- content_fit: None,
- shaping: None,
- }
- }
-}
diff --git a/src/types/rendered_element.rs b/src/types/rendered_element.rs
index e909ac5..cbc923d 100644
--- a/src/types/rendered_element.rs
+++ b/src/types/rendered_element.rs
@@ -1,11 +1,15 @@
+use std::collections::HashMap;
+
use unique_id::{string::StringGenerator, Generator};
-use super::{props::Props, ElementName};
+use super::ElementName;
+
+#[derive(Debug)]
pub struct RenderedElement {
pub id: String,
pub child_elements: Vec<RenderedElement>,
pub name: ElementName,
- pub props: Props,
+ pub props: HashMap<&'static str, &'static str>,
}
impl RenderedElement {
@@ -15,7 +19,7 @@ impl RenderedElement {
id: gen.next_id(),
child_elements: vec![],
name,
- props: Props::default(),
+ props: HashMap::new(),
}
}
@@ -25,7 +29,7 @@ impl RenderedElement {
id: gen.next_id(),
child_elements,
name,
- props: Props::default(),
+ props: HashMap::new(),
}
}
@@ -33,4 +37,9 @@ impl RenderedElement {
self.child_elements.push(element);
self
}
+
+ pub fn set_property(&mut self, prop: &'static str, value: &'static str) {
+ let prop_ref = self.props.entry(prop).or_insert(value);
+ *prop_ref = value;
+ }
}