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

Last change on this file since 8456 was 8456, checked in by daduve, 3 months ago

Adding policy kit

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