source: first-aid-kit/trunk/fuentes/first-aid-kit.install/usr/share/first-aid-kit/FirstAidKit.py

Last change on this file was 8676, checked in by daduve, 3 weeks ago

translations

File size: 17.8 KB
Line 
1import gi
2gi.require_version('Gtk', '3.0')
3from gi.repository import Gtk, Pango, GdkPixbuf, Gdk, Gio, GObject,GLib
4
5
6import gettext
7import signal
8
9import Core
10# import Dialog
11import sys
12import time
13import threading
14import os
15import Dialog
16
17signal.signal(signal.SIGINT, signal.SIG_DFL)
18gettext.textdomain('first-aid-kit')
19_=gettext.gettext
20
21
22RSRC="./rsrc/"
23
24
25
26class FirstAidKit:
27       
28       
29       
30        def __init__(self):
31               
32                self.core=Core.Core.get_core()
33               
34        #def init
35       
36       
37        def load_gui(self):
38
39               
40                builder=Gtk.Builder()
41                builder.set_translation_domain('first-aid-kit')
42                ui_path=RSRC + "first-aid-kit.ui"
43                builder.add_from_file(ui_path)
44               
45                self.main_window=builder.get_object("main_window")
46                self.scrolled_window=builder.get_object("scrolledwindow3")
47                self.main_box=builder.get_object("main_box")
48                self.net_button=builder.get_object("net_button")
49                self.hd_button=builder.get_object("hd_button")
50                self.epoptes_button=builder.get_object("epoptes_button")
51                self.bar_button=builder.get_object("start_bar_button1")
52                self.apt_button=builder.get_object("apt_button")
53                self.kernel_button=builder.get_object("kernel_button")
54                self.netfiles_button=builder.get_object("netfiles_button")
55                self.pmb_button=builder.get_object("pmb_button")
56               
57                #PANTALLA LOGIN
58                self.login_da_box=builder.get_object("login_da_box")
59                self.login_da=builder.get_object("login_drawingarea")
60               
61                self.login_overlay=Gtk.Overlay()
62                self.login_overlay.add(self.login_da_box)
63               
64                self.login_box=builder.get_object("login_box")
65                self.login_button=builder.get_object("login_button")
66                self.user_entry=builder.get_object("user_entry")
67                self.password_entry=builder.get_object("password_entry")
68                self.login_eb_box=builder.get_object("login_eb_box")
69                self.login_msg_label=builder.get_object("login_msg_label")
70                self.server_ip_entry=builder.get_object("server_ip_entry")
71                self.validate_spinner=builder.get_object("validate_spinner")
72               
73               
74                self.login_overlay.add_overlay(self.login_box)
75                self.login_overlay.show_all()
76               
77               
78               
79                #FIN LOGIN
80               
81               
82
83                self.separator1=builder.get_object("separator1")
84                self.separator3=builder.get_object("separator3")
85                self.main_button_box=builder.get_object("content_box")
86                self.content_subbox=builder.get_object("content_subbox")
87               
88                self.login_stack=Gtk.Stack()
89                self.login_stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
90                self.login_stack.set_transition_duration(500)
91                self.main_box.pack_start(self.login_stack,True,True,0)
92               
93                # ADD COMPONENTS
94               
95
96                #self.login_stack.add_titled(self.login_overlay,"login","Login")
97                self.login_stack.add_titled(self.main_button_box,"main_button","Main Button Box")
98               
99                self.main_stack=Gtk.Stack()
100                self.main_stack.set_transition_type(Gtk.StackTransitionType.SLIDE_DOWN)
101                self.main_stack.set_transition_duration(500)
102                self.content_subbox.pack_start(self.main_stack,True,True,5)
103               
104                #b=Gtk.Button("HOLA")
105                #self.main_stack.add_titled(b,"hola","hola")
106                try:
107
108                        #os.system('lliurex-version -f > /tmp/.FK')
109                        #time.sleep(0.5)
110                        if 'server' in open('/tmp/.FK').read():
111                                self.netfiles_box=self.core.netfiles_box
112                                self.main_stack.add_titled(self.netfiles_box,"netfilesbox","NetfilesBox")
113                                os.remove('/tmp/.FK')
114                        else:
115                                self.info_netfiles=builder.get_object("info_netfiles")
116                                self.info_netfiles_txt=builder.get_object("info_netfiles_txt")
117                                self.info_netfiles_txt.set_name("INFO_LABEL")
118                                self.info_netfiles_txt.set_text(_("Sorry you are not a server. You can't access to /net files."))
119                                self.main_stack.add_titled(self.info_netfiles,"netfilesbox","netfilesbox")
120
121                except Exception as e:
122                        self.core.dprint("(load_gui)Error: %s"%e,"[FirstAidKit]")
123                       
124                       
125                self.net_box=self.core.net_box
126                self.main_stack.add_titled(self.net_box,"netbox","NetBox")
127                self.hd_box=self.core.hd_box
128                self.main_stack.add_titled(self.hd_box,"hdbox","HdBox")
129                self.epoptes_box=self.core.epoptes_box
130                self.main_stack.add_titled(self.epoptes_box,"epoptesbox","EpoptesBox")
131                self.start_bar_box=self.core.start_bar_box
132                self.main_stack.add_titled(self.start_bar_box,"startbarbox","StartBarBox")
133                self.apt_box=self.core.apt_box
134                self.main_stack.add_titled(self.apt_box,"aptbox","AptBox")
135                self.kernel_box=self.core.kernel_box
136                self.main_stack.add_titled(self.kernel_box,"kernelbox","KernelBox")
137
138                self.pmb_box=self.core.pmb_box
139                self.main_stack.add_titled(self.pmb_box,"pmbbox","PmbBox")
140
141               
142                self.set_css_info()
143                self.connect_signals()
144                #self.load_values()
145               
146                self.not_validate=True
147               
148                self.main_window.show_all()
149               
150                self.validate_spinner.hide()
151               
152               
153                #NET SECTION HIDE
154                #self.core.net_box.restart_txt.hide()
155                self.core.net_box.configure_network_button.hide()
156                self.core.net_box.configure_network_txt.hide()
157                #self.core.net_box.restart_button.hide()
158                #self.core.net_box.box9.hide()
159               
160
161                self.main_stack.set_visible_child_name("netbox")
162
163        #def load_gui
164
165               
166       
167        def start_gui(self):
168        # LANZADOR DE LA GUI
169               
170                GObject.threads_init()
171                Gtk.main()
172               
173        #def start_gui
174       
175
176
177        def show_main_controls(self,status):
178        # OCULTA LOS CONTROLES QUE NO QUIERO QUE SEAN VISIBLES MIENTRAS NO ESTES LOGADO
179       
180                if status:
181                        self.separator1.show()
182                        self.separator3.show()
183                        self.main_button_box.show()
184                else:
185                        self.separator1.show()
186                        self.separator3.hide()
187                        self.main_button_box.hide()
188               
189        #def show_main_controls
190       
191       
192       
193       
194       
195        def connect_signals(self):
196               
197                self.user_entry.connect("activate",self.entries_press_event)
198                self.password_entry.connect("activate",self.entries_press_event)
199                self.server_ip_entry.connect("activate",self.entries_press_event)
200                self.login_button.connect("clicked",self.validate_user)
201                #self.main_window.connect("destroy",Gtk.main_quit)
202                #self.main_window.connect("destroy",self.close_fak)
203                self.main_window.connect("delete_event",self.close_fak)
204               
205                self.net_button.connect("clicked",self.net_button_clicked)
206                self.hd_button.connect("clicked",self.hd_button_clicked)
207                self.netfiles_button.connect("clicked",self.netfiles_button_clicked)
208                self.epoptes_button.connect("clicked",self.epoptes_button_clicked)
209                self.bar_button.connect("clicked",self.bar_button_clicked)
210                self.apt_button.connect("clicked",self.apt_button_clicked)
211                self.kernel_button.connect("clicked",self.kernel_button_clicked)
212                self.pmb_button.connect("clicked",self.pmb_button_clicked)
213               
214        # def connect_signals
215       
216        def set_css_info(self):
217               
218                self.style_provider=Gtk.CssProvider()
219                f=Gio.File.new_for_path("first-aid-kit.css")
220                self.style_provider.load_from_file(f)
221                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
222                self.main_window.set_name("WINDOW")
223               
224                self.scrolled_window.set_name("MENU_WINDOW")
225                self.login_button.set_name("OPTION_BUTTON")
226                self.net_button.set_name("SELECTED_OPTION_BUTTON")
227                self.netfiles_button.set_name("OPTION_BUTTON")
228                self.hd_button.set_name("OPTION_BUTTON")
229                self.epoptes_button.set_name("OPTION_BUTTON")
230                self.bar_button.set_name("OPTION_BUTTON")
231                self.apt_button.set_name("OPTION_BUTTON")
232                self.kernel_button.set_name("OPTION_BUTTON")
233                self.pmb_button.set_name("OPTION_BUTTON")
234                self.login_msg_label.set_name("ERROR_LABEL")
235
236                self.main_button_box.set_name("GREY")
237                       
238        #def set-css_info
239
240        def close_fak(self,widget,event):
241                try:
242                        if not self.core.working:
243                                Gtk.main_quit()
244                        else:
245                                mw=self.core.lri.main_window
246                                d=Dialog.InfoDialog(mw,"First Aid Kit","You can't close First Aid Kit now\nbecause you are working with the system.\nPlease wait...")
247                                response=d.run()
248                                d.destroy()
249                                return True
250
251                except Exception as e:
252                        return 0
253                        self.core.dprint("(close_fak)Error: %s"%e,"[FirstAidKit]")
254
255        #def close_fak
256       
257       
258        #VALIDACION DEL LOGIN
259       
260        def entries_press_event(self,widget):
261               
262                self.validate_user(None)
263               
264        #def entries_press_event
265       
266        def validate_user(self,widget):
267               
268                self.login_msg_label.hide()
269                self.validate_spinner.show()
270               
271                self.login_button.set_sensitive(False)
272               
273                self.thread=threading.Thread(target=self.validate_user_thread)
274                self.thread.daemon=True
275                self.thread.start()
276
277                GLib.timeout_add(500,self.validate_user_thread_listener)
278               
279               
280        #def validate_user
281       
282        def validate_user_thread(self):
283               
284                user=self.user_entry.get_text()
285                password=self.password_entry.get_text()
286                server_ip=self.server_ip_entry.get_text()
287               
288                # DELETE ME
289                '''if user=="":
290                        user="netadmin"
291                if password=="":
292                        password="lliurex"
293                '''
294                self.login_ret=self.core.n4d.validate_user(user,password,server_ip)
295               
296                print ("User: %s - Passwd: %s - Server: %s"%(user,password,server_ip))
297                print self.login_ret
298               
299        #def validate_user_thread
300       
301       
302        def validate_user_thread_listener(self):
303               
304                if self.thread.is_alive():
305                        return True
306               
307                if not self.login_ret[0]:
308                        self.login_msg_label.set_text("%s"%self.login_ret[1])
309                        self.validate_spinner.hide()
310                        self.login_msg_label.show()
311                        self.login_button.set_sensitive(True)
312
313                else:
314                       
315                        self.validate_spinner.hide()
316                        self.login_stack.set_visible_child_name("main_button")
317                        self.main_stack.set_visible_child_name("netbox")
318                        #self.login_overlay.hide()
319                        #self.show_main_controls(True)
320                        self.not_validate=False
321               
322                return False
323               
324               
325               
326        #def validate_user_thread
327       
328       
329        def net_button_clicked(self,widget):
330               
331                change_child=True
332                if self.main_stack.get_visible_child_name()=="hdbox":
333                        selected="hd"
334                if self.main_stack.get_visible_child_name()=="netfilesbox":
335                        selected="netfilesbox"
336                if self.main_stack.get_visible_child_name()=="epoptesbox":
337                        selected="epoptesbox"
338                if self.main_stack.get_visible_child_name()=="startbarbox":
339                        selected="startbarbox"
340                if self.main_stack.get_visible_child_name()=="kernelbox":
341                        selected="kernelbox"
342                if self.main_stack.get_visible_child_name()=="startbarbox":
343                        selected="aptbox"
344                if self.main_stack.get_visible_child_name()=="pmbbox":
345                        selected="pmbbox"
346                                       
347                if change_child:
348
349                        self.main_stack.set_visible_child_name("netbox")
350                        self.net_button.set_name("SELECTED_OPTION_BUTTON")
351                        self.hd_button.set_name("OPTION_BUTTON")
352                        self.netfiles_button.set_name("OPTION_BUTTON")
353                        self.epoptes_button.set_name("OPTION_BUTTON")
354                        self.bar_button.set_name("OPTION_BUTTON")
355                        self.apt_button.set_name("OPTION_BUTTON")
356                        self.kernel_button.set_name("OPTION_BUTTON")
357                        self.pmb_button.set_name("OPTION_BUTTON")
358               
359        #def net_button_clicked
360       
361       
362        def hd_button_clicked(self,widget):
363               
364                change_child=True
365                if self.main_stack.get_visible_child_name()=="netbox":
366                        selected="netbox"
367                if self.main_stack.get_visible_child_name()=="netfilesbox":
368                        selected="netfilesbox"
369                if self.main_stack.get_visible_child_name()=="epoptesbox":
370                        selected="epoptesbox"
371                if self.main_stack.get_visible_child_name()=="startbarbox":
372                        selected="startbarbox"
373                if self.main_stack.get_visible_child_name()=="kernelbox":
374                        selected="kernelbox"
375                if self.main_stack.get_visible_child_name()=="startbarbox":
376                        selected="aptbox"
377                                       
378                if change_child:
379                        self.main_stack.set_visible_child_name("hdbox")
380                        self.net_button.set_name("OPTION_BUTTON")
381                        self.hd_button.set_name("SELECTED_OPTION_BUTTON")
382                        self.netfiles_button.set_name("OPTION_BUTTON")
383                        self.epoptes_button.set_name("OPTION_BUTTON")
384                        self.bar_button.set_name("OPTION_BUTTON")
385                        self.kernel_button.set_name("OPTION_BUTTON")
386                        self.apt_button.set_name("OPTION_BUTTON")
387                        self.pmb_button.set_name("OPTION_BUTTON")
388               
389        #def hd_button_clicked
390       
391       
392        def netfiles_button_clicked(self,widget):
393               
394                change_child=True
395                if self.main_stack.get_visible_child_name()=="netbox":
396                        selected="netbox"
397                if self.main_stack.get_visible_child_name()=="hdbox":
398                        selected="hdbox"
399                if self.main_stack.get_visible_child_name()=="epoptesbox":
400                        selected="epoptesbox"
401                if self.main_stack.get_visible_child_name()=="startbarbox":
402                        selected="startbarbox"
403                if self.main_stack.get_visible_child_name()=="kernelbox":
404                        selected="kernelbox"
405                if self.main_stack.get_visible_child_name()=="startbarbox":
406                        selected="aptbox"
407                if self.main_stack.get_visible_child_name()=="pmbbox":
408                        selected="pmbbox"
409                                       
410                if change_child:
411                        self.main_stack.set_visible_child_name("netfilesbox")
412                        self.net_button.set_name("OPTION_BUTTON")
413                        self.hd_button.set_name("OPTION_BUTTON")
414                        self.netfiles_button.set_name("SELECTED_OPTION_BUTTON")
415                        self.epoptes_button.set_name("OPTION_BUTTON")
416                        self.kernel_button.set_name("OPTION_BUTTON")
417                        self.apt_button.set_name("OPTION_BUTTON")
418                        self.bar_button.set_name("OPTION_BUTTON")
419                        self.pmb_button.set_name("OPTION_BUTTON")
420               
421        #def netfiles_button_clicked
422       
423       
424        def epoptes_button_clicked(self,widget):
425               
426                change_child=True
427                if self.main_stack.get_visible_child_name()=="netbox":
428                        selected="netbox"
429                if self.main_stack.get_visible_child_name()=="netfilesbox":
430                        selected="netfilesbox"
431                if self.main_stack.get_visible_child_name()=="hdbox":
432                        selected="hdbox"
433                if self.main_stack.get_visible_child_name()=="startbarbox":
434                        selected="startbarbox"
435                if self.main_stack.get_visible_child_name()=="kernelbox":
436                        selected="kernelbox"
437                if self.main_stack.get_visible_child_name()=="startbarbox":
438                        selected="aptbox"
439                if self.main_stack.get_visible_child_name()=="pmbbox":
440                        selected="pmbbox"
441                                       
442                if change_child:
443                        self.main_stack.set_visible_child_name("epoptesbox")
444                        self.net_button.set_name("OPTION_BUTTON")
445                        self.hd_button.set_name("OPTION_BUTTON")
446                        self.netfiles_button.set_name("OPTION_BUTTON")
447                        self.epoptes_button.set_name("SELECTED_OPTION_BUTTON")
448                        self.kernel_button.set_name("OPTION_BUTTON")
449                        self.apt_button.set_name("OPTION_BUTTON")
450                        self.bar_button.set_name("OPTION_BUTTON")
451                        self.pmb_button.set_name("OPTION_BUTTON")
452               
453        #def epoptes_button_clicked
454       
455       
456        def bar_button_clicked(self,widget):
457               
458                change_child=True
459                if self.main_stack.get_visible_child_name()=="netbox":
460                        selected="netbox"
461                if self.main_stack.get_visible_child_name()=="netfilesbox":
462                        selected="netfilesbox"
463                if self.main_stack.get_visible_child_name()=="hdbox":
464                        selected="hdbox"
465                if self.main_stack.get_visible_child_name()=="epoptesbox":
466                        selected="epoptesbox"
467                if self.main_stack.get_visible_child_name()=="kernelbox":
468                        selected="kernelbox"
469                if self.main_stack.get_visible_child_name()=="startbarbox":
470                        selected="aptbox"
471                if self.main_stack.get_visible_child_name()=="pmbbox":
472                        selected="pmbbox"
473                                       
474                if change_child:
475                        self.main_stack.set_visible_child_name("startbarbox")
476                        self.net_button.set_name("OPTION_BUTTON")
477                        self.hd_button.set_name("OPTION_BUTTON")
478                        self.netfiles_button.set_name("OPTION_BUTTON")
479                        self.epoptes_button.set_name("OPTION_BUTTON")
480                        self.kernel_button.set_name("OPTION_BUTTON")
481                        self.apt_button.set_name("OPTION_BUTTON")
482                        self.bar_button.set_name("SELECTED_OPTION_BUTTON")
483                        self.pmb_button.set_name("OPTION_BUTTON")
484               
485        #def bar_button_clicked
486
487
488        def kernel_button_clicked(self,widget):
489               
490                change_child=True
491                if self.main_stack.get_visible_child_name()=="netbox":
492                        selected="netbox"
493                if self.main_stack.get_visible_child_name()=="netfilesbox":
494                        selected="netfilesbox"
495                if self.main_stack.get_visible_child_name()=="hdbox":
496                        selected="hdbox"
497                if self.main_stack.get_visible_child_name()=="epoptesbox":
498                        selected="epoptesbox"
499                if self.main_stack.get_visible_child_name()=="startbarbox":
500                        selected="startbarbox"
501                if self.main_stack.get_visible_child_name()=="aptbox":
502                        selected="aptbox"
503                if self.main_stack.get_visible_child_name()=="pmbbox":
504                        selected="pmbbox"
505                                       
506                if change_child:
507                        self.main_stack.set_visible_child_name("kernelbox")
508                        self.net_button.set_name("OPTION_BUTTON")
509                        self.hd_button.set_name("OPTION_BUTTON")
510                        self.netfiles_button.set_name("OPTION_BUTTON")
511                        self.epoptes_button.set_name("OPTION_BUTTON")
512                        self.bar_button.set_name("OPTION_BUTTON")
513                        self.apt_button.set_name("OPTION_BUTTON")
514                        self.kernel_button.set_name("SELECTED_OPTION_BUTTON")
515                        self.pmb_button.set_name("OPTION_BUTTON")
516               
517        #def kernel_button_clicked
518
519
520
521        def apt_button_clicked(self,widget):
522               
523                change_child=True
524                if self.main_stack.get_visible_child_name()=="netbox":
525                        selected="netbox"
526                if self.main_stack.get_visible_child_name()=="netfilesbox":
527                        selected="netfilesbox"
528                if self.main_stack.get_visible_child_name()=="hdbox":
529                        selected="hdbox"
530                if self.main_stack.get_visible_child_name()=="epoptesbox":
531                        selected="epoptesbox"
532                if self.main_stack.get_visible_child_name()=="startbarbox":
533                        selected="startbarbox"
534                if self.main_stack.get_visible_child_name()=="kernelbox":
535                        selected="kernelbox"
536                if self.main_stack.get_visible_child_name()=="pmbbox":
537                        selected="pmbbox"
538                                       
539                if change_child:
540                        self.main_stack.set_visible_child_name("aptbox")
541                        self.net_button.set_name("OPTION_BUTTON")
542                        self.hd_button.set_name("OPTION_BUTTON")
543                        self.netfiles_button.set_name("OPTION_BUTTON")
544                        self.epoptes_button.set_name("OPTION_BUTTON")
545                        self.bar_button.set_name("OPTION_BUTTON")
546                        self.kernel_button.set_name("OPTION_BUTTON")
547                        self.apt_button.set_name("SELECTED_OPTION_BUTTON")
548                        self.pmb_button.set_name("OPTION_BUTTON")
549               
550        #def apt_button_clicked
551
552
553        def pmb_button_clicked(self,widget):
554               
555                change_child=True
556                if self.main_stack.get_visible_child_name()=="netbox":
557                        selected="netbox"
558                if self.main_stack.get_visible_child_name()=="netfilesbox":
559                        selected="netfilesbox"
560                if self.main_stack.get_visible_child_name()=="hdbox":
561                        selected="hdbox"
562                if self.main_stack.get_visible_child_name()=="epoptesbox":
563                        selected="epoptesbox"
564                if self.main_stack.get_visible_child_name()=="startbarbox":
565                        selected="startbarbox"
566                if self.main_stack.get_visible_child_name()=="kernelbox":
567                        selected="kernelbox"
568                if self.main_stack.get_visible_child_name()=="aptbox":
569                        selected="aptbox"
570                                       
571                if change_child:
572                        self.main_stack.set_visible_child_name("pmbbox")
573                        self.net_button.set_name("OPTION_BUTTON")
574                        self.hd_button.set_name("OPTION_BUTTON")
575                        self.netfiles_button.set_name("OPTION_BUTTON")
576                        self.epoptes_button.set_name("OPTION_BUTTON")
577                        self.bar_button.set_name("OPTION_BUTTON")
578                        self.kernel_button.set_name("OPTION_BUTTON")
579                        self.apt_button.set_name("OPTION_BUTTON")
580                        self.pmb_button.set_name("SELECTED_OPTION_BUTTON")
581               
582        #def pmb_button_clicked
583       
584       
585       
586       
587# class FirstAidKit
588
589if __name__=="__main__":
590       
591        lri=FirstAidkit()
592        lri.start_gui()
Note: See TracBrowser for help on using the repository browser.