From e3b8f50fee3eddfe35fc2f59b89ad3599f82f69d Mon Sep 17 00:00:00 2001 From: Agnieszka Kostrzewa Date: Sun, 22 Apr 2012 18:32:50 +0200 Subject: [PATCH] Kill VM option. --- icons/kill.png | Bin 0 -> 39321 bytes mainwindow.ui | 21 +++++++++++++++++---- qubesmanager/main.py | 25 +++++++++++++++++++++++++ resources.qrc | 2 +- 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 icons/kill.png diff --git a/icons/kill.png b/icons/kill.png new file mode 100644 index 0000000000000000000000000000000000000000..6072634c29af12ad1fefccab20f4940c7d56379a GIT binary patch literal 39321 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 + @@ -318,7 +319,7 @@ Start/Resume VM - Start/Resume a VM + Start/Resume selected VM @@ -333,7 +334,7 @@ Pause VM - Pause a running VM + Pause selected VM @@ -348,7 +349,7 @@ Shutdown VM - Shutdown a running VM + Shutdown selected VM @@ -386,7 +387,7 @@ true - true + false @@ -553,6 +554,18 @@ State + + + + :/killvm.png:/killvm.png + + + Kill VM + + + Kill selected VM + + diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 12b42fe..3da1232 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -608,6 +608,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.context_menu.addAction(self.action_resumevm) self.context_menu.addAction(self.action_pausevm) self.context_menu.addAction(self.action_shutdownvm) + self.context_menu.addAction(self.action_killvm) self.context_menu.addAction(self.action_appmenus) self.context_menu.addAction(self.action_editfwrules) self.context_menu.addAction(self.action_updatevm) @@ -896,6 +897,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.action_resumevm.setEnabled(not vm.last_running) self.action_pausevm.setEnabled(vm.last_running and vm.qid != 0) self.action_shutdownvm.setEnabled(vm.last_running and vm.qid != 0) + self.action_killvm.setEnabled(vm.last_running and vm.qid != 0) self.action_appmenus.setEnabled(not vm.is_netvm()) self.action_editfwrules.setEnabled(vm.is_networked() and not (vm.is_netvm() and not vm.is_proxyvm())) self.action_updatevm.setEnabled(vm.is_updateable() or vm.qid == 0) @@ -905,6 +907,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.action_resumevm.setEnabled(False) self.action_pausevm.setEnabled(False) self.action_shutdownvm.setEnabled(False) + self.action_killvm.setEnabled(False) self.action_appmenus.setEnabled(False) self.action_editfwrules.setEnabled(False) self.action_updatevm.setEnabled(False) @@ -1170,6 +1173,28 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): QTimer.singleShot (vm_shutdown_timeout, self.shutdown_monitor[vm.qid].check_if_vm_has_shutdown) + @pyqtSlot(name='on_action_killvm_triggered') + def action_killvm_triggered(self): + vm = self.get_selected_vm() + assert vm.is_running() + + reply = QMessageBox.question(None, "VM Kill Confirmation", + "Are you sure you want to kill the VM '{0}'?
" + "This will end (not shutdown!) all the running applications within this VM.".format(vm.name), + QMessageBox.Yes | QMessageBox.Cancel, QMessageBox.Cancel) + + app.processEvents() + + if reply == QMessageBox.Yes: + try: + vm.force_shutdown() + except Exception as ex: + QMessageBox.critical (None, "Error while killing VM!", "An exception ocurred while killing {0}.
ERROR: {1}".format(vm.name, ex)) + return + + trayIcon.showMessage ("Qubes Manager", "VM '{0}' killed!".format(vm.name), msecs=3000) + + @pyqtSlot(name='on_action_settings_triggered') def action_settings_triggered(self): diff --git a/resources.qrc b/resources.qrc index 7d34360..34add3b 100644 --- a/resources.qrc +++ b/resources.qrc @@ -35,9 +35,9 @@ icons/createvm.png icons/removevm.png icons/shutdownvm.png + icons/kill.png icons/resumevm.png icons/pausevm.png - icons/showallvms.png icons/showcpuload.png