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.pm37
1 files changed, 18 insertions, 19 deletions
diff --git a/perl-install/interactive/stdio.pm b/perl-install/interactive/stdio.pm
index 553f3fec5..5bc53a0f5 100644
--- a/perl-install/interactive/stdio.pm
+++ b/perl-install/interactive/stdio.pm
@@ -1,4 +1,4 @@
-package interactive::stdio; # $Id$
+package interactive::stdio;
use diagnostics;
use strict;
@@ -63,14 +63,14 @@ ask_fromW_begin:
my @labels;
my $format_label = sub { my ($e) = @_; return sprintf("`%s' %s %s\n", ${$e->{val}}, $e->{label}, $e->{text}) };
my $do_widget = sub {
- my ($e, $ind) = @_;
+ my ($e, $_ind) = @_;
if ($e->{type} eq 'bool') {
print "$e->{text} $e->{label}\n";
print N("Your choice? (0/1, default `%s') ", ${$e->{val}} || '0');
my $i = readln();
if ($i) {
- to_bool($i) != to_bool(${$e->{val}}) and $common->{callbacks}{changed}->($ind);
+ to_bool($i) != to_bool(${$e->{val}}) && $e->{changed} and $e->{changed}->();
${$e->{val}} = $i;
}
} elsif ($e->{type} =~ /list/) {
@@ -89,12 +89,18 @@ ask_fromW_begin:
print "\n";
my $i = good_choice(may_apply($e->{format}, ${$e->{val}}), $n);
print "Setting to <", $i ? ${$e->{list}}[$i-1] : ${$e->{val}}, ">\n";
- $i and ${$e->{val}} = ${$e->{list}}[$i-1], $common->{callbacks}{changed}->($ind);
+ if ($i) {
+ ${$e->{val}} = ${$e->{list}}[$i-1];
+ $e->{changed} and $e->{changed}->();
+ }
} elsif ($e->{type} eq 'button') {
print N("Button `%s': %s", $e->{label}, may_apply($e->{format}, ${$e->{val}})), " $e->{text}\n";
print N("Do you want to click on this button?");
my $i = readln();
- $i && $i !~ /^n/i and $e->{clicked_may_quit}(), $common->{callbacks}{changed}->($ind);
+ if ($i && $i !~ /^n/i) {
+ $e->{clicked_may_quit}();
+ $e->{changed} and $e->{changed}->();
+ }
} elsif ($e->{type} eq 'label') {
my $t = $format_label->($e);
push @labels, $t;
@@ -106,7 +112,7 @@ ask_fromW_begin:
${$e->{val}} = $i || ${$e->{val}};
${$e->{val}} = '' if ${$e->{val}} eq 'void';
print "Setting to <", ${$e->{val}}, ">\n";
- $i and $common->{callbacks}{changed}->($ind);
+ $i && $e->{changed} and $e->{changed}->();
} else {
printf "UNSUPPORTED WIDGET TYPE (type <%s> label <%s> text <%s> val <%s>\n", $e->{type}, $e->{label}, $e->{text}, ${$e->{val}};
}
@@ -153,28 +159,21 @@ Your choice? ");
} else {
$i = 1;
}
- my ($callback_error) = $common->{callbacks}{$i == 2 ? 'canceled' : 'complete'}->();
- $callback_error and goto ask_fromW_begin;
+ if ($i == 1 && !$common->{validate}()) {
+ goto ask_fromW_begin;
+ }
return $i != 2;
}
sub wait_messageW {
- my ($_o, $_title, $message) = @_;
- print join "\n", @$message;
+ my ($_o, $_title, $message, $message_modifiable) = @_;
+ print join "\n", $message, $message_modifiable;
}
sub wait_message_nextW {
- my $m = join "\n", @{$_[1]};
+ my $m = $_[1];
print "\r$m", ' ' x (60 - length $m);
}
sub wait_message_endW { print "\nDone\n" }
-sub ok {
- N("Ok");
-}
-
-sub cancel {
- N("Cancel");
-}
-
1;