aboutsummaryrefslogtreecommitdiffstats
path: root/userdrake2
diff options
context:
space:
mode:
Diffstat (limited to 'userdrake2')
-rwxr-xr-xuserdrake2118
1 files changed, 74 insertions, 44 deletions
diff --git a/userdrake2 b/userdrake2
index b47d5bc..40bf5d5 100755
--- a/userdrake2
+++ b/userdrake2
@@ -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;
}
-