diff options
Diffstat (limited to 'mdkapplet')
-rwxr-xr-x | mdkapplet | 31 |
1 files changed, 29 insertions, 2 deletions
@@ -246,10 +246,11 @@ foreach my $opt (@ARGV) { } } -my $root; +my ($root, $download_dir, $download_all); { my $temp_urpm = Rpmdrake::open_db::fast_open_urpmi_db(); $root = $temp_urpm->{root}; + $download_dir = $temp_urpm->{cachedir}; } my ($new_distro, $no_more_supported); @@ -412,6 +413,16 @@ sub confirm_upgrade() { local $mygtk2::left_padding = 0; my $warn_me = text2bool($local_config{DO_NOT_ASK_FOR_DISTRO_UPGRADE}); my $w = new_portable_dialog(N("New version of Mandriva Linux distribution")); + my ($temp_dir, $box); + + my $browse; + $browse = gtksignal_connect( + Gtk2::FileChooserButton->new(N("Browse"), 'select-folder'), + 'current-folder-changed' => sub { + $temp_dir = $_[0]->get_current_folder; + }); + $browse->set_current_folder($download_dir); + my $res = fill_n_run_portable_dialog($w, [ get_banner(), @@ -422,12 +433,27 @@ sub confirm_upgrade() { gtknew('Label_Left', text => N("Do you want to upgrade to the '\%s' distribution?", $new_distro->{name} || $new_distro->{version}), @common), gtknew('CheckButton', text => N("Do not ask me next time"), active_ref => \$warn_me), + gtknew('CheckButton', text => N("Download all packages at once") . "\n" . + N("(Warning: You will need quite a lot of free space)"), + active_ref => \$download_all, sensitive_ref => \$browse, + toggled => sub { $box->set_sensitive($download_all) }, + ), + $box = gtknew('HBox', sensitive => $download_all, + children => [ + 0, gtknew('Label_Left', text => N("Where to download packages:")), + 1 , $browse, + ]), create_okcancel($w, N("Next"), N("Cancel")), ]); setVar('DO_NOT_ASK_FOR_DISTRO_UPGRADE', bool2text($warn_me)); $local_config{DO_NOT_ASK_FOR_DISTRO_UPGRADE} = bool2text($warn_me); - $res ? really_confirm_upgrade() : 0; + if ($res) { + $download_dir = $temp_dir; + really_confirm_upgrade(); + } else { + return 0; + } } sub really_confirm_upgrade() { @@ -470,6 +496,7 @@ sub upgrade() { return if $mdv_update_pid; return if !confirm_upgrade(); $mdv_update_pid = fork_exec('mdkapplet-upgrade-helper', "--new_distro_version=$new_distro->{version}", + if_($download_all, "--download-all=$download_dir"), if_($root, "--urpmi-root=$root")); } |