--- CV/bin/cv 2003/11/03 16:28:38 1.7 +++ CV/bin/cv 2003/11/03 16:44:19 1.8 @@ -6,97 +6,8 @@ use Gtk2::CV::ImageWindow; use Gtk2::CV::Schnauzer; -$VERSION = 0.1; - my $viewer; -package cluster; - -use Glib::Object::Subclass Gtk2::Window; - -use Gtk2::SimpleList; - -sub INIT_INSTANCE { - my ($self) = @_; - - $self->set_default_size (600, 400); - - my $vbox = new Gtk2::VBox; - $self->add ($vbox); - - my $box = new Gtk2::HBox; - $vbox->add ($box); - $box->add (my $sw = new Gtk2::ScrolledWindow); - $sw->add ( - $self->{list} = new Gtk2::SimpleList - "#" => "int", - "Name" => "text", - ); - - $box->add ($self->{schnauzer} = new Gtk2::CV::Schnauzer); - - $self->{schnauzer}->signal_connect (activate => sub { $viewer->load_image ($_[1]) }); - - $self->{list}->get_column(0)->set_sort_column_id(0); - $self->{list}->get_column(1)->set_sort_column_id(1); - - $self->{list}->signal_connect (cursor_changed => sub { - my $row = scalar +($_[0]->get_selection->get_selected_rows)[0]->get_indices; - - my $k = $_[0]{data}[$row][1]; - $k = $self->{cluster}{$k}; - - $self->{schnauzer}->set_files ( - [sort map "$self->{path}/$_", @{$k->[1]}], - ); - - 1; - - }); -} - -sub analyse { - my ($self, $path) = @_; - - opendir my $dir, $path - or die "$path: $!"; - - $self->{path} = $path; - - my @files = map { - my $str = $_; - $str =~ s/[\-_ ]+/ /g; - $str =~ s/\.[^\.]+//g; - [$str, $_] - } - grep !/\.(sfv|crc|par|par2)$/, readdir $dir; - - my %cluster; - - my @regexps = ( - [qr<\d+$>, qr<^(.+?)\ *(\d+)$>], - [qr<\ \d+$>, qr<^(.+?)(\d+)\ +(\d+)$>], - ); - - for my $info (@regexps) { - my $re = $info->[0]; - for (@files) { - if ($_->[0] =~ $re && $_->[0] =~ $info->[1]) { - push @{ ($cluster{$1} ||= [ $info, []])->[1] }, $_->[1]; - } - } - } - - $self->{cluster} = \%cluster; - - while (my ($k, $v) = each %cluster) { - my $n = scalar @{$v->[1]}; - push @{$self->{list}{data}}, [$n, $k] if $n > 2; - } -} - -package main; - sub new_schnauzer { my $w = new Gtk2::Window; $w->add (my $s = new Gtk2::CV::Schnauzer); @@ -107,7 +18,7 @@ $s->set_dir ("."); $w->show_all; - $w; + $s; } sub std_keys { @@ -129,15 +40,16 @@ $viewer = new Gtk2::CV::ImageWindow; $viewer->signal_connect (key_press_event => \&std_keys); $viewer->signal_connect (delete_event => sub { main_quit Gtk2 }); -$viewer->show_all; -my $cluster = new cluster; +if (@ARGV) { + $viewer->load_image ($ARGV[0]); -#$cluster->analyse ("/fs/samsung/store-anime-done"); -#$cluster->show_all; + if (@ARGV > 1) { + new_schnauzer->set_files (\@ARGV); + } +} -#$viewer->set (path => "/fs/samsung/store-anime-done/yuumi_kazuaki_-_love_to_hajieki_to_sayonara_to_-_150.jpg"); -#$viewer->set (path => "/root/pix/kvvz.jpg"); +$viewer->show_all; main Gtk2;