Project/Project.py

changeset 607
d95d60ba16aa
parent 606
cc26d1c27da5
child 608
d8fea1e76975
--- a/Project/Project.py	Mon Sep 13 09:06:38 2010 +0200
+++ b/Project/Project.py	Mon Sep 13 15:59:43 2010 +0200
@@ -49,7 +49,7 @@
 from E5XML.SessionWriter import SessionWriter
 from E5XML.TasksReader import TasksReader
 from E5XML.TasksWriter import TasksWriter
-from E5XML.DebuggerPropertiesHandler import DebuggerPropertiesHandler
+from E5XML.DebuggerPropertiesReader import DebuggerPropertiesReader
 from E5XML.DebuggerPropertiesWriter import DebuggerPropertiesWriter
 
 import VCS
@@ -1003,115 +1003,21 @@
             return
             
         fn, ext = os.path.splitext(os.path.basename(self.pfile))
-        
-        try:
-            if ext.lower() in [".e4pz"]:
-                fn = os.path.join(self.getProjectManagementDir(), '{0}.e4dz'.format(fn))
-                try:
-                    import gzip
-                except ImportError:
-                    if not quiet:
-                        E5MessageBox.critical(self.ui,
-                            self.trUtf8("Read debugger properties"),
-                            self.trUtf8("""Compressed project session 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}.e4d'.format(fn))
-                f = open(fn, "r", encoding = "utf-8")
-            line = f.readline()
-            dtdLine = f.readline()
+        fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn))
+        
+        f = QFile(fn)
+        if f.open(QIODevice.ReadOnly):
+            reader = DebuggerPropertiesReader(f, self)
+            reader.readXML(quiet = quiet)
             f.close()
-        except EnvironmentError:
+        else:
             if not quiet:
                 E5MessageBox.critical(self.ui,
                     self.trUtf8("Read debugger properties"),
                     self.trUtf8("<p>The project debugger properties file <b>{0}</b> could"
                                 " not be read.</p>").format(fn))
-            return
-            
-        # now read the file
-        if line.startswith('<?xml'):
-            self.__readXMLDebugProperties(fn, dtdLine.startswith("<!DOCTYPE"), quiet)
-        else:
-            if not quiet:
-                E5MessageBox.critical(self.ui,
-                    self.trUtf8("Read debugger properties"),
-                    self.trUtf8("<p>The project debugger properties file <b>{0}</b> has"
-                                " an unsupported format.</p>").format(fn))
-        
-    def __readXMLDebugProperties(self, fn, validating, quiet):
-        """
-        Public method to read the debugger properties from an XML file.
-        
-        @param fn filename of the project debugger properties file to be read
-            (string)
-        @param validating flag indicating a validation of the XML file is
-            requested (boolean)
-        @param quiet flag indicating quiet operations.
-            If this flag is true, no errors are reported.
-        """
-        if fn.lower().endswith("e4dz"):
-            # work around for a bug in xmlproc
-            validating = False
-        
-        parser = make_parser(validating)
-        handler = DebuggerPropertiesHandler(self)
-        er = XMLEntityResolver()
-        eh = XMLErrorHandler()
-        
-        parser.setContentHandler(handler)
-        parser.setEntityResolver(er)
-        parser.setErrorHandler(eh)
-        
-        try:
-            if fn.lower().endswith("e4dz"):
-                try:
-                    import gzip
-                except ImportError:
-                    if not quiet:
-                        E5MessageBox.critical(self.ui,
-                            self.trUtf8("Read debugger properties"),
-                            self.trUtf8("<p>The project debugger properties file"
-                                        " <b>{0}</b> could not be read.</p>").format(fn))
-                    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)
-                if self.debugProperties["INTERPRETER"]:
-                    self.debugPropertiesLoaded = True
-                else:
-                    self.debugPropertiesLoaded = False
-            finally:
-                f.close()
-        except IOError:
-            if not quiet:
-                E5MessageBox.critical(self.ui,
-                    self.trUtf8("Read debugger properties"),
-                    self.trUtf8("<p>The project debugger properties file <b>{0}</b> could"
-                                " not be read.</p>")
-                        .format(fn))
-            return
-        except XMLFatalParseError:
-            pass
-            
-        if not quiet:
-            eh.showParseMessages()
-        
-    def __writeDebugProperties(self, quiet=0):
+        
+    def __writeDebugProperties(self, quiet = False):
         """
         Private method to write the project debugger properties file (.e4d)
         
@@ -1126,35 +1032,14 @@
             return
             
         fn, ext = os.path.splitext(os.path.basename(self.pfile))
-        
-        try:
-            if ext.lower() == ".e4pz":
-                fn = os.path.join(self.getProjectManagementDir(), '{0}.e4dz'.format(fn))
-                try:
-                    import gzip
-                except ImportError:
-                    if not quiet:
-                        E5MessageBox.critical(self.ui,
-                            self.trUtf8("Save debugger properties"),
-                            self.trUtf8("""Compressed project debugger properties files"""
-                                        """ not supported. The compression library is"""
-                                        """ missing."""))
-                    return
-                f = io.StringIO()
-            else:
-                fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn))
-                f = open(fn, "w", encoding = "utf-8")
-            
+        fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn))
+        
+        f = QFile(fn)
+        if f.open(QIODevice.WriteOnly):
             DebuggerPropertiesWriter(f, os.path.splitext(os.path.basename(fn))[0])\
                 .writeXML()
-            
-            if fn.lower().endswith("e4dz"):
-                g = gzip.open(fn, "wb")
-                g.write(f.getvalue().encode("utf-8"))
-                g.close()
             f.close()
-            
-        except IOError:
+        else:
             if not quiet:
                 E5MessageBox.critical(self.ui,
                     self.trUtf8("Save debugger properties"),

eric ide

mercurial