use std::{cell::Cell, rc::Rc};
use gtk::{
glib::{self, clone},
prelude::*,
Application, ApplicationWindow, Button, Label, Orientation,
};
fn main() {
let app = Application::new(Some("eu.muehml.hello-world"), Default::default());
app.connect_activate(build_ui);
app.run();
}
fn build_ui(application: &Application) {
let window = ApplicationWindow::new(application);
window.set_title(Some("My GTK App"));
let button_increase = Button::with_label("Increase");
let button_decrease = Button::with_label("Decrease");
let number = Rc::new(Cell::new(0));
let label = Label::new(Some(&number.get().to_string()));
button_increase.connect_clicked(clone!(@strong number, @weak label => move |_| {
number.set(number.get() + 1);
label.set_label(&number.get().to_string());
}));
button_decrease.connect_clicked(clone!(@strong number, @weak label => move |_| {
number.set(number.get() - 1);
label.set_label(&number.get().to_string());}));
let gtk_box = gtk::Box::new(Orientation::Vertical, 0);
window.set_child(Some(>k_box));
gtk_box.append(&button_increase);
gtk_box.append(&label);
gtk_box.append(&button_decrease);
window.present();
}