settings: fix settings applications list
Fix qvm-appmenus usage, do nothing when no change was made.
This commit is contained in:
parent
3d32bd8cbc
commit
861d7c5413
@ -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()
|
|
||||||
|
Loading…
Reference in New Issue
Block a user