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}