source: lliurex-up/trunk/fuentes/lliurex-up-gui/lliurex-up.py @ 3139

Last change on this file since 3139 was 3139, checked in by jrpelegrina, 3 years ago

WIP in new gui. Add init Actions

File size: 42.2 KB
Line 
1import gi
2gi.require_version('Gtk', '3.0')
3gi.require_version('PangoCairo', '1.0')
4gi.require_version('Vte', '2.91')
5
6import cairo
7import os
8import shutil
9import threading
10import ConfigParser
11import platform
12import subprocess
13import sys
14import time
15import commands
16from gi.repository import Gtk, Gdk, GdkPixbuf, GObject, GLib, PangoCairo, Pango, Vte
17
18
19import LliurexUpConnect
20
21import signal
22signal.signal(signal.SIGINT, signal.SIG_DFL)
23
24import gettext
25gettext.textdomain('lliurex-up')
26_ = gettext.gettext
27
28
29
30BASE_DIR="/home/lliurex/svn/lliurex-up/trunk/fuentes/lliurex-up-gui/"
31GLADE_FILE=BASE_DIR+"rsrc/lliurex-up.ui"
32CACHED_ICON=BASE_DIR+"rsrc/cached.png"
33DONE_ICON=BASE_DIR+"/done.png"
34ERROR_ICON=BASE_DIR+"rsrc/error.png"
35
36class Package:
37
38        #def __init__(self,name,version,size,desktop_file,changelog_file):
39        def __init__(self,name,version):
40                self.name=name
41                self.version=version
42                #self.size=size
43                #self.parse_desktop(desktop_file)
44                #self.parse_changelog(changelog_file)
45                self.parse_installed_icon(CACHED_ICON)
46
47        #def__init__
48       
49        def parse_desktop(self,desktop_file):
50               
51                try:
52                        config = ConfigParser.ConfigParser()
53                        config.optionxform=str
54                        config.read(desktop_file)
55                       
56                        if config.has_section("Desktop Entry") and config.has_option("Desktop Entry","Icon"):
57                                self.icon=config.get("Desktop Entry","Icon")
58                        else:
59                                self.icon="package"
60                               
61                except Exception as e:
62                       
63                        self.icon="package"
64                       
65        #def parse_desktop
66       
67        def parse_changelog(self,changelog_file):
68               
69                try:
70                       
71                        f=open(changelog_file,"r")
72                        self.changelog=f.readlines()
73                        f.close()
74                                               
75                except Exception as e:
76                       
77                        self.changelog="Changelog not found"
78
79        #def parse_changelog
80       
81        def parse_installed_icon(self, icon_file):
82               
83                        image=Gtk.Image()
84                        image.set_from_file(icon_file)         
85                        self.installed=image.get_pixbuf()
86                       
87        #def parse_installed_icon
88
89
90class LliurexUp:
91
92        def __init__(self):
93                self.check_root()
94                self.llxup_connect=LliurexUpConnect.LliurexUpConnect()
95                print "[Lliurex-up]: Checking Flavours"
96                #self.checkFlavour=self.llxup_connect.checkFlavour()
97                #self.previousFlavours=self.llxup_connect.previousFlavours
98                #self.start_gui()
99
100                       
101        #def __init__           
102
103       
104        def check_root(self):
105               
106                try:
107                        print "[Lliurex-up]: Checking root"
108                        f=open("/etc/lliurex-up.token","w")
109                        f.close()
110                        os.remove("/etc/lliurex-up.token")
111                except:
112                        print "[Lliurex-up]: No administration privileges"
113                        dialog = Gtk.MessageDialog(None,0,Gtk.MessageType.ERROR, Gtk.ButtonsType.CANCEL, "Lliurex UP")
114                        dialog.format_secondary_text("You need administration privileges to run this application.")
115                        dialog.run()
116                        sys.exit(1)
117               
118        #def check_root
119
120        def start_gui(self):
121               
122                builder=Gtk.Builder()
123               
124                glade_path=GLADE_FILE
125                builder.add_from_file(glade_path)
126
127                self.stack = Gtk.Stack()
128                self.stack.set_transition_duration(1000)
129                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
130
131
132                self.window=builder.get_object("main_window")
133                self.main_box=builder.get_object("main_box")
134                self.pbar=builder.get_object("progressbar")
135                self.pbar_label=builder.get_object("progressbar_label")
136               
137
138                self.cancel_button_box=builder.get_object("cancel_button_box")
139                self.cancel_button_eb=builder.get_object("cancel_button_eventbox")
140                self.cancel_button_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
141                self.cancel_button_eb.connect("button-press-event", self.quit)
142                self.cancel_button_eb.connect("motion-notify-event", self.mouse_over_cancel)
143                self.cancel_button_eb.connect("leave-notify-event", self.mouse_exit_cancel)
144                self.cancel_button_label=builder.get_object("cancel_button_label")
145
146
147                self.gather_box=builder.get_object("gather_box")
148                self.yes_button_box=builder.get_object("yes_button_box")
149                self.yes_button_eb=builder.get_object("yes_button_eventbox")
150                self.yes_button_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
151                self.yes_button_eb.connect("button-release-event", self.yes_button_clicked)
152                self.yes_button_eb.connect("motion-notify-event", self.mouse_over_yes)
153                self.yes_button_eb.connect("leave-notify-event", self.mouse_exit_yes)
154                self.yes_button_label=builder.get_object("yes_button_label")
155
156                self.no_button_box=builder.get_object("no_button_box")
157                self.no_button_eb=builder.get_object("no_button_eventbox")
158                self.no_button_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
159                self.no_button_eb.connect("button-release-event", self.no_button_clicked)
160                self.no_button_eb.connect("motion-notify-event", self.mouse_over_no)
161                self.no_button_eb.connect("leave-notify-event",self.mouse_exit_no)
162                self.no_button_label=builder.get_object("no_button_label")
163                self.gather_logo_box=builder.get_object("gather_logo_box")
164                self.gather_label=builder.get_object("gather_label")
165                self.spinner=builder.get_object("spinner")
166
167                self.update_box=builder.get_object("update_box")
168                self.current_version_label=builder.get_object("current_version_label")
169                self.current_version_label_info=builder.get_object("current_version_info_label")
170                self.version_available_label=builder.get_object("version_available_label")
171                self.version_available_label_info=builder.get_object("version_available_info_label")
172                self.version_update_label=builder.get_object("version_update_label")
173                self.version_update_label_info=builder.get_object("version_update_info_label")
174                self.number_packages_label=builder.get_object("number_packages_label")
175                self.number_packages_label_info=builder.get_object("number_packages_info_label")
176
177                self.size_update_label=builder.get_object("size_update_label")
178                self.size_update_label_info=builder.get_object("size_update_info_label")
179
180                self.view_packages_button_box=builder.get_object("view_packages_button_box")
181                self.view_packages_eb=builder.get_object("view_packages_eventbox")
182                self.view_packages_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
183                self.view_packages_eb.connect("button-release-event", self.view_packages_clicked)
184                self.view_packages_eb.connect("motion-notify-event", self.mouse_over_view_packages)
185                self.view_packages_eb.connect("leave-notify-event", self.mouse_exit_view_packages)
186
187                self.view_packages_label=builder.get_object("view_packages_label")
188
189                self.update_button_box=builder.get_object("update_button_box")
190                self.update_button_eb=builder.get_object("update_button_eventbox")
191                self.update_button_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK)
192                self.update_button_eb.connect("button-release-event", self.upgrade_process)
193                self.update_button_eb.connect("motion-notify-event", self.mouse_over_update_button)
194                self.update_button_eb.connect("leave-notify-event", self.mouse_exit_update_button)
195
196                self.update_button_label=builder.get_object("update_button_label")
197                self.terminal_label=builder.get_object("terminal_label")
198                self.viewport=builder.get_object("viewport")
199                self.terminal_scrolled=builder.get_object("terminalScrolledWindow")
200                self.vterminal=Vte.Terminal()
201                self.vterminal.spawn_sync(
202                        Vte.PtyFlags.DEFAULT,
203                        os.environ['HOME'],
204                        #["/usr/sbin/dpkg-reconfigure", "xdm"],
205                        ["/bin/bash"],
206                        [],
207                        GLib.SpawnFlags.DO_NOT_REAP_CHILD,
208                        None,
209                        None,
210                )
211                font_terminal = Pango.FontDescription("monospace normal 10")
212                self.vterminal.set_font(font_terminal)
213                self.vterminal.set_scrollback_lines(-1)
214                self.terminal_scrolled.add(self.vterminal)
215               
216
217                self.packages_box=builder.get_object("packages_box")
218                self.return_arrow_box=builder.get_object("return_arrow_box")
219                self.return_arrow_eb=builder.get_object("return_arrow_eventbox")
220                self.return_arrow_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK)
221                self.return_arrow_eb.connect("button-release-event", self.arrow_clicked)
222                self.return_arrow_eb.connect("motion-notify-event",self.mouse_over_return_arrow)
223                self.return_arrow_eb.connect("leave-notify-event",self.mouse_exit_return_arrow)
224                self.packages_label=builder.get_object("packages_label")
225                self.packages_tv=builder.get_object("packages_treeview")
226                self.changelog_texview=builder.get_object("changelog_textview")
227
228                #self.packages_store=Gtk.ListStore(str,str,str,GdkPixbuf.Pixbuf)
229                self.packages_store=Gtk.ListStore(str,GdkPixbuf.Pixbuf)
230                self.packages_tv.set_model(self.packages_store)
231                # column=Gtk.TreeViewColumn("")
232                # cell=Gtk.CellRendererPixbuf()
233                # cell.set_property("stock-size",Gtk.IconSize.DIALOG)
234                # column.pack_start(cell,True)
235                # column.add_attribute(cell,"icon-name",0)
236                # self.packages_tv.append_column(column)
237               
238                column=Gtk.TreeViewColumn("Package")
239                cell=Gtk.CellRendererText()
240                column.pack_start(cell,True)
241                column.add_attribute(cell,"markup",0)
242                column.set_expand(True)
243
244               
245                self.packages_tv.append_column(column)
246               
247                # self.packages_tv.connect("button-release-event",self.package_clicked)
248               
249                # column=Gtk.TreeViewColumn("Size")
250                # cell=Gtk.CellRendererText()
251                # cell.set_property("alignment",Pango.Alignment.CENTER)
252                # column.pack_start(cell,False)
253                # column.add_attribute(cell,"markup",1)
254                # self.packages_tv.append_column(column)               
255
256
257                done_icon=Gtk.Image()
258                done_icon.set_from_file(CACHED_ICON)
259                pixbuf=done_icon.get_pixbuf()
260                column=Gtk.TreeViewColumn("Installed")
261                cell=Gtk.CellRendererPixbuf()
262                column.pack_start(cell,True)
263                column.add_attribute(cell,"pixbuf",1)
264                self.packages_tv.append_column(column)
265               
266                # self.changelog_textview=builder.get_object("changelog_textview")
267                # self.changelog_label=builder.get_object("changelog_label")
268
269
270                self.stack.add_titled(self.gather_box,"gather","Gather")
271                self.stack.add_titled(self.update_box,"update", "Update")
272                self.stack.add_titled(self.packages_box, "packages", "Packages")
273
274                self.main_box.pack_start(self.stack,True,False,5)
275
276                self.window.show_all()
277                self.terminal_scrolled.hide()
278                self.viewport.hide()
279                self.terminal_label.hide()
280                self.cancel_button_box.hide()
281                self.yes_button_box.hide()
282                self.no_button_box.hide()
283
284                self.pbar_label.show()
285                self.pbar.show()
286               
287                self.window.connect("destroy",self.quit)
288               
289                self.set_css_info()
290
291                msg_gather="<span><b>"+_("Checking system")+"</b></span>"
292                self.gather_label.set_markup(msg_gather)
293                GLib.timeout_add(100,self.pulsate_checksystem)
294
295                self.initactions_process_t=threading.Thread(target=self.initActions_process)
296                self.check_lliurexup_t=threading.Thread(target=self.check_lliurexup_version)
297                self.install_lliurexup_t=threading.Thread(target=self.install_lliurexup)
298                self.check_mirror_t=threading.Thread(target=self.check_mirror)
299                #self.wait_response_t=threading.Thread(target=self.wait_response)
300                self.execute_lliurexmirror_t=threading.Thread(target=self.execute_lliurexmirror)
301                self.get_lliurexversionlocal_t=threading.Thread(target=self.get_lliurexversionlocal)
302                self.get_lliurexversionnet_t=threading.Thread(target=self.get_lliurexversionnet)
303                self.checkInitialFlavourToInstall_t=threading.Thread(target=self.checkInitialFlavourToInstall)
304                self.gather_packages_t=threading.Thread(target=self.gather_packages)
305                self.preactions_process_t=threading.Thread(target=self.preactions_process)
306                self.update_process_t=threading.Thread(target=self.update_process)
307                self.checkFinalFlavourToInstall_t=threading.Thread(target=self.checkFinalFlavourToInstall)
308                self.postactions_process_t=threading.Thread(target=self.postactions_process)
309
310                self.initactions_process_t.daemon=True
311                self.check_lliurexup_t.daemon=True
312                self.install_lliurexup_t.daemon=True
313                self.check_mirror_t.daemon=True
314                #self.wait_response_t.daemon=True
315                self.execute_lliurexmirror_t.daemon=True
316                self.get_lliurexversionlocal_t.daemon=True
317                self.get_lliurexversionnet_t.daemon=True
318                self.checkInitialFlavourToInstall_t.daemon=True
319                self.gather_packages_t.daemon=True
320                self.preactions_process_t.daemon=True
321                self.update_process_t.daemon=True
322                self.checkFinalFlavourToInstall_t.daemon=True
323                self.postactions_process_t.daemon=True
324
325                self.initactions_process_t.done=False
326                self.check_lliurexup_t.done=False
327                self.install_lliurexup_t.done=False
328                self.check_mirror_t.done=False
329                #self.wait_response_t.done=False
330                self.execute_lliurexmirror_t.done=False
331                self.get_lliurexversionlocal_t.done=False
332                self.get_lliurexversionnet_t.done=False
333                self.checkInitialFlavourToInstall_t.done=False
334                self.gather_packages_t.done=False
335                self.preactions_process_t.done=False
336                self.update_process_t.done=False
337                self.checkFinalFlavourToInstall_t.done=False
338                self.postactions_process_t.done=False
339               
340                self.initactions_process_t.launched=False
341                self.check_lliurexup_t.launched=False
342                self.install_lliurexup_t.launched=False
343                self.check_mirror_t.launched=False
344                #self.wait_response_t.launched=False
345                self.execute_lliurexmirror_t.launched=False
346                self.get_lliurexversionlocal_t.launched=False
347                self.get_lliurexversionnet_t.launched=False
348                self.checkInitialFlavourToInstall_t.launched=False
349                self.gather_packages_t.launched=False
350                self.preactions_process_t.launched=False
351                self.update_process_t.launched=False
352                self.checkFinalFlavourToInstall_t.launched=False
353                self.postactions_process_t.launched=False
354               
355                self.spinner.start()
356                self.package_list=[]
357                self.max_seconds=5.0
358                self.current_second=0
359                self.number_process=8
360
361                GObject.threads_init()
362                Gtk.main()
363
364        #def start_gui
365       
366        def set_css_info(self):
367       
368                css = """
369
370
371                #WHITE_BACKGROUND {
372                        background-image:-gtk-gradient (linear, left top, left bottom, from (#ffffff),  to (#ffffff));;
373               
374                }
375
376                #BUTTON_LABEL{
377                        color:white;
378                        font: Roboto 10;
379                }
380
381                #DISABLED_BUTTON_OVER{
382                        background-image:-gtk-gradient (linear, left top, left bottom, from (#888888),  to (#888888));;
383                }
384               
385                #DISABLED_BUTTON{
386                        background-image:-gtk-gradient (linear, left top, left bottom, from (#666666),  to (#666666));;
387                }
388               
389                #CANCEL_BUTTON{
390                        background-image:-gtk-gradient (linear, left top, left bottom, from (#D32F2F),  to (#D32F2F));;
391                }
392               
393                #CANCEL_BUTTON_OVER{
394                        background-image:-gtk-gradient (linear, left top, left bottom, from (#F44336),  to (#F44336));;
395                }
396
397                #BUTTON_COLOR {
398                        background-image:-gtk-gradient (linear, left top, left bottom, from (#448AFF),  to (#448AFF));;
399               
400                }
401               
402                #BUTTON_OVER_COLOR {
403                        background-image:-gtk-gradient (linear, left top, left bottom, from (#449fff),  to (#449fff));;
404                       
405               
406                }
407
408                #UPDATE_BUTTON_LABEL{
409                        color:white;
410                        font: Roboto 11;
411                }
412               
413                #UPDATE_CORRECT_BUTTON_COLOR {
414                        background-image:-gtk-gradient (linear, left top, left bottom, from (#43A047),  to (#43A047));;
415               
416                }
417
418                #UPDATE_OVER_COLOR {
419                        background-image:-gtk-gradient (linear, left top, left bottom, from (#53b757),  to (#53b757));;
420               
421                }
422
423
424                #UPDATE_ERROR_BUTTON_COLOR {
425                        background-image:-gtk-gradient (linear, left top, left bottom, from (#D32F2F),  to (#D32F2F));;
426               
427                }
428
429                #UPDATE_LAUNCHED_OVER_COLOR {
430                        background-image:-gtk-gradient (linear, left top, left bottom, from (#F44336),  to (#F44336));;
431               
432                }
433
434                #UPDATE_BUTTON_LAUNCHED_COLOR {
435                        background-image:-gtk-gradient (linear, left top, left bottom, from (#bdbdbd), to (#bdbdbd));;
436
437                }
438                               
439                #GATHER_ICON_COLOR {
440                        background-image:-gtk-gradient (linear, left top, left bottom, from (#b0bec5),  to (#b0bec5));;
441               
442                }
443               
444               
445                #BLUE_FONT {
446                        color: #3366cc;
447                        font: Roboto 10;
448                       
449                }       
450               
451
452                #CHANGELOG_FONT {
453                        color: #3366cc;
454                        font: Roboto 11;
455                       
456                }
457
458                #LABEL_OPTION{
459               
460                        color: #808080;
461                        font: Roboto 11;
462                }
463
464                #ERROR_FONT {
465                        color: #CC0000;
466                        font: Roboto 11;
467                }
468               
469                #DISABLED_BUTTON{
470                        background-image:-gtk-gradient (linear, left top, left bottom, from (#666666),  to (#666666));;
471                }
472                """
473
474                self.style_provider=Gtk.CssProvider()
475                self.style_provider.load_from_data(css)
476                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
477               
478                self.window.set_name("WHITE_BACKGROUND")
479                self.update_box.set_name("WHITE_BACKGROUND")
480                self.gather_box.set_name("WHITE_BACKGROUND")
481                self.packages_box.set_name("WHITE_BACKGROUND")
482                self.gather_label.set_name("CHANGELOG_FONT")
483                self.pbar_label.set_name("CHANGELOG_FONT")
484
485                self.yes_button_box.set_name("BUTTON_COLOR")
486                self.yes_button_label.set_name("BUTTON_LABEL")
487
488                self.no_button_box.set_name("BUTTON_COLOR")
489                self.no_button_label.set_name("BUTTON_LABEL")
490
491                self.view_packages_button_box.set_name("BUTTON_COLOR")
492                self.view_packages_label.set_name("BUTTON_LABEL")
493
494                self.cancel_button_box.set_name("BUTTON_COLOR")
495                self.cancel_button_label.set_name("BUTTON_LABEL")       
496
497                self.current_version_label.set_name("LABEL_OPTION")
498                self.version_available_label.set_name("LABEL_OPTION")
499                self.version_update_label.set_name("LABEL_OPTION")     
500                self.number_packages_label.set_name("LABEL_OPTION")
501                self.size_update_label.set_name("LABEL_OPTION")
502                self.update_button_label.set_name("UPDATE_BUTTON_LABEL")
503                self.update_button_box.set_name("BUTTON_COLOR")
504                self.terminal_label.set_name("CHANGELOG_FONT")
505
506
507                self.packages_label.set_name("LABEL_OPTION")
508                #self.changelog_label.set_name("LABEL_OPTION")
509                self.changelog_texview.set_name("CHANGELOG_FONT")
510                self.return_arrow_box.set_name("BUTTON_COLOR")
511               
512        #def set_css_info       
513
514
515        def pulsate_checksystem(self):
516
517                #self.pbar.pulse()
518
519                if not self.initactions_process_t.launched:
520                        print "[Lliurex-up]: Exec Init-Actions"
521                        self.initactions_process_t.start()
522                        self.initactions_process_t.launched=True
523                        self.show_number_process_executing(1,"")
524                # if not self.check_lliurexup_t.launched:
525                #       print "[Lliurex-up]: Checking Lliurex-up version"
526                #       self.check_lliurexup_t.start()
527                #       self.check_lliurexup_t.launched=True
528                #       self.show_number_process_executing(1,"")
529
530                if self.initactions_process_t.done:
531                        if  not self.check_lliurexup_t.is_alive() and not self.check_lliurexup_t.launched:
532                                print "[Lliurex-up]: Checking Lliurex-up version"
533                                msg_gather="<span><b>"+_("Checking for new version of lliurex-up")+"</b></span>"
534                                self.gather_label.set_markup(msg_gather)
535                                self.check_lliurexup_t.start()
536                                self.check_lliurexup_t.launched=True
537                                self.show_number_process_executing(2,"")
538
539
540                        if  self.check_lliurexup_t.done:
541                                if not self.is_lliurexup_updated:
542                                        if  not self.install_lliurexup_t.is_alive() and not self.install_lliurexup_t.launched:
543                                                print "[Lliurex-up]: Updating Lliurex-up"
544                                                msg_gather="<span><b>"+_("Updating Lliurex-up")+"</b></span>"
545                                                self.gather_label.set_markup(msg_gather)
546                                                self.install_lliurexup_t.start()
547                                                self.install_lliurexup_t.launched=True
548                                                self.show_number_process_executing(3,"")
549
550                                        else:
551                                                if self.install_lliurexup_t.done:
552                                                        print "[Lliurex-up]: Reboot Lliurex-up"
553                                                        #msg_gather="<span><b>"+_("Lliurex-up is now updated and will be reboot")+"</b></span>"
554                                                        #self.pbar.hide()
555                                                        #self.gather_label.set_markup(msg_gather)
556                                                        #self.t=threading.Thread(target=self.reboot_lliurexup)
557                                                        self.pbar_label.hide()
558                                                        self.msg_wait="<span><b>"+_("Lliurex-up is now updated and will be reboot in %s seconds...")+"</b></span>"
559                                                        GLib.timeout_add(10,self.wait_to_reboot)
560                                                        #self.t.daemon=True
561                                                        #self.t.start()
562                                                        return False
563                                else:
564                                       
565                                        if not self.check_mirror_t.is_alive() and not self.check_mirror_t.launched:
566                                                print "[Lliurex-up]: Checking if mirror exist"
567                                                msg_gather="<span><b>"+_("Checking if mirror exist and there is updated")+"</b></span>"
568                                                self.gather_label.set_markup(msg_gather)
569                                                self.check_mirror_t.start()
570                                                self.check_mirror_t.launched=True
571                                                self.show_number_process_executing(4,"")
572
573
574                                       
575                                        if      self.check_mirror_t.done:
576                                                is_mirror_running=self.llxup_connect.lliurexMirrorIsRunning()
577
578                                                if not self.is_mirror_updated:
579                                                        if not is_mirror_running:
580                                                                print "[Lliurex-up]: Asking if mirror will be update"
581                                                                self.yes_button_box.show()
582                                                                self.no_button_box.show()
583                                                                self.pbar.hide()
584                                                                self.pbar_label.hide()
585                                                                #self.spinner.stop()
586                                                                msg_gather="<span><b>"+_("Your mirror is not update.Do you want to update it?")+"</b></span>"
587                                                                self.gather_label.set_markup(msg_gather)
588                                                                #GLib.timeout_add(100,self.pulsate_wait_response)
589                                                                return False
590
591                                                        else:
592                                                                self.mirror_running_msg()
593                                                                return False
594
595                                                else:   
596                                                        if is_mirror_running:
597                                                                self.mirror_running_msg()
598                                                                return False
599                                                        else:   
600                                                                print "[Lliurex-up]: Nothing to do with mirror"
601                                                                GLib.timeout_add(100,self.pulsate_get_info)
602                                                                return False
603                                               
604
605                if self.initactions_process_t.is_alive():
606                        return True                                     
607
608                if  self.check_lliurexup_t.launched:
609                        if self.check_lliurexup_t.is_alive():
610                                return True
611
612                if self.install_lliurexup_t.launched: 
613                        if self.install_lliurexup_t.is_alive():
614                                return True     
615                                       
616                if self.check_mirror_t.launched:
617                        if self.check_mirror_t.is_alive():
618                                return True
619
620               
621        #def pulsate_checksystem       
622
623        def wait_to_reboot(self):
624
625                csecond=int(self.max_seconds+1-self.current_second)
626                self.gather_label.set_markup(self.msg_wait%csecond)
627                self.pbar.set_fraction(self.current_second/self.max_seconds)
628
629                self.current_second+=0.01
630
631                if self.current_second>=self.max_seconds:
632                        os.execl(sys.executable, sys.executable, *sys.argv)     
633                        return False
634                else:
635                        return True
636
637        #def wait_to_reboot
638
639        # def reboot_lliurexup(self):
640
641        #       time.sleep(5)
642        #       os.execl(sys.executable, sys.executable, *sys.argv)     
643
644        # #def reboot_me       
645
646
647        def initActions_process(self):
648                time.sleep(5)
649                self.llxup_connect.initActionsScript()
650                self.initactions_process_t.done=True
651       
652        def check_lliurexup_version(self):
653
654                #time.sleep(5) 
655                self.is_lliurexup_updated=self.llxup_connect.isLliurexUpIsUpdated()
656                self.check_lliurexup_t.done=True
657               
658        #def check_lliurexup_version   
659               
660        def install_lliurexup(self):
661
662                self.install=self.llxup_connect.installLliurexUp()
663                self.install_lliurexup_t.done=True
664
665        #def install_lliurexup 
666
667               
668        def check_mirror(self):
669
670                self.is_mirror_updated=self.llxup_connect.lliurexMirrorIsUpdated()
671                self.check_mirror_t.done=True
672       
673        #def check_mirror       
674
675        def no_button_clicked(self,widget,event):
676               
677                #self.response=0
678                self.pbar.show()
679                self.pbar_label.show() 
680                GLib.timeout_add(100,self.pulsate_get_info)
681                self.yes_button_box.hide()
682                self.no_button_box.hide()
683                log_msg="Update lliurex-mirror: No"
684                self.llxup_connect.log(log_msg)
685
686        #def def no_button_clicked
687               
688        def yes_button_clicked(self,widget,event):
689       
690                #self.response=1
691                self.pbar.show()
692                self.pbar_label.show()
693                print "[Lliurex-up]: Updating mirror"
694                self.updated_percentage(0)
695                #self.spinner.start()
696                self.yes_button_box.hide()
697                self.no_button_box.hide()
698                #msg_gather="<span><b>"+_("Mirror is being updated. The process may take several minutes")+"</b></span>"
699                #self.gather_label.set_markup(msg_gather)
700                self.execute_lliurexmirror_t.start()
701                self.mirror_running_msg()
702                #GLib.timeout_add(1000,self.pulsate_updating_mirror)
703                log_msg="Update lliurex-mirror: Yes"
704                print log_msg
705                self.llxup_connect.log(log_msg)
706                       
707        #def yes_button_clicked         
708
709        #def check_mirror
710
711        # def pulsate_wait_response(self):
712
713        #       if self.response==0:
714        #               GLib.timeout_add(100,self.pulsate_get_info)
715
716        #               self.yes_button_box.hide()
717        #               self.no_button_box.hide()
718        #               return False
719
720        #       if self.response==1:
721        #               self.pbar_label.show()
722        #               self.updated_percentage(0)
723        #               self.spinner.start()
724        #               self.yes_button_box.hide()
725        #               self.no_button_box.hide()
726        #               msg_gather="<span><b>"+_("Updating mirror")+"</b></span>"
727        #               self.gather_label.set_markup(msg_gather)
728        #               self.execute_lliurexmirror_t.start()
729        #               GLib.timeout_add(1000,self.pulsate_updating_mirror)
730                       
731        #               return False
732               
733        #       self.pbar.pulse()
734        #       return True
735
736        #def yes_button_clicked
737
738        def pulsate_updating_mirror(self):
739
740                self.is_mirror_running=self.llxup_connect.lliurexMirrorIsRunning()
741
742                if self.is_mirror_running or self.execute_lliurexmirror_t.is_alive():
743                        mirror_percentage=self.llxup_connect.getPercentageLliurexMirror()
744                        self.updated_percentage(mirror_percentage)
745                        return True
746               
747                else:
748                        #self.spinner.stop()
749                        #self.pbar_label.hide()
750                        GLib.timeout_add(100,self.pulsate_get_info)
751                        return False   
752
753        #def pulsate_updating_mirro             
754
755        def execute_lliurexmirror(self):
756               
757                commands.getoutput('/usr/sbin/lliurex-mirror-gui')
758
759        #def def execute_lliurexmirror 
760
761        def mirror_running_msg(self):
762
763                self.spinner.start()
764                msg_gather="<span><b>"+_("Mirror is being updated. The process may take several minutes")+"</b></span>"
765                self.gather_label.set_markup(msg_gather)
766                GLib.timeout_add(1000,self.pulsate_updating_mirror)
767
768        #def mirror_running_msg
769
770
771        def pulsate_get_info(self):
772
773                #self.pbar.pulse()
774 
775                if not self.get_lliurexversionlocal_t.launched:
776                        print "[Lliurex-up]: Checking LliurexVersion from local repository "
777                        msg_gather="<span><b>"+_("Checking new version to update")+"</b></span>"
778                        self.gather_label.set_markup(msg_gather)
779                        self.get_lliurexversionlocal_t.start()
780                        self.get_lliurexversionlocal_t.launched=True
781                        self.show_number_process_executing(5,"")
782
783
784
785                if self.get_lliurexversionlocal_t.done:
786                        if not self.get_lliurexversionnet_t.is_alive() and not self.get_lliurexversionnet_t.launched:
787                                print "[Lliurex-up]: Checking LliurexVersion from Lliurex net"
788                                msg_gather="<span><b>"+_("Checking new version available")+"</b></span>"
789                                self.gather_label.set_markup(msg_gather)
790                                self.get_lliurexversionnet_t.start()   
791                                self.get_lliurexversionnet_t.launched=True
792                                self.show_number_process_executing(6,"")
793
794
795
796                        if self.get_lliurexversionnet_t.done:
797
798                                if not self.checkInitialFlavourToInstall_t.is_alive() and not self.checkInitialFlavourToInstall_t.launched:
799                                        print "[Lliurex-up]: Checking if installation of flavour is required"
800                                        msg_gather="<span><b>"+_("Checking if installation of flavour is required")+"</b></span>"
801                                        self.gather_label.set_markup(msg_gather)
802                                        self.checkInitialFlavourToInstall_t.start()
803                                        self.checkInitialFlavourToInstall_t.launched=True
804                                        self.show_number_process_executing(7,"")
805
806
807
808                                if self.checkInitialFlavourToInstall_t.done:
809
810                                        if not self.gather_packages_t.is_alive() and not self.gather_packages_t.launched:
811                                                print "[Lliurex-up]: Checking for new updates"
812                                                msg_gather="<span><b>"+_("Checking for new updates")+"</b></span>"
813                                                self.gather_label.set_markup(msg_gather)
814                                                self.gather_packages_t.start()
815                                                self.gather_packages_t.launched=True
816                                                self.show_number_process_executing(8,"")
817
818
819                                        if self.gather_packages_t.done:
820                                                self.spinner.stop()
821                                                self.pbar.hide()
822                                                self.pbar_label.hide()
823                                                self.cancel_button_box.show()   
824
825                                                if not self.incorrect_flavours:
826                                                        if len(self.packages)==0:
827                                                                system_update=True
828                                                                if self. version_update["candidate"]!=None:
829
830                                                                        if self.version_update["installed"]!=self.version_update["candidate"]:
831                                                                                system_update=False
832                                                                                                                       
833                                                                else:
834                                                                        if self.version_update["installed"]!=self.version_available:
835                                                                                system_update=False
836
837                                                                if not system_update:
838                                                                                self.gather_label.set_name("ERROR_FONT")
839                                                                                msg_gather="<span><b>"+_("Updated abort. An error occurred checking new updates")+"</b></span>"
840                                                                                self.gather_label.set_markup(msg_gather)
841                                                                                print "[Lliurex-up]: Error in checking new updates"
842                                                                                return False
843                                                                else:
844                                                                        msg_gather="<span><b>"+_("Your system is update")+"</b></span>"
845                                                                        self.gather_label.set_markup(msg_gather)
846                                                                        print "[Lliurex-up]: System update. Nothing to do"
847                                                                        return False
848                                                                                                       
849                                                        else:
850                                                                print "[Lliurex-up]: System nor update" 
851
852                                                                #self.requires_installing_metapackage()
853                                                                self.parse_packages_updated()
854                                                                self.populate_packages_tv()
855                                                                self.get_update_summary()
856                                                                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
857                                                                self.stack.set_visible_child_name("update")     
858                                                                return False
859                                                else:
860                                                        self.gather_label.set_name("ERROR_FONT")
861                                                        msg_gather="<span><b>"+_("Updated abort for incorrect flavours detected in update")+"</b></span>"
862                                                        self.gather_label.set_markup(msg_gather)
863                                                        #self.pbar.hide()
864                                                        print "[Lliurex-up]: Sytem update. Nothing to do"
865                                                        return False                                                   
866               
867
868                if self.get_lliurexversionlocal_t.launched:
869                        if self.get_lliurexversionlocal_t.is_alive():
870                                return True     
871
872                if self.get_lliurexversionnet_t.launched:
873                        if self.get_lliurexversionnet_t.is_alive():
874                                return True                             
875
876                if self.checkInitialFlavourToInstall_t.launched:
877                        if self.checkInitialFlavourToInstall_t.is_alive():
878                                return True
879
880                if self.gather_packages_t.launched:
881                        if self.gather_packages_t.is_alive():
882                                return True
883
884        #def pulsate_get_info   
885
886        def get_lliurexversionlocal(self):
887                self.version_update=self.llxup_connect.getLliurexVersionLocal()
888                self.get_lliurexversionlocal_t.done=True
889
890        #def get_lliurexversionlocal
891       
892        def get_lliurexversionnet(self):
893                self.version_available=self.llxup_connect.getLliurexVersionNet()
894                self.get_lliurexversionnet_t.done=True
895
896
897        #def get_lliurexversionlocal   
898       
899        def checkInitialFlavourToInstall(self):
900
901                self.flavourToInstall=self.llxup_connect.targetMetapackage
902
903                if self.flavourToInstall == None:
904                        self.flavourToInstall=self.llxup_connect.requiresInstallFlavour()
905                        if self.flavourToInstall != None:
906                                print self.flavourToInstall
907                                print "[Lliurex-up]: Installation of flavour is required"
908                                is_flavour_installed=self.llxup_connect.installInitialFlavour(self.flavourToInstall)   
909                                self.checkInitialFlavourToInstall_t.done=True   
910                        else:
911                                print "[Lliurex-up]: Installation of flavour is not required"
912                                self.checkInitialFlavourToInstall_t.done=True   
913
914                else:
915                        print self.flavourToInstall
916                        print "[Lliurex-up]: Installation of flavour is required"
917                        is_flavour_installed=self.llxup_connect.installInitialFlavour(self.flavourToInstall)   
918                        self.checkInitialFlavourToInstall_t.done=True                   
919
920        #def checkInitialFlavourToInstall(
921       
922        def gather_packages(self):
923
924                self.packages=self.llxup_connect.getPackagesToUpdate()
925                self.incorrect_flavours=self.llxup_connect.checkIncorrectFlavours()
926                self.gather_packages_t.done=True
927
928               
929        #def gather_info
930
931
932        def get_update_summary(self):
933
934                #self.version_available=self.llxup_connect.getLliurexVersionNet()
935                msg_current_version_info="<span foreground='#3366cc'><b>"+ self.version_update["installed"]+"</b></span>"
936
937                if self.version_available==None:
938                        if 'client' in self.llxup_connect.previousFlavours or self.flavourToInstall=='client':
939                                msg_version_available_info="<span foreground='#3366cc'><b>"+_("Info not available for clients")+"</b></span>"
940
941                        else:
942                                msg_version_available_info="<span foreground='#CC0000'><b>"+_("Info not available. Check conexion to lliurex.net")+"</b></span>"
943
944                else:
945                        #self.version_available="16.160920"     
946                        msg_version_available_info="<span foreground='#3366cc'><b>"+self.version_available+"</b></span>"
947
948
949                if self.version_update==None:
950                        msg_version_update_info="<span foreground='#3366cc'><b>"+_("Info not available")+"</b></span>"
951               
952                else:
953                        msg_version_update_info="<span foreground='#3366cc'><b>"+self.version_update["candidate"]+"</b></span>"
954       
955                self.number_pkg=len(self.packages)
956                self.size_update_label.hide()
957                #self.size_update="100 Mb"
958
959
960                msg_number_info="<span foreground='#3366cc'><b>"+str(self.number_pkg)+"</b></span>"
961                #msg_size="<span foreground='#3366cc'><b>"+self.size_update+"</b></span>"
962               
963                self.current_version_label_info.set_markup(msg_current_version_info)
964                self.version_available_label_info.set_markup(msg_version_available_info)
965                self.version_update_label_info.set_markup(msg_version_update_info)
966                self.number_packages_label_info.set_markup(msg_number_info)
967                #self.size_update_label_info.set_markup(msg_size)
968               
969        #def get_update_summary
970               
971        def updated_percentage(self,completed):
972
973                percentage=completed/100.0
974
975                self.pbar.set_fraction(percentage)
976               
977                msg_value=format(completed,'.0f')
978               
979                msg_percentage="<span><b>"+msg_value+"%"+"</b></span>"
980                self.pbar_label.set_markup(msg_percentage)
981               
982               
983        #def updated_percentage
984               
985        def show_number_process_executing(self, execprocess, processname):
986
987                self.total_process=self.number_process+1.0
988                self.pbar.set_fraction(execprocess/self.total_process)
989                if processname =="":
990                        msg_pbar="Executing process: " + str(execprocess) + " of " + str(self.number_process)
991                else:
992                        msg_pbar="Executing process: " + str(execprocess) + " of " + str(self.number_process) + ". " + processname
993       
994                msg_pbar="<span><b>"+msg_pbar+"</b></span>" 
995                self.pbar_label.set_markup(msg_pbar)
996
997        #def show_number_process_executing
998       
999        def populate_packages_tv(self):
1000               
1001                for package in self.package_list:
1002                        #self.packages_store.append((package.icon,"<span font='Roboto'><b>"+package.name+"</b></span>\n"+"<span font='Roboto' size='small'>"+package.version+"</span>","<span font='Roboto' size='large'><b>"+package.size+"</b></span>",package.installed))
1003                        self.packages_store.append(("<span font='Roboto'><b>"+package.name+"</b></span>\n"+"<span font='Roboto' size='small'>"+package.version+"</span>",package.installed))
1004                       
1005                #print len(self.packages_store)
1006               
1007        #def populate_packages_tv
1008       
1009        def parse_packages_updated(self):
1010               
1011                       
1012                for item in self.packages:
1013                        tmp=item.split(";")
1014                        if len(tmp)>1:
1015                                pack=Package(tmp[0],tmp[1])
1016                                self.package_list.append(pack)
1017
1018
1019        #def parse_simulate_output
1020       
1021        def package_clicked(self,x,y):
1022               
1023                selection=self.packages_tv.get_selection()
1024                model,iter=selection.get_selected()
1025                name=self.packages_store.get_value(iter,1)
1026                name=name[name.find("<b>")+3:name.find("</b>")]
1027                               
1028                for package in self.package_list:
1029                       
1030                        if package.name==name:
1031                                self.changelog_textview.get_buffer().set_text("".join(package.changelog))
1032                               
1033                                break
1034       
1035        #def package_clicked                   
1036
1037        def upgrade_process(self,widget, event=None):
1038
1039                self.cancel_button_box.hide()
1040                self.number_process=4
1041                self.msg_upgrade_running=_("The update process is running. Wait a moment please")
1042
1043                if not self.preactions_process_t.launched:
1044
1045                        self.pbar.show()
1046                        #self.pbar.pulse()
1047                        self.viewport.show()
1048                        self.terminal_scrolled.show()
1049                        self.terminal_label.show()
1050                        self.msg_terminal=_("Update process details")
1051                        self.terminal_label.set_markup(self.msg_terminal)
1052                        GLib.timeout_add(100,self.dist_upgrade)
1053
1054                        # self.preactions_process_t.start()
1055                        # self.preactions_process_t.launched=True
1056
1057
1058                else:
1059                        if not self.postactions_process_t.done:
1060                                self.terminal_label.set_name("ERROR_FONT")
1061                                self.terminal_label.set_markup(self.msg_upgrade_running)
1062
1063        #def upgrade_process
1064       
1065        def dist_upgrade(self):
1066
1067                if not self.preactions_process_t.launched:
1068                        print "[Lliurex-up]: Executing pre-actions"
1069                        self.pbar_label.show()
1070
1071                        self.preactions_process_t.start()
1072                        self.preactions_process_t.launched=True
1073                        self.show_number_process_executing(1,"Pre-actions process")
1074                        self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
1075
1076                else:
1077
1078                        if self.preactions_process_t.done:
1079                                if not self.update_process_t.is_alive() and not self.update_process_t.launched:
1080                                        print "[Lliurex-up]: Executing dist-upgrade"
1081                                        self.update_process_t.start()
1082                                        self.update_process_t.launched=True
1083                                        self.show_number_process_executing(2,"Dist-upgrade process")
1084
1085                               
1086                                if self.update_process_t.done:
1087                                        if not self.checkFinalFlavourToInstall_t.is_alive() and not self.checkFinalFlavourToInstall_t.launched:
1088                                                print "[Lliurex-up]: Checking Final Flavour"
1089                                                self.checkFinalFlavourToInstall_t.start()
1090                                                self.checkFinalFlavourToInstall_t.launched=True
1091                                                self.show_number_process_executing(3,"Checking Flavour")
1092                                                                               
1093                                       
1094                                        if self.checkFinalFlavourToInstall_t.done:                               
1095
1096                                                if not self.postactions_process_t.is_alive() and not self.postactions_process_t.launched:
1097                                                        print "[Lliurex-up]: Executing post-actions"
1098                                                        self.postactions_process_t.start()
1099                                                        self.postactions_process_t.launched=True
1100                                                        self.show_number_process_executing(4,"Post-actions process")
1101
1102                                               
1103                                                if self.postactions_process_t.done:
1104                                                        self.cancel_button_box.show()
1105                                                        self.pbar.hide()
1106                                                        self.pbar_label.hide()
1107                                                        self.terminal_label.set_name("CHANGELOG_FONT")
1108                                                        if not self.llxup_connect.checkErrorDistUpgrade():
1109                                                                self.msg_upgrade_running="<span><b>" + _("The system is now update") + "</b></span>"
1110                                                                self.update_button_box.set_name("UPDATE_CORRECT_BUTTON_COLOR")
1111
1112                                                        else:
1113                                                                self.terminal_label.set_name("ERROR_FONT")
1114                                                                self.msg_upgrade_running="<span><b>" + _("The updated process is endend with errors") + "</b></span>"
1115                                                                self.update_button_box.set_name("UPDATE_ERROR_BUTTON_COLOR")
1116
1117                                                        #self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
1118                                                        self.terminal_label.set_markup(self.msg_upgrade_running)
1119                                                        return False
1120               
1121       
1122
1123                if self.preactions_process_t.launched:
1124                        if      not self.preactions_process_t.done:
1125                                if not os.path.exists(self.llxup_connect.preactions_token):
1126                                        return True
1127                                else:
1128                                        self.preactions_process_t.done=True
1129                                        return True
1130
1131
1132                if self.update_process_t.launched:
1133                        if      not self.update_process_t.done:
1134                                if not os.path.exists(self.llxup_connect.upgrade_token):
1135                                        return True
1136                                else:
1137                                        self.update_process_t.done=True 
1138                                        return True
1139
1140                if self.checkFinalFlavourToInstall_t.launched:
1141                        if not self.checkFinalFlavourToInstall_t.done:
1142                                if not os.path.exists(self.llxup_connect.installflavour_token):
1143                                        return True
1144                                else:
1145                                        self.checkFinalFlavourToInstall_t.done=True     
1146                                        return True
1147
1148
1149                if self.postactions_process_t.launched:
1150                        if      not self.postactions_process_t.done:
1151                               
1152                                if not os.path.exists(self.llxup_connect.postactions_token):
1153                                        return True
1154                                else:
1155                                        self.postactions_process_t.done=True
1156                                        return True                     
1157
1158                       
1159        #def dist_upgrade
1160
1161
1162        def preactions_process(self):
1163
1164                self.command=self.llxup_connect.preActionsScript()
1165                #self.command=self.llxup_connect.preActionsScript() + ' | tee ' + TMP_FILE + ';rm ' + TMP_FILE +'\n'
1166                length=len(self.command)
1167                self.vterminal.feed_child(self.command, length)
1168
1169        #def preactions_process
1170       
1171        def update_process(self):
1172                 
1173                #self.command='apt-get dist-upgrade -sV | tee '+ TMP_FILE + ';rm ' + TMP_FILE +'\n'
1174                self.command=self.llxup_connect.distUpgradeProcess()
1175                length=len(self.command)
1176                self.vterminal.feed_child(self.command, length)
1177
1178        #def update_process             
1179
1180
1181        def checkFinalFlavourToInstall(self):
1182
1183                self.flavourToInstall=self.llxup_connect.checkFinalFlavour()
1184
1185                if self.flavourToInstall !=None:
1186                        print "[Lliurex-up]: Check Final Metapackage: Instalation of meta is required"
1187                        self.installFinalFlavour(self.flavourToInstall)
1188                else:
1189                        print "[Lliurex-up]: Check Final Metapackage: Nothing to do"
1190                        self.checkFinalFlavourToInstall_t.done=True     
1191       
1192        #def checkFinalFlavourToInstall
1193
1194        def installFinalFlavour(self,flavourToInstall):
1195
1196                self.command=self.llxup_connect.installFinalFlavour(flavourToInstall)
1197                length=len(self.command)
1198                self.vterminal.feed_child(self.command, length)
1199                               
1200        #def installFinalFlavour
1201       
1202        def postactions_process(self):
1203
1204                self.command=self.llxup_connect.postActionsScript()
1205                #self.command=self.llxup_connect.preActionsScript() + ' | tee ' + TMP_FILE + ';rm ' + TMP_FILE +'\n'
1206                length=len(self.command)
1207                self.vterminal.feed_child(self.command, length)
1208
1209        #def postactions_process
1210       
1211        def view_packages_clicked(self,widget,event):
1212
1213                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
1214                self.stack.set_visible_child_name("packages")
1215               
1216        #def view_packages_clicked     
1217       
1218
1219        def arrow_clicked(self,widget,event):
1220       
1221                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_RIGHT)
1222                self.stack.set_visible_child_name("update")     
1223               
1224        #def arrow_clicked
1225
1226        def update_installed_icon(self,pkg_name):
1227       
1228                image=Gtk.Image()
1229                image.set_from_file(DONE_ICON)         
1230                icon=image.get_pixbuf()
1231
1232                for item in self.packages_store:
1233                        name=item[1].split(">")[2]
1234                        name=name.split("<")[0]
1235                        if name==pkg_name:
1236                                item[3]=icon
1237               
1238                       
1239        #def update_installed_icon     
1240
1241        def mouse_over_yes(self,widget,event):
1242
1243                self.yes_button_box.set_name("BUTTON_OVER_COLOR")
1244
1245        #def mouse_over_yes     
1246
1247        def mouse_exit_yes(self,widget,event):
1248
1249                self.yes_button_box.set_name("BUTTON_COLOR")
1250
1251        #def mouse_exit_yes     
1252
1253        def mouse_over_no(self,widget,event):
1254
1255                self.no_button_box.set_name("BUTTON_OVER_COLOR")
1256
1257        #def mouse_over_no     
1258
1259        def mouse_exit_no(self,widget,event):
1260
1261                self.no_button_box.set_name("BUTTON_COLOR")
1262
1263        #def mouse_exit_no     
1264                       
1265        def mouse_over_view_packages(self,widget,event):
1266
1267                self.view_packages_button_box.set_name("BUTTON_OVER_COLOR")     
1268
1269        #def mouse_over_view_packages   
1270
1271        def mouse_exit_view_packages(self,widget,event):
1272
1273                self.view_packages_button_box.set_name("BUTTON_COLOR")
1274
1275        #def mouse_exit_view_packages   
1276                       
1277        def mouse_over_update_button(self,widget,event):
1278
1279                # if self.preactions_process_t.launched and not self.postactions_process_t.done:
1280                #       self.update_button_box.set_name("UPDATE_LAUNCHED_OVER_COLOR")
1281                # else:
1282                #       if self.postactions_process_t.done:
1283                #               self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
1284                #       else:
1285                #               self.update_button_box.set_name("UPDATE_OVER_COLOR")
1286
1287                if not self.preactions_process_t.launched and not self.postactions_process_t.done:
1288                        self.update_button_box.set_name("BUTTON_OVER_COLOR")
1289                else:
1290                        if self.preactions_process_t.launched and not self.postactions_process_t.done :
1291                                self.terminal_label.set_name("ERROR_FONT")
1292                                self.terminal_label.set_markup(self.msg_upgrade_running)
1293
1294        #def mouse_over_update_button
1295                       
1296        def mouse_exit_update_button(self,widget,event):
1297
1298                # if self.preactions_process_t.launched and not self.postactions_process_t.done:
1299                #       self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
1300                #       self.terminal_label.set_name("CHANGELOG_FONT")
1301                #       self.terminal_label.set_markup(self.msg_terminal)
1302                # else:
1303                #       if self.postactions_process_t.done:
1304                #               self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
1305
1306                #       else:
1307                #               self.update_button_box.set_name("UPDATE_BUTTON_COLOR")
1308
1309
1310                if self.preactions_process_t.launched and not self.postactions_process_t.done:
1311                        #self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
1312                        self.terminal_label.set_name("CHANGELOG_FONT")
1313                        self.terminal_label.set_markup(self.msg_terminal)
1314                else:
1315                        if not self.preactions_process_t.launched:
1316                                self.update_button_box.set_name("BUTTON_COLOR")
1317
1318        #def mouse_exit_update_button
1319                       
1320        def mouse_over_cancel(self,widget,event):
1321
1322                self.cancel_button_box.set_name("BUTTON_OVER_COLOR")   
1323
1324        #def mouse_over_cancel 
1325
1326        def mouse_exit_cancel(self,widget,event):
1327
1328                self.cancel_button_box.set_name("BUTTON_COLOR") 
1329
1330        #def mouse_exit_cancel
1331
1332        def mouse_over_return_arrow(self,widget,event):
1333
1334                self.return_arrow_box.set_name("BUTTON_OVER_COLOR")     
1335
1336        #def mouse_over_return_arrow   
1337
1338        def mouse_exit_return_arrow(self,widget,event):
1339
1340                self.return_arrow_box.set_name("BUTTON_COLOR")         
1341
1342        #def mouse_exit_return_arrow   
1343
1344        def quit(self,widget,event=None):
1345                self.llxup_connect.cleanEnvironment()
1346                Gtk.main_quit() 
1347
1348        #def quit       
1349
1350#class LliurexMirror
1351
1352lup=LliurexUp()
1353lup.start_gui()         
1354 
Note: See TracBrowser for help on using the repository browser.