backups: UI improvements
Prompt for retype the backup password, more thoroughly test if the user entered all required informations, use "dom0" instead of "None" for local backup indication.
This commit is contained in:
parent
ced6fc672b
commit
21d72cdc6c
41
backupdlg.ui
41
backupdlg.ui
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>700</width>
|
<width>650</width>
|
||||||
<height>399</height>
|
<height>399</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -215,7 +215,10 @@
|
|||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Backup directory:</string>
|
<string>Backup directory or VM command:</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -227,7 +230,14 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Backup security</string>
|
<string>Backup security</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_4">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_12">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p>Encryption / Verification<br/>passphrase:</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_10">
|
<widget class="QLabel" name="label_10">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -235,13 +245,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_11">
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p>Encryption / Verification<br/>passphrase:</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QCheckBox" name="encryption_checkbox">
|
<widget class="QCheckBox" name="encryption_checkbox">
|
||||||
<property name="layoutDirection">
|
<property name="layoutDirection">
|
||||||
@ -255,13 +258,27 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1" colspan="2">
|
<item row="5" column="0">
|
||||||
|
<widget class="QLabel" name="label_11">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p>Reenter passphrase:</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
<widget class="QLineEdit" name="passphrase_line_edit">
|
<widget class="QLineEdit" name="passphrase_line_edit">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLineEdit" name="passphrase_line_edit_verify">
|
||||||
|
<property name="echoMode">
|
||||||
|
<enum>QLineEdit::Password</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -317,7 +334,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<widget class="QWizardPage" name="commit_page">
|
<widget class="QWizardPage" name="commit_page">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="progress_status">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>9</pointsize>
|
<pointsize>9</pointsize>
|
||||||
|
@ -93,12 +93,24 @@ class BackupVMsWindow(Ui_Backup, QWizard):
|
|||||||
self.shutdown_running_vms_button.clicked.connect(self.shutdown_all_running_selected)
|
self.shutdown_running_vms_button.clicked.connect(self.shutdown_all_running_selected)
|
||||||
self.connect(self.dev_combobox, SIGNAL("activated(int)"), self.dev_combobox_activated)
|
self.connect(self.dev_combobox, SIGNAL("activated(int)"), self.dev_combobox_activated)
|
||||||
self.connect(self, SIGNAL("backup_progress(int)"), self.progress_bar.setValue)
|
self.connect(self, SIGNAL("backup_progress(int)"), self.progress_bar.setValue)
|
||||||
|
self.dir_line_edit.connect(self.dir_line_edit, SIGNAL("textChanged(QString)"), self.backup_location_changed)
|
||||||
|
|
||||||
self.select_vms_page.isComplete = self.has_selected_vms
|
self.select_vms_page.isComplete = self.has_selected_vms
|
||||||
self.select_dir_page.isComplete = self.has_selected_dir
|
self.select_dir_page.isComplete = self.has_selected_dir_and_pass
|
||||||
#FIXME
|
#FIXME
|
||||||
#this causes to run isComplete() twice, I don't know why
|
#this causes to run isComplete() twice, I don't know why
|
||||||
self.select_vms_page.connect(self.select_vms_widget, SIGNAL("selected_changed()"), SIGNAL("completeChanged()"))
|
self.select_vms_page.connect(
|
||||||
|
self.select_vms_widget,
|
||||||
|
SIGNAL("selected_changed()"),
|
||||||
|
SIGNAL("completeChanged()"))
|
||||||
|
self.passphrase_line_edit.connect(
|
||||||
|
self.passphrase_line_edit,
|
||||||
|
SIGNAL("textChanged(QString)"),
|
||||||
|
self.backup_location_changed)
|
||||||
|
self.passphrase_line_edit_verify.connect(
|
||||||
|
self.passphrase_line_edit_verify,
|
||||||
|
SIGNAL("textChanged(QString)"),
|
||||||
|
self.backup_location_changed)
|
||||||
|
|
||||||
self.total_size = 0
|
self.total_size = 0
|
||||||
self.__fill_vms_list__()
|
self.__fill_vms_list__()
|
||||||
@ -354,10 +366,16 @@ class BackupVMsWindow(Ui_Backup, QWizard):
|
|||||||
def has_selected_vms(self):
|
def has_selected_vms(self):
|
||||||
return self.select_vms_widget.selected_list.count() > 0
|
return self.select_vms_widget.selected_list.count() > 0
|
||||||
|
|
||||||
def has_selected_dir(self):
|
def has_selected_dir_and_pass(self):
|
||||||
return self.backup_dir != None
|
if not len(self.passphrase_line_edit.text()):
|
||||||
|
return False
|
||||||
|
if self.passphrase_line_edit.text() != self.passphrase_line_edit_verify.text():
|
||||||
|
return False
|
||||||
|
return self.backup_location != None
|
||||||
|
|
||||||
|
def backup_location_changed(self, new_dir = None):
|
||||||
|
self.backup_location = str(self.dir_line_edit.text())
|
||||||
|
self.select_dir_page.emit(SIGNAL("completeChanged()"))
|
||||||
|
|
||||||
|
|
||||||
# Bases on the original code by:
|
# Bases on the original code by:
|
||||||
|
@ -77,7 +77,7 @@ def umount_device(dev_mount_path):
|
|||||||
|
|
||||||
def fill_appvms_list(dialog):
|
def fill_appvms_list(dialog):
|
||||||
dialog.appvm_combobox.clear()
|
dialog.appvm_combobox.clear()
|
||||||
dialog.appvm_combobox.addItem("None")
|
dialog.appvm_combobox.addItem("dom0")
|
||||||
|
|
||||||
dialog.appvm_combobox.setCurrentIndex(0) #current selected is null ""
|
dialog.appvm_combobox.setCurrentIndex(0) #current selected is null ""
|
||||||
|
|
||||||
|
@ -88,6 +88,7 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
|
|||||||
|
|
||||||
self.select_dir_page.isComplete = self.has_selected_dir
|
self.select_dir_page.isComplete = self.has_selected_dir
|
||||||
self.select_vms_page.isComplete = self.has_selected_vms
|
self.select_vms_page.isComplete = self.has_selected_vms
|
||||||
|
self.confirm_page.isComplete = self.all_vms_good
|
||||||
#FIXME
|
#FIXME
|
||||||
#this causes to run isComplete() twice, I don't know why
|
#this causes to run isComplete() twice, I don't know why
|
||||||
self.select_vms_page.connect(self.select_vms_widget, SIGNAL("selected_changed()"), SIGNAL("completeChanged()"))
|
self.select_vms_page.connect(self.select_vms_widget, SIGNAL("selected_changed()"), SIGNAL("completeChanged()"))
|
||||||
@ -222,6 +223,7 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
|
|||||||
self.confirm_text_edit.setFontFamily("Monospace")
|
self.confirm_text_edit.setFontFamily("Monospace")
|
||||||
self.confirm_text_edit.setText("\n".join(self.func_output))
|
self.confirm_text_edit.setText("\n".join(self.func_output))
|
||||||
|
|
||||||
|
self.confirm_page.emit(SIGNAL("completeChanged()"))
|
||||||
|
|
||||||
elif self.currentPage() is self.commit_page:
|
elif self.currentPage() is self.commit_page:
|
||||||
self.button(self.CancelButton).setDisabled(True)
|
self.button(self.CancelButton).setDisabled(True)
|
||||||
@ -243,6 +245,13 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
|
|||||||
umount_device(self.dev_mount_path)
|
umount_device(self.dev_mount_path)
|
||||||
self.button(self.FinishButton).setEnabled(True)
|
self.button(self.FinishButton).setEnabled(True)
|
||||||
|
|
||||||
|
def all_vms_good(self):
|
||||||
|
for vminfo in self.vms_to_restore.values():
|
||||||
|
if not vminfo['good-to-go']:
|
||||||
|
print vminfo['vm'].name, str(vminfo)
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
if self.dev_mount_path != None:
|
if self.dev_mount_path != None:
|
||||||
umount_device(self.dev_mount_path)
|
umount_device(self.dev_mount_path)
|
||||||
|
Loading…
Reference in New Issue
Block a user