]> piware.de Git - learn-rust.git/blob - gtk3-hello-world/src/main.rs
concepts: rustfmt
[learn-rust.git] / gtk3-hello-world / src / main.rs
1 use gtk::prelude::*;
2 use gtk::{
3     Application, ApplicationWindow,
4     Button,
5     Widget,
6 };
7
8 fn build_ui(app: &Application) {
9     let button = Button::builder()
10         .label("Click me!")
11         .margin_top(12)
12         .margin_bottom(12)
13         .margin_start(12)
14         .margin_end(12)
15         .build();
16
17     button.connect_clicked(move |button| {
18         button.set_label("Hello world!");
19     });
20
21     let button_w: &Widget = button.upcast_ref::<Widget>();
22
23     println!("button visible: {}", button_w.is_visible());
24
25     let window = ApplicationWindow::builder()
26         .application(app)
27         .title("Hello GTK")
28         .child(&button)
29         .build();
30
31     window.show_all();
32 }
33
34 fn main() {
35     let app = Application::builder()
36         .application_id("ork.gtk-rs.example")
37         .build();
38
39     app.connect_activate(build_ui);
40     app.run();
41 }