diff --git a/qubesmanager/qube_manager.py b/qubesmanager/qube_manager.py index c2d0dc3..a41f180 100644 --- a/qubesmanager/qube_manager.py +++ b/qubesmanager/qube_manager.py @@ -670,15 +670,9 @@ class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QMainWindow): self.frame_width = 0 self.frame_height = 0 + self.init_template_menu() self.context_menu = QMenu(self) - for vm in self.qubes_app.domains: - if vm.klass == 'TemplateVM': - action = self.template_menu.addAction(vm.name) - action.setData(vm.name) - action.setCheckable(True) - action.triggered.connect(partial(self.change_template, vm.name)) - self.context_menu.addAction(self.action_settings) self.context_menu.addMenu(self.template_menu) self.context_menu.addAction(self.action_editfwrules) @@ -831,6 +825,15 @@ class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QMainWindow): progress.setValue(row_no) + def init_template_menu(self): + self.template_menu.clear() + for vm in self.qubes_app.domains: + if vm.klass == 'TemplateVM': + action = self.template_menu.addAction(vm.name) + action.setData(vm.name) + action.setCheckable(True) + action.triggered.connect(partial(self.change_template, vm.name)) + def setup_application(self): self.qt_app.setApplicationName(self.tr("Qube Manager")) self.qt_app.setWindowIcon(QIcon.fromTheme("qubes-manager")) @@ -888,12 +891,15 @@ class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QMainWindow): domain = self.qubes_app.domains[vm] self.qubes_cache.add_vm(domain) self.proxy.invalidate() + if domain.klass == 'TemplateVM': + self.init_template_menu() except (exc.QubesException, KeyError): pass def on_domain_removed(self, _submitter, _event, **kwargs): self.qubes_cache.remove_vm(name=kwargs['vm']) self.proxy.invalidate() + self.init_template_menu() def on_domain_status_changed(self, vm, event, **_kwargs): try: