From 57cd86ef19df8f718d2b99de9c00487078ec1d15 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Mon, 17 Mar 2008 13:08:33 +0000 Subject: split filters (all, installed, non installed) from views (GUI, meta packages, updates, ...) --- Rpmdrake/gui.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'Rpmdrake') diff --git a/Rpmdrake/gui.pm b/Rpmdrake/gui.pm index ff24e6be..90963552 100644 --- a/Rpmdrake/gui.pm +++ b/Rpmdrake/gui.pm @@ -71,7 +71,7 @@ our @EXPORT = qw( toggle_nodes ); -our ($descriptions, @filtered_pkgs, %filter_methods, $force_displaying_group, $force_rebuild, @initial_selection, $pkgs, $size_free, $size_selected, $urpm); +our ($descriptions, %filters, @filtered_pkgs, %filter_methods, $force_displaying_group, $force_rebuild, @initial_selection, $pkgs, $size_free, $size_selected, $urpm); our %grp_columns = ( label => 0, @@ -520,10 +520,13 @@ sub pkgs_provider { my $h = &get_pkgs($options); # was given (1, @_) for updates ($urpm, $descriptions) = @$h{qw(urpm update_descr)}; $pkgs = $h->{all_pkgs}; + %filters = ( + non_installed => $h->{installable}, + installed => $h->{installed}, + all => [ keys %$pkgs ], + ); my %tmp_filter_methods = ( all => sub { @filtered_pkgs = keys %$pkgs }, - installed => sub { @filtered_pkgs = @{$h->{installed}} }, - non_installed => sub { @filtered_pkgs = @{$h->{installable}} }, all_updates => sub { @filtered_pkgs = @{$h->{updates}}; # potential "updates" from media not tagged as updates: @@ -544,7 +547,13 @@ sub pkgs_provider { }; } - %filter_methods = %tmp_filter_methods; + undef %filter_methods; + foreach my $type (keys %tmp_filter_methods) { + $filter_methods{$type} = sub { + $force_rebuild = 1; # force rebuilding tree since we changed filter (FIXME: switch to SortModel) + @filtered_pkgs = intersection($filters{$filter->[0]}, [ $tmp_filter_methods{$type}->() ]); + }; + } switch_pkg_list_mode($mode); } -- cgit v1.2.1