flemish 0.7.0

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

pub fn main() {
    flemish::application("progress", State::update, State::view)
        .settings(Settings {
            size: (300, 100),
            resizable: true,
            ..Default::default()
        })
        .subscription(State::subscription)
        .run_with(State::new);
}

struct State {
    value: f64,
}

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

impl State {
    fn new() -> Self {
        let value = 0.0;
        Self { value }
    }
    fn subscription(&self) -> Subscription<Message> {
        Subscription::every(std::time::Duration::from_millis(300)).map(|_| Message::Tick)
    }

    fn update(&mut self, message: Message) {
        match message {
            Message::Tick => {
                self.value += 1.;
            }
        }
    }

    fn view(&self) -> View<Message> {
        Column::new(&[Progress::new(self.value).view()])
            .margins(10, 40, 10, 40)
            .view()
    }
}