1use fltk::{
2 app,
3 button::Button,
4 enums::{Color, FrameType},
5 frame::Frame,
6 group::Flex,
7 prelude::*,
8 window::Window,
9};
10use std::{cell::RefCell, rc::Rc};
11
12fn main() {
13 let app = app::App::default().with_scheme(app::Scheme::Gtk);
14 app::background(0x62, 0x00, 0xee);
15 app::set_visible_focus(false);
16
17 let count = Rc::new(RefCell::new(0));
18
19 let mut wind = Window::default().with_size(160, 200).with_label("Counter");
20 let mut flex = Flex::default_fill().column();
21 flex.set_margins(30, 40, 30, 40);
22 flex.set_pad(10);
23 let mut but_inc = Button::default().with_label("+");
24 let mut frame = Frame::default().with_label(&count.borrow().to_string());
25 let mut but_dec = Button::default().with_label("-");
26 flex.end();
27 wind.end();
29 wind.show();
30
31 but_inc.set_callback({
32 let count = count.clone();
33 let mut frame = frame.clone();
34 move |_| {
35 *count.borrow_mut() += 1;
36 frame.set_label(&count.borrow().to_string());
37 }
38 });
39
40 but_dec.set_callback(move |_| {
41 *count.borrow_mut() -= 1;
42 frame.set_label(&count.borrow().to_string());
43 });
44
45 wind.set_color(Color::White);
47 but_inc.set_color(Color::from_u32(0x304FFE));
48 but_inc.set_selection_color(Color::Green);
49 but_inc.set_label_size(20);
50 but_inc.set_frame(FrameType::FlatBox);
51 but_inc.set_label_color(Color::White);
52 but_dec.set_color(Color::from_u32(0x2962FF));
53 but_dec.set_selection_color(Color::Red);
54 but_dec.set_frame(FrameType::FlatBox);
55 but_dec.set_label_size(20);
56 but_dec.set_label_color(Color::White);
57 app.run().unwrap();
60}