174 lines
4.0 KiB
Perl
174 lines
4.0 KiB
Perl
package Win32::GUI::CardLayout;
|
|
|
|
$VERSION = "0.1"; # Oct. 8, 1999
|
|
|
|
|
|
sub new {
|
|
my($class, $win, $base) = @_;
|
|
my $r_card = {
|
|
"window" => $win,
|
|
"base" => $base,
|
|
};
|
|
bless $r_card, $class;
|
|
return $r_card;
|
|
}
|
|
|
|
|
|
sub add {
|
|
my($cardMgr, $widget, $index) = @_;
|
|
$cardMgr->{'window'}->{$widget}->Hide() if $index ne $cardMgr->{'base'};
|
|
push(@content, [$cardMgr->{'window'}, $cardMgr->{'window'}->{$widget}, $index]);
|
|
$cardMgr->{'content'} = [ @content ];
|
|
$cardMgr->{'last'} = $index;
|
|
}
|
|
|
|
|
|
sub showCard {
|
|
my($cardMgr, $index) = @_;
|
|
|
|
foreach $piece(@{$cardMgr->{'content'}}) {
|
|
$thiswindow = $piece->[0];
|
|
$thiswidget = $piece->[1];
|
|
$thiswidget->Show() if($piece->[2] eq $index && $thiswindow eq $cardMgr->{'window'});
|
|
$thiswidget->Hide() if($piece->[2] ne $index && $thiswindow eq $cardMgr->{'window'});
|
|
}
|
|
}
|
|
|
|
|
|
sub showFirstCard {
|
|
my($cardMgr) = @_;
|
|
|
|
foreach $piece(@{$cardMgr->{'content'}}) {
|
|
$thiswindow = $piece->[0];
|
|
$thiswidget = $piece->[1];
|
|
$thiswidget->Show() if($piece->[2] eq $cardMgr->{'base'} && $thiswindow eq $cardMgr->{'window'});
|
|
$thiswidget->Hide() if($piece->[2] ne $cardMgr->{'base'} && $thiswindow eq $cardMgr->{'window'});
|
|
}
|
|
}
|
|
|
|
|
|
sub showLastCard {
|
|
my($cardMgr) = @_;
|
|
|
|
foreach $piece(@{$cardMgr->{'content'}}) {
|
|
$thiswindow = $piece->[0];
|
|
$thiswidget = $piece->[1];
|
|
$thiswidget->Show() if($piece->[2] eq $cardMgr->{'last'} && $thiswindow eq $cardMgr->{'window'});
|
|
$thiswidget->Hide() if($piece->[2] ne $cardMgr->{'last'} && $thiswindow eq $cardMgr->{'window'});
|
|
}
|
|
}
|
|
|
|
1;
|
|
|
|
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
Win32::GUI::CardLayout - Card layout support for Win32::GUI
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use Win32::GUI;
|
|
use Win32::GUI::CardLayout;
|
|
|
|
$Window = new GUI::Window(
|
|
-text => "CardLayout Window",
|
|
-name => "MainWindow",
|
|
-width => 200,
|
|
-height => 100,
|
|
-left => 110,
|
|
-top => 110,
|
|
);
|
|
$card = new Win32::GUI::CardLayout($Window, "Main");
|
|
|
|
|
|
$Window->AddButton(
|
|
-name => "ShowCardTwoButton",
|
|
-text => "Push",
|
|
-left => 10,
|
|
-top => 40,
|
|
);
|
|
$card->add("ShowCardTwoButton", "Main");
|
|
|
|
|
|
$Window->AddLabel(
|
|
-name => "CardTwoLabel",
|
|
-text => "Label Two",
|
|
-left => 5,
|
|
-top => 35,
|
|
);
|
|
$card->add("CardTwoLabel", "Second");
|
|
|
|
$Window->Show();
|
|
Win32::GUI::Dialog();
|
|
|
|
|
|
sub ShowCardTwoButton_Click {
|
|
$card->showCard("Second");
|
|
}
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Multiple GUI interfaces may be placed within one window. Each interface is
|
|
assigned a name and placed in the CardLayout Manager with the add() function.
|
|
|
|
The constructor accepts two parameters. The first is the window object that the
|
|
new CardLayout object will be associated with and the second parameter is the name
|
|
of the base card. Widgets added to the CardLayout Manager with the same name as the
|
|
base card will be displayed first while all others are hidden.
|
|
|
|
=head2 Constructor
|
|
|
|
=over 4
|
|
|
|
=item new Win32::GUI::CardLayout(Window, Base_Card_Name)
|
|
|
|
=back
|
|
|
|
=head2 Methods
|
|
|
|
=over 4
|
|
|
|
=item add("WidgetObject", "CardName")
|
|
|
|
Adds the widget with the name WidgetObject to the card named CardName.
|
|
Example:
|
|
$card->add("FirstNameLabel", "FormCard");
|
|
|
|
|
|
=item showCard("CardName")
|
|
|
|
Hides the current card and displays the card labeled CardName.
|
|
Example:
|
|
$card->showCard("Main");
|
|
|
|
|
|
=item showFirstCard()
|
|
|
|
Hides the current card and displays the first card. The first card will
|
|
be the base card named the constructor.
|
|
Example:
|
|
$card->showFirstCard();
|
|
|
|
=item showLastCard()
|
|
|
|
Hides the current card and displays the last card. The last card is the
|
|
name of the last card added the the CardLayout Manager.
|
|
Example:
|
|
$card->showLastCard();
|
|
|
|
|
|
=back
|
|
|
|
=head1 VERSION
|
|
|
|
Win32::GUI::CardLayout version 0.1, October 8 1999.
|
|
|
|
=head1 AUTHOR
|
|
|
|
Mike Kangas ( C<kangas@anlon.com> );
|
|
|
|
=cut
|