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(())
}
|