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 + + +