Changed file format for saved user agent data to XML.

Sat, 03 Mar 2012 18:40:25 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 03 Mar 2012 18:40:25 +0100
changeset 1687
5efcb0cea376
parent 1686
bd756cb42d5b
child 1688
389ee9508e35

Changed file format for saved user agent data to XML.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
APIs/Python3/eric5.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentManager.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentReader.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentWriter.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Helpviewer.UserAgent.html file | annotate | diff | comparison | revisions
Helpviewer/UserAgent/UserAgentManager.py file | annotate | diff | comparison | revisions
Helpviewer/UserAgent/UserAgentReader.py file | annotate | diff | comparison | revisions
Helpviewer/UserAgent/UserAgentWriter.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
i18n/eric5_cs.ts file | annotate | diff | comparison | revisions
i18n/eric5_de.qm file | annotate | diff | comparison | revisions
i18n/eric5_de.ts file | annotate | diff | comparison | revisions
i18n/eric5_en.ts file | annotate | diff | comparison | revisions
i18n/eric5_es.ts file | annotate | diff | comparison | revisions
i18n/eric5_fr.ts file | annotate | diff | comparison | revisions
i18n/eric5_it.ts file | annotate | diff | comparison | revisions
i18n/eric5_ru.ts file | annotate | diff | comparison | revisions
i18n/eric5_tr.ts file | annotate | diff | comparison | revisions
i18n/eric5_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Sat Mar 03 18:37:19 2012 +0100
+++ b/APIs/Python3/eric5.api	Sat Mar 03 18:40:25 2012 +0100
@@ -2666,6 +2666,10 @@
 eric5.Helpviewer.UserAgent.UserAgentModel.UserAgentModel.removeRows?4(row, count, parent=QModelIndex())
 eric5.Helpviewer.UserAgent.UserAgentModel.UserAgentModel.rowCount?4(parent=QModelIndex())
 eric5.Helpviewer.UserAgent.UserAgentModel.UserAgentModel?1(manager, parent=None)
+eric5.Helpviewer.UserAgent.UserAgentReader.UserAgentReader.read?4(fileNameOrDevice)
+eric5.Helpviewer.UserAgent.UserAgentReader.UserAgentReader?1()
+eric5.Helpviewer.UserAgent.UserAgentWriter.UserAgentWriter.write?4(fileNameOrDevice, agents)
+eric5.Helpviewer.UserAgent.UserAgentWriter.UserAgentWriter?1()
 eric5.Helpviewer.UserAgent.UserAgentsDialog.UserAgentsDialog?1(parent=None)
 eric5.Helpviewer.VirusTotalApi.VirusTotalAPI.GetFileReportPattern?7
 eric5.Helpviewer.VirusTotalApi.VirusTotalAPI.GetUrlReportPattern?7
--- a/APIs/Python3/eric5.bas	Sat Mar 03 18:37:19 2012 +0100
+++ b/APIs/Python3/eric5.bas	Sat Mar 03 18:40:25 2012 +0100
@@ -620,6 +620,8 @@
 UserAgentManager QObject
 UserAgentMenu QMenu
 UserAgentModel QAbstractTableModel
+UserAgentReader QXmlStreamReader
+UserAgentWriter QXmlStreamWriter
 UserAgentsDialog QDialog Ui_UserAgentsDialog
 UserInterface QMainWindow
 UserProjectReader XMLStreamReaderBase
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sat Mar 03 18:37:19 2012 +0100
+++ b/Documentation/Help/source.qhp	Sat Mar 03 18:40:25 2012 +0100
@@ -310,6 +310,8 @@
               <section title="eric5.Helpviewer.UserAgent.UserAgentManager" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html" />
               <section title="eric5.Helpviewer.UserAgent.UserAgentMenu" ref="eric5.Helpviewer.UserAgent.UserAgentMenu.html" />
               <section title="eric5.Helpviewer.UserAgent.UserAgentModel" ref="eric5.Helpviewer.UserAgent.UserAgentModel.html" />
+              <section title="eric5.Helpviewer.UserAgent.UserAgentReader" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html" />
+              <section title="eric5.Helpviewer.UserAgent.UserAgentWriter" ref="eric5.Helpviewer.UserAgent.UserAgentWriter.html" />
               <section title="eric5.Helpviewer.UserAgent.UserAgentsDialog" ref="eric5.Helpviewer.UserAgent.UserAgentsDialog.html" />
             </section>
             <section title="eric5.Helpviewer.WebPlugins" ref="index-eric5.Helpviewer.WebPlugins.html">
@@ -10043,6 +10045,7 @@
       <keyword name="UserAgentManager (Constructor)" id="UserAgentManager (Constructor)" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html#UserAgentManager.__init__" />
       <keyword name="UserAgentManager (Module)" id="UserAgentManager (Module)" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html" />
       <keyword name="UserAgentManager.__load" id="UserAgentManager.__load" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html#UserAgentManager.__load" />
+      <keyword name="UserAgentManager.__loadNonXml" id="UserAgentManager.__loadNonXml" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html#UserAgentManager.__loadNonXml" />
       <keyword name="UserAgentManager.allHostNames" id="UserAgentManager.allHostNames" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html#UserAgentManager.allHostNames" />
       <keyword name="UserAgentManager.close" id="UserAgentManager.close" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html#UserAgentManager.close" />
       <keyword name="UserAgentManager.getFileName" id="UserAgentManager.getFileName" ref="eric5.Helpviewer.UserAgent.UserAgentManager.html#UserAgentManager.getFileName" />
@@ -10071,6 +10074,17 @@
       <keyword name="UserAgentModel.headerData" id="UserAgentModel.headerData" ref="eric5.Helpviewer.UserAgent.UserAgentModel.html#UserAgentModel.headerData" />
       <keyword name="UserAgentModel.removeRows" id="UserAgentModel.removeRows" ref="eric5.Helpviewer.UserAgent.UserAgentModel.html#UserAgentModel.removeRows" />
       <keyword name="UserAgentModel.rowCount" id="UserAgentModel.rowCount" ref="eric5.Helpviewer.UserAgent.UserAgentModel.html#UserAgentModel.rowCount" />
+      <keyword name="UserAgentReader" id="UserAgentReader" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html#UserAgentReader" />
+      <keyword name="UserAgentReader (Constructor)" id="UserAgentReader (Constructor)" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html#UserAgentReader.__init__" />
+      <keyword name="UserAgentReader (Module)" id="UserAgentReader (Module)" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html" />
+      <keyword name="UserAgentReader.__readUserAgents" id="UserAgentReader.__readUserAgents" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html#UserAgentReader.__readUserAgents" />
+      <keyword name="UserAgentReader.__skipUnknownElement" id="UserAgentReader.__skipUnknownElement" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html#UserAgentReader.__skipUnknownElement" />
+      <keyword name="UserAgentReader.read" id="UserAgentReader.read" ref="eric5.Helpviewer.UserAgent.UserAgentReader.html#UserAgentReader.read" />
+      <keyword name="UserAgentWriter" id="UserAgentWriter" ref="eric5.Helpviewer.UserAgent.UserAgentWriter.html#UserAgentWriter" />
+      <keyword name="UserAgentWriter (Constructor)" id="UserAgentWriter (Constructor)" ref="eric5.Helpviewer.UserAgent.UserAgentWriter.html#UserAgentWriter.__init__" />
+      <keyword name="UserAgentWriter (Module)" id="UserAgentWriter (Module)" ref="eric5.Helpviewer.UserAgent.UserAgentWriter.html" />
+      <keyword name="UserAgentWriter.__write" id="UserAgentWriter.__write" ref="eric5.Helpviewer.UserAgent.UserAgentWriter.html#UserAgentWriter.__write" />
+      <keyword name="UserAgentWriter.write" id="UserAgentWriter.write" ref="eric5.Helpviewer.UserAgent.UserAgentWriter.html#UserAgentWriter.write" />
       <keyword name="UserAgentsDialog" id="UserAgentsDialog" ref="eric5.Helpviewer.UserAgent.UserAgentsDialog.html#UserAgentsDialog" />
       <keyword name="UserAgentsDialog (Constructor)" id="UserAgentsDialog (Constructor)" ref="eric5.Helpviewer.UserAgent.UserAgentsDialog.html#UserAgentsDialog.__init__" />
       <keyword name="UserAgentsDialog (Module)" id="UserAgentsDialog (Module)" ref="eric5.Helpviewer.UserAgent.UserAgentsDialog.html" />
@@ -11825,6 +11839,8 @@
       <file>eric5.Helpviewer.UserAgent.UserAgentManager.html</file>
       <file>eric5.Helpviewer.UserAgent.UserAgentMenu.html</file>
       <file>eric5.Helpviewer.UserAgent.UserAgentModel.html</file>
+      <file>eric5.Helpviewer.UserAgent.UserAgentReader.html</file>
+      <file>eric5.Helpviewer.UserAgent.UserAgentWriter.html</file>
       <file>eric5.Helpviewer.UserAgent.UserAgentsDialog.html</file>
       <file>eric5.Helpviewer.VirusTotalApi.html</file>
       <file>eric5.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash.html</file>
--- a/Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentManager.html	Sat Mar 03 18:37:19 2012 +0100
+++ b/Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentManager.html	Sat Mar 03 18:40:25 2012 +0100
@@ -73,6 +73,9 @@
 <td><a href="#UserAgentManager.__load">__load</a></td>
 <td>Private method to load the saved user agent settings.</td>
 </tr><tr>
+<td><a href="#UserAgentManager.__loadNonXml">__loadNonXml</a></td>
+<td>Private method to load non-XML user agent files.</td>
+</tr><tr>
 <td><a href="#UserAgentManager.allHostNames">allHostNames</a></td>
 <td>Public method to get a list of all host names we a user agent setting for.</td>
 </tr><tr>
@@ -126,7 +129,20 @@
 <b>__load</b>(<i></i>)
 <p>
         Private method to load the saved user agent settings.
-</p><a NAME="UserAgentManager.allHostNames" ID="UserAgentManager.allHostNames"></a>
+</p><a NAME="UserAgentManager.__loadNonXml" ID="UserAgentManager.__loadNonXml"></a>
+<h4>UserAgentManager.__loadNonXml</h4>
+<b>__loadNonXml</b>(<i>agentFile</i>)
+<p>
+        Private method to load non-XML user agent files.
+</p><p>
+        This method is to convert from the old, non-XML format to the new
+        XML based format.
+</p><dl>
+<dt><i>agentFile</i></dt>
+<dd>
+name of the non-XML user agent file (string)
+</dd>
+</dl><a NAME="UserAgentManager.allHostNames" ID="UserAgentManager.allHostNames"></a>
 <h4>UserAgentManager.allHostNames</h4>
 <b>allHostNames</b>(<i></i>)
 <p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentReader.html	Sat Mar 03 18:40:25 2012 +0100
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html><head>
+<title>eric5.Helpviewer.UserAgent.UserAgentReader</title>
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Helpviewer.UserAgent.UserAgentReader</h1>
+<p>
+Module implementing a class to read user agent data files.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#UserAgentReader">UserAgentReader</a></td>
+<td>Class implementing a reader object for user agent data files.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="UserAgentReader" ID="UserAgentReader"></a>
+<h2>UserAgentReader</h2>
+<p>
+    Class implementing a reader object for user agent data files.
+</p>
+<h3>Derived from</h3>
+QXmlStreamReader
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UserAgentReader.__init__">UserAgentReader</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#UserAgentReader.__readUserAgents">__readUserAgents</a></td>
+<td>Private method to read the user agents data.</td>
+</tr><tr>
+<td><a href="#UserAgentReader.__skipUnknownElement">__skipUnknownElement</a></td>
+<td>Private method to skip over all unknown elements.</td>
+</tr><tr>
+<td><a href="#UserAgentReader.read">read</a></td>
+<td>Public method to read a user agent file.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UserAgentReader.__init__" ID="UserAgentReader.__init__"></a>
+<h4>UserAgentReader (Constructor)</h4>
+<b>UserAgentReader</b>(<i></i>)
+<p>
+        Constructor
+</p><a NAME="UserAgentReader.__readUserAgents" ID="UserAgentReader.__readUserAgents"></a>
+<h4>UserAgentReader.__readUserAgents</h4>
+<b>__readUserAgents</b>(<i></i>)
+<p>
+        Private method to read the user agents data.
+</p><a NAME="UserAgentReader.__skipUnknownElement" ID="UserAgentReader.__skipUnknownElement"></a>
+<h4>UserAgentReader.__skipUnknownElement</h4>
+<b>__skipUnknownElement</b>(<i></i>)
+<p>
+        Private method to skip over all unknown elements.
+</p><a NAME="UserAgentReader.read" ID="UserAgentReader.read"></a>
+<h4>UserAgentReader.read</h4>
+<b>read</b>(<i>fileNameOrDevice</i>)
+<p>
+        Public method to read a user agent file.
+</p><dl>
+<dt><i>fileNameOrDevice</i></dt>
+<dd>
+name of the file to read (string)
+            or reference to the device to read (QIODevice)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+dictionary with user agent data (host as key, agent string as value)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Helpviewer.UserAgent.UserAgentWriter.html	Sat Mar 03 18:40:25 2012 +0100
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html><head>
+<title>eric5.Helpviewer.UserAgent.UserAgentWriter</title>
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Helpviewer.UserAgent.UserAgentWriter</h1>
+<p>
+Module implementing a class to write user agent data files.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#UserAgentWriter">UserAgentWriter</a></td>
+<td>Class implementing a writer object to generate user agent data files.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="UserAgentWriter" ID="UserAgentWriter"></a>
+<h2>UserAgentWriter</h2>
+<p>
+    Class implementing a writer object to generate user agent data files.
+</p>
+<h3>Derived from</h3>
+QXmlStreamWriter
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UserAgentWriter.__init__">UserAgentWriter</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#UserAgentWriter.__write">__write</a></td>
+<td>Private method to write a user agent file.</td>
+</tr><tr>
+<td><a href="#UserAgentWriter.write">write</a></td>
+<td>Public method to write a user agent data file.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UserAgentWriter.__init__" ID="UserAgentWriter.__init__"></a>
+<h4>UserAgentWriter (Constructor)</h4>
+<b>UserAgentWriter</b>(<i></i>)
+<p>
+        Constructor
+</p><a NAME="UserAgentWriter.__write" ID="UserAgentWriter.__write"></a>
+<h4>UserAgentWriter.__write</h4>
+<b>__write</b>(<i>agents</i>)
+<p>
+        Private method to write a user agent file.
+</p><dl>
+<dt><i>agents</i></dt>
+<dd>
+dictionary with user agent data (host as key, agent string as value)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating success (boolean)
+</dd>
+</dl><a NAME="UserAgentWriter.write" ID="UserAgentWriter.write"></a>
+<h4>UserAgentWriter.write</h4>
+<b>write</b>(<i>fileNameOrDevice, agents</i>)
+<p>
+        Public method to write a user agent data file.
+</p><dl>
+<dt><i>fileNameOrDevice</i></dt>
+<dd>
+name of the file to write (string)
+            or device to write to (QIODevice)
+</dd><dt><i>agents</i></dt>
+<dd>
+dictionary with user agent data (host as key, agent string as value)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric5.Helpviewer.UserAgent.html	Sat Mar 03 18:37:19 2012 +0100
+++ b/Documentation/Source/index-eric5.Helpviewer.UserAgent.html	Sat Mar 03 18:40:25 2012 +0100
@@ -41,6 +41,12 @@
 <td><a href="eric5.Helpviewer.UserAgent.UserAgentModel.html">UserAgentModel</a></td>
 <td>Module implementing a model for user agent management.</td>
 </tr><tr>
+<td><a href="eric5.Helpviewer.UserAgent.UserAgentReader.html">UserAgentReader</a></td>
+<td>Module implementing a class to read user agent data files.</td>
+</tr><tr>
+<td><a href="eric5.Helpviewer.UserAgent.UserAgentWriter.html">UserAgentWriter</a></td>
+<td>Module implementing a class to write user agent data files.</td>
+</tr><tr>
 <td><a href="eric5.Helpviewer.UserAgent.UserAgentsDialog.html">UserAgentsDialog</a></td>
 <td>Module implementing a dialog to show all saved user agent settings.</td>
 </tr>
--- a/Helpviewer/UserAgent/UserAgentManager.py	Sat Mar 03 18:37:19 2012 +0100
+++ b/Helpviewer/UserAgent/UserAgentManager.py	Sat Mar 03 18:40:25 2012 +0100
@@ -9,10 +9,13 @@
 
 import os
 
-from PyQt4.QtCore import pyqtSignal, QObject
+from PyQt4.QtCore import pyqtSignal, QObject, QXmlStreamReader
 
 from E5Gui import E5MessageBox
 
+from .UserAgentWriter import UserAgentWriter
+from .UserAgentReader import UserAgentReader
+
 from Utilities.AutoSaver import AutoSaver
 import Utilities
 
@@ -47,7 +50,7 @@
         
         @return name of the user agents file (string)
         """
-        return os.path.join(Utilities.getConfigDir(), "browser", "userAgentSettings")
+        return os.path.join(Utilities.getConfigDir(), "browser", "userAgentSettings.xml")
     
     def save(self):
         """
@@ -57,24 +60,45 @@
             return
         
         agentFile = self.getFileName()
-        try:
-            f = open(agentFile, "w", encoding="utf-8")
-            for host, agent in self.__agents.items():
-                f.write("{0}@@{1}\n".format(host, agent))
-            f.close()
-            self.userAgentSettingsSaved.emit()
-        except IOError as err:
+        writer = UserAgentWriter()
+        if not writer.write(agentFile, self.__agents):
             E5MessageBox.critical(None,
                 self.trUtf8("Saving user agent data"),
                 self.trUtf8("""<p>User agent data could not be saved to <b>{0}</b></p>"""
-                            """<p>Reason: {1}</p>""").format(agentFile, str(err)))
-            return
+                            ).format(agentFile))
+        else:
+            self.userAgentSettingsSaved.emit()
     
     def __load(self):
         """
         Private method to load the saved user agent settings.
         """
         agentFile = self.getFileName()
+        if not os.path.exists(agentFile):
+            self.__loadNonXml(os.path.splitext(agentFile)[0])
+        else:
+            reader = UserAgentReader()
+            self.__agents = reader.read(agentFile)
+            if reader.error() != QXmlStreamReader.NoError:
+                E5MessageBox.warning(None,
+                    self.trUtf8("Loading user agent data"),
+                    self.trUtf8("""Error when loading user agent data on"""
+                                """ line {0}, column {1}:\n{2}""")\
+                        .format(reader.lineNumber(),
+                                reader.columnNumber(),
+                                reader.errorString()))
+        
+        self.__loaded = True
+    
+    def __loadNonXml(self, agentFile):
+        """
+        Private method to load non-XML user agent files.
+        
+        This method is to convert from the old, non-XML format to the new
+        XML based format.
+        
+        @param agentFile name of the non-XML user agent file (string)
+        """
         if os.path.exists(agentFile):
             try:
                 f = open(agentFile, "r", encoding="utf-8")
@@ -97,8 +121,13 @@
                 
                 host, agent = line.split("@@", 1)
                 self.__agents[host] = agent
+            
+            os.remove(agentFile)
         
         self.__loaded = True
+        
+        # this does the conversion
+        self.save()
     
     def reload(self):
         """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Helpviewer/UserAgent/UserAgentReader.py	Sat Mar 03 18:40:25 2012 +0100
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+
+"""
+Module implementing a class to read user agent data files.
+"""
+
+from PyQt4.QtCore import QXmlStreamReader, QIODevice, QFile, QCoreApplication
+
+
+class UserAgentReader(QXmlStreamReader):
+    """
+    Class implementing a reader object for user agent data files.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+    
+    def read(self, fileNameOrDevice):
+        """
+        Public method to read a user agent file.
+        
+        @param fileNameOrDevice name of the file to read (string)
+            or reference to the device to read (QIODevice)
+        @return dictionary with user agent data (host as key, agent string as value)
+        """
+        self.__agents = {}
+        
+        if isinstance(fileNameOrDevice, QIODevice):
+            self.setDevice(fileNameOrDevice)
+        else:
+            f = QFile(fileNameOrDevice)
+            if not f.exists():
+                return self.__agents
+            f.open(QFile.ReadOnly)
+            self.setDevice(f)
+        
+        while not self.atEnd():
+            self.readNext()
+            if self.isStartElement():
+                version = self.attributes().value("version")
+                if self.name() == "UserAgents" and \
+                   (not version or version == "1.0"):
+                    self.__readUserAgents()
+                else:
+                    self.raiseError(QCoreApplication.translate(
+                        "UserAgentReader",
+                        "The file is not a UserAgents version 1.0 file."))
+        
+        return self.__agents
+    
+    def __readUserAgents(self):
+        """
+        Private method to read the user agents data.
+        """
+        if not self.isStartElement() and self.name() != "UserAgents":
+            return
+        
+        while not self.atEnd():
+            self.readNext()
+            if self.isEndElement():
+                if self.name() == "UserAgent":
+                    continue
+                else:
+                    break
+            
+            if self.isStartElement():
+                if self.name() == "UserAgent":
+                    attributes = self.attributes()
+                    host = attributes.value("host")
+                    agent = attributes.value("agent")
+                    self.__agents[host] = agent
+                else:
+                    self.__skipUnknownElement()
+    
+    def __skipUnknownElement(self):
+        """
+        Private method to skip over all unknown elements.
+        """
+        if not self.isStartElement():
+            return
+        
+        while not self.atEnd():
+            self.readNext()
+            if self.isEndElement():
+                break
+            
+            if self.isStartElement():
+                self.__skipUnknownElement()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Helpviewer/UserAgent/UserAgentWriter.py	Sat Mar 03 18:40:25 2012 +0100
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a class to write user agent data files.
+"""
+
+from PyQt4.QtCore import QXmlStreamWriter, QIODevice, QFile
+
+
+class UserAgentWriter(QXmlStreamWriter):
+    """
+    Class implementing a writer object to generate user agent data files.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+        
+        self.setAutoFormatting(True)
+    
+    def write(self, fileNameOrDevice, agents):
+        """
+        Public method to write a user agent data file.
+        
+        @param fileNameOrDevice name of the file to write (string)
+            or device to write to (QIODevice)
+        @param agents dictionary with user agent data (host as key, agent string as value)
+        """
+        if isinstance(fileNameOrDevice, QIODevice):
+            f = fileNameOrDevice
+        else:
+            f = QFile(fileNameOrDevice)
+            if not agents or not f.open(QFile.WriteOnly):
+                return False
+        
+        self.setDevice(f)
+        return self.__write(agents)
+    
+    def __write(self, agents):
+        """
+        Private method to write a user agent file.
+        
+        @param agents dictionary with user agent data (host as key, agent string as value)
+        @return flag indicating success (boolean)
+        """
+        self.writeStartDocument()
+        self.writeDTD("<!DOCTYPE passwords>")
+        self.writeStartElement("UserAgents")
+        self.writeAttribute("version", "1.0")
+        
+        for host, agent in agents.items():
+            self.writeEmptyElement("UserAgent")
+            self.writeAttribute("host", host)
+            self.writeAttribute("agent", agent)
+        
+        self.writeEndDocument()
+        return True
--- a/eric5.e4p	Sat Mar 03 18:37:19 2012 +0100
+++ b/eric5.e4p	Sat Mar 03 18:40:25 2012 +0100
@@ -972,6 +972,8 @@
     <Source>Helpviewer/Passwords/PasswordWriter.py</Source>
     <Source>Helpviewer/Passwords/PasswordReader.py</Source>
     <Source>Helpviewer/Passwords/LoginForm.py</Source>
+    <Source>Helpviewer/UserAgent/UserAgentWriter.py</Source>
+    <Source>Helpviewer/UserAgent/UserAgentReader.py</Source>
   </Sources>
   <Forms>
     <Form>PyUnit/UnittestDialog.ui</Form>
--- a/i18n/eric5_cs.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_cs.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -27741,22 +27741,22 @@
         <translation>Uložit login data</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation>Nahrávání login dat</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation>&lt;b&gt;Chcete uložit toto heslo?&lt;/b&gt;&lt;br/&gt;Pro kontrolu uložených a odebraných hesel použijte dialog správce hesel v menu nastavení.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation>Nikdy pro tento web</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation>Teď ne</translation>
     </message>
@@ -27766,22 +27766,22 @@
         <translation type="obsolete">&lt;p&gt;Login data nelze uložit do &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Login data nelze z &lt;b&gt;{0}&lt;/b&gt; nahrát&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation>&lt;p&gt;Login data nelze z &lt;b&gt;{0}&lt;/b&gt; nahrát&lt;/p&gt;&lt;p&gt;Důvod: Chybný vstupní formát&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -45778,25 +45778,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -45850,6 +45856,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
Binary file i18n/eric5_de.qm has changed
--- a/i18n/eric5_de.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_de.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -26921,42 +26921,42 @@
         <translation type="obsolete">&lt;p&gt;Die Anmeldedaten konnten nicht in die Datei &lt;b&gt;{0}&lt;/b&gt; gespeichert werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation>Anmeldedaten laden</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Anmeldedaten konnten nicht aus der Datei &lt;b&gt;{0}&lt;/b&gt; geladen werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Anmeldedaten konnten nicht aus der Datei &lt;b&gt;{0}&lt;/b&gt; geladen werden.&lt;/p&gt;&lt;p&gt;Ursache: Falsches Format&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation>&lt;b&gt;Wollen sie das Kennwort speichern?&lt;/b&gt;&lt;br/&gt;Um die gespeicherten Kennworte anzusehen und zu löschen, verwenden sie den Kennwortmanagement Dialog aus dem Einstellungen Menü.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation>Niemals für diese Site</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation>Jetzt nicht</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation>Kennwort speichern</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation>Kodieren gespeicherte Kennworte neu...</translation>
     </message>
@@ -44893,25 +44893,37 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation>User Agent Daten speichern</translation>
     </message>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
         <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die User Agent Daten konnten nicht in die Datei &lt;b&gt;{0}&lt;/b&gt; gespeichert werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <translation type="obsolete">&lt;p&gt;Die User Agent Daten konnten nicht in die Datei &lt;b&gt;{0}&lt;/b&gt; gespeichert werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation>User Agent Daten laden</translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die User Agent Daten konnten nicht aus der Datei &lt;b&gt;{0}&lt;/b&gt; geladen werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Die User Agent Daten konnten nicht in die Datei &lt;b&gt;{0}&lt;/b&gt; gespeichert werden.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation>Fehler beim Laden der User Agent Daten in Zeile {0}, Spalte {1}:
+{2}</translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -44965,6 +44977,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation>Die Datei ist keine User Agents Datei der Version 1.0.</translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_en.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_en.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -26771,42 +26771,42 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -44444,25 +44444,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -44516,6 +44522,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_es.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_es.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -27448,22 +27448,22 @@
         <translation>Guardar datos de login</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation>Cargando datos de login</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation>&lt;b&gt;¿Le gustaría almacenar esta contraseña?&lt;/b&gt;&lt;br/&gt;Para revisar las contraselas que tiene almacenadas y eliminarlas, utilice el diálogo de gestión de contraseñas del menú de Configuración.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation>Nunca para este sitio</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation>Ahora no</translation>
     </message>
@@ -27473,22 +27473,22 @@
         <translation type="obsolete">&lt;p&gt;Los datos de login no se han podido guardar en &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Los datos de login no se han podido cargar desde &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation>&lt;p&gt;Los datos de login no se han podido cargar desde &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Razón: Formato erróneo de input&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation>Almacenar contraseña</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation>Recodificando contraseñas almacenadas...</translation>
     </message>
@@ -45553,25 +45553,36 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation>Guardando datos de agente de usuario</translation>
     </message>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
         <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Los datos de Agente de usuario no se han podido guardar en &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <translation type="obsolete">&lt;p&gt;Los datos de Agente de usuario no se han podido guardar en &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation>Cargando datos de agente de usuario</translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Los datos de Agente de usuario no se han podido cargar de &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -45625,6 +45636,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_fr.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_fr.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -29171,42 +29171,42 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -49112,25 +49112,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -49184,6 +49190,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_it.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_it.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -27342,22 +27342,22 @@
         <translation>Salvataggio dati di login</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation>Caricamento dati di login</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation>&lt;b&gt;Vuoi salvare questa password ?&lt;/b&gt;&lt;br/&gt;Per rivedere le password che hai salvato e rimuoverle, usa il dialogo di gestione delle password del menù Impostazioni.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation>Mai per questo sito</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation>Non adesso</translation>
     </message>
@@ -27367,22 +27367,22 @@
         <translation type="obsolete">&lt;p&gt;I dati di login non possono essere salvati su &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Motivo: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;I dati di login non possono essere caricati da &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Motivo: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation>&lt;p&gt;I dati di login non possono essere caricati da &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Motivo: formato in ingresso errato&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation>Salva password</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -45388,25 +45388,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -45460,6 +45466,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_ru.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_ru.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -27474,42 +27474,42 @@
         <translation type="obsolete">&lt;p&gt;Невозможно сохранить учётные данные &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation>Загрузка данных учётной записи</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Невозможно загрузить учётные данные из &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation>&lt;p&gt;Невозможно загрузить учётные данные из &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Причина: Неправильный формат&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation>&lt;b&gt;Сохранить этот пароль?&lt;/b&gt;&lt;br/&gt;Для изменения сохранённых паролей используйте диалог управления паролями из меню настроек.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation>Никогда для этого сайта</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation>Не сейчас</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation>Сохранить пароль</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -45558,25 +45558,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -45630,6 +45636,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_tr.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_tr.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -27652,42 +27652,42 @@
         <translation type="obsolete">&lt;p&gt;Günlük verisi &lt;b&gt;{0}&lt;/b&gt;ne kaydedilemedi&lt;/p&gt;&lt;p&gt;Sebep: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation>Günlük verileri yükleniyor</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Giriş verisi &lt;b&gt;{0}&lt;/b&gt; den okunamıyor&lt;/p&gt;&lt;p&gt;Sebep: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation>&lt;p&gt;Giriş verisi &lt;b&gt;{0}&lt;/b&gt; den okunamıyor&lt;/p&gt;&lt;p&gt;Sebep: Hatalı giriş formatı&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation>&lt;b&gt;Parolayı kaydetmeyi tercih eder misiniz?&lt;/b&gt;&lt;br/&gt;Kaydettiğiniz yada kaldırdığınız parolaları tekrar gözden geçirmek için, ayarlar meüsünden parola yönetimi diyaloğunu kullanabilirsiniz.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation>Bu site için hiçbir zaman</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation>Şimdi değil</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -45556,25 +45556,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -45628,6 +45634,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>
--- a/i18n/eric5_zh_CN.GB2312.ts	Sat Mar 03 18:37:19 2012 +0100
+++ b/i18n/eric5_zh_CN.GB2312.ts	Sat Mar 03 18:40:25 2012 +0100
@@ -29138,42 +29138,42 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>Loading login data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>&lt;b&gt;Would you like to save this password?&lt;/b&gt;&lt;br/&gt;To review passwords you have saved and remove them, use the password management dialog of the Settings menu.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="382"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="381"/>
         <source>Never for this site</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="384"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="383"/>
         <source>Not now</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="187"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="186"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="210"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="209"/>
         <source>&lt;p&gt;Login data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: Wrong input format&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="375"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="374"/>
         <source>Save password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Passwords/PasswordManager.py" line="582"/>
+        <location filename="Helpviewer/Passwords/PasswordManager.py" line="581"/>
         <source>Re-encoding saved passwords...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -49082,25 +49082,31 @@
 <context>
     <name>UserAgentManager</name>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
         <source>Saving user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="67"/>
-        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>Loading user agent data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="84"/>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="132"/>
         <source>&lt;p&gt;User agent data could not be loaded from &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="65"/>
+        <source>&lt;p&gt;User agent data could not be saved to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentManager.py" line="107"/>
+        <source>Error when loading user agent data on line {0}, column {1}:
+{2}</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserAgentMenu</name>
@@ -49154,6 +49160,14 @@
     </message>
 </context>
 <context>
+    <name>UserAgentReader</name>
+    <message>
+        <location filename="Helpviewer/UserAgent/UserAgentReader.py" line="51"/>
+        <source>The file is not a UserAgents version 1.0 file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UserAgentsDialog</name>
     <message>
         <location filename="Helpviewer/UserAgent/UserAgentsDialog.ui" line="43"/>

eric ide

mercurial