From 96a992b4c0b9d5bc4d6d40a17e2344920e286b19 Mon Sep 17 00:00:00 2001 From: Pascal Terjan Date: Thu, 29 Jan 2009 17:06:31 +0000 Subject: Have a real fileselector in curses mode --- perl-install/NEWS | 2 ++ perl-install/install/NEWS | 1 + perl-install/interactive/curses.pm | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/perl-install/NEWS b/perl-install/NEWS index dfcac2c02..f645934e5 100644 --- a/perl-install/NEWS +++ b/perl-install/NEWS @@ -1,3 +1,5 @@ +- interactive::curses: + o use a real file selector in curses too - diskdrake: o don't rewrite label when it did not change (#47186) o rewrite gpt support with libparted diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS index b54b5ea1a..964485355 100644 --- a/perl-install/install/NEWS +++ b/perl-install/install/NEWS @@ -1,3 +1,4 @@ +- use a file selector in text mode too - include mke2fs.conf from e2fsprogs-1.41.3-3mdb Version 11.80.1 - 21 January 2008 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) = @_; -- cgit v1.2.1