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

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

Fix bug in lliurex-up.py

  • Property svn:executable set to *
File size: 42.4 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+"/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]: Sytem update. Nothing to do"
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                msg_current_version_info="<span foreground='#3366cc'><b>"+ self.version_update["installed"]+"</b></span>"
937
938                if self.version_available==None:
939                        if 'client' in self.llxup_connect.previousFlavours or self.flavourToInstall=='lliurex-meta-client' or self.targetMetapackage=='lliurex-meta-client':
940                                msg_version_available_info="<span foreground='#3366cc'><b>"+_("Info not available for clients")+"</b></span>"
941
942                        else:
943                                msg_version_available_info="<span foreground='#CC0000'><b>"+_("Info not available. Check conexion to lliurex.net")+"</b></span>"
944
945                else:
946                        #self.version_available="16.160920"     
947                        msg_version_available_info="<span foreground='#3366cc'><b>"+self.version_available+"</b></span>"
948
949
950                if self.version_update==None:
951                        msg_version_update_info="<span foreground='#3366cc'><b>"+_("Info not available")+"</b></span>"
952               
953                else:
954                        msg_version_update_info="<span foreground='#3366cc'><b>"+self.version_update["candidate"]+"</b></span>"
955       
956                self.number_pkg=len(self.packages)
957                self.size_update_label.hide()
958                #self.size_update="100 Mb"
959
960
961                msg_number_info="<span foreground='#3366cc'><b>"+str(self.number_pkg)+"</b></span>"
962                #msg_size="<span foreground='#3366cc'><b>"+self.size_update+"</b></span>"
963               
964                self.current_version_label_info.set_markup(msg_current_version_info)
965                self.version_available_label_info.set_markup(msg_version_available_info)
966                self.version_update_label_info.set_markup(msg_version_update_info)
967                self.number_packages_label_info.set_markup(msg_number_info)
968                #self.size_update_label_info.set_markup(msg_size)
969               
970        #def get_update_summary
971               
972        def updated_percentage(self,completed):
973
974                percentage=completed/100.0
975
976                self.pbar.set_fraction(percentage)
977               
978                msg_value=format(completed,'.0f')
979               
980                msg_percentage="<span><b>"+msg_value+"%"+"</b></span>"
981                self.pbar_label.set_markup(msg_percentage)
982               
983               
984        #def updated_percentage
985               
986        def show_number_process_executing(self, execprocess, processname):
987
988                self.total_process=self.number_process+1.0
989                self.pbar.set_fraction(execprocess/self.total_process)
990                if processname =="":
991                        msg_pbar="Executing process: " + str(execprocess) + " of " + str(self.number_process)
992                else:
993                        msg_pbar="Executing process: " + str(execprocess) + " of " + str(self.number_process) + ". " + processname
994       
995                msg_pbar="<span><b>"+msg_pbar+"</b></span>" 
996                self.pbar_label.set_markup(msg_pbar)
997
998        #def show_number_process_executing
999       
1000        def populate_packages_tv(self):
1001               
1002                for package in self.package_list:
1003                        #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))
1004                        self.packages_store.append(("<span font='Roboto'><b>"+package.name+"</b></span>\n"+"<span font='Roboto' size='small'>"+package.version+"</span>",package.installed))
1005                       
1006                #print len(self.packages_store)
1007               
1008        #def populate_packages_tv
1009       
1010        def parse_packages_updated(self):
1011               
1012                       
1013                for item in self.packages:
1014                        tmp=item.split(";")
1015                        if len(tmp)>1:
1016                                pack=Package(tmp[0],tmp[1])
1017                                self.package_list.append(pack)
1018
1019
1020        #def parse_simulate_output
1021       
1022        def package_clicked(self,x,y):
1023               
1024                selection=self.packages_tv.get_selection()
1025                model,iter=selection.get_selected()
1026                name=self.packages_store.get_value(iter,1)
1027                name=name[name.find("<b>")+3:name.find("</b>")]
1028                               
1029                for package in self.package_list:
1030                       
1031                        if package.name==name:
1032                                self.changelog_textview.get_buffer().set_text("".join(package.changelog))
1033                               
1034                                break
1035       
1036        #def package_clicked                   
1037
1038        def upgrade_process(self,widget, event=None):
1039
1040               
1041                self.msg_upgrade_running=_("The update process is running. Wait a moment please")
1042
1043                if not self.preactions_process_t.launched:
1044                        self.cancel_button_box.hide()
1045                        self.number_process=4
1046                        self.pbar.show()
1047                        #self.pbar.pulse()
1048                        self.viewport.show()
1049                        self.terminal_scrolled.show()
1050                        self.terminal_label.show()
1051                        self.msg_terminal=_("Update process details")
1052                        self.terminal_label.set_markup(self.msg_terminal)
1053                        GLib.timeout_add(100,self.dist_upgrade)
1054
1055                        # self.preactions_process_t.start()
1056                        # self.preactions_process_t.launched=True
1057
1058
1059                else:
1060                        if not self.postactions_process_t.done:
1061                                self.terminal_label.set_name("ERROR_FONT")
1062                                self.terminal_label.set_markup(self.msg_upgrade_running)
1063
1064        #def upgrade_process
1065       
1066        def dist_upgrade(self):
1067
1068                if not self.preactions_process_t.launched:
1069                        print "[Lliurex-up]: Executing pre-actions"
1070                        self.pbar_label.show()
1071
1072                        self.preactions_process_t.start()
1073                        self.preactions_process_t.launched=True
1074                        self.show_number_process_executing(1,"Pre-actions process")
1075                        self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
1076
1077                else:
1078
1079                        if self.preactions_process_t.done:
1080                                if not self.update_process_t.is_alive() and not self.update_process_t.launched:
1081                                        print "[Lliurex-up]: Executing dist-upgrade"
1082                                        self.update_process_t.start()
1083                                        self.update_process_t.launched=True
1084                                        self.show_number_process_executing(2,"Dist-upgrade process")
1085
1086                               
1087                                if self.update_process_t.done:
1088                                        if not self.checkFinalFlavourToInstall_t.is_alive() and not self.checkFinalFlavourToInstall_t.launched:
1089                                                print "[Lliurex-up]: Checking Final Flavour"
1090                                                self.checkFinalFlavourToInstall_t.start()
1091                                                self.checkFinalFlavourToInstall_t.launched=True
1092                                                self.show_number_process_executing(3,"Checking Flavour")
1093                                                                               
1094                                       
1095                                        if self.checkFinalFlavourToInstall_t.done:                               
1096
1097                                                if not self.postactions_process_t.is_alive() and not self.postactions_process_t.launched:
1098                                                        print "[Lliurex-up]: Executing post-actions"
1099                                                        self.postactions_process_t.start()
1100                                                        self.postactions_process_t.launched=True
1101                                                        self.show_number_process_executing(4,"Post-actions process")
1102
1103                                               
1104                                                if self.postactions_process_t.done:
1105                                                        self.cancel_button_box.show()
1106                                                        self.pbar.hide()
1107                                                        self.pbar_label.hide()
1108                                                        self.terminal_label.set_name("CHANGELOG_FONT")
1109                                                        if not self.llxup_connect.checkErrorDistUpgrade():
1110                                                                self.msg_upgrade_running="<span><b>" + _("The system is now update") + "</b></span>"
1111                                                                self.update_button_box.set_name("UPDATE_CORRECT_BUTTON_COLOR")
1112
1113                                                        else:
1114                                                                self.terminal_label.set_name("ERROR_FONT")
1115                                                                self.msg_upgrade_running="<span><b>" + _("The updated process is endend with errors") + "</b></span>"
1116                                                                self.update_button_box.set_name("UPDATE_ERROR_BUTTON_COLOR")
1117
1118                                                        #self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
1119                                                        self.terminal_label.set_markup(self.msg_upgrade_running)
1120                                                        return False
1121               
1122       
1123
1124                if self.preactions_process_t.launched:
1125                        if      not self.preactions_process_t.done:
1126                                if not os.path.exists(self.llxup_connect.preactions_token):
1127                                        return True
1128                                else:
1129                                        self.preactions_process_t.done=True
1130                                        return True
1131
1132
1133                if self.update_process_t.launched:
1134                        if      not self.update_process_t.done:
1135                                if not os.path.exists(self.llxup_connect.upgrade_token):
1136                                        return True
1137                                else:
1138                                        self.update_process_t.done=True 
1139                                        return True
1140
1141                if self.checkFinalFlavourToInstall_t.launched:
1142                        if not self.checkFinalFlavourToInstall_t.done:
1143                                if not os.path.exists(self.llxup_connect.installflavour_token):
1144                                        return True
1145                                else:
1146                                        self.checkFinalFlavourToInstall_t.done=True     
1147                                        return True
1148
1149
1150                if self.postactions_process_t.launched:
1151                        if      not self.postactions_process_t.done:
1152                               
1153                                if not os.path.exists(self.llxup_connect.postactions_token):
1154                                        return True
1155                                else:
1156                                        self.postactions_process_t.done=True
1157                                        return True                     
1158
1159                       
1160        #def dist_upgrade
1161
1162
1163        def preactions_process(self):
1164
1165                self.command=self.llxup_connect.preActionsScript()
1166                #self.command=self.llxup_connect.preActionsScript() + ' | tee ' + TMP_FILE + ';rm ' + TMP_FILE +'\n'
1167                length=len(self.command)
1168                self.vterminal.feed_child(self.command, length)
1169
1170        #def preactions_process
1171       
1172        def update_process(self):
1173                 
1174                #self.command='apt-get dist-upgrade -sV | tee '+ TMP_FILE + ';rm ' + TMP_FILE +'\n'
1175                self.command=self.llxup_connect.distUpgradeProcess()
1176                length=len(self.command)
1177                self.vterminal.feed_child(self.command, length)
1178
1179        #def update_process             
1180
1181
1182        def checkFinalFlavourToInstall(self):
1183
1184                self.flavourToInstall=self.llxup_connect.checkFinalFlavour()
1185
1186                if self.flavourToInstall !=None:
1187                        print "[Lliurex-up]: Check Final Metapackage: Instalation of meta is required"
1188                        self.installFinalFlavour(self.flavourToInstall)
1189                else:
1190                        print "[Lliurex-up]: Check Final Metapackage: Nothing to do"
1191                        self.checkFinalFlavourToInstall_t.done=True     
1192       
1193        #def checkFinalFlavourToInstall
1194
1195        def installFinalFlavour(self,flavourToInstall):
1196
1197                self.command=self.llxup_connect.installFinalFlavour(flavourToInstall)
1198                length=len(self.command)
1199                self.vterminal.feed_child(self.command, length)
1200                               
1201        #def installFinalFlavour
1202       
1203        def postactions_process(self):
1204
1205                self.command=self.llxup_connect.postActionsScript()
1206                #self.command=self.llxup_connect.preActionsScript() + ' | tee ' + TMP_FILE + ';rm ' + TMP_FILE +'\n'
1207                length=len(self.command)
1208                self.vterminal.feed_child(self.command, length)
1209
1210        #def postactions_process
1211       
1212        def view_packages_clicked(self,widget,event):
1213
1214                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
1215                self.stack.set_visible_child_name("packages")
1216               
1217        #def view_packages_clicked     
1218       
1219
1220        def arrow_clicked(self,widget,event):
1221       
1222                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_RIGHT)
1223                self.stack.set_visible_child_name("update")     
1224               
1225        #def arrow_clicked
1226
1227        def update_installed_icon(self):
1228       
1229                image=Gtk.Image()
1230                image.set_from_file(DONE_ICON)         
1231                icon=image.get_pixbuf()
1232
1233                # for item in self.packages_store:
1234                #       name=item[0].split(">")[2]
1235                #       name=name.split("<")[0]
1236                #       version=item[1].split(">")[2]
1237                #       version=version.split("<")[0]
1238                #       status=self.llxup_connect.getStatusPackage(name,version)
1239                #       if name==pkg_name:
1240                #               item[3]=icon
1241               
1242                       
1243        #def update_installed_icon     
1244
1245        def mouse_over_yes(self,widget,event):
1246
1247                self.yes_button_box.set_name("BUTTON_OVER_COLOR")
1248
1249        #def mouse_over_yes     
1250
1251        def mouse_exit_yes(self,widget,event):
1252
1253                self.yes_button_box.set_name("BUTTON_COLOR")
1254
1255        #def mouse_exit_yes     
1256
1257        def mouse_over_no(self,widget,event):
1258
1259                self.no_button_box.set_name("BUTTON_OVER_COLOR")
1260
1261        #def mouse_over_no     
1262
1263        def mouse_exit_no(self,widget,event):
1264
1265                self.no_button_box.set_name("BUTTON_COLOR")
1266
1267        #def mouse_exit_no     
1268                       
1269        def mouse_over_view_packages(self,widget,event):
1270
1271                self.view_packages_button_box.set_name("BUTTON_OVER_COLOR")     
1272
1273        #def mouse_over_view_packages   
1274
1275        def mouse_exit_view_packages(self,widget,event):
1276
1277                self.view_packages_button_box.set_name("BUTTON_COLOR")
1278
1279        #def mouse_exit_view_packages   
1280                       
1281        def mouse_over_update_button(self,widget,event):
1282
1283                # if self.preactions_process_t.launched and not self.postactions_process_t.done:
1284                #       self.update_button_box.set_name("UPDATE_LAUNCHED_OVER_COLOR")
1285                # else:
1286                #       if self.postactions_process_t.done:
1287                #               self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
1288                #       else:
1289                #               self.update_button_box.set_name("UPDATE_OVER_COLOR")
1290
1291                if not self.preactions_process_t.launched and not self.postactions_process_t.done:
1292                        self.update_button_box.set_name("BUTTON_OVER_COLOR")
1293                else:
1294                        if self.preactions_process_t.launched and not self.postactions_process_t.done :
1295                                self.terminal_label.set_name("ERROR_FONT")
1296                                self.terminal_label.set_markup(self.msg_upgrade_running)
1297
1298        #def mouse_over_update_button
1299                       
1300        def mouse_exit_update_button(self,widget,event):
1301
1302                # if self.preactions_process_t.launched and not self.postactions_process_t.done:
1303                #       self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
1304                #       self.terminal_label.set_name("CHANGELOG_FONT")
1305                #       self.terminal_label.set_markup(self.msg_terminal)
1306                # else:
1307                #       if self.postactions_process_t.done:
1308                #               self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
1309
1310                #       else:
1311                #               self.update_button_box.set_name("UPDATE_BUTTON_COLOR")
1312
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 not self.preactions_process_t.launched:
1320                                self.update_button_box.set_name("BUTTON_COLOR")
1321
1322        #def mouse_exit_update_button
1323                       
1324        def mouse_over_cancel(self,widget,event):
1325
1326                self.cancel_button_box.set_name("BUTTON_OVER_COLOR")   
1327
1328        #def mouse_over_cancel 
1329
1330        def mouse_exit_cancel(self,widget,event):
1331
1332                self.cancel_button_box.set_name("BUTTON_COLOR") 
1333
1334        #def mouse_exit_cancel
1335
1336        def mouse_over_return_arrow(self,widget,event):
1337
1338                self.return_arrow_box.set_name("BUTTON_OVER_COLOR")     
1339
1340        #def mouse_over_return_arrow   
1341
1342        def mouse_exit_return_arrow(self,widget,event):
1343
1344                self.return_arrow_box.set_name("BUTTON_COLOR")         
1345
1346        #def mouse_exit_return_arrow   
1347
1348        def quit(self,widget,event=None):
1349                self.llxup_connect.cleanEnvironment()
1350                Gtk.main_quit() 
1351
1352        #def quit       
1353
1354#class LliurexMirror
1355
1356lup=LliurexUp()
1357lup.start_gui()         
1358 
Note: See TracBrowser for help on using the repository browser.