--- a/Templates/TemplateViewer.py Sat Sep 11 17:36:08 2010 +0200 +++ b/Templates/TemplateViewer.py Sat Sep 11 18:09:03 2010 +0200 @@ -10,7 +10,6 @@ import datetime import os import re -import io from PyQt4.QtCore import * from PyQt4.QtGui import * @@ -24,10 +23,7 @@ import Preferences -from E5XML.XMLUtilities import make_parser -from E5XML.XMLErrorHandler import XMLErrorHandler, XMLFatalParseError -from E5XML.XMLEntityResolver import XMLEntityResolver -from E5XML.TemplatesHandler import TemplatesHandler +from E5XML.TemplatesReader import TemplatesReader from E5XML.TemplatesWriter import TemplatesWriter import UI.PixmapCache @@ -878,60 +874,20 @@ @param filename name of a templates file to read (string) """ - try: - if filename is None: - filename = os.path.join(Utilities.getConfigDir(), "eric5templates.e4c") - if not os.path.exists(filename): - return - f = open(filename, "r", encoding = "utf-8") - line = f.readline() - dtdLine = f.readline() - f.close() - except IOError: + if filename is None: + filename = os.path.join(Utilities.getConfigDir(), "eric5templates.e4c") + if not os.path.exists(filename): + return + + f = QFile(filename) + if f.open(QIODevice.ReadOnly): + reader = TemplatesReader(f, viewer = self) + reader.readXML() + else: E5MessageBox.critical(self, self.trUtf8("Read templates"), self.trUtf8("<p>The templates file <b>{0}</b> could not be read.</p>") .format(filename)) - return - - # now read the file - if line.startswith('<?xml'): - parser = make_parser(dtdLine.startswith("<!DOCTYPE")) - handler = TemplatesHandler(templateViewer = self) - er = XMLEntityResolver() - eh = XMLErrorHandler() - - parser.setContentHandler(handler) - parser.setEntityResolver(er) - parser.setErrorHandler(eh) - - try: - f = open(filename, "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 templates"), - self.trUtf8("<p>The templates file <b>{0}</b> could not be read.</p>") - .format(filename)) - return - except XMLFatalParseError: - pass - - eh.showParseMessages() - else: - E5MessageBox.critical(self, - self.trUtf8("Read templates"), - self.trUtf8("<p>The templates file <b>{0}</b> has an" - " unsupported format.</p>") - .format(filename)) def __configure(self): """