############################################################################# ## Name: lib/Wx/DemoModules/wxGridER.pm ## Purpose: wxPerl demo helper for wxGrid editors and renderers ## Author: Mattia Barbon ## Modified by: ## Created: 05/06/2003 ## RCS-ID: $Id: wxGridER.pm 2378 2008-04-26 04:21:45Z mdootson $ ## Copyright: (c) 2003, 2006 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::wxGridER; use strict; use base 'Wx::Grid'; my $longtext = join ' ', qw(Multiple lines of text are displayed wrapped in the cell. AutoSize is set on to display the contents); my @editors_renderers = ( [ 'Default editor and renderer', 'Test 1', undef ], [ 'Float editor', '1.00', sub { Wx::GridCellFloatEditor->new }, 'Float renderer', '2.13', sub { Wx::GridCellFloatRenderer->new( 12, 7 ) }, ], [ 'Bool editor', '1', sub { Wx::GridCellBoolEditor->new }, 'Bool renderer', '1', sub { Wx::GridCellBoolRenderer->new }, ], [ 'Number editor', '14', sub { Wx::GridCellNumberEditor->new( 12, 20 ) }, 'Number renderer', '12', sub { Wx::GridCellNumberRenderer->new }, ], [ 'Choice editor', 'Test', sub { Wx::GridCellChoiceEditor->new( [qw(This Is a Test) ] ) }, ], [ 'Auto Wrap editor', $longtext, sub { Wx::GridCellAutoWrapStringEditor->new }, 'Auto Wrap renderer', $longtext, sub { Wx::GridCellAutoWrapStringRenderer->new }, ], [ 'Enum editor', 2, sub { Wx::GridCellEnumEditor->new( 'First,Second,Third,Fourth,Fifth' ) }, # unluckily Enum renderer requires a custom grid table to work ], ); sub new { my( $class, $parent ) = @_; my $this = $class->SUPER::new( $parent, -1 ); $this->CreateGrid( 2 * @editors_renderers + 1, 7 ); # set every cell read-only for my $x ( 1 .. $this->GetNumberCols ) { # cols for my $y ( 1 .. $this->GetNumberRows ) { # rows $this->SetReadOnly( $y, $x, 1 ); # rows, cols } } $this->SetColSize( 0, 20 ); $this->SetColSize( 1, 150 ); $this->SetColSize( 2, 150 ); $this->SetColSize( 3, 20 ); $this->SetColSize( 4, 150 ); $this->SetColSize( 5, 100 ); $this->SetColSize( 6, 20 ); my $row = 1; foreach my $er ( @editors_renderers ) { if( $er->[0] ) { eval { $this->SetCellEditor( $row, 2, &{$er->[2]} ) if $er->[2]; $this->SetCellOverflow( $row, 2, 0); $this->SetCellValue( $row, 1, $er->[0] ); $this->SetCellValue( $row, 2, $er->[1] ); $this->SetReadOnly( $row, 2, 0 ); }; } if( $er->[3] ) { eval { $this->SetCellRenderer( $row, 5, &{$er->[5]} ) if $er->[5]; $this->SetCellOverflow( $row, 5, 0); $this->SetCellValue( $row, 4, $er->[3] ); $this->SetCellValue( $row, 5, $er->[4] ); $this->SetReadOnly( $row, 5, 0 ); }; } $this->AutoSizeRow( $row, 1 ); $row += 2; } return $this; } sub add_to_tags { 'controls/grid' } sub title { 'Editors and renderers' } 1;