I need help with WXPerl logging. I'm converting a command-line
program, a finance application, which routinely writes a fair amount of
information to STDOUT - account names, totals, counts etc. I want to
gather that material up in a Wx::Logwindow, so that the user can scroll
it up and down, copy stuff from it and so forth. But I don't know how
to apply the information in the "Logging overview", especially the part
where, referring to wxLogMessage: "They also appear in a message box by
default (but it can be changed)"; I don't want any of my output
appearing in message boxes, but it seems that in order to do that I
need to subclass wxLog, which would involve C++ programming.
A test program (based on one of the tutorial examples)
#!/usr/bin/perl
use strict;
use warnings;
use 5.016;
use Wx;
package MyFrame;
use base 'Wx::Frame';
use Wx::Event qw(EVT_BUTTON);
sub new {
my $ref = shift;
my $self = $ref->SUPER::new( undef, # parent window
-1, # ID -1 means any
'wxPerl rules', # title
[-1, -1], # default position
300, 200], # size
);
my $panel = Wx::Panel->new( $self, # parent window
-1, # ID
);
my $button = Wx::Button->new( $panel, # parent window
-1, # ID
'Click me!', # label
[30, 20], # position
[-1, -1], # default size
);
EVT_BUTTON( $self, $button, \&OnClick );
return $self;
}
sub OnClick {
my( $self, $event ) = @_;
$self->SetTitle( 'Clicked' );
my $log = Wx::LogWindow->new( $self, 'Title', 1, 1 );
Wx::LogMessage('foo');
}
package MyApp;
use base 'Wx::App';
sub OnInit {
my $frame = MyFrame->new;
$frame->Show( 1 );
}
package main;
my $app = MyApp->new;
$app->MainLoop;
A log window appears, and "foo" appears in it, but it also appears in a
dialog box. What do I have to do to lose the box?
--
--
Henry Law n e w s @ l a w s h o u s e . o r g
Manchester, England