diff options
Diffstat (limited to 'perl-install/interactive.pm')
-rw-r--r-- | perl-install/interactive.pm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/perl-install/interactive.pm b/perl-install/interactive.pm new file mode 100644 index 000000000..977adea5a --- /dev/null +++ b/perl-install/interactive.pm @@ -0,0 +1,53 @@ +package interactive; + +use diagnostics; +use strict; + +use common qw(:common); + +1; + +sub new($$) { + my ($type) = @_; + + bless {}, ref $type || $type; +} + + +sub ask_warn($$$) { + my ($o, $title, $message) = @_; + ask_from_list($o, $title, $message, [ _("Ok") ]); +} +sub ask_yesorno($$$) { + my ($o, $title, $message) = @_; + ask_from_list_($o, $title, $message, [ __("Yes"), __("No") ]) eq "Yes"; +} +sub ask_okcancel($$$) { + my ($o, $title, $message) = @_; + ask_from_list_($o, $title, $message, [ __("Ok"), __("Cancel") ]) eq "Ok"; +} +sub ask_from_list_($$$$;$) { + my ($o, $title, $message, $l, $def) = @_; + untranslate( + ask_from_list($o, $title, $message, [ map { translate($_) } @$l ], translate($def)), + @$l); +} +sub ask_from_list($$$$;$) { + my ($o, $title, $message, $l, $def) = @_; + + $message = ref $message ? $message : [ $message ]; + + @$l > 10 and $l = [ sort @$l ]; + + $o->ask_from_listW($title, $message, $l, $def || $l->[0]); +} +sub ask_many_from_list($$$$;$) { + my ($o, $title, $message, $l, $def) = @_; + + $message = ref $message ? $message : [ $message ]; + + $o->ask_many_from_listW($title, $message, $l, $def); +} + + + |