home *** CD-ROM | disk | FTP | other *** search
- # labelframe.pl
-
- use vars qw/$TOP/;
-
- sub labelframe {
-
- # Create a top-level window that displays several Labelframe widgets.
-
- my($demo) = @_;
- $TOP = $MW->WidgetDemo(
- -geometry_manager => 'grid',
- -name => $demo,
- -text => 'Labelframes are used to group related widgets together. The label maybe either plain text or another widget.',
- -title => 'Labelframe Demonstration',
- -iconname => 'labelframe',
- );
-
- # A group of radiobuttons in a labelframe
-
- my $lf1 = $TOP->Labelframe(qw/-text Value -padx 2 -pady 2/);
- $lf1->grid(qw/-row 0 -column 0 -pady 2m -padx 2m/);
-
- my $lfdummy;
- foreach my $value (1 .. 4) {
- $lf1->Radiobutton(
- -text => "This is value $value" ,
- -variable => \$lfdummy,
- -value => $value,
- )->pack(qw/-side top -fill x -pady 2/);
- }
-
- # A label window controlling a group of options.
-
- my $lf2 = $TOP->Labelframe(qw/-pady 2 -padx 2/);
- $lf2->grid(qw/-row 0 -column 1 -pady 2m -padx 2m/);
- my $lfdummy2;
- my $cb;
- $cb = $lf2->Checkbutton(
- -text => 'Use this option',
- -variable => \$lfdummy2,
- -command => sub {&labelframe_buttons($lf2, $cb, \$lfdummy2)},
- -padx => 0,
- );
- $lf2->configure(-labelwidget => $cb);
-
- foreach my $str (qw/Option1 Option2 Option3/) {
- $lf2->Checkbutton(-text => $str)->pack(qw/-side top -fill x -pady 2/);
- }
-
- &labelframe_buttons($lf2, $cb, \$lfdummy2);
-
- $TOP->gridColumnconfigure([0, 1], -weight => 1);
-
- } # end labelframe
-
- sub labelframe_buttons {
-
- # The state of the sub-Checkbuttons is dependent upon the state of
- # the master -labelwidget Checkbutton.
-
- my ($lf, $cb, $var_ref) = @_;
-
- foreach my $child ($lf->children) {
- next if $child == $cb;
- if ($$var_ref) {
- $child->configure(qw/-state normal/);
- } else {
- $child->configure(qw/-state disabled/);
- }
- }
-
- } # end labelframe_buttons
-
- 1;
-