An elmish architecture for fltk-rs.
Add flemish to your dependencies:
toml
[dependencies]
flemish = "0.1"
A usage example: ```rust use flemish::{ button::Button, frame::Frame, Flex, OnEvent, Sandbox, Settings };
pub fn main() { Counter::new().run(Settings { size: (300, 100), resizable: true, ..Default::default() }) }
struct Counter { value: i32, }
enum Message { IncrementPressed, DecrementPressed, }
impl OnEvent
impl Sandbox for Counter { type Message = Message;
fn new() -> Self {
Self::default()
}
fn title(&self) -> String {
String::from("Counter - fltk-rs")
}
fn update(&mut self, message: Message) {
match message {
Message::IncrementPressed => {
self.value += 1;
}
Message::DecrementPressed => {
self.value -= 1;
}
}
}
fn view(&mut self) -> Flex {
let mut col = Flex::default().with_type(fltk_flex::FlexType::Column);
let mut button1 = Button::default().with_label("Increment");
button1.on_event(Message::IncrementPressed);
Frame::default().with_label(&self.value.to_string());
let mut button2 = Button::default().with_label("Decrement");
button2.on_event(Message::DecrementPressed);
col.end();
col
}
} ```