diff options
Diffstat (limited to 'MandrivaUpdate')
-rwxr-xr-x | MandrivaUpdate | 288 |
1 files changed, 0 insertions, 288 deletions
diff --git a/MandrivaUpdate b/MandrivaUpdate deleted file mode 100755 index 7e670ec8..00000000 --- a/MandrivaUpdate +++ /dev/null @@ -1,288 +0,0 @@ -#!/usr/bin/perl -#***************************************************************************** -# -# Copyright (c) 2002 Guillaume Cottenceau -# Copyright (c) 2002-2007 Thierry Vignaud <tvignaud@mandriva.com> -# Copyright (c) 2003, 2004, 2005 MandrakeSoft SA -# Copyright (c) 2005-2007 Mandriva SA -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2, as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -#***************************************************************************** -# -# $Id$ - -use strict; -use MDK::Common::Func 'any'; -use lib qw(/usr/lib/libDrakX); -use common; - -use Rpmdrake::init; -use standalone; #- standalone must be loaded very first, for 'explanations', but after rpmdrake::init -use rpmdrake; -use Rpmdrake::gui; -use Rpmdrake::rpmnew; -use Rpmdrake::formatting; -use Rpmdrake::pkg; -use Rpmdrake::widgets; - -use mygtk2 qw(gtknew); #- do not import anything else, especially gtkadd() which conflicts with ugtk2 one -use ugtk2 qw(:all); -use Gtk2::SimpleList; - -# make Rpmdrake::gui aware MandrivaUpdate do not use the same columns ids as rpmdrake: -%pkg_columns = ( - image => 0, - selected => 1, - text => 2, - short_name => 3, - version => 4, - release => 5, - 'arch' => 6, - importance => 7, -); - -$ugtk2::wm_icon = get_icon('MandrivaUpdate', "title-$MODE"); - -our $w; -our $statusbar; - -warn_about_user_mode(); - -my (%data, $initialized); - -my %update_icons = ( - security => 'security-update', - bugfix => 'bugfix-update', - normal => 'general-update', -); - -my %icons_cache; - -sub refresh_packages_list { - my ($list, $info, $button) = @_; - # select packages to update: - my @requested = sort @filtered_pkgs; - - # don't select packages in skip list: - if (!$initialized) { - $pkgs->{$_}{selected} = 0 foreach @requested; - my @selectable = grep { !$pkgs->{$_}{pkg}->flag_skip } @requested; - toggle($list, @selectable) if @selectable; - $initialized = 1; - } - - my $i; - @{$list->{data}} = map { - $data{$_} = $i++; - my $summary = get_summary($_); - my ($name, $version, $release, $arch) = split_fullname($_); - my $pkg = $pkgs->{$_}; - my $raw_medium = pkg2medium($pkg->{pkg}, $urpm); - my $medium = !$raw_medium->{fake} ? $raw_medium->{name} : undef; - my $icon; - my $importance = $medium && $descriptions->{$medium}{$name}{importance}; - if ($importance) { - $icon = $icons_cache{$importance} ||= gtknew('Pixbuf', file => $update_icons{$importance}); - } - [ $icon, $pkgs->{$_}{selected}, $_, format_name_n_summary($name, $summary), $version, $release, $arch, $importance ]; - } grep { $pkgs->{$_}{pkg} } @requested; - gtktext_insert($info, - formatAlaTeX(N("The list of updates is empty. This means that either there is -no available update for the packages installed on your computer, -or you already installed all of them."))) if !@{$list->{data}}; - $button->set_sensitive(scalar(@{$list->{data}})); -} - -sub toggle { - my ($list, @names) = @_; - my $name = $names[0]; - my $val = $pkgs->{$name}{selected}; - my $old_status = $val ? 'to_install' : 'to_update'; - my $done; - $pkgs->{$name}{pkg}->set_flag_skip(0); - toggle_nodes($w->{real_window}->window, $list->get_model, sub { - my ($leaf, $_state, $_model) = @_; - $done = 1; - $list->{data}[$data{$leaf}][$pkg_columns{selected}] = $pkgs->{$name}{selected}; - }, - $old_status, @names); - # handle canceling: - $list->{data}[$data{$name}][$pkg_columns{selected}] = !$list->{data}[$data{$name}][$pkg_columns{selected}] if !$done; -} - -$w = ugtk2->new(N("Software Management")); -$w->{rwindow}->show_all if $::isEmbedded; -$::main_window = $w->{real_window}; - -sub quit() { - ($mandrivaupdate_width->[0], $mandrivaupdate_height->[0]) = $::w->{real_window}->get_size; - real_quit(); -} - -sub run_treeview_dialog { - my ($callback_action) = @_; - - my ($list, $info, $update_button); - - my $rootwin_height = second(gtkroot()->get_size); - my $is_small_screen = $rootwin_height <= 480; - - compute_main_window_size($w); - - gtkadd( - $w->{window}, - gtkpack_( - gtknew('VBox', spacing => 3), - if_(!$is_small_screen, 0, getbanner()), - 0, gtknew('Title2', label => N("Here is the list of software package updates"), width => 600), - 1, create_vpaned( - gtknew('ScrolledWindow', width => $typical_width*0.9, height => $is_small_screen ? 150 : 200, - child => $list = Gtk2::SimpleList->new( - " " => 'pixbuf', - " " . " " . " " => 'bool', #N("Selected") - '' => 'hidden', - " " . N("Name") . " " => 'markup', #N("Name") - " " . N("Version") . " " => 'text', - " " . N("Release") . " " => 'text', - " " . N("Arch") . " " => 'text', - '' => 'hidden', - ), - ), - - gtknew('ScrolledWindow', width => $typical_width*0.9, - child => $info = Gtk2::Mdv::TextView->new, height => $is_small_screen ? 150 : 190, - ), - resize1 => 1, - ), - 0, gtkset_size_request(Gtk2::HSeparator->new, -1, 5), - 0, gtkpack_( - gtknew('HBox', spacing => 20), - 0, gtksignal_connect( - Gtk2::Button->new(but_(N("Help"))), - clicked => sub { rpmdrake::open_help($MODE) }, - ), - 0, gtksignal_connect( - Gtk2::Button->new(but_(N("Select all"))), - clicked => sub { - toggle_all({ - widgets => { - detail_list => $list, - detail_list_model => $list->get_model - }, - }, 1); - refresh_packages_list($list, $info, $update_button); - }, - ), - 1, gtknew('Label'), - 0, my $action_button = gtksignal_connect( - $update_button = Gtk2::Button->new(but_(N("Update"))), - clicked => sub { - my $res = do_action({ tree_mode => 'all_updates' }, $callback_action); - $initialized = 0 if !$res; - refresh_packages_list($list, $info, $update_button); - }, - ), - 0, gtksignal_connect( - Gtk2::Button->new(but_(N("Quit"))), - clicked => \&quit, - ), - ), - #0, $statusbar = Gtk2::Statusbar->new, - ), - ); - $statusbar = Gtk2::Statusbar->new; - - $list->get_model->set_sort_func($pkg_columns{image} + 1, sub { - my ($store, $treeiter1, $treeiter2) = @_; - $store->get_value($treeiter1, $pkg_columns{importance}) cmp - $store->get_value($treeiter2, $pkg_columns{importance}); - }); - - - $list->set_rules_hint(1); - my $pix_col = $list->get_column($pkg_columns{image}); - $pix_col->set_fixed_width(32); - my $bool_col = $list->get_column($pkg_columns{selected}); - $bool_col->set_fixed_width(24); - $bool_col->set_sizing('fixed'); - $bool_col->set_sort_column_id($pkg_columns{selected}); - - # -1 because actual widget count differs from TreeModel one due to the hidden column: - foreach (@pkg_columns{qw(short_name version release arch)}) { - my $col = $list->get_column($_-1); - ($col->get_cell_renderers)[0]->set_property('xpad', '6'); - $col->set_sizing('autosize'); - $col->set_sort_column_id($_); - } - - my $pretty_column = $list->get_column($pkg_columns{short_name}-1); - $pretty_column->set_resizable(1); - ($pretty_column->get_cell_renderers)[0]->set_property('ellipsize', 'end'); - $pretty_column->set_property('expand', '1'); - - $list->get_selection->signal_connect(changed => sub { - my ($model, $iter) = $_[0]->get_selected; - $model && $iter or return; - gtktext_insert($info, get_info($model->get($iter, $pkg_columns{text}), $w->{real_window}->window)); - $info->scroll_to_iter($info->get_buffer->get_start_iter, 0, 0, 0, 0); - }); - - $w->{rwindow}->set_default_size(-1, 500) if !$::isEmbedded; - - if ($mandrivaupdate_width->[0] && $mandrivaupdate_height->[0]) { - # so that we can shrink back: - $w->{real_window}->set_default_size($mandrivaupdate_width->[0], $mandrivaupdate_height->[0]); - } - $w->{rwindow}->show_all; - $w->{rwindow}->set_sensitive(0); - - # ensure treeview get realized so that ->get_selection returns something - $list->realize; - gtkflush(); - - $filter->[0] = 'all'; # default filter: availlable updates - $Rpmdrake::pkg::probe_only_for_updates = 1; # faster startup - pkgs_provider({}, 'all_updates', pure_updates => 1); # default mode - - refresh_packages_list($list, $info, $update_button); - - my $cell = ($bool_col->get_cell_renderers)[0]; - $cell->signal_connect(toggled => sub { - my ($_cell, $text_path) = @_; - my $name = @{$list->{data}[$text_path]}[$pkg_columns{text}]; - gtkset_mousecursor_wait($w->{real_window}->window); - my $_guard = before_leaving(sub { gtkset_mousecursor_normal($w->{real_window}->window) }); - toggle($list, $name); - }); - $action_button->set_sensitive(0) if $>; - - $w->{rwindow}->set_sensitive(1); - - $w->main; -} - - -# -=-=-=---=-=-=---=-=-=-- main -=-=-=---=-=-=---=-=-=- - -do_merge_if_needed(); - -readconf(); - -init(); -run_treeview_dialog(\&perform_installation); - -writeconf(); - -myexit(0); |