Gtk2-CV

 view release on metacpan or  search on metacpan

lib/Gtk2/CV/Plugin/PatRenamer.pm  view on Meta::CPAN

            });
            $w->signal_connect (activate => $activate);
            $table->attach ($w, $col, $col + 1, $row + 1, $row + 2, ['fill'], ['fill'], 0, 0);
         } else {
            $w = new Gtk2::Label $dat->[-1];
            $w->set_alignment (0, 1);
            $table->attach ($w, $col, $col + 1, $row + 1, $row + 2, ['fill'], ['fill'], 4, 2);
         }
      }

      push @replabels, my $w = new Gtk2::Label $names[$row];
      $table->attach ($w, scalar @$pat, 1 + scalar @$pat, $row + 1, $row + 2, ['fill'], ['fill'], 4, 2);
   }

   $update->();
   $self->show_all;
}

#############################################################################

use Gtk2::CV::Plugin;

sub new_renamer {
   my ($schnauzer) = @_;

   my $renamer = new Gtk2::CV::Plugin::PatRenamer
      schnauzer => $schnauzer,
      modal => 1,
      default_width => 1500, default_height => 1100,
      window_position => "mouse";
   $renamer->start ($schnauzer);
}

sub new_schnauzer {
   my ($self, $schnauzer) = @_;

   $schnauzer->signal_connect (key_press_event => sub {
      my ($self, $event) = @_;
      my $key = $_[1]->keyval;
      my $state = $_[1]->state;
   
      1 <= scalar keys %{ $schnauzer->{sel} }
         or return;

      my $ctrl = grep $_ eq "control-mask", @{$_[1]->state};
      if ($ctrl && $key == $Gtk2::Gdk::Keysyms{r}) {
         new_renamer $schnauzer;
      } else {
         return 0;
      }

      1
   });

   $schnauzer->signal_connect (popup => sub {
      my ($self, $menu, $cursor, $event) = @_;

      2 <= scalar keys %{ $schnauzer->{sel} }
         or return;

      $menu->append (my $item = new Gtk2::MenuItem "Pattern Rename...");
      $item->signal_connect (activate => sub {
         new_renamer $schnauzer;
      });
   });
}

1



( run in 0.592 second using v1.01-cache-2.11-cpan-39bf76dae61 )