summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/install_steps_interactive.pm44
1 files changed, 28 insertions, 16 deletions
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 6030f25a4..a71745704 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -556,20 +556,34 @@ sub chooseGroups {
int $total_size;
};
- my %val;
- foreach (@groups) {
- $val{$_} = ! grep { ! $o->{compssUsersChoice}{$_} } @{$compssUsers->{$_}{flags}};
- }
+ my %val = map {
+ $_ => ! grep { ! $o->{compssUsersChoice}{$_} } @{$compssUsers->{$_}{flags}}
+ } @groups;
+
# @groups = grep { $size{$_} = round_down($size{$_} / sqr(1024), 10) } @groups; #- don't display the empty or small one (eg: because all packages are below $min_level)
- my ($all, $size_text, $old_size, $path);
- my $update_size = sub {
+ my ($all, $old_size);
+ my $size_to_display = sub {
my $size = $system_size + $compute_size->(map { @{$compssUsers->{$_}{flags}} } grep { $val{$_} } @groups);
#- if a profile is deselected, deselect everything (easier than deselecting the profile packages)
$old_size > $size and install_any::unselectMostPackages($o);
$old_size = $size;
- $size_text = _("Selected size %d%s", pkgs::correctSize($size / sqr(1024)), _("MB"));
- }; &$update_size;
+ _("Selected size %d%s", pkgs::correctSize($size / sqr(1024)), _("MB"));
+ };
+
+ $o->reallyChooseGroups($size_to_display, $individual, \%val) or return;
+
+ $o->{compssUsersChoice}{$_} = 0 foreach map { @{$compssUsers->{$_}{flags}} } grep { !$val{$_} } keys %val;
+ $o->{compssUsersChoice}{$_} = 1 foreach map { @{$compssUsers->{$_}{flags}} } grep { $val{$_} } keys %val;
+ 1;
+}
+
+sub reallyChooseGroups {
+ my ($o, $size_to_display, $individual, $val) = @_;
+
+ my $size_text = &$size_to_display;
+
+ my ($path, $all);
$o->ask_from_entries_refH('', _("Package Group Selection"), [
{ val => \$size_text, type => 'label' }, {},
(map {;
@@ -578,7 +592,7 @@ sub chooseGroups {
if_($old ne $path, { val => $path }),
{
help => translate($o->{compssUsers}{$_}{descr}),
- val => \$val{$_},
+ val => \$val->{$_},
type => 'bool',
icon => do {
my $f = "/usr/share/icons/" . ($o->{compssUsers}{$_}{icons} || 'default');
@@ -588,17 +602,15 @@ sub chooseGroups {
},
disabled => sub { $all },
text => translate($o->{compssUsers}{$_}{label}),# . sprintf(" (%d%s)", $compute_size->(@{$compssUsers->{$_}{flags}}) / sqr(1024), _("MB")),
- } } @groups),
+ } } @{$o->{compssUsersSorted}}),
if_($o->{meta_class} eq 'desktop', { text => _("All"), val => \$all, type => 'bool' }),
if_($individual, { text => _("Individual package selection"), val => $individual, advanced => 1, type => 'bool' }),
- ], changed => $update_size) or return;
+ ], changed => sub { $size_text = &$size_to_display }) or return;
+
if ($all) {
- $o->{compssUsersChoice}{$_} = 1 foreach map { @{$compssUsers->{$_}{flags}} } @groups;
- } else {
- $o->{compssUsersChoice}{$_} = 0 foreach map { @{$compssUsers->{$_}{flags}} } grep { !$val{$_} } keys %val;
- $o->{compssUsersChoice}{$_} = 1 foreach map { @{$compssUsers->{$_}{flags}} } grep { $val{$_} } keys %val;
+ $val->{$_} = 1 foreach keys %$val;
}
- 1;
+ 1;
}
sub chooseCD {