diff options
Diffstat (limited to 'src/types')
| -rw-r--r-- | src/types/mod.rs | 6 | ||||
| -rw-r--r-- | src/types/props.rs | 44 | ||||
| -rw-r--r-- | src/types/rendered_element.rs | 17 |
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; + } } |
