#!/opt/bin/perl use Gtk2 -init; use Gtk2::Gdk::Keysyms; use Gtk2::CV::ImageWindow; use Gtk2::CV::Schnauzer; my $viewer; my $schnauzer; sub new_schnauzer { my $w = new Gtk2::Window; $w->add (my $s = new Gtk2::CV::Schnauzer); $s->signal_connect (activate => sub { $viewer->load_image ($_[1]) }); $s->signal_connect_after (key_press_event => \&std_keys); $s->set_dir ("."); $w->show_all; $s; } sub std_keys { my $key = $_[1]->keyval; my $state = $_[1]->state; my $ctrl = grep $_ eq "control-mask", @$state; if ($key == $Gtk2::Gdk::Keysyms{q}) { main_quit Gtk2; } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { new_schnauzer; } else { $schnauzer->handle_key ($key, $state); } 1; } $viewer = new Gtk2::CV::ImageWindow; $viewer->signal_connect (key_press_event => \&std_keys); $viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); $schnauzer = new_schnauzer; if (@ARGV) { $viewer->load_image ($ARGV[0]); if (@ARGV > 1) { $schnauzer->set_files (\@ARGV); } } $viewer->show_all; main Gtk2;