forked from fltk-rs/fltk-rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
counter2.rs
33 lines (27 loc) · 932 Bytes
/
counter2.rs
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
use fltk::{app, button::*, frame::*, window::*};
#[derive(Debug, Clone, Copy)]
pub enum Message {
Increment,
Decrement,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let app = app::App::default();
let mut wind = Window::new(200, 200, 160, 200, "Counter");
let mut frame = Frame::new(30, 80, 100, 40, "0");
let mut but_inc = Button::new(30, 40, 100, 40, "+");
let mut but_dec = Button::new(30, 120, 100, 40, "-");
wind.end();
wind.show();
let (s, r) = app::channel::<Message>();
but_inc.emit(s, Message::Increment);
but_dec.emit(s, Message::Decrement);
while app.wait() {
let label: i32 = frame.label().parse()?;
match r.recv() {
Some(Message::Increment) => frame.set_label(&(label + 1).to_string()),
Some(Message::Decrement) => frame.set_label(&(label - 1).to_string()),
None => (),
}
}
Ok(())
}