Project/Project.py

changeset 606
cc26d1c27da5
parent 599
ee87fe94bf96
child 607
d95d60ba16aa
equal deleted inserted replaced
605:9c7527ecbf6e 606:cc26d1c27da5
41 from E5XML.XMLErrorHandler import XMLErrorHandler, XMLFatalParseError 41 from E5XML.XMLErrorHandler import XMLErrorHandler, XMLFatalParseError
42 from E5XML.XMLEntityResolver import XMLEntityResolver 42 from E5XML.XMLEntityResolver import XMLEntityResolver
43 43
44 from E5XML.ProjectHandler import ProjectHandler 44 from E5XML.ProjectHandler import ProjectHandler
45 from E5XML.ProjectWriter import ProjectWriter 45 from E5XML.ProjectWriter import ProjectWriter
46 from E5XML.UserProjectHandler import UserProjectHandler 46 from E5XML.UserProjectReader import UserProjectReader
47 from E5XML.UserProjectWriter import UserProjectWriter 47 from E5XML.UserProjectWriter import UserProjectWriter
48 from E5XML.SessionReader import SessionReader 48 from E5XML.SessionReader import SessionReader
49 from E5XML.SessionWriter import SessionWriter 49 from E5XML.SessionWriter import SessionWriter
50 from E5XML.TasksReader import TasksReader 50 from E5XML.TasksReader import TasksReader
51 from E5XML.TasksWriter import TasksWriter 51 from E5XML.TasksWriter import TasksWriter
821 """ 821 """
822 if self.pfile is None: 822 if self.pfile is None:
823 return 823 return
824 824
825 fn, ext = os.path.splitext(os.path.basename(self.pfile)) 825 fn, ext = os.path.splitext(os.path.basename(self.pfile))
826
827 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4q'.format(fn)) 826 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4q'.format(fn))
828 if os.path.exists(fn): 827 if os.path.exists(fn):
829 try: 828 f = QFile(fn)
830 f = open(fn, "r", encoding = "utf-8") 829 if f.open(QIODevice.ReadOnly):
831 830 reader = UserProjectReader(f, self)
832 parser = make_parser(True) 831 reader.readXML()
833 handler = UserProjectHandler(self) 832 f.close()
834 er = XMLEntityResolver() 833 else:
835 eh = XMLErrorHandler()
836
837 parser.setContentHandler(handler)
838 parser.setEntityResolver(er)
839 parser.setErrorHandler(eh)
840
841 try:
842 try:
843 parser.parse(f)
844 except UnicodeEncodeError:
845 f.seek(0)
846 buf = io.StringIO(f.read())
847 parser.parse(buf)
848 finally:
849 f.close()
850 except IOError:
851 E5MessageBox.critical(self.ui, 834 E5MessageBox.critical(self.ui,
852 self.trUtf8("Read user project properties"), 835 self.trUtf8("Read user project properties"),
853 self.trUtf8("<p>The user specific project properties file <b>{0}</b>" 836 self.trUtf8("<p>The user specific project properties file <b>{0}</b>"
854 " could not be read.</p>").format(fn)) 837 " could not be read.</p>").format(fn))
855 return
856 except XMLFatalParseError:
857 pass
858
859 eh.showParseMessages()
860 838
861 def __writeUserProperties(self): 839 def __writeUserProperties(self):
862 """ 840 """
863 Private method to write the project data to an XML file. 841 Private method to write the project data to an XML file.
864 """ 842 """
865 if self.pfile is None: 843 if self.pfile is None:
866 return 844 return
867 845
868 fn, ext = os.path.splitext(os.path.basename(self.pfile)) 846 fn, ext = os.path.splitext(os.path.basename(self.pfile))
869
870 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4q'.format(fn)) 847 fn = os.path.join(self.getProjectManagementDir(), '{0}.e4q'.format(fn))
871 848
872 try: 849 f = QFile(fn)
873 f = open(fn, "w", encoding = "utf-8") 850 if f.open(QIODevice.WriteOnly):
874
875 UserProjectWriter(f, os.path.splitext(os.path.basename(fn))[0]).writeXML() 851 UserProjectWriter(f, os.path.splitext(os.path.basename(fn))[0]).writeXML()
876
877 f.close() 852 f.close()
878 except IOError: 853 else:
879 E5MessageBox.critical(self.ui, 854 E5MessageBox.critical(self.ui,
880 self.trUtf8("Save user project properties"), 855 self.trUtf8("Save user project properties"),
881 self.trUtf8("<p>The user specific project properties file <b>{0}</b>" 856 self.trUtf8("<p>The user specific project properties file <b>{0}</b>"
882 " could not be written.</p>").format(fn)) 857 " could not be written.</p>").format(fn))
883 858

eric ide

mercurial