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

Packit 1470ea
/* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
Packit 1470ea
Packit 1470ea
#include <gtkmm.h>
Packit 1470ea
#include <iostream>
Packit 1470ea
Packit 1470ea
Gtk::Image* image = 0;
Packit 1470ea
Packit 1470ea
static void
Packit 1470ea
on_open_image ()
Packit 1470ea
{
Packit 1470ea
	Gtk::FileChooserDialog dialog("Open image",
Packit 1470ea
	                              Gtk::FILE_CHOOSER_ACTION_OPEN);
Packit 1470ea
	dialog.add_button (Gtk::Stock::OPEN,
Packit 1470ea
	                   Gtk::RESPONSE_ACCEPT);
Packit 1470ea
	dialog.add_button (Gtk::Stock::CANCEL,
Packit 1470ea
	                   Gtk::RESPONSE_CANCEL);
Packit 1470ea
Packit 1470ea
	Glib::RefPtr<Gtk::FileFilter> filter =
Packit 1470ea
		Gtk::FileFilter::create();
Packit 1470ea
	filter->add_pixbuf_formats();
Packit 1470ea
	filter->set_name("Images");
Packit 1470ea
	dialog.add_filter (filter);
Packit 1470ea
Packit 1470ea
	const int response = dialog.run();
Packit 1470ea
	dialog.hide();
Packit 1470ea
Packit 1470ea
	switch (response)
Packit 1470ea
	{
Packit 1470ea
		case Gtk::RESPONSE_ACCEPT:
Packit 1470ea
			image->set(dialog.get_filename());
Packit 1470ea
			break;
Packit 1470ea
		default:
Packit 1470ea
			break;
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
int
Packit 1470ea
main (int argc, char *argv[])
Packit 1470ea
{
Packit 1470ea
	Gtk::Main kit(argc, argv);
Packit 1470ea
Packit 1470ea
	Gtk::Window main_win;
Packit 1470ea
	main_win.set_title ("image-viewer-cpp");
Packit 1470ea
Packit 1470ea
	Gtk::Box* box = Gtk::manage(new Gtk::Box());
Packit 1470ea
	box->set_orientation (Gtk::ORIENTATION_VERTICAL);
Packit 1470ea
	box->set_spacing(6);
Packit 1470ea
	main_win.add(*box);
Packit 1470ea
Packit 1470ea
	image = Gtk::manage(new Gtk::Image());
Packit 1470ea
	box->pack_start (*image, true, true);
Packit 1470ea
	
Packit 1470ea
	Gtk::Button* button = Gtk::manage(new Gtk::Button("Open Imageā€¦"));
Packit 1470ea
	button->signal_clicked().connect (
Packit 1470ea
		sigc::ptr_fun(&on_open_image));
Packit 1470ea
	box->pack_start (*button, false, false);
Packit 1470ea
Packit 1470ea
	main_win.show_all_children();
Packit 1470ea
	kit.run(main_win);
Packit 1470ea
Packit 1470ea
	return 0;
Packit 1470ea
}