78 lines
1.5 KiB
Perl
78 lines
1.5 KiB
Perl
package menu;
|
|
require Exporter;
|
|
|
|
use functions;
|
|
|
|
use vars qw($VERSION @ISA @EXPORT);
|
|
$VERSION = 1.00;
|
|
@ISA = qw(Exporter);
|
|
###############################################################################
|
|
@EXPORT = qw/
|
|
show_menu
|
|
menu_back
|
|
|
|
|
|
/;
|
|
|
|
|
|
######## Menu Funktionen und Beispielnutzung
|
|
# x|y|z x:reihenfolge y:zeichen für die auswahl z:Text im Menü
|
|
# my %menu = (
|
|
# '1|1|P1' => \&ebene1_a,
|
|
# '97' => 'blank',
|
|
# '98' => 'line',
|
|
# '99|0|ende' => \&ebene1_quit,
|
|
# );
|
|
#show_menu(\%menu, "Hauptmenü");
|
|
#sub ebene1_a {
|
|
# my %menu = (
|
|
# '1|1|blabla' => \&ebene1_b,
|
|
# '97' => 'blank',
|
|
# '98' => 'line',
|
|
# '99|0|zurück' => \&menu_back,
|
|
# );
|
|
# show_menu(\%menu, "Untermenü");
|
|
#}
|
|
#sub ebene1_b {
|
|
#}
|
|
#sub ebene1_quit {
|
|
# exit 0;
|
|
#}
|
|
|
|
sub show_menu {
|
|
my $m=shift;
|
|
my $t=shift;
|
|
my %m=%{$m};
|
|
my %menu;
|
|
my $k, $e;
|
|
|
|
while (1) {
|
|
clrscr();
|
|
printf "\n $t\n\n";
|
|
foreach my $l (sort keys %m) {
|
|
if ($m{$l} eq "blank") {
|
|
printf "\n";
|
|
}
|
|
elsif ($m{$l} eq "line") {
|
|
for (1..26) { printf "-"; } printf "\n";
|
|
}
|
|
else {
|
|
my ($r,$k,$e) = split /\|/, $l;
|
|
$menu{$k}=$m{$l};
|
|
printf " %2s %-20s\n", $k, $e;
|
|
}
|
|
}
|
|
print "\nAuswahl: ";
|
|
my $in = <STDIN>;
|
|
chomp $in;
|
|
$menu{$in}->() unless ($menu{$in} == "");
|
|
}
|
|
}
|
|
|
|
sub menu_back {
|
|
# call: nur in Verwendung mit show_menu sinnvoll
|
|
last;
|
|
}
|
|
|
|
1;
|