From 86d582546403e5a403249f7489c4ddaced39df0d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Ouellet Date: Tue, 22 Nov 2016 00:41:32 -0500 Subject: [PATCH] Require typing name of VM to remove It is too easy to accidentally delete the wrong VM if you use lots of short-term (but longer than disposable) VMs and have built muscle memory of just clicking "Ok" in the deletion confirmation box. This patch requires you to type the full name of the VM, inspired by repo deletion confirmation on GitHub. --- qubesmanager/main.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 913ac2b..f4a8c3e 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -1011,15 +1011,25 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): return - reply = QMessageBox.question( + (requested_name, ok) = QInputDialog.getText( None, "VM Removal Confirmation", "Are you sure you want to remove the VM '{0}'?
" - "All data on this VM's private storage will be lost!" - .format(vm.name), - QMessageBox.Yes | QMessageBox.Cancel) + "All data on this VM's private storage will be lost!

" + "Type the name of the VM ({1}) below to confirm:" + .format(vm.name, vm.name)) - if reply == QMessageBox.Yes: + if not ok: + # user clicked cancel + return + elif requested_name != vm.name: + # name did not match + QMessageBox.warning(None, "VM removal confirmation failed", + "Entered name did not match! Not removing {0}.".format(vm.name)) + return + + else: + # remove the VM thread_monitor = ThreadMonitor() thread = threading.Thread(target=self.do_remove_vm, args=(vm, thread_monitor))