diff --git a/qubesmanager/restore.py b/qubesmanager/restore.py
index 83e1f7b..7152b54 100644
--- a/qubesmanager/restore.py
+++ b/qubesmanager/restore.py
@@ -48,7 +48,7 @@ from ui_restoredlg import *
from multiselectwidget import *
from backup_utils import *
-from multiprocessing import Queue
+from multiprocessing import Queue, Event
from multiprocessing.queues import Empty
class RestoreVMsWindow(Ui_Restore, QWizard):
@@ -69,6 +69,7 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
self.feedback_queue = Queue()
self.canceled = False
self.tmpdir_to_remove = None
+ self.error_detected = Event()
self.excluded = {}
@@ -90,6 +91,8 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
self.update_device_appvm_enabled)
self.connect(self.appvm_combobox, SIGNAL("activated(int)"),
self.update_device_appvm_enabled)
+ self.connect(self.verify_only, SIGNAL("stateChanged(int)"),
+ self.on_verify_only_toogled)
self.select_dir_page.isComplete = self.has_selected_dir
self.select_vms_page.isComplete = self.has_selected_vms
@@ -120,6 +123,9 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
def on_ignore_uname_mismatch_toggled(self, checked):
self.restore_options['ignore-username-mismatch'] = checked
+ def on_verify_only_toogled(self, checked):
+ self.restore_options['verify-only'] = bool(checked)
+
def cleanupPage(self, p_int):
if self.page(p_int) is self.select_vms_page:
self.vms_to_restore = None
@@ -173,6 +179,7 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
self.func_output.append(s)
def restore_error_output(self, s):
+ self.error_detected.set()
self.feedback_queue.put((SIGNAL("restore_progress(QString)"),
u'{0}'.format(s)))
@@ -207,8 +214,9 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
self.emit(SIGNAL("restore_progress(QString)"),
'{0}'
.format("Restore aborted!"))
- elif len(err_msg) > 0:
- thread_monitor.set_error_msg('\n'.join(err_msg))
+ elif len(err_msg) > 0 or self.error_detected.is_set():
+ if len(err_msg) > 0:
+ thread_monitor.set_error_msg('\n'.join(err_msg))
self.emit(SIGNAL("restore_progress(QString)"),
'{0}'
.format("Finished with errors!"))
diff --git a/restoredlg.ui b/restoredlg.ui
index 451cfcc..051a9a6 100644
--- a/restoredlg.ui
+++ b/restoredlg.ui
@@ -56,7 +56,7 @@
- -
+
-
Ignore dom0 username mismatch while restoring homedir.
@@ -66,6 +66,13 @@
+ -
+
+
+ Verify backup integrity, do not restore the data
+
+
+