App-Asciio

 view release on metacpan or  search on metacpan

setup/actions/context_menu_box.pl  view on Meta::CPAN

			}
		], 
		[
			'/Box type/star', 
			\&change_box_type,
			{
			ELEMENT => $element, 
			TYPE => 'star',
			}
		] ;
		
	push @context_menu_entries, 
		[
		$element->is_autoconnect_enabled() ? '/disable autoconnection' :  '/enable autoconnection', 
		sub 
			{
			$self->create_undo_snapshot() ;
			$element->enable_autoconnect(! $element->is_autoconnect_enabled()) ;
			$self->update_display() ;
			}
		] ;
		
	if($element->is_border_connection_allowed())
		{
		push @context_menu_entries, ["/Disable border connection", sub {$element->allow_border_connection(0) ;}] ;
		}
	else
		{
		push @context_menu_entries, ["/Enable border connection", sub {$element->allow_border_connection(1) ;}] ;
		}
		
	if($element->is_auto_shrink())
		{
		push @context_menu_entries, ["/Disable auto shrink", sub {$element->flip_auto_shrink() ;}] ;
		}
	else
		{
		push @context_menu_entries, ["/Enable auto shrink", sub {$element->shrink() ; $element->flip_auto_shrink() ; }] ;
		}
	}
	
return(@context_menu_entries) ;
}

#----------------------------------------------------------------------------------------------

sub change_box_type
{
my ($self, $data) = @_ ;

use Clone ;

if(exists $box_types{$data->{TYPE}})
	{
	$self->create_undo_snapshot() ;
	
	my $element_type = $data->{ELEMENT}->get_box_type() ;
	
	my $new_type = Clone::clone($box_types{$data->{TYPE}}) ;
	
	for (my $frame_element_index = 0 ; $frame_element_index < @{$new_type} ; $frame_element_index++)
		{
		$new_type->[$frame_element_index][$DISPLAY] = $element_type->[$frame_element_index][$DISPLAY] 
		}
		
	$data->{ELEMENT}->set_box_type($new_type) ;
	
	$self->update_display() ;
	}
}

#----------------------------------------------------------------------------------------------

sub box_selected_element
{
my ($self, $data) = @_ ;

$self->create_undo_snapshot() ;

my $element_type = $data->{ELEMENT}->get_box_type() ;
my ($title, $text) = $data->{ELEMENT}->get_text() ;

for (0 .. $#$element_type)
	{
	next if $_ == $TITLE_SEPARATOR && $title eq '' ;
	
	$element_type->[$_][$DISPLAY] = 1 ;
	}

$data->{ELEMENT}->set_box_type($element_type) ;

$self->update_display() ;
}

#----------------------------------------------------------------------------------------------



( run in 0.707 second using v1.01-cache-2.11-cpan-e1769b4cff6 )