source: llum/trunk/fuentes/llum/Core.cs @ 376

Last change on this file since 376 was 376, checked in by hectorgh, 4 years ago

adding project files

File size: 8.9 KB
Line 
1
2using System;
3using System.Text.RegularExpressions;
4using System.Text;
5using System.Globalization;
6using System.Security.Cryptography;
7
8
9namespace llum
10{
11
12
13        public class Core
14        {
15
16                public static Core singleton;
17               
18                public System.Collections.Generic.Dictionary <string,string> llxvars;
19                public llum.LoginWidget loginwid;
20                public llum.XmlrpcClient xmlrpc;
21                public llum.EditUser edit_user_wid;
22                public llum.DeleteUserWidget delete_users_wid;
23                public llum.ProgressWindow progress_window;
24                public llum.AddUser add_user_wid;
25                public llum.PromoteUserWidget promote_users_wid;
26                public llum.SearchGroupWidget search_group_wid;
27                public llum.EditGroupWidget edit_group_wid;
28                public llum.DemoteUserWidget demote_users_wid;
29                public llum.DeleteGroupsWidget delete_groups_wid;
30                public llum.AddGroupWidget add_group_wid;
31                public llum.AddGenericUsersWidget add_generic_users_wid;
32                public llum.PasswordListWidget pass_list_wid;
33                public llum.DeleteEveryUserWidget delete_every_user_wid;
34                public llum.GescenImportWidget gescen_wid;
35                public llum.DeleteHomeWidget delete_home_wid;
36                public llum.FreezeWidget freeze_wid;
37                public llum.ResetPasswordsWidget reset_wid;
38                public llum.RegenerateHomesWidget regen_wid;
39                public llum.ImportExportWidget imex_wid;
40                public llum.ReadOnlyAdminWidget roadmin_wid;
41               
42                public string[] user_info;
43                public string[] function_list;
44                public string user_group;
45                public bool user_ip;
46
47                public string forced_string;
48               
49                public MainWindow mw;
50               
51                public ChangeOwnPassword cop;
52                public SearchUser search_user;
53               
54                public System.Collections.Generic.List<Gtk.Widget> available_widgets;
55                public string server="https://server:9779";
56                public string html_skel="/usr/share/llum/html_skel.html";
57               
58               
59                public Core ()
60                {
61                        Mono.Unix.Catalog.Init("llum","/usr/share/locale/");
62
63                        this.user_ip=false;
64                        Core.singleton=this;
65                        mw=new MainWindow();
66                        available_widgets=new System.Collections.Generic.List<Gtk.Widget>();
67                        loginwid=new LoginWidget();
68                        mw.setCurrentWidget(loginwid);
69
70                }
71               
72                public Gtk.Button create_button(Gtk.Label label, Gtk.Image image)
73                {
74                        Gtk.Button button=new Gtk.Button();
75                        Gtk.VBox vbox=new Gtk.VBox();
76
77                        label.WidthChars=24;
78                        label.MaxWidthChars=24;
79                        label.LineWrap=true;
80                        label.Justify=Gtk.Justification.Center;
81
82                        vbox.Add(image);
83                        vbox.Add(label);
84                        button.Add(vbox);
85                        button.ShowAll();
86
87                        int h=46+label.SizeRequest().Height;
88                        if (h < 80)
89                                h=80;
90
91                        button.SetSizeRequest(1,h);
92                       
93                        return button;
94                }
95               
96                public string strip_special_chars(string url)
97                {
98                       
99                        url = Regex.Replace(url, @"[^\w\.@-]","");
100                        string stFormD = url.Normalize(NormalizationForm.FormD);
101                        StringBuilder sb = new StringBuilder();
102                 
103                        for (int ich = 0; ich < stFormD.Length; ich++)
104                        {
105                               
106                                UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
107                                if (uc != UnicodeCategory.NonSpacingMark)
108                                {
109                                        sb.Append(stFormD[ich]);
110                                }
111                        }
112                 
113                        return (sb.ToString());
114                }       
115               
116                public void set_function_list(string type)
117                {
118                       
119                        available_widgets.Clear();
120                        available_widgets=new System.Collections.Generic.List<Gtk.Widget>();
121
122                       
123                        // DEFAULT FUNCTIONS FOR EVERYONE
124                       
125                                // CHANGE OWN PASSWORD //
126                        cop=new ChangeOwnPassword();
127                        available_widgets.Add(cop);
128                        mw.setCurrentWidget(cop);
129                        Gtk.Button button=create_button(cop.label,cop.image);
130                        button.Clicked+=cop.OnMenuButtonClicked;
131                        mw.addMenuButton(button);                       
132                       
133                       
134                       
135                       
136                       
137                       
138                        // CUSTOM FUNCTIONS
139                        switch(type)
140                        {
141                                case "students":
142                                               
143
144                                        break;
145                               
146                                case "teachers":
147                               
148                                        search_user=new SearchUser(true);
149                                        available_widgets.Add(search_user);
150                                        button=create_button(search_user.label,search_user.image);
151                                        button.Clicked+=search_user.OnMenuButtonClicked;
152                                        mw.addMenuButton(button);
153                               
154                                       
155                               
156                                       
157                                         
158                                        add_user_wid=new AddUser();
159                                        available_widgets.Add(add_user_wid);
160                                        button=create_button(add_user_wid.label,add_user_wid.image);
161                                        button.Clicked+=add_user_wid.OnMenuButtonClicked;                               
162                                        mw.addMenuButton(button); 
163                                         
164                                        add_generic_users_wid=new AddGenericUsersWidget();
165                                        available_widgets.Add(add_generic_users_wid);
166                                        button=create_button(add_generic_users_wid.label, add_generic_users_wid.image);
167                                        button.Clicked+=add_generic_users_wid.OnMenuButtonClicked;
168                                        mw.addMenuButton(button);
169                               
170                                        add_group_wid=new AddGroupWidget();
171                                        available_widgets.Add(add_group_wid);
172                                        button=create_button(add_group_wid.label, add_group_wid.image);
173                                        button.Clicked+=add_group_wid.OnMenuButtonClicked;
174                                        mw.addMenuButton(button);       
175                                       
176                                       
177                               
178                                        pass_list_wid=new PasswordListWidget();
179                                        available_widgets.Add(pass_list_wid);
180                                        button=create_button(pass_list_wid.label,pass_list_wid.image);
181                                        button.Clicked+=pass_list_wid.OnMenuButtonClicked;
182                                        mw.addMenuButton(button);
183                               
184                                        /*
185                                        if (xmlrpc.get_methods().Contains("get_frozen_users"))
186                                        {
187                                                freeze_wid=new FreezeWidget();
188                                                available_widgets.Add(freeze_wid);
189                                                button=create_button(freeze_wid.label,freeze_wid.image);
190                                                button.Clicked+=freeze_wid.OnMenuButtonClicked;
191                                                mw.addMenuButton(button);                       
192                                        }
193                                        */
194                               
195                                                               
196                               
197                               
198                                        break;
199                               
200                                case "admin":
201                               
202                       
203                                        search_user=new SearchUser(true);
204                                        available_widgets.Add(search_user);
205                                        button=create_button(search_user.label,search_user.image);
206                                        button.Clicked+=search_user.OnMenuButtonClicked;
207                                        mw.addMenuButton(button);
208                                       
209                                        add_user_wid=new AddUser();
210                                        available_widgets.Add(add_user_wid);
211                                        button=create_button(add_user_wid.label,add_user_wid.image);
212                                        button.Clicked+=add_user_wid.OnMenuButtonClicked;                               
213                                        mw.addMenuButton(button);
214                               
215                               
216                                        add_generic_users_wid=new AddGenericUsersWidget();
217                                        available_widgets.Add(add_generic_users_wid);
218                                        button=create_button(add_generic_users_wid.label, add_generic_users_wid.image);
219                                        button.Clicked+=add_generic_users_wid.OnMenuButtonClicked;
220                                        mw.addMenuButton(button);
221                               
222                                        search_group_wid=new SearchGroupWidget();
223                                        available_widgets.Add(search_group_wid);
224                                        button=create_button(search_group_wid.label,search_group_wid.image);
225                                        button.Clicked+=search_group_wid.OnMenuButtonClicked;
226                                        mw.addMenuButton(button);
227                               
228                                        add_group_wid=new AddGroupWidget();
229                                        available_widgets.Add(add_group_wid);
230                                        button=create_button(add_group_wid.label, add_group_wid.image);
231                                        button.Clicked+=add_group_wid.OnMenuButtonClicked;
232                                        mw.addMenuButton(button);
233                               
234                                       
235                                        if (xmlrpc.get_methods().Contains("get_frozen_users"))
236                                        {
237                                                freeze_wid=new FreezeWidget();
238                                                available_widgets.Add(freeze_wid);
239                                                button=create_button(freeze_wid.label,freeze_wid.image);
240                                                button.Clicked+=freeze_wid.OnMenuButtonClicked;
241                                                mw.addMenuButton(button);                       
242                                        }
243                                       
244                               
245                                        pass_list_wid=new PasswordListWidget();
246                                        available_widgets.Add(pass_list_wid);
247                                        button=create_button(pass_list_wid.label,pass_list_wid.image);
248                                        button.Clicked+=pass_list_wid.OnMenuButtonClicked;
249                                        mw.addMenuButton(button);
250
251                                        reset_wid=new ResetPasswordsWidget();
252                                        available_widgets.Add(reset_wid);
253                                        button=create_button(reset_wid.label,reset_wid.image);
254                                        button.Clicked+=reset_wid.OnMenuButtonClicked;
255                                        mw.addMenuButton(button);
256                               
257                                        gescen_wid=new GescenImportWidget();
258                                        available_widgets.Add(gescen_wid);
259                                        button=create_button(gescen_wid.label,gescen_wid.image);
260                                        button.Clicked+=gescen_wid.OnMenuButtonClicked;
261                                        mw.addMenuButton(button);
262                               
263                                        regen_wid=new RegenerateHomesWidget();
264                                        available_widgets.Add(regen_wid);       
265                                        button=create_button(regen_wid.label,regen_wid.image);
266                                        button.Clicked+=regen_wid.OnMenuButtonClicked;
267                                        mw.addMenuButton(button);
268
269                                        imex_wid=new ImportExportWidget();
270                                        available_widgets.Add(imex_wid);       
271                                        button=create_button(imex_wid.label,imex_wid.image);
272                                        button.Clicked+=imex_wid.OnMenuButtonClicked;
273                                        mw.addMenuButton(button);
274
275                                        roadmin_wid=new ReadOnlyAdminWidget();
276                                        available_widgets.Add(roadmin_wid);
277                                        button=create_button(roadmin_wid.label,roadmin_wid.image);
278                                        button.Clicked+=roadmin_wid.OnMenuButtonClicked;
279                                        mw.addMenuButton(button);
280
281                                        delete_home_wid=new DeleteHomeWidget();
282                                        available_widgets.Add(delete_home_wid);
283                                        button=create_button(delete_home_wid.label,delete_home_wid.image);
284                                        button.Clicked+=delete_home_wid.OnMenuButtonClicked;
285                                        mw.addMenuButton(button);
286                               
287                                        delete_every_user_wid=new DeleteEveryUserWidget();
288                                        available_widgets.Add(delete_every_user_wid);
289                                        button=create_button(delete_every_user_wid.label, delete_every_user_wid.image);
290                                        button.Clicked+=delete_every_user_wid.OnMenuButtonClicked;
291                                        mw.addMenuButton(button);
292                                       
293                                        break;
294                               
295                                case "others":
296                               
297                                        break;
298                               
299                                default:
300                               
301                                       
302                                        break;
303
304                        }
305                       
306                        mw.logoutButtonSensitive=true;
307                       
308                       
309                       
310                }
311               
312
313       
314               
315
316               
317               
318                public static Core getCore()
319                {
320                        if(Core.singleton==null)
321                        {
322                                return new Core();
323                               
324                                       
325                        }
326                       
327                       
328                       
329                        return Core.singleton;
330                }
331               
332        }
333}
Note: See TracBrowser for help on using the repository browser.