# IUP::Menu example
#
# Creates a dialog with a menu with two submenus
use strict;
use warnings;
use IUP ':all';
# Creates a text, sets its value and turns on text readonly mode;
my $text = IUP::Text->new( READONLY=>"YES", VALUE=>"Selecting show or hide will affect this text", SIZE=>300 );
sub action_show {
$text->VISIBLE("YES");
return IUP_DEFAULT;
}
sub action_hide {
$text->VISIBLE("NO");
return IUP_DEFAULT;
}
sub action_exit {
return IUP_CLOSE
}
sub key_cb {
my ($self, $c) = @_;
return action_hide if $c == K_cH; #ctrl+H
return action_exit if $c == K_cE; #ctrl+E
return action_show if $c == K_cS; #ctrl+S
return IUP_DEFAULT;
}
# Creates items, sets its shortcut keys and deactivates edit item;
my $item_show = IUP::Item->new( TITLE=>"Show\tCtrl+S", ACTION=>\&action_show );
my $item_hide = IUP::Item->new( TITLE=>"Hide\tCtrl+H", ACTION=>\&action_hide );
my $item_edit = IUP::Item->new( TITLE=>"Edit", ACTIVE=>"NO" );
my $item_exit = IUP::Item->new( TITLE=>"Exit\tCtrl+E", ACTION=>\&action_exit );
# Creates two menus;
my $menu_file = IUP::Menu->new( child=>[$item_exit] );
my $menu_text = IUP::Menu->new( child=>[$item_show, $item_hide, $item_edit] );
# Creates two submenus;
my $submenu_file = IUP::Submenu->new( child=>$menu_file, TITLE=>"File" );
my $submenu_text = IUP::Submenu->new( child=>$menu_text, TITLE=>"Text" );
# Creates main menu with two submenus;
my $menu = IUP::Menu->new( child=>[$submenu_file, $submenu_text] );
# Creates dialog with a text, sets its title and associates a menu to it;
my $dlg = IUP::Dialog->new( child=>$text, TITLE=>"IupMenu Example", MENU=>$menu, K_ANY=>\&key_cb );
# Shows dialog in the center of the screen;
$dlg->ShowXY( IUP_CENTER, IUP_CENTER );
IUP->MainLoop;