#############################################################################
## Name: lib/Wx/DemoModules/wxMDI.pm
## Purpose: MDI (Multiple Document Interface) demo
## Author: Mattia Barbon
## Modified by:
## Created: 17/09/2001
## RCS-ID: $Id: wxMDI.pm 2189 2007-08-21 18:15:31Z mbarbon $
## Copyright: (c) 2001, 2005, 2006 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
use Wx::MDI;
package Wx::DemoModules::wxMDI;
use strict;
use base qw(Wx::MDIParentFrame);
use Wx qw(:misc :textctrl :window :frame wxID_CLOSE);
use Wx::Event qw(EVT_MENU EVT_CLOSE EVT_SIZE);
my( $ID_CREATE_CHILD, ) =
( 2000 .. 3000 );
sub new {
my( $class, $parent ) = @_;
my $self = $class->SUPER::new
( $parent, -1, 'wxPerl MDI demo', wxDefaultPosition, wxDefaultSize,
wxDEFAULT_FRAME_STYLE|wxHSCROLL|wxVSCROLL|wxNO_FULL_REPAINT_ON_RESIZE);
my $file = Wx::Menu->new;
$file->Append( $ID_CREATE_CHILD, "Create a new child" );
$file->AppendSeparator;
$file->Append( wxID_CLOSE, "Close frame" );
$self->{help} = new Wx::TextCtrl($self, -1, "A help Window",
wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE | wxSUNKEN_BORDER);
my $bar = Wx::MenuBar->new;
$bar->Append( $file, "File" );
$self->SetMenuBar( $bar );
EVT_MENU( $self, $ID_CREATE_CHILD, \&OnCreateChild );
EVT_MENU( $self, wxID_CLOSE, sub { $_[0]->Close } );
EVT_SIZE( $self, \&OnSize );
$self->SetSize( 500, 400 );
return $self;
}
sub OnCreateChild {
my( $self, $event ) = @_;
my $child = Wx::MDIChildFrame->new( $self, -1, "I'm a child" );
$child->SetIcon( Wx::GetWxPerlIcon );
my $file = Wx::Menu->new;
$file->Append( $ID_CREATE_CHILD, "Create a new child" );
$file->AppendSeparator;
$file->Append( wxID_CLOSE, "Close child" );
my $bar = Wx::MenuBar->new;
$bar->Append( $file, "File" );
$child->SetMenuBar( $bar );
EVT_MENU( $child, wxID_CLOSE, sub { $_[0]->Close } );
$child->Show;
}
sub OnSize {
my( $self, $event ) = @_;
my( $x, $y ) = $self->GetClientSizeXY();
my $client_window = $self->GetClientWindow();
$client_window->SetSize( 200, 0, $x - 200, $y);
$self->{help}->SetSize( 0, 0, 200, $y);
$event->Skip;
}
sub add_to_tags { qw(managed) }
sub title { 'MDI' }
1;