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

Last change on this file since 3646 was 3646, checked in by Juanma, 3 years ago

WIP on CLI

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                self.error=0
14        #def __init__
15
16        def set_debug(self,dbg='1'):
17                self.dbg=int(dbg)
18                self._debug ("Debug enabled")
19        #def set_debug
20
21        def _debug(self,msg=''):
22                if self.dbg==1:
23                        print ('DEBUG Load: '+msg)
24        #def _debug
25
26        def register(self):
27                return(self.pluginInfo)
28        #def register
29
30        def execute_action(self,action):
31                self.store=appstream.Store()
32                if action=='load':
33                        self._load_store(self.store)
34                self.progress=100
35                return (self.store)
36        #def execute_action
37
38        def get_error(self)
39                return (self.error)
40
41        def _load_store(self,store):
42                iconPath='/usr/share/icons/hicolor/128x128'
43                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]
44                for flag in flags:
45                        try:
46                                self._debug("Loading "+str(flag))
47                                store.load(flag)
48                        except:
49                                print ("Failed to load"+str(flag))
50                                pass
51                store=self._sanitize_store(store)
52                self.store=store
53                return(store)
54        #def load_store
55
56        def _parse_desktop(self,store): #DEPRECATED
57                desktopDir='/usr/share/applications'
58                return(store)
59                applist=[]
60                for app in store.get_apps():
61                        if os.path.isfile(desktopDir+'/'+app.get_id()):
62                                try:
63                                        app.parse_file(desktopDir+'/'+desktop,appstream.AppParseFlags.APPEND_DATA)
64                                        store.add_app(app)
65                                except Exception as e:
66                                        pass
67#                               for veto in app.get_vetos():
68#                                       app.remove_veto(veto)
69#                                       store.add_app(app)
70                return(store)
71        #def _parse_desktop
72
73        def _sanitize_store(self,store):
74                apps_to_remove=[]
75                applist=store.get_apps()
76                for app in applist:
77                        if not app.get_pkgnames():
78                                store.remove_app(app)
79                return (store)
80        #def _sanitize_store
Note: See TracBrowser for help on using the repository browser.