diff options
author | Daouda Lo <daouda@mandriva.com> | 2003-05-20 09:35:12 +0000 |
---|---|---|
committer | Daouda Lo <daouda@mandriva.com> | 2003-05-20 09:35:12 +0000 |
commit | 8c89e923a783653c30a00627bb9e69d37c834529 (patch) | |
tree | c451aeaeddedd2df2699ff16bfc8c3159972ca26 | |
parent | 8282c99321d51f1d54177f1e04b36b6e622e7dd3 (diff) | |
download | userdrake-8c89e923a783653c30a00627bb9e69d37c834529.tar userdrake-8c89e923a783653c30a00627bb9e69d37c834529.tar.gz userdrake-8c89e923a783653c30a00627bb9e69d37c834529.tar.bz2 userdrake-8c89e923a783653c30a00627bb9e69d37c834529.tar.xz userdrake-8c89e923a783653c30a00627bb9e69d37c834529.zip |
- Big Updates
o Filter Users
o Group members
o Refresh func
-rwxr-xr-x | userdrake2 | 118 |
1 files changed, 74 insertions, 44 deletions
@@ -23,28 +23,31 @@ use strict; use lib qw(/usr/lib/libDrakX); use standalone; + use common; use any; -use interactive; use ugtk2 qw(:all); -use USER; +use interactive; -my $us = {} ;#my $us = USER::ADMIN->new; -#$ent = $us->lookup_user_name("daouda"); -#!$ent and print "ent est vide"; +use USER; -$us->{VERSION} = 0.91; +my $conffile = '/etc/sysconfig/userdrake'; my $pixdir = '/usr/share/userdrake/pixmaps/'; my $in = interactive->vnew('su', 'default'); +my $us = {} ; +$us->{VERSION} = 0.91; + +my %prefs = getVarsFromSh($conffile); +my $sysfilter = text2bool($prefs{FILTER}); + sub HelpSystem { system("drakhelp Drakxtools-Guide.html/userdrake.html &") }; -sub DisplayAllUsers { } $us->{wnd} = ugtk2->new(N("Mandrake Linux Users Management Tool") . " " . $us->{VERSION}, center => 1); -gtkset_size_request($us->{wnd}{window}, 580, 440); -my $utree_model = Gtk2::ListStore->new(Gtk2::GType->STRING, Gtk2::GType->INT, Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->OBJECT); -my $gtree_model = Gtk2::ListStore->new(Gtk2::GType->STRING, Gtk2::GType->INT, Gtk2::GType->STRING, Gtk2::GType->OBJECT); +gtkset_size_request($us->{wnd}{window}, 660, 460); +my $utree_model = Gtk2::ListStore->new(Gtk2::GType->STRING, Gtk2::GType->INT, Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->STRING); +my $gtree_model = Gtk2::ListStore->new(Gtk2::GType->STRING, Gtk2::GType->INT, Gtk2::GType->STRING, Gtk2::GType->STRING); my ($usertree, $grouptree); $usertree = CreateTree($utree_model); $grouptree = CreateTree($gtree_model); my ($showallusers, $checkall); @@ -59,15 +62,16 @@ my ($menu, $factory) = create_factory_menu($us->{wnd}{rwindow}, { path => N("/_Actions") . N("/_Edit"), callback => \&Edit }, { path => N("/_Actions") . N("/_Delete"), callback => \&Delete }, { path => N("/_Options"), type => '<Branch>' }, - { path => N("/_Options") . N("/_All Users"), type => '<CheckItem>', - callback => sub { $showallusers = $checkall->active; DisplayAllUsers($showallusers) } }, + { path => N("/_Options") . N("/_Filter system users"), type => '<CheckItem>', + callback => sub { $sysfilter = $checkall->active; Refresh_Users_Full($sysfilter) } }, { path => N("/_Help"), type => '<Branch>' }, { path => N("/_Help").N("/_Help"), callback => \&HelpSystem }, { path => N("/_Help").N("/_Report Bug"), callback => sub { system("drakhelp https://qa.mandrakesoft.com &") } }, { path => N("/_Help").N("/_About..."), callback => \&about_mdk_userdrake } ) ); -$checkall = $factory->get_widget("<main>" . N("/Options") . N("/All Users")); +$checkall = $factory->get_widget("<main>" . N("/Options") . N("/Filter system users")); +$checkall->set_active($sysfilter); my $toolb = Gtk2::Toolbar->new; my $searchBox = Gtk2::HBox->new(0,5); $searchBox->pack_end(my $fbut = Gtk2::Button->new("Apply filter"), 0, 0, 4); @@ -81,7 +85,7 @@ gtkadd($us->{wnd}{window}, 0, $toolb, 0, $searchBox, 1, $nb )); -my @ucolsize = (80, 60, 60, 120, 80, 80, -1); my @gcolsize =(100, 80, 160, -1) ; +my @ucolsize = (80, 50, 50, 120, 80, 80, -1); my @gcolsize =(100, 80, 160, -1) ; each_index { my $col = Gtk2::TreeViewColumn->new_with_attributes($_, Gtk2::CellRendererText->new, 'text' => $::i); $col->set_min_width($ucolsize[$::i]); @@ -93,9 +97,11 @@ each_index { $col->set_min_width($gcolsize[$::i]); $grouptree->append_column($col); } (N("Group Name"), N("Group ID"), N("Group Members")); +my @toolbwg; map { - $toolb->append_item($_->[0], $_->[1], $_->[2], - Gtk2::Image->new_from_file($pixdir . $_->[2] . '.png'), $_->[3], $toolb); + my $t = $toolb->append_item($_->[0], $_->[1], $_->[2], + Gtk2::Image->new_from_file($pixdir . $_->[2] . '.png'), $_->[3], $toolb); push(@toolbwg, $t); + $toolb->append_space; } ( [ N("Add User"), N("Add a user to the system"), 'user_add', \&AddUser ], [ N("Add Group"), N("Add a group to the system"), 'group_add', \&AddGroup ], [ N("Edit"), N("Edit selected row"), 'user_conf', \&Edit ], @@ -103,21 +109,33 @@ map { [ N("Refresh"), N("Refresh the list"), 'refresh', \&Refresh ], [ N("Help"), N("Generic help on userdrake"), 'help', \&HelpSystem ] ); +my ($tbuser, $tbgroup, $tbedit, $tbdel, $tbref, $tbhelp) = @toolbwg; +foreach (($tbedit, $tbdel)) { $_->set_sensitive(0) }; + +my $ctx = USER::ADMIN->new; +my $users = $ctx->users_enumerate_full(); +my $groups = $ctx->groups_enumerate_full(); -#my $h = USER::ADMIN->new; -#$h->start(); -#my $u = $h->users_enumerate_full(); -#my $g = $h->groups_enumerate_full(""); -my $ent = USER::ENT->new; +$utree_model->clear(); +foreach my $l (@$users) { + $utree_model->append_set([ 0 => $l->UserName, 1 => $l->Uid, 2 => $l->Gid, 3 => $l->Gecos, 4 => $l->LoginShell, 5 => $l->HomeDir, 6 => $l]); +} + +$gtree_model->clear(); +foreach my $g (@$groups) { + $gtree_model->append_set([ 0 => $g->GroupName, 1 => $g->Gid, 2 => $g->Gid, 3 => $g]); +} $us->{wnd}{rwindow}->show_all; Gtk2->main; ugtk2->exit; -sub get_groups_list { - my $pattern = shift ; +sub Refresh_Users_Full { + my $filterusers = shift; + if ($filterusers) { + + } } - sub AddUser { my $w = ugtk2->new(N("Create New User"), grab => 1); my $mode = 0; @@ -319,29 +337,41 @@ sub GrayBox { $v->set_sensitive($m); $o->signal_connect('clicked' => sub { $m = !$m; $v->set_sensitive($m) }); } -sub save_global { - -} -sub Refresh { - print ("User Refreshed\n"); -} sub quit_global { + setVarsInSh($conffile, { + FILTER => bool2text($sysfilter), + }); + gtkset_mousecursor_normal(); Gtk2->main_quit; } -sub InDialog { - my ($title, $label) = @_; - my $w = ugtk2->new($title, grab => 1); - gtkadd($w->{window}, - gtkpack_(Gtk2::VBox->new, - 1, Gtk2::Label->new($label), - 0, Gtk2::HSeparator->new, - 0, gtksignal_connect(Gtk2::Button->new(N("Ok")), clicked => sub { Gtk2->main_quit }) - ), - ); - $w->{rwindow}->show_all; - $w->main +sub new_dialog { + my ($title, $no_button) = @_; + my $dialog = gtkset_border_width(Gtk2::Dialog->new(), 10); + $dialog->set_transient_for($us->{wnd}{rwindow}); + $dialog->set_position('center-on-parent'); + $dialog->set_title($title); + $dialog->action_area->pack_start(gtkadd(Gtk2::HButtonBox->new, + gtksignal_connect(Gtk2::Button->new(N("Close")), clicked => sub { $dialog->destroy }) + ), + 0,0,0) unless $no_button; + gtkset_modal($dialog, 1); } sub about_mdk_userdrake { - InDialog(N("About Userdrake"), N("\n\nMandrake User Management Tool\n Name :\t Userdrake \n Version :\t %s \n Author : \tDaouda Lo <daouda\@mandrakesoft.com\n\n", $us->{VERSION})) + my $window_about = new_dialog(N("Userdrake2")); + my $tree_model = Gtk2::TreeStore->new(Gtk2::GType->STRING, Gtk2::GType->STRING, Gtk2::GType->STRING); + my $list = Gtk2::TreeView->new_with_model($tree_model); + $list->can_focus(0); + each_index { $list->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => $::i)) } 0..2; + $list->set_headers_visible(0); + foreach my $row ([ N("Authors: "), '', '' ], [ '', 'Daouda Lo', '<daouda@mandrakesoft.com>' ], ['', '', '']) { + $tree_model->append_set(undef, [ map_index { $::i => $_ } @$row ])->free; + } + $list->get_selection()->set_mode('none'); + gtkpack_($window_about->vbox, + -r "$pixdir/userdrake.png" ? + (0, Gtk2::Image->new_from_file("$pixdir/userdrake.png")) : (1, gtkmodify_font(Gtk2::Label->new(N("Users Management \n") . $us->{VERSION}), 'Bold 18'),), + 0, Gtk2::Label->new("\n" . N("Copyright (C) 2003 Mandrakesoft SA") . "\n"), + 1, $list, + ); + $window_about->show_all; } - |