voidmap/
node.rs

1use {Coords, NodeID, Meta, random_fg_color};
2
3#[derive(Debug,Clone)]
4pub struct Node {
5    pub rooted_coords: Coords,
6    pub parent_id: NodeID,
7    pub id: NodeID,
8    pub content: String,
9    pub children: Vec<NodeID>,
10    pub selected: bool,
11    pub collapsed: bool,
12    pub stricken: bool,
13    pub hide_stricken: bool,
14    pub meta: Meta,
15    pub free_text: Option<String>,
16    pub color: String,
17    pub auto_arrange: bool,
18}
19
20impl Default for Node {
21    fn default() -> Node {
22        Node {
23            rooted_coords: (1, 2),
24            id: 0,
25            parent_id: 0,
26            content: String::new(),
27            children: vec![],
28            selected: false,
29            collapsed: false,
30            stricken: false,
31            hide_stricken: false,
32            meta: Meta::default(),
33            free_text: None,
34            color: random_fg_color(),
35            auto_arrange: true,
36        }
37    }
38}
39
40impl Node {
41    pub fn toggle_collapsed(&mut self) {
42        self.collapsed = !self.collapsed;
43    }
44
45    pub fn toggle_stricken(&mut self) {
46        if self.stricken {
47            self.meta.unfinish();
48        } else {
49            self.meta.finish();
50        }
51        self.stricken = !self.stricken;
52    }
53
54    pub fn toggle_hide_stricken(&mut self) {
55        self.hide_stricken = !self.hide_stricken;
56    }
57}