Viewing file: keyselector.pl (1.62 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
=pod
=head1 NAME
examples/keyselector.pl - Interactive key selection and storage
=head1 FEATURES
Contains an example how to use standard key selection and conversion features of Prima::KeySelector. A typical program with interactively configurable keys reflects the changes of key assignments in menu hot-keys and initialization file. In the example, changes are stored in ~/.prima/keyselector INI-file.
=cut
use strict; use Prima qw(Application KeySelector IniFile );
my $w = Prima::MainWindow-> create( text => 'Key selector', packPropagate => 0, menuItems => [ [ File => [ ['FileExit' => "~Exit and save changes" => '' , '@X', => sub { $_[0]-> close } ], ['FileQuit' => "Exit and ~discard changes", '', km::Alt|km::Shift|ord('X') => sub { $_[0]-> {saveOnExit} = 0; $_[0]-> close; }], ]], [ Edit => [ [ 'EditApply' => "~Apply changes", '', '^A' => sub { shift-> Editor-> apply; }], [ 'EditDefault' => "~Restore to defaults" => sub { shift-> Editor-> reset_to_defaults; }], ]], [], [ Help => sub { $::application-> open_help("file://$0") } ], ], onClose => sub { $_[0]-> menu-> keys_save( $_[0]-> {iniFile}-> section('Options')) if $_[0]-> {saveOnExit}}, ); $w-> {saveOnExit} = 1;
$w-> {iniFile} = Prima::IniFile-> create( file => Prima::Utils::path('keyselector'), ); $w-> menu-> keys_load($w-> {iniFile}-> section( 'Options'), 1); # 1 is because we're lazy and want menu accels to be autogenerated
$w-> insert( 'Prima::KeySelector::MenuEditor' => name => 'Editor', pack => { expand => 1, fill => 'both'}, menu => $w-> menu, );
run Prima;
|