]> piware.de Git - learn-rust.git/blobdiff - gtk3-hello-world/src/main.rs
Add GTK 3 hello world
[learn-rust.git] / gtk3-hello-world / src / main.rs
diff --git a/gtk3-hello-world/src/main.rs b/gtk3-hello-world/src/main.rs
new file mode 100644 (file)
index 0000000..a44bc62
--- /dev/null
@@ -0,0 +1,41 @@
+use gtk::prelude::*;
+use gtk::{
+    Application, ApplicationWindow,
+    Button,
+    Widget,
+};
+
+fn build_ui(app: &Application) {
+    let button = Button::builder()
+        .label("Click me!")
+        .margin_top(12)
+        .margin_bottom(12)
+        .margin_start(12)
+        .margin_end(12)
+        .build();
+
+    button.connect_clicked(move |button| {
+        button.set_label("Hello world!");
+    });
+
+    let button_w: &Widget = button.upcast_ref::<Widget>();
+
+    println!("button visible: {}", button_w.is_visible());
+
+    let window = ApplicationWindow::builder()
+        .application(app)
+        .title("Hello GTK")
+        .child(&button)
+        .build();
+
+    window.show_all();
+}
+
+fn main() {
+    let app = Application::builder()
+        .application_id("ork.gtk-rs.example")
+        .build();
+
+    app.connect_activate(build_ui);
+    app.run();
+}