#!/usr/bin/perl -w
use strict;
use Curses;

# Safe path (for "clear").
$ENV{PATH} = "/bin:/usr/bin";

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

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

use Curses::UI::RootWindow;
my $root = new Curses::UI::RootWindow;

my @file_menu = (
    {
	-label => 'Open file',
	-callback => \&menu_openfile,
    },{
	-label => 'Save file',
	-callback => \&menu_savefile,
    },{
	-label => 'Exit',
	-callback => \&exit_dialog,
    }
);

sub menu_openfile()
{
	my $file = $root->filebrowser( -editfilename => 0 );
	if (defined $file) {
		$root->dialog( -message => "You selected $file for open" );
	}
}

sub menu_savefile()
{
	my $file = $root->filebrowser( -editfilename => 1 );
	if (defined $file) {
		$root->dialog( -message => "You selected $file for save" );
	}
}
		
sub exit_dialog()
{
	my $return = $root->dialog(
			-title     => "Are you sure???", 
			-buttons   => ['< Yes >' , '< No >'],
			-values    => [1         , 0       ],
			-shortcuts => ['y'       , 'n'     ],
			-message => "Do you really want to quit\n"
				  . "from this marvelous program\n"
				  . "and miss out on all it's great "
				  . "features?"
	);

	if ($return)
	{
		endwin();
		system "clear";
		exit(0);
	}
}

my @submenu2 = (
    {
	-label => 'Option 1',
	-return => "SUBMENU_2_OPTION_1",
    },{
	-label => 'Option 2',
	-submenu => \@file_menu,
    },{
	-label => 'Option 3',
	-return => "SUBMENU_2_OPTION_3",
    }
);

my @help_menu = (
    {
	-label => 'About',
	-callback => sub { print STDERR "Help -> About selected\n" },
    },{
	-label => 'Submenu 1',
	-submenu => \@file_menu,
    },{
	-label => 'Submenu 2',
	-submenu => \@submenu2,
    }
);

my @menu = (
    {
	-label => 'File',
	-submenu => \@file_menu,
    },{
	-label => 'Edit',
	-submenu => \@file_menu,
    },{
	-label => 'Help',
	-submenu => \@help_menu,
    }
);

$root->add('menu','Curses::UI::MenuBar', 
	-menu => \@menu,
);

my $page1 = $root->add('page1', 'Curses::UI::Window',
	-border		=> 1,
	-ipad		=> 1,
);

$page1->add('label', 'Curses::UI::Label',
	-text => 'Press CTRL+X for the menu...'
);


$page1->add('checkbox2', 'Curses::UI::CheckBox',
	-y => -1,
	-x => -1,
	-label => 'Another checkbox',
);

$root->returnkeys("\cN", KEY_F(10));
$page1->returnkeys("\cX", KEY_F(10));

$root->ontop('page1');
$root->draw;

for (;;)
{
	$root->getobj('page1')->focus;
	$root->getobj('menu')->focus;
}






