Ignore:
Timestamp:
Oct 21, 2016, 2:56:01 PM (3 years ago)
Author:
jrpelegrina
Message:

WIP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-up/trunk/fuentes/lliurex-up-gui/lliurex-up

    r2654 r2662  
    1414import subprocess
    1515import sys
     16import time
    1617
    1718from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango, Vte
     
    2829RSRC_DIR="rsrc/"
    2930
     31class Package:
     32
     33        def __init__(self,name,version,size):
     34
     35                self.name=name
     36                self.version=version
     37                self.size=size
     38                #self.parse_desktop(desktop_file)
     39                #self.parse_changelog(changelog_file)
     40
     41
     42        def parse_desktop(self,desktop_file):
     43               
     44                try:
     45                        config = ConfigParser.ConfigParser()
     46                        config.optionxform=str
     47                        config.read(desktop_file)
     48                       
     49                        if config.has_section("Desktop Entry") and config.has_option("Desktop Entry","Icon"):
     50                                self.icon=config.get("Desktop Entry","Icon")
     51                        else:
     52                                self.icon="package"
     53                               
     54                except Exception as e:
     55                       
     56                        self.icon="package"
     57                       
     58
     59        def parse_changelog(self,changelog_file):
     60               
     61                try:
     62                       
     63                        f=open(changelog_file,"r")
     64                        self.changelog=f.readlines()
     65                        f.close()
     66                                               
     67                except Exception as e:
     68                       
     69                        self.changelog="Changelog not found"
     70
     71
    3072
    3173class LliurexUp:
    3274
    3375        def __init__(self):
     76
    3477
    3578                self.start_gui()
     
    71114
    72115                self.update_box=builder.get_object("update_box")
    73                 self.version_label=builder.get_object("version_label")
     116                self.version_available_label=builder.get_object("version_available_label")
     117                self.version_update_label=builder.get_object("version_update_label")
    74118                self.number_packages_label=builder.get_object("number_packages_label")
    75119                self.size_update_label=builder.get_object("size_update_label")
     
    80124                self.view_packages_label=builder.get_object("view_packages_label")
    81125
    82                 self.update_button=builder.get_object("update_button")
    83                 self.update_button.connect("button-press-event",self.install_packages)
     126                self.update_button_box=builder.get_object("update_button_box")
     127                self.update_button_eb=builder.get_object("update_button_eventbox")
     128                self.update_button_eb.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK)
     129                self.update_button_eb.connect("button-release-event", self.install_packages)
    84130                self.update_button_label=builder.get_object("update_button_label")
    85131                self.terminal_label=builder.get_object("terminal_label")
     
    98144                self.return_arrow_eb.connect("button-release-event", self.arrow_clicked)
    99145                self.packages_label=builder.get_object("packages_label")
    100        
     146                self.packages_tv=builder.get_object("packages_treeview")
     147                self.changelog_texview=builder.get_object("changelog_textview")
     148
     149                self.packages_store=Gtk.ListStore(str,str)
     150                self.packages_tv.set_model(self.packages_store)
     151                #column=Gtk.TreeViewColumn("ICON")
     152                #cell=Gtk.CellRendererPixbuf()
     153                #cell.set_property("stock-size",Gtk.ICON_SIZE_DIALOG)
     154                #column.pack_start(cell,True)
     155                #column.add_attribute(cell,"icon-name",0)
     156                #self.packages_tv.append_column(column)
     157               
     158                column=Gtk.TreeViewColumn("Package")
     159                cell=Gtk.CellRendererText()
     160                column.pack_start(cell,True)
     161                column.add_attribute(cell,"markup",1)
     162               
     163                self.packages_tv.append_column(column)
     164               
     165                #self.packages_tv.connect("button-release-event",self.package_clicked)
     166               
     167                column=Gtk.TreeViewColumn("Size")
     168                cell=Gtk.CellRendererText()
     169                #cell.set_property("alignment",Pango.ALIGN_CENTER)
     170                column.pack_start(cell,True)
     171                column.add_attribute(cell,"markup",2)
     172                self.packages_tv.append_column(column)         
     173               
     174
    101175
    102176                self.stack.add_titled(self.gather_box,"gather","Gather")
     
    104178                self.stack.add_titled(self.packages_box, "packages", "Packages")
    105179
    106                 self.main_box.add(self.stack)
     180                self.main_box.pack_start(self.stack,True,False,5)
    107181
    108182                self.window.show_all()
     
    111185                self.terminal_label.hide()
    112186                self.cancel_button_box.hide()
     187                self.yes_button_box.hide()
     188                self.no_button_box.hide()
    113189
    114190                #self.pbar_label.hide()
     
    129205                self.no_mirror=False
    130206
     207                self.package_list=[]
     208
    131209                GObject.threads_init()
    132210                Gtk.main()
     
    220298                self.cancel_label.set_name("BUTTON_LABEL")     
    221299
    222                 self.version_label.set_name("LABEL_OPTION")     
     300                self.version_available_label.set_name("LABEL_OPTION")
     301                self.version_update_label.set_name("LABEL_OPTION")     
    223302                self.number_packages_label.set_name("LABEL_OPTION")
    224303                self.size_update_label.set_name("LABEL_OPTION")
    225304                self.update_button_label.set_name("UPDATE_BUTTON_LABEL")
    226                 self.update_button.set_name("UPDATE_BUTTON_COLOR")
     305                self.update_button_box.set_name("UPDATE_BUTTON_COLOR")
    227306                self.terminal_label.set_name("LABEL_OPTION")
    228307
     
    231310               
    232311
    233 
    234         def gather_info(self):
    235 
    236                 cmd="sudo apt-get update"
     312        def check_lliurexup_version(self):
     313
     314                print "Checking lliurex-up version"
     315                msg_gather="<span><b>"+_("Checking for new version of lliurex-up")+"</b></span>"
     316                self.gather_label.set_markup(msg_gather)
     317                time.sleep(2)
     318                return True
     319
     320
     321        def check_mirror(self):
     322                print "Checking mirror"
     323                self.response=-1
     324                t=0
     325                self.yes_button_box.show()
     326                self.no_button_box.show()
    237327                msg_gather="<span><b>"+_("Do you want to update your mirror?")+"</b></span>"
    238328                self.gather_label.set_markup(msg_gather)
    239 
    240                 if not self.no_mirror:
    241                         p=subprocess.Popen([cmd],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)     
    242                         output=p.communicate() 
    243 
     329               
     330                while self.response==-1:
     331                        time.sleep(t)
     332                        t=t+1
     333
     334                self.yes_button_box.hide()
     335                self.no_button_box.hide()       
     336                return True
     337
     338
     339        def gather_info(self):
     340
     341                self.check_lliurexup_version()
     342                self.check_mirror()
     343                               
     344
     345                cmd="sudo apt-get update"
     346                msg_gather="<span><b>"+_("Checking for new updates")+"</b></span>"
     347                self.gather_label.set_markup(msg_gather)
     348               
     349                #p=subprocess.Popen([cmd],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)     
     350                #output=p.communicate()
     351                try:
     352                        p1=subprocess.Popen(["llxcfg-upgrade-version-scripts","details"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
     353                        output=p1.communicate()[0]
     354                        f=open("/tmp/.lliurex_up_log","w")
     355                        if output!=None:
     356                                f.write(output)
     357                        f.close()
    244358       
     359                except:
     360                        pass
     361
     362
     363
    245364        def pulsate_gathering_info(self):
    246365               
     
    249368                if not self.t.is_alive():
    250369                       
     370                        self.parse_simulate_output("/tmp/.lliurex_up_log")
     371                        self.populate_packages_tv()     
    251372                        self.get_update_info()
    252373                        self.pbar.hide()
     
    256377
    257378                return self.t.is_alive()       
     379
     380               
     381        def populate_packages_tv(self):
     382               
     383                for package in self.package_list:
     384                        print package
     385                        self.packages_store.append(("<b>"+package.name+"</b>\n"+"<span size='small'>"+package.version+"</span>","<span foreground='#009400' size='large'>"+package.size+"</span>"))
     386                       
     387                       
     388                print len(self.packages_store) 
     389        #def populate_packages_tv
     390       
     391        def parse_simulate_output(self,test_file=None):
     392               
     393                if test_file!=None:
     394                        f=open(test_file,"r")
     395                       
     396                        for line in f:
     397                                if line.find("#")==0:
     398                                        pass
     399                                else:
     400                                        tmp=line.split(";")
     401                                        if len(tmp)>4:
     402                                                package=Package(tmp[0],tmp[1],tmp[2])
     403                                                self.package_list.append(package)
     404
     405                       
     406                else:
     407                        #to be done later
     408                        pass   
     409
    258410
    259411        def execute(self):
     
    284436       
    285437        def get_update_info(self):
    286                 self.version_update="16.160916"
     438                self.version_available="16.160916"
     439                self.version_update="16.160915"
    287440                self.number_pkg="15"
    288441                self.size_update="100 Mb"
    289442               
    290                 msg_version=_("Version available: ")+"<span foreground='#3366cc'><b>"+self.version_update+"</b></span>"
     443                msg_version_available=_("Version available: ")+"<span foreground='#3366cc'><b>"+self.version_available+"</b></span>"
     444                msg_version_update=_("Version to update: ")+"<span foreground='#3366cc'><b>"+self.version_update+"</b></span>"
     445
    291446                msg_number=_("Number packages: ")+"<span foreground='#3366cc'><b>"+self.number_pkg+"</b></span>"
    292447                msg_size=_("Size of update: ")+"<span foreground='#3366cc'><b>"+self.size_update+"</b></span>"
    293448               
    294                 self.version_label.set_markup(msg_version)
     449                self.version_available_label.set_markup(msg_version_available)
     450                self.version_update_label.set_markup(msg_version_update)
    295451                self.number_packages_label.set_markup(msg_number)
    296452                self.size_update_label.set_markup(msg_size)
     
    302458                else:
    303459                        self.pbar.hide()
     460
    304461                       
    305462        def view_packages_clicked(self,widget,event):
     
    309466
    310467        def no_button_clicked(self,widget,event):
    311                 self.yes_button_box.hide()
    312                 self.no_button_box.hide()
    313                 msg_gather="<span><b>"+_("Checking for updates...")+"</b></span>"
    314                 self.gather_label.set_markup(msg_gather)
    315                 #self.stack.set_visible_child_name("update")   
    316                 self.no_mirror=True
     468               
     469                self.response=1
    317470
    318471        def arrow_clicked(self,widget,event):
Note: See TracChangeset for help on using the changeset viewer.