develooper Front page | perl.wxperl.users | Postings from June 2022

Help with WxPerl logging

From:
Henry Law
Date:
June 18, 2022 21:33
Subject:
Help with WxPerl logging
Message ID:
d17f9fc5a82e5612c23178ca50ae70823ae286df.camel@lawshouse.org
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            



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About