1use termenu::*;
2
3macro_rules! quit_now {
4 ($content:expr, $($arg:tt)*) => {
5 eprintln!($content, $($arg)*);
6 std::process::exit(1);
7 };
8}
9
10fn main() {
11 let mut menu = Menu::new().unwrap_or_else(|e| {
12 quit_now!("Error: {}", e);
13 });
14
15 let mut item_list = Vec::new();
17 for i in 1..=100 {
18 item_list.push(Item::new(format!("{i}th item").as_str(), i));
19 }
20
21 let mut colorscheme = termenu::ColorScheme::default();
25 colorscheme
26 .set_title_style(
27 FontStyle::default()
28 .set_shape(FontShape::Bold | FontShape::Underline)
29 .set_fg_color(colored::Color::Green)
30 .build(),
31 )
32 .set_query_style(FontStyle::default().set_shape(FontShape::Italic).build())
33 .set_chosen_ln_style(
34 FontStyle::default()
35 .set_shape(FontShape::Underline)
36 .set_fg_color(colored::Color::Black)
37 .set_bg_color_256((215, 255, 0))
38 .build(),
39 )
40 .set_more_tag_style(
41 FontStyle::default()
42 .set_fg_color(colored::Color::Magenta)
43 .build(),
44 );
45
46 let selection = menu
48 .set_title("test selection:")
49 .show_end_tag(true)
50 .set_max_height(0.3)
51 .set_colorscheme(colorscheme)
52 .add_list(item_list)
53 .select() .unwrap_or_else(|e| {
55 quit_now!("Error: {}", e);
56 });
57
58 if let Some(selection) = selection {
60 println!("You selected: {selection}");
61 } else {
62 println!("You didn't select anything");
63 }
64}