use sim_kernel::{Expr, Symbol};
use crate::value::{get, int, map};
pub fn rect(x: i64, y: i64, w: i64, h: i64) -> Expr {
map(vec![
("x", int(x)),
("y", int(y)),
("w", int(w)),
("h", int(h)),
])
}
pub fn new_pane(id: &str, resource: Expr, lens: &str, dock: &str) -> Expr {
map(vec![
("id", Expr::Symbol(Symbol::new(id))),
("resource", resource),
("lens", Expr::Symbol(Symbol::new(lens))),
("dock", Expr::Symbol(Symbol::new(dock))),
("rect", rect(0, 0, 400, 300)),
])
}
pub fn pane_id(pane: &Expr) -> Option<Symbol> {
match get(pane, "id") {
Some(Expr::Symbol(symbol)) => Some(symbol.clone()),
_ => None,
}
}
pub fn pane_dock(pane: &Expr) -> Option<Symbol> {
match get(pane, "dock") {
Some(Expr::Symbol(symbol)) => Some(symbol.clone()),
_ => None,
}
}
pub fn pane_lens(pane: &Expr) -> Option<Symbol> {
match get(pane, "lens") {
Some(Expr::Symbol(symbol)) => Some(symbol.clone()),
_ => None,
}
}
pub fn pane_resource(pane: &Expr) -> Option<&Expr> {
get(pane, "resource")
}
pub fn pane_rect(pane: &Expr) -> Option<&Expr> {
get(pane, "rect")
}