Changeset 3127 for lliurex-up


Ignore:
Timestamp:
Dec 20, 2016, 6:21:31 PM (3 years ago)
Author:
jrpelegrina
Message:

WIP in new gui. Add checking for errors in upgrade

Location:
lliurex-up/trunk/fuentes/lliurex-up-gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lliurex-up/trunk/fuentes/lliurex-up-gui/LliurexUpConnect.py

    r3108 r3127  
    2929                self.installflavour_token=os.path.join(self.llxUpCore.processPath,'installflavour_token')
    3030                self.postactions_token=os.path.join(self.llxUpCore.processPath,'postactions_token')
     31                self.errorpostaction_token=os.path.join(self.llxUpCore.processPath,'errorpostaction_token')
    3132                self.errorupgrade_token=os.path.join(self.llxUpCore.processPath,'errorupgrade_token')
    32 
    3333                self.checkInitialFlavour()
    3434
     
    4444                        self.targetMetapackage=self.llxUpCore.checkFlavour()
    4545                        log_msg="Initial check metapackage. Metapackage to install: " + str(self.targetMetapackage)
    46                         self.log(log_msg)
     46                        self.log(log_msg)
    4747                       
    4848                        #if self.targetMetapackage !=None:
     
    113113                return flavourToInstall                                         
    114114                       
    115 
     115        #def requiresInstallFlavour
     116       
    116117        def parseFlavourToInstall(self,flavours):
    117118       
     
    122123                                parse_flavour=parse_flavour + " " + "lliurex-meta-" + item
    123124
    124                 return parse_flavour                   
    125 
     125                return parse_flavour
     126                       
     127        #def parseFlavourToInstall(
     128       
    126129        def canConnectToLliurexNet(self):
    127130
     
    233236                        log_msg="Get LliurexVersion candidate from Local repository: " + self.lliurexVersionLocal["candidate"]
    234237                        self.log(log_msg)
    235                         self.lliurexVersionLocal=self.lliurexVersionLocal["candidate"]
     238                        #self.lliurexVersionLocal=self.lliurexVersionLocal["candidate"]
    236239
    237240                except Exception as e:
     
    242245                return self.lliurexVersionLocal
    243246
    244 
     247        #def getLliurexVersionLocal(
     248       
    245249        def getLliurexVersionNet(self):
    246250               
     
    258262                return self.lliurexVersionNet   
    259263
    260 
     264        #def getLliurexVersionNet
     265       
    261266        def installInitialFlavour(self,flavourToInstall):
    262267
     
    269274                        print str(e)
    270275
     276        #def installInitialFlavour
    271277
    272278        def getPackagesToUpdate(self):
     
    284290                                                self.incorrect_flavours.append(item)
    285291
    286                         log_msg="Get packages to update: OK"
     292                        log_msg="Get packages to update. Number of packages: " + str(len(packages))
    287293                        self.log(log_msg)               
    288294                        return packages_parse
     
    293299                        return packages_parse
    294300
     301        #def getPackagesToUpdate
    295302
    296303        def checkIncorrectFlavours(self):
     
    323330                        self.log(log_msg)
    324331                        return False
    325 
     332       
     333        #def checkIncorrectFlavours
    326334
    327335        def preActionsScript(self):
    328336
    329                 try:
    330                         self.preActions=self.llxUpCore.preActionsScript()
    331                         self.preActions=self.preActions + ' ;touch ' + self.preactions_token + '\n'
    332                         return self.preActions
    333 
    334                 except Exception as e:
    335                         print str(e)   
    336 
     337                self.preActions=self.llxUpCore.preActionsScript()
     338                self.preActions=self.preActions + ' ;touch ' + self.preactions_token + '\n'
     339                log_msg="Exec Pre-Actions"
     340                self.log(log_msg)
     341                return self.preActions
     342
     343        #def preActionsScript   
    337344
    338345        def distUpgradeProcess(self):
     
    340347                self.distupgrade=self.llxUpCore.distUpgradeProcess()   
    341348                self.distupgrade=self.distupgrade + ' ;touch ' + self.upgrade_token + '\n'
    342        
     349                log_msg="Exec Dist-uggrade"
     350                self.log(log_msg)
    343351                return self.distupgrade
    344352
    345 
     353        #def distUpgradeProcess
     354       
    346355        def checkErrorDistUpgrade(self):
    347356
    348                 count=0
     357                cmd='dpkg -l | grep "^i[^i]" >' + self.errorupgrade_token
     358                os.system(cmd)
     359               
    349360                if os.path.exists(self.errorupgrade_token):
    350361                        aux = open(self.errorupgrade_token,'r')
    351362                        lines = aux.readlines()
    352                         for x in lines:
    353                                 if 'E: ' in x:
    354                                         count=count+1
    355363                        aux.close()
    356 
    357                 if count==0:
     364                        if len(lines)>0:
     365                                log_msg="Dist-upgrade process ending with errors"
     366                                self.log(log_msg)
     367                                return False
     368                        else:
     369                                log_msg="Dist-upgrade process ending OK"
     370                                self.log(log_msg)
     371                                return True
     372                else:
    358373                        return True
    359                 else:
    360                         return False                   
    361 
    362 
     374                #~ count=0
     375                #~ if os.path.exists(self.errorupgrade_token):
     376                        #~ aux = open(self.errorupgrade_token,'r')
     377                        #~ lines = aux.readlines()
     378                        #~ for x in lines:
     379                                #~ if 'E: ' in x:
     380                                        #~ count=count+1
     381                        #~ aux.close()
     382
     383                #~ if count==0:
     384                        #~ cmd='dpkg -l | grep "^i[^i]" >/tmp/errores.txt'
     385                        #~ os.system(cmd)
     386                       
     387                        #~ log_msg="Dist-upgrade process ending OK"
     388                        #~ self.log(log_msg)
     389                        #~ return True
     390               
     391
     392                #~ else:
     393                        #~ log_msg="Dist-upgrade process ending with errors"
     394                        #~ self.log(log_msg)
     395                        #~ return False                 
     396
     397
     398        #def checkErrorDistUpgrade
     399       
    363400        def checkFinalFlavour(self):
    364401               
     
    378415                        self.log(log_msg)
    379416
    380                 return flavourToInstall         
     417                return flavourToInstall
     418
     419       
     420        #def checkFinalFlavour
    381421       
    382422        def installFinalFlavour(self,flavourToInstall):
     
    384424                self.command=self.llxUpCore.installFinalFlavour(flavourToInstall)
    385425                self.command=self.command + ' ;touch ' + self.installflavour_token + '\n'
     426                log_msg="Install final flavour"
     427                self.log(log_msg)
    386428                return self.command
    387429
     430        #def installFinalFlavour
     431
    388432        def postActionsScript(self):
    389433
    390                 try:
    391                         self.postActions=self.llxUpCore.postActionsScript()
    392                         self.postActions=self.postActions + ' 2> >(tee ' + self.errorupgrade_token + ') ;touch ' + self.postactions_token + '\n'
    393                         return self.postActions
    394 
    395                 except Exception as e:
    396                         print str(e)   
    397 
     434                self.postActions=self.llxUpCore.postActionsScript()
     435                self.postActions=self.postActions + ' 2> >(tee ' + self.errorpostaction_token + ') ;touch ' + self.postactions_token + '\n'
     436                log_msg="Exec Post-Actions"
     437                self.log(log_msg)
     438                return self.postActions
     439
     440        #def postActionsScript
    398441
    399442        def cleanEnvironment(self):
     
    408451                        self.log(log_msg)                               
    409452
    410         #def getPackagesToUpdate
     453        #def cleanEnvironment
    411454                       
    412455        def log(self,msg):
  • lliurex-up/trunk/fuentes/lliurex-up-gui/lliurex-up.py

    r3108 r3127  
    166166
    167167                self.update_box=builder.get_object("update_box")
     168                self.current_version_label=builder.get_object("current_version_label")
     169                self.current_version_label_info=builder.get_object("current_version_info_label")
    168170                self.version_available_label=builder.get_object("version_available_label")
    169171                self.version_available_label_info=builder.get_object("version_available_info_label")
     
    290292                self.gather_label.set_markup(msg_gather)
    291293                GLib.timeout_add(100,self.pulsate_checksystem)
    292                
     294
     295                self.startactions_process_t=threading.Thread(target=self.startactions_process)
    293296                self.check_lliurexup_t=threading.Thread(target=self.check_lliurexup_version)
    294297                self.install_lliurexup_t=threading.Thread(target=self.install_lliurexup)
     
    303306                self.update_process_t=threading.Thread(target=self.update_process)
    304307                self.checkFinalFlavourToInstall_t=threading.Thread(target=self.checkFinalFlavourToInstall)
    305 
    306308                self.postactions_process_t=threading.Thread(target=self.postactions_process)
    307309
     310                self.startactions_process_t.daemon=True
    308311                self.check_lliurexup_t.daemon=True
    309312                self.install_lliurexup_t.daemon=True
     
    314317                self.get_lliurexversionnet_t.daemon=True
    315318                self.checkInitialFlavourToInstall_t.daemon=True
    316 
    317319                self.gather_packages_t.daemon=True
    318320                self.preactions_process_t.daemon=True
     
    321323                self.postactions_process_t.daemon=True
    322324
     325                self.startactions_process_t.done=False
    323326                self.check_lliurexup_t.done=False
    324327                self.install_lliurexup_t.done=False
     
    329332                self.get_lliurexversionnet_t.done=False
    330333                self.checkInitialFlavourToInstall_t.done=False
    331 
    332334                self.gather_packages_t.done=False
    333335                self.preactions_process_t.done=False
    334336                self.update_process_t.done=False
     337                self.checkFinalFlavourToInstall_t.done=False
    335338                self.postactions_process_t.done=False
    336                 self.checkFinalFlavourToInstall_t.done=False
    337 
     339               
     340                self.startactions_process_t.launched=False
    338341                self.check_lliurexup_t.launched=False
    339342                self.install_lliurexup_t.launched=False
     
    344347                self.get_lliurexversionnet_t.launched=False
    345348                self.checkInitialFlavourToInstall_t.launched=False
    346 
    347349                self.gather_packages_t.launched=False
    348350                self.preactions_process_t.launched=False
     
    350352                self.checkFinalFlavourToInstall_t.launched=False
    351353                self.postactions_process_t.launched=False
     354               
    352355                self.spinner.start()
    353                
    354356                self.package_list=[]
    355357                self.max_seconds=5.0
    356358                self.current_second=0
    357                 self.number_process=7
     359                self.number_process=8
    358360
    359361                GObject.threads_init()
     
    409411                }
    410412               
    411                 #UPDATE_BUTTON_COLOR {
     413                #UPDATE_CORRECT_BUTTON_COLOR {
    412414                        background-image:-gtk-gradient (linear, left top, left bottom, from (#43A047),  to (#43A047));;
    413415               
     
    420422
    421423
    422                 #UPDATE_BUTTON_LAUNCHED_COLOR {
     424                #UPDATE_ERROR_BUTTON_COLOR {
    423425                        background-image:-gtk-gradient (linear, left top, left bottom, from (#D32F2F),  to (#D32F2F));;
    424426               
     
    430432                }
    431433
    432                 #UPDATE_BUTTON_END_COLOR {
    433                         background-image:-gtk-gradient (linear, left top, left bottom, from (#546e7a), to (#546e7a));;
     434                #UPDATE_BUTTON_LAUNCHED_COLOR {
     435                        background-image:-gtk-gradient (linear, left top, left bottom, from (#bdbdbd), to (#bdbdbd));;
    434436
    435437                }
     
    493495                self.cancel_button_label.set_name("BUTTON_LABEL")       
    494496
     497                self.current_version_label.set_name("LABEL_OPTION")
    495498                self.version_available_label.set_name("LABEL_OPTION")
    496499                self.version_update_label.set_name("LABEL_OPTION")     
     
    498501                self.size_update_label.set_name("LABEL_OPTION")
    499502                self.update_button_label.set_name("UPDATE_BUTTON_LABEL")
    500                 self.update_button_box.set_name("UPDATE_BUTTON_COLOR")
     503                self.update_button_box.set_name("BUTTON_COLOR")
    501504                self.terminal_label.set_name("CHANGELOG_FONT")
    502505
     
    622625        # #def reboot_me       
    623626
     627
     628        def startactions_process(self):
     629                time.sleep(5)
     630                self.llxup_connect.startActionsScript()
     631                self.staractions_process_t.done=True
     632       
    624633        def check_lliurexup_version(self):
    625634
    626                 time.sleep(5)   
     635                #time.sleep(5) 
    627636                self.is_lliurexup_updated=self.llxup_connect.isLliurexUpIsUpdated()
    628637                self.check_lliurexup_t.done=True
     
    797806                                                if not self.incorrect_flavours:
    798807                                                        if len(self.packages)==0:
    799                                                                 msg_gather="<span><b>"+_("Your system is update")+"</b></span>"
    800                                                                 self.gather_label.set_markup(msg_gather)
    801                                                                 #self.pbar.hide()
    802                                                                 print "[Lliurex-up]: Sytem update. Nothing to do"
    803                                                                 return False
     808                                                                system_update=True
     809                                                                if self. version_update["candidate"]!=None:
     810
     811                                                                        if self.version_update["installed"]!=self.version_update["candidate"]:
     812                                                                                system_update=False
     813                                                                                                                       
     814                                                                else:
     815                                                                        if self.version_update["installed"]!=self.version_available:
     816                                                                                system_update=False
     817
     818                                                                if not system_update:
     819                                                                                self.gather_label.set_name("ERROR_FONT")
     820                                                                                msg_gather="<span><b>"+_("Updated abort. An error occurred checking new updates")+"</b></span>"
     821                                                                                self.gather_label.set_markup(msg_gather)
     822                                                                                print "[Lliurex-up]: Error in checking new updates"
     823                                                                                return False
     824                                                                else:
     825                                                                        msg_gather="<span><b>"+_("Your system is update")+"</b></span>"
     826                                                                        self.gather_label.set_markup(msg_gather)
     827                                                                        print "[Lliurex-up]: System update. Nothing to do"
     828                                                                        return False
     829                                                                                                       
    804830                                                        else:
    805831                                                                print "[Lliurex-up]: System nor update"
     
    873899                        self.checkInitialFlavourToInstall_t.done=True                   
    874900
     901        #def checkInitialFlavourToInstall(
     902       
    875903        def gather_packages(self):
    876904
     
    886914
    887915                #self.version_available=self.llxup_connect.getLliurexVersionNet()
     916                msg_current_version_info="<span foreground='#3366cc'><b>"+ self.version_update["installed"]+"</b></span>"
     917
    888918                if self.version_available==None:
    889919                        if 'client' in self.llxup_connect.previousFlavours or self.flavourToInstall=='client':
     
    899929
    900930                if self.version_update==None:
    901                         msg_version_update="<span foreground='#3366cc'><b>"+_("Info not available")+"</b></span>"
     931                        msg_version_update_info="<span foreground='#3366cc'><b>"+_("Info not available")+"</b></span>"
    902932               
    903933                else:
    904                         msg_version_update="<span foreground='#3366cc'><b>"+self.version_update+"</b></span>"
     934                        msg_version_update_info="<span foreground='#3366cc'><b>"+self.version_update["candidate"]+"</b></span>"
    905935       
    906936                self.number_pkg=len(self.packages)
     
    909939
    910940
    911                 msg_number="<span foreground='#3366cc'><b>"+str(self.number_pkg)+"</b></span>"
     941                msg_number_info="<span foreground='#3366cc'><b>"+str(self.number_pkg)+"</b></span>"
    912942                #msg_size="<span foreground='#3366cc'><b>"+self.size_update+"</b></span>"
    913943               
     944                self.current_version_label_info.set_markup(msg_current_version_info)
    914945                self.version_available_label_info.set_markup(msg_version_available_info)
    915                 self.version_update_label_info.set_markup(msg_version_update)
    916                 self.number_packages_label_info.set_markup(msg_number)
     946                self.version_update_label_info.set_markup(msg_version_update_info)
     947                self.number_packages_label_info.set_markup(msg_number_info)
    917948                #self.size_update_label_info.set_markup(msg_size)
    918949               
     
    945976                self.pbar_label.set_markup(msg_pbar)
    946977
     978        #def show_number_process_executing
    947979       
    948980        def populate_packages_tv(self):
     
    9861018        def upgrade_process(self,widget, event=None):
    9871019
     1020                self.cancel_button_box.hide()
    9881021                self.number_process=4
     1022                self.msg_upgrade_running=_("The update process is running. Wait a moment please")
     1023
    9891024                if not self.preactions_process_t.launched:
    9901025
     
    10051040                        if not self.postactions_process_t.done:
    10061041                                self.terminal_label.set_name("ERROR_FONT")
    1007                                 msg_updgrade_running=_("The update process is running. Wait a moment please")
    1008                                 self.terminal_label.set_markup(msg_updgrade_running)
    1009 
    1010 
     1042                                self.terminal_label.set_markup(self.msg_upgrade_running)
     1043
     1044        #def upgrade_process
     1045       
    10111046        def dist_upgrade(self):
    1012 
    10131047
    10141048                if not self.preactions_process_t.launched:
     
    10491083                                               
    10501084                                                if self.postactions_process_t.done:
     1085                                                        self.cancel_button_box.show()
    10511086                                                        self.pbar.hide()
    10521087                                                        self.pbar_label.hide()
    10531088                                                        self.terminal_label.set_name("CHANGELOG_FONT")
    10541089                                                        if self.llxup_connect.checkErrorDistUpgrade():
    1055                                                                 msg_updgrade_running="<span><b>" + _("The system is now update") + "</b></span>"
    1056                                                        
     1090                                                                self.msg_upgrade_running="<span><b>" + _("The system is now update") + "</b></span>"
     1091                                                                self.update_button_box.set_name("UPDATE_CORRECT_BUTTON_COLOR")
     1092
    10571093                                                        else:
    1058                                                                 msg_updgrade_running="<span><b>" + _("The updated proces is endend with errors") + "</b></span>"
    1059                                                        
    1060                                                         self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
    1061                                                         self.terminal_label.set_markup(msg_updgrade_running)
     1094                                                                self.terminal_label.set_name("ERROR_FONT")
     1095                                                                self.msg_upgrade_running="<span><b>" + _("The updated process is endend with errors") + "</b></span>"
     1096                                                                self.update_button_box.set_name("UPDATE_ERROR_BUTTON_COLOR")
     1097
     1098                                                        #self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
     1099                                                        self.terminal_label.set_markup(self.msg_upgrade_running)
    10621100                                                        return False
    10631101               
     
    11001138
    11011139                       
    1102         #def waiting_update
     1140        #def dist_upgrade
    11031141
    11041142
     
    11101148                self.vterminal.feed_child(self.command, length)
    11111149
    1112 
     1150        #def preactions_process
     1151       
    11131152        def update_process(self):
    11141153                 
     
    11311170                        print "[Lliurex-up]: Check Final Metapackage: Nothing to do"
    11321171                        self.checkFinalFlavourToInstall_t.done=True     
    1133 
     1172       
     1173        #def checkFinalFlavourToInstall
    11341174
    11351175        def installFinalFlavour(self,flavourToInstall):
     
    11391179                self.vterminal.feed_child(self.command, length)
    11401180                               
    1141 
     1181        #def installFinalFlavour
     1182       
    11421183        def postactions_process(self):
    11431184
     
    11471188                self.vterminal.feed_child(self.command, length)
    11481189
     1190        #def postactions_process
    11491191       
    11501192        def view_packages_clicked(self,widget,event):
     
    12161258        def mouse_over_update_button(self,widget,event):
    12171259
     1260                # if self.preactions_process_t.launched and not self.postactions_process_t.done:
     1261                #       self.update_button_box.set_name("UPDATE_LAUNCHED_OVER_COLOR")
     1262                # else:
     1263                #       if self.postactions_process_t.done:
     1264                #               self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
     1265                #       else:
     1266                #               self.update_button_box.set_name("UPDATE_OVER_COLOR")
     1267
     1268                if not self.preactions_process_t.launched and not self.postactions_process_t.done:
     1269                        self.update_button_box.set_name("BUTTON_OVER_COLOR")
     1270                else:
     1271                        if self.preactions_process_t.launched and not self.postactions_process_t.done :
     1272                                self.terminal_label.set_name("ERROR_FONT")
     1273                                self.terminal_label.set_markup(self.msg_upgrade_running)
     1274
     1275        #def mouse_over_update_button
     1276                       
     1277        def mouse_exit_update_button(self,widget,event):
     1278
     1279                # if self.preactions_process_t.launched and not self.postactions_process_t.done:
     1280                #       self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
     1281                #       self.terminal_label.set_name("CHANGELOG_FONT")
     1282                #       self.terminal_label.set_markup(self.msg_terminal)
     1283                # else:
     1284                #       if self.postactions_process_t.done:
     1285                #               self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
     1286
     1287                #       else:
     1288                #               self.update_button_box.set_name("UPDATE_BUTTON_COLOR")
     1289
     1290
    12181291                if self.preactions_process_t.launched and not self.postactions_process_t.done:
    1219                         self.update_button_box.set_name("UPDATE_LAUNCHED_OVER_COLOR")
    1220                 else:
    1221                         if self.postactions_process_t.done:
    1222                                 self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
    1223                         else:
    1224                                 self.update_button_box.set_name("UPDATE_OVER_COLOR")
    1225 
    1226         #def mouse_over_update_button
    1227                        
    1228         def mouse_exit_update_button(self,widget,event):
    1229 
    1230                 if self.preactions_process_t.launched and not self.postactions_process_t.done:
    1231                         self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
     1292                        #self.update_button_box.set_name("UPDATE_BUTTON_LAUNCHED_COLOR")
    12321293                        self.terminal_label.set_name("CHANGELOG_FONT")
    12331294                        self.terminal_label.set_markup(self.msg_terminal)
    12341295                else:
    1235                         if self.postactions_process_t.done:
    1236                                 self.update_button_box.set_name("UPDATE_BUTTON_END_COLOR")
    1237 
    1238                         else:
    1239                                 self.update_button_box.set_name("UPDATE_BUTTON_COLOR")
     1296                        if not self.preactions_process_t.launched:
     1297                                self.update_button_box.set_name("BUTTON_COLOR")
    12401298
    12411299        #def mouse_exit_update_button
  • lliurex-up/trunk/fuentes/lliurex-up-gui/rsrc/lliurex-up.ui

    r3094 r3127  
    543543            <property name="valign">center</property>
    544544            <child>
    545               <object class="GtkLabel" id="version_available_label">
    546                 <property name="visible">True</property>
    547                 <property name="can_focus">False</property>
    548                 <property name="opacity">0.97999999999999998</property>
     545              <object class="GtkLabel" id="size_update_label">
     546                <property name="name">20</property>
     547                <property name="visible">True</property>
     548                <property name="can_focus">False</property>
    549549                <property name="halign">start</property>
    550550                <property name="margin_left">10</property>
    551551                <property name="margin_top">5</property>
    552552                <property name="margin_bottom">5</property>
    553                 <property name="label" translatable="yes">Version available: </property>
     553                <property name="label" translatable="yes">Size of update:</property>
    554554              </object>
    555555              <packing>
    556556                <property name="left_attach">0</property>
    557                 <property name="top_attach">0</property>
     557                <property name="top_attach">4</property>
     558              </packing>
     559            </child>
     560            <child>
     561              <object class="GtkLabel" id="size_update_info_label">
     562                <property name="visible">True</property>
     563                <property name="can_focus">False</property>
     564                <property name="halign">start</property>
     565              </object>
     566              <packing>
     567                <property name="left_attach">1</property>
     568                <property name="top_attach">4</property>
    558569              </packing>
    559570            </child>
     
    570581              <packing>
    571582                <property name="left_attach">0</property>
    572                 <property name="top_attach">2</property>
    573               </packing>
    574             </child>
    575             <child>
    576               <object class="GtkLabel" id="size_update_label">
    577                 <property name="name">20</property>
    578                 <property name="visible">True</property>
    579                 <property name="can_focus">False</property>
    580                 <property name="halign">start</property>
    581                 <property name="margin_left">10</property>
    582                 <property name="margin_top">5</property>
    583                 <property name="margin_bottom">5</property>
    584                 <property name="label" translatable="yes">Size of update:</property>
    585               </object>
    586               <packing>
    587                 <property name="left_attach">0</property>
    588583                <property name="top_attach">3</property>
    589584              </packing>
    590585            </child>
    591586            <child>
    592               <object class="GtkLabel" id="version_update_label">
    593                 <property name="visible">True</property>
    594                 <property name="can_focus">False</property>
    595                 <property name="halign">start</property>
    596                 <property name="margin_left">10</property>
    597                 <property name="margin_top">5</property>
    598                 <property name="margin_bottom">5</property>
    599                 <property name="label" translatable="yes">Version to update: </property>
    600                 <property name="lines">0</property>
    601               </object>
    602               <packing>
    603                 <property name="left_attach">0</property>
    604                 <property name="top_attach">1</property>
    605               </packing>
    606             </child>
    607             <child>
    608               <object class="GtkLabel" id="version_available_info_label">
    609                 <property name="visible">True</property>
    610                 <property name="can_focus">False</property>
    611                 <property name="opacity">0.96999999999999997</property>
    612                 <property name="halign">start</property>
    613               </object>
    614               <packing>
    615                 <property name="left_attach">1</property>
    616                 <property name="top_attach">0</property>
    617               </packing>
    618             </child>
    619             <child>
    620               <object class="GtkLabel" id="version_update_info_label">
    621                 <property name="visible">True</property>
    622                 <property name="can_focus">False</property>
    623                 <property name="halign">start</property>
    624               </object>
    625               <packing>
    626                 <property name="left_attach">1</property>
    627                 <property name="top_attach">1</property>
    628               </packing>
    629             </child>
    630             <child>
    631               <object class="GtkLabel" id="size_update_info_label">
     587              <object class="GtkLabel" id="number_packages_info_label">
    632588                <property name="visible">True</property>
    633589                <property name="can_focus">False</property>
     
    689645              <packing>
    690646                <property name="left_attach">2</property>
    691                 <property name="top_attach">2</property>
    692               </packing>
    693             </child>
    694             <child>
    695               <object class="GtkLabel" id="number_packages_info_label">
     647                <property name="top_attach">3</property>
     648              </packing>
     649            </child>
     650            <child>
     651              <object class="GtkLabel" id="version_update_info_label">
    696652                <property name="visible">True</property>
    697653                <property name="can_focus">False</property>
     
    702658                <property name="top_attach">2</property>
    703659              </packing>
     660            </child>
     661            <child>
     662              <object class="GtkLabel" id="version_update_label">
     663                <property name="visible">True</property>
     664                <property name="can_focus">False</property>
     665                <property name="halign">start</property>
     666                <property name="margin_left">10</property>
     667                <property name="margin_top">5</property>
     668                <property name="margin_bottom">5</property>
     669                <property name="label" translatable="yes">Version to update: </property>
     670                <property name="lines">0</property>
     671              </object>
     672              <packing>
     673                <property name="left_attach">0</property>
     674                <property name="top_attach">2</property>
     675              </packing>
     676            </child>
     677            <child>
     678              <object class="GtkLabel" id="version_available_info_label">
     679                <property name="visible">True</property>
     680                <property name="can_focus">False</property>
     681                <property name="opacity">0.96999999999999997</property>
     682                <property name="halign">start</property>
     683              </object>
     684              <packing>
     685                <property name="left_attach">1</property>
     686                <property name="top_attach">1</property>
     687              </packing>
     688            </child>
     689            <child>
     690              <object class="GtkLabel" id="version_available_label">
     691                <property name="visible">True</property>
     692                <property name="can_focus">False</property>
     693                <property name="opacity">0.97999999999999998</property>
     694                <property name="halign">start</property>
     695                <property name="margin_left">10</property>
     696                <property name="margin_top">5</property>
     697                <property name="margin_bottom">5</property>
     698                <property name="label" translatable="yes">Version available: </property>
     699              </object>
     700              <packing>
     701                <property name="left_attach">0</property>
     702                <property name="top_attach">1</property>
     703              </packing>
     704            </child>
     705            <child>
     706              <object class="GtkLabel" id="current_version_label">
     707                <property name="visible">True</property>
     708                <property name="can_focus">False</property>
     709                <property name="halign">start</property>
     710                <property name="margin_left">10</property>
     711                <property name="margin_top">5</property>
     712                <property name="margin_bottom">5</property>
     713                <property name="label" translatable="yes">Current version: </property>
     714              </object>
     715              <packing>
     716                <property name="left_attach">0</property>
     717                <property name="top_attach">0</property>
     718              </packing>
     719            </child>
     720            <child>
     721              <object class="GtkLabel" id="current_version_info_label">
     722                <property name="visible">True</property>
     723                <property name="can_focus">False</property>
     724                <property name="halign">start</property>
     725              </object>
     726              <packing>
     727                <property name="left_attach">1</property>
     728                <property name="top_attach">0</property>
     729              </packing>
     730            </child>
     731            <child>
     732              <placeholder/>
    704733            </child>
    705734            <child>
     
    734763        <property name="margin_right">5</property>
    735764        <property name="margin_top">10</property>
    736         <property name="margin_bottom">10</property>
     765        <property name="margin_bottom">5</property>
    737766        <property name="orientation">vertical</property>
    738767        <child>
Note: See TracChangeset for help on using the changeset viewer.