On Jun 17, 2008, at 11:42, Laurence Anthony wrote:

Does anybody know how to prevent the Tkx (Tcl/Tk) error report dialogs
popping up in the GUI (without using eval throughout the code)? In
Perl/Tk, things just die quietly. In Tkx, the error dialog tells the
user exactly on which line the bug is. This is great for debugging,
but creates a poor user experience.

You define the Tcl 'bgerror' function in the if you want to override this. The Tkx API does not provide a direct way to do this if you want the bgerror command to be a perl function, so this example shows a possible workaround:

#!perl -w

use strict;
use warnings;
use Tkx;

Tkx::button(".b",
    -text => "Hello, world",
    -command => sub { Tkx::foo(); },  # XXX will fail
);
Tkx::pack(".b");

Tkx::set("perl_bgerror", sub {
    splice(@_, 0, 3);  # skip internal callback junk
    my $msg = shift;
    print "Error: $msg\n";
});

Tkx::eval(<<'EOT');
proc bgerror {msg} {
     global perl_bgerror
     $perl_bgerror $msg
}
EOT

Tkx::MainLoop()

__END__

Regards,
Gisle

Reply via email to