1 |
#!/opt/bin/perl |
2 |
|
3 |
use Gtk2 -init; |
4 |
use Gtk2::Gdk::Keysyms; |
5 |
|
6 |
use Gtk2::CV::ImageWindow; |
7 |
use Gtk2::CV::Schnauzer; |
8 |
|
9 |
my $viewer; |
10 |
|
11 |
sub new_schnauzer { |
12 |
my $w = new Gtk2::Window; |
13 |
$w->add (my $s = new Gtk2::CV::Schnauzer); |
14 |
|
15 |
$s->signal_connect (activate => sub { $viewer->load_image ($_[1]) }); |
16 |
$s->signal_connect (key_press_event => \&std_keys); |
17 |
|
18 |
$s->set_dir ("."); |
19 |
$w->show_all; |
20 |
|
21 |
$s; |
22 |
} |
23 |
|
24 |
sub std_keys { |
25 |
my $key = $_[1]->keyval; |
26 |
|
27 |
my $ctrl = grep $_ eq "control-mask", @{$_[1]->state}; |
28 |
|
29 |
if ($key == $Gtk2::Gdk::Keysyms{q}) { |
30 |
main_quit Gtk2; |
31 |
} elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { |
32 |
new_schnauzer; |
33 |
} else { |
34 |
return 0; |
35 |
} |
36 |
|
37 |
1; |
38 |
} |
39 |
|
40 |
$viewer = new Gtk2::CV::ImageWindow; |
41 |
$viewer->signal_connect (key_press_event => \&std_keys); |
42 |
$viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); |
43 |
|
44 |
if (@ARGV) { |
45 |
$viewer->load_image ($ARGV[0]); |
46 |
|
47 |
if (@ARGV > 1) { |
48 |
new_schnauzer->set_files (\@ARGV); |
49 |
} |
50 |
} |
51 |
|
52 |
$viewer->show_all; |
53 |
|
54 |
main Gtk2; |
55 |
|
56 |
|