@@ -24,7 +24,7 @@ namespace Resizer {
2424
2525 private Gtk . Image image;
2626 private Gtk . Image image2;
27- private Gtk . Label drag_label ;
27+ private Gtk . Box overlay_box ;
2828
2929 construct {
3030 image = new Gtk .Image ();
@@ -41,7 +41,20 @@ namespace Resizer {
4141 image2. margin_top = 6 ;
4242 image2. visible = false ;
4343
44- drag_label = new Gtk .Label (_(" Drop Image(s) Here" ));
44+ overlay_box = new Gtk .Box (Gtk . Orientation . VERTICAL , 0 );
45+ overlay_box. valign = Gtk . Align . CENTER ;
46+ overlay_box. halign = Gtk . Align . CENTER ;
47+
48+ var or_label = new Gtk .Label (_(" or" ));
49+ var or_label_style_context = or_label. get_style_context ();
50+ or_label_style_context. add_class (Granite . STYLE_CLASS_H2_LABEL );
51+ or_label_style_context. add_class (Gtk . STYLE_CLASS_DIM_LABEL );
52+
53+ var select_button = new Gtk .Button .with_label (_(" Select image" ));
54+ select_button. get_style_context (). add_class (Gtk . STYLE_CLASS_SUGGESTED_ACTION );
55+ select_button. clicked. connect (open_files_using_file_chooser);
56+
57+ var drag_label = new Gtk .Label (_(" Drop Image(s) Here" ));
4558 drag_label. justify = Gtk . Justification . CENTER ;
4659
4760 var drag_label_style_context = drag_label. get_style_context ();
@@ -53,8 +66,12 @@ namespace Resizer {
5366 images. halign = Gtk . Align . CENTER ;
5467 images. put (image2, 0 , 0 );
5568 images. put (image, 0 , 0 );
56- this . add(images);
57- this . add_overlay (drag_label);
69+
70+ overlay_box. pack_start (drag_label);
71+ overlay_box. pack_start (or_label);
72+ overlay_box. pack_start (select_button);
73+ this . add (images);
74+ this . add_overlay (overlay_box);
5875 }
5976 public void show_preview (File [] files ) throws Error {
6077
@@ -66,8 +83,8 @@ namespace Resizer {
6683 true
6784 );
6885
69- drag_label . no_show_all = true ;
70- drag_label . visible = false ;
86+ overlay_box . no_show_all = true ;
87+ overlay_box . visible = false ;
7188
7289 image. set_from_pixbuf (pixbuf);
7390 image. height_request = pixbuf. height;
@@ -91,5 +108,26 @@ namespace Resizer {
91108 image. margin_top = 6 ;
92109 }
93110 }
111+
112+ private void open_files_using_file_chooser () {
113+ var file_chooser = new Gtk .FileChooserNative (_(" Open Image(s)" ),
114+ null ,
115+ Gtk . FileChooserAction . OPEN ,
116+ _(" Open" ),
117+ _(" Cancel" ));
118+
119+ var files = new GenericArray<File > ();
120+ file_chooser. select_multiple = true ;
121+ var response = file_chooser. run ();
122+ if (response == Gtk . ResponseType . ACCEPT ) {
123+ var uris = file_chooser. get_uris ();
124+ foreach (var uri in uris) {
125+ stdout. printf (" opening: %s\n " , uri);
126+ var file = File . new_for_uri (uri);
127+ files. add (file);
128+ Resizer . get_default (). files = files. data;
129+ }
130+ }
131+ }
94132 }
95133}
0 commit comments