settings: fix settings applications list

Fix qvm-appmenus usage, do nothing when no change was made.
This commit is contained in:
Marek Marczykowski-Górecki 2017-07-30 18:55:32 +02:00
parent 3d32bd8cbc
commit 861d7c5413
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -51,10 +51,11 @@ class AppmenuSelectManager:
def __init__(self, vm, apps_multiselect, parent=None): def __init__(self, vm, apps_multiselect, parent=None):
self.vm = vm self.vm = vm
self.app_list = apps_multiselect # this is a multiselect wiget self.app_list = apps_multiselect # this is a multiselect wiget
self.whitelisted = None
self.fill_apps_list() self.fill_apps_list()
def fill_apps_list(self): def fill_apps_list(self):
whitelisted = [line for line in subprocess.check_output( self.whitelisted = [line for line in subprocess.check_output(
['qvm-appmenus', '--get-whitelist', self.vm.name] ['qvm-appmenus', '--get-whitelist', self.vm.name]
).decode().strip().split('\n') if line] ).decode().strip().split('\n') if line]
@ -69,7 +70,7 @@ class AppmenuSelectManager:
self.vm.name]).decode().splitlines()] self.vm.name]).decode().splitlines()]
for a in available_appmenus: for a in available_appmenus:
if a.ident in whitelisted: if a.ident in self.whitelisted:
self.app_list.selected_list.addItem(a) self.app_list.selected_list.addItem(a)
else: else:
self.app_list.available_list.addItem(a) self.app_list.available_list.addItem(a)
@ -77,19 +78,18 @@ class AppmenuSelectManager:
self.app_list.available_list.sortItems() self.app_list.available_list.sortItems()
self.app_list.selected_list.sortItems() self.app_list.selected_list.sortItems()
def save_list_of_selected(self): def save_appmenu_select_changes(self):
added = []
new_whitelisted = [self.app_list.selected_list.item(i).ident new_whitelisted = [self.app_list.selected_list.item(i).ident
for i in range(self.app_list.selected_list.count())] for i in range(self.app_list.selected_list.count())]
subprocess.check_call( if set(new_whitelisted) == set(self.whitelisted):
'qvm-appmenus', '--set-whitelist', '-', self.vm.name, return False
input='\n'.join(new_whitelisted))
p = subprocess.Popen([
'qvm-appmenus', '--set-whitelist', '-', '--update', self.vm.name],
stdin=subprocess.PIPE)
p.communicate('\n'.join(new_whitelisted).encode())
if p.returncode != 0:
raise RuntimeError('qvm-appmenus --set-whitelist failed')
return True return True
def save_appmenu_select_changes(self):
if self.save_list_of_selected():
self.vm.appmenus_recreate()