pub fn button<T: Into<String>>(name: T) -> TerminalMenuItemExpand description
Make a button terminal-menu item. Exits the menu with all the parent menus when pressed.
ยงExample
use terminal_menu::{menu, button, run, mut_menu};
let my_menu = menu(vec![
button("Alice"),
button("Bob")
]);
run(&my_menu);
println!("Selected Button: {}", mut_menu(&my_menu).selected_item_name());Examples found in repository?
More examples
examples/long.rs (line 10)
5fn main() {
6 use terminal_menu::{menu, button, run, mut_menu};
7 let menu = menu(
8
9 // create buttons representing numbers from 1 to 100
10 (1..100).map(|n| button(format!("{}", n))).collect()
11
12 );
13 run(&menu);
14 if mut_menu(&menu).canceled() {
15 println!("Canceled!");
16 return;
17 }
18 println!("{}", mut_menu(&menu).selected_item_name());
19}examples/async.rs (line 9)
5fn main() {
6 use terminal_menu::{menu, label, button, activate, wait_for_exit};
7 let menu = menu(vec![
8 label("do work when menu open!"),
9 button("get me out of here!")
10 ]);
11
12 // like run but doesn't block
13 activate(&menu);
14
15 // do stuff
16 let mut num: usize = 1;
17 for i in 2..10 {
18 num *= i;
19 }
20
21 wait_for_exit(&menu);
22 println!("{}", num);
23}examples/colors.rs (line 19)
5fn main() {
6 use terminal_menu::*;
7
8 // see the crossterm crate for all the color options
9 use crossterm::style::Color;
10
11 let menu = menu(vec![
12
13 label("COLOR!"),
14 label("Red").colorize(Color::Red),
15 label("Green").colorize(Color::Green),
16 label("Blue").colorize(Color::Blue),
17
18 // selected item is always cyan
19 button("Cyan")
20 ]);
21 run(&menu);
22}examples/simple.rs (line 20)
5fn main() {
6 use terminal_menu::{menu, label, button, run, mut_menu};
7 let menu = menu(vec![
8
9 // label:
10 // not selectable, useful as a title, separator, etc...
11 label("----------------------"),
12 label("terminal-menu"),
13 label("use wasd or arrow keys"),
14 label("enter to select"),
15 label("'q' or esc to exit"),
16 label("-----------------------"),
17
18 // button:
19 // exit the menu
20 button("Alice"),
21 button("Bob"),
22 button("Charlie")
23
24 ]);
25 run(&menu);
26
27 // if the menu was exited
28 if (mut_menu(&menu).canceled()) {
29 println!("Canceled!");
30 return;
31 }
32
33 // you can get the selected buttons name like so:
34 println!("Selected: {}", mut_menu(&menu).selected_item_name());
35}examples/selections.rs (line 25)
5fn main() {
6 use terminal_menu::{menu, label, button, list, scroll, run, mut_menu};
7 let menu = menu(vec![
8 label("lists and scrolls"),
9
10 // with list and scroll you can select a value from a group of values
11 // you can change the selected value with arrow keys, wasd, or enter
12
13 // use arrow keys or wasd
14 // enter to select
15
16 // list:
17 // show all values
18 // surround the selected value with brackets
19 list("li", vec!["Alice", "Bob", "Charlie"]),
20
21 // scroll:
22 // show only the selected item
23 scroll("sc", vec!["Alice", "Bob", "Charlie"]),
24
25 button("exit")
26 ]);
27 run(&menu);
28 {
29 let mm = mut_menu(&menu);
30 if mm.canceled() {
31 println!("Canceled!");
32 return;
33 }
34 println!("{}", mm.selection_value("li"));
35 println!("{}", mm.selection_value("sc"));
36 }
37}Additional examples can be found in: