#############################################################################
## Name: lib/Wx/DemoModules/wxHeaderCtrlSimple.pm
## Purpose: wxPerl demo helper for Wx::HeaderCtrlSimple
## Author: Mattia Barbon
## Modified by:
## Created: 20/02/2010
## RCS-ID: $Id: wxHeaderCtrlSimple.pm 2920 2010-04-29 21:11:27Z mbarbon $
## Copyright: (c) 2010 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::wxHeaderCtrlSimple;
use strict;
use base qw(Wx::DemoModules::lib::BaseModule Class::Accessor::Fast);
use Wx qw(wxHD_ALLOW_REORDER wxHD_ALLOW_HIDE);
use Wx::Event qw(EVT_HEADER_CLICK EVT_HEADER_DCLICK);
__PACKAGE__->mk_accessors( qw(headerctrl) );
sub styles {
my( $self ) = @_;
return ( [ wxHD_ALLOW_REORDER, 'Allow reorder' ],
[ wxHD_ALLOW_HIDE, 'Allow hide/show' ],
);
}
sub commands {
my( $self ) = @_;
return ( { with_value => 1,
label => 'Append Column',
action => sub { my $col = Wx::HeaderColumnSimple->new( $_[0], 100 );
$self->headerctrl->AppendColumn( $col );
$self->GetSizer->Layout; },
},
);
}
sub create_control {
my( $self ) = @_;
my $headerctrl = Wx::DemoModules::wxHeaderCtrlSimple::Control->new( $self, -1, [-1, -1], [-1, -1], $self->style );
$headerctrl->AppendColumn( Wx::HeaderColumnSimple->new( 'Column1', 120 ) );
$headerctrl->AppendColumn( Wx::HeaderColumnSimple->new( 'Column2', 80 ) );
$headerctrl->AppendColumn( Wx::HeaderColumnSimple->new( 'Column3', 100 ) );
EVT_HEADER_CLICK( $self, $headerctrl, \&OnClick );
EVT_HEADER_DCLICK( $self, $headerctrl, \&OnDoubleClick );
return $self->headerctrl( $headerctrl );
}
sub OnClick {
my( $self, $event ) = @_;
Wx::LogMessage( "Column %d clicked",
$event->GetColumn );
}
sub OnDoubleClick {
my( $self, $event ) = @_;
Wx::LogMessage( "Column %d double clicked",
$event->GetColumn );
}
sub add_to_tags { ( Wx::wxVERSION() >= 2.009 ) ? qw(controls new) : () }
sub title { 'wxHeaderCtrlSimple' }
package Wx::DemoModules::wxHeaderCtrlSimple::Control;
use strict;
use base qw(Wx::HeaderCtrlSimple);
# called when the column border is double-clicked to auto-resize
sub GetBestFittingWidth {
my( $self, $idx ) = @_;
return 200;
}
1;