App-Asciio

 view release on metacpan or  search on metacpan

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


use strict ;
use warnings ;

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

register_action_handlers
	(
	'Create multiple box elements from a text description' => ['C00-m', \&insert_multiple_boxes_from_text_description, 1],
	'Create multiple text elements from a text description' => ['C0S-M', \&insert_multiple_boxes_from_text_description, 0],
	'Flip transparent element background' => ['C00-t', \&transparent_elements],
	'Flip grid display' => ['000-g', \&flip_grid_display],
	'Flip color scheme' => ['CA0-c', \&flip_color_scheme],
	'Undo' => ['C00-z', \&undo],
	'Display undo stack statistics' => ['C0S-Z', \&display_undo_stack_statistics],
	'Redo' => ['C00-y', \&redo],
	'Display keyboard mapping' => ['000-k', \&display_keyboard_mapping],
	'Display commands' => ['C00-k', \&display_commands],
	'Display action files' => ['C0S-K', \&display_action_files],
	'Zoom in' => ['000-KP_Add', \&zoom, 1],
	'Zoom out' => ['000-minus', \&zoom, -1],
	'Zoom in' => ['000-plus', \&zoom, 1],
	'Zoom out' => ['000-KP_Subtract', \&zoom, -1],
	'Help' => ['000-F1', \&display_help],
	'External command output in a box' => ['000-x', \&external_command_output, 1],
	'External command output in a box no frame' => ['C00-x', \&external_command_output, 0],
	) ;

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

sub display_help
{
my ($self) = @_ ;


$self->display_message_modal(<<EOM) ;

Very short help:

k show the keyboard mapping
CTL+SHIFT+k 
	
b, Add a box
B, Add a box, edit the text directly
CTL+m, Add multiple boxes in one shot

t, Add a text element
CTL+SHIFT+M, Add multiple texts in one shot

quick link:
	select a box
	CTL+SHIFT+ left mouse on the other element
	
a, add a wirl arrow (AsciiO arrow)
SHIFT+A, add an angled arrow
d, change the direction of the arrows (selection)
f, flip the arrows (selection)


CTL+click, copy elements
SHIFT+click: add elements to the selection

CTL+g, group elements
CTL+u, ungroup object

Mouse right button shows a context menu.
Double click shows the element editing dialog

EOM
}

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

sub zoom
{
my ($self, $direction) = @_ ;

my ($family, $size) = $self->get_font() ;

$self->set_font($family, $size + $direction) ;
}

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

sub flip_color_scheme
{
my ($self) = @_ ;

$self->{COLOR_SCHEME} = 'system' unless exists $self->{COLOR_SCHEME} ;

if($self->{COLOR_SCHEME} eq 'system')
	{
	$self->flush_color_cache() ;
	$self->{COLOR_SCHEME} = 'linux' ;
	$self->{COLORS} =
		{
		background => [10, 10, 10],
		grid => [30, 30, 30],
		ruler_line => [25, 60, 80],
		selected_element_background => [25, 40, 50],
		element_background => [25, 25, 25],
		element_foreground => [150, 150, 150] ,
		selection_rectangle => [110, 0, 110],
		test => [0, 255, 255],
		group_colors =>
			[
			[[0x41, 0x32, 0x23], [0x2B, 0x21, 0x17]],
			[[0x21, 0x3C, 0x23], [0x15, 0x27, 0x17]],
			[[0x23, 0x32, 0x3C], [0x18, 0x22, 0x29]],
			[[0x10, 0x44, 0x44], [0x0A, 0x2C, 0x2C]],
			[[0x50, 0x28, 0x20], [0x2E, 0x17, 0x13]],
			],
			
		connection => [140, 65, 20],
		connection_point => [130, 100, 50],
		connector_point => [20, 100, 155],
		new_connection => [180, 0, 0],
		extra_point => [150, 110, 50], 
		} ;
		
	$self->update_display() ;
	}
else
	{
	$self->flush_color_cache() ;
	$self->{COLOR_SCHEME} = 'system' ;
	$self->{COLORS} =
		{
		background => [255, 255, 255],
		grid => [229, 235, 255],
		ruler_line => [85, 155, 225],
		selected_element_background => [180, 244, 255],
		element_background => [251, 251, 254],
		element_foreground => [0, 0, 0] ,
		selection_rectangle => [255, 0, 255],
		test => [0, 255, 255],
		
		group_colors =>
			[
			[[250, 221, 190], [250, 245, 239]],
			[[182, 250, 182], [241, 250, 241]],
			[[185, 219, 250], [244, 247, 250]],
			[[137, 250, 250], [235, 250, 250]],
			[[198, 229, 198], [239, 243, 239]],
			],
			
		connection => 'Chocolate',
		connection_point => [230, 198, 133],
		connector_point => 'DodgerBlue',
		new_connection => 'red' ,
		extra_point => [230, 198, 133],
		} ;

	$self->update_display() ;
	}
}

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

sub display_keyboard_mapping
{
my ($self) = @_ ;

#~ print Data::TreeDumper::DumpTree $self->{ACTIONS_BY_NAME}, 'ACTIONS_BY_NAME:';

my $keyboard_mapping = get_keyboard_mapping($self->{ACTIONS_BY_NAME}) ;

#~ print Data::TreeDumper::DumpTree $keyboard_mapping , 'Keyboard mapping:';

$self->show_dump_window
		(
		$keyboard_mapping ,
		'Keyboard mapping:',
		DISPLAY_ADDRESS => 0,
		)
}

sub get_keyboard_mapping
{
my ($actions, $list) = @_ ;

$list ||= [] ;
my $keyboard_mapping ;

for my $action (keys %{$actions})
	{
	if('ARRAY' eq ref $actions->{$action})
		{
		my $shortcut =  ref $actions->{$action}[0] eq '' 
						? $actions->{$action}[0] 
						:  '[' . join('/', @{$actions->{$action}[0]}) . ']';
		
		$keyboard_mapping->{$shortcut . ' => ' . $action} = {FILE=> $actions->{$action}[6]} ;



( run in 0.556 second using v1.01-cache-2.11-cpan-f56aa216473 )