summaryrefslogtreecommitdiffstats
path: root/perl-install/interactive/curses.pm
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@mandriva.org>2009-01-29 17:06:31 +0000
committerPascal Terjan <pterjan@mandriva.org>2009-01-29 17:06:31 +0000
commit96a992b4c0b9d5bc4d6d40a17e2344920e286b19 (patch)
treec4ecdaaeac997aca4ff70097f1ce39223a668f3d /perl-install/interactive/curses.pm
parentcc67ca48bb7d2cb623a6ccf66117f06ad92466ed (diff)
downloaddrakx-96a992b4c0b9d5bc4d6d40a17e2344920e286b19.tar
drakx-96a992b4c0b9d5bc4d6d40a17e2344920e286b19.tar.gz
drakx-96a992b4c0b9d5bc4d6d40a17e2344920e286b19.tar.bz2
drakx-96a992b4c0b9d5bc4d6d40a17e2344920e286b19.tar.xz
drakx-96a992b4c0b9d5bc4d6d40a17e2344920e286b19.zip
Have a real fileselector in curses mode
Diffstat (limited to 'perl-install/interactive/curses.pm')
-rw-r--r--perl-install/interactive/curses.pm24
1 files changed, 24 insertions, 0 deletions
diff --git a/perl-install/interactive/curses.pm b/perl-install/interactive/curses.pm
index b33caaad9..90fca4c14 100644
--- a/perl-install/interactive/curses.pm
+++ b/perl-install/interactive/curses.pm
@@ -539,6 +539,30 @@ sub ask_fromW_ {
$v eq '0 but true' ? 0 : $v;
}
+sub ask_fileW {
+ my ($o, $opts) = @_;
+ my ($file, $dir);
+
+ $dir = $opts->{directory} || $opts->{file} && dirname($opts->{file});
+
+ if($opts->{save}) {
+ $file = $o->{cui}->savefilebrowser('-title' => $opts->{title}, '-path' => $dir, '-file' => basename($file));
+ } else {
+ $file = $o->{cui}->loadfilebrowser('-title' => $opts->{title}, '-path' => $dir, '-file' => basename($file));
+ }
+
+ my $err;
+ if (!$file) {
+ $err = N("No file chosen");
+ } elsif(-f $file && $opts->{want_a_dir}) {
+ $file = dirname($file);
+ } elsif(-d $file && !$opts->{want_a_dir}) {
+ $err = N("You have chosen a directory, not a file");
+ } elsif (!-e $file && !$opts->{save}) {
+ $err = $opts->{want_a_dir} ? N("No such directory") : N("No such file");
+ };
+ $err and $o->ask_warn('', $err) or $file;
+}
sub wait_messageW {
my ($o, $title, $message, $message_modifiable) = @_;