diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | AdminPanel/Rpmdragora/gui.pm | 138 | ||||
-rw-r--r-- | AdminPanel/Rpmdragora/pkg.pm | 24 | ||||
-rw-r--r-- | AdminPanel/rpmdragora.pm | 74 | ||||
-rwxr-xr-x | modules/rpmdragora/rpmdragora | 83 |
5 files changed, 226 insertions, 94 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b25c15b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/AdminPanel/Rpmdragora/gui.pm b/AdminPanel/Rpmdragora/gui.pm index 424614a8..67f21ce9 100644 --- a/AdminPanel/Rpmdragora/gui.pm +++ b/AdminPanel/Rpmdragora/gui.pm @@ -26,7 +26,7 @@ package AdminPanel::Rpmdragora::gui; # $Id$ ############################################################ -# WARNING: do not modify before asking to matteo or anaselli +# WARNING: do not modify before asking matteo or anaselli ############################################################ use strict; @@ -82,6 +82,7 @@ our @EXPORT = qw( switch_pkg_list_mode toggle_all toggle_nodes + fast_toggle ); our ($descriptions, %filters, @filtered_pkgs, %filter_methods, $force_displaying_group, $force_rebuild, @initial_selection, $pkgs, $size_free, $size_selected, $urpm); @@ -400,25 +401,25 @@ sub node_state { my ($common, $w, %wtree, %ptree, %pix, @table_item_list); sub set_node_state { - my ($iter, $state, $model) = @_; + my ($tblItem, $state, $model) = @_; return if $state eq 'XXX' || !$state; #$pix{$state} ||= gtkcreate_pixbuf('state_' . $state); #$model->set($iter, $pkg_columns{state_icon} => $pix{$state}); #$model->set($iter, $pkg_columns{state} => $state); #$model->set($iter, $pkg_columns{selected} => to_bool(member($state, qw(base installed to_install)))); #$pkg->{selected})); #$model->set($iter, $pkg_columns{selectable} => to_bool($state ne 'base')); - $iter->addCell($state,"/usr/share/rpmdrake/icons/state_$state.png"); + $tblItem->addCell($state,"/usr/share/rpmdrake/icons/state_$state.png"); if(to_bool(member($state, qw(base installed to_install)))){ #$iter->cell(0)->setLabel('x'); # it should be parent()->setChecked(1) - $iter->cell(0)->parent()->setSelected(1); + $tblItem->cell(0)->parent()->setSelected(1); }else{ #$iter->cell(0)->setLabel(''); - $iter->cell(0)->parent()->setSelected(0); + $tblItem->cell(0)->parent()->setSelected(0); } if(!to_bool($state ne 'base')){ #$iter->cell(0)->setLabel('-'); - $iter->cell(0)->setLabel('-'); + $tblItem->cell(0)->setLabel('-'); } } @@ -427,7 +428,11 @@ sub set_leaf_state { set_node_state($_, $state, $model) foreach @{$ptree{$leaf}}; } -sub grep_unselected { grep { exists $pkgs->{$_} && !$pkgs->{$_}{selected} } @_ } +sub grep_unselected { + my @l = shift(); + my @result = grep { exists $pkgs->{$_} && !$pkgs->{$_}{selected} } @l ; + return @result; +} my %groups_tree = (); @@ -491,6 +496,7 @@ sub add_node { $w->{detail_list}->addItem($newTableItem); $ptree{$leaf} = [ $newTableItem->label() ]; $table_item_list[$newTableItem->index()] = $leaf; + $newTableItem->DISOWN(); } else { $iter = $w->{tree_model}->append_set(add_parent($w->{tree},$root, $state), [ $grp_columns{label} => $leaf ]); #push @{$wtree{$leaf}}, $iter; @@ -515,25 +521,88 @@ sub update_size { } } +sub treeview_children { + my($tbl) = @_; + my $it; + my @l; + my $i=0; + # using iterators + for ($it = $tbl->itemsBegin(); $it != $tbl->itemsEnd(); ) { + my $item = $tbl->YItemIteratorToYItem($it); + print "ITEM LABEL: ".$item->index()."\n"; + push @l, $item; + $it = $tbl->nextItem($it); + $i++; + if ($i == $tbl->itemsCount()) { + last; + } + } + # using items + #for($i=0;$i<$tbl->itemsCount();$i++) { + # print " item label " . $tbl->item($i)->cell(0)->label() . "\n"; + # push @l, $tbl->item($i); + #} + return @l; +} + sub children { - my ($w) = @_; - map { $w->{detail_list_model}->get($_, $pkg_columns{text}) } gtktreeview_children($w->{detail_list_model}); + my ($w, @table_item_list) = @_; + # map { $w->{detail_list}->get($_, $pkg_columns{text}) } treeview_children($w->{detail_list}); + # map { $table_item_list[$_->index()] } treeview_children($w->{detail_list}); + my @children = treeview_children($w->{detail_list}); + my @result; + for my $child(@children){ + push @result, $table_item_list[$child->index()]; + } + return @result; } sub toggle_all { my ($common, $_val) = @_; my $w = $common->{widgets}; - my @l = children($w) or return; + my @l = children($w, $common->{table_item_list}) or return; my @unsel = grep_unselected(@l); my @p = @unsel ? #- not all is selected, select all if no option to potentially override (exists $common->{partialsel_unsel} && $common->{partialsel_unsel}->(\@unsel, \@l) ? difference2(\@l, \@unsel) : @unsel) : @l; - toggle_nodes($w->{detail_list}->window, $w->{detail_list_model}, \&set_leaf_state, node_state($p[0]), @p); + # toggle_nodes($w->{detail_list}, $w->{detail_list_model}, \&set_leaf_state, node_state($p[0]), @p); + print "Toggle Nodes: p[0][0]=".$p[0][0]." node_state(".$p[0][0].")=".node_state($p[0][0])."\n"; + toggle_nodes($w->{detail_list}, $w->{detail_list_model}, \&set_leaf_state, node_state($p[0][0]), @{$p[0]}); update_size($common); } +sub fast_toggle { + my ($item) = @_; + #gtkset_mousecursor_wait($w->{w}{rwindow}->window); + #my $_cleaner = before_leaving { gtkset_mousecursor_normal($w->{w}{rwindow}->window) }; + my $name = $common->{table_item_list}[$item->index()]; + print "Name: $name\n"; + my $urpm_obj = $pkgs->{$name}{pkg}; + if ($urpm_obj->flag_base) { + interactive_msg(N("Warning"), N("Removing package %s would break your system", $name)); + return ''; + } + if ($urpm_obj->flag_skip) { + interactive_msg(N("Warning"), N("The \"%s\" package is in urpmi skip list.\nDo you want to select it anyway?", $name), yesno => 1) or return ''; + $urpm_obj->set_flag_skip(0); + } + if ($Rpmdragora::pkg::need_restart && !$priority_up_alread_warned) { + $priority_up_alread_warned = 1; + interactive_msg(N("Warning"), '<b>' . N("Rpmdragora or one of its priority dependencies needs to be updated first. Rpmdragora will then restart.") . '</b>' . "\n\n"); + } + # toggle_nodes($w->{tree}->window, $w->{detail_list_model}, \&set_leaf_state, $w->{detail_list_model}->get($iter, $pkg_columns{state}), + my $state; + if($item->selected){ + $state = "to_remove"; + }else{ + $state = "to_install"; + } + toggle_nodes($w->{tree}, $w->{detail_list}, \&set_leaf_state, $state, $name); + update_size($common); +}; + # ask_browse_tree_given_widgets_for_rpmdragora will run gtk+ loop. its main parameter "common" is a hash containing: # - a "widgets" subhash which holds: # o a "w" reference on a ugtk2 object @@ -602,10 +671,10 @@ sub ask_browse_tree_given_widgets_for_rpmdragora { }; my $fast_toggle = sub { - my ($iter) = @_; - gtkset_mousecursor_wait($w->{w}{rwindow}->window); - my $_cleaner = before_leaving { gtkset_mousecursor_normal($w->{w}{rwindow}->window) }; - my $name = $w->{detail_list_model}->get($iter, $pkg_columns{text}); + my ($item) = @_; + #gtkset_mousecursor_wait($w->{w}{rwindow}->window); + #my $_cleaner = before_leaving { gtkset_mousecursor_normal($w->{w}{rwindow}->window) }; + my $name = $common->{table_item_list}[$item->index()]; my $urpm_obj = $pkgs->{$name}{pkg}; if ($urpm_obj->flag_base) { @@ -624,8 +693,8 @@ sub ask_browse_tree_given_widgets_for_rpmdragora { interactive_msg(N("Warning"), '<b>' . N("Rpmdragora or one of its priority dependencies needs to be updated first. Rpmdragora will then restart.") . '</b>' . "\n\n"); } - toggle_nodes($w->{tree}->window, $w->{detail_list_model}, \&set_leaf_state, $w->{detail_list_model}->get($iter, $pkg_columns{state}), - $w->{detail_list_model}->get($iter, $pkg_columns{text})); + # toggle_nodes($w->{tree}->window, $w->{detail_list_model}, \&set_leaf_state, $w->{detail_list_model}->get($iter, $pkg_columns{state}), + toggle_nodes($w->{tree}->window, $w->{detail_list_model}, \&set_leaf_state, $item->selected, $common->{table_item_list}[$item->index()]); update_size($common); }; #$w->{detail_list}->get_selection->signal_connect(changed => sub { @@ -633,16 +702,18 @@ sub ask_browse_tree_given_widgets_for_rpmdragora { #$model && $iter or return; # $common->{display_info}($model->get($iter, $pkg_columns{text})); #}); + # WARNING: è interessante! #($w->{detail_list}->get_column(0)->get_cell_renderers)[0]->signal_connect(toggled => sub { - # my ($_cell, $path) = @_; #text_ - # my $iter = $w->{detail_list_model}->get_iter_from_string($path); - # $fast_toggle->($iter) if $iter; + # my ($_cell, $path) = @_; #text_ + # my $iter = $w->{detail_list_model}->get_iter_from_string($path); + # $fast_toggle->($iter) if $iter; # 1; #}); $common->{rebuild_tree}->(); update_size($common); - #$common->{initial_selection} and toggle_nodes($w->{tree}->window, $w->{detail_list_model}, \&set_leaf_state, undef, @{$common->{initial_selection}}); - #my $_b = before_leaving { $clear_all_caches->() }; + $common->{initial_selection} and toggle_nodes($w->{tree}->window, $w->{detail_list_model}, \&set_leaf_state, undef, @{$common->{initial_selection}}); + print "QUANTO VALE common->initial_selection ? ".$common->{initial_selection}."\n"; + my $_b = before_leaving { $clear_all_caches->() }; $common->{init_callback}->() if $common->{init_callback}; #OLD $w->{w}->main; $w->{w}; @@ -829,9 +900,8 @@ sub toggle_nodes { format_list(@impossible_to_remove)); @nodes_with_deps = difference2(\@nodes_with_deps, \@impossible_to_remove); } else { - slow_func($widget, - sub { @nodes_with_deps = grep { intersection(\@nodes, [ closure_removal($_) ]) } - grep { $pkgs->{$_}{selected} && !member($_, @nodes) } keys %$pkgs }); + @nodes_with_deps = grep { intersection(\@nodes, [ closure_removal($_) ]) } + grep { $pkgs->{$_}{selected} && !member($_, @nodes) } keys %$pkgs; push @nodes_with_deps, @nodes; $warn_about_additional_packages_to_remove->( N("Because of their dependencies, the following package(s) must be unselected now:\n\n")); @@ -851,15 +921,10 @@ sub toggle_nodes { @nodes = difference2(\@nodes, \@bad_i18n_pkgs); } my @requested; - slow_func( - $widget, - sub { - @requested = $urpm->resolve_requested( - open_rpm_db(), $urpm->{state}, - { map { $pkgs->{$_}{pkg}->id => 1 } @nodes }, - callback_choices => \&callback_choices, - ); - }, + @requested = $urpm->resolve_requested( + open_rpm_db(), $urpm->{state}, + { map { $pkgs->{$_}{pkg}->id => 1 } @nodes }, + callback_choices => \&callback_choices, ); @nodes_with_deps = map { urpm_name($_) } @requested; statusbar_msg_remove($bar_id); @@ -905,9 +970,8 @@ sub toggle_nodes { packages_selection_ok: } else { my @unrequested; - slow_func($widget, - sub { @unrequested = $urpm->disable_selected(open_rpm_db(), $urpm->{state}, - map { $pkgs->{$_}{pkg} } @nodes) }); + @unrequested = $urpm->disable_selected(open_rpm_db(), $urpm->{state}, + map { $pkgs->{$_}{pkg} } @nodes); @nodes_with_deps = map { urpm_name($_) } @unrequested; statusbar_msg_remove($bar_id); if (!deps_msg(N("Some packages need to be removed"), diff --git a/AdminPanel/Rpmdragora/pkg.pm b/AdminPanel/Rpmdragora/pkg.pm index 67cf8aae..e8c1a08a 100644 --- a/AdminPanel/Rpmdragora/pkg.pm +++ b/AdminPanel/Rpmdragora/pkg.pm @@ -120,8 +120,9 @@ sub extract_header { my ($local_source, %xml_info_pkgs, $bar_id); my $_statusbar_clean_guard = before_leaving { $bar_id and statusbar_msg_remove($bar_id) }; my $dir = urpm::file_from_local_url($medium->{url}); - $local_source = "$dir/" . $p->filename if $dir; - + print "p->filename: ". $p->filename."\n"; + $local_source = "$dir/" . $p->filename if $dir; + print "local_source: $local_source\n"; if (-e $local_source) { $bar_id = statusbar_msg(N("Getting information from %s...", $dir), 0); $urpm->{log}("getting information from rpms from $dir"); @@ -658,10 +659,10 @@ sub perform_installation { #- (partially) duplicated from /usr/sbin/urpmi :-( local $urpm->{error} = sub { printf STDERR "Error: %s\n", $_[0]; push @error_msgs, $_[0] }; my $w = $::main_window; - $w->set_sensitive(0); - my $_restore_sensitive = before_leaving { $w->set_sensitive(1) }; + #$w->set_sensitive(0); + #my $_restore_sensitive = before_leaving { $w->set_sensitive(1) }; - my $_flush_guard = Gtk2::GUI_Update_Guard->new; + # my $_flush_guard = Gtk2::GUI_Update_Guard->new; if (my $group = get_parallel_group()) { return perform_parallel_install($urpm, $group, $w, \$statusbar_msg_id); @@ -735,8 +736,8 @@ sub perform_installation { #- (partially) duplicated from /usr/sbin/urpmi :-( # select packages to uninstall for !update mode: perform_removal($urpm, { map { $_ => $pkgs->{$_} } @to_remove }) if !$probe_only_for_updates; - $gurpm = Rpmdragora::gurpm->new(1 ? N("Please wait") : N("Package installation..."), N("Initializing..."), transient => $::main_window); - my $_gurpm_clean_guard = before_leaving { undef $gurpm }; + # $gurpm = Rpmdragora::gurpm->new(1 ? N("Please wait") : N("Package installation..."), N("Initializing..."), transient => $::main_window); + # my $_gurpm_clean_guard = before_leaving { undef $gurpm }; my $something_installed; if (@to_install && $::rpmdragora_options{auto_orphans}) { @@ -758,14 +759,17 @@ sub perform_installation { #- (partially) duplicated from /usr/sbin/urpmi :-( my $pkg = defined $id ? $urpm->{depslist}[$id] : undef; if ($subtype eq 'start') { if ($type eq 'trans') { - $gurpm->label(1 ? N("Preparing package installation...") : N("Preparing package installation transaction...")); + print(1 ? N("Preparing package installation...") : N("Preparing package installation transaction...")); + # $gurpm->label(1 ? N("Preparing package installation...") : N("Preparing package installation transaction...")); } elsif (defined $pkg) { $something_installed = 1; - $gurpm->label(N("Installing package `%s' (%s/%s)...", $pkg->name, ++$transaction_progress_nb, scalar(@{$transaction->{upgrade}})) - . "\n" . N("Total: %s/%s", ++$progress_nb, $install_count)); + print(N("Installing package `%s' (%s/%s)...", $pkg->name, ++$transaction_progress_nb, scalar(@{$transaction->{upgrade}}))."\n" . N("Total: %s/%s", ++$progress_nb, $install_count)); + # $gurpm->label(N("Installing package `%s' (%s/%s)...", $pkg->name, ++$transaction_progress_nb, scalar(@{$transaction->{upgrade}})) + # . "\n" . N("Total: %s/%s", ++$progress_nb, $install_count)); } } elsif ($subtype eq 'progress') { $gurpm->progress($total ? ($amount/$total)*100 : 100); + print("Progress: ".($total ? ($amount/$total)*100 : 100)."\n"); } }; diff --git a/AdminPanel/rpmdragora.pm b/AdminPanel/rpmdragora.pm index c9e0c057..b96ed53d 100644 --- a/AdminPanel/rpmdragora.pm +++ b/AdminPanel/rpmdragora.pm @@ -312,46 +312,42 @@ sub interactive_packtable { sub interactive_list { my ($title, $contents, $list, $callback, %options) = @_; - my $d = ugtk2->new($title, grab => 1, if_(exists $options{transient}, transient => $options{transient})); - $d->{rwindow}->set_position($options{transient} ? 'center_on_parent' : 'center_always'); - my @radios = gtkradio('', @$list); - my $vbradios = $callback ? create_packtable( - {}, - mapn { - my $n = $_[1]; - [ $_[0], - gtksignal_connect( - Gtk2::Button->new(but(N("Info..."))), - clicked => sub { $callback->($n) }, - ) ]; - } \@radios, $list, - ) : gtkpack__(Gtk2::VBox->new(0, 0), @radios); + + my $factory = yui::YUI::widgetFactory; + my $mainw = $factory->createPopupDialog(); + my $vbox = $factory->createVBox($mainw); + my $lbltitle = $factory->createLabel($vbox, N("Dependencies")); + my $radiobuttongroup = $factory->createRadioButtonGroup($vbox); + my $rbbox = $factory->createVBox($radiobuttongroup); + foreach my $item(@$list){ + my $radiobutton = $factory->createRadioButton($rbbox,$item); + $radiobutton->setNotify(0); + $radiobuttongroup->addRadioButton($radiobutton); + } + my $submitButton = $factory->createIconButton($vbox,"", N("OK")); my $choice; - my $button_ok; - gtkadd( - $d->{window}, - gtkpack__( - Gtk2::VBox->new(0,5), - Gtk2::Label->new($contents), - int(@$list) > 8 ? gtkset_size_request(create_scrolled_window($vbradios), 250, 320) : $vbradios, - gtkpack__( - create_hbox(), - if_(!$options{nocancel}, - gtksignal_connect( - Gtk2::Button->new(N("Cancel")), clicked => sub { Gtk2->main_quit }), - ), - gtksignal_connect( - $button_ok=Gtk2::Button->new(N("Ok")), clicked => sub { - each_index { $_->get_active and $choice = $::i } @radios; - Gtk2->main_quit; - } - ) - ) - ) - ); - $d->{window}->set_focus($button_ok); - $d->main; - $choice; + + while(1) { + my $event = $mainw->waitForEvent(); + my $eventType = $event->eventType(); + #event type checking + if ($eventType == $yui::YEvent::CancelEvent) { + $mainw->destroy(); + last; + } + elsif ($eventType == $yui::YEvent::WidgetEvent) { + # widget selected + my $widget = $event->widget(); + + if($widget == $submitButton) { + $choice = $radiobuttongroup->currentButton->label(); + $choice =~s/\&//g; + last; + } + } + } + $mainw->destroy(); + return $choice; } sub interactive_list_ { interactive_list(@_, if_($::main_window, transient => $::main_window)) } diff --git a/modules/rpmdragora/rpmdragora b/modules/rpmdragora/rpmdragora index 9a061096..22b8256b 100755 --- a/modules/rpmdragora/rpmdragora +++ b/modules/rpmdragora/rpmdragora @@ -61,6 +61,10 @@ my $my_win; my $factory; my $mgaFactory; my $optFactory; +my $extWidgets; + +my @itemsToBeRemoved; +my @itemsToBeInstalled; our $w; our $statusbar; @@ -68,6 +72,7 @@ our $statusbar; my %elems; my $old_value; + sub viewbox_callback { my %wanted_categories = (); my ($selection, $options, $wanted_categories) = @_; @@ -138,10 +143,60 @@ sub tree_callback { return; } +sub detaillist_changeditem_callback { + my ($detail_list, $options) = @_; + my $changedItem = $detail_list->changedItem(); + # handles installist and droplist + my $index=0; + if ($changedItem->selected()) { + # to be installed if not in to be removed list + my $found = 0; + foreach $index (0 .. scalar(@itemsToBeRemoved)) { + my $currItem = $itemsToBeRemoved[$index]; + if(ref $currItem eq "yui::YItem") { + if ($currItem->label() == $changedItem->label()) { + $found = 1; + splice (@itemsToBeRemoved, $index ,1); + last; + } + } + } + if ($found == 0) { + push(@itemsToBeInstalled, $changedItem); + # $pkgs->{$options->{table_item_list}[$changedItem->index()]}{selected} = 1; + # toggle_veloce($options->{table_item_list}[$changedItem->index()],"to_install"); + fast_toggle($changedItem); + } + } + else { + # to be removed if not in to be installed list + my $found = 0; + foreach $index (0 .. scalar(@itemsToBeInstalled)) { + my $currItem = $itemsToBeInstalled[$index]; + if(ref $currItem eq "yui::YItem") { + if ($currItem->label() == $changedItem->label()) { + $found = 1; + splice (@itemsToBeInstalled, $index ,1); + last; + } + } + } + if ($found == 0) { + push(@itemsToBeRemoved, $changedItem); + # $pkgs->{$options->{table_item_list}[$changedItem->index()]}{selected} = 0; + # toggle_veloce($options->{table_item_list}[$changedItem->index()],"to_remove"); + fast_toggle($changedItem); + } + } + print "itemsToBeRemoved counts ".scalar(@itemsToBeRemoved)." items\n"; + print "itemsToBeInstalled counts ".scalar(@itemsToBeInstalled)." items\n"; +} + sub detaillist_callback { my ($selection, $info, $options) = @_; $info->setValue(""); $info->setValue("<h2>".N("Informations")."</h2>"); + return if( ref $selection ne "yui::YItem"); my @data = get_info($options->{table_item_list}[$selection->index()],$info->parent()->parent()); for(@{$data[0]}){ if(ref $_ ne "ARRAY"){ @@ -486,8 +541,8 @@ sub run_treeview_dialog { #$pixcolumn->set_sort_column_id($pkg_columns{state}); $detail_list_header->addColumn(N("Status")); -### print " yui::YTableCheckBoxOnLastColumn ". $yui::YTableCheckBoxOnLastColumn . "\n" ; - + # it should be istanciated this way + # $detail_list = $mgaFactory->createTable($hbox_middle,$detail_list_header,$yui::YTableCheckBoxOnLastColumn); $detail_list = $mgaFactory->createCBTable($hbox_middle,$detail_list_header,$yui::YTableCheckBoxOnLastColumn); $detail_list->setWeight(0,50); $detail_list->setNotify(1); @@ -844,12 +899,12 @@ sub run_treeview_dialog { $license =~ s/\n/\n\n/sg; # nicer formatting my $w = gtknew('AboutDialog', name => N("Rpmdragora"), version => $Rpmdragora::init::version, - copyright => N("Copyright (C) %s by Mandriva", '2002-2009'), + copyright => N("Copyright (C) %s by Mandriva", '2002-2009')."\n".N("Copyright (C) %s by Mageia.Org", '2010-2013'), license => $license, wrap_license => 1, comments => N("Rpmdragora is the Mageia package management tool."), website => 'http://www.mageia.org', website_label => N("Mageia"), - authors => 'Thierry Vignaud <vignaud@mandriva.com>\nAngelo Naselli <anaselli@gmail.com>\nMatteo Pasotti <matteo.pasotti@gmail.com>', + authors => "Thierry Vignaud <vignaud@mandriva.com>\nAngelo Naselli <anaselli@gmail.com>\nMatteo Pasotti <matteo.pasotti@gmail.com>", artists => 'Hélène Durosini <ln@mandriva.com>', translator_credits => #-PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>") @@ -987,6 +1042,7 @@ sub run_treeview_dialog { #OLD slow_func($::main_window->window, sub { pkgs_provider($default_list_mode) }); # default mode slow_func($::main_window, sub { pkgs_provider($default_list_mode) }); # default mode if (@initial_selection) { + print "\n== Initial selection: @initial_selection\n"; $options->{initial_selection} = \@initial_selection; undef $pkgs->{$_}{selected} foreach @initial_selection; } @@ -1030,6 +1086,7 @@ sub run_treeview_dialog { } elsif ($widget == $select_all_button) { toggle_all($options, 1); + #select_all_current_packages(\$detail_list); } elsif ($widget == $apply_button) { do_action($options, $callback_action, $info); @@ -1045,6 +1102,7 @@ sub run_treeview_dialog { } elsif ($widget == $detail_list){ detaillist_callback($detail_list->selectedItem(), $info, \%$options); + detaillist_changeditem_callback($detail_list, \%$options); } elsif ($widget == $file_menu && $mnuItemUpdateMedia) { update_sources_interactive($urpm, transient => $my_win) @@ -1087,7 +1145,8 @@ sub run_treeview_dialog { last; } elsif ($itemLabel eq N("About")) { - my $license = translate($::license); + my $license = formatAlaTeX(translate($::license)); + $license =~ s/\n/\n\n/sg; # nicer formatting AboutDialog({ name => N("Rpmdragora"), version => $Rpmdragora::init::version, copyright => N("Copyright (C) %s by Mandriva", '2002-2009'), @@ -1095,7 +1154,7 @@ sub run_treeview_dialog { comments => N("Rpmdragora is the Mageia package management tool."), website => 'http://www.mageia.org', website_label => N("Mageia"), - authors => "Thierry Vignaud <vignaud\@mandriva.com>\nAngelo Naselli <anaselli\@linux.it>\nMatteo Pasotti <matteo.pasotti\@gmail.com>", + authors => 'Thierry Vignaud <vignaud@mandriva.com>\nAngelo Naselli <anaselli@linux.it>\nMatteo Pasotti <matteo.pasotti@gmail.com>', artists => 'Hélène Durosini <ln@mandriva.com>', translator_credits => #-PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>") @@ -1120,11 +1179,19 @@ if (my $pid = is_running('rpmdragora')) { yui::YUI::app()->setApplicationTitle(N("Software Management")); yui::YUI::app()->setApplicationIcon($wm_icon); +my $MGAPlugin = "mga"; + +#yui::YUILoader::loadExternalWidgets($MGAPlugin); + $factory = yui::YUI::widgetFactory; -yui::YUILoader::loadExternalWidgets("mga"); -$mgaFactory = yui::YMGAWidgetFactory::getYMGAWidgetFactory(yui::YExternalWidgets::externalWidgetFactory()); +$extWidgets = yui::YExternalWidgets::externalWidgets($MGAPlugin); +$mgaFactory = $extWidgets->externalWidgetFactory(); +# $mgaFactory = bless($extWidgets,'yui::YMGAWidgetFactory'); +$mgaFactory = yui::YMGAWidgetFactory::getYMGAWidgetFactory($mgaFactory); $optFactory = yui::YUI::optionalWidgetFactory; + + ### MAIN DIALOG ### $my_win = $factory->createMainDialog; |