ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/bin/cv
(Generate patch)

Comparing CV/bin/cv (file contents):
Revision 1.61 by root, Sat Sep 24 00:51:28 2005 UTC vs.
Revision 1.62 by root, Tue Oct 4 04:55:47 2005 UTC

23 23
24use File::Spec; 24use File::Spec;
25 25
26my $mainwin; 26my $mainwin;
27my $viewer; 27my $viewer;
28my $viewer_count;
28my $schnauzer; 29my $schnauzer;
29my $info; 30my $info;
30my $help; 31my $help;
31 32
32my $schnauzer_idx = 0; 33my $schnauzer_idx = 0;
38 $s->signal_connect (activate => sub { 39 $s->signal_connect (activate => sub {
39 my $label = sprintf "%s (%d)", 40 my $label = sprintf "%s (%d)",
40 (File::Spec->splitpath ($_[1]))[2], 41 (File::Spec->splitpath ($_[1]))[2],
41 -s $_[1]; 42 -s $_[1];
42 $info->set_label ($label); 43 $info->set_label ($label);
43 $viewer->load_image ($_[1]); 44 $viewer->load_image ($_[1]) if $viewer; # TODO: error, or chose ANY viewer
44 }); 45 });
45 46
46 Gtk2::CV::Plugin->call (new_schnauzer => $s); 47 Gtk2::CV::Plugin->call (new_schnauzer => $s);
47 48
48 $s 49 $s
50}
51
52sub new_viewer {
53 my $self = new Gtk2::CV::ImageWindow;
54
55 $viewer_count++;
56
57 $self->set_title ("CV: Image");
58
59 $self->signal_connect (key_press_event => sub {
60 $viewer = $_[0];
61
62 my $key = $_[1]->keyval;
63 my $state = $_[1]->state;
64
65 if ($state * "control-mask" && $key == $Gtk2::Gdk::Keysyms{c}) {
66 my $viewer = new_viewer ();
67 $viewer->set_image ($_[0]->{image});
68 $viewer->show_all;
69 1
70 } else {
71 &std_keys
72 or $schnauzer->signal_emit (key_press_event => $_[1])
73 }
74 });
75 $self->signal_connect (destroy => sub {
76 $viewer = undef if $viewer == $_[0];
77
78 main_quit Gtk2 unless --$viewer_count;
79 });
80
81 $self->signal_connect (button3_press_event => sub {
82 $mainwin->visible
83 ? $mainwin->hide
84 : $mainwin->show_all;
85 1
86 });
87
88 Gtk2::CV::Plugin->call (new_imagewindow => $self);
89
90 $self
49} 91}
50 92
51sub std_keys { 93sub std_keys {
52 my $key = $_[1]->keyval; 94 my $key = $_[1]->keyval;
53 my $state = $_[1]->state; 95 my $state = $_[1]->state;
54 96
55 my $ctrl = $state * "control-mask"; 97 my $ctrl = $state * "control-mask";
56 98
57 if ($key == $Gtk2::Gdk::Keysyms{q}) { 99 if ($key == $Gtk2::Gdk::Keysyms{q}) {
58 main_quit Gtk2; 100 $viewer->destroy;
59 } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { 101 } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) {
60 my $w = new Gtk2::Window; 102 my $w = new Gtk2::Window;
61 103
62 $w->set_title ("CV: Schnauzer"); 104 $w->set_title ("CV: Schnauzer");
63 $w->add (my $s = new_schnauzer); 105 $w->add (my $s = new_schnauzer);
88 130
89 1 131 1
90} 132}
91 133
92{ 134{
93 $viewer = new Gtk2::CV::ImageWindow; 135 $viewer = new_viewer;
94 136 $::cur_viewer = $viewer;
95 $viewer->set_title ("CV: Image");
96
97 $viewer->signal_connect (key_press_event => sub {
98 &std_keys
99 or $schnauzer->signal_emit (key_press_event => $_[1])
100 });
101 $viewer->signal_connect (delete_event => sub { main_quit Gtk2 });
102
103 $viewer->signal_connect (button3_press_event => sub {
104 $mainwin->visible
105 ? $mainwin->hide
106 : $mainwin->show_all;
107 1
108 });
109
110 Gtk2::CV::Plugin->call (new_imagewindow => $viewer);
111 137
112 $schnauzer = new_schnauzer; 138 $schnauzer = new_schnauzer;
113 139
114 $mainwin = new Gtk2::Window; 140 $mainwin = new Gtk2::Window;
115 $mainwin->set_title ("CV"); 141 $mainwin->set_title ("CV");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines