Migrated the tasks handler to tasks reader.

Sat, 11 Sep 2010 17:33:02 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 11 Sep 2010 17:33:02 +0200
changeset 585
f40889943c0a
parent 584
b5d4c116952a
child 586
9dbffeed66a9

Migrated the tasks handler to tasks reader.

Documentation/Source/eric5.E5XML.TasksHandler.html file | annotate | diff | comparison | revisions
E5XML/TasksHandler.py file | annotate | diff | comparison | revisions
E5XML/TasksReader.py file | annotate | diff | comparison | revisions
Project/Project.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
--- a/Documentation/Source/eric5.E5XML.TasksHandler.html	Fri Sep 10 20:03:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
-<?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.E5XML.TasksHandler</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.E5XML.TasksHandler</h1>
-<p>
-Module implementing the handler class for reading an XML tasks file.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#TasksHandler">TasksHandler</a></td>
-<td>Class implementing a sax handler to read an XML tasks file.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="TasksHandler" ID="TasksHandler"></a>
-<h2>TasksHandler</h2>
-<p>
-    Class implementing a sax handler to read an XML tasks file.
-</p>
-<h3>Derived from</h3>
-XMLHandlerBase
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
-<tr>
-<td><a href="#TasksHandler.__init__">TasksHandler</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#TasksHandler.__buildPath">__buildPath</a></td>
-<td>Private method to assemble a path.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endCreated">endCreated</a></td>
-<td>Handler method for the "Created" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endDescription">endDescription</a></td>
-<td>Handler method for the "Description" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endDir">endDir</a></td>
-<td>Handler method for the "Dir" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endFilename">endFilename</a></td>
-<td>Handler method for the "Filename" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endLinenumber">endLinenumber</a></td>
-<td>Handler method for the "Linenumber" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endName">endName</a></td>
-<td>Handler method for the "Name" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endSummary">endSummary</a></td>
-<td>Handler method for the "Summary" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.endTask">endTask</a></td>
-<td>Handler method for the "Task" end tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.getVersion">getVersion</a></td>
-<td>Public method to retrieve the version of the tasks file.</td>
-</tr><tr>
-<td><a href="#TasksHandler.startDocumentTasks">startDocumentTasks</a></td>
-<td>Handler called, when the document parsing is started.</td>
-</tr><tr>
-<td><a href="#TasksHandler.startFilename">startFilename</a></td>
-<td>Handler method for the "Filename" start tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.startTask">startTask</a></td>
-<td>Handler method for the "Task" start tag.</td>
-</tr><tr>
-<td><a href="#TasksHandler.startTasks">startTasks</a></td>
-<td>Handler method for the "Tasks" start tag.</td>
-</tr>
-</table>
-<a NAME="TasksHandler.__init__" ID="TasksHandler.__init__"></a>
-<h4>TasksHandler (Constructor)</h4>
-<b>TasksHandler</b>(<i>forProject = False, taskViewer=None</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>forProject</i></dt>
-<dd>
-flag indicating project related mode (boolean)
-</dd><dt><i>taskViewer</i></dt>
-<dd>
-reference to the task viewer object
-</dd>
-</dl><a NAME="TasksHandler.__buildPath" ID="TasksHandler.__buildPath"></a>
-<h4>TasksHandler.__buildPath</h4>
-<b>__buildPath</b>(<i></i>)
-<p>
-        Private method to assemble a path.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-The ready assembled path. (string)
-</dd>
-</dl><a NAME="TasksHandler.endCreated" ID="TasksHandler.endCreated"></a>
-<h4>TasksHandler.endCreated</h4>
-<b>endCreated</b>(<i></i>)
-<p>
-        Handler method for the "Created" end tag.
-</p><a NAME="TasksHandler.endDescription" ID="TasksHandler.endDescription"></a>
-<h4>TasksHandler.endDescription</h4>
-<b>endDescription</b>(<i></i>)
-<p>
-        Handler method for the "Description" end tag.
-</p><a NAME="TasksHandler.endDir" ID="TasksHandler.endDir"></a>
-<h4>TasksHandler.endDir</h4>
-<b>endDir</b>(<i></i>)
-<p>
-        Handler method for the "Dir" end tag.
-</p><a NAME="TasksHandler.endFilename" ID="TasksHandler.endFilename"></a>
-<h4>TasksHandler.endFilename</h4>
-<b>endFilename</b>(<i></i>)
-<p>
-        Handler method for the "Filename" end tag.
-</p><a NAME="TasksHandler.endLinenumber" ID="TasksHandler.endLinenumber"></a>
-<h4>TasksHandler.endLinenumber</h4>
-<b>endLinenumber</b>(<i></i>)
-<p>
-        Handler method for the "Linenumber" end tag.
-</p><a NAME="TasksHandler.endName" ID="TasksHandler.endName"></a>
-<h4>TasksHandler.endName</h4>
-<b>endName</b>(<i></i>)
-<p>
-        Handler method for the "Name" end tag.
-</p><a NAME="TasksHandler.endSummary" ID="TasksHandler.endSummary"></a>
-<h4>TasksHandler.endSummary</h4>
-<b>endSummary</b>(<i></i>)
-<p>
-        Handler method for the "Summary" end tag.
-</p><a NAME="TasksHandler.endTask" ID="TasksHandler.endTask"></a>
-<h4>TasksHandler.endTask</h4>
-<b>endTask</b>(<i></i>)
-<p>
-        Handler method for the "Task" end tag.
-</p><a NAME="TasksHandler.getVersion" ID="TasksHandler.getVersion"></a>
-<h4>TasksHandler.getVersion</h4>
-<b>getVersion</b>(<i></i>)
-<p>
-        Public method to retrieve the version of the tasks file.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-String containing the version number.
-</dd>
-</dl><a NAME="TasksHandler.startDocumentTasks" ID="TasksHandler.startDocumentTasks"></a>
-<h4>TasksHandler.startDocumentTasks</h4>
-<b>startDocumentTasks</b>(<i></i>)
-<p>
-        Handler called, when the document parsing is started.
-</p><a NAME="TasksHandler.startFilename" ID="TasksHandler.startFilename"></a>
-<h4>TasksHandler.startFilename</h4>
-<b>startFilename</b>(<i>attrs</i>)
-<p>
-        Handler method for the "Filename" start tag.
-</p><dl>
-<dt><i>attrs</i></dt>
-<dd>
-list of tag attributes
-</dd>
-</dl><a NAME="TasksHandler.startTask" ID="TasksHandler.startTask"></a>
-<h4>TasksHandler.startTask</h4>
-<b>startTask</b>(<i>attrs</i>)
-<p>
-        Handler method for the "Task" start tag.
-</p><dl>
-<dt><i>attrs</i></dt>
-<dd>
-list of tag attributes
-</dd>
-</dl><a NAME="TasksHandler.startTasks" ID="TasksHandler.startTasks"></a>
-<h4>TasksHandler.startTasks</h4>
-<b>startTasks</b>(<i>attrs</i>)
-<p>
-        Handler method for the "Tasks" start tag.
-</p><dl>
-<dt><i>attrs</i></dt>
-<dd>
-list of tag attributes
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/E5XML/TasksHandler.py	Fri Sep 10 20:03:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2005 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the handler class for reading an XML tasks file.
-"""
-
-import os
-import time
-
-from E5Gui.E5Application import e5App
-
-from .Config import tasksFileFormatVersion
-from .XMLHandlerBase import XMLHandlerBase
-
-import Utilities
-
-class TasksHandler(XMLHandlerBase):
-    """
-    Class implementing a sax handler to read an XML tasks file.
-    """
-    def __init__(self, forProject = False, taskViewer=None):
-        """
-        Constructor
-        
-        @param forProject flag indicating project related mode (boolean)
-        @param taskViewer reference to the task viewer object
-        """
-        XMLHandlerBase.__init__(self)
-        
-        self.startDocumentSpecific = self.startDocumentTasks
-        
-        self.elements.update({
-            'Tasks' : (self.startTasks, self.defaultEndElement),
-            'Summary' : (self.defaultStartElement, self.endSummary),
-            'Description' : (self.defaultStartElement, self.endDescription),
-            'Created' : (self.defaultStartElement, self.endCreated),
-            'Dir' : (self.defaultStartElement, self.endDir),
-            'Name' : (self.defaultStartElement, self.endName),
-            'Filename' : (self.startFilename, self.endFilename),
-            'Linenumber' : (self.defaultStartElement, self.endLinenumber),
-            'Task' : (self.startTask, self.endTask),
-        })
-    
-        self.forProject = forProject
-        if taskViewer:
-            self.taskViewer = taskViewer
-        else:
-            self.taskViewer = e5App().getObject("TaskViewer")
-        
-    def startDocumentTasks(self):
-        """
-        Handler called, when the document parsing is started.
-        """
-        self.version = ''
-        self.pathStack = []
-        
-    ###################################################
-    ## below follow the individual handler functions
-    ###################################################
-    
-    def startTask(self, attrs):
-        """
-        Handler method for the "Task" start tag.
-        
-        @param attrs list of tag attributes
-        """
-        self.task = {"summary"     : "",
-                     "priority"    : 1,
-                     "completed"   : False,
-                     "created"     : 0,
-                     "filename"    : "",
-                     "linenumber"  : 0,
-                     "bugfix"      : False,
-                     "description" : "",
-                    }
-        self.task["priority"] = int(attrs.get("priority", "1"))
-        
-        val = attrs.get("completed", "False")
-        if val in ["True", "False"]:
-            val = (val == "True")
-        else:
-            val = bool(int(val))
-        self.task["completed"] = val
-        
-        val = attrs.get("bugfix", "False")
-        if val in ["True", "False"]:
-            val = (val == "True")
-        else:
-            val = bool(int(val))
-        self.task["bugfix"] = val
-    
-    def endTask(self):
-        """
-        Handler method for the "Task" end tag.
-        """
-        self.taskViewer.addTask(self.task["summary"], priority = self.task["priority"],
-            filename = self.task["filename"], lineno = self.task["linenumber"], 
-            completed = self.task["completed"],
-            _time = self.task["created"], isProjectTask = self.forProject,
-            isBugfixTask = self.task["bugfix"], longtext = self.task["description"])
-        
-    def endSummary(self):
-        """
-        Handler method for the "Summary" end tag.
-        """
-        self.task["summary"] = self.unescape(self.buffer)
-        
-    def endDescription(self):
-        """
-        Handler method for the "Description" end tag.
-        """
-        if self.version < '4.1':
-            self.task["summary"] = self.unescape(self.buffer)
-        elif self.version == '4.1':
-            self.task["description"] = self.unescape(self.buffer)
-        else:
-            self.buffer = self.unescape(self.buffer)
-            self.task["description"] = self.decodedNewLines(self.buffer)
-        
-    def endCreated(self):
-        """
-        Handler method for the "Created" end tag.
-        """
-        self.task["created"] = \
-            time.mktime(time.strptime(self.buffer, "%Y-%m-%d, %H:%M:%S"))
-    
-    def endDir(self):
-        """
-        Handler method for the "Dir" end tag.
-        """
-        self.pathStack.append(self.buffer)
-        
-    def endName(self):
-        """
-        Handler method for the "Name" end tag.
-        """
-        self.pathStack.append(self.buffer)
-        
-    def endLinenumber(self):
-        """
-        Handler method for the "Linenumber" end tag.
-        """
-        try:
-            self.task["linenumber"] = int(self.buffer)
-        except ValueError:
-            pass
-    
-    def startFilename(self, attrs):
-        """
-        Handler method for the "Filename" start tag.
-        
-        @param attrs list of tag attributes
-        """
-        self.pathStack = []
-        self.buffer = ""
-        
-    def endFilename(self):
-        """
-        Handler method for the "Filename" end tag.
-        """
-        if self.version >= '4.2':
-            self.task["filename"] = \
-                Utilities.toNativeSeparators(self.buffer)
-        else:
-            self.task["filename"] = self.__buildPath()
-        
-    def __buildPath(self):
-        """
-        Private method to assemble a path.
-        
-        @return The ready assembled path. (string)
-        """
-        path = ""
-        if self.pathStack and not self.pathStack[0]:
-            self.pathStack[0] = os.sep
-        for p in self.pathStack:
-            path = os.path.join(path, p)
-        return path
-        
-    def startTasks(self, attrs):
-        """
-        Handler method for the "Tasks" start tag.
-        
-        @param attrs list of tag attributes
-        """
-        self.version = attrs.get('version', tasksFileFormatVersion)
-        
-    def getVersion(self):
-        """
-        Public method to retrieve the version of the tasks file.
-        
-        @return String containing the version number.
-        """
-        return self.version
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/E5XML/TasksReader.py	Sat Sep 11 17:33:02 2010 +0200
@@ -0,0 +1,112 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a class for reading an XML tasks file.
+"""
+
+import time
+
+from E5Gui.E5Application import e5App
+
+from .Config import tasksFileFormatVersion
+from .XMLStreamReaderBase import XMLStreamReaderBase
+
+import Utilities
+
+class TasksReader(XMLStreamReaderBase):
+    """
+    Class for reading an XML tasks file.
+    """
+    def __init__(self, device, forProject = False, viewer = None):
+        """
+        Constructor
+        
+        @param device reference to the I/O device to read from (QIODevice)
+        @param forProject flag indicating project related mode (boolean)
+        @param viewer reference to the task viewer (TaskViewer)
+        """
+        XMLStreamReaderBase.__init__(self, device)
+        
+        self.viewer = viewer
+        
+        self.forProject = forProject
+        if viewer:
+            self.viewer = viewer
+        else:
+            self.viewer = e5App().getObject("TaskViewer")
+        
+        self.version = ""
+    
+    def readXML(self):
+        """
+        Public method to read and parse the XML document.
+        """
+        while not self.atEnd():
+            self.readNext()
+            if self.isStartElement():
+                if self.name() == "Tasks":
+                    self.version = self.attribute("version", 
+                        tasksFileFormatVersion)
+                elif self.name() == "Task":
+                    self.__readTask()
+        
+        self.showErrorMessage()
+    
+    def __readTask(self):
+        """
+        Private method to read the task info.
+        """
+        task = {"summary"     : "",
+                "priority"    : 1,
+                "completed"   : False,
+                "created"     : 0,
+                "filename"    : "",
+                "linenumber"  : 0,
+                "bugfix"      : False,
+                "description" : "",
+               }
+        task["priority"] = int(self.attribute("priority", "1"))
+        
+        val = self.attribute("completed", "False")
+        if val in ["True", "False"]:
+            val = (val == "True")
+        else:
+            val = bool(int(val))
+        task["completed"] = val
+        
+        val = self.attribute("bugfix", "False")
+        if val in ["True", "False"]:
+            val = (val == "True")
+        else:
+            val = bool(int(val))
+        task["bugfix"] = val
+        
+        while not self.atEnd():
+            self.readNext()
+            if self.isEndElement() and self.name() == "Task":
+                self.viewer.addTask(task["summary"], priority = task["priority"],
+                    filename = task["filename"], lineno = task["linenumber"], 
+                    completed = task["completed"], _time = task["created"], 
+                    isProjectTask = self.forProject, isBugfixTask = task["bugfix"], 
+                    longtext = task["description"])
+                break
+            
+            if self.isStartElement():
+                if self.name() == "Summary":
+                    task["summary"] = self.readElementText()
+                elif self.name() == "Description":
+                    task["description"] = self.readElementText()
+                elif self.name() == "Created":
+                    task["created"] = time.mktime(
+                        time.strptime(self.readElementText(), "%Y-%m-%d, %H:%M:%S"))
+                elif self.name() == "Filename":
+                    task["filename"] = \
+                        Utilities.toNativeSeparators(self.readElementText())
+                elif self.name() == "Linenumber":
+                    try:
+                        task["linenumber"] = int(self.readElementText())
+                    except ValueError:
+                        pass
--- a/Project/Project.py	Fri Sep 10 20:03:59 2010 +0200
+++ b/Project/Project.py	Sat Sep 11 17:33:02 2010 +0200
@@ -47,7 +47,7 @@
 from E5XML.UserProjectWriter import UserProjectWriter
 from E5XML.SessionHandler import SessionHandler
 from E5XML.SessionWriter import SessionWriter
-from E5XML.TasksHandler import TasksHandler
+from E5XML.TasksReader import TasksReader
 from E5XML.TasksWriter import TasksWriter
 from E5XML.DebuggerPropertiesHandler import DebuggerPropertiesHandler
 from E5XML.DebuggerPropertiesWriter import DebuggerPropertiesWriter
@@ -1111,103 +1111,18 @@
             return
             
         fn, ext = os.path.splitext(os.path.basename(self.pfile))
-        
-        try:
-            if ext.lower() in [".e4pz"]:
-                fn = os.path.join(self.getProjectManagementDir(), '{0}.e4tz'.format(fn))
-                if not os.path.exists(fn):
-                    return
-                try:
-                    import gzip
-                except ImportError:
-                    E5MessageBox.critical(self.ui,
-                        self.trUtf8("Read tasks"),
-                        self.trUtf8("""Compressed tasks files not supported."""
-                            """ The compression library is missing."""))
-                    return
-                g = gzip.open(fn, "rb")
-                f = io.StringIO(g.read().decode("utf-8"))
-                g.close()
-            else:
-                fn = os.path.join(self.getProjectManagementDir(), '{0}.e4t'.format(fn))
-                if not os.path.exists(fn):
-                    return
-                f = open(fn, "r", encoding = "utf-8")
-            line = f.readline()
-            dtdLine = f.readline()
-            f.close()
-        except EnvironmentError:
+        fn = os.path.join(self.getProjectManagementDir(), '{0}.e4t'.format(fn))
+        if not os.path.exists(fn):
+            return
+        f = QFile(fn)
+        if f.open(QIODevice.ReadOnly):
+            reader = TasksReader(f, True)
+            reader.readXML()
+        else:
             E5MessageBox.critical(self.ui,
                 self.trUtf8("Read tasks"),
                 self.trUtf8("<p>The tasks file <b>{0}</b> could not be read.</p>")\
                     .format(fn))
-            return
-            
-        # now read the file
-        if line.startswith('<?xml'):
-            self.__readXMLTasks(fn, dtdLine.startswith("<!DOCTYPE"))
-        else:
-            E5MessageBox.critical(self.ui,
-                self.trUtf8("Read project session"),
-                self.trUtf8("<p>The tasks file <b>{0}</b> has an unsupported"
-                            " format.</p>")\
-                    .format(fn))
-    
-    def __readXMLTasks(self, fn, validating):
-        """
-        Private method to read the project tasks data from an XML file.
-        
-        @param fn filename of the project tasks file to be read (string)
-        @param validating flag indicating a validation of the XML file is
-            requested (boolean)
-        """
-        if fn.lower().endswith("e4tz"):
-            # work around for a bug in xmlproc
-            validating = False
-        
-        parser = make_parser(validating)
-        handler = TasksHandler(1)
-        er = XMLEntityResolver()
-        eh = XMLErrorHandler()
-        
-        parser.setContentHandler(handler)
-        parser.setEntityResolver(er)
-        parser.setErrorHandler(eh)
-        
-        try:
-            if fn.lower().endswith("e4tz"):
-                try:
-                    import gzip
-                except ImportError:
-                    E5MessageBox.critical(self.ui,
-                        self.trUtf8("Read tasks"),
-                        self.trUtf8("""Compressed tasks files not supported."""
-                            """ The compression library is missing."""))
-                    return
-                g = gzip.open(fn, "rb")
-                f = io.StringIO(g.read().decode("utf-8"))
-                g.close()
-            else:
-                f = open(fn, "r", encoding = "utf-8")
-            try:
-                try:
-                    parser.parse(f)
-                except UnicodeEncodeError:
-                    f.seek(0)
-                    buf = io.StringIO(f.read())
-                    parser.parse(buf)
-            finally:
-                f.close()
-        except IOError:
-            E5MessageBox.critical(self.ui,
-                self.trUtf8("Read tasks"),
-                self.trUtf8("<p>The tasks file <b>{0}</b> could not be read.</p>")\
-                    .format(fn))
-            return
-        except XMLFatalParseError:
-            pass
-            
-        eh.showParseMessages()
         
     def __writeTasks(self):
         """
--- a/UI/UserInterface.py	Fri Sep 10 20:03:59 2010 +0200
+++ b/UI/UserInterface.py	Sat Sep 11 17:33:02 2010 +0200
@@ -94,7 +94,7 @@
 from E5XML.XMLUtilities import make_parser
 from E5XML.XMLErrorHandler import XMLErrorHandler, XMLFatalParseError
 from E5XML.XMLEntityResolver import XMLEntityResolver
-from E5XML.TasksHandler import TasksHandler
+from E5XML.TasksReader import TasksReader
 from E5XML.TasksWriter import TasksWriter
 from E5XML.SessionWriter import SessionWriter
 from E5XML.SessionHandler import SessionHandler
@@ -5046,58 +5046,18 @@
         """
         Private slot to read in the tasks file (.e4t)
         """
-        try:
-            fn = os.path.join(Utilities.getConfigDir(), "eric5tasks.e4t")
-            if not os.path.exists(fn):
-                return
-            f = open(fn, "r", encoding = "utf-8")
-            line = f.readline()
-            dtdLine = f.readline()
-            f.close()
-        except IOError:
+        fn = os.path.join(Utilities.getConfigDir(), "eric5tasks.e4t")
+        if not os.path.exists(fn):
+            return
+        f = QFile(fn)
+        if f.open(QIODevice.ReadOnly):
+            reader = TasksReader(f, viewer = self.taskViewer)
+            reader.readXML()
+        else:
             E5MessageBox.critical(self,
                 self.trUtf8("Read tasks"),
                 self.trUtf8("<p>The tasks file <b>{0}</b> could not be read.</p>")
                     .format(fn))
-            return
-            
-        # now read the file
-        if line.startswith('<?xml'):
-            parser = make_parser(dtdLine.startswith("<!DOCTYPE"))
-            handler = TasksHandler(taskViewer = self.taskViewer)
-            er = XMLEntityResolver()
-            eh = XMLErrorHandler()
-            
-            parser.setContentHandler(handler)
-            parser.setEntityResolver(er)
-            parser.setErrorHandler(eh)
-            
-            try:
-                f = open(fn, "r", encoding = "utf-8")
-                try:
-                    try:
-                        parser.parse(f)
-                    except UnicodeEncodeError:
-                        f.seek(0)
-                        buf = io.StringIO(f.read())
-                        parser.parse(buf)
-                finally:
-                    f.close()
-            except IOError:
-                E5MessageBox.critical(self,
-                    self.trUtf8("Read tasks"),
-                    self.trUtf8("<p>The tasks file <b>{0}</b> could not be read.</p>")\
-                        .format(fn))
-                return
-            except XMLFatalParseError:
-                pass
-                
-            eh.showParseMessages()
-        else:
-            E5MessageBox.critical(self,
-                self.trUtf8("Read tasks"),
-                self.trUtf8("<p>The tasks file <b>{0}</b> has an unsupported"
-                            " format.</p>").format(fn))
         
     def __writeSession(self):
         """
--- a/eric5.e4p	Fri Sep 10 20:03:59 2010 +0200
+++ b/eric5.e4p	Sat Sep 11 17:33:02 2010 +0200
@@ -716,7 +716,6 @@
     <Source>E5XML/TemplatesWriter.py</Source>
     <Source>E5XML/DebuggerPropertiesHandler.py</Source>
     <Source>E5XML/ShortcutsHandler.py</Source>
-    <Source>E5XML/TasksHandler.py</Source>
     <Source>E5XML/Config.py</Source>
     <Source>E5XML/__init__.py</Source>
     <Source>E5XML/TasksWriter.py</Source>
@@ -821,6 +820,7 @@
     <Source>E5XML/XMLStreamWriterBase.py</Source>
     <Source>E5XML/XMLStreamReaderBase.py</Source>
     <Source>E5XML/PluginRepositoryReader.py</Source>
+    <Source>E5XML/TasksReader.py</Source>
   </Sources>
   <Forms>
     <Form>PyUnit/UnittestDialog.ui</Form>

eric ide

mercurial