… | |
… | |
35 | (File::Spec->splitpath ($_[1]))[2], |
35 | (File::Spec->splitpath ($_[1]))[2], |
36 | -s $_[1]; |
36 | -s $_[1]; |
37 | $info->set_label ($label); |
37 | $info->set_label ($label); |
38 | $viewer->load_image ($_[1]); |
38 | $viewer->load_image ($_[1]); |
39 | }); |
39 | }); |
40 | $s->signal_connect (chdir => sub { |
|
|
41 | my ($self, $dir) = @_; |
|
|
42 | |
|
|
43 | my $path = Cwd::abs_path $dir; |
|
|
44 | |
|
|
45 | $self->realize; |
|
|
46 | $self->window->property_change ( |
|
|
47 | Gtk2::Gdk::Atom->intern ("_X_CWD", 0), |
|
|
48 | Gtk2::Gdk::Atom->intern ("UTF8_STRING", 0), |
|
|
49 | Gtk2::Gdk::CHARS, 'replace', |
|
|
50 | Encode::encode_utf8 $path, |
|
|
51 | ); |
|
|
52 | }); |
|
|
53 | |
40 | |
54 | Gtk2::CV::Plugin->call (new_schnauzer => $s); |
41 | Gtk2::CV::Plugin->call (new_schnauzer => $s); |
55 | |
42 | |
56 | $s; |
43 | $s; |
57 | } |
44 | } |
… | |
… | |
89 | $h->load_string (do { local $/; <DATA> }); |
76 | $h->load_string (do { local $/; <DATA> }); |
90 | } |
77 | } |
91 | |
78 | |
92 | $help->show_all; |
79 | $help->show_all; |
93 | } else { |
80 | } else { |
94 | #$mainwin->show_all; |
81 | return 0; |
95 | return $self->{schnauzer}->signal_emit (key_press_event => $_[1]); |
|
|
96 | } |
82 | } |
97 | |
83 | |
98 | 1; |
84 | 1 |
99 | } |
85 | } |
100 | |
86 | |
101 | { |
87 | { |
102 | $viewer = new Gtk2::CV::ImageWindow; |
88 | $viewer = new Gtk2::CV::ImageWindow; |
103 | |
89 | |
104 | $viewer->set_title ("CV: Image"); |
90 | $viewer->set_title ("CV: Image"); |
105 | |
91 | |
106 | $viewer->signal_connect (key_press_event => \&std_keys); |
92 | $viewer->signal_connect (key_press_event => sub { |
|
|
93 | &std_keys |
|
|
94 | or $schnauzer->signal_emit (key_press_event => $_[1]) |
|
|
95 | }); |
107 | $viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); |
96 | $viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); |
108 | |
97 | |
109 | $viewer->signal_connect (button3_press_event => sub { |
98 | $viewer->signal_connect (button3_press_event => sub { |
110 | $mainwin->visible |
99 | $mainwin->visible |
111 | ? $mainwin->hide |
100 | ? $mainwin->hide |
… | |
… | |
123 | $mainwin->signal_connect (delete_event => sub { $mainwin->hide; 1; }); |
112 | $mainwin->signal_connect (delete_event => sub { $mainwin->hide; 1; }); |
124 | |
113 | |
125 | $vbox->add ($schnauzer); |
114 | $vbox->add ($schnauzer); |
126 | $vbox->pack_end (my $frame = new Gtk2::Frame, 0, 0, 0); |
115 | $vbox->pack_end (my $frame = new Gtk2::Frame, 0, 0, 0); |
127 | $frame->add (my $hbox = new Gtk2::HBox 0, 0); |
116 | $frame->add (my $hbox = new Gtk2::HBox 0, 0); |
128 | $hbox->pack_start ((new Gtk2::Label "Info"), 0, 0, 0); |
117 | $hbox->pack_start ((new Gtk2::Label "Info: "), 0, 0, 0); |
129 | $hbox->pack_start (($info = new Gtk2::Label), 1, 1, 0); |
118 | $hbox->pack_end (my $labelwindow = new Gtk2::EventBox, 1, 1, 0); |
130 | $info->set (wrap => 1); |
119 | $labelwindow->add ($info = new Gtk2::Label); |
|
|
120 | $labelwindow->signal_connect_after (size_request => sub { $_[1]->width (0); 0 }); |
|
|
121 | $info->set (selectable => 1, xalign => 0, justify => "left"); |
131 | |
122 | |
132 | $schnauzer->set_geometry_hints; |
123 | $schnauzer->set_geometry_hints; |
133 | } |
124 | } |
134 | |
125 | |
135 | if (@ARGV) { |
126 | if (@ARGV) { |
136 | $schnauzer->set_paths ([map Glib::filename_to_unicode $_, @ARGV]); |
127 | $schnauzer->set_paths ([map Glib::filename_to_unicode $_, @ARGV]); |
137 | $schnauzer->show_all; |
128 | $schnauzer->show_all; |
|
|
129 | $viewer->show_all; |
138 | $schnauzer->handle_key ($Gtk2::Gdk::Keysyms{space}, []); |
130 | $schnauzer->handle_key ($Gtk2::Gdk::Keysyms{space}, []); |
139 | } else { |
131 | } else { |
140 | $schnauzer->set_dir (File::Spec->curdir); |
132 | $schnauzer->set_dir (File::Spec->curdir); |
141 | $mainwin->show_all; |
133 | $mainwin->show_all; |
142 | $viewer->show_all; |
134 | $viewer->show_all; |