45 """ |
48 """ |
46 Public method to get the file name of the user agents file. |
49 Public method to get the file name of the user agents file. |
47 |
50 |
48 @return name of the user agents file (string) |
51 @return name of the user agents file (string) |
49 """ |
52 """ |
50 return os.path.join(Utilities.getConfigDir(), "browser", "userAgentSettings") |
53 return os.path.join(Utilities.getConfigDir(), "browser", "userAgentSettings.xml") |
51 |
54 |
52 def save(self): |
55 def save(self): |
53 """ |
56 """ |
54 Public slot to save the user agent entries to disk. |
57 Public slot to save the user agent entries to disk. |
55 """ |
58 """ |
56 if not self.__loaded: |
59 if not self.__loaded: |
57 return |
60 return |
58 |
61 |
59 agentFile = self.getFileName() |
62 agentFile = self.getFileName() |
60 try: |
63 writer = UserAgentWriter() |
61 f = open(agentFile, "w", encoding="utf-8") |
64 if not writer.write(agentFile, self.__agents): |
62 for host, agent in self.__agents.items(): |
|
63 f.write("{0}@@{1}\n".format(host, agent)) |
|
64 f.close() |
|
65 self.userAgentSettingsSaved.emit() |
|
66 except IOError as err: |
|
67 E5MessageBox.critical(None, |
65 E5MessageBox.critical(None, |
68 self.trUtf8("Saving user agent data"), |
66 self.trUtf8("Saving user agent data"), |
69 self.trUtf8("""<p>User agent data could not be saved to <b>{0}</b></p>""" |
67 self.trUtf8("""<p>User agent data could not be saved to <b>{0}</b></p>""" |
70 """<p>Reason: {1}</p>""").format(agentFile, str(err))) |
68 ).format(agentFile)) |
71 return |
69 else: |
|
70 self.userAgentSettingsSaved.emit() |
72 |
71 |
73 def __load(self): |
72 def __load(self): |
74 """ |
73 """ |
75 Private method to load the saved user agent settings. |
74 Private method to load the saved user agent settings. |
76 """ |
75 """ |
77 agentFile = self.getFileName() |
76 agentFile = self.getFileName() |
|
77 if not os.path.exists(agentFile): |
|
78 self.__loadNonXml(os.path.splitext(agentFile)[0]) |
|
79 else: |
|
80 reader = UserAgentReader() |
|
81 self.__agents = reader.read(agentFile) |
|
82 if reader.error() != QXmlStreamReader.NoError: |
|
83 E5MessageBox.warning(None, |
|
84 self.trUtf8("Loading user agent data"), |
|
85 self.trUtf8("""Error when loading user agent data on""" |
|
86 """ line {0}, column {1}:\n{2}""")\ |
|
87 .format(reader.lineNumber(), |
|
88 reader.columnNumber(), |
|
89 reader.errorString())) |
|
90 |
|
91 self.__loaded = True |
|
92 |
|
93 def __loadNonXml(self, agentFile): |
|
94 """ |
|
95 Private method to load non-XML user agent files. |
|
96 |
|
97 This method is to convert from the old, non-XML format to the new |
|
98 XML based format. |
|
99 |
|
100 @param agentFile name of the non-XML user agent file (string) |
|
101 """ |
78 if os.path.exists(agentFile): |
102 if os.path.exists(agentFile): |
79 try: |
103 try: |
80 f = open(agentFile, "r", encoding="utf-8") |
104 f = open(agentFile, "r", encoding="utf-8") |
81 lines = f.read() |
105 lines = f.read() |
82 f.close() |
106 f.close() |