From aaab59a20ba894b16088fb9f24275ca9f59898bb Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Wed, 21 Feb 2007 11:29:32 +0000 Subject: new simplified interface --- MandrivaUpdate | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 149 insertions(+), 1 deletion(-) mode change 120000 => 100755 MandrivaUpdate diff --git a/MandrivaUpdate b/MandrivaUpdate deleted file mode 120000 index 35076f9d..00000000 --- a/MandrivaUpdate +++ /dev/null @@ -1 +0,0 @@ -rpmdrake \ No newline at end of file diff --git a/MandrivaUpdate b/MandrivaUpdate new file mode 100755 index 00000000..25a34aaf --- /dev/null +++ b/MandrivaUpdate @@ -0,0 +1,149 @@ +#!/usr/bin/perl +#***************************************************************************** +# +# Copyright (c) 2002 Guillaume Cottenceau +# Copyright (c) 2002-2007 Thierry Vignaud +# 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 standalone; + +use Rpmdrake::init; +use rpmdrake; +use Rpmdrake::gui; +use Rpmdrake::formatting; +use Rpmdrake::pkg; + +use mygtk2 qw(gtknew); #- do not import anything else, especially gtkadd() which conflicts with ugtk2 one +use ugtk2 qw(:all); +use Gtk2::Gdk::Keysyms; +use Gtk2::SimpleList; + +$ugtk2::wm_icon = "title-$MODE"; + +our $w; +my $treeview_dialog_run = 0; +our $statusbar; + +warn_about_user_mode(); + +open_db(); + +sub run_treeview_dialog { + my ($callback_action) = @_; + + my ($size_selected, %elems); + my (undef, $size_free) = MDK::Common::System::df('/usr'); + + $w = ugtk2->new(N("Software Update")); + $::main_window = $w->{real_window}; + + ($typical_width) = string_size($w->{real_window}, translate("Graphical Environment") . "xmms-more-vis-plugins"); + $typical_width > 600 and $typical_width = 600; #- try to not being crazy with a too large value + $typical_width < 150 and $typical_width = 150; + + gtkadd( + $w->{window}, + gtkpack_( + gtknew('VBox', spacing => 3), + 0, getbanner(), + 0, gtknew('Title2', label => N("Here is the list of software packages updates")), + 1, gtkadd( + gtknew('Frame', border_width => 3, shadow_type => 'in'), +gtknew('ScrolledWindow', width => $typical_width*0.9, + child => my $list = Gtk2::SimpleList->new( + " " . " " . " " => 'bool', #N("Selected") + " " . "" . " " => 'markup', #N("Name") + ), + ), + ), + 0, gtknew('Label', font => '2'), + 0, Gtk2::HSeparator->new, + 0, gtknew('Label', font => '2'), + 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 { + return if !ref($::options->{toggle_all}); + $::options->{toggle_all}->(1); + }, + ), + 1, gtknew('Label'), + 0, my $action_button = gtksignal_connect( + Gtk2::Button->new(but_(N("Apply"))), + clicked => sub { do_action({ tree_mode => 'all_updates' }, $callback_action) }, + ), + 0, gtksignal_connect( + Gtk2::Button->new(but_(N("Quit"))), + clicked => sub { Gtk2->main_quit }, + ), + ), + #0, $statusbar = Gtk2::Statusbar->new, + ), + ); + $statusbar = Gtk2::Statusbar->new; + + $list->set_rules_hint(1); + $list->set_headers_visible(0); + + $w->{rwindow}->set_default_size($typical_width*2.7, 500) if !$::isEmbedded; + + $w->{rwindow}->show_all; + $w->{rwindow}->set_sensitive(0); + + pkgs_provider({}, $default_list_mode); # default mode + + # select packages to update: + my @requested = $urpm->resolve_requested($db, $urpm->{state}, + { map { $pkgs->{$_}{pkg}->id => 1 } keys %$pkgs }, + callback_choices => \&callback_choices, + ); + + @{$list->{data}} = map { + [ $pkgs->{$_}{selected}, join("\n", "$_", rpm_summary($pkgs->{$_}{pkg}->summary)) ] + } sort keys %$pkgs; + $action_button->set_sensitive(0) if $>; + + $w->{rwindow}->set_sensitive(1); + + $treeview_dialog_run = 1; + $w->main; +} + + +# -=-=-=---=-=-=---=-=-=-- main -=-=-=---=-=-=---=-=-=- + +readconf(); + +init(); +run_treeview_dialog(\&perform_installation); + +writeconf(); + +myexit(0); -- cgit v1.2.1