/usr/local/CPAN/Tk-TM/Tk/TM/wDialogBox.pm
#!perl -w
#
# Tk Transaction Manager.
# Dialog box, developed Tk::DialogBox
#
# makarow, demed
#
package Tk::TM::wDialogBox;
require 5.000;
use strict;
use Tk;
use Tk::DialogBox;
use Tk::TM::Lang;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = '0.50';
@ISA = ('Tk::DialogBox');
Tk::Widget->Construct('tmDialogBox');
sub Show {
my $self =shift;
my $wgf;
my @btn;
my $besc;
foreach my $area ($self->children) {
if ($area->name =~/top/i) {
my @wgs =$area->children;
$wgf =$wgs[0]
}
elsif ($area->name =~/bottom/i) {
my @wgs =$area->children;
@btn =map {$_->cget(-text)} @wgs;
$besc=$wgs[$#wgs]
}
}
$self->bind('<FocusIn>',sub{$wgf->focus; $self->bind('<FocusIn>',undef)});
$self->bind('<Key-Escape>',sub{$besc->invoke});
$self->protocol("WM_DELETE_WINDOW" => undef);
my $txt =$self->Tk::DialogBox::Show(@_) ||'';
for (my $i =@[; $i <=$#btn; $i++) {
return($i) if $btn[$i] eq $txt;
}
-1;
}