Changeset 7092


Ignore:
Timestamp:
Mar 21, 2018, 6:13:59 PM (19 months ago)
Author:
Juanma
Message:

Gui supports full path for local icons * Added icons to appimages and snaps

Location:
lliurex-store/trunk/fuentes
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui/LliurexStoreManager.py

    r7075 r7092  
    1111        def __init__(self):
    1212               
    13                 self.store=lliurexstore.storeManager.StoreManager(snap=True)
     13                self.store=lliurexstore.storeManager.StoreManager(snap=True,appimage=True)
    1414                # library has its own textdomain and I am forced to change it back to lliurex-store
    1515                gettext.textdomain('lliurex-store')             
  • lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui/ResourcesManager.py

    r5703 r7092  
    4040                if icon==None:
    4141                        icon=""
     42
     43                if os.path.isfile(icon):
     44                        return(icon)
    4245               
    4346                component=pkg_info["component"]
     
    6366                                       
    6467                                        return ret_icon
    65                                
     68
    6669                ret_icon=self.package_icon
    6770                return ret_icon
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/appImageManager.py

    r7080 r7092  
    2727                self.result['status']={}
    2828                self.conf_dir=os.getenv("HOME")+"/.cache/lliurex-store"
     29                self.icons_dir=self.conf_dir+"/icons"
    2930                self.bundles_dir=self.conf_dir+"/bundles"
    3031                self.bundle_types=['appimg']
    31                 self.appimage_dir=self.conf_dir+"/appimg"
     32                self.appimage_dir=os.getenv("HOME")+"/.lliurex-store/appimg"
    3233                #To get the description of an app we must go to a specific url defined in url_info.
    3334                #$(appname) we'll be replaced with the appname so the url matches the right one.
    3435                #If other site has other url naming convention it'll be mandatory to define it with the appropiate replacements
    3536                self.repos={'probono':{'url':'https://dl.bintray.com/probono/AppImages', 'url_info':'https://bintray.com/probono/AppImages/$(appname)'}}
    36                 #Appimges not stored in a repo must be listed here, providing the download url and the info url (if there's any)
     37                #Appimges not stored in a repo must be listed in this file, providing the download url and the info url (if there's any)
    3738                self.external_appimages="/usr/share/lliurex-store/files/external_appimages.json"
    3839                self.disabled=False
     
    361362                                try:
    362363                                        if name in self.descriptions_dict.keys():
    363                                                 description=self.descriptions_dict[name]
     364                                                (description,icon)=self.descriptions_dict[name]
    364365                                        else:
    365                                                 description=self._get_description(name,info_url,repo_name)
    366                                                 self.descriptions_dict.update({name:description})
     366                                                (description,icon)=self._get_description_icon(name,info_url,repo_name)
     367                                                self.descriptions_dict.update({name:[description,icon]})
    367368                                except:
    368369                                        description=''
     370                                        icon=''
    369371                        summary=' '.join(list(description.split(' ')[:8]))
    370372                        description="This is an AppImage bundle of app "+name+". It hasn't been tested by our developers and comes from a 3rd party dev team. Please use it carefully.\n"+description
     
    383385#                       f.write("       <category>GTK</category>\n")
    384386                        f.write("  </categories>\n")
    385                         f.write("<icon type=\"cached\">"+name+"_"+name+".png</icon>\n")
     387#                       f.write("<icon type=\"cached\">"+name+"_"+name+".png</icon>\n")
     388                        f.write("<icon type=\"local\">"+icon+"</icon>\n")
    386389                        f.write("</component>\n")
    387390                        f.write("</components>\n")
     
    389392        #def _write_xml_file
    390393
    391         def _get_description(self,app_name,info_url,repo_name):
     394        def _get_description_icon(self,app_name,info_url,repo_name):
    392395                desc=''
    393                 if '$(appname)' in info_url:
    394                         info_url=info_url.replace('$(appname)',app_name)
     396                icon=''
    395397                if info_url:
     398                        if '$(appname)' in info_url:
     399                                info_url=info_url.replace('$(appname)',app_name)
    396400                        self._debug("Getting description from repo/app %s - %s "%(repo_name,info_url))
    397401                        try:
     
    401405                                                soup=BeautifulSoup(content,"html.parser")
    402406                                                description_div=soup.findAll('div', attrs={ "class" : "description-text"})
     407                                                icon_div=soup.findAll('div', attrs={ "class" : "avatar-icon avatar-large description-icon "})
    403408                                if len(description_div)>0:
    404409                                        desc=description_div[0].text
    405410                                        desc=desc.replace(':','.')
    406411                                        desc=desc.replace('&','&amp;')
     412                                if len(icon_div)>0:
     413                                        icon_str=str(icon_div[0])
     414                                        icon=icon_str.split(' ')[9]
     415                                        icon=icon.lstrip('url(')
     416                                        if icon.startswith('http'):
     417                                                icon=icon.rstrip(');"></div>')
     418                                                icon=self._download_file(icon,app_name)
     419                                        print("Icon: %s"%icon)
    407420                        except Exception as e:
    408421                                print("Can't get description from "+info_url)
    409422                                print(str(e))
    410423                                pass
    411                 return(desc)
     424                return([desc,icon])
    412425        #def _get_description
    413426
     
    425438        #def _clean_bunlde_catalogue
    426439
     440        def _download_file(self,url,app_name):
     441#               target_file=self.icons_folder+'/'+app_name+".png"
     442                target_file=self.icons_dir+'/'+app_name+".png"
     443                if not os.path.isfile(target_file):
     444#                       shutil.copy("/usr/share/icons/hicolor/128x128/apps/lliurex-store.png",target_file)
     445#                       if not os.fork():
     446                        if not os.path.isfile(target_file):
     447                                self._debug("Downloading %s to %s"%(url,target_file))
     448                                try:
     449                                        with urllib.request.urlopen(url) as response, open(target_file, 'wb') as out_file:
     450                                                bf=16*1024
     451                                                acumbf=0
     452                                                file_size=int(response.info()['Content-Length'])
     453                                                while True:
     454                                                        if acumbf>=file_size:
     455                                                            break
     456                                                        shutil.copyfileobj(response, out_file,bf)
     457                                                        acumbf=acumbf+bf
     458                                        st = os.stat(target_file)
     459                                except Exception as e:
     460                                        self._debug("Unable to download %s"%url)
     461                                        self._debug("Reason: %s"%e)
     462                                        target_file=url
     463#                               os._exit(0)
     464                return(target_file)
     465        #def _download_file
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/infoManager.py

    r7080 r7092  
    9494                                appInfo['categories']=app.get_categories()
    9595                        if app.get_icon_default():
    96                                 appInfo['icon']=app.get_icon_default().get_name()
     96                                if app.get_icon_default().get_filename():
     97                                        appInfo['icon']=app.get_icon_default().get_filename()
     98                                else:
     99                                        appInfo['icon']=app.get_icon_default().get_name()
    97100                                if appInfo['icon']==None:
    98101                                        icons=app.get_icons()
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/snapManager.py

    r7080 r7092  
    234234                                        self._debug("Unable to download %s"%url)
    235235                                        self._debug("Reason: %s"%e)
     236                                        target_file=''
    236237#                               os._exit(0)
    237238                return(target_file)
Note: See TracChangeset for help on using the changeset viewer.