flemish 0.7.0

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

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

#[derive(Default)]
struct State {
    text: String,
}

#[derive(Debug, Clone)]
enum Message {
    Input(String),
    Print,
}

impl State {
    fn update(&mut self, message: Message) {
        match message {
            Message::Input(s) => self.text = s,
            Message::Print => println!("Hello {}", &self.text),
        }
    }

    fn view(&self) -> View<Message> {
        Column::new(&[
            Frame::new("Enter name:").view(),
            Input::new(&self.text)
                .on_input(Message::Input)
                .on_submit(|_| Message::Print)
                .view(),
            Button::new("Submit", Message::Print).view(),
        ])
        .view()
    }
}