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

Last change on this file since 3105 was 3105, checked in by Juanma, 2 years ago

wip on syslog

File size: 2.2 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):
30                self.store=appstream.Store()
31                if action=='load':
32                        self.load_store(self.store)
33                self.progress=100
34                return (self.store)
35        #def execute_action
36
37        def load_store(self,store):
38                iconPath='/usr/share/icons/hicolor/128x128'
39                store.load(appstream.StoreLoadFlags.APP_INFO_SYSTEM)
40                store.load(appstream.StoreLoadFlags.APP_INSTALL)
41                store.load(appstream.StoreLoadFlags.APP_INFO_USER)
42                store.load(appstream.StoreLoadFlags.DESKTOP)
43                lliurex_dir="/usr/share/app-info/xmls"
44                if os.path.exists(lliurex_dir):
45                        for lliurex in os.listdir(lliurex_dir):
46                                if lliurex.endswith('.xml'):
47                                        storePath=Gio.File.new_for_path(lliurex_dir+'/'+lliurex)
48                                        self._debug("Adding file "+lliurex_dir+'/'+lliurex)
49                                        try:
50                                                store.from_file(storePath,iconPath,None)
51                                        except Exception as e:
52                                                self._debug("Couldn't add file "+lliurex+" to store")
53                                                self._debug("Reason: "+str(e))
54                                                pass
55                store=self._sanitize_store(store)
56                self.store=store
57                return(store)
58        #def load_store
59
60        def _parse_desktop(self,store):
61                desktopDir='/usr/share/applications'
62                return(store)
63                applist=[]
64                for app in store.get_apps():
65                        if os.path.isfile(desktopDir+'/'+app.get_id()):
66                                try:
67                                        app.parse_file(desktopDir+'/'+desktop,appstream.AppParseFlags.APPEND_DATA)
68                                        store.add_app(app)
69                                except Exception as e:
70                                        pass
71#                               for veto in app.get_vetos():
72#                                       app.remove_veto(veto)
73#                                       store.add_app(app)
74                return(store)
75        #def _parse_desktop
76
77        def _sanitize_store(self,store):
78                apps_to_remove=[]
79                applist=store.get_apps()
80                for app in applist:
81                        if not app.get_pkgnames():
82                                store.remove_app(app)
83       
84                return (store)
85        #def _sanitize_store
Note: See TracBrowser for help on using the repository browser.