Jelajahi Sumber

Merge remote-tracking branch 'qubesos/pr/10'

* qubesos/pr/10:
  Require typing name of VM to remove

Fixes QubesOS/qubes-issues#1329
Marek Marczykowski-Górecki 7 tahun lalu
induk
melakukan
cf0fbcd908
1 mengubah file dengan 15 tambahan dan 5 penghapusan
  1. 15 5
      qubesmanager/main.py

+ 15 - 5
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 <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))