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

Last change on this file since 8451 was 8451, checked in by daduve, 2 months ago

First aid kit first version

File size: 11.1 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
14
15signal.signal(signal.SIGINT, signal.SIG_DFL)
16gettext.textdomain('first-aid-kit-gui')
17_=gettext.gettext
18
19
20RSRC="./rsrc/"
21
22
23
24class FirstAidKit:
25       
26       
27       
28        def __init__(self):
29               
30                self.core=Core.Core.get_core()
31               
32        #def init
33       
34       
35        def load_gui(self):
36               
37                builder=Gtk.Builder()
38                builder.set_translation_domain('first-aid-kit-gui')
39                ui_path=RSRC + "first-aid-kit.ui"
40                builder.add_from_file(ui_path)
41               
42                self.main_window=builder.get_object("main_window")
43                self.scrolled_window=builder.get_object("scrolledwindow3")
44                self.main_box=builder.get_object("main_box")
45                self.net_button=builder.get_object("net_button")
46                self.hd_button=builder.get_object("hd_button")
47                self.netfiles_button=builder.get_object("netfiles_button")
48                self.epoptes_button=builder.get_object("epoptes_button")
49                self.bar_button=builder.get_object("start_bar_button1")
50                #self.update_button=builder.get_object("update_button")
51               
52               
53                #PANTALLA LOGIN
54                self.login_da_box=builder.get_object("login_da_box")
55                self.login_da=builder.get_object("login_drawingarea")
56               
57                self.login_overlay=Gtk.Overlay()
58                self.login_overlay.add(self.login_da_box)
59               
60                self.login_box=builder.get_object("login_box")
61                self.login_button=builder.get_object("login_button")
62                self.user_entry=builder.get_object("user_entry")
63                self.password_entry=builder.get_object("password_entry")
64                self.login_eb_box=builder.get_object("login_eb_box")
65                self.login_msg_label=builder.get_object("login_msg_label")
66                self.server_ip_entry=builder.get_object("server_ip_entry")
67                self.validate_spinner=builder.get_object("validate_spinner")
68       
69                self.login_overlay.add_overlay(self.login_box)
70                self.login_overlay.show_all()
71               
72               
73                #FIN LOGIN
74               
75               
76                self.separator1=builder.get_object("separator1")
77                self.separator3=builder.get_object("separator3")
78                self.main_button_box=builder.get_object("content_box")
79                self.content_subbox=builder.get_object("content_subbox")
80               
81                self.login_stack=Gtk.Stack()
82                self.login_stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
83                self.login_stack.set_transition_duration(500)
84                self.main_box.pack_start(self.login_stack,True,True,0)
85               
86                # ADD COMPONENTS
87               
88               
89               
90                self.login_stack.add_titled(self.login_overlay,"login","Login")
91                self.login_stack.add_titled(self.main_button_box,"main_button","Main Button Box")
92               
93                self.main_stack=Gtk.Stack()
94                self.main_stack.set_transition_type(Gtk.StackTransitionType.SLIDE_DOWN)
95                self.main_stack.set_transition_duration(500)
96                self.content_subbox.pack_start(self.main_stack,True,True,5)
97               
98                #b=Gtk.Button("HOLA")
99                #self.main_stack.add_titled(b,"hola","hola")
100                self.net_box=self.core.net_box
101                self.main_stack.add_titled(self.net_box,"netbox","NetBox")
102                self.hd_box=self.core.hd_box
103                self.main_stack.add_titled(self.hd_box,"hdbox","HdBox")
104                self.netfiles_box=self.core.netfiles_box
105                self.main_stack.add_titled(self.netfiles_box,"netfilesbox","NetfilesBox")
106                self.epoptes_box=self.core.epoptes_box
107                self.main_stack.add_titled(self.epoptes_box,"epoptesbox","EpoptesBox")
108                self.start_bar_box=self.core.start_bar_box
109                self.main_stack.add_titled(self.start_bar_box,"startbarbox","StartBarBox")
110               
111               
112               
113                self.set_css_info()
114                self.connect_signals()
115                #self.load_values()
116               
117                self.not_validate=True
118               
119                self.main_window.show_all()
120               
121                self.validate_spinner.hide()
122               
123       
124        def start_gui(self):
125        # LANZADOR DE LA GUI
126               
127                GObject.threads_init()
128                Gtk.main()
129               
130        #def start_gui
131       
132
133
134        def show_main_controls(self,status):
135        # OCULTA LOS CONTROLES QUE NO QUIERO QUE SEAN VISIBLES MIENTRAS NO ESTES LOGADO
136       
137                if status:
138                        self.separator1.show()
139                        self.separator3.show()
140                        self.main_button_box.show()
141                else:
142                        self.separator1.show()
143                        self.separator3.hide()
144                        self.main_button_box.hide()
145               
146        #def show_main_controls
147       
148       
149       
150       
151       
152        def connect_signals(self):
153               
154                self.user_entry.connect("activate",self.entries_press_event)
155                self.password_entry.connect("activate",self.entries_press_event)
156                self.server_ip_entry.connect("activate",self.entries_press_event)
157                self.login_button.connect("clicked",self.validate_user)
158                self.main_window.connect("destroy",Gtk.main_quit)
159               
160                self.net_button.connect("clicked",self.net_button_clicked)
161                self.hd_button.connect("clicked",self.hd_button_clicked)
162                self.netfiles_button.connect("clicked",self.netfiles_button_clicked)
163                self.epoptes_button.connect("clicked",self.epoptes_button_clicked)
164                self.bar_button.connect("clicked",self.bar_button_clicked)
165               
166        # def connect_signals
167       
168        def set_css_info(self):
169               
170                self.style_provider=Gtk.CssProvider()
171                f=Gio.File.new_for_path("first-aid-kit.css")
172                self.style_provider.load_from_file(f)
173                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
174                self.main_window.set_name("WINDOW")
175               
176                self.scrolled_window.set_name("MENU_WINDOW")
177                self.login_button.set_name("OPTION_BUTTON")
178                self.net_button.set_name("SELECTED_OPTION_BUTTON")
179                self.netfiles_button.set_name("OPTION_BUTTON")
180                self.hd_button.set_name("OPTION_BUTTON")
181                self.epoptes_button.set_name("OPTION_BUTTON")
182                self.bar_button.set_name("OPTION_BUTTON")
183                self.login_msg_label.set_name("ERROR_LABEL")
184               
185                self.main_button_box.set_name("GREY")
186                #self.content_subbox.set_name("PKG_BOX")
187                       
188        #def set-css_info
189       
190       
191       
192        '''
193        def load_values(self):
194               
195                self.core.n4d.test_var()
196                var_init=self.core.n4d.get_variable()
197                if var_init[0]:
198                        variable=var_init[1]
199                else:
200                        pass
201                        # #### LA VARIABLE NO EXISTE DEBEMOS DE INCIALIZARLA INICIALMENTE PARA QUE NO DE ERROR, AUNQUE CREO QUE ESO YA LO HACE LA API.
202               
203                var={}
204                var=variable
205               
206                self.apt_box.set_info(var)
207                self.deb_box.set_info(var)
208                self.exec_box.set_info(var)
209                self.update_box.set_info(var)
210               
211               
212               
213        #def load_values'''
214       
215       
216        #VALIDACION DEL LOGIN
217       
218        def entries_press_event(self,widget):
219               
220                self.validate_user(None)
221               
222        #def entries_press_event
223       
224        def validate_user(self,widget):
225               
226                self.login_msg_label.hide()
227                self.validate_spinner.show()
228               
229                self.login_button.set_sensitive(False)
230               
231                self.thread=threading.Thread(target=self.validate_user_thread)
232                self.thread.daemon=True
233                self.thread.start()
234
235                GLib.timeout_add(500,self.validate_user_thread_listener)
236               
237               
238        #def validate_user
239       
240        def validate_user_thread(self):
241               
242                user=self.user_entry.get_text()
243                password=self.password_entry.get_text()
244                server_ip=self.server_ip_entry.get_text()
245               
246                # DELETE ME
247                if user=="":
248                        user="netadmin"
249                if password=="":
250                        password="lliurex"
251               
252                self.login_ret=self.core.n4d.validate_user(user,password,server_ip)
253               
254                print ("User: %s - Passwd: %s - Server: %s"%(user,password,server_ip))
255                print self.login_ret
256               
257        #def validate_user_thread
258       
259       
260        def validate_user_thread_listener(self):
261               
262                if self.thread.is_alive():
263                        return True
264               
265                if not self.login_ret[0]:
266                        self.login_msg_label.set_text("%s"%self.login_ret[1])
267                        self.validate_spinner.hide()
268                        self.login_msg_label.show()
269                        self.login_button.set_sensitive(True)
270
271                else:
272                       
273                        #self.load_values()
274                        self.validate_spinner.hide()
275                        self.login_stack.set_visible_child_name("main_button")
276                        self.main_stack.set_visible_child_name("netbox")
277                        #self.login_overlay.hide()
278                        #self.show_main_controls(True)
279                        self.not_validate=False
280               
281                return False
282               
283               
284               
285        #def validate_user_thread
286       
287       
288        def net_button_clicked(self,widget):
289               
290                change_child=True
291                if self.main_stack.get_visible_child_name()=="hdbox":
292                        selected="hd"
293                if self.main_stack.get_visible_child_name()=="netfilesbox":
294                        selected="netfilesbox"
295                if self.main_stack.get_visible_child_name()=="epoptesbox":
296                        selected="epoptesbox"
297                if self.main_stack.get_visible_child_name()=="startbarbox":
298                        selected="startbarbox"
299                                       
300                if change_child:
301                        #self.net_box.set_info(self.core.var)
302                        self.main_stack.set_visible_child_name("netbox")
303                        self.net_button.set_name("SELECTED_OPTION_BUTTON")
304                        self.hd_button.set_name("OPTION_BUTTON")
305                        self.netfiles_button.set_name("OPTION_BUTTON")
306                        self.epoptes_button.set_name("OPTION_BUTTON")
307                        self.bar_button.set_name("OPTION_BUTTON")
308               
309        #def net_button_clicked
310       
311       
312        def hd_button_clicked(self,widget):
313               
314                change_child=True
315                if self.main_stack.get_visible_child_name()=="netbox":
316                        selected="netbox"
317                if self.main_stack.get_visible_child_name()=="netfilesbox":
318                        selected="netfilesbox"
319                if self.main_stack.get_visible_child_name()=="epoptesbox":
320                        selected="epoptesbox"
321                if self.main_stack.get_visible_child_name()=="startbarbox":
322                        selected="startbarbox"
323                                       
324                if change_child:
325                        self.main_stack.set_visible_child_name("hdbox")
326                        self.net_button.set_name("OPTION_BUTTON")
327                        self.hd_button.set_name("SELECTED_OPTION_BUTTON")
328                        self.netfiles_button.set_name("OPTION_BUTTON")
329                        self.epoptes_button.set_name("OPTION_BUTTON")
330                        self.bar_button.set_name("OPTION_BUTTON")
331               
332        #def hd_button_clicked
333       
334       
335        def netfiles_button_clicked(self,widget):
336               
337                change_child=True
338                if self.main_stack.get_visible_child_name()=="netbox":
339                        selected="netbox"
340                if self.main_stack.get_visible_child_name()=="hdbox":
341                        selected="hdbox"
342                if self.main_stack.get_visible_child_name()=="epoptesbox":
343                        selected="epoptesbox"
344                if self.main_stack.get_visible_child_name()=="startbarbox":
345                        selected="startbarbox"
346                                       
347                if change_child:
348                        self.main_stack.set_visible_child_name("netfilesbox")
349                        self.net_button.set_name("OPTION_BUTTON")
350                        self.hd_button.set_name("OPTION_BUTTON")
351                        self.netfiles_button.set_name("SELECTED_OPTION_BUTTON")
352                        self.epoptes_button.set_name("OPTION_BUTTON")
353                        self.bar_button.set_name("OPTION_BUTTON")
354               
355        #def netfiles_button_clicked
356       
357       
358        def epoptes_button_clicked(self,widget):
359               
360                change_child=True
361                if self.main_stack.get_visible_child_name()=="netbox":
362                        selected="netbox"
363                if self.main_stack.get_visible_child_name()=="netfilesbox":
364                        selected="netfilesbox"
365                if self.main_stack.get_visible_child_name()=="hdbox":
366                        selected="hdbox"
367                if self.main_stack.get_visible_child_name()=="startbarbox":
368                        selected="startbarbox"
369                                       
370                if change_child:
371                        self.main_stack.set_visible_child_name("epoptesbox")
372                        self.net_button.set_name("OPTION_BUTTON")
373                        self.hd_button.set_name("OPTION_BUTTON")
374                        self.netfiles_button.set_name("OPTION_BUTTON")
375                        self.epoptes_button.set_name("SELECTED_OPTION_BUTTON")
376                        self.bar_button.set_name("OPTION_BUTTON")
377               
378        #def epoptes_button_clicked
379       
380       
381        def bar_button_clicked(self,widget):
382               
383                change_child=True
384                if self.main_stack.get_visible_child_name()=="netbox":
385                        selected="netbox"
386                if self.main_stack.get_visible_child_name()=="netfilesbox":
387                        selected="netfilesbox"
388                if self.main_stack.get_visible_child_name()=="hdbox":
389                        selected="hdbox"
390                if self.main_stack.get_visible_child_name()=="epoptesbox":
391                        selected="epoptesbox"
392                                       
393                if change_child:
394                        self.main_stack.set_visible_child_name("startbarbox")
395                        self.net_button.set_name("OPTION_BUTTON")
396                        self.hd_button.set_name("OPTION_BUTTON")
397                        self.netfiles_button.set_name("OPTION_BUTTON")
398                        self.epoptes_button.set_name("OPTION_BUTTON")
399                        self.bar_button.set_name("SELECTED_OPTION_BUTTON")
400               
401        #def bar_button_clicked
402       
403       
404       
405       
406# class FirstAidKit
407
408if __name__=="__main__":
409       
410        lri=FirstAidkit()
411        lri.start_gui()
Note: See TracBrowser for help on using the repository browser.