Skip to content

Commit 87a3c0e

Browse files
library: Port Avatar demo to Rust (#805)
Co-authored-by: Hofer-Julian <30049909+Hofer-Julian@users.noreply.github.com>
1 parent 2606cbe commit 87a3c0e

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/Library/demos/Avatar/code.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
use crate::workbench;
2+
use adw::prelude::*;
3+
use gtk::{gdk, gio, glib};
4+
5+
pub fn main() {
6+
gtk::init().unwrap();
7+
8+
let button: gtk::Button = workbench::builder().object("button").unwrap();
9+
10+
let mut filter = gtk::FileFilter::new();
11+
filter.set_name(Some("Images"));
12+
filter.add_pixbuf_formats();
13+
14+
let dialog = gtk::FileDialog::builder()
15+
.title("Select an Avatar")
16+
.modal(true)
17+
.default_filter(&filter)
18+
.build();
19+
20+
button.connect_clicked(move |_| {
21+
dialog.open(
22+
Some(workbench::window()),
23+
None::<&gio::Cancellable>,
24+
on_clicked,
25+
)
26+
});
27+
}
28+
29+
fn on_clicked(result: Result<gio::File, glib::Error>) {
30+
match result {
31+
Ok(file) => {
32+
let avatar_image: adw::Avatar = workbench::builder().object("avatar_image").unwrap();
33+
let texture = gdk::Texture::from_file(&file).unwrap();
34+
avatar_image.set_custom_image(Some(&texture));
35+
}
36+
Err(err) => eprintln!("Could not load avatar image: {err}."),
37+
}
38+
}

0 commit comments

Comments
 (0)