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 )