package BoxSizerExampleFrame; use strict; use warnings; use Wx qw /:everything/; use Wx::Event qw/EVT_BUTTON/; use base 'Wx::Frame'; sub new { my $class = shift; my $self = $class->SUPER::new( undef, -1, 'Jabber Frame', [-1,-1], [600, 400], ); my $vbox = Wx::BoxSizer->new( wxVERTICAL ); my $pnl1 = Wx::Panel->new($self, -1); my $pnl2 = Wx::Panel->new($self, -1); my $pnl3 = Wx::Panel->new($self, -1); my $pnl4 = Wx::Panel->new($self, -1); my $lbl1 = Wx::StaticText->new( $pnl1, # parent -1, # id, "Testing: 1", # label [5,10], # position ); my $lbl2 = Wx::StaticText->new( $pnl2, # parent -1, # id, "Testing: 2", # label [5,10], # position ); my $lbl3 = Wx::StaticText->new( $pnl3, # parent -1, # id, "Testing: 3", # label [5,10], # position ); # now we want to create a vbox for the 4th panel # in this we will put button and other panels my $pnl4Vbox = Wx::BoxSizer->new( wxVERTICAL ); # we'll create a button panel and place the buttons # horizontally my $btnBox = Wx::BoxSizer->new( wxHORIZONTAL ); my $pnlBtns = Wx::Panel->new( $pnl4, #parent -1, # id [-1,-1], # position [-1,-1], # size 0 # border style ); my $pnl4Text = Wx::Panel->new( $pnl4, #parent -1, # id [-1,-1], # position [-1,-1], # size 0, #wxSIMPLE_BORDER # border style ); my $btnButton1 = Wx::Button->new( $pnlBtns, -1, 'Button 1'); EVT_BUTTON( $pnlBtns, $btnButton1, \&btnButton1Clicked ); my $btnButton2 = Wx::Button->new( $pnlBtns, -1, 'Button 2'); EVT_BUTTON( $pnlBtns, $btnButton2, \&btnButton2Clicked ); $btnBox->Add( $btnButton1, 1, wxALIGN_BOTTOM, 0 ); $btnBox->Add( $btnButton2, 1, wxALIGN_BOTTOM, 0 ); $pnlBtns->SetSizer($btnBox); $pnl4Vbox->Add( $pnl4Text, 1, wxEXPAND, 0); $pnl4Vbox->Add( $pnlBtns, # widget 1, # vertically stretchable wxALIGN_BOTTOM | wxALIGN_RIGHT, # alignment 0 # border pixels ); $pnl4->SetSizer($pnl4Vbox); $vbox->Add( $pnl1, 1, wxEXPAND | wxALL, 3); $vbox->Add( $pnl2, 1, wxEXPAND | wxALL, 3); $vbox->Add( $pnl3, 1, wxEXPAND | wxALL, 3); $vbox->Add( $pnl4, 1, wxEXPAND | wxALL, 3); $self->SetSizer( $vbox ); return $self; } sub btnButton1Clicked { my( $self, $event ) = @_; print "Button 1\n"; } sub btnButton2Clicked { my( $self, $event ) = @_; print "Button 2\n"; } 1;