Curses-UI-POE
view release on metacpan or search on metacpan
examples/demo-widgets view on Meta::CPAN
# Create the root object.
my $cui = new Curses::UI::POE (
-clear_on_exit => 1,
-debug => $debug,
);
# Demo index
my $current_demo = 1;
# Demo windows
my %w = ();
# ----------------------------------------------------------------------
# Create a menu
# ----------------------------------------------------------------------
sub select_demo($;)
{
my $nr = shift;
$current_demo = $nr;
$w{$current_demo}->focus;
}
my $file_menu = [
{ -label => 'Quit program', -value => sub {exit(0)} },
],
my $widget_demo_menu = [
{ -label => 'Label', -value => sub{select_demo(1)} },
{ -label => 'Buttons', -value => sub{select_demo(2)} },
{ -label => 'Checkbox', -value => sub{select_demo(3)} },
{ -label => 'Texteditor', -value => sub{select_demo(4)} },
{ -label => 'Listbox', -value => sub{select_demo(5)} },
{ -label => 'Popupmenu', -value => sub{select_demo(6)} },
{ -label => 'Progressbar', -value => sub{select_demo(7)} },
{ -label => 'Calendar', -value => sub{select_demo(8)} },
];
my $dialog_demo_menu = [
{ -label => 'Basic dialog', -value => sub{select_demo(9)} },
{ -label => 'Error dialog', -value => sub{select_demo(10)} },
{ -label => 'Filebrowser dialog', -value => sub{select_demo(11)} },
{ -label => 'Progress dialog', -value => sub{select_demo(12)} },
{ -label => 'Status dialog', -value => sub{select_demo(13)} },
{ -label => 'Calendar dialog', -value => sub{select_demo(14)} },
];
my $demo_menu = [
{ -label => 'Widget demos', -submenu => $widget_demo_menu },
{ -label => 'Dialog demos', -submenu => $dialog_demo_menu },
{ -label => '------------', -value => sub{} },
{ -label => 'Next demo', -value => \&goto_next_demo },
{ -label => 'Previous demo', -value => \&goto_prev_demo },
];
my $menu = [
{ -label => 'File', -submenu => $file_menu },
{ -label => 'Select demo', -submenu => $demo_menu },
];
$cui->add('menu', 'Menubar', -menu => $menu);
# ----------------------------------------------------------------------
# Create the explanation window
# ----------------------------------------------------------------------
my $w0 = $cui->add(
'w0', 'Window',
-border => 1,
-y => -1,
-height => 3,
);
$w0->add('explain', 'Label',
-text => "CTRL+P: previous demo CTRL+N: next demo "
. "CTRL+X: menu CTRL+Q: quit"
);
# ----------------------------------------------------------------------
# Create the demo windows
# ----------------------------------------------------------------------
my %screens = (
'1' => 'Label',
'2' => 'Buttons',
'3' => 'Checkbox',
'4' => 'Texteditor',
'5' => 'Listbox',
'6' => 'Popupmenu',
'7' => 'Progressbar',
'8' => 'Calendar',
'9' => 'Basic dialog',
'10' => 'Error dialog',
'11' => 'Filebrowser dialog',
'12' => 'Progress dialog',
'13' => 'Status dialog',
'14' => 'Calendar dialog',
);
my @screens = sort {$a<=>$b} keys %screens;
my %args = (
-border => 1,
-titlereverse => 0,
-padtop => 2,
-padbottom => 3,
-ipad => 1,
);
while (my ($nr, $title) = each %screens)
{
my $id = "window_$nr";
$w{$nr} = $cui->add(
$id, 'Window',
-title => "Curses::UI::POE demo: $title ($nr/" . @screens . ")",
%args
);
}
# ----------------------------------------------------------------------
# Label demo
# ----------------------------------------------------------------------
( run in 1.147 second using v1.01-cache-2.11-cpan-39bf76dae61 )