example_4/
example_4.rs

1use animaterm::prelude::*;
2use animaterm::utilities::{message_box, progress_bar};
3
4fn main() {
5    let mut mgr = Manager::new(true, None, None, None, None, None);
6
7    let screen_size = mgr.screen_size();
8    let title = "Navigation help".to_string();
9    let text =
10        "Press 0 to select display 0\n Press 1 to select display 1\n Press q or Shift+q to quit\n"
11            .to_string();
12    let keep_existing = true;
13    let first_display_id = 0;
14    let mbox = message_box(Some(title.clone()), text.clone(), Glyph::default(), 32, 5);
15    let mbid = mgr
16        .add_graphic(mbox, 1, (1, screen_size.1 as isize - 6))
17        .unwrap();
18    mgr.set_graphic(mbid, 0, true);
19    let empty = Glyph::new(
20        ' ',
21        Color::green(),
22        Color::black(),
23        false,
24        false,
25        false,
26        false,
27        false,
28        false,
29        false,
30        false,
31        false,
32        false,
33    );
34    let full = Glyph::new(
35        'X',
36        Color::green(),
37        Color::black(),
38        false,
39        false,
40        false,
41        false,
42        false,
43        false,
44        false,
45        false,
46        false,
47        false,
48    );
49    let gid = mgr
50        .add_graphic(progress_bar(screen_size.0, empty, full, None), 0, (1, 1))
51        .unwrap();
52    mgr.start_animation(gid, 0);
53    let second_display_id = mgr.new_display(keep_existing);
54    // let result = mgr.read_result();
55    // if let Ok(AnimOk::DisplayStored(disp_id)) = result {
56    //     first_display_id = disp_id;
57    // }
58    let mbox = message_box(Some(title), text, Glyph::default(), 32, 5);
59    let mbid = mgr
60        .add_graphic(mbox, 1, (1, screen_size.1 as isize - 6))
61        .unwrap();
62    mgr.set_graphic(mbid, 0, true);
63
64    let mut keep_running = true;
65    while keep_running {
66        if let Some(key) = mgr.read_key() {
67            match key {
68                Key::Zero => mgr.restore_display(first_display_id, true),
69                Key::One => mgr.restore_display(second_display_id, true),
70                Key::Two => mgr.restore_display(2, true),
71                Key::Q | Key::ShiftQ => {
72                    keep_running = false;
73                }
74                _ => continue,
75            }
76        }
77    }
78
79    mgr.terminate();
80}