File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments