Skip to content

Commit ca0fe63

Browse files
Merge pull request #74 from Adithyan-KV/file-chooser
Implements opening images using file chooser
2 parents b65eb3e + 680addb commit ca0fe63

File tree

1 file changed

+44
-6
lines changed

1 file changed

+44
-6
lines changed

src/DropArea.vala

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)