aboutsummaryrefslogtreecommitdiffstats
path: root/rpmdrake
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@mandriva.org>2004-05-11 12:35:18 +0000
committerRafael Garcia-Suarez <rgarciasuarez@mandriva.org>2004-05-11 12:35:18 +0000
commit80fa04e2b1f3938fda61330a06d08c6ce03a9351 (patch)
tree0f3fdb704f4e9c6078f8742ddc98ac16af11e0d7 /rpmdrake
parent5173ce2f648d4eae528df18453fd858fc68a7478 (diff)
downloadrpmdrake-80fa04e2b1f3938fda61330a06d08c6ce03a9351.tar
rpmdrake-80fa04e2b1f3938fda61330a06d08c6ce03a9351.tar.gz
rpmdrake-80fa04e2b1f3938fda61330a06d08c6ce03a9351.tar.bz2
rpmdrake-80fa04e2b1f3938fda61330a06d08c6ce03a9351.tar.xz
rpmdrake-80fa04e2b1f3938fda61330a06d08c6ce03a9351.zip
In rpmdrake, when selecting packages by update availability, don't select
all packages automatically, because this may lead to an annoying flood of popups asking the user to resolve conflicts
Diffstat (limited to 'rpmdrake')
-rwxr-xr-xrpmdrake85
1 files changed, 55 insertions, 30 deletions
diff --git a/rpmdrake b/rpmdrake
index e8f0d578..792725a7 100755
--- a/rpmdrake
+++ b/rpmdrake
@@ -690,26 +690,36 @@ or you already installed all of them."));
$textcolumn->set_min_width($typical_width*0.7);
my $cursor_to_restore;
- $tree->signal_connect(expose_event => sub {
- $cursor_to_restore or return;
- gtkset_mousecursor_normal($tree->window);
- undef $cursor_to_restore;
- });
- $tree->signal_connect(row_expanded => sub {
- my ($tree, $iter, $path) = @_;
- #- hackish: if first child has '' as name, then we need to expand on the fly
- my $child = $tree_model->iter_children($iter);
- if ($tree_model->get($child, 0) eq '') {
- $tree_model->remove($child);
- slow_func($tree->window, sub { $options->{add_nodes}->(@{$elems{$tree_model->get($iter, 0)}}) });
- } else {
- if ($tree_model->iter_n_children($iter) > 500) { #- populating large groups is slow
- $cursor_to_restore = 1;
- gtkset_mousecursor_wait($tree->window);
- }
- }
- $tree->expand_row($path, 0);
- });
+ $tree->signal_connect(
+ expose_event => sub {
+ $cursor_to_restore or return;
+ gtkset_mousecursor_normal($tree->window);
+ undef $cursor_to_restore;
+ },
+ );
+ $tree->signal_connect(
+ row_expanded => sub {
+ my ($tree, $iter, $path) = @_;
+ #- hackish: if first child has '' as name, and if we're not listing by update
+ # availability, then we need to expand on the fly. (by update availability,
+ # selecting all packages will be too slow and expose too much choice conflicts)
+ my $child = $tree_model->iter_children($iter);
+ if ($options->{tree_mode} ne 'by_presence' && $tree_model->get($child, 0) eq '') {
+ $tree_model->remove($child);
+ slow_func(
+ $tree->window,
+ sub { $options->{add_nodes}->(@{$elems{$tree_model->get($iter, 0)}}) }
+ );
+ } else {
+ if ($tree_model->iter_n_children($iter) > 500) {
+ #- populating large groups is slow
+ $cursor_to_restore = 1;
+ gtkset_mousecursor_wait($tree->window);
+ }
+ }
+ $tree->expand_row($path, 0);
+ },
+ );
my @modes_buttons;
if ($MODE eq 'update') {
@@ -738,10 +748,20 @@ or you already installed all of them."));
my @radios_names_ordered = qw(mandrake_choices flat by);
$compssUsers or shift @radios_names_ordered;
- my @advanced_modes = ([ 'by_group', N("All packages, by group"), 0 ], [ 'by_size', N("All packages, by size"), 1 ],
- [ 'by_selection', N("All packages, by selection state"), 1 ]);
- $MODE eq 'install' and push @advanced_modes, ([ 'by_source', N("All packages, by medium repository"), 0 ], [ 'by_presence', N("All packages, by update availability"), 0 ]);
- $MODE eq 'remove' and push @advanced_modes, [ 'by_leaves', N("Leaves only, sorted by install date"), 1 ];
+ my @advanced_modes = (
+ [ 'by_group', N("All packages, by group"), 0 ],
+ [ 'by_size', N("All packages, by size"), 1 ],
+ [ 'by_selection', N("All packages, by selection state"), 1 ],
+ );
+ if ($MODE eq 'install') {
+ push @advanced_modes, (
+ [ 'by_source', N("All packages, by medium repository"), 0 ],
+ [ 'by_presence', N("All packages, by update availability"), 0 ],
+ );
+ }
+ elsif ($MODE eq 'remove') {
+ push @advanced_modes, [ 'by_leaves', N("Leaves only, sorted by install date"), 1 ];
+ }
my $default_radio = $options->{tree_mode} = 'mandrake_choices';
if (member($tree_mode->[0], keys %radios_infos, map { $_->[0] } @advanced_modes)) {
@@ -774,12 +794,17 @@ or you already installed all of them."));
my ($capt_mode, $capt_flat) = ($_->[0], $_->[2]);
my $item = Gtk2::MenuItem->new_with_label($_->[1]);
$advanced_menu->append(gtkshow($item));
- $_->[0] eq $tree_mode->[0] and do { $options->{tree_submode} = $_->[0]; $advanced_menu->set_active($::i) };
- $item->signal_connect(activate => sub {
- $options->{tree_submode} = $capt_mode;
- $options->{tree_subflat} = $capt_flat;
- $radio_by->activate;
- });
+ if ($_->[0] eq $tree_mode->[0]) {
+ $options->{tree_submode} = $_->[0];
+ $advanced_menu->set_active($::i);
+ }
+ $item->signal_connect(
+ activate => sub {
+ $options->{tree_submode} = $capt_mode;
+ $options->{tree_subflat} = $capt_flat;
+ $radio_by->activate;
+ },
+ );
} @advanced_modes;
$options->{tree_submode} ||= $advanced_modes[0][0];
each_index {