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