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

Packit 1470ea
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
Packit 1470ea
Packit 1470ea
#include <config.h>
Packit 1470ea
#include <gtk/gtk.h>
Packit 1470ea
Packit 1470ea
Packit 1470ea
#include <glib/gi18n.h>
Packit 1470ea
Packit 1470ea
static void
Packit 1470ea
on_open_image (GtkButton* button, gpointer user_data)
Packit 1470ea
{
Packit 1470ea
	GtkWidget *image = GTK_WIDGET (user_data);
Packit 1470ea
	GtkWidget *toplevel = gtk_widget_get_toplevel (image);
Packit 1470ea
	GtkFileFilter *filter = gtk_file_filter_new ();
Packit 1470ea
	GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Open image"),
Packit 1470ea
	                                                 GTK_WINDOW (toplevel),
Packit 1470ea
	                                                 GTK_FILE_CHOOSER_ACTION_OPEN,
Packit 1470ea
	                                                 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
Packit 1470ea
	                                                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
Packit 1470ea
	                                                 NULL);
Packit 1470ea
Packit 1470ea
	gtk_file_filter_add_pixbuf_formats (filter);
Packit 1470ea
	gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),
Packit 1470ea
	                             filter);
Packit 1470ea
	
Packit 1470ea
	switch (gtk_dialog_run (GTK_DIALOG (dialog)))
Packit 1470ea
	{
Packit 1470ea
		case GTK_RESPONSE_ACCEPT:
Packit 1470ea
		{
Packit 1470ea
			gchar *filename = 
Packit 1470ea
				gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
Packit 1470ea
			gtk_image_set_from_file (GTK_IMAGE (image), filename);
Packit 1470ea
			break;
Packit 1470ea
		}
Packit 1470ea
		default:
Packit 1470ea
			break;
Packit 1470ea
	}
Packit 1470ea
	gtk_widget_destroy (dialog);
Packit 1470ea
}
Packit 1470ea
	
Packit 1470ea
Packit 1470ea
static GtkWidget*
Packit 1470ea
create_window (void)
Packit 1470ea
{
Packit 1470ea
	GtkWidget *window;
Packit 1470ea
	GtkWidget *button;
Packit 1470ea
	GtkWidget *image;
Packit 1470ea
	GtkWidget *box;
Packit 1470ea
Packit 1470ea
	/* Set up the UI */
Packit 1470ea
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 1470ea
	gtk_window_set_title (GTK_WINDOW (window), "image-viewer-c");
Packit 1470ea
Packit 1470ea
	box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
Packit 1470ea
	button = gtk_button_new_with_label (_("Open image"));
Packit 1470ea
	image = gtk_image_new ();
Packit 1470ea
Packit 1470ea
	gtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0);
Packit 1470ea
	gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
Packit 1470ea
Packit 1470ea
	gtk_container_add (GTK_CONTAINER (window), box);
Packit 1470ea
Packit 1470ea
	/* Connect signals */
Packit 1470ea
Packit 1470ea
	/* Show open dialog when opening a file */
Packit 1470ea
	g_signal_connect (button, "clicked", G_CALLBACK (on_open_image), image);
Packit 1470ea
	
Packit 1470ea
	/* Exit when the window is closed */
Packit 1470ea
	g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
Packit 1470ea
	
Packit 1470ea
	return window;
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
int
Packit 1470ea
main (int argc, char *argv[])
Packit 1470ea
{
Packit 1470ea
 	GtkWidget *window;
Packit 1470ea
Packit 1470ea
Packit 1470ea
#ifdef ENABLE_NLS
Packit 1470ea
	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
Packit 1470ea
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
Packit 1470ea
	textdomain (GETTEXT_PACKAGE);
Packit 1470ea
#endif
Packit 1470ea
Packit 1470ea
	
Packit 1470ea
	gtk_init (&argc, &argv);
Packit 1470ea
Packit 1470ea
	window = create_window ();
Packit 1470ea
	gtk_widget_show_all (window);
Packit 1470ea
Packit 1470ea
	gtk_main ();
Packit 1470ea
	return 0;
Packit 1470ea
}