aboutsummaryrefslogtreecommitdiff
path: root/src/gui.rs
blob: 32929ae7ad4ec17fbeed41c498c03b8dbb896d8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use fltk::{app, button::*, enums::*, frame::*, text::*, window::*};

#[derive(Debug, Clone, Copy)]
enum Message {
    Increment,
    Decrement,
}

pub fn gui_test() -> Result<(), Box<dyn std::error::Error>> {
    let app = app::App::default();

    let mut wind = SingleWindow::default()
        .with_size(800, 600)
        .center_screen()
        .with_label("Test");
    wind.make_resizable(true);

    let mut ptn = TextDisplay::default()
        .with_size(20 * 16, 30 * 16)
        .with_pos(800 - 20 * 16 - 10, 0);
    ptn.set_buffer(Some(TextBuffer::default()));

    let mut but_inc = Button::new(30, 40, 100, 40, "@+");
    let mut but_dec = Button::new(30, 120, 100, 40, "@square");
    wind.end();
    wind.show();

    let (s, r) = app::channel::<Message>();

    but_inc.emit(s, Message::Increment);
    but_dec.emit(s, Message::Decrement);

    let mut state = 0;

    while app.wait()? {
        match r.recv() {
            Some(Message::Increment) => {
                state += 1;
                ptn.insert(&format!("Increment {}\n", state));
            }

            Some(Message::Decrement) => {
                state -= 1;
                ptn.insert(&format!("Decrement {}\n", state));
            }
            None => (),
        }
    }
    Ok(())
}