use fltk::{app, button::*, enums::*, frame::*, text::*, window::*}; #[derive(Debug, Clone, Copy)] enum Message { Increment, Decrement, } pub fn gui_test() -> Result<(), Box> { 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::(); 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(()) }