#![feature(proc_macro)]
extern crate gtk;
#[macro_use]
extern crate relm;
extern crate relm_attributes;
#[macro_use]
extern crate relm_derive;
use gtk::{Inhibit, WidgetExt};
use relm::Widget;
use relm_attributes::widget;
use self::Msg::*;
#[derive(Msg)]
pub enum LabelMsg {
}
#[derive(Clone)]
pub struct LabelModel {
counter: i32,
}
#[widget]
impl Widget for Label {
fn init_view(&self) {
self.label.set_text("Test");
}
fn model() -> LabelModel {
LabelModel {
counter: 0,
}
}
fn update(&mut self, _event: LabelMsg, _model: &mut LabelModel) {
self.label.set_text("");
}
view! {
#[name="label"]
gtk::Label {
text: &model.counter.to_string(),
}
}
}
#[derive(Msg)]
pub enum Msg {
Quit,
}
#[widget]
impl Widget for Win {
fn model() -> () {
}
fn update(&mut self, event: Msg, _model: &mut ()) {
match event {
Quit => gtk::main_quit(),
}
}
view! {
gtk::Window {
Label,
delete_event(_, _) => (Quit, Inhibit(false)),
}
}
}
fn main() {
relm::run::<Win>().unwrap();
}