# IUP::Item Example
use strict;
use warnings;
use IUP ':all';
# create the main application windows (dialog)
my $text = IUP::Text->new( VALUE=>"This is an initial text", MULTILINE=>"YES", VISIBLECOLUMNS=>15, VISIBLELINES=>15 );
my $item_save = IUP::Item->new( TITLE=>"Save\tCtrl+S", ACTIVE=>"NO" );
my $item_autosave = IUP::Item->new( TITLE=>"Auto Save\tCtrl+A", VALUE=>"ON" );
my $item_exit = IUP::Item->new( TITLE=>"Exit\tAlt+X" );
my $menu_file = IUP::Menu->new( child=>[$item_save, $item_autosave, $item_exit] );
my $submenu_file = IUP::Submenu->new( TITLE=>"File", child=>$menu_file );
my $menu = IUP::Menu->new( child=>$submenu_file );
my $dlg = IUP::Dialog->new( child=>$text, TITLE=>"IUP::Item", MENU=>$menu );
# setup callbacks
$item_exit->ACTION(\&hide_cb);
$item_autosave->ACTION(\&autosave_cb);
$dlg->K_ANY(\&key_cb);
sub hide_cb {
# not so common exit handler
$dlg->Hide();
return IUP_DEFAULT;
}
sub save_cb {
IUP->Message("Save not implemented");
return IUP_DEFAULT;
}
sub autosave_cb {
if ( $item_autosave->VALUE eq "ON" ) {
IUP->Message("Auto Save", "OFF");
$item_autosave->VALUE("OFF");
}
else {
IUP->Message("Auto Save", "ON");
$item_autosave->VALUE("ON");
}
return IUP_DEFAULT;
}
sub key_cb {
my ($self, $c) = @_;
return save_cb if $c == K_cS; #ctrl+S
return autosave_cb if $c == K_cA; #ctrl+A
return hide_cb if $c == K_mX; #alt+X
}
# start the main loop
$dlg->ShowXY(IUP_CENTER, IUP_CENTER);
IUP->MainLoop;