From 5931f0a88bd65592cb76fcac25896471dd82186d Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Mon, 18 Apr 2022 20:34:34 +0200 Subject: [PATCH] Add GTK 3 hello world --- gtk3-hello-world/Cargo.toml | 9 ++++++++ gtk3-hello-world/src/main.rs | 41 ++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 gtk3-hello-world/Cargo.toml create mode 100644 gtk3-hello-world/src/main.rs diff --git a/gtk3-hello-world/Cargo.toml b/gtk3-hello-world/Cargo.toml new file mode 100644 index 0000000..0d0f585 --- /dev/null +++ b/gtk3-hello-world/Cargo.toml @@ -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 index 0000000..a44bc62 --- /dev/null +++ b/gtk3-hello-world/src/main.rs @@ -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::(); + + 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(); +} -- 2.39.2