#!/usr/bin/perl -w use strict; use FindBin; use lib "$FindBin::Bin/../lib"; use Test::More tests => 1; my $app = MyApp->new(); isa_ok($app, 'MyApp'); # [XXX: change into tests rather than a demo] $app->MainLoop(); package MyApp; use strict; use base qw(Wx::App); use Wx qw(:everything); use FindBin; use lib "$FindBin::Bin/../lib"; use Wx::WidgetMaker; our %labels = ( red => 'Red', green => 'Green', blue => 'Blue', ); sub OnInit { my $self = shift; my ($frame, $q, $pagesizer, $rowsizer, $control, $control2); $frame = Wx::Frame->new( undef, -1, 'Test', wxDefaultPosition, wxSIZE(400,500) ); $frame->SetAutoLayout(1); $q = Wx::WidgetMaker->new(-parent => $frame); $pagesizer = Wx::BoxSizer->new(wxVERTICAL); # can use `print' to add the control to the pager $q->print($q->h1('H1 text'), $pagesizer); $q->print($q->h2('H2 text'), $pagesizer); $q->print($q->h3('H3 text'), $pagesizer); # or `print' an array ref of controls $q->print([$q->h4('H6 text'), $q->h5('H6 text'), $q->h6('H6 text')], $pagesizer); $rowsizer = Wx::BoxSizer->new(wxHORIZONTAL); # or `print' StaticText $rowsizer->Add($q->print('Textfield: ')); $control = $q->textfield( -name => 'color_textfield', -default => 'blue', -size => 50, # window width, not number of chars -maxlength => 30, ); # (can still use Add if you want) $rowsizer->Add($control); $pagesizer->Add($rowsizer); $rowsizer = Wx::BoxSizer->new(wxHORIZONTAL); $control = $q->password_field( -name => 'color_password', -value => 'blue', -size => 50, # window width, not number of chars -maxlength => 30, ); $q->print([$q->print('Password: '), $control], $rowsizer); $pagesizer->Add($rowsizer); $control = $q->textarea( -name => 'color_area', -default => 'I like colors!', -rows => 100, # window height, not number of rows -columns => 200, # column width, not number of chars ); $q->print($control, $pagesizer); $rowsizer = Wx::BoxSizer->new(wxHORIZONTAL); $control = $q->popup_menu( -name => 'color_popup', -values => [qw(red green blue)], -default => 'green', -labels => \%labels, ); $control2 = $q->scrolling_list( -name => 'color_list', -values => [qw(red green blue)], -default => 'green', -size => 40, # window height, not number of rows -multiple => 1, -labels => \%labels, ); $q->print([$control, $control2], $rowsizer); $pagesizer->Add($rowsizer); # $q->checkbox_group( # -name => 'color_checkbox_group', # -values => ['red', 'green', 'blue', 'yellow'], # -default => 'green', # -linebreak => 'true', # -labels => \%labels, # -nolabels => undef, # -rows => 2, # -columns => 2, # -rowheaders => undef, # -colheaders => undef, # ); $rowsizer = Wx::BoxSizer->new(wxHORIZONTAL); $control = $q->checkbox( -name => 'color_checkbox', -checked => 'checked', -label => 'CLICK ME', ); $control2 = $q->radio_group( -name => 'color_radio_group', -values => [qw(red green blue)], -default => 'green', -linebreak => 'true', -labels => \%labels, -nolabels => 0, -rows => 2, -cols => 2, # -rowheaders => undef, # unimplemented # -colheaders => undef, # unimplemented -caption => 'Color?', # not originally in CGI ); $q->print([$control, $control2], $rowsizer); $pagesizer->Add($rowsizer); $rowsizer = Wx::BoxSizer->new(wxHORIZONTAL); $control = $q->submit( -name => 'color_button', -value => 'submit-esque', ); $control2 = $q->image_button( -name => 'button_name', -src => '../ex/save.xpm', ); $q->print([$control, $control2], $rowsizer); $pagesizer->Add($rowsizer); print "PARAM VALUES:\n"; foreach my $param ($q->param()) { print $param, ': ', $q->param($param), $/; } $frame->SetSizer($pagesizer); $pagesizer->SetSizeHints($frame); $self->SetTopWindow($frame); $frame->Show(1); } 1;