using GLib; using Gtk; public class Main : Object { private Window window; private Image image; public Main () { window = new Window (); window.set_title ("Image Viewer in Vala"); // Set up the UI var box = new Box (Orientation.VERTICAL, 5); var button = new Button.with_label ("Open image"); image = new Image (); box.pack_start (image, true, true, 0); box.pack_start (button, false, false, 0); window.add (box); // Show open dialog when opening a file button.clicked.connect (on_open_image); window.show_all (); window.destroy.connect (main_quit); } public void dialog_response (Dialog dialog, int response_id) { switch (response_id) { case ResponseType.ACCEPT: var filename = (dialog as FileChooserDialog).get_filename (); image.set_from_file (filename); break; default: break; } dialog.destroy (); } [CCode (instance_pos = -1)] public void on_open_image (Button self) { var filter = new FileFilter (); var dialog = new FileChooserDialog ("Open image", window, FileChooserAction.OPEN, Stock.CANCEL, ResponseType.CANCEL, Stock.OK, ResponseType.ACCEPT); filter.add_pixbuf_formats (); dialog.add_filter (filter); dialog.response.connect (dialog_response); dialog.show (); } static int main (string[] args) { Gtk.init (ref args); var app = new Main (); Gtk.main (); return 0; } }