source: lliurex-remote-installer/trunk/fuentes/lliurex-remote-installer-gui.install/usr/share/lliurex-remote-installer/LliurexRemoteInstaller.py @ 3851

Last change on this file since 3851 was 3851, checked in by daduve, 2 years ago

adding sh files

File size: 6.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
11signal.signal(signal.SIGINT, signal.SIG_DFL)
12_=gettext.gettext
13
14
15RSRC="./"
16
17
18
19class LliurexRemoteInstaller:
20       
21       
22        #VALORES DE LOS DICCIONARIOS
23        DEB='deb'
24        APT='apt'
25        SH='sh'
26        LIST='lista'
27        URL='url'
28       
29        def __init__(self):
30               
31                self.core=Core.Core.get_core()
32               
33        #def init
34       
35        def load_gui(self):
36               
37                builder=Gtk.Builder()
38                ui_path=RSRC + "lliurex-remote-installer.ui"
39                builder.add_from_file(ui_path)
40               
41                self.main_window=builder.get_object("main_window")
42                self.main_box=builder.get_object("main_box")
43                self.apt_button=builder.get_object("apt_button")
44                self.debs_button=builder.get_object("debs_button")
45                self.exes_button=builder.get_object("exes_button")
46               
47                self.stack=Gtk.Stack()
48                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_DOWN)
49                self.stack.set_transition_duration(500)
50                self.main_box.pack_start(self.stack,True,True,5)
51               
52               
53                # Add components
54               
55                self.apt_box=self.core.apt_box
56                self.stack.add_titled(self.apt_box,"apt","Apt")
57                self.deb_box=self.core.deb_box
58                self.stack.add_titled(self.deb_box,"debs","Debs")
59                self.exec_box=self.core.exec_box
60                self.stack.add_titled(self.exec_box,"exes","Executables")
61               
62               
63
64                self.set_css_info()
65                self.connect_signals()
66                self.load_values()
67               
68                self.main_window.show_all()
69               
70        #def load_gui
71       
72        def load_values(self):
73               
74               
75               
76                self.core.n4d.test_var()
77                var_init=self.core.n4d.get_variable()
78                if var_init[0]:
79                        variable=var_init[1]
80                else:
81                        pass
82                        # #### LA VARIABLE NO EXISTE DEBEMOS DE INCIALIZARLA INICIALMENTE PARA QUE NO DE ERROR, AUNQUE CREO QUE ESO YA LO HACE LA API.
83               
84                var={}
85                var=variable
86               
87                self.apt_box.set_info(var)
88                self.deb_box.set_info(var)
89                self.exec_box.set_info(var)
90               
91               
92        #def load_values
93       
94        def set_css_info(self):
95               
96                self.style_provider=Gtk.CssProvider()
97                f=Gio.File.new_for_path("lliurex-remote-installer.css")
98                self.style_provider.load_from_file(f)
99                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
100                self.main_window.set_name("WINDOW")
101               
102                self.apt_button.set_name("SELECTED_OPTION_BUTTON")
103                self.debs_button.set_name("OPTION_BUTTON")
104                self.exes_button.set_name("OPTION_BUTTON")
105                       
106        #def set-css_info
107       
108        def connect_signals(self):
109               
110                self.main_window.connect("destroy",Gtk.main_quit)
111                self.apt_button.connect("clicked",self.apt_button_clicked)
112                self.debs_button.connect("clicked",self.debs_button_clicked)
113                self.exes_button.connect("clicked",self.exes_button_clicked)
114               
115        #def connect_signals
116       
117        def start_gui(self):
118               
119                GObject.threads_init()
120                Gtk.main()
121               
122        #def start_gui
123       
124        def apt_button_clicked(self,widget):
125               
126                change_child=True
127                if self.stack.get_visible_child_name()=="debs":
128                        selected="deb"
129                if self.stack.get_visible_child_name()=="exes":
130                        selected="sh"
131                       
132                       
133                if self.stack.get_visible_child_name()=="debs":
134                        if self.deb_box.check_changes():
135                                change_child=self.deb_box.changes_detected_dialog()
136                                if change_child:
137                                        self.deb_box.set_info(self.core.var)
138                                       
139                                        for c in self.deb_box.package_list_box.get_children():
140                                                self.deb_box.package_list_box.remove(c)
141                       
142                                        for x in self.core.var[selected]["packages"]:
143                                                self.deb_box.new_package_button("%s"%x)
144                                               
145                if self.stack.get_visible_child_name()=="exes":
146                        if self.exec_box.check_changes():
147                                change_child=self.exec_box.changes_detected_dialog()
148                                if change_child:
149                                        self.exec_box.set_info(self.core.var)
150                                       
151                                        for c in self.exec_box.package_list_box.get_children():
152                                                self.exec_box.package_list_box.remove(c)
153                       
154                                        for x in self.core.var[selected]["packages"]:
155                                                self.exec_box.new_package_button("%s"%x)
156                                       
157                                       
158                                        #self.apt_box.stack.set_visible_child_name("empty
159                if change_child:
160                        self.apt_box.set_info(self.core.var)
161                        self.stack.set_visible_child_name("apt")
162                        self.apt_button.set_name("SELECTED_OPTION_BUTTON")
163                        self.debs_button.set_name("OPTION_BUTTON")
164                        self.exes_button.set_name("OPTION_BUTTON")
165               
166        #def apt_button_clicked
167       
168        def debs_button_clicked(self,widget):
169               
170                change_child=True
171               
172                if self.stack.get_visible_child_name()=="apt":
173                        if self.apt_box.check_changes():
174                                change_child=self.apt_box.changes_detected_dialog()
175                                if change_child:
176                                        self.apt_box.set_info(self.core.var)
177                                        apt_id=self.apt_box.current_id
178                                        self.apt_box.url_entry.set_text(self.core.var["apt"][apt_id]["url"])
179                                       
180                                        for x in self.apt_box.package_list_box.get_children():
181                                                self.apt_box.package_list_box.remove(x)
182                       
183                                        for x in self.core.var["apt"][apt_id]["packages"]:
184                                                self.apt_box.new_package_button("%s"%x)
185                                               
186                if self.stack.get_visible_child_name()=="exes":
187                        if self.exec_box.check_changes():
188                                change_child=self.exec_box.changes_detected_dialog()
189                                if change_child:
190                                        self.exec_box.set_info(self.core.var)
191                                       
192                                        for c in self.exec_box.package_list_box.get_children():
193                                                self.exec_box.package_list_box.remove(c)
194                       
195                                        for x in self.core.var["sh"]["packages"]:
196                                                self.exec_box.new_package_button("%s"%x)
197                       
198                                       
199                                       
200                                        #self.apt_box.stack.set_visible_child_name("empty")
201                       
202                       
203               
204                if change_child:
205                        self.deb_box.set_info(self.core.var)
206                        self.stack.set_visible_child_name("debs")
207                        self.apt_button.set_name("OPTION_BUTTON")
208                        self.debs_button.set_name("SELECTED_OPTION_BUTTON")
209                        self.exes_button.set_name("OPTION_BUTTON")
210               
211        #def debs_button_clicked
212       
213        def exes_button_clicked(self,widget):
214               
215                change_child=True
216               
217                if self.stack.get_visible_child_name()=="apt":
218                        if self.apt_box.check_changes():
219                                change_child=self.apt_box.changes_detected_dialog()
220                                if change_child:
221                                        self.apt_box.set_info(self.core.var)
222                                        apt_id=self.apt_box.current_id
223                                        self.apt_box.url_entry.set_text(self.core.var["apt"][apt_id]["url"])
224                                       
225                                        for x in self.apt_box.package_list_box.get_children():
226                                                self.apt_box.package_list_box.remove(x)
227                       
228                                        for x in self.core.var["apt"][apt_id]["packages"]:
229                                                self.apt_box.new_package_button("%s"%x)
230                                               
231                if self.stack.get_visible_child_name()=="debs":
232                        if self.deb_box.check_changes():
233                                change_child=self.deb_box.changes_detected_dialog()
234                                if change_child:
235                                        self.deb_box.set_info(self.core.var)
236                                       
237                                        for c in self.deb_box.package_list_box.get_children():
238                                                self.deb_box.package_list_box.remove(c)
239                       
240                                        for x in self.core.var["deb"]["packages"]:
241                                                self.deb_box.new_package_button("%s"%x)
242                       
243                                       
244                                       
245                                        #self.apt_box.stack.set_visible_child_name("empty")
246                       
247                       
248               
249                if change_child:
250               
251                        self.stack.set_visible_child_name("exes")
252                        self.apt_button.set_name("OPTION_BUTTON")
253                        self.debs_button.set_name("OPTION_BUTTON")
254                        self.exes_button.set_name("SELECTED_OPTION_BUTTON")
255               
256        #def exes_button_clicked
257       
258#class LliurexRemoteInstaller
259
260
261if __name__=="__main__":
262       
263        lri=LliurexRemoteInstaller()
264        lri.start_gui()
265       
Note: See TracBrowser for help on using the repository browser.