… | |
… | |
176 | |
176 | |
177 | our @ISA = qw/GCE::EditAction/; |
177 | our @ISA = qw/GCE::EditAction/; |
178 | |
178 | |
179 | sub name { 'perl' } |
179 | sub name { 'perl' } |
180 | |
180 | |
|
|
181 | sub special_arrow { 'GDK_HEART' } |
|
|
182 | |
181 | sub init { |
183 | sub init { |
182 | my ($self) = @_; |
184 | my ($self) = @_; |
183 | |
185 | |
184 | my $vb = new Gtk2::VBox; |
186 | my $vb = new Gtk2::VBox; |
185 | $vb->pack_start (my $sw = Gtk2::ScrolledWindow->new, 1, 1, 0); |
187 | $vb->pack_start (my $sw = Gtk2::ScrolledWindow->new, 1, 1, 0); |
… | |
… | |
342 | use strict; |
344 | use strict; |
343 | |
345 | |
344 | our @ISA = qw/GCE::EditAction::RadioModed/; |
346 | our @ISA = qw/GCE::EditAction::RadioModed/; |
345 | |
347 | |
346 | sub name { 'select' } |
348 | sub name { 'select' } |
|
|
349 | |
|
|
350 | sub special_arrow { 'GDK_CIRCLE' } |
347 | |
351 | |
348 | sub init { |
352 | sub init { |
349 | my ($self) = @_; |
353 | my ($self) = @_; |
350 | |
354 | |
351 | my $vb = new Gtk2::VBox; |
355 | my $vb = new Gtk2::VBox; |
… | |
… | |
356 | $vb->pack_start (my $bt = Gtk2::Button->new ("paste"), 0, 1, 0); |
360 | $vb->pack_start (my $bt = Gtk2::Button->new ("paste"), 0, 1, 0); |
357 | $bt->signal_connect (clicked => sub { $self->paste }); |
361 | $bt->signal_connect (clicked => sub { $self->paste }); |
358 | $vb->pack_start (Gtk2::HSeparator->new, 0, 1, 0); |
362 | $vb->pack_start (Gtk2::HSeparator->new, 0, 1, 0); |
359 | $self->add_mode_button ($vb, "place", "place"); |
363 | $self->add_mode_button ($vb, "place", "place"); |
360 | $self->add_mode_button ($vb, "erase", "erase"); |
364 | $self->add_mode_button ($vb, "erase", "erase"); |
|
|
365 | $self->add_mode_button ($vb, "perl", "perl"); |
361 | $vb->pack_start (my $bt = Gtk2::Button->new ("invoke"), 0, 1, 0); |
366 | $vb->pack_start (my $bt = Gtk2::Button->new ("invoke"), 0, 1, 0); |
362 | $bt->signal_connect (clicked => sub { $self->invoke }); |
367 | $bt->signal_connect (clicked => sub { $self->invoke }); |
363 | |
368 | |
364 | $self->tool_widget ($vb); |
369 | $self->tool_widget ($vb); |
365 | } |
370 | } |
… | |
… | |
390 | |
395 | |
391 | return unless $self->{selection}->{a}; |
396 | return unless $self->{selection}->{a}; |
392 | |
397 | |
393 | my ($x1, $y1); |
398 | my ($x1, $y1); |
394 | |
399 | |
395 | if ($xp) { |
400 | if (defined $xp) { |
396 | ($x1, $y1) = ($xp, $yp); |
401 | ($x1, $y1) = ($xp, $yp); |
397 | } else { |
402 | } else { |
398 | ($x1, $y1) = @{$self->{selection}->{a}}; |
403 | ($x1, $y1) = @{$self->{selection}->{a}}; |
399 | } |
404 | } |
400 | |
405 | |
… | |
… | |
440 | for (my $y = $y1; $y <= $y2; $y++) { |
445 | for (my $y = $y1; $y <= $y2; $y++) { |
441 | if ($m eq 'place') { |
446 | if ($m eq 'place') { |
442 | $::MAINWIN->{edit_collection}{place}->edit ($map, $x, $y); |
447 | $::MAINWIN->{edit_collection}{place}->edit ($map, $x, $y); |
443 | } elsif ($m eq 'erase') { |
448 | } elsif ($m eq 'erase') { |
444 | $::MAINWIN->{edit_collection}{erase}->edit ($map, $x, $y); |
449 | $::MAINWIN->{edit_collection}{erase}->edit ($map, $x, $y); |
|
|
450 | } elsif ($m eq 'perl') { |
|
|
451 | $::MAINWIN->{edit_collection}{perl}->edit ($map, $x, $y); |
445 | } |
452 | } |
446 | } |
453 | } |
447 | } |
454 | } |
448 | $self->SUPER::end ($map); |
455 | $self->SUPER::end ($map); |
449 | } |
456 | } |
… | |
… | |
507 | |
514 | |
508 | sub name { 'erase' } |
515 | sub name { 'erase' } |
509 | |
516 | |
510 | sub want_cursor { 0 } |
517 | sub want_cursor { 0 } |
511 | |
518 | |
512 | sub special_arrow { 'GDK_TCROSS' } |
519 | sub special_arrow { 'GDK_DIAMOND_CROSS' } |
513 | |
520 | |
514 | sub init { |
521 | sub init { |
515 | my ($self) = @_; |
522 | my ($self) = @_; |
516 | |
523 | |
517 | my $vb = new Gtk2::VBox; |
524 | my $vb = new Gtk2::VBox; |