sim_lib_web_layout/
pane.rs1use sim_kernel::{Expr, Symbol};
8
9use crate::value::{get, int, map};
10
11pub fn rect(x: i64, y: i64, w: i64, h: i64) -> Expr {
13 map(vec![
14 ("x", int(x)),
15 ("y", int(y)),
16 ("w", int(w)),
17 ("h", int(h)),
18 ])
19}
20
21pub fn new_pane(id: &str, resource: Expr, lens: &str, dock: &str) -> Expr {
23 map(vec![
24 ("id", Expr::Symbol(Symbol::new(id))),
25 ("resource", resource),
26 ("lens", Expr::Symbol(Symbol::new(lens))),
27 ("dock", Expr::Symbol(Symbol::new(dock))),
28 ("rect", rect(0, 0, 400, 300)),
29 ])
30}
31
32pub fn pane_id(pane: &Expr) -> Option<Symbol> {
34 match get(pane, "id") {
35 Some(Expr::Symbol(symbol)) => Some(symbol.clone()),
36 _ => None,
37 }
38}
39
40pub fn pane_dock(pane: &Expr) -> Option<Symbol> {
42 match get(pane, "dock") {
43 Some(Expr::Symbol(symbol)) => Some(symbol.clone()),
44 _ => None,
45 }
46}
47
48pub fn pane_lens(pane: &Expr) -> Option<Symbol> {
50 match get(pane, "lens") {
51 Some(Expr::Symbol(symbol)) => Some(symbol.clone()),
52 _ => None,
53 }
54}
55
56pub fn pane_resource(pane: &Expr) -> Option<&Expr> {
58 get(pane, "resource")
59}
60
61pub fn pane_rect(pane: &Expr) -> Option<&Expr> {
63 get(pane, "rect")
64}