Changeset 2662 for lliurex-up/trunk


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

WIP

Location:
lliurex-up/trunk/fuentes/lliurex-up-gui
Files:
2 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):
  • lliurex-up/trunk/fuentes/lliurex-up-gui/rsrc/lliurex-up.ui

    r2654 r2662  
    134134          <packing>
    135135            <property name="expand">False</property>
    136             <property name="fill">True</property>
     136            <property name="fill">False</property>
    137137            <property name="position">0</property>
    138138          </packing>
     
    179179                <property name="visible">True</property>
    180180                <property name="can_focus">False</property>
    181                 <property name="valign">center</property>
    182181                <property name="orientation">vertical</property>
     182                <property name="homogeneous">True</property>
    183183                <child>
    184184                  <placeholder/>
     
    195195                <property name="visible">True</property>
    196196                <property name="can_focus">False</property>
     197                <property name="margin_bottom">5</property>
    197198                <property name="orientation">vertical</property>
    198199                <child>
     
    202203                    <property name="margin_left">5</property>
    203204                    <property name="margin_right">5</property>
     205                    <property name="margin_bottom">5</property>
    204206                  </object>
    205207                  <packing>
     
    296298            <property name="can_focus">False</property>
    297299            <child>
    298               <object class="GtkBox" id="return_arrow_box">
    299                 <property name="visible">True</property>
    300                 <property name="can_focus">False</property>
    301                 <property name="halign">start</property>
    302                 <property name="margin_right">5</property>
    303                 <property name="orientation">vertical</property>
    304                 <child>
    305                   <object class="GtkEventBox" id="return_arrow_eventbox">
    306                     <property name="visible">True</property>
    307                     <property name="can_focus">False</property>
    308                     <child>
    309                       <object class="GtkImage" id="arrow_image">
    310                         <property name="visible">True</property>
    311                         <property name="can_focus">False</property>
    312                         <property name="pixbuf">arrow.svg</property>
    313                       </object>
    314                     </child>
    315                   </object>
    316                   <packing>
    317                     <property name="expand">False</property>
    318                     <property name="fill">True</property>
    319                     <property name="position">0</property>
    320                   </packing>
    321                 </child>
    322               </object>
    323               <packing>
    324                 <property name="expand">False</property>
    325                 <property name="fill">True</property>
    326                 <property name="position">0</property>
    327               </packing>
     300              <placeholder/>
    328301            </child>
    329302            <child>
     
    355328            <child>
    356329              <object class="GtkScrolledWindow" id="packages_scrolledwindow">
     330                <property name="height_request">200</property>
    357331                <property name="visible">True</property>
    358332                <property name="can_focus">True</property>
     
    380354        <property name="expand">False</property>
    381355        <property name="fill">True</property>
    382         <property name="position">1</property>
     356        <property name="position">0</property>
    383357      </packing>
    384358    </child>
     
    394368            <property name="visible">True</property>
    395369            <property name="can_focus">False</property>
    396             <property name="label" translatable="yes">label</property>
     370            <property name="label" translatable="yes">Changelog</property>
    397371          </object>
    398372          <packing>
     
    408382            <child>
    409383              <object class="GtkScrolledWindow" id="changelog_scrolledwindow">
     384                <property name="height_request">-1</property>
    410385                <property name="visible">True</property>
    411386                <property name="can_focus">True</property>
     
    429404      <packing>
    430405        <property name="expand">False</property>
     406        <property name="fill">False</property>
     407        <property name="position">1</property>
     408      </packing>
     409    </child>
     410    <child>
     411      <object class="GtkBox" id="return_arrow_box">
     412        <property name="visible">True</property>
     413        <property name="can_focus">False</property>
     414        <property name="orientation">vertical</property>
     415        <child>
     416          <object class="GtkEventBox" id="return_arrow_eventbox">
     417            <property name="visible">True</property>
     418            <property name="can_focus">False</property>
     419            <child>
     420              <object class="GtkImage" id="arrow_image">
     421                <property name="visible">True</property>
     422                <property name="can_focus">False</property>
     423                <property name="margin_left">10</property>
     424                <property name="margin_right">10</property>
     425                <property name="pixbuf">arrow.svg</property>
     426              </object>
     427            </child>
     428          </object>
     429          <packing>
     430            <property name="expand">False</property>
     431            <property name="fill">True</property>
     432            <property name="position">0</property>
     433          </packing>
     434        </child>
     435      </object>
     436      <packing>
     437        <property name="expand">False</property>
    431438        <property name="fill">True</property>
    432439        <property name="position">2</property>
    433440      </packing>
    434     </child>
    435     <child>
    436       <placeholder/>
    437441    </child>
    438442  </object>
     
    458462            <property name="column_homogeneous">True</property>
    459463            <child>
    460               <object class="GtkLabel" id="version_label">
     464              <object class="GtkLabel" id="version_available_label">
    461465                <property name="visible">True</property>
    462466                <property name="can_focus">False</property>
     
    482486              <packing>
    483487                <property name="left_attach">0</property>
    484                 <property name="top_attach">1</property>
     488                <property name="top_attach">2</property>
    485489              </packing>
    486490            </child>
     
    496500              <packing>
    497501                <property name="left_attach">0</property>
    498                 <property name="top_attach">2</property>
     502                <property name="top_attach">3</property>
    499503              </packing>
    500504            </child>
     
    543547              <packing>
    544548                <property name="left_attach">1</property>
     549                <property name="top_attach">2</property>
     550              </packing>
     551            </child>
     552            <child>
     553              <object class="GtkLabel" id="version_update_label">
     554                <property name="visible">True</property>
     555                <property name="can_focus">False</property>
     556                <property name="halign">start</property>
     557                <property name="margin_left">35</property>
     558                <property name="margin_top">5</property>
     559                <property name="margin_bottom">5</property>
     560                <property name="lines">0</property>
     561              </object>
     562              <packing>
     563                <property name="left_attach">0</property>
    545564                <property name="top_attach">1</property>
    546565              </packing>
     
    552571              <placeholder/>
    553572            </child>
     573            <child>
     574              <placeholder/>
     575            </child>
    554576          </object>
    555577          <packing>
     
    561583      </object>
    562584      <packing>
    563         <property name="expand">True</property>
    564         <property name="fill">True</property>
     585        <property name="expand">False</property>
     586        <property name="fill">False</property>
    565587        <property name="position">1</property>
    566588      </packing>
     
    577599        <property name="orientation">vertical</property>
    578600        <child>
    579           <object class="GtkButton" id="update_button">
    580             <property name="visible">True</property>
    581             <property name="can_focus">True</property>
    582             <property name="receives_default">True</property>
     601          <object class="GtkBox" id="update_button_box">
     602            <property name="visible">True</property>
     603            <property name="can_focus">False</property>
    583604            <property name="halign">center</property>
    584             <property name="valign">center</property>
    585             <child>
    586               <object class="GtkBox" id="box3">
    587                 <property name="visible">True</property>
    588                 <property name="can_focus">False</property>
    589                 <property name="margin_left">10</property>
    590                 <property name="margin_right">10</property>
    591                 <property name="margin_top">5</property>
    592                 <property name="margin_bottom">5</property>
    593                 <property name="orientation">vertical</property>
    594                 <property name="homogeneous">True</property>
    595                 <child>
    596                   <object class="GtkImage" id="udpdate_image">
     605            <property name="orientation">vertical</property>
     606            <child>
     607              <object class="GtkEventBox" id="update_button_eventbox">
     608                <property name="visible">True</property>
     609                <property name="can_focus">False</property>
     610                <child>
     611                  <object class="GtkBox" id="box3">
    597612                    <property name="visible">True</property>
    598613                    <property name="can_focus">False</property>
    599                     <property name="pixbuf">update.png</property>
     614                    <property name="orientation">vertical</property>
     615                    <child>
     616                      <object class="GtkImage" id="udpate_image">
     617                        <property name="visible">True</property>
     618                        <property name="can_focus">False</property>
     619                        <property name="margin_top">15</property>
     620                        <property name="margin_bottom">2</property>
     621                        <property name="pixbuf">update.png</property>
     622                      </object>
     623                      <packing>
     624                        <property name="expand">False</property>
     625                        <property name="fill">True</property>
     626                        <property name="position">0</property>
     627                      </packing>
     628                    </child>
     629                    <child>
     630                      <object class="GtkLabel" id="update_button_label">
     631                        <property name="visible">True</property>
     632                        <property name="can_focus">False</property>
     633                        <property name="margin_left">10</property>
     634                        <property name="margin_right">10</property>
     635                        <property name="margin_bottom">15</property>
     636                        <property name="label" translatable="yes">Update now</property>
     637                      </object>
     638                      <packing>
     639                        <property name="expand">False</property>
     640                        <property name="fill">True</property>
     641                        <property name="position">1</property>
     642                      </packing>
     643                    </child>
    600644                  </object>
    601                   <packing>
    602                     <property name="expand">False</property>
    603                     <property name="fill">True</property>
    604                     <property name="position">0</property>
    605                   </packing>
    606                 </child>
    607                 <child>
    608                   <object class="GtkLabel" id="update_button_label">
    609                     <property name="visible">True</property>
    610                     <property name="can_focus">False</property>
    611                     <property name="label" translatable="yes">Update now</property>
    612                   </object>
    613                   <packing>
    614                     <property name="expand">False</property>
    615                     <property name="fill">True</property>
    616                     <property name="position">1</property>
    617                   </packing>
    618                 </child>
    619               </object>
    620             </child>
    621           </object>
    622           <packing>
    623             <property name="expand">False</property>
    624             <property name="fill">True</property>
     645                </child>
     646              </object>
     647              <packing>
     648                <property name="expand">False</property>
     649                <property name="fill">True</property>
     650                <property name="position">0</property>
     651              </packing>
     652            </child>
     653          </object>
     654          <packing>
     655            <property name="expand">False</property>
     656            <property name="fill">False</property>
    625657            <property name="position">0</property>
    626658          </packing>
     
    672704          <packing>
    673705            <property name="expand">False</property>
    674             <property name="fill">True</property>
     706            <property name="fill">False</property>
    675707            <property name="position">1</property>
    676708          </packing>
     
    679711      <packing>
    680712        <property name="expand">False</property>
    681         <property name="fill">True</property>
     713        <property name="fill">False</property>
    682714        <property name="position">3</property>
    683715      </packing>
Note: See TracChangeset for help on using the changeset viewer.