aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rwxr-xr-xmodules/rpmdragora/rpmdragora472
1 files changed, 222 insertions, 250 deletions
diff --git a/modules/rpmdragora/rpmdragora b/modules/rpmdragora/rpmdragora
index e24b3865..29077b07 100755
--- a/modules/rpmdragora/rpmdragora
+++ b/modules/rpmdragora/rpmdragora
@@ -28,7 +28,7 @@
use File::ShareDir ':ALL';
-use MDK::Common::Func qw(any if_);
+use MDK::Common::Func qw(any if_ before_leaving);
use utf8;
use MDK::Common::DataStructure qw(uniq intersection);
@@ -73,46 +73,50 @@ my $loc = AdminPanel::rpmdragora::locale();
my %elems;
-my $old_value;
-
-sub viewbox_callback {
+sub _viewbox_callback {
my ($selection, $options, $wanted_categories) = @_;
- my $val = $selection;
- $old_value="" if(!defined($old_value));
- return if $val eq $old_value; # workarounding gtk+ sending us sometimes twice events
+ state $old_index = -1;
+
+ # TODO add a check on selection type YItem
+ my $curr_index = $selection->index();
+ return 0 if $curr_index == $old_index;
yui::YUI::app()->busyCursor();
- $old_value = $val;
- $default_list_mode = $options->{rviews}{$val};
+ $old_index = $curr_index;
+ $default_list_mode = $options->{rviews}->[$curr_index];
# NOTE an undef value assignment produces a an array containing undef that is not a valid value to pass to
# join into writeconf()
- @$mandrakeupdate_wanted_categories = $wanted_categories->{$options->{rviews}{$val}} ?
- @{$wanted_categories->{$options->{rviews}{$val}}} :
+ @$mandrakeupdate_wanted_categories = $wanted_categories->{$options->{rviews}->[$curr_index]} ?
+ @{$wanted_categories->{$options->{rviews}->[$curr_index]}} :
();
- if ($options->{tree_mode} ne $val) {
- $tree_mode->[0] = $options->{tree_mode} = $options->{rviews}{$val};
+ if ($options->{tree_mode} ne $options->{rviews}->[$curr_index]) {
+ $tree_mode->[0] = $options->{tree_mode} = $options->{rviews}->[$curr_index];
$tree_flat->[0] = $options->{state}{flat};
reset_search();
- switch_pkg_list_mode($options->{rviews}{$val});
+ switch_pkg_list_mode($options->{rviews}->[$curr_index]);
$options->{rebuild_tree}->();
}
yui::YUI::app()->normalCursor();
+
+ return 1;
}
-sub filterbox_callback {
+sub _filterbox_callback {
my ($selection, $options, $rfilters) = @_;
- state $oldval;
- my $val = $selection;
- return if $val eq $oldval; # workarounding gtk+ sending us sometimes twice events
+ state $old_index = -1;
+
+ # TODO add a check on selection type YItem
+ my $curr_index = $selection->index();
+ return 0 if $curr_index == $old_index;
yui::YUI::app()->busyCursor();
- $oldval = $val;
- $val = $$rfilters{$val};
+ $old_index = $curr_index;
+ my $val = $rfilters->[$curr_index];
if ($filter->[0] ne $val) {
$filter->[0] = $val;
reset_search();
@@ -121,9 +125,37 @@ sub filterbox_callback {
}
yui::YUI::app()->normalCursor();
+
+ return 1;
}
+
+sub _searchmenu_callback {
+ my ($selection, $options, $search_types, $current_search_type) = @_;
+ state $old_index = -1;
+
+ # TODO add a check on selection type YItem
+ my $curr_index = $selection->index();
+ return 0 if $curr_index == $old_index;
+
+ yui::YUI::app()->busyCursor();
+
+ $old_index = $curr_index;
+ my $val = $search_types->[$curr_index];
+ if ($$current_search_type ne $val) {
+ $$current_search_type = $val;
+ reset_search();
+ slow_func(sub { switch_pkg_list_mode($default_list_mode) });
+ $options->{rebuild_tree}->();
+ }
+
+ yui::YUI::app()->normalCursor();
+
+ return 1;
+}
+
+
my $current_group = -1;
-sub tree_callback {
+sub _tree_callback {
my ($selection, $options) = @_;
#OLD my ($model, $iter) = $tree->currentItem();
#OLD return if !$iter;
@@ -154,7 +186,7 @@ sub tree_callback {
return;
}
-sub detaillist_changeditem_callback {
+sub _detaillist_changeditem_callback {
my ($detail_list, $options) = @_;
my $changedItem = $detail_list->changedItem();
return if (!$changedItem);
@@ -227,8 +259,10 @@ sub _do_search($$$$$$) {
my $searchw = $factory->createPopupDialog;
my $vbox = $factory->createVBox($searchw);
my $lblWIP = $factory->createLabel($vbox, $loc->N("Please wait, searching..."));
- my $searchprogress = $factory->createProgressBar($vbox, 'ProgressBar');
- my $stop_button = $factory->createIconButton($vbox,"",$loc->N("Stop"));
+ my $searchprogress = $factory->createProgressBar($vbox, '');
+
+ my $replace_pnt = $factory->createReplacePoint($vbox);
+# my $stop_button = $factory->createIconButton($vbox,"",$loc->N("Stop"));
#gtkadd(
#$searchw->{window},
@@ -246,86 +280,90 @@ sub _do_search($$$$$$) {
#),
#);
#$searchw->sync;
- $searchw->pollEvent();
$searchw->recalcLayout();
- $searchw->doneMultipleChanges();
+ $searchw->pollEvent();
+
# should probably not account backports packages or find a way to search them:
- my $total_size = keys %$pkgs;
- my $progresscount;
-
- my $update_search_pb = sub {
- $progresscount++;
- if (!($progresscount % 100)) {
- $progresscount <= $total_size and $searchprogress->setValue($progresscount/$total_size);
- $searchw->flush; # refresh and handle clicks
- }
- };
- foreach my $medium (grep { !$_->{ignore} } @{$urpm->{media}}) {
- $searchstop and last;
- my $gurpm; # per medium download progress bar (if needed)
- my $_gurpm_clean_guard = before_leaving { undef $gurpm };
- my $xml_info_file =
- urpm::media::any_xml_info($urpm, $medium,
- ($current_search_type eq 'files' ? 'files' : 'info'),
- undef,
- sub {
- $gurpm ||= AdminPanel::Rpmdragora::gurpm->new($loc->N("Please wait"),
- transient => $::main_window);
- download_callback($gurpm, @_) or do {
- $searchstop = 1;
- };
- });
- if (!$xml_info_file) {
- $urpm->{error}($loc->N("no xml-info available for medium \"%s\"", $medium->{name}));
- next;
- }
- $searchstop and last;
-
- require urpm::xml_info;
- require urpm::xml_info_pkg;
-
- $urpm->{log}("getting information from $xml_info_file");
- if ($current_search_type eq 'files') {
- # special version for speed (3x faster), hopefully fully compatible
- my $F = urpm::xml_info::open_lzma($xml_info_file);
- my $fn;
- local $_;
- while (<$F>) {
- if ($searchstop) {
- statusbar_msg($loc->N("Search aborted"), 1);
- goto end_search;
- }
- if (m!^<!) {
- ($fn) = /fn="(.*)"/;
- $update_search_pb->();
- } elsif (/$entry_rx/) {
- $fn or $urpm->{fatal}("fast algorithm is broken, please report a bug");
- push @search_results, $fn;
- }
- }
- } else {
- eval {
- urpm::xml_info::do_something_with_nodes(
- 'info',
- $xml_info_file,
- sub {
- $searchstop and die 'search aborted';
- my ($node) = @_;
- $update_search_pb->();
- push @search_results, $node->{fn} if $node->{description} =~ $entry_rx;
- #$searchstop and last;
- return 0 || $searchstop;
- },
- );
- };
- my $err = $@;
- if ($err =~ /search aborted/) {
+ my $total_size = scalar keys %$pkgs;
+ my $progresscount = 0;
+
+ my $update_search_pb = sub {
+ $progresscount++;
+ my $val = int($progresscount * 100 / $total_size);
+ $searchprogress->setValue($val);
+ $searchw->pollEvent() if $searchw->isTopmostDialog(); # refresh only if top most or crashing
+ };
+ my $gurpm; # per medium download progress bar (if needed)
+ my $_gurpm_clean_guard = MDK::Common::Func::before_leaving { undef $gurpm };
+ foreach my $medium (grep { !$_->{ignore} } @{$urpm->{media}}) {
+ $searchstop and last;
+
+ my $xml_info_file =
+ urpm::media::any_xml_info($urpm, $medium,
+ ($current_search_type eq 'files' ? 'files' : 'info'),
+ undef,
+ sub {
+ $gurpm ||= AdminPanel::Rpmdragora::gurpm->new(
+ text => $loc->N("Please wait"),
+ main_dialog => $searchw,
+ parent => $replace_pnt,
+ );
+ $gurpm->progress(0);
+ download_callback($gurpm, @_) or do {
+ $searchstop = 1;
+ };
+ });
+ if (!$xml_info_file) {
+ $urpm->{error}($loc->N("no xml-info available for medium \"%s\"", $medium->{name}));
+ next;
+ }
+ $searchstop and last;
+
+ require urpm::xml_info;
+ require urpm::xml_info_pkg;
+
+ $urpm->{log}("getting information from $xml_info_file");
+ if ($current_search_type eq 'files') {
+ # special version for speed (3x faster), hopefully fully compatible
+ my $F = urpm::xml_info::open_lzma($xml_info_file);
+ my $fn;
+ local $_;
+ while (<$F>) {
+ if ($searchstop) {
statusbar_msg($loc->N("Search aborted"), 1);
+ goto end_search;
}
+ if (m!^<!) {
+ ($fn) = /fn="(.*)"/;
+ $update_search_pb->();
+ } elsif (/$entry_rx/) {
+ $fn or $urpm->{fatal}("fast algorithm is broken, please report a bug");
+ push @search_results, $fn;
+ }
+ }
+ } else {
+ eval {
+ urpm::xml_info::do_something_with_nodes(
+ 'info',
+ $xml_info_file,
+ sub {
+ $searchstop and die 'search aborted';
+ my ($node) = @_;
+ $update_search_pb->();
+ push @search_results, $node->{fn} if $node->{description} =~ $entry_rx;
+ #$searchstop and last;
+ return 0 || $searchstop;
+ },
+ );
+ };
+ my $err = $@;
+ if ($err =~ /search aborted/) {
+ statusbar_msg($loc->N("Search aborted"), 1);
}
}
+ }
- end_search:
+ end_search:
@search_results = uniq(@search_results); #- there can be multiple packages with same version/release for different arch's
@search_results = intersection(\@search_results, \@filtered_pkgs);
$searchw->destroy;
@@ -358,11 +396,11 @@ sub _do_search($$$$$$) {
my $tree_selection = $tree->currentItem();
}
-sub quit {
+sub _quit {
real_quit();
}
-sub run_treeview_dialog {
+sub _run_treeview_dialog {
my ($callback_action) = @_;
my ($options, $tree, $detail_list, $detail_list_model);
@@ -416,33 +454,8 @@ sub run_treeview_dialog {
$tree = $factory->createTree($hbox_middle, "");
$tree->setWeight(0,20);
$tree->setNotify(1);
- #OLD $tree->get_selection->set_mode('browse');
-
- #OLD $tree->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::MDV::CellRendererPixWithLabel->new, 'pixbuf' => $grp_columns{icon}, label => $grp_columns{label}));
- #OLD $tree->set_headers_visible(0);
-
- #OLD $detail_list_model = Gtk2::ListStore->new("Glib::String",
- # "Gtk2::Gdk::Pixbuf",
- # "Glib::String",
- # "Glib::Boolean",
- # "Glib::String",
- # "Glib::String",
- # "Glib::String",
- # "Glib::String",
- # "Glib::Boolean");
- #OLD $detail_list = Gtk2::TreeView->new_with_model($detail_list_model);
- my $detail_list_header = new yui::YTableHeader();
- #$detail_list->append_column(
- # my $col_sel = Gtk2::TreeViewColumn->new_with_attributes(
- # undef,
- # Gtk2::CellRendererToggle->new,
- # active => $pkg_columns{selected},
- # activatable => $pkg_columns{selectable}
- # ));
- #$col_sel->set_fixed_width(34); # w/o this the toggle cells are not displayed
- #$col_sel->set_sizing('fixed');
- #$col_sel->set_sort_column_id($pkg_columns{selected});
+ my $detail_list_header = new yui::YTableHeader();
my $display_arch_col = to_bool(arch() =~ /64/);
my @columns = (qw(name summary version release), if_($display_arch_col, 'arch'));
@@ -475,44 +488,14 @@ sub run_treeview_dialog {
## check column is first no title needed here, but we need to add it
$detail_list_header->addColumn("");
foreach my $col (@columns{@columns}) {
- #OLD $detail_list->append_column(
- # $col->{widget} =
- # Gtk2::TreeViewColumn->new_with_attributes(
- # ' ' . $col->{title} . ' ',
- # $col->{renderer} = Gtk2::CellRendererText->new,
- # ($col->{markup} ? (markup => $col->{markup}) : (text => $col->{text})),
- # )
- # );
- #$col->{widget}->set_sort_column_id($col->{markup} || $col->{text});
$detail_list_header->addColumn($col->{title});
}
- #OLD $columns{$_}{widget}->set_sizing('autosize') foreach @columns;
- #OLD $columns{name}{widget}->set_property('expand', '1');
- #OLD $columns{name}{renderer}->set_property('ellipsize', 'end');
- #OLD $columns{$_}{renderer}->set_property('xpad', '6') foreach @columns;
- #OLD $columns{name}{widget}->set_resizable(1);
- #OLD $detail_list_model->set_sort_column_id($pkg_columns{text}, 'ascending');
- #OLD $detail_list_model->set_sort_func($pkg_columns{version}, \&sort_callback);
- #OLD $detail_list->set_rules_hint(1);
-
- #OLD $detail_list->append_column(
- # my $pixcolumn =
- # Gtk2::TreeViewColumn->new_with_attributes(
- # #-PO: "Status" should be kept *small* !!!
- # $loc->N("Status"),
- # my $rdr = Gtk2::CellRendererPixbuf->new,
- # 'pixbuf' => $pkg_columns{state_icon})
- # );
- #$rdr->set_fixed_size(34, 24);
- #$pixcolumn->set_sort_column_id($pkg_columns{state});
$detail_list_header->addColumn($loc->N("Status"));
- # it should be istanciated this way
$detail_list = $mgaFactory->createCBTable($hbox_middle,$detail_list_header,$yui::YCBTableCheckBoxOnFirstColumn);
$detail_list->setWeight(0,50);
$detail_list->setImmediateMode(1);
- #OLD compute_main_window_size($w);
=for comment
my $cursor_to_restore;
@@ -548,13 +531,12 @@ sub run_treeview_dialog {
my $is_backports = get_inactive_backport_media(fast_open_urpmi_db());
- my %filters = (all => $loc->N("All"),
- installed => $loc->N("Installed"),
- non_installed => $loc->N("Not installed"),
- );
-
- my %rfilters = reverse %filters;
-
+ my %filters = (
+ all => $loc->N("All"),
+ installed => $loc->N("Installed"),
+ non_installed => $loc->N("Not installed"),
+ );
+ my @ordered_filters = (qw (all installed non_installed) );
# handle migrating config file from rpmdragora <= 4.9
if (exists $filters{$default_list_mode}) {
@@ -574,21 +556,20 @@ sub run_treeview_dialog {
by_source => $loc->N("All packages, by medium repository"),
);
-
- my %views = (all => $loc->N("All"),
- if_($is_backports, backports =>
- #-PO: Backports media are newer but less-tested versions of some packages in main
- #-PO: See http://wiki.mandriva.com/en/Policies/SoftwareMedia#.2Fmain.2Fbackports
- $loc->N("Backports")),
- meta_pkgs => $loc->N("Meta packages"),
- gui_pkgs => $loc->N("Packages with GUI"),
- all_updates => $loc->N("All updates"),
- security => $loc->N("Security updates"),
- bugfix => $loc->N("Bugfixes updates"),
- normal => $loc->N("General updates")
- );
- my %rviews = reverse %views;
- $options->{rviews} = \%rviews;
+ my %views = (
+ all => $loc->N("All"),
+ if_($is_backports, backports => $loc->N("Backports")),
+ meta_pkgs => $loc->N("Meta packages"),
+ gui_pkgs => $loc->N("Packages with GUI"),
+ all_updates => $loc->N("All updates"),
+ security => $loc->N("Security updates"),
+ bugfix => $loc->N("Bugfixes updates"),
+ normal => $loc->N("General updates")
+ );
+ my @ordered_views = (qw (all meta_pkgs gui_pkgs all_updates security normal) );
+ push @ordered_views, 'backports' if $is_backports;
+
+ $options->{rviews} = \@ordered_views;
my %default_mode = (install => 'all', # we want the new GUI by default instead of "non_installed"
remove => 'installed',
@@ -602,76 +583,52 @@ sub run_treeview_dialog {
);
my $view_box = $factory->createComboBox($hbox_top,"");
- $view_box->addItem($views{all});
- $view_box->addItem($views{meta_pkgs});
- $view_box->addItem($views{gui_pkgs});
- $view_box->addItem($views{all_updates});
- $view_box->addItem($views{security});
- $view_box->addItem($views{normal});
- $view_box->addItem($views{backports}) if($is_backports);
+ my $itemColl = new yui::YItemCollection;
+
+ foreach (@ordered_views) {
+ my $item = yui::YItem->new("$views{$_}", 0);
+ $item->setSelected(1) if defined($views{$default_list_mode}) && $_ eq $default_list_mode;
+ $itemColl->push($item);
+ $item->DISOWN();
+ }
+ $view_box->addItems($itemColl);
$view_box->setNotify(1);
- $view_box->selectItem($view_box->findItem($views{$default_list_mode})) if(defined($views{$default_list_mode}));
$options->{tree_submode} ||= $default_list_mode;
$options->{tree_subflat} ||= $options->{state}{flat};
-=for comment
- * OLD *
- my $filter_box = gtknew(
- 'ComboBox',
- list => [ qw(all installed non_installed) ], text => $filters{$filter->[0]},
- format => sub { $filters{$_[0]} },
- tip => $loc->N("Filter"),
- changed => sub {
- state $oldval;
- my $val = $_[0]->get_text;
- return if $val eq $oldval; # workarounding gtk+ sending us sometimes twice events
- $oldval = $val;
- $val = $rfilters{$val};
- if ($filter->[0] ne $val) {
- $filter->[0] = $val;
- reset_search();
- slow_func($::main_window->window, sub { switch_pkg_list_mode($default_list_mode) });
- $options->{rebuild_tree}->();
- }
- }
- );
-
- my $view_callback = sub {
- my ($val) = @_;
- return if $val eq $old_value; # workarounding gtk+ sending us sometimes twice events
- $old_value = $val;
- return if $mode->[0] eq $val;
- $mode->[0] = $val;
- $tree_flat->[0] = $options->{state}{flat} = member($mode->[0], qw(flat by_leaves by_selection by_size));
-
- if ($options->{tree_mode} ne $val) {
- reset_search();
- $options->{rebuild_tree}->();
- }
- };
-=cut
my $filter_box = $factory->createComboBox($hbox_top,"");
- $filter_box->addItem($filters{all});
- $filter_box->addItem($filters{installed});
- $filter_box->addItem($filters{non_installed});
- $filter_box->selectItem($filter_box->findItem($filters{$filter->[0]})) if(defined($filters{$filter->[0]}));
+ $itemColl = new yui::YItemCollection;
+
+ foreach (@ordered_filters) {
+ my $item = yui::YItem->new("$filters{$_}", 0);
+ $item->setSelected(1) if defined($filters{$filter->[0]}) && $_ eq $filter->[0];
+ $itemColl->push($item);
+ $item->DISOWN();
+ }
+ $filter_box->addItems($itemColl);
$filter_box->setNotify(1);
- my @search_types = qw(normal descriptions summaries files);
+
+ my %local_search_types = (
+ normal => $loc->N("in names"),
+ descriptions => $loc->N("in descriptions"),
+ summaries => $loc->N("in summaries"),
+ files => $loc->N("in file names"),
+ );
+ my @search_types = ( qw(normal descriptions summaries files) );
my $current_search_type = $search_types[0];
- #OLD my $search_menu = Gtk2::Menu->new;
+
my $search_menu = $factory->createComboBox($hbox_top,"");
- my $i = 0;
- my $previous;
- foreach ($loc->N("in names"), $loc->N("in descriptions"), $loc->N("in summaries"), $loc->N("in file names")) {
- my ($name, $val) = ($_, $i);
- #OLD $search_menu->append(gtksignal_connect(gtkshow(
- # $previous = Gtk2::RadioMenuItem->new_with_label($previous, $name)),
- # activate => sub { $current_search_type = $search_types[$val] }));
- $search_menu->addItem($name);
- $i++;
+ $itemColl = new yui::YItemCollection;
+ foreach (@search_types) {
+ my $item = yui::YItem->new("$local_search_types{$_}", 0);
+ $item->setSelected(1) if defined($local_search_types{$current_search_type}) && $_ eq $current_search_type;
+ $itemColl->push($item);
+ $item->DISOWN();
}
+ $search_menu->addItems($itemColl);
+ $search_menu->setNotify(1);
$find_entry = $factory->createInputField($hbox_top, "");
@@ -742,7 +699,7 @@ sub run_treeview_dialog {
my $NVR_string = $loc->N("/_Options") . "/" . $loc->N("Search in _full package names");
my $regexp_search_string = $loc->N("/_Options") . "/" . $loc->N("Use _regular expressions in searches");
- my $itemColl = new yui::YItemCollection;
+ $itemColl = new yui::YItemCollection;
# build File menu
my %fileMenu = (
widget => $factory->createMenuButton($headbar,$loc->N("File")),
@@ -1064,7 +1021,7 @@ sub run_treeview_dialog {
my $info_options = {};
# select group and show items evenctually
- tree_callback($tree->currentItem(),\%$options);
+ _tree_callback($tree->currentItem(),\%$options);
######## main loop ####################
while(1) {
@@ -1074,7 +1031,7 @@ sub run_treeview_dialog {
#event type checking
if ($eventType == $yui::YEvent::CancelEvent) {
- last if quit();
+ last if _quit();
}
elsif ($eventType == $yui::YEvent::MenuEvent) {
### MENU ###
@@ -1096,7 +1053,7 @@ sub run_treeview_dialog {
print "Menu " . $menuLabel . " chosen\n";
if ($menuLabel eq $fileMenu{ quit }->label()) {
#menu File->Quit
- last if quit();
+ last if _quit();
}
elsif ($menuLabel eq $fileMenu{ update }->label()) {
update_sources_interactive($urpm, transient => $my_win)
@@ -1157,6 +1114,7 @@ print "Menu " . $menuLabel . " chosen\n";
# widget selected
my $widget = $event->widget();
+ my $perform_search = 0;
if($widget == $reset_search_button) {
$find_entry->setValue('');
@@ -1164,9 +1122,7 @@ print "Menu " . $menuLabel . " chosen\n";
$options->{rebuild_tree}->();
}
elsif ($widget == $find_button) {
- yui::YUI::app()->busyCursor();
- _do_search($find_entry, $tree, $options, $current_search_type, $urpm, $pkgs);
- yui::YUI::app()->normalCursor();
+ $perform_search = 1;
}
elsif ($widget == $select_all_button) {
toggle_all($options, 1);
@@ -1176,13 +1132,22 @@ print "Menu " . $menuLabel . " chosen\n";
do_action($options, $callback_action, $info);
}
elsif ($widget == $view_box) {
- viewbox_callback($view_box->selectedItem()->label(), \%$options, \%wanted_categories);
+ if (_viewbox_callback($view_box->selectedItem(), \%$options, \%wanted_categories)) {
+ $perform_search = 1 if $find_entry->value();
+ }
}
elsif ($widget == $filter_box) {
- filterbox_callback($filter_box->selectedItem()->label(), \%$options, \%rfilters);
+ if (_filterbox_callback($filter_box->selectedItem(), \%$options, \@ordered_filters)) {
+ $perform_search = 1 if $find_entry->value();
+ }
+ }
+ elsif ($widget == $search_menu) {
+ if (_searchmenu_callback($search_menu->selectedItem(), \%$options, \@search_types, \$current_search_type)) {
+ $perform_search = 1 if $find_entry->value();
+ }
}
elsif ($widget == $tree) {
- tree_callback($tree->currentItem(),\%$options);
+ _tree_callback($tree->currentItem(),\%$options);
}
elsif ($widget == $detail_list){
$info_options = {};
@@ -1190,14 +1155,21 @@ print "Menu " . $menuLabel . " chosen\n";
if ($wEvent->reason() == $yui::YEvent::ValueChanged) {
yui::YUI::app()->busyCursor();
- detaillist_changeditem_callback($detail_list, \%$options);
+ _detaillist_changeditem_callback($detail_list, \%$options);
yui::YUI::app()->normalCursor();
- tree_callback($tree->currentItem(),\%$options);
+ _tree_callback($tree->currentItem(),\%$options);
}
_detaillist_callback($detail_list->selectedItem(), $info, \%$options);
}
elsif ($widget == $QuitButton) {
- last if quit();
+ last if _quit();
+ }
+
+ if ($perform_search) {
+ yui::YUI::app()->busyCursor();
+ _do_search($find_entry, $tree, $options, $current_search_type, $urpm, $pkgs);
+ yui::YUI::app()->normalCursor();
+ $perform_search = 0;
}
}
@@ -1238,7 +1210,7 @@ AdminPanel::Rpmdragora::rpmnew::do_merge_if_needed();
init();
-run_treeview_dialog(\&perform_installation);
+_run_treeview_dialog(\&perform_installation);
writeconf();