Blame platform-demos/C/image-viewer/image-viewer.vala

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