From: <Rj...@ao...> - 2004-07-10 22:01:09
|
Folks, I'm fairly experienced at Perl, but new to wxPerl. I'm trying to use wxDesigner to get me started quickly. I've generated a main app file and a dialog/sizer file. Trying to hook them together does not seem to work. Perl blows up on me. I'm using activestate 5.6.x on Win 2000. Thanks, Robert ---------- ----------------------- File 1 ------------- #!/usr/bin/perl #---------------------------------------------------------------------------- # Name: documentum_file_fixer.pl # Author: XXXX # Created: XX/XX/XX # Copyright: #---------------------------------------------------------------------------- use strict; use Wx; do 'documentum_file_fixer_wdr.pl'; # constants # WDR: classes package FileFixerFrame; use strict; use vars qw(@ISA); @ISA=qw(Wx::Frame); use Wx::Event qw(EVT_MENU EVT_CLOSE EVT_SIZE EVT_UPDATE_UI); use Wx qw(wxOK wxICON_INFORMATION wxTB_HORIZONTAL wxNO_BORDER); sub new { my( $class ) = shift; my( $this ) = $class->SUPER::new( @_ ); $this->CreateMyMenuBar(); $this->CreateStatusBar( 1 ); $this->SetStatusText( "Welcome!", 0); $this->SetAutoLayout(1); $this->SetSizerAndFit(&main::FixHTMDialog()); # insert main window here # WDR: handler declarations for FileFixerFrame EVT_MENU( $this, $main::ID_ABOUT, \&OnAbout ); EVT_MENU( $this, $main::ID_QUIT, \&OnQuit ); EVT_CLOSE( $this, \&OnCloseWindow ); $this; } # WDR: methods for FileFixerFrame sub CreateMyMenuBar { my( $this ) = shift; $this->SetMenuBar( &main::FixerMenuBar() ); } # WDR: handler implementations for FileFixerFrame sub OnAbout { my( $this, $event ) = @_; Wx::MessageBox( "Welcome Documentum File Fixer 1.0\n(C)opyright Southwest Airlines 2004", "About Documentum File Fixer", wxOK|wxICON_INFORMATION, $this ); } sub OnQuit { my( $this, $event ) = @_; $this->Close(1); } sub OnCloseWindow { my( $this, $event ) = @_; $this->Destroy(); } package FileFixer; use strict; use vars qw(@ISA); @ISA=qw(Wx::App); sub OnInit { my( $this ) = @_; Wx::InitAllImageHandlers(); my( $frame ) = FileFixerFrame->new( undef, -1, "SuperApp", [20,20], [500,340] ); $frame->Show(1); 1; } package main; my( $app ) = FileFixer->new(); $app->MainLoop(); --- File 2 --------- use strict; use Wx qw( wxDefaultSize wxDefaultPosition wxID_OK wxID_CANCEL wxID_YES ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW wxADJUST_MINSIZE ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxRA_SPECIFY_COLS wxTE_MULTILINE ); # Window functions use vars qw($FILENAME_TEXT); $FILENAME_TEXT = 10000; use vars qw($ID_TEXTCTRL); $ID_TEXTCTRL = 10001; use vars qw($ID_BUTTON); $ID_BUTTON = 10002; use vars qw($ID_RADIOBOX); $ID_RADIOBOX = 10003; use vars qw($ID_TEXT); $ID_TEXT = 10004; sub FixHTMDialog { my( $item0 ) = Wx::FlexGridSizer->new( 0, 1, 0, 0 ); $item0->AddGrowableCol( 0 ); $item0->AddGrowableRow( 0 ); my( $item1 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item2 ) = Wx::StaticText->new( $_[0], $main::FILENAME_TEXT, "Starting Directory", wxDefaultPosition, wxDefaultSize, 0 ); $item1->AddWindow( $item2, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item3 ) = Wx::TextCtrl->new( $_[0], $main::ID_TEXTCTRL, "", wxDefaultPosition, [200,-1], 0 ); $item1->AddWindow( $item3, 5, wxALIGN_CENTER|wxALL, 5 ); my( $item4 ) = Wx::Button->new( $_[0], $main::ID_BUTTON, "Locate Directory", wxDefaultPosition, wxDefaultSize, 0 ); $item1->AddWindow( $item4, 0, wxALIGN_CENTER|wxALL, 5 ); $item0->Add( $item1, 0, wxGROW|wxALL, 5 ); $item0->AddSpace( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item5 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item6 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item7 ) = Wx::RadioBox->new( $_[0], $main::ID_RADIOBOX, "Label", wxDefaultPosition, wxDefaultSize, ["Show Operations","Quiet/Errors Only"] , 1, wxRA_SPECIFY_COLS ); $item6->AddWindow( $item7, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item8 ) = Wx::Button->new( $_[0], $main::ID_BUTTON, "Start", wxDefaultPosition, wxDefaultSize, 0 ); $item8->SetDefault(); $item6->AddWindow( $item8, 0, wxALIGN_CENTER|wxALL, 25 ); $item5->Add( $item6, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item9 ) = Wx::StaticText->new( $_[0], $main::ID_TEXT, "Action Log", wxDefaultPosition, wxDefaultSize, 0 ); $item5->AddWindow( $item9, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item10 ) = Wx::TextCtrl->new( $_[0], $main::ID_TEXTCTRL, "", wxDefaultPosition, [200,100], wxTE_MULTILINE ); $item5->AddWindow( $item10, 10, wxALIGN_CENTER|wxALL, 5 ); $item0->Add( $item5, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $set_size ) = @_ >= 3 ? $_[2] : 1; my( $call_fit ) = @_ >= 2 ? $_[1] : 1; if( $set_size == 1 ) { $_[0]->SetSizer( $item0 ); if( $call_fit == 1 ) { $item0->SetSizeHints( $_[0] ); } } $item0; } # Menu bar functions use vars qw($ID_MENU); $ID_MENU = 10005; use vars qw($ID_ABOUT); $ID_ABOUT = 10006; use vars qw($ID_QUIT); $ID_QUIT = 10007; sub FixerMenuBar { my( $item0 ) = Wx::MenuBar->new(); my( $item1 ) = Wx::Menu->new(); $item1->Append( $main::ID_ABOUT, "About", "" ); $item1->Append( $main::ID_QUIT, "Quit", "" ); $item0->Append( $item1, "File" ); $item0; } # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Toolbar functions # End of generated file |
From: Mattia B. <mat...@li...> - 2004-07-11 10:47:03
|
On Sat, 10 Jul 2004 18:00:59 -0400 Rj...@ao... wrote: Hello, > I'm fairly experienced at Perl, but new to wxPerl. I'm trying to use wxDesigner to get me started quickly. > > I've generated a main app file and a dialog/sizer file. Trying to hook them together does not seem to work. Perl blows up on me. I'm using activestate 5.6.x on Win 2000. perl -d file.pl > t > r is your friend in these cases... in documentum_file_fixer.pl you need to pass FixHTMDialog the parameters it requires. $this->SetSizerAndFit(&main::FixHTMDialog( $this, 0, 0 )); HTH Mattia |