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

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

Fix code

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