diff options
-rwxr-xr-x | rpmdrake | 80 | ||||
-rw-r--r-- | rpmdrake.spec | 2 |
2 files changed, 70 insertions, 12 deletions
@@ -43,7 +43,6 @@ use strict; use lib qw(/usr/lib/libDrakX); use common; use rpmdrake; -use gurpm; #- This is needed because text printed by Gtk2 will always be encoded #- in UTF-8; we first check if LC_ALL is defined, because if it is, @@ -56,7 +55,7 @@ if ($collation_locale) { } else { $collation_locale = setlocale(LC_COLLATE); $collation_locale =~ /UTF-8/ or setlocale(LC_COLLATE, "$collation_locale.UTF-8"); -}; +} our %options; our $MODE = 'install'; @@ -86,12 +85,68 @@ foreach (@ARGV) { $::isStandalone = 1; +package gurpm; + +ugtk2->import(':all'); + +our ($mainw, $label, $progressbar, $vbox, $cancel, $hbox_cancel); + +sub init { + my ($title, $initializing, %options) = @_; + $mainw = ugtk2->new($title, %options); + $label = Gtk2::Label->new($initializing); + $progressbar = gtkset_size_request(Gtk2::ProgressBar->new, 300, -1); + gtkadd($mainw->{window}, gtkpack__($vbox = gtkset_border_width(Gtk2::VBox->new(0, 5),6), $label, $progressbar)); + $mainw->{rwindow}->set_position('center'); + $mainw->sync; +} + +sub label { + $label->set($_[0]); + select(undef, undef, undef, 0.1); #- hackish :-( + $mainw->flush; +} + +sub progress { + $progressbar->set_fraction($_[0]); + $mainw->flush; +} + +sub end { + $mainw and $mainw->destroy; + $mainw = undef; + $cancel = undef; #- in case we'll do another one later +} + +sub validate_cancel { + my ($cancel_msg, $cancel_cb) = @_; + if (!$cancel) { + gtkpack__($vbox, + $hbox_cancel = gtkpack__(create_hbox(), + $cancel = gtksignal_connect(Gtk2::Button->new($cancel_msg), clicked => \&$cancel_cb))); + } + $cancel->set_sensitive(1); + $cancel->show; +} + +sub invalidate_cancel { + $cancel and $cancel->set_sensitive(0); +} + +sub invalidate_cancel_forever { + $hbox_cancel or return; + $hbox_cancel->destroy; + $mainw->shrink_topwindow; +} + +package main; + my $w; my $changelog_first; -sub interactive_msg_ { interactive_msg(@_, if_(exists $w->{rwindow}, transient => $w->{rwindow})) }; -sub interactive_list_ { interactive_list(@_, if_(exists $w->{rwindow}, transient => $w->{rwindow})) }; -sub wait_msg_ { wait_msg(@_, if_(exists $w->{rwindow}, transient => $w->{rwindow})) }; +sub interactive_msg_ { interactive_msg(@_, if_(exists $w->{rwindow}, transient => $w->{rwindow})) } +sub interactive_list_ { interactive_list(@_, if_(exists $w->{rwindow}, transient => $w->{rwindow})) } +sub wait_msg_ { wait_msg(@_, if_(exists $w->{rwindow}, transient => $w->{rwindow})) } $> and (interactive_msg_(N("Running in user mode"), N("You are launching this program as a normal user. @@ -224,7 +279,7 @@ sub rpm_description { sub myformatList { my $r = formatList(40, @_); $r =~ s/(.{50}\S*)\s/$1\n/g; - $r + $r; } sub split_fullname { $_[0] =~ /^(.*)-([^-]+-[^-]+)$/ } @@ -486,7 +541,7 @@ sub run_treeview_dialog { @keys = grep { my ($name) = split_fullname($_); member($descriptions->{$name}{importance}, @$mandrakeupdate_wanted_categories) - || ! $descriptions->{$name}{importance} + || ! $descriptions->{$name}{importance}; } @keys; if (@keys == 0) { $add_node->('', N("(none)"), { nochild => 1 }); @@ -1384,10 +1439,13 @@ sub perform_installation { #- (partially) duplicated from /usr/sbin/urpmi :-( gurpm::label(N("Verifying packages signatures...")); my $total = @rpms_install + @rpms_upgrade; my $progress; - my @invalid_sources = to_utf8($urpm->check_sources_signatures(\%sources_install, \%sources, translate => 1, basename => 1, - callback => sub { - gurpm::progress(++$progress/$total); - })); + my @invalid_sources = to_utf8($urpm->check_sources_signatures( + \%sources_install, \%sources, + translate => 1, basename => 1, + callback => sub { + gurpm::progress(++$progress/$total); + }, + )); if (@invalid_sources) { interactive_msg_(N("Rpmdrake"), N("The following packages have bad signatures:\n\n%s\n\nDo you want to continue installation?", diff --git a/rpmdrake.spec b/rpmdrake.spec index 2341f915..732ce7ad 100644 --- a/rpmdrake.spec +++ b/rpmdrake.spec @@ -17,7 +17,7 @@ License: GPL Source0: %name-%version.tar.bz2 Summary: Mandrakelinux graphical front end for choosing packages for installion/removal Requires: perl-MDK-Common >= 1.1.18-2mdk -Requires: urpmi >= 4.6.4-4mdk gurpmi >= 4.6.4-4mdk +Requires: urpmi >= 4.6.8-1mdk Requires: perl-URPM >= 1.03-1mdk Requires: drakxtools >= 10.1-11mdk Requires: rpmtools >= 5.0.5 |