summaryrefslogtreecommitdiffstats
path: root/perl-install/interactive_stdio.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/interactive_stdio.pm')
-rw-r--r--perl-install/interactive_stdio.pm51
1 files changed, 34 insertions, 17 deletions
diff --git a/perl-install/interactive_stdio.pm b/perl-install/interactive_stdio.pm
index 40dcdbb7c..284194a11 100644
--- a/perl-install/interactive_stdio.pm
+++ b/perl-install/interactive_stdio.pm
@@ -1,4 +1,4 @@
-package interactive_stdio;
+package interactive_stdio; # $Id$
use diagnostics;
use strict;
@@ -9,7 +9,7 @@ use vars qw(@ISA);
use interactive;
use common qw(:common);
-1;
+$| = 1;
sub readln {
my $l = <STDIN>;
@@ -19,19 +19,20 @@ sub readln {
sub check_it {
my ($i, $n) = @_;
- $i =~ /^\s*\d+\s*$/ && 1 <= $i && $i <= $n
+ $i =~ /^\s*\d+\s*$/ && 1 <= $i && $i <= $n
}
sub ask_from_listW {
- my ($o, $title, $messages, $list, $def) = @_;
- my $i;
+ my ($o, $title_, $messages, $list, $def) = @_;
+ my ($title, @okcancel) = ref $title_ ? @$title_ : ($title_, _("Ok"), _("Cancel"));
print map { "$_\n" } @$messages;
+ my $i;
if (@$list < 10 && sum(map { length $_ } @$list) < 50) {
my @l;
do {
if (defined $i) {
- @l ? print _("Ambiguity (%s) be more precise\n", join(", ", @l)) :
+ @l ? print _("Ambiguity (%s), be more precise\n", join(", ", @l)) :
print _("Bad choice, try again\n");
}
@$list == 1 ? print @$list :
@@ -41,10 +42,10 @@ sub ask_from_listW {
} until (@l == 1);
$l[0];
} else {
- my $n = 0; foreach (@$list) {
+ my $n = 0; foreach (@$list) {
$n++;
$def eq $_ and $def = $n;
- print "$n: $_\n";
+ print "$n: $_\n";
}
do {
defined $i and print _("Bad choice, try again\n");
@@ -56,13 +57,14 @@ sub ask_from_listW {
}
sub ask_many_from_listW {
- my ($o, $title, $messages, $list, $default) = @_;
+ my ($o, $title, $messages, $l) = @_;
+ my ($list, $val) = ($l->{labels}, $l->{ref});
my @defaults;
print map { "$_\n" } @$messages;
- my $n = 0; foreach (@$list) {
- $n++;
- print "$n: $_\n";
- push @defaults, $n if $default->[$n - 1];
+ my $n = 0; foreach (@$list) {
+ $n++;
+ print "$n: $_\n";
+ push @defaults, $n if ${$val->[$n - 1]};
}
my $i;
TRY_AGAIN:
@@ -70,11 +72,26 @@ sub ask_many_from_listW {
print _("Your choice? (default %s enter `none' for none) ", join(',', @defaults));
$i = readln();
my @t = split ',', $i;
- foreach (@t) { check_it($_, $n) or goto TRY_AGAIN }
+ if ($i =~ /^none$/i) {
+ @t = ();
+ } else {
+ foreach (@t) { check_it($_, $n) or goto TRY_AGAIN }
+ }
- my @rr = (0) x @$list;
- $rr[$_ - 1] = 1 foreach @t;
- @rr;
+ $$_ = 0 foreach @$val;
+ ${$val->[$_ - 1]} = 1 foreach @t;
+ $val;
}
+sub wait_messageW {
+ my ($o, $title, $message) = @_;
+ print join "\n", @$message;
+}
+sub wait_message_nextW {
+ my $m = join "\n", @{$_[1]};
+ print "\r$m", ' ' x (60 - length $m);
+}
+sub wait_message_endW { print "\nDone\n" }
+
+1;