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