5
5
package Tk::LabFrame;
7
7
use vars qw($VERSION);
8
$VERSION = '3.021'; # $Id: //depot/Tk8/Tixish/LabFrame.pm#21 $
8
$VERSION = '3.024'; # $Id: //depot/Tk8/Tixish/LabFrame.pm#24 $
14
11
use base qw(Tk::Frame);
15
Construct Tk::Widget 'LabFrame';
12
Tk::Widget->Construct('LabFrame');
19
15
my ($cw, $args) = @_;
22
my $lside = exists $args->{-labelside} ?
23
delete $args->{-labelside} : 'top';
24
my $ltext = delete $args->{-label};
19
my $border = $cw->Component(
25
my $pad = $border->Frame;
26
$cw->Advertise(pad => $pad);
28
my $frame = $border->Frame;
29
$cw->Advertise(frame => $frame);
31
my $label = $cw->Component(Label => 'label');
25
33
$cw->SUPER::Populate($args);
27
if ($lside =~ /acrosstop/) {
28
my $border = $cw->Frame(-relief => 'groove', -bd => 2);
29
$cw->Advertise('border' => $border);
30
my $pad = $border->Frame;
32
$label = $cw->Label(-text => $ltext);
33
my $y = int($label->winfo('reqheight')) / 2;
34
my $ph = $y - int($border->cget(-bd));
38
$label->form(-top => 0, -left => 4, -padx => 6, -pady => 2);
39
# $label->place('-y' => 2, '-x' => 10);
40
$border->form(-top => $y, -bottom => -1, -left => 0, -right => -1, -padx => 2, -pady => 2);
41
$pad->form(-left => 0, -right => -1, -top => 0, -bottom => $ph);
42
$f->form(-top => $pad, -bottom => -1, -left => 0, -right => -1);
43
# $cw->Delegates('pack' => $cw);
35
$cw->Delegates(DEFAULT => $frame);
37
-background => [[qw/SELF ADVERTISED/],
38
qw/background Background/],
39
-borderwidth => [$border, qw/borderWidth Border 2/],
40
-font => [$label, qw/font Font/],
41
-foreground => [$label, qw/foreground Foreground black/],
42
-label => [{-text => $label}, qw/label Label/],
43
-labelside => [qw/METHOD labelSide LabelSide acrosstop/],
44
-labelvariable => [{-textvariable => $label}],
45
-relief => [$border, qw/relief Relief groove/],
52
form => [qw/check forget grid info slaves/],
53
grid => [qw/bbox columnconfigure configure forget info location
54
propagate rowconfigure remove size slaves/],
55
pack => [qw/forget info propagate slaves/],
56
place => [qw/forget info slaves/]
61
return $cw->{Configure}{-labelside} unless $side;
63
my $border = $cw->Subwidget('border');
64
my $pad = $cw->Subwidget('pad');
65
my $frame = $cw->Subwidget('frame');
66
my $label = $cw->Subwidget('label');
68
## packForget/formForget as appropriate
69
foreach ($border, $label, $pad, $frame) {
70
$_->formForget if $cw->{m_geoMgr} eq "form";
71
$_->packForget if ($cw->{m_geoMgr} eq "pack" && $_->ismapped);
74
if ($side eq "acrosstop") {
76
my $y = $label->reqheight / 2;
77
my $ph = $y - ($border->cget(-bd));
80
$label->form(qw/-top 0 -left 4 -padx 6 -pady 2/);
81
$border->form(-top => $y,
82
qw/-bottom -1 -left 0 -right -1 -padx 2 -pady 2/);
83
$pad->form(-bottom => $ph,
84
qw/-top 0 -left 0 -right -1/);
85
$frame->form(-top => $pad,
86
qw/-bottom -1 -left 0 -right -1 -fill both/);
87
$cw->{m_geoMgr} = "form";
45
$f = $cw->Frame(-relief => 'groove', -bd => 2, %{$args});
46
$label = $cw->Label(-text => $ltext);
47
$label->pack(-side => $lside);
48
$f->pack(-side => $lside, -fill => 'both', -expand => 1);
91
$label->pack(-side => $side);
92
$frame->pack(-expand => 1, -fill => 'both');
93
$border->pack(-side => $side, -expand => 1, fill => 'both');
94
$cw->{m_geoMgr} = "pack";
50
$cw->Advertise('frame' => $f);
51
$cw->Advertise('label' => $label);
52
$cw->Delegates(DEFAULT => $f);
53
$cw->ConfigSpecs(-labelside => ['PASSIVE', 'labelSide', 'LabelSide', 'acrosstop'],
100
$cw = $cw->Subwidget('frame')
101
if (@_ && $_[0] =~ /^(?:slaves)$/);
102
$cw->SUPER::form(@_);
107
$cw = $cw->Subwidget('frame') if (@_ && $_[0] =~
116
$cw->SUPER::grid(@_);
122
$cw = $cw->Subwidget('frame')
123
if (@_ && $_[0] =~ /^(?:propagate|slaves)$/);
124
$cw->SUPER::pack(@_);
129
$cw = $cw->Subwidget('frame')
130
if (@_ && $_[0] =~ /^(?:slaves)$/);
131
$cw->SUPER::place(@_);