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.
This commit is contained in:
Jean-Philippe Ouellet 2016-11-22 00:41:32 -05:00
parent b51cd2dd5f
commit 86d5825464
No known key found for this signature in database
GPG Key ID: E7E455013D042EA1

View File

@ -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 <b>'{0}'</b>?<br>"
"<small>All data on this VM's private storage will be lost!</small>"
.format(vm.name),
QMessageBox.Yes | QMessageBox.Cancel)
"All data on this VM's private storage will be lost!<br><br>"
"Type the name of the VM (<b>{1}</b>) 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))