source: lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/loadStore.py @ 3099

Last change on this file since 3099 was 3099, checked in by Juanma, 4 years ago

wip on plugin architecture

File size: 2.1 KB
Line 
1import os
2import gi
3from gi.repository import Gio
4gi.require_version('AppStreamGlib', '1.0')
5from gi.repository import AppStreamGlib as appstream
6
7class loadstore:
8        def __init__(self):
9                self.dbg=0
10                self.pluginInfo={'load':'*'}
11                self.store=''
12                self.progress=0
13        #def __init__
14
15        def set_debug(self,dbg='1'):
16                self.dbg=int(dbg)
17                self._debug ("Debug enabled")
18        #def set_debug
19
20        def _debug(self,msg=''):
21                if self.dbg==1:
22                        print ('_debug Load: '+msg)
23        #def _debug
24
25        def register(self):
26                return(self.pluginInfo)
27        #def register
28
29        def execute_action(self,action,store):
30                if action=='load':
31                        self.load_store(store)
32                self.progress=100
33                return (self.store)
34        #def execute_action
35
36        def load_store(self,store):
37                iconPath='/usr/share/icons/hicolor/128x128'
38                store.load(appstream.StoreLoadFlags.APP_INFO_SYSTEM)
39                store.load(appstream.StoreLoadFlags.APP_INSTALL)
40                store.load(appstream.StoreLoadFlags.APP_INFO_USER)
41                store.load(appstream.StoreLoadFlags.DESKTOP)
42                lliurex_dir="/usr/share/app-info/xmls"
43                if os.path.exists(lliurex_dir):
44                        for lliurex in os.listdir(lliurex_dir):
45                                if lliurex.endswith('.xml'):
46                                        storePath=Gio.File.new_for_path(lliurex_dir+'/'+lliurex)
47                                        self._debug("Adding file "+lliurex_dir+'/'+lliurex)
48                                        try:
49                                                store.from_file(storePath,iconPath,None)
50                                        except Exception as e:
51                                                self._debug("Couldn't add file "+lliurex+" to store")
52                                                self._debug("Reason: "+str(e))
53                                                pass
54                store=self._sanitize_store(store)
55                self.store=store
56                return(store)
57        #def load_store
58
59        def _parse_desktop(self,store):
60                desktopDir='/usr/share/applications'
61                return(store)
62                applist=[]
63                for app in store.get_apps():
64                        if os.path.isfile(desktopDir+'/'+app.get_id()):
65                                try:
66                                        app.parse_file(desktopDir+'/'+desktop,appstream.AppParseFlags.APPEND_DATA)
67                                        store.add_app(app)
68                                except Exception as e:
69                                        pass
70#                               for veto in app.get_vetos():
71#                                       app.remove_veto(veto)
72#                                       store.add_app(app)
73                return(store)
74        #def _parse_desktop
75
76        def _sanitize_store(self,store):
77                apps_to_remove=[]
78                applist=store.get_apps()
79                for app in applist:
80                        if not app.get_pkgnames():
81                                store.remove_app(app)
82       
83                return (store)
84        #def _sanitize_store
Note: See TracBrowser for help on using the repository browser.