diff --git a/icons/eye-off.svg b/icons/eye-off.svg
new file mode 100644
index 0000000..77c54cb
--- /dev/null
+++ b/icons/eye-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/eye.svg b/icons/eye.svg
new file mode 100644
index 0000000..9cde243
--- /dev/null
+++ b/icons/eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/qubesmanager/backup.py b/qubesmanager/backup.py
index c1ba6e9..051bd30 100644
--- a/qubesmanager/backup.py
+++ b/qubesmanager/backup.py
@@ -121,6 +121,9 @@ class BackupVMsWindow(ui_backupdlg.Ui_Backup, QtWidgets.QWizard):
self.unrecognized_config_label.setVisible(False)
self.load_settings()
+ self.show_passwd_button.pressed.connect(self.show_password)
+ self.show_passwd_button.released.connect(self.hide_password)
+
selected = self.vms_to_include()
self.__fill_vms_list__(selected)
@@ -130,6 +133,14 @@ class BackupVMsWindow(ui_backupdlg.Ui_Backup, QtWidgets.QWizard):
self.dispatcher = dispatcher
dispatcher.add_handler('backup-progress', self.on_backup_progress)
+ def show_password(self):
+ self.passphrase_line_edit.setEchoMode(QtWidgets.QLineEdit.Normal)
+ self.show_passwd_button.setIcon(QtGui.QIcon(':/eye.svg'))
+
+ def hide_password(self):
+ self.passphrase_line_edit.setEchoMode(QtWidgets.QLineEdit.Password)
+ self.show_passwd_button.setIcon(QtGui.QIcon(':/eye-off.svg'))
+
def setup_application(self):
self.qt_app.setApplicationName(self.tr("Qubes Backup VMs"))
self.qt_app.setWindowIcon(QtGui.QIcon.fromTheme("qubes-manager"))
diff --git a/qubesmanager/restore.py b/qubesmanager/restore.py
index bda55be..5ea974c 100644
--- a/qubesmanager/restore.py
+++ b/qubesmanager/restore.py
@@ -110,6 +110,17 @@ class RestoreVMsWindow(ui_restoredlg.Ui_Restore, QtWidgets.QWizard):
backup_utils.fill_appvms_list(self)
+ self.passwd_show_button.pressed.connect(self.show_password)
+ self.passwd_show_button.released.connect(self.hide_password)
+
+ def show_password(self):
+ self.passphrase_line_edit.setEchoMode(QtWidgets.QLineEdit.Normal)
+ self.passwd_show_button.setIcon(QtGui.QIcon(':/eye.svg'))
+
+ def hide_password(self):
+ self.passphrase_line_edit.setEchoMode(QtWidgets.QLineEdit.Password)
+ self.passwd_show_button.setIcon(QtGui.QIcon(':/eye-off.svg'))
+
def setup_application(self):
self.qt_app.setApplicationName(self.tr("Qubes Restore VMs"))
self.qt_app.setWindowIcon(QtGui.QIcon.fromTheme("qubes-manager"))
diff --git a/resources.qrc b/resources.qrc
index c499d27..36ee91e 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -1,5 +1,7 @@
+ icons/eye.svg
+ icons/eye-off.svg
icons/apps.png
icons/settings.png
icons/wall.png
diff --git a/ui/backupdlg.ui b/ui/backupdlg.ui
index f1f7818..f66e0ac 100644
--- a/ui/backupdlg.ui
+++ b/ui/backupdlg.ui
@@ -256,38 +256,46 @@
Backup security
-
-
- QFormLayout::AllNonFixedFieldsGrow
-
- -
-
-
- <html><head/><body><p>Encryption / Verification<br/>passphrase:</p></body></html>
-
-
-
- -
-
-
- QLineEdit::Password
-
-
-
- -
+
+
-
<html><head/><body><p>Reenter passphrase:</p></body></html>
- -
+
-
+
+
+ <html><head/><body><p>Encryption / Verification<br/>passphrase:</p></body></html>
+
+
+
+ -
+
+
+ QLineEdit::Password
+
+
+
+ -
QLineEdit::Password
+ -
+
+
+
+
+
+
+ :/eye-off:/eye-off
+
+
+
diff --git a/ui/restoredlg.ui b/ui/restoredlg.ui
index 19e26a8..5b76c85 100644
--- a/ui/restoredlg.ui
+++ b/ui/restoredlg.ui
@@ -142,6 +142,13 @@
Security options
+ -
+
+
+ Encrypted backup:
+
+
+
-
@@ -152,10 +159,10 @@
- -
-
-
- Encrypted backup:
+
-
+
+
+ QLineEdit::Password
@@ -166,10 +173,14 @@
- -
-
-
- QLineEdit::Password
+
-
+
+
+
+
+
+
+ :/eye-off:/eye-off
@@ -288,6 +299,8 @@ p, li { white-space: pre-wrap; }
commit_text_edit
showFileDialog
-
+
+
+