diff options
| author | Polesznyák Márk László <116908301+pml68@users.noreply.github.com> | 2024-09-22 21:32:38 +0200 |
|---|---|---|
| committer | pml68 <contact@pml68.me> | 2024-09-22 23:55:11 +0200 |
| commit | 0e1e21ad18dcf48e64422f7f45af44ac5ea4a7be (patch) | |
| tree | 2fe99dcb6380deb067e3bc3005fb5275f33b48d5 /src/types/rendered_element.rs | |
| parent | feat: add usable state logic (diff) | |
| parent | feat: add "Copy to clipboard" button for code view (diff) | |
| download | iced-builder-0e1e21ad18dcf48e64422f7f45af44ac5ea4a7be.tar.gz | |
Merge pull request #1 from pml68/feat/codegen
Codegen done
Diffstat (limited to 'src/types/rendered_element.rs')
| -rw-r--r-- | src/types/rendered_element.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/types/rendered_element.rs b/src/types/rendered_element.rs new file mode 100644 index 0000000..f05594d --- /dev/null +++ b/src/types/rendered_element.rs @@ -0,0 +1,47 @@ +use std::collections::HashMap; + +use unique_id::{string::StringGenerator, Generator}; + +use iced::advanced::widget::Id; + +use super::ElementName; + +#[derive(Debug)] +pub struct RenderedElement { + pub id: Id, + pub child_elements: Vec<RenderedElement>, + pub name: ElementName, + pub props: HashMap<&'static str, &'static str>, +} + +impl RenderedElement { + pub fn new(name: ElementName) -> Self { + let gen = StringGenerator::default(); + Self { + id: Id::new(gen.next_id()), + child_elements: vec![], + name, + props: HashMap::new(), + } + } + + pub fn from_vec(name: ElementName, child_elements: Vec<RenderedElement>) -> Self { + let gen = StringGenerator::default(); + Self { + id: Id::new(gen.next_id()), + child_elements, + name, + props: HashMap::new(), + } + } + + pub fn push(mut self, element: RenderedElement) -> Self { + 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; + } +} |
