source: lliurex-up/trunk/fuentes/lliurex-up/usr/share/lliurex-up/lliurex-up.py @ 3514

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

Fix code

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