#!/usr/bin/perl -w

# ----------------------------------------------------------------------
# Script: cascaded_menu
#
# (c) 2001-2002 by Maurice Makaay. All rights reserved.
# This file is part of Curses::UI. Curses::UI is free software.
# You can redistribute it and/or modify it under the same terms
# as perl itself.
#
# e-mail: maurice@gitaar.net
# ----------------------------------------------------------------------

use strict;
use Curses;

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

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

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

use Curses::UI;
my $cui = new Curses::UI;

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

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

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}
);

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

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

sub menu_savefile()
{
	my $file = $cui->filebrowser( -editfilename => 1 );
	if (defined $file) {
		$cui->dialog( -message => "You selected $file for save" );
	}
}
		
sub exit_dialog()
{
	my $return = $cui->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);
	}
}

# ----------------------------------------------------------------------
# Create widgets
# ----------------------------------------------------------------------

$cui->add(
	'menu','MenuBar', 
	-menu => \@menu,
);

my $page1 = $cui->add(
	'page1', 'Window',
	-border		=> 1,
	-ipad		=> 1,
);

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


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

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

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

$cui->draw;

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