9b764dc1d262a3a507a2227d4202405eb840c3f1
[samba.git] / source4 / gtk / tools / gwsam_user.c
1 /* 
2    Unix SMB/CIFS implementation.
3    GTK+ SAM frontend
4    
5    Copyright (C) Jelmer Vernooij 2004
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11    
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16    
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22 #include "includes.h"
23 #include "gtk/common/gtk-smb.h"
24
25
26 GtkWidget*
27 create_user_edit_dialog (void)
28 {
29   GtkWidget *user_edit_dialog;
30   GtkWidget *dialog_vbox1;
31   GtkWidget *notebook;
32   GtkWidget *table1;
33   GtkWidget *label4;
34   GtkWidget *label5;
35   GtkWidget *label6;
36   GtkWidget *label7;
37   GtkWidget *label8;
38   GtkWidget *chk_mustchange;
39   GtkWidget *entry_fullname;
40   GtkWidget *entry_description;
41   GtkWidget *lbl_username;
42   GtkWidget *entry_password;
43   GtkWidget *entry_confirm_password;
44   GtkWidget *chk_cannotchange;
45   GtkWidget *chk_cannotexpire;
46   GtkWidget *chk_disabled;
47   GtkWidget *chk_lockedout;
48   GtkWidget *label1;
49   GtkWidget *hbox1;
50   GtkWidget *scrolledwindow3;
51   GtkWidget *treeview3;
52   GtkWidget *vbox2;
53   GtkWidget *btn_groupadd;
54   GtkWidget *btn_groupdel;
55   GtkWidget *scrolledwindow4;
56   GtkWidget *treeview4;
57   GtkWidget *label2;
58   GtkWidget *vbox3;
59   GtkWidget *frame1;
60   GtkWidget *table2;
61   GtkWidget *label12;
62   GtkWidget *label13;
63   GtkWidget *entry_profilepath;
64   GtkWidget *entry_scriptname;
65   GtkWidget *label10;
66   GtkWidget *frame2;
67   GtkWidget *table3;
68   GtkWidget *label14;
69   GtkWidget *entry_homedir;
70   GtkWidget *chk_mapdrive;
71   GtkWidget *combo_homedrive;
72   GtkWidget *label11;
73   GtkWidget *label3;
74   GtkWidget *dialog_action_area1;
75   GtkWidget *cancelbutton1;
76   GtkWidget *applybutton1;
77   GtkWidget *okbutton1;
78
79   user_edit_dialog = gtk_dialog_new ();
80   gtk_window_set_title (GTK_WINDOW (user_edit_dialog), "Edit User");
81
82   dialog_vbox1 = GTK_DIALOG (user_edit_dialog)->vbox;
83   gtk_widget_show (dialog_vbox1);
84
85   notebook = gtk_notebook_new ();
86   gtk_widget_show (notebook);
87   gtk_box_pack_start (GTK_BOX (dialog_vbox1), notebook, TRUE, TRUE, 0);
88
89   table1 = gtk_table_new (10, 2, FALSE);
90   gtk_widget_show (table1);
91   gtk_container_add (GTK_CONTAINER (notebook), table1);
92
93   label4 = gtk_label_new ("Username");
94   gtk_widget_show (label4);
95   gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 0, 1,
96                     (GtkAttachOptions) (GTK_FILL),
97                     (GtkAttachOptions) (0), 0, 0);
98   gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5);
99
100   label5 = gtk_label_new ("Full name");
101   gtk_widget_show (label5);
102   gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 1, 2,
103                     (GtkAttachOptions) (GTK_FILL),
104                     (GtkAttachOptions) (0), 0, 0);
105   gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);
106
107   label6 = gtk_label_new ("Description");
108   gtk_widget_show (label6);
109   gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 2, 3,
110                     (GtkAttachOptions) (GTK_FILL),
111                     (GtkAttachOptions) (0), 0, 0);
112   gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
113
114   label7 = gtk_label_new ("Password");
115   gtk_widget_show (label7);
116   gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 3, 4,
117                     (GtkAttachOptions) (GTK_FILL),
118                     (GtkAttachOptions) (0), 0, 0);
119   gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);
120
121   label8 = gtk_label_new ("Confirm password");
122   gtk_widget_show (label8);
123   gtk_table_attach (GTK_TABLE (table1), label8, 0, 1, 4, 5,
124                     (GtkAttachOptions) (GTK_FILL),
125                     (GtkAttachOptions) (0), 0, 0);
126   gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5);
127
128   chk_mustchange = gtk_check_button_new_with_mnemonic ("_User Must Change Password at Next Logon");
129   gtk_widget_show (chk_mustchange);
130   gtk_table_attach (GTK_TABLE (table1), chk_mustchange, 1, 2, 5, 6,
131                     (GtkAttachOptions) (GTK_FILL),
132                     (GtkAttachOptions) (0), 0, 0);
133
134   entry_fullname = gtk_entry_new ();
135   gtk_widget_show (entry_fullname);
136   gtk_table_attach (GTK_TABLE (table1), entry_fullname, 1, 2, 1, 2,
137                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
138                     (GtkAttachOptions) (0), 0, 0);
139
140   entry_description = gtk_entry_new ();
141   gtk_widget_show (entry_description);
142   gtk_table_attach (GTK_TABLE (table1), entry_description, 1, 2, 2, 3,
143                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
144                     (GtkAttachOptions) (0), 0, 0);
145
146   lbl_username = gtk_label_new ("");
147   gtk_widget_show (lbl_username);
148   gtk_table_attach (GTK_TABLE (table1), lbl_username, 1, 2, 0, 1,
149                     (GtkAttachOptions) (GTK_FILL),
150                     (GtkAttachOptions) (0), 0, 0);
151   gtk_misc_set_alignment (GTK_MISC (lbl_username), 0, 0.5);
152
153   entry_password = gtk_entry_new ();
154   gtk_widget_show (entry_password);
155   gtk_table_attach (GTK_TABLE (table1), entry_password, 1, 2, 3, 4,
156                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
157                     (GtkAttachOptions) (0), 0, 0);
158
159   entry_confirm_password = gtk_entry_new ();
160   gtk_widget_show (entry_confirm_password);
161   gtk_table_attach (GTK_TABLE (table1), entry_confirm_password, 1, 2, 4, 5,
162                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
163                     (GtkAttachOptions) (0), 0, 0);
164
165   chk_cannotchange = gtk_check_button_new_with_mnemonic ("User Cannot Change Password");
166   gtk_widget_show (chk_cannotchange);
167   gtk_table_attach (GTK_TABLE (table1), chk_cannotchange, 1, 2, 6, 7,
168                     (GtkAttachOptions) (GTK_FILL),
169                     (GtkAttachOptions) (0), 0, 0);
170
171   chk_cannotexpire = gtk_check_button_new_with_mnemonic ("Password Never Expires");
172   gtk_widget_show (chk_cannotexpire);
173   gtk_table_attach (GTK_TABLE (table1), chk_cannotexpire, 1, 2, 7, 8,
174                     (GtkAttachOptions) (GTK_FILL),
175                     (GtkAttachOptions) (0), 0, 0);
176
177   chk_disabled = gtk_check_button_new_with_mnemonic ("Account Disabled");
178   gtk_widget_show (chk_disabled);
179   gtk_table_attach (GTK_TABLE (table1), chk_disabled, 1, 2, 8, 9,
180                     (GtkAttachOptions) (GTK_FILL),
181                     (GtkAttachOptions) (0), 0, 0);
182
183   chk_lockedout = gtk_check_button_new_with_mnemonic ("Account Locked Out");
184   gtk_widget_show (chk_lockedout);
185   gtk_table_attach (GTK_TABLE (table1), chk_lockedout, 1, 2, 9, 10,
186                     (GtkAttachOptions) (GTK_FILL),
187                     (GtkAttachOptions) (0), 0, 0);
188
189   label1 = gtk_label_new ("Main");
190   gtk_widget_show (label1);
191   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), label1);
192
193   hbox1 = gtk_hbox_new (FALSE, 0);
194   gtk_widget_show (hbox1);
195   gtk_container_add (GTK_CONTAINER (notebook), hbox1);
196
197   scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
198   gtk_widget_show (scrolledwindow3);
199   gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow3, TRUE, TRUE, 0);
200
201   treeview3 = gtk_tree_view_new ();
202   gtk_widget_show (treeview3);
203   gtk_container_add (GTK_CONTAINER (scrolledwindow3), treeview3);
204
205   vbox2 = gtk_vbox_new (TRUE, 0);
206   gtk_widget_show (vbox2);
207   gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0);
208
209   btn_groupadd = gtk_button_new_from_stock ("gtk-add");
210   gtk_widget_show (btn_groupadd);
211   gtk_box_pack_start (GTK_BOX (vbox2), btn_groupadd, FALSE, FALSE, 0);
212
213   btn_groupdel = gtk_button_new_from_stock ("gtk-remove");
214   gtk_widget_show (btn_groupdel);
215   gtk_box_pack_start (GTK_BOX (vbox2), btn_groupdel, FALSE, FALSE, 0);
216
217   scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
218   gtk_widget_show (scrolledwindow4);
219   gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow4, TRUE, TRUE, 0);
220
221   treeview4 = gtk_tree_view_new ();
222   gtk_widget_show (treeview4);
223   gtk_container_add (GTK_CONTAINER (scrolledwindow4), treeview4);
224
225   label2 = gtk_label_new ("Groups");
226   gtk_widget_show (label2);
227   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), label2);
228
229   vbox3 = gtk_vbox_new (FALSE, 0);
230   gtk_widget_show (vbox3);
231   gtk_container_add (GTK_CONTAINER (notebook), vbox3);
232
233   frame1 = gtk_frame_new (NULL);
234   gtk_widget_show (frame1);
235   gtk_box_pack_start (GTK_BOX (vbox3), frame1, TRUE, TRUE, 0);
236
237   table2 = gtk_table_new (2, 2, FALSE);
238   gtk_widget_show (table2);
239   gtk_container_add (GTK_CONTAINER (frame1), table2);
240
241   label12 = gtk_label_new ("User Profile Path:");
242   gtk_widget_show (label12);
243   gtk_table_attach (GTK_TABLE (table2), label12, 0, 1, 0, 1,
244                     (GtkAttachOptions) (GTK_FILL),
245                     (GtkAttachOptions) (0), 0, 0);
246   gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5);
247
248   label13 = gtk_label_new ("Logon Script Name:");
249   gtk_widget_show (label13);
250   gtk_table_attach (GTK_TABLE (table2), label13, 0, 1, 1, 2,
251                     (GtkAttachOptions) (GTK_FILL),
252                     (GtkAttachOptions) (0), 0, 0);
253   gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5);
254
255   entry_profilepath = gtk_entry_new ();
256   gtk_widget_show (entry_profilepath);
257   gtk_table_attach (GTK_TABLE (table2), entry_profilepath, 1, 2, 0, 1,
258                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
259                     (GtkAttachOptions) (0), 0, 0);
260
261   entry_scriptname = gtk_entry_new ();
262   gtk_widget_show (entry_scriptname);
263   gtk_table_attach (GTK_TABLE (table2), entry_scriptname, 1, 2, 1, 2,
264                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
265                     (GtkAttachOptions) (0), 0, 0);
266
267   label10 = gtk_label_new ("User Profiles");
268   gtk_widget_show (label10);
269   gtk_frame_set_label_widget (GTK_FRAME (frame1), label10);
270
271   frame2 = gtk_frame_new (NULL);
272   gtk_widget_show (frame2);
273   gtk_box_pack_start (GTK_BOX (vbox3), frame2, TRUE, TRUE, 0);
274
275   table3 = gtk_table_new (2, 2, FALSE);
276   gtk_widget_show (table3);
277   gtk_container_add (GTK_CONTAINER (frame2), table3);
278
279   label14 = gtk_label_new ("Path");
280   gtk_widget_show (label14);
281   gtk_table_attach (GTK_TABLE (table3), label14, 0, 1, 0, 1,
282                     (GtkAttachOptions) (GTK_FILL),
283                     (GtkAttachOptions) (0), 0, 0);
284   gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5);
285
286   entry_homedir = gtk_entry_new ();
287   gtk_widget_show (entry_homedir);
288   gtk_table_attach (GTK_TABLE (table3), entry_homedir, 1, 2, 0, 1,
289                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
290                     (GtkAttachOptions) (0), 0, 0);
291
292   chk_mapdrive = gtk_check_button_new_with_mnemonic ("Map homedir to drive");
293   gtk_widget_show (chk_mapdrive);
294   gtk_table_attach (GTK_TABLE (table3), chk_mapdrive, 0, 1, 1, 2,
295                     (GtkAttachOptions) (GTK_FILL),
296                     (GtkAttachOptions) (0), 0, 0);
297
298   combo_homedrive = gtk_combo_box_entry_new_text ();
299   gtk_widget_show (combo_homedrive);
300   gtk_table_attach (GTK_TABLE (table3), combo_homedrive, 1, 2, 1, 2,
301                     (GtkAttachOptions) (GTK_FILL),
302                     (GtkAttachOptions) (GTK_FILL), 0, 0);
303   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "C:");
304   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "D:");
305   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "E:");
306   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "F:");
307   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "G:");
308   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "H:");
309   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "I:");
310   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "J:");
311   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "K");
312   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "L:");
313   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "M:");
314   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "N:");
315   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "O:");
316   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "P:");
317   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "Q:");
318   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "R:");
319   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "S:");
320   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "T:");
321   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "U:");
322   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "V:");
323   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "W:");
324   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "X:");
325   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "Y:");
326   gtk_combo_box_append_text (GTK_COMBO_BOX (combo_homedrive), "Z:");
327
328   label11 = gtk_label_new ("Home Directory");
329   gtk_widget_show (label11);
330   gtk_frame_set_label_widget (GTK_FRAME (frame2), label11);
331
332   label3 = gtk_label_new ("Profile");
333   gtk_widget_show (label3);
334   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 2), label3);
335
336   dialog_action_area1 = GTK_DIALOG (user_edit_dialog)->action_area;
337   gtk_widget_show (dialog_action_area1);
338   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
339
340   cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
341   gtk_widget_show (cancelbutton1);
342   gtk_dialog_add_action_widget (GTK_DIALOG (user_edit_dialog), cancelbutton1, GTK_RESPONSE_CANCEL);
343   GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);
344
345   applybutton1 = gtk_button_new_from_stock ("gtk-apply");
346   gtk_widget_show (applybutton1);
347   gtk_dialog_add_action_widget (GTK_DIALOG (user_edit_dialog), applybutton1, GTK_RESPONSE_APPLY);
348   GTK_WIDGET_SET_FLAGS (applybutton1, GTK_CAN_DEFAULT);
349
350   okbutton1 = gtk_button_new_from_stock ("gtk-ok");
351   gtk_widget_show (okbutton1);
352   gtk_dialog_add_action_widget (GTK_DIALOG (user_edit_dialog), okbutton1, GTK_RESPONSE_OK);
353   GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
354
355   return user_edit_dialog;
356 }