From 2c6b19548f93e96397808592674b589405cc2260 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Sat, 17 Oct 2009 15:49:41 +0000 Subject: (is_xguest_installed,RefreshXguest,Xguest) enable to install/uninstall xguest account from 'actions' menu --- NEWS | 2 ++ userdrake | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 2427877..29aa875 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +- enable to install/uninstall xguest account from 'actions' menu + Version 1.10 - 8 September 2009, Aurelien Lefebvre - added password weakness check (require >= drakx-12.49) diff --git a/userdrake b/userdrake index 01f9586..8e18fc5 100755 --- a/userdrake +++ b/userdrake @@ -89,9 +89,16 @@ my $gtree_model = Gtk2::ListStore->new("Glib::String", "Glib::Int", "Glib::Strin my ($usertree, $grouptree); $usertree = CreateTree($utree_model); $grouptree = CreateTree($gtree_model); # slightly verbatimed from control-center + +my %xguest_labels = ( + to_install => N("/_Install guest account"), + installed => N("/_Uninstall guest account"), +); + my %options = ( 'edit' => [ N("/_Actions"), N("/_Edit") ], 'delete' => [ N("/_Actions"), N("/_Delete") ], + 'xguest' => [ N("/_Actions"), $xguest_labels{installed} ], 'filter' => [ N("/_Options"), N("/_Filter system users") ] ); my %buttorcheck; @@ -104,6 +111,7 @@ my ($menu, $factory) = create_factory_menu($::isEmbedded ? $::Plug : $us->{wnd}{ [ N("/_Actions") . N("/Add _Group"), undef, \&AddGroup, undef, '' ], [ join('', @{$options{edit}}), undef, \&Edit, undef, '' ], [ join('', @{$options{delete}}), undef, \&Delete, undef, '' ], + [ join('', @{$options{xguest}}), undef, \&Xguest, undef, '' ], [ N("/_Options"), undef, undef, undef, '' ], [ join('', @{$options{filter}}), undef, sub { $sysfilter = $buttorcheck{filter}->get_active; @@ -115,7 +123,7 @@ my ($menu, $factory) = create_factory_menu($::isEmbedded ? $::Plug : $us->{wnd}{ [ N("/_Help") . N("/_About..."), undef, \&About, undef, '' ] ) ); -%buttorcheck = map { $_ => $factory->get_widget("
" . join '', map { s/_//; $_ } @{$options{$_}}) }('edit', 'delete', 'filter'); +%buttorcheck = map { $_ => $factory->get_widget("
" . join '', map { s/_//; $_ } @{$options{$_}}) }('edit', 'delete', 'filter', 'xguest'); if (defined $buttorcheck{filter}) { $buttorcheck{filter}->set_active($sysfilter); @@ -176,6 +184,8 @@ foreach ([ N("Add User"), N("Add a user to the system"), 'user_add', \&AddUser ] my ($_tbuser, $_tbgroup, $tbedit, $tbdel, $_tbref) = @toolbwg; GrayDelEdit(); +RefreshXguest(); + my $ctx = USER::ADMIN->new; $fbut->signal_connect('clicked', sub { $stringsearch = $filter->get_text; Refresh($sysfilter, $stringsearch) }); Refresh($sysfilter, $stringsearch); @@ -188,14 +198,25 @@ undef $window_splash; $us->{wnd}->main; ugtk2->exit(0); +sub is_xguest_installed() { + -e '/etc/security/namespace.d/guest.conf'; +} + sub GrayDelEdit() { foreach ($tbedit, $tbdel, $buttorcheck{edit}, $buttorcheck{delete}) { defined $_ and $_->set_sensitive(0) } } +sub RefreshXguest() { + my $label = $xguest_labels{is_xguest_installed() ? 'installed' : 'to_install'}; + $label =~ s!^/!!; + $buttorcheck{xguest}->get_child->set_label($label); +} + sub TreeUnselect { my $treev = shift; $treev->get_selection->unselect_all; GrayDelEdit(); + RefreshXguest(); } sub NotebookSwitch() { @@ -257,6 +278,7 @@ sub Refresh { RefreshUsersFull($filt, $strfilt); RefreshGroupsFull($filt, $strfilt); GrayDelEdit(); + RefreshXguest(); } sub GetFaceIcon { @@ -703,6 +725,15 @@ sub NewWindow { $dialog; } +sub Xguest() { + if (is_xguest_installed()) { + run_program::run('rpm', '-e', 'xguest'); + } else { + run_program::run('gurpmi2', 'xguest'); + } + RefreshXguest(); +} + sub Edit() { my $w = NewWindow(N("Edit Groups / Users")); my $model = Gtk2::ListStore->new("Gtk2::Gdk::Pixbuf", "Glib::String", "Glib::Int"); -- cgit v1.2.1