############################################################################# ## Name: lib/Wx/DemoModules/wxAUI.pm ## Purpose: AUI (Advanced User Interface) demo ## Author: Mattia Barbon ## Modified by: ## Created: 12/11/2006 ## RCS-ID: $Id: wxAUI.pm 2189 2007-08-21 18:15:31Z mbarbon $ ## Copyright: (c) 2006-2007 Mattia Barbon ## Licence: This program is free software; you can redistribute it and/or ## modify it under the same terms as Perl itself ############################################################################# package Wx::DemoModules::wxAUI; use strict; use base qw(Wx::Frame Class::Accessor::Fast); use Wx::AUI; use Wx qw(:misc :frame :toolbar :textctrl :aui); use Wx::Event qw(); use Wx::ArtProvider qw(:artid); __PACKAGE__->mk_accessors( qw(manager) ); sub new { my( $class, $parent ) = @_; my $self = $class->SUPER::new ( $parent, -1, 'wxPerl AUI demo' ); $self->manager( Wx::AuiManager->new ); $self->manager->SetManagedWindow( $self ); $self->SetIcon( Wx::GetWxPerlIcon ); $self->SetSize( 500, 400 ); my $tb1 = Wx::ToolBar->new( $self, -1, [-1, -1], [-1, -1], wxTB_FLAT ); $tb1->AddTool( 101, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) ); $tb1->AddTool( 102, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) ); $tb1->AddTool( 103, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) ); $tb1->AddTool( 104, "Test", Wx::ArtProvider::GetBitmap( wxART_ERROR ) ); $tb1->Realize; my $tb2 = Wx::ToolBar->new( $self, -1, [-1, -1], [-1, -1], wxTB_FLAT ); $tb2->AddTool( 101, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) ); $tb2->AddTool( 102, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) ); $tb2->AddTool( 103, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) ); $tb2->AddTool( 104, "Test", Wx::ArtProvider::GetBitmap( wxART_WARNING ) ); $tb2->Realize; $self->manager->AddPane ( $self->create_textctrl, Wx::AuiPaneInfo->new->Name( "text_control" ) ->CenterPane->Position( 1 )->Resizable ); $self->manager->AddPane ( $self->create_textctrl, Wx::AuiPaneInfo->new->Name( "text_control2" ) ->CenterPane->TopDockable->BottomDockable->Floatable->Movable ->PinButton->Caption( "Floating" )->CaptionVisible->Float ->Resizable ); $self->manager->AddPane ( $self->create_notebook, Wx::AuiPaneInfo->new->Name( "notebook" ) ->CenterPane->TopDockable->BottomDockable->Floatable->Movable ->PinButton->Caption( "Notebook" )->CaptionVisible->Position( 2 ) ); $self->manager->AddPane ( $tb1, Wx::AuiPaneInfo->new->Name( "tb1" )->Caption( "Toolbar 1" ) ->ToolbarPane->Top->Row( 1 )->LeftDockable( 0 )->RightDockable( 0 ) ); $self->manager->AddPane ( $tb2, Wx::AuiPaneInfo->new->Name( "tb2" )->Caption( "Toolbar 2" ) ->ToolbarPane->LeftDockable( 0 )->RightDockable( 0 )->Float ); $self->manager->Update; return $self; } sub DESTROY { my( $self ) = @_; $self->manager->UnInit; } my $count = 0; sub _create_textctrl { my( $self, $parent, $text ) = @_; $text ||= sprintf "This is text box %d", ++$count; return Wx::TextCtrl->new( $parent, -1, $text, [0, 0], [150, 90], wxNO_BORDER | wxTE_MULTILINE ); } sub create_textctrl { my( $self, $text ) = @_; return $self->_create_textctrl( $self, $text ); } sub create_notebook { my( $self ) = @_; my $book = Wx::AuiNotebook->new( $self, -1, [-1, -1], [300, 300], wxAUI_NB_TAB_MOVE|wxAUI_NB_TAB_SPLIT); my $icon = Wx::Bitmap->new( Wx::GetWxPerlIcon ); $book->AddPage( $self->_create_textctrl( $book ), "Notebook page 1", 0, $icon ); $book->AddPage( $self->_create_textctrl( $book ), "Notebook page 2", 0, $icon ); $book->AddPage( $self->_create_textctrl( $book ), "Notebook page 3", 0, $icon ); return $book; } sub add_to_tags { qw(managed) } sub title { 'AUI' } 1;