… | |
… | |
103 | if ($key == $Gtk2::Gdk::Keysyms{q}) { |
103 | if ($key == $Gtk2::Gdk::Keysyms{q}) { |
104 | $viewer->destroy; |
104 | $viewer->destroy; |
105 | } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { |
105 | } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{v}) { |
106 | my $w = new Gtk2::Window; |
106 | my $w = new Gtk2::Window; |
107 | |
107 | |
|
|
108 | $w->set_role ("schnauzer"); |
108 | $w->set_title ("CV: Schnauzer"); |
109 | $w->set_title ("CV: Schnauzer"); |
109 | $w->add (my $s = new_schnauzer); |
110 | $w->add (my $s = new_schnauzer); |
110 | $s->set_dir (File::Spec->curdir); |
111 | $s->set_dir (File::Spec->curdir); |
111 | $s->set_geometry_hints; |
112 | $s->set_geometry_hints; |
112 | $w->show_all; |
113 | $w->show_all; |
… | |
… | |
114 | } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{h}) { |
115 | } elsif ($ctrl && $key == $Gtk2::Gdk::Keysyms{h}) { |
115 | unless ($help) { |
116 | unless ($help) { |
116 | require Gtk2::PodViewer; |
117 | require Gtk2::PodViewer; |
117 | |
118 | |
118 | $help = new Gtk2::Window; |
119 | $help = new Gtk2::Window; |
|
|
120 | $help->set_role ("help"); |
119 | $help->set_title ("CV: Help"); |
121 | $help->set_title ("CV: Help"); |
120 | $help->set_default_size (500, 300); |
122 | $help->set_default_size (500, 300); |
121 | $help->signal_connect (delete_event => sub { $help->hide; 1 }); |
123 | $help->signal_connect (delete_event => sub { $help->hide; 1 }); |
122 | |
124 | |
123 | $help->add (my $sw = new Gtk2::ScrolledWindow); |
125 | $help->add (my $sw = new Gtk2::ScrolledWindow); |
… | |
… | |
140 | $::cur_viewer = $viewer; |
142 | $::cur_viewer = $viewer; |
141 | |
143 | |
142 | $schnauzer = new_schnauzer; |
144 | $schnauzer = new_schnauzer; |
143 | |
145 | |
144 | $mainwin = new Gtk2::Window; |
146 | $mainwin = new Gtk2::Window; |
|
|
147 | $mainwin->set_role ("main"); |
145 | $mainwin->set_title ("CV"); |
148 | $mainwin->set_title ("CV"); |
146 | $mainwin->add (my $vbox = new Gtk2::VBox); |
149 | $mainwin->add (my $vbox = new Gtk2::VBox); |
147 | $mainwin->signal_connect (delete_event => sub { $mainwin->hide; 1 }); |
150 | $mainwin->signal_connect (delete_event => sub { $mainwin->hide; 1 }); |
148 | |
151 | |
149 | $vbox->add ($schnauzer); |
152 | $vbox->add ($schnauzer); |
… | |
… | |
159 | } |
162 | } |
160 | |
163 | |
161 | if (@ARGV) { |
164 | if (@ARGV) { |
162 | @ARGV == 1 && -d $ARGV[0] |
165 | @ARGV == 1 && -d $ARGV[0] |
163 | ? $schnauzer->set_dir (Glib::filename_to_unicode shift) |
166 | ? $schnauzer->set_dir (Glib::filename_to_unicode shift) |
164 | : $schnauzer->set_paths ([map Glib::filename_to_unicode $_, @ARGV]); |
167 | : $schnauzer->set_paths ([map Glib::filename_to_unicode $_, @ARGV], 1); |
165 | $schnauzer->show_all; |
168 | $schnauzer->show_all; |
166 | $schnauzer->handle_key ($Gtk2::Gdk::Keysyms{space}, []); |
169 | $schnauzer->handle_key ($Gtk2::Gdk::Keysyms{space}, []); |
167 | } else { |
170 | } else { |
168 | $schnauzer->set_dir (File::Spec->curdir); |
171 | $schnauzer->set_dir (File::Spec->curdir); |
169 | $mainwin->show_all; |
172 | $mainwin->show_all; |
… | |
… | |
296 | r set scaling mode to 'nearest' (fastest) |
299 | r set scaling mode to 'nearest' (fastest) |
297 | s set scaling mode to 'bilinear' (default) |
300 | s set scaling mode to 'bilinear' (default) |
298 | shift-s set scaling mode to 'hyper' (slowest) |
301 | shift-s set scaling mode to 'hyper' (slowest) |
299 | t rotate clockwise 90° |
302 | t rotate clockwise 90° |
300 | T rotate counterclockwise° |
303 | T rotate counterclockwise° |
|
|
304 | a apply all rotations loslessly to a jpeg file (using exiftran) |
301 | ctrl-v open a new visual schnauzer window for the current dir |
305 | ctrl-v open a new visual schnauzer window for the current dir |
302 | ctrl-c clone the current image window |
306 | ctrl-c clone the current image window |
303 | ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image |
307 | ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image |
304 | ctrl-p fire up the print dialog |
308 | ctrl-p fire up the print dialog |
305 | escape cancel a crop action |
309 | escape cancel a crop action |