1use menugen::{menu, menuitem, reciter};
2
3
4fn build_menu() -> menu::Menu<()> {
5 let mut mb = menu::Builder::new();
6
7 let mut mib =
8 menuitem::Builder::new("test-sub-sub-menu", "Test sub-sub menu");
9 mib.weight(100).parent("test-sub-menu");
10 mb.add(mib);
11
12 let mut mib = menuitem::Builder::new("sys-shutdown", "Shutdown");
13 mib.weight(1000);
14 mb.add(mib);
15
16 let mut mib = menuitem::Builder::new("test-menu", "Test menu");
17 mib.weight(100);
18 mb.add(mib);
19
20 let mut mib = menuitem::Builder::new("test-sub-menu", "Test sub menu");
21 mib.weight(100).parent("test-menu");
22 mb.add(mib);
23
24 let mut mib = menuitem::Builder::new("test-menu-2", "Test menu too");
25 mib.weight(100);
26 mb.add(mib);
27
28 let mut mib = menuitem::Builder::new("test-menu-3", "Aaaaargh!");
29 mib.weight(100);
30 mb.add(mib);
31
32 let mut mib = menuitem::Builder::new("home", "Home");
33 mib.weight(0);
34 mb.add(mib);
35
36 let mib = menuitem::Builder::new("foo", "Foo");
37 mb.add(mib);
38
39 let mut mib = menuitem::Builder::new("foo-sub-1", "Foo Sub");
40 mib.parent("foo");
41 mb.add(mib);
42
43 let mut mib = menuitem::Builder::new("foo-sub-2", "Another Foo Sub");
44 mib.parent("foo");
45 mb.add(mib);
46
47 mb.build()
48}
49
50fn main() {
51 let menu = build_menu();
52
53 let indent_str = String::from(" ");
54 let mut indent = 0;
55 for ev in menu.iter_hier() {
56 match ev {
57 reciter::Event::EnterScope => {
58 println!("Enter scope");
59 indent += 1;
60 }
61 reciter::Event::MenuItem(mi) => {
62 println!(
63 "{}id: {}\ttitle: {}",
64 indent_str.repeat(indent),
65 mi.id(),
66 mi.title()
67 );
68 }
69 reciter::Event::LeaveScope => {
70 println!("Leave scope");
71 indent -= 1;
72 }
73 }
74 }
75}
76
77