]> piware.de Git - learn-rust.git/commitdiff
Add GTK 3 hello world
authorMartin Pitt <martin@piware.de>
Mon, 18 Apr 2022 18:34:34 +0000 (20:34 +0200)
committerMartin Pitt <martin@piware.de>
Mon, 18 Apr 2022 18:34:34 +0000 (20:34 +0200)
gtk3-hello-world/Cargo.toml [new file with mode: 0644]
gtk3-hello-world/src/main.rs [new file with mode: 0644]

diff --git a/gtk3-hello-world/Cargo.toml b/gtk3-hello-world/Cargo.toml
new file mode 100644 (file)
index 0000000..0d0f585
--- /dev/null
@@ -0,0 +1,9 @@
+[package]
+name = "gtk3-hello-world"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+gtk = "0.15"
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();
+}