IUP
view release on metacpan or search on metacpan
examples/1-apps/app-mdi.pl view on Meta::CPAN
1=>"Item 1 Text",
2=>"Item 2 Text Big Item",
3=>"Item 3 Text",
4=>"Item 4 Text",
5=>"Item 5 Text",
6=>"Item 6 Text",
CINDEX=>3 );
my $list_4 = IUP::List->new(
EDITBOX=>"YES",
DROPDOWN=>"YES",
EXPAND=>"YES",
VISIBLE_ITEMS=>3,
SIZE=>"50x10",
VALUE=>"Test Value",
1=>"Item 1 Text",
2=>"Item 2 Text Big Item",
3=>"Item 3 Text",
4=>"Item 4 Text",
5=>"Item 5 Text",
6=>"Item 6 Text",
CINDEX=>4 );
my $frm_5 = IUP::Frame->new( child=>IUP::Vbox->new( child=>[$list_1, $list_2, $list_3, $list_4] ), TITLE=>"IupList" );
my $hbox_1 = IUP::Hbox->new( child=>[$frm_1, $frm_2, $frm_3, $frm_4, $frm_5] );
my $cnv_1 = IUP::Canvas->new( BGCOLOR=>"128 255 0" );
my $vbox_1 = IUP::Vbox->new( child=>[$hbox_1, $cnv_1], MARGIN=>"5x5", ALIGNMENT=>"ARIGHT", GAP=>5 );
set_callbacks($vbox_1);
my $dlg = IUP::Dialog->new( child=>$vbox_1, TITLE=>"MDI Child $id" );
$id++;
# $dlg->SetAttribute(
# SHRINK=>"YES",
# SIZE=>"500x200",
# BGCOLOR=>"255 0 255",
# FONT=>"Times New Roman:ITALIC:10",
# FONT=>IUP_TIMES_BOLD_14,
# COMPOSITED=>"YES",
# OPACITY=>192 );
return $dlg;
}
sub mdi_tilehoriz {
my $self = shift;
$self->GetDialog->MDIARRANGE("TILEHORIZONTAL");
return IUP_DEFAULT;
}
sub mdi_tilevert {
my $self = shift;
$self->GetDialog->MDIARRANGE("TILEVERTICAL");
return IUP_DEFAULT;
}
sub mdi_cascade {
my $self = shift;
$self->GetDialog->MDIARRANGE("CASCADE");
return IUP_DEFAULT;
}
sub mdi_icon {
my $self = shift;
$self->GetDialog->MDIARRANGE("ICON");
return IUP_DEFAULT;
}
sub mdi_next {
my $self = shift;
$self->GetDialog->MDIACTIVATE("NEXT");
return IUP_DEFAULT;
}
sub mdi_previous {
my $self = shift;
$self->GetDialog->MDIACTIVATE("PREVIOUS");
return IUP_DEFAULT;
}
sub mdi_closeall {
my $self = shift;
$self->GetDialog->MDICLOSEALL(undef);
return IUP_DEFAULT;
}
sub mdi_activate {
my $self = shift;
printf STDERR "$line-mdi_activate(%s)\n", $self->GetName();
$line++;
return IUP_DEFAULT;
}
sub mdi_new {
my $self = shift;
my $dlg = createDialog();
$dlg->SetAttribute( MDICHILD=>"YES", PARENTDIALOG=>$mdiFrame);
$dlg->SetCallback( MDIACTIVATE_CB=>\&mdi_activate );
#$dlg->PLACEMENT("MAXIMIZED");
$dlg->Show();
return IUP_DEFAULT;
}
sub createMenu {
my $mnu = IUP::Menu->new( name=>"mnu", child=>[
IUP::Submenu->new( TITLE=>"MDI", child=>
IUP::Menu->new( child=>
IUP::Item->new( TITLE=>"New", ACTION=>\&mdi_new ),
),
),
IUP::Submenu->new( TITLE=>"Window", , child=>
IUP::Menu->new( name=>"winmenu", child=>[
IUP::Item->new( TITLE=>"Tile Horizontal", ACTION=>\&mdi_tilehoriz ),
IUP::Item->new( TITLE=>"Tile Vertical", ACTION=>\&mdi_tilevert ),
IUP::Item->new( TITLE=>"Cascade", ACTION=>\&mdi_cascade ),
IUP::Item->new( TITLE=>"Icon Arrange", ACTION=>\&mdi_icon ),
IUP::Item->new( TITLE=>"Close All", ACTION=>\&mdi_closeall ),
IUP::Separator->new(),
IUP::Item->new( TITLE=>"Next", ACTION=>\&mdi_next ),
IUP::Item->new( TITLE=>"Previous", ACTION=>\&mdi_previous ),
]),
),
]);
return $mnu;
}
sub createFrame {
my $menu = shift;
my $mdiMenu = IUP->GetByName("winmenu");
my $cnv = IUP::Canvas->new( MDICLIENT=>"YES", MDIMENU=>$mdiMenu );
my $dlg = IUP::Dialog->new( name=>"mdiFrame", child=>$cnv,
MENU=>$menu, TITLE=>"MDI Frame",
MDIFRAME=>"YES", RASTERSIZE=>"800x600" );
return $dlg;
}
### main ###
if (IUP->GetGlobal('DRIVER') ne 'Win32') {
IUP->Message('BEWARE: MDI demo app works just with MS Windows GUI driver!');
}
else {
$mdiFrame = createFrame( createMenu() );
#$mdiFrame->PLACEMENT("MAXIMIZED");
$mdiFrame->ShowXY(IUP_CENTER, IUP_CENTER);
IUP->MainLoop();
}
( run in 0.993 second using v1.01-cache-2.11-cpan-d8267643d1d )