Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugal-tweak.git;a=commitdiff;h=178f38ee3b2d8445bcbb2f755545ad69e9b31dc3
commit 178f38ee3b2d8445bcbb2f755545ad69e9b31dc3 Author: bouleetbil <bouleet...@frogdev.info> Date: Sat Nov 13 12:22:06 2010 +0100 *added group for a user * http://dors.frugalware.org/users.png :p diff --git a/frugal-mono-tools/Group.cs b/frugal-mono-tools/Group.cs index 8f6e630..0f53709 100644 --- a/frugal-mono-tools/Group.cs +++ b/frugal-mono-tools/Group.cs @@ -64,6 +64,13 @@ namespace frugalmonotools try { this.Id=Convert.ToInt32(line.Split(':')[2]); + //now find users + string[] ch_Users = line.Split(':')[3].ToString().Split(','); + foreach (string ch_User in ch_Users) + { + User user = new User(ch_User); + this._users.Add(user); + } } catch{} break; diff --git a/frugal-mono-tools/Groups.cs b/frugal-mono-tools/Groups.cs index 7951ec5..57e855c 100644 --- a/frugal-mono-tools/Groups.cs +++ b/frugal-mono-tools/Groups.cs @@ -20,7 +20,12 @@ using System.Collections; using System.Collections.Generic; namespace frugalmonotools -{ +{ + public struct GroupUser + { + public Group TheGroup; + public bool Into; + } public static class Groups { public static string cch_FileUser = @"/etc/passwd"; @@ -41,7 +46,38 @@ namespace frugalmonotools } return users; } - + + public static List<GroupUser> GetGroup(string username) + { + List<GroupUser> groupsUser = new List<GroupUser>(); + + string ch_ContentsFileGroup=Outils.ReadFile(Groups.cch_FileGroup); + string[] lines = ch_ContentsFileGroup.Split('\n'); + foreach (string line in lines) + { + //storage::30:hald,gaetan + if(line.Split(':')[0].ToString().Trim()!="") + { + Group Agroup = new Group(line.Split(':')[0]); + GroupUser groupUser = new GroupUser(); + groupUser.TheGroup=Agroup; + //extract users from this group + bool bo_Into = false; + string[] userNames = line.Split(':')[3].ToString().Split(','); + foreach (string name in userNames) + { + if(name==username) + { + bo_Into=true; + break; + } + } + groupUser.Into=bo_Into; + groupsUser.Add(groupUser); + } + } + return groupsUser; + } } } diff --git a/frugal-mono-tools/Pictures/WID_Users.cs b/frugal-mono-tools/Pictures/WID_Users.cs index e408195..463f2fc 100644 --- a/frugal-mono-tools/Pictures/WID_Users.cs +++ b/frugal-mono-tools/Pictures/WID_Users.cs @@ -23,15 +23,19 @@ namespace frugalmonotools [System.ComponentModel.ToolboxItem(true)] public partial class WID_Users : Gtk.Bin { + private const int columnSelected = 0; + private Gtk.TreeIter iter; - ListStore ListStoreUser = new Gtk.ListStore (typeof (string)); + ListStore ListStoreUser = new Gtk.ListStore (typeof (string)); + ListStore ListStoreUserGroup = new Gtk.ListStore (typeof (bool),typeof (string)); public WID_Users () { this.Build (); } public void InitUsers() { - // Create a column for the package name + #region treeview users + // Create a column for the name Gtk.TreeViewColumn ColumnUser = new Gtk.TreeViewColumn (); ColumnUser.Title = "Users"; Gtk.CellRendererText NameCellUser = new Gtk.CellRendererText (); @@ -48,7 +52,41 @@ namespace frugalmonotools TREE_Users.Model=ListStoreUser; // Event on treeview TREE_Users.Selection.Changed += OnSelectionUser; + #endregion + + #region treeview user groups + Gtk.TreeViewColumn ColumnCheck = new Gtk.TreeViewColumn (); + ColumnCheck.Title = ""; + Gtk.CellRendererToggle NameCellCheck= new Gtk.CellRendererToggle (); + NameCellCheck.Activatable = true; + NameCellCheck.Toggled += new ToggledHandler (SelectToggled); + // Add the cell to the column + ColumnCheck.PackStart (NameCellCheck, true); + TREE_UserGroup.AppendColumn (ColumnCheck); + ColumnCheck.AddAttribute (NameCellCheck, "active", 0); + + + // Create a column for the package name + Gtk.TreeViewColumn ColumnGroup = new Gtk.TreeViewColumn (); + ColumnGroup.Title = "Group"; + Gtk.CellRendererText NameCellGroup= new Gtk.CellRendererText (); + // Add the cell to the column + ColumnGroup.PackStart (NameCellGroup, true); + TREE_UserGroup.AppendColumn (ColumnGroup); + ColumnGroup.AddAttribute (NameCellGroup, "text", 1); + TREE_UserGroup.Model=ListStoreUserGroup; + #endregion + } + private void SelectToggled (object sender, ToggledArgs args) + { + TreeIter iter; + if (ListStoreUserGroup.GetIterFromString (out iter, args.Path)) { + bool val = (bool) ListStoreUserGroup.GetValue (iter, columnSelected); + ListStoreUserGroup.SetValue (iter, columnSelected, !val); + } + } + protected void OnSelectionUser (object o, EventArgs args) { try @@ -62,11 +100,25 @@ namespace frugalmonotools SAI_Comment.Text=user.Comment; SAI_Shell.Text=user.Shell; SAI_Home.Text=user.Home; + SAI_Pass.Text=""; + FindGroupUser(user.Name); } } catch{} } - + private void FindGroupUser(string name) + { + ListStoreUserGroup.Clear(); + List<GroupUser> groupsUser = Groups.GetGroup(name); + foreach (GroupUser groupUser in groupsUser) + { + if(groupUser.Into) + ListStoreUserGroup.AppendValues (true,groupUser.TheGroup.Name); + else + ListStoreUserGroup.AppendValues (false,groupUser.TheGroup.Name); + } + + } } } diff --git a/frugal-mono-tools/User.cs b/frugal-mono-tools/User.cs index c03666a..0e5da34 100644 --- a/frugal-mono-tools/User.cs +++ b/frugal-mono-tools/User.cs @@ -28,10 +28,20 @@ namespace frugalmonotools private string _comment=""; private string _shell=""; private string _home=""; + private string _pass=""; private List<Group> _groups = new List<Group>(); #endregion #region public + public string Pass { + get { + return this._pass; + } + set { + _pass = value; + } + } + public string Comment { get { return this._comment; @@ -128,11 +138,17 @@ namespace frugalmonotools } public List<Group> GetGroups() { - if ((this.Name=="") && (this.Id==0)) - { + if (this.Name=="") return null; + _groups.Clear(); + //read group + string ch_ContentsFileUsers=Outils.ReadFile(Groups.cch_FileGroup); + string[] lines = ch_ContentsFileUsers.Split('\n'); + foreach (string line in lines) + { + //storage::30:hald,gaetan } - return null; + return _groups; } } diff --git a/frugal-mono-tools/gtk-gui/frugalmonotools.WID_Users.cs b/frugal-mono-tools/gtk-gui/frugalmonotools.WID_Users.cs index de56ca8..0c3529d 100644 --- a/frugal-mono-tools/gtk-gui/frugalmonotools.WID_Users.cs +++ b/frugal-mono-tools/gtk-gui/frugalmonotools.WID_Users.cs @@ -28,7 +28,15 @@ namespace frugalmonotools private global::Gtk.Entry SAI_Home; - private global::Gtk.Entry SAI_Groups; + private global::Gtk.HBox hbox5; + + private global::Gtk.Label label3; + + private global::Gtk.Entry SAI_Pass; + + private global::Gtk.ScrolledWindow GtkScrolledWindow2; + + private global::Gtk.TreeView TREE_UserGroup; private global::Gtk.HBox hbox2; @@ -152,16 +160,46 @@ namespace frugalmonotools w10.Expand = false; w10.Fill = false; // Container child vbox2.Gtk.Box+BoxChild - this.SAI_Groups = new global::Gtk.Entry (); - this.SAI_Groups.CanFocus = true; - this.SAI_Groups.Name = "SAI_Groups"; - this.SAI_Groups.IsEditable = true; - this.SAI_Groups.InvisibleChar = 'â¢'; - this.vbox2.Add (this.SAI_Groups); - global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.SAI_Groups])); - w11.Position = 4; + this.hbox5 = new global::Gtk.HBox (); + this.hbox5.Name = "hbox5"; + this.hbox5.Spacing = 6; + // Container child hbox5.Gtk.Box+BoxChild + this.label3 = new global::Gtk.Label (); + this.label3.Name = "label3"; + this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Password :"); + this.hbox5.Add (this.label3); + global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.label3])); + w11.Position = 0; w11.Expand = false; w11.Fill = false; + // Container child hbox5.Gtk.Box+BoxChild + this.SAI_Pass = new global::Gtk.Entry (); + this.SAI_Pass.TooltipMarkup = "Password"; + this.SAI_Pass.CanFocus = true; + this.SAI_Pass.Name = "SAI_Pass"; + this.SAI_Pass.IsEditable = true; + this.SAI_Pass.Visibility = false; + this.SAI_Pass.InvisibleChar = 'â¢'; + this.hbox5.Add (this.SAI_Pass); + global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.SAI_Pass])); + w12.Position = 1; + this.vbox2.Add (this.hbox5); + global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox5])); + w13.Position = 4; + w13.Expand = false; + w13.Fill = false; + // Container child vbox2.Gtk.Box+BoxChild + this.GtkScrolledWindow2 = new global::Gtk.ScrolledWindow (); + this.GtkScrolledWindow2.Name = "GtkScrolledWindow2"; + this.GtkScrolledWindow2.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow2.Gtk.Container+ContainerChild + this.TREE_UserGroup = new global::Gtk.TreeView (); + this.TREE_UserGroup.CanFocus = true; + this.TREE_UserGroup.Name = "TREE_UserGroup"; + this.GtkScrolledWindow2.Add (this.TREE_UserGroup); + this.vbox2.Add (this.GtkScrolledWindow2); + global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.GtkScrolledWindow2])); + w15.Position = 5; // Container child vbox2.Gtk.Box+BoxChild this.hbox2 = new global::Gtk.HBox (); this.hbox2.Name = "hbox2"; @@ -172,83 +210,83 @@ namespace frugalmonotools this.BTN_AddUser.Name = "BTN_AddUser"; this.BTN_AddUser.UseUnderline = true; // Container child BTN_AddUser.Gtk.Container+ContainerChild - global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f); + global::Gtk.Alignment w16 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f); // Container child GtkAlignment.Gtk.Container+ContainerChild - global::Gtk.HBox w13 = new global::Gtk.HBox (); - w13.Spacing = 2; + global::Gtk.HBox w17 = new global::Gtk.HBox (); + w17.Spacing = 2; // Container child GtkHBox.Gtk.Container+ContainerChild - global::Gtk.Image w14 = new global::Gtk.Image (); - w14.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-add", global::Gtk.IconSize.Menu); - w13.Add (w14); + global::Gtk.Image w18 = new global::Gtk.Image (); + w18.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-add", global::Gtk.IconSize.Menu); + w17.Add (w18); // Container child GtkHBox.Gtk.Container+ContainerChild - global::Gtk.Label w16 = new global::Gtk.Label (); - w16.LabelProp = global::Mono.Unix.Catalog.GetString ("Add user"); - w16.UseUnderline = true; - w13.Add (w16); - w12.Add (w13); - this.BTN_AddUser.Add (w12); + global::Gtk.Label w20 = new global::Gtk.Label (); + w20.LabelProp = global::Mono.Unix.Catalog.GetString ("Add user"); + w20.UseUnderline = true; + w17.Add (w20); + w16.Add (w17); + this.BTN_AddUser.Add (w16); this.hbox2.Add (this.BTN_AddUser); - global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.BTN_AddUser])); - w20.Position = 0; - w20.Expand = false; - w20.Fill = false; + global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.BTN_AddUser])); + w24.Position = 0; + w24.Expand = false; + w24.Fill = false; // Container child hbox2.Gtk.Box+BoxChild this.BTN_Remove = new global::Gtk.Button (); this.BTN_Remove.CanFocus = true; this.BTN_Remove.Name = "BTN_Remove"; this.BTN_Remove.UseUnderline = true; // Container child BTN_Remove.Gtk.Container+ContainerChild - global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f); + global::Gtk.Alignment w25 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f); // Container child GtkAlignment.Gtk.Container+ContainerChild - global::Gtk.HBox w22 = new global::Gtk.HBox (); - w22.Spacing = 2; + global::Gtk.HBox w26 = new global::Gtk.HBox (); + w26.Spacing = 2; // Container child GtkHBox.Gtk.Container+ContainerChild - global::Gtk.Image w23 = new global::Gtk.Image (); - w23.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-delete", global::Gtk.IconSize.Menu); - w22.Add (w23); + global::Gtk.Image w27 = new global::Gtk.Image (); + w27.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-delete", global::Gtk.IconSize.Menu); + w26.Add (w27); // Container child GtkHBox.Gtk.Container+ContainerChild - global::Gtk.Label w25 = new global::Gtk.Label (); - w25.LabelProp = global::Mono.Unix.Catalog.GetString ("Remove user"); - w25.UseUnderline = true; - w22.Add (w25); - w21.Add (w22); - this.BTN_Remove.Add (w21); + global::Gtk.Label w29 = new global::Gtk.Label (); + w29.LabelProp = global::Mono.Unix.Catalog.GetString ("Remove user"); + w29.UseUnderline = true; + w26.Add (w29); + w25.Add (w26); + this.BTN_Remove.Add (w25); this.hbox2.Add (this.BTN_Remove); - global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.BTN_Remove])); - w29.Position = 1; - w29.Expand = false; - w29.Fill = false; + global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.BTN_Remove])); + w33.Position = 1; + w33.Expand = false; + w33.Fill = false; // Container child hbox2.Gtk.Box+BoxChild this.BTN_Apply = new global::Gtk.Button (); this.BTN_Apply.CanFocus = true; this.BTN_Apply.Name = "BTN_Apply"; this.BTN_Apply.UseUnderline = true; // Container child BTN_Apply.Gtk.Container+ContainerChild - global::Gtk.Alignment w30 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f); + global::Gtk.Alignment w34 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f); // Container child GtkAlignment.Gtk.Container+ContainerChild - global::Gtk.HBox w31 = new global::Gtk.HBox (); - w31.Spacing = 2; + global::Gtk.HBox w35 = new global::Gtk.HBox (); + w35.Spacing = 2; // Container child GtkHBox.Gtk.Container+ContainerChild - global::Gtk.Image w32 = new global::Gtk.Image (); - w32.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-apply", global::Gtk.IconSize.Menu); - w31.Add (w32); + global::Gtk.Image w36 = new global::Gtk.Image (); + w36.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-apply", global::Gtk.IconSize.Menu); + w35.Add (w36); // Container child GtkHBox.Gtk.Container+ContainerChild - global::Gtk.Label w34 = new global::Gtk.Label (); - w34.LabelProp = global::Mono.Unix.Catalog.GetString ("Apply"); - w34.UseUnderline = true; - w31.Add (w34); - w30.Add (w31); - this.BTN_Apply.Add (w30); + global::Gtk.Label w38 = new global::Gtk.Label (); + w38.LabelProp = global::Mono.Unix.Catalog.GetString ("Apply"); + w38.UseUnderline = true; + w35.Add (w38); + w34.Add (w35); + this.BTN_Apply.Add (w34); this.hbox2.Add (this.BTN_Apply); - global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.BTN_Apply])); - w38.Position = 2; - w38.Expand = false; - w38.Fill = false; + global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.BTN_Apply])); + w42.Position = 2; + w42.Expand = false; + w42.Fill = false; this.vbox2.Add (this.hbox2); - global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2])); - w39.Position = 6; - w39.Expand = false; - w39.Fill = false; + global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2])); + w43.Position = 6; + w43.Expand = false; + w43.Fill = false; this.notebook1.Add (this.vbox2); // Notebook tab this.label1 = new global::Gtk.Label (); @@ -270,11 +308,11 @@ namespace frugalmonotools this.TREE_Groups.Name = "TREE_Groups"; this.GtkScrolledWindow1.Add (this.TREE_Groups); this.vbox3.Add (this.GtkScrolledWindow1); - global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.GtkScrolledWindow1])); - w42.Position = 0; + global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.GtkScrolledWindow1])); + w46.Position = 0; this.notebook1.Add (this.vbox3); - global::Gtk.Notebook.NotebookChild w43 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1[this.vbox3])); - w43.Position = 1; + global::Gtk.Notebook.NotebookChild w47 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1[this.vbox3])); + w47.Position = 1; // Notebook tab this.label2 = new global::Gtk.Label (); this.label2.Name = "label2"; diff --git a/frugal-mono-tools/gtk-gui/gui.stetic b/frugal-mono-tools/gtk-gui/gui.stetic index d4a8faf..cf86381 100644 --- a/frugal-mono-tools/gtk-gui/gui.stetic +++ b/frugal-mono-tools/gtk-gui/gui.stetic @@ -3472,7 +3472,7 @@ Public License instead of this License. </widget> </child> </widget> - <widget class="Gtk.Bin" id="frugalmonotools.WID_Users" design-size="346 327"> + <widget class="Gtk.Bin" id="frugalmonotools.WID_Users" design-size="346 377"> <property name="MemberName" /> <property name="Visible">False</property> <child> @@ -3614,11 +3614,35 @@ Public License instead of this License. </packing> </child> <child> - <widget class="Gtk.Entry" id="SAI_Groups"> + <widget class="Gtk.HBox" id="hbox5"> <property name="MemberName" /> - <property name="CanFocus">True</property> - <property name="IsEditable">True</property> - <property name="InvisibleChar">â¢</property> + <property name="Spacing">6</property> + <child> + <widget class="Gtk.Label" id="label3"> + <property name="MemberName" /> + <property name="LabelProp" translatable="yes">Password :</property> + </widget> + <packing> + <property name="Position">0</property> + <property name="AutoSize">True</property> + <property name="Expand">False</property> + <property name="Fill">False</property> + </packing> + </child> + <child> + <widget class="Gtk.Entry" id="SAI_Pass"> + <property name="MemberName" /> + <property name="Tooltip" translatable="yes">Password</property> + <property name="CanFocus">True</property> + <property name="IsEditable">True</property> + <property name="Visibility">False</property> + <property name="InvisibleChar">â¢</property> + </widget> + <packing> + <property name="Position">1</property> + <property name="AutoSize">True</property> + </packing> + </child> </widget> <packing> <property name="Position">4</property> @@ -3628,7 +3652,21 @@ Public License instead of this License. </packing> </child> <child> - <placeholder /> + <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow2"> + <property name="MemberName" /> + <property name="ShadowType">In</property> + <child> + <widget class="Gtk.TreeView" id="TREE_UserGroup"> + <property name="MemberName" /> + <property name="CanFocus">True</property> + <property name="ShowScrollbars">True</property> + </widget> + </child> + </widget> + <packing> + <property name="Position">5</property> + <property name="AutoSize">True</property> + </packing> </child> <child> <widget class="Gtk.HBox" id="hbox2">
_______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git