diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen/mod.rs | 27 | ||||
| -rw-r--r-- | src/types/mod.rs | 24 |
2 files changed, 37 insertions, 14 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 37ada3a..8e31dc3 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -4,12 +4,35 @@ impl RenderedElement { pub fn codegen(&self) -> Result<(String, String), &str> { let mut imports = String::new(); let mut view = String::new(); + let mut props = String::new(); + + let mut elements = String::new(); + + match self.children { + Some(els) => { + for el in els { + let mut children = String::new(); + + match el.codegen() { + Ok(e) => (children, imports) = e, + Err(err) => return Err(err), + } + elements = format!("{elements},{}", children); + } + } + None => {} + } match self.name { ElementName::Row => { - imports = format!("{imports}\nuse iced::widget::row"); - view = format!("{view}\nrow![]"); + imports = format!("{imports}\nuse iced::widget::row;"); + view = format!("{view}\nrow![{elements}]{props};"); + } + ElementName::Container => { + imports = format!("{imports}\nuse iced::widget::container;"); + view = format!("{view}\ncontainer({elements}){props};"); } + _ => {} } } } diff --git a/src/types/mod.rs b/src/types/mod.rs index 31c233d..09b0f07 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -30,18 +30,18 @@ pub enum ElementName { } pub struct Props { - align_items: Option<Alignment>, - align_x: Option<Horizontal>, - align_y: Option<Vertical>, - horizontal_alignment: Option<Horizontal>, - vertical_alignment: Option<Vertical>, - height: Option<Length>, - width: Option<Length>, - font: Option<Font>, - padding: Option<i32>, - spacing: Option<i32>, - content_fit: Option<ContentFit>, - shaping: Option<Shaping>, + 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 height: Option<Length>, + pub width: Option<Length>, + pub font: Option<Font>, + pub padding: Option<i32>, + pub spacing: Option<i32>, + pub content_fit: Option<ContentFit>, + pub shaping: Option<Shaping>, } pub enum DesignerPage { |
