143 writer = PasswordWriter() |
143 writer = PasswordWriter() |
144 if not writer.write( |
144 if not writer.write( |
145 loginFile, self.__logins, self.__loginForms, self.__never): |
145 loginFile, self.__logins, self.__loginForms, self.__never): |
146 E5MessageBox.critical( |
146 E5MessageBox.critical( |
147 None, |
147 None, |
148 self.trUtf8("Saving login data"), |
148 self.tr("Saving login data"), |
149 self.trUtf8( |
149 self.tr( |
150 """<p>Login data could not be saved to <b>{0}</b></p>""" |
150 """<p>Login data could not be saved to <b>{0}</b></p>""" |
151 ).format(loginFile)) |
151 ).format(loginFile)) |
152 else: |
152 else: |
153 self.passwordsSaved.emit() |
153 self.passwordsSaved.emit() |
154 |
154 |
165 self.__logins, self.__loginForms, self.__never = \ |
165 self.__logins, self.__loginForms, self.__never = \ |
166 reader.read(loginFile) |
166 reader.read(loginFile) |
167 if reader.error() != QXmlStreamReader.NoError: |
167 if reader.error() != QXmlStreamReader.NoError: |
168 E5MessageBox.warning( |
168 E5MessageBox.warning( |
169 None, |
169 None, |
170 self.trUtf8("Loading login data"), |
170 self.tr("Loading login data"), |
171 self.trUtf8("""Error when loading login data on""" |
171 self.tr("""Error when loading login data on""" |
172 """ line {0}, column {1}:\n{2}""") |
172 """ line {0}, column {1}:\n{2}""") |
173 .format(reader.lineNumber(), |
173 .format(reader.lineNumber(), |
174 reader.columnNumber(), |
174 reader.columnNumber(), |
175 reader.errorString())) |
175 reader.errorString())) |
176 |
176 |
177 self.__loaded = True |
177 self.__loaded = True |
191 lines = f.read() |
191 lines = f.read() |
192 f.close() |
192 f.close() |
193 except IOError as err: |
193 except IOError as err: |
194 E5MessageBox.critical( |
194 E5MessageBox.critical( |
195 None, |
195 None, |
196 self.trUtf8("Loading login data"), |
196 self.tr("Loading login data"), |
197 self.trUtf8("""<p>Login data could not be loaded """ |
197 self.tr("""<p>Login data could not be loaded """ |
198 """from <b>{0}</b></p>""" |
198 """from <b>{0}</b></p>""" |
199 """<p>Reason: {1}</p>""") |
199 """<p>Reason: {1}</p>""") |
200 .format(loginFile, str(err))) |
200 .format(loginFile, str(err))) |
201 return |
201 return |
202 |
202 |
203 data = [] |
203 data = [] |
204 section = 0 # 0 = login data, 1 = forms data, |
204 section = 0 # 0 = login data, 1 = forms data, |
216 data.append(line) |
216 data.append(line) |
217 else: |
217 else: |
218 if len(data) != 3: |
218 if len(data) != 3: |
219 E5MessageBox.critical( |
219 E5MessageBox.critical( |
220 None, |
220 None, |
221 self.trUtf8("Loading login data"), |
221 self.tr("Loading login data"), |
222 self.trUtf8( |
222 self.tr( |
223 """<p>Login data could not be loaded """ |
223 """<p>Login data could not be loaded """ |
224 """from <b>{0}</b></p>""" |
224 """from <b>{0}</b></p>""" |
225 """<p>Reason: Wrong input format</p>""") |
225 """<p>Reason: Wrong input format</p>""") |
226 .format(loginFile)) |
226 .format(loginFile)) |
227 return |
227 return |
384 # prompt, if the form has never be seen |
384 # prompt, if the form has never be seen |
385 key = self.__createKey(url, "") |
385 key = self.__createKey(url, "") |
386 if key not in self.__loginForms: |
386 if key not in self.__loginForms: |
387 mb = E5MessageBox.E5MessageBox( |
387 mb = E5MessageBox.E5MessageBox( |
388 E5MessageBox.Question, |
388 E5MessageBox.Question, |
389 self.trUtf8("Save password"), |
389 self.tr("Save password"), |
390 self.trUtf8( |
390 self.tr( |
391 """<b>Would you like to save this password?</b><br/>""" |
391 """<b>Would you like to save this password?</b><br/>""" |
392 """To review passwords you have saved and remove them, """ |
392 """To review passwords you have saved and remove them, """ |
393 """use the password management dialog of the Settings""" |
393 """use the password management dialog of the Settings""" |
394 """ menu."""), |
394 """ menu."""), |
395 modal=True) |
395 modal=True) |
396 neverButton = mb.addButton( |
396 neverButton = mb.addButton( |
397 self.trUtf8("Never for this site"), |
397 self.tr("Never for this site"), |
398 E5MessageBox.DestructiveRole) |
398 E5MessageBox.DestructiveRole) |
399 noButton = mb.addButton( |
399 noButton = mb.addButton( |
400 self.trUtf8("Not now"), E5MessageBox.RejectRole) |
400 self.tr("Not now"), E5MessageBox.RejectRole) |
401 mb.addButton(E5MessageBox.Yes) |
401 mb.addButton(E5MessageBox.Yes) |
402 mb.exec_() |
402 mb.exec_() |
403 if mb.clickedButton() == neverButton: |
403 if mb.clickedButton() == neverButton: |
404 self.__never.append(url.toString()) |
404 self.__never.append(url.toString()) |
405 return |
405 return |
604 """ |
604 """ |
605 if not self.__loaded: |
605 if not self.__loaded: |
606 self.__load() |
606 self.__load() |
607 |
607 |
608 progress = E5ProgressDialog( |
608 progress = E5ProgressDialog( |
609 self.trUtf8("Re-encoding saved passwords..."), |
609 self.tr("Re-encoding saved passwords..."), |
610 None, 0, len(self.__logins), self.trUtf8("%v/%m Passwords"), |
610 None, 0, len(self.__logins), self.tr("%v/%m Passwords"), |
611 QApplication.activeModalWidget()) |
611 QApplication.activeModalWidget()) |
612 progress.setMinimumDuration(0) |
612 progress.setMinimumDuration(0) |
613 count = 0 |
613 count = 0 |
614 |
614 |
615 for key in self.__logins: |
615 for key in self.__logins: |