From 9c735e2155eea458a78fe49339658dfcc3af577b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Capypara=20K=C3=B6pcke?= Date: Tue, 14 Nov 2023 15:52:52 +0100 Subject: [PATCH 1/2] library: Port Avatar demo to Rust --- src/Library/demos/Avatar/code.rs | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/Library/demos/Avatar/code.rs diff --git a/src/Library/demos/Avatar/code.rs b/src/Library/demos/Avatar/code.rs new file mode 100644 index 000000000..b1742523f --- /dev/null +++ b/src/Library/demos/Avatar/code.rs @@ -0,0 +1,38 @@ +use crate::workbench; +use adw::prelude::*; +use gtk::{gdk, gio, glib}; + +pub fn main() { + gtk::init().unwrap(); + + let button: gtk::Button = workbench::builder().object("button").unwrap(); + + let mut filter = gtk::FileFilter::new(); + filter.set_name(Some("Images")); + filter.add_pixbuf_formats(); + + let dialog = gtk::FileDialog::builder() + .title("Select an Avatar") + .modal(true) + .default_filter(&filter) + .build(); + + button.connect_clicked(move |_| { + dialog.open( + Some(workbench::window()), + None::<&gio::Cancellable>, + on_selected, + ) + }); +} + +fn on_selected(result: Result) { + match result { + Ok(file) => { + let avatar_image: adw::Avatar = workbench::builder().object("avatar_image").unwrap(); + let texture = gdk::Texture::from_file(&file).unwrap(); + avatar_image.set_custom_image(Some(&texture)); + } + Err(err) => eprintln!("Could not load avatar image: {err}."), + } +} From 5e066b895e59c8ac875805af2ecea6c8288962cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20K=C3=B6pcke?= Date: Tue, 14 Nov 2023 16:07:12 +0100 Subject: [PATCH 2/2] Update src/Library/demos/Avatar/code.rs Co-authored-by: Hofer-Julian <30049909+Hofer-Julian@users.noreply.github.com> --- src/Library/demos/Avatar/code.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Library/demos/Avatar/code.rs b/src/Library/demos/Avatar/code.rs index b1742523f..a42795533 100644 --- a/src/Library/demos/Avatar/code.rs +++ b/src/Library/demos/Avatar/code.rs @@ -21,12 +21,12 @@ pub fn main() { dialog.open( Some(workbench::window()), None::<&gio::Cancellable>, - on_selected, + on_clicked, ) }); } -fn on_selected(result: Result) { +fn on_clicked(result: Result) { match result { Ok(file) => { let avatar_image: adw::Avatar = workbench::builder().object("avatar_image").unwrap();