use menugen::{menu, menuitem, reciter};
fn build_menu() -> menu::Menu<()> {
let mut mb = menu::Builder::new();
let mut mib =
menuitem::Builder::new("test-sub-sub-menu", "Test sub-sub menu");
mib.weight(100).parent("test-sub-menu");
mb.add(mib);
let mut mib = menuitem::Builder::new("sys-shutdown", "Shutdown");
mib.weight(1000);
mb.add(mib);
let mut mib = menuitem::Builder::new("test-menu", "Test menu");
mib.weight(100);
mb.add(mib);
let mut mib = menuitem::Builder::new("test-sub-menu", "Test sub menu");
mib.weight(100).parent("test-menu");
mb.add(mib);
let mut mib = menuitem::Builder::new("test-menu-2", "Test menu too");
mib.weight(100);
mb.add(mib);
let mut mib = menuitem::Builder::new("test-menu-3", "Aaaaargh!");
mib.weight(100);
mb.add(mib);
let mut mib = menuitem::Builder::new("home", "Home");
mib.weight(0);
mb.add(mib);
let mib = menuitem::Builder::new("foo", "Foo");
mb.add(mib);
let mut mib = menuitem::Builder::new("foo-sub-1", "Foo Sub");
mib.parent("foo");
mb.add(mib);
let mut mib = menuitem::Builder::new("foo-sub-2", "Another Foo Sub");
mib.parent("foo");
mb.add(mib);
mb.build()
}
fn main() {
let menu = build_menu();
let indent_str = String::from(" ");
let mut indent = 0;
for ev in menu.iter_hier() {
match ev {
reciter::Event::EnterScope => {
println!("Enter scope");
indent += 1;
}
reciter::Event::MenuItem(mi) => {
println!(
"{}id: {}\ttitle: {}",
indent_str.repeat(indent),
mi.id(),
mi.title()
);
}
reciter::Event::LeaveScope => {
println!("Leave scope");
indent -= 1;
}
}
}
}