flemish 0.7.0

An Elmish architecture for fltk-rs
Documentation
use flemish::{enums::Shortcut, view::*, Settings};

pub fn main() {
    flemish::application("menu app", MenuApp::update, MenuApp::view)
        .settings(Settings {
            size: (300, 300),
            resizable: true,
            ignore_esc_close: true,
            ..Default::default()
        })
        .run();
}

#[derive(Default)]
struct MenuApp {
    value: i32,
}

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

impl MenuApp {
    fn update(&mut self, message: Message) {
        match message {
            Message::Increment => {
                self.value += 1;
            }
            Message::Decrement => {
                self.value -= 1;
            }
        }
    }

    fn view(&self) -> View<Message> {
        Column::new(&[
            MenuBar::new(&[
                MenuItem::new(
                    "Command/Increment",
                    Shortcut::None,
                    MenuFlag::Normal,
                    Message::Increment,
                ),
                MenuItem::new(
                    "Command/Decrement",
                    Shortcut::None,
                    MenuFlag::Normal,
                    Message::Decrement,
                ),
            ])
            .fixed(30)
            .view(),
            Frame::new(&self.value.to_string()).view(),
        ])
        .view()
    }
}