source: lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/loadStore.py @ 3275

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

wip on packaging

File size: 1.9 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                flags=[appstream.StoreLoadFlags.APP_INFO_SYSTEM,appstream.StoreLoadFlags.APP_INSTALL,appstream.StoreLoadFlags.APP_INFO_USER,appstream.StoreLoadFlags.DESKTOP,appstream.StoreLoadFlags.APPDATA,appstream.StoreLoadFlags.ALLOW_VETO]
40                for flag in flags:
41                        try:
42                                self._debug("Loading "+str(flag))
43                                store.load(flag)
44                        except:
45                                print ("Failed to load"+str(flag))
46                                pass
47                store=self._sanitize_store(store)
48                self.store=store
49                return(store)
50        #def load_store
51
52        def _parse_desktop(self,store): #DEPRECATED
53                desktopDir='/usr/share/applications'
54                return(store)
55                applist=[]
56                for app in store.get_apps():
57                        if os.path.isfile(desktopDir+'/'+app.get_id()):
58                                try:
59                                        app.parse_file(desktopDir+'/'+desktop,appstream.AppParseFlags.APPEND_DATA)
60                                        store.add_app(app)
61                                except Exception as e:
62                                        pass
63#                               for veto in app.get_vetos():
64#                                       app.remove_veto(veto)
65#                                       store.add_app(app)
66                return(store)
67        #def _parse_desktop
68
69        def _sanitize_store(self,store):
70                apps_to_remove=[]
71                applist=store.get_apps()
72                for app in applist:
73                        if not app.get_pkgnames():
74                                store.remove_app(app)
75                return (store)
76        #def _sanitize_store
Note: See TracBrowser for help on using the repository browser.