#!/usr/bin/perl -w

use strict;
use Curses;

# Deny STDERR output.
open STDERR, ">/dev/null";

use FindBin;
use lib "$FindBin::RealBin/../lib";
use Curses::UI;

my $cui = new Curses::UI ( -clear_on_exit => 1 );


# ----------------------------------------------------------------------
# Menu structure definition.
# ----------------------------------------------------------------------

# Callback routine.
sub exit_demo($;)
{
	my $this = shift;
	$this->root->dialog("Goodbye, world!");
	exit(1);
}

my @menu1 = (
    {-label => 'menuitem 1', -return => 'menu 1, menuitem 1'},
    {-label => 'menuitem 2', -return => 'menu 1, menuitem 2'},
    {-label => 'menuitem 3', -return => 'menu 1, menuitem 3'},
    {-label => 'menuitem 4', -return => 'menu 1, menuitem 4'},
    {-label => 'menuitem 5', -return => 'menu 1, menuitem 5'},
    {-label => 'menuitem 6', -return => 'menu 1, menuitem 6'},
    {-label => 'exit now!',  -callback => \&exit_demo },
);

my @menu2 = (
    {-label => 'menuitem 1', -return => 'menu 2, menuitem 1'},
    {-label => 'menuitem 2', -return => 'menu 2, menuitem 2'},
    {-label => 'menuitem 3', -return => 'menu 2, menuitem 3'},
    {-label => 'menuitem 4', -return => 'menu 2, menuitem 4'},
    {-label => 'menuitem 5', -return => 'menu 2, menuitem 5'},
    {-label => 'menuitem 6', -return => 'menu 2, menuitem 6'},
);

my @menu3_sub1_sub1 = (
    {-label => 'menuitem 1', -return => 'menu 3, submenu 1, submenu 1, menuitem 1'},
    {-label => 'menuitem 2', -return => 'menu 3, submenu 1, submenu 1, menuitem 2'},
    {-label => 'menuitem 3', -return => 'menu 3, submenu 1, submenu 1, menuitem 3'},
    {-label => 'menuitem 4', -return => 'menu 3, submenu 1, submenu 1, menuitem 4'},
    {-label => 'menuitem 5', -return => 'menu 3, submenu 1, submenu 1, menuitem 5'},
);

my @menu3_sub1 = (
    {-label => 'menuitem 1', -return => 'menu 3, submenu 1, menuitem 1'},
    {-label => 'menuitem 2', -return => 'menu 3, submenu 1, menuitem 2'},
    {-label => 'menuitem 3', -return => 'menu 3, submenu 1, menuitem 3'},
    {-label => 'menuitem 4', -return => 'menu 3, submenu 1, menuitem 4'},
    {-label => 'menuitem 5', -return => 'menu 3, submenu 1, menuitem 5'},
    {-label => 'submenu 1', -submenu => \@menu3_sub1_sub1},
);

my @menu3 = (
    {-label => 'menuitem 1', -return => 'menu 3, menuitem 1'},
    {-label => 'menuitem 2', -return => 'menu 3, menuitem 2'},
    {-label => 'menuitem 3', -return => 'menu 3, menuitem 3'},
    {-label => 'menuitem 4', -return => 'menu 3, menuitem 4'},
    {-label => 'menuitem 5', -return => 'menu 3, menuitem 5'},
    {-label => 'submenu 1', -submenu => \@menu3_sub1},
);

my @menu = (
    {-label => 'menu 1', -submenu => \@menu1 },
    {-label => 'menu 2', -submenu => \@menu2 },
    {-label => 'menu 3', -submenu => \@menu3 },
);

# ----------------------------------------------------------------------
# Callback routines
# ----------------------------------------------------------------------

my $menu = $cui->add( 'menu', 'MenuBar', -menu => \@menu );
$menu->returnkeys("\cQ");

# ----------------------------------------------------------------------
# The main loop
# ----------------------------------------------------------------------

$cui->draw;
my $which = $menu->focus;

$cui->dialog("You selected $which") if defined $which;

