use menu_genie::{MenuAction, MenuBuilder, MgErrorKind};
fn main() {
let mut menu = MenuBuilder::new()
.with_menu(1)
.with_menu_item("Add Todo", MenuAction::Nothing)
.with_menu_item("Delete Todo", MenuAction::Nothing)
.with_menu_item("Edit Todo", MenuAction::Navigate(2))
.with_quit_button()
.with_menu(2)
.with_menu_item("Change todo's name", MenuAction::Nothing)
.with_menu_item("Change todo's description", MenuAction::Nothing)
.with_menu_item("Change todo's priority", MenuAction::Navigate(3))
.with_menu_item("Invalid option", MenuAction::Navigate(5))
.with_back_button()
.with_menu(3)
.with_menu_item("Set priority to Low", MenuAction::Nothing)
.with_menu_item("Set priority to Medium", MenuAction::Nothing)
.with_menu_item("Set priority to High", MenuAction::Nothing)
.with_menu_item("Back to start", MenuAction::BackToStart)
.with_back_button()
.build();
loop {
match menu.prompt() {
Ok(tuple) => match tuple {
(0, 0) => break,
(1, 1) => println!("ACTION: Add Todo"),
(1, 2) => println!("ACTION: Delete Todo"),
(2, 1) => println!("ACTION: Change todo's name"),
(2, 2) => println!("ACTION: Change todo's description"),
(3, 1) => println!("ACTION: Set priority to Low"),
(3, 2) => println!("ACTION: Set priority to Medium"),
(3, 3) => println!("ACTION: Set priority to High"),
_ => (),
},
Err(e) => {
println!("{e}");
match e.kind() {
MgErrorKind::MissingMenu(_) | MgErrorKind::MissingMenuItem(..) => break,
_ => (),
}
}
}
}
println!("Bye!")
}