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

Comparing CV/bin/cv (file contents):
Revision 1.8 by root, Mon Nov 3 16:44:19 2003 UTC vs.
Revision 1.11 by root, Wed Nov 5 01:29:47 2003 UTC

1#!/opt/bin/perl 1#!/opt/bin/perl
2
3=head1 NAME
4
5cv - a fast gtk+ image viewer modeled after xv
6
7=head1 SYNOPSIS
8
9 cv [file...]
10
11=head1 DESCRIPTION
12
13None yet.
14
15=head2 THE IMAGE WINDOW
16
17You can use the following keys in the image window:
18
19 q quit the program
20 < half the image size
21 > double the image size
22 , shrink the image by 10%
23 . enlarge the image by 10%
24 n reset to normal size
25 m maximize to screensize
26 M maxime to screensize, respecting image aspect
27 u uncrop
28 r set scaling mode to 'nearest' (fastest)
29 s set scaling mode to 'bilinear' (default)
30 S set scaling mode to 'hyper' (slowest)
31 t rotate clockwise 90°
32 T rotate counterclockwise°
33 ctrl-v open a new visual schnauzer window for the current dir
34
35The following keys are redirected to the default visual schnauzer window:
36
37 space next image
38 backspace last image
39
40=head2 THE VISUAL SCHNAUZER
41
42You can use the following keys in the schnauzer window:
43
44 space move to and display next image
45 backspace move to and display previous image
46 return display selected picture
47
48 cursor keys move selection
49 page-up move one page up
50 page-down move one page down
51 home move to first file
52 end move to last file
53
54 ctrl-g generate icons for the selected files
55 ctrl-d delete selected files WITHOUT ASKING AGAIN
56
57=head1 BUGS/TODO
58
59 rotate on disk
60 print
61 lots of ui issues
62 save(?)
63 preferences
64
65=head1 AUTHOR
66
67Marc Lehmann <cv@plan9.de>.
68
69=cut
2 70
3use Gtk2 -init; 71use Gtk2 -init;
4use Gtk2::Gdk::Keysyms; 72use Gtk2::Gdk::Keysyms;
5 73
6use Gtk2::CV::ImageWindow; 74use Gtk2::CV::ImageWindow;
7use Gtk2::CV::Schnauzer; 75use Gtk2::CV::Schnauzer;
8 76
9my $viewer; 77my $viewer;
78my $schnauzer;
10 79
11sub new_schnauzer { 80sub new_schnauzer {
12 my $w = new Gtk2::Window; 81 my $w = new Gtk2::Window;
13 $w->add (my $s = new Gtk2::CV::Schnauzer); 82 $w->add (my $s = new Gtk2::CV::Schnauzer);
14 83
15 $s->signal_connect (activate => sub { $viewer->load_image ($_[1]) }); 84 $s->signal_connect (activate => sub { $viewer->load_image ($_[1]) });
16 $s->signal_connect (key_press_event => \&std_keys); 85 $s->signal_connect_after (key_press_event => \&std_keys);
17 86
18 $s->set_dir ("."); 87 $s->set_dir (".");
19 $w->show_all; 88 $w->show_all;
20 89
21 $s; 90 $s;
22} 91}
23 92
24sub std_keys { 93sub std_keys {
25 my $key = $_[1]->keyval; 94 my $key = $_[1]->keyval;
95 my $state = $_[1]->state;
26 96
27 my $ctrl = grep $_ eq "control-mask", @{$_[1]->state}; 97 my $ctrl = grep $_ eq "control-mask", @$state;
28 98
29 if ($key == $Gtk2::Gdk::Keysyms{q}) { 99 if ($key == $Gtk2::Gdk::Keysyms{q}) {
30 main_quit Gtk2; 100 main_quit Gtk2;
31 } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { 101 } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) {
32 new_schnauzer; 102 new_schnauzer;
33 } else { 103 } else {
34 return 0; 104 $schnauzer->handle_key ($key, $state);
35 } 105 }
36 106
37 1; 107 1;
38} 108}
39 109
40$viewer = new Gtk2::CV::ImageWindow; 110$viewer = new Gtk2::CV::ImageWindow;
41$viewer->signal_connect (key_press_event => \&std_keys); 111$viewer->signal_connect (key_press_event => \&std_keys);
42$viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); 112$viewer->signal_connect (delete_event => sub { main_quit Gtk2 });
43 113
114$schnauzer = new_schnauzer;
115
44if (@ARGV) { 116if (@ARGV) {
45 $viewer->load_image ($ARGV[0]); 117 $viewer->load_image ($ARGV[0]);
46 118
47 if (@ARGV > 1) { 119 if (@ARGV > 1) {
48 new_schnauzer->set_files (\@ARGV); 120 $schnauzer->set_paths (\@ARGV);
49 } 121 }
50} 122}
51 123
52$viewer->show_all; 124$viewer->show_all;
53 125

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines