src/eric7/WebBrowser/Sync/SyncEncryptionPage.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing encryption settings wizard page.
8 """
9
10 from PyQt6.QtCore import pyqtSlot
11 from PyQt6.QtWidgets import QWizardPage
12
13 from .Ui_SyncEncryptionPage import Ui_SyncEncryptionPage
14
15 import Preferences
16
17
18 class SyncEncryptionPage(QWizardPage, Ui_SyncEncryptionPage):
19 """
20 Class implementing encryption settings wizard page.
21 """
22 def __init__(self, parent=None):
23 """
24 Constructor
25
26 @param parent reference to the parent widget (QWidget)
27 """
28 super().__init__(parent)
29 self.setupUi(self)
30
31 self.keySizeComboBox.addItem(self.tr("128 Bits"), 16)
32 self.keySizeComboBox.addItem(self.tr("192 Bits"), 24)
33 self.keySizeComboBox.addItem(self.tr("256 Bits"), 32)
34
35 self.registerField("ReencryptData", self.reencryptCheckBox)
36
37 self.encryptionGroupBox.setChecked(
38 Preferences.getWebBrowser("SyncEncryptData"))
39 self.encryptionKeyEdit.setText(
40 Preferences.getWebBrowser("SyncEncryptionKey"))
41 self.encryptionKeyAgainEdit.setEnabled(False)
42 self.keySizeComboBox.setCurrentIndex(self.keySizeComboBox.findData(
43 Preferences.getWebBrowser("SyncEncryptionKeyLength")))
44 self.loginsOnlyCheckBox.setChecked(
45 Preferences.getWebBrowser("SyncEncryptPasswordsOnly"))
46
47 def nextId(self):
48 """
49 Public method returning the ID of the next wizard page.
50
51 @return next wizard page ID (integer)
52 """
53 Preferences.setWebBrowser(
54 "SyncEncryptData", self.encryptionGroupBox.isChecked())
55 Preferences.setWebBrowser(
56 "SyncEncryptionKey", self.encryptionKeyEdit.text())
57 Preferences.setWebBrowser(
58 "SyncEncryptionKeyLength", self.keySizeComboBox.itemData(
59 self.keySizeComboBox.currentIndex()))
60 Preferences.setWebBrowser(
61 "SyncEncryptPasswordsOnly", self.loginsOnlyCheckBox.isChecked())
62
63 from . import SyncGlobals
64 return SyncGlobals.PageType
65
66 def isComplete(self):
67 """
68 Public method to check the completeness of the page.
69
70 @return flag indicating completeness (boolean)
71 """
72 if self.encryptionGroupBox.isChecked():
73 if self.encryptionKeyEdit.text() == "":
74 complete = False
75 else:
76 if self.reencryptCheckBox.isChecked():
77 complete = (self.encryptionKeyEdit.text() ==
78 self.encryptionKeyAgainEdit.text())
79 else:
80 complete = True
81 else:
82 complete = True
83
84 return complete
85
86 def __updateUI(self):
87 """
88 Private slot to update the variable parts of the UI.
89 """
90 error = ""
91
92 if self.encryptionGroupBox.isChecked():
93 self.encryptionKeyAgainEdit.setEnabled(
94 self.reencryptCheckBox.isChecked())
95
96 if self.encryptionKeyEdit.text() == "":
97 error = error or self.tr(
98 "Encryption key must not be empty.")
99
100 if (
101 self.encryptionKeyEdit.text() != "" and
102 self.reencryptCheckBox.isChecked() and
103 (self.encryptionKeyEdit.text() !=
104 self.encryptionKeyAgainEdit.text())
105 ):
106 error = error or self.tr(
107 "Repeated encryption key is wrong.")
108
109 self.errorLabel.setText(error)
110 self.completeChanged.emit()
111
112 @pyqtSlot(str)
113 def on_encryptionKeyEdit_textChanged(self, txt):
114 """
115 Private slot to handle changes of the encryption key.
116
117 @param txt content of the edit widget (string)
118 """
119 self.passwordMeter.checkPasswordStrength(txt)
120 self.__updateUI()
121
122 @pyqtSlot(str)
123 def on_encryptionKeyAgainEdit_textChanged(self, txt):
124 """
125 Private slot to handle changes of the encryption key repetition.
126
127 @param txt content of the edit widget (string)
128 """
129 self.__updateUI()
130
131 @pyqtSlot(bool)
132 def on_encryptionGroupBox_toggled(self, on):
133 """
134 Private slot to handle changes of the encryption selection.
135
136 @param on state of the group box (boolean)
137 """
138 self.__updateUI()
139
140 @pyqtSlot(bool)
141 def on_reencryptCheckBox_toggled(self, on):
142 """
143 Private slot to handle changes of the re-encryption selection.
144
145 @param on state of the check box (boolean)
146 """
147 self.__updateUI()

eric ide

mercurial