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

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

Add log in n cli and add sources for client

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