use
vars
qw(@ISA $VERSION)
;
@ISA
=
qw(Tk::Derived Tk::Frame)
;
$VERSION
=
sprintf
(
"%d.%02d"
,
q$Revision: 2.6 $
=~ /(\d+)\.(\d+)/);
Construct Tk::Widget
'NumEntry'
;
{
my
$foo
=
$Tk::FireButton::INCBITMAP
;
$foo
=
$Tk::FireButton::DECBITMAP
;
}
sub
Populate {
my
(
$f
,
$args
) =
@_
;
my
$orient
=
delete
$args
->{-orient} ||
"vertical"
;
my
$readonly
=
delete
$args
->{-readonly};
my
$e
=
$f
->Component(
$f
->
NumEntryPlainWidget
=>
'entry'
,
-borderwidth
=> 0,
-highlightthickness
=> 0,
);
if
(
$readonly
) {
$e
->bindtags([]);
}
my
$binc
=
$f
->Component(
$f
->IncFireButtonWidget() =>
'inc'
,
-command
=>
sub
{
$e
->incdec(
$e
->cget(-increment)) },
-takefocus
=> 0,
-highlightthickness
=> 0,
-anchor
=>
'center'
,
);
$binc
->configure(
-bitmap
=> (
$orient
=~ /^vert/
?
$binc
->INCBITMAP
:
$binc
->HORIZINCBITMAP
)
);
my
$bdec
=
$f
->Component(
$f
->DecFireButtonWidget() =>
'dec'
,
-command
=>
sub
{
$e
->incdec(-
$e
->cget(-increment)) },
-takefocus
=> 0,
-highlightthickness
=> 0,
-anchor
=>
'center'
,
);
$bdec
->configure(
-bitmap
=> (
$orient
=~ /^vert/
?
$bdec
->DECBITMAP
:
$bdec
->HORIZDECBITMAP
)
);
$f
->gridColumnconfigure(0,
-weight
=> 1);
$f
->gridColumnconfigure(1,
-weight
=> 0);
$f
->gridRowconfigure(0,
-weight
=> 1);
$f
->gridRowconfigure(1,
-weight
=> 1);
if
(
$orient
eq
'vertical'
) {
$binc
->grid(
-row
=> 0,
-column
=> 1,
-sticky
=>
'news'
);
$bdec
->grid(
-row
=> 1,
-column
=> 1,
-sticky
=>
'news'
);
}
else
{
$binc
->grid(
-row
=> 0,
-column
=> 2,
-sticky
=>
'news'
);
$bdec
->grid(
-row
=> 0,
-column
=> 1,
-sticky
=>
'news'
);
}
$e
->grid(
-row
=> 0,
-column
=> 0,
-rowspan
=> 2,
-sticky
=>
'news'
);
$f
->ConfigSpecs(
-borderwidth
=> [
'SELF'
=>
"borderWidth"
,
"BorderWidth"
, 2 ],
-relief
=> [
'SELF'
=>
"relief"
,
"Relief"
,
"sunken"
],
-background
=> [
'CHILDREN'
=>
"background"
,
"Background"
, Tk::NORMAL_BG ],
-foreground
=> [
'CHILDREN'
=>
"foreground"
,
"Foreground"
, Tk::BLACK ],
-buttons
=> [
'METHOD'
=>
undef
,
undef
, 1 ],
-state
=> [
'CHILDREN'
=>
"state"
,
"State"
,
"normal"
],
-repeatdelay
=> [[
$binc
,
$bdec
]
=>
"repeatDelay"
,
"RepeatDelay"
, 300 ],
-repeatinterval
=> [[
$binc
,
$bdec
]
=>
"repeatInterval"
,
"RepeatInterval"
,
100 ],
-highlightthickness
=> [
SELF
=>
"highlightThickness"
,
"HighlightThickness"
,
2 ],
DEFAULT
=> [
$e
],
);
$f
->Delegates(
DEFAULT
=>
$e
);
$f
;
}
sub
NumEntryPlainWidget {
"NumEntryPlain"
}
sub
FireButtonWidget {
"FireButton"
}
sub
IncFireButtonWidget {
shift
->FireButtonWidget }
sub
DecFireButtonWidget {
shift
->FireButtonWidget }
sub
buttons {
my
$f
=
shift
;
my
$var
= \
$f
->{Configure}{
'-buttons'
};
my
$old
=
$$var
;
if
(
@_
) {
my
$val
=
shift
;
$$var
=
$val
? 1 : 0;
my
$e
=
$f
->Subwidget(
'entry'
);
my
%info
=
$e
->gridInfo;
$info
{
'-sticky'
} =
'news'
;
delete
$info
{
' -sticky'
};
$e
->grid(
%info
,
-columnspan
=>
$val
? 1 : 2);
$e
->raise;
}
$old
;
}
1;