/[soft]/rpm/urpmi/branches/1/gurpmi
ViewVC logotype

Annotation of /rpm/urpmi/branches/1/gurpmi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3132 - (hide annotations) (download)
Wed Feb 29 23:59:36 2012 UTC (12 years, 1 month ago) by tv
File size: 3717 byte(s)
branch

1 dmorgan 1928 #!/usr/bin/perl
2    
3     #- Copyright (C) 2005 MandrakeSoft SA
4     #- Copyright (C) 2005-2010 Mandriva SA
5    
6     use strict;
7    
8     BEGIN { #- set up a safe path and environment
9     $ENV{PATH} = "/bin:/usr/bin:/usr/X11R6/bin";
10     delete @ENV{qw(ENV BASH_ENV IFS CDPATH)};
11     }
12    
13     use Gtk2;
14     use gurpmi;
15     use urpm::util;
16    
17     sub usage() { gurpmi::usage() }
18    
19     #- globals
20     my ($srpms, $rpms) = ([], []);
21     my ($mainw, $mainbox);
22     my @all_rpms = gurpmi::parse_command_line();
23    
24     #- Now, the graphical stuff.
25    
26     Gtk2->init;
27    
28     #- Create main window
29    
30     $mainw = Gtk2::Window->new('toplevel');
31     $mainw->set_border_width(3);
32     $mainw->set_title(N("RPM installation"));
33     $mainw->signal_connect(destroy => \&cancel_n_quit);
34     $mainw->set_position('center');
35     $mainw->set_modal(0);
36     $mainbox = Gtk2::VBox->new(0, 5);
37     $mainw->add($mainbox);
38    
39     sub all_descriptions {
40     my (@rpms) = @_;
41     join '', `rpm -qp --qf '%{name}-%{version}-%{release}: %{summary}\\n' @rpms`;
42     }
43    
44     foreach (@all_rpms) {
45     unless (-e $_) {
46     $mainbox->pack_start(new_label(N("Error: unable to find file %s, will cancel operation", $_)), 1, 1, 0);
47     my $abort_button = Gtk2::Button->new(but(N("_Ok")));
48     $abort_button->signal_connect(clicked => sub { cancel_n_quit(); exit 1 });
49     add_button_box($mainbox, $abort_button);
50     $mainw->show_all;
51     Gtk2->main;
52     }
53     /\.src\.rpm$/ ? push(@$srpms, $_) : push(@$rpms, $_);
54     }
55    
56     sub proceed() {
57     #- we need to switch to root if we're not already (via consolehelper)
58     #- yes. hardcoded paths. safe.
59     exec $> ? '/usr/bin/gurpmi2' : '/usr/sbin/gurpmi2', @ARGV;
60     }
61    
62     #- Ask question: save or install ?
63     #- change depending on the number of rpms, and on the presence of srpms
64     if (!$gurpmi::options{auto} && @all_rpms + @gurpmi::names) {
65     my $msg = (
66     @$srpms > 0
67     ? N("You have selected a source package:
68    
69     %s
70    
71     You probably didn't want to install it on your computer (installing it would allow you to make modifications to its sourcecode then compile it).
72    
73     What would you like to do?", basename($srpms->[0]))
74     : @all_rpms == 0
75     ? N("You are about to install the following software packages on your computer:
76    
77     %s
78    
79     Proceed?", join("\n", map { "- $_" } @gurpmi::names))
80     : @all_rpms == 1
81     ? N("You are about to install the following software package on your computer:
82    
83     %s
84    
85     You may prefer to just save it. What is your choice?", all_descriptions($rpms->[0]))
86     : N("You are about to install the following software packages on your computer:
87    
88     %s
89    
90     Proceed?", all_descriptions(@all_rpms))
91     );
92     $mainbox->pack_start(new_label($msg), 1, 1, 0);
93     } else {
94     #- we're doing an --auto-select, proceed without asking
95     proceed();
96     }
97    
98     { #- buttons
99     my $inst_button = Gtk2::Button->new(but(N("_Install")));
100     my $save_button = @all_rpms == 1 ? Gtk2::Button->new(but(N("_Save"))) : undef;
101     my $ccel_button = Gtk2::Button->new(but(N("_Cancel")));
102    
103     $inst_button->signal_connect(clicked => sub {
104     #- performs installation.
105     quit();
106     proceed();
107     });
108     $save_button and $save_button->signal_connect(clicked => sub {
109     my $file_dialog = Gtk2::FileSelection->new(N("Choose location to save file"));
110     $file_dialog->set_modal(1);
111     $file_dialog->set_position('center');
112     my $filename = @$srpms > 0 ? $srpms->[0] : $rpms->[0];
113     $file_dialog->set_filename($filename);
114     $file_dialog->hide_fileop_buttons;
115     $file_dialog->ok_button->signal_connect(clicked => sub {
116     my $location = $file_dialog->get_filename;
117     quit();
118     $location and exec '/bin/mv', '-f', $filename, $location;
119     });
120     $file_dialog->cancel_button->signal_connect(clicked => \&quit);
121     $file_dialog->show;
122     });
123     $ccel_button->signal_connect(clicked => \&cancel_n_quit);
124     add_button_box($mainbox, grep { defined $_ } $inst_button, $save_button, $ccel_button);
125     }
126    
127     $mainw->show_all;
128     Gtk2->main;

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.30