flemish 0.7.0

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

fn main() {
    flemish::application("toggle_children", App::update, App::view)
        .settings(Settings {
            size: (260, 120),
            resizable: true,
            ..Default::default()
        })
        .run();
}

#[derive(Default)]
struct App {
    show_extra: bool,
}

#[derive(Clone, Copy)]
enum Msg {
    Toggle,
}

impl App {
    fn update(&mut self, msg: Msg) {
        match msg {
            Msg::Toggle => self.show_extra = !self.show_extra,
        }
    }

    fn view(&self) -> View<Msg> {
        let mut children: Vec<View<Msg>> = vec![Button::new("Toggle", Msg::Toggle).view()];
        if self.show_extra {
            children
                .push(Row::new(&[Frame::new("Extra").view(), Frame::new("Pane").view()]).view());
        }
        Column::new(&children).view()
    }
}