Skip to main content

reciter/
reciter.rs

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// vim: set ft=rust et sw=2 ts=2 sts=2 cinoptions=2 tw=79 :