App-Guiio
view release on metacpan or search on metacpan
setup/actions/context_menu_multi_wirl.pl view on Meta::CPAN
$self->call_hook('CANONIZE_CONNECTIONS', $self->{CONNECTIONS}, $self->get_character_size()) ;
$self->update_display() ;
}
#----------------------------------------------------------------------------------------------
sub remove_last_section_from_section_wirl_arrow
{
my ($self, $data) = @_ ;
my @selected_elements = $self->get_selected_elements(1) ;
if(@selected_elements == 1 && 'App::Guiio::stripes::section_wirl_arrow' eq ref $selected_elements[0])
{
my $element = $selected_elements[0] ;
$self->create_undo_snapshot() ;
$self->delete_connections_containing($element) ;
$element->remove_last_section() ;
$self->connect_elements($element) ;
$self->call_hook('CANONIZE_CONNECTIONS', $self->{CONNECTIONS}, $self->get_character_size()) ;
$self->update_display() ;
}
}
#----------------------------------------------------------------------------------------------
sub remove_first_section_from_section_wirl_arrow
{
my ($self, $data) = @_ ;
my @selected_elements = $self->get_selected_elements(1) ;
if(@selected_elements == 1 && 'App::Guiio::stripes::section_wirl_arrow' eq ref $selected_elements[0])
{
my $element = $selected_elements[0] ;
$self->create_undo_snapshot() ;
$self->delete_connections_containing($element) ;
my ($second_arrow_x_offset, $second_arrow_y_offset) = $element->remove_first_section() ;
$self->move_elements($second_arrow_x_offset, $second_arrow_y_offset, $element) ;
$self->update_display() ;
}
}
#----------------------------------------------------------------------------------------------
sub multi_wirl_context_menu
{
my ($self, $popup_x, $popup_y) = @_ ;
my @context_menu_entries ;
my ($character_width, $character_height) = $self->get_character_size() ;
my @selected_elements = $self->get_selected_elements(1) ;
if(@selected_elements == 1 && 'App::Guiio::stripes::section_wirl_arrow' eq ref $selected_elements[0])
{
my $element = $selected_elements[0] ;
my ($x, $y) = $self->closest_character($popup_x - ($element->{X} * $character_width) , $popup_y - ($element->{Y} * $character_height)) ;
push @context_menu_entries,
[
'/append section',
\&add_section_to_section_wirl_arrow,
{ELEMENT => $selected_elements[0], X => $x, Y => $y,}
] ;
if($element->is_connection_allowed('start'))
{
push @context_menu_entries, ["/Arrow connection/start doesn't connect", sub {$selected_elements[0]->allow_connection('start',0) ;}] ;
}
else
{
push @context_menu_entries, ["/Arrow connection/start connects", sub {$selected_elements[0]->allow_connection('start',1) ;}] ;
}
if($element->is_connection_allowed('end'))
{
push @context_menu_entries, ["/Arrow connection/end doesn't connect", sub {$selected_elements[0]->allow_connection('end',0) ;}] ;
}
else
{
push @context_menu_entries, ["/Arrow connection/end connects", sub {$selected_elements[0]->allow_connection('end',1) ;}] ;
}
push @context_menu_entries,
[
$selected_elements[0]->is_autoconnect_enabled() ? '/disable autoconnection' : '/enable autoconnection',
sub
{
$self->create_undo_snapshot() ;
$selected_elements[0]->enable_autoconnect(! $selected_elements[0]->is_autoconnect_enabled()) ;
$self->update_display() ;
}
] ;
push @context_menu_entries,
[
$selected_elements[0]->are_diagonals_allowed() ? '/no diagonals' : '/allow diagonals',
sub {$selected_elements[0]->allow_diagonals(! $selected_elements[0]->are_diagonals_allowed()) ;}
] ;
push @context_menu_entries,
[
'/Arrow type/dash',
\&change_arrow_type,
{ELEMENT => $selected_elements[0], TYPE => 'dash', X => $x, Y => $y,}
] ,
[
'/Arrow type/dot',
\&change_arrow_type,
{ELEMENT => $selected_elements[0], TYPE => 'dot', X => $x, Y => $y,}
],
[
'/Arrow type/octo',
\&change_arrow_type,
{ELEMENT => $selected_elements[0], TYPE => 'octo',X => $x, Y => $y,}
],
[
( run in 0.706 second using v1.01-cache-2.11-cpan-364913b4093 )