#![warn(unused_extern_crates)]
use std;
use yaml_serde;
use serde::{Deserialize, Serialize};
use gooey;
use gooey::prelude::*;
macro_rules! display {
($e:expr) => { println!("{}: {}", stringify!($e), $e); }
}
macro_rules! show {
($e:expr) => { println!("{}: {:?}", stringify!($e), $e); }
}
#[expect(unused_macros)]
macro_rules! pretty {
($e:expr) => { println!("{}: {:#?}", stringify!($e), $e); }
}
const CONFIG_PATH_YAML : &str = "Example.yaml";
#[derive(Deserialize, Serialize)]
pub struct Config {
bindings : Bindings
}
fn main() {
println!("gooey example: main...");
let cfg = {
let config_file = std::fs::File::open (CONFIG_PATH_YAML).unwrap();
yaml_serde::from_reader::<std::fs::File, Config> (config_file).unwrap()
};
display!(yaml_serde::to_string (&cfg).unwrap());
gooey::report_sizes();
let mut interface : Interface = Interface::with_root (Element {
name: "Root".to_string(), .. Default::default()
});
interface.print_elements_tree();
let subtree = {
let node = |text : &str| Node::new (Element {
name: text.to_uppercase(),
model: model::Component::Text (text.into()).into(),
.. Element::default()
});
let insert_under = |node_id| tree::InsertBehavior::UnderNode (node_id);
let mut subtree = TreeBuilder::new().with_root (node ("a")).build();
let root_id = subtree.root_node_id().unwrap().clone();
let child_id = subtree.insert (node ("b"), insert_under (&root_id))
.unwrap();
let _ = subtree.insert (node ("c"), insert_under (&child_id))
.unwrap();
subtree
};
let root_id = interface.root_id().clone();
let events = interface
.action (&root_id, Action::Create (subtree, CreateOrder::Append));
for (_, event) in events {
show!(event);
}
interface.print_elements_tree_names();
println!("gooey example: ...main");
}