Sun, 15 Apr 2018 11:36:43 +0200
Introduced a new project file format version and added reader and writer support for the 'make' parameter set.
DTDs/Project-4.6.dtd | file | annotate | diff | comparison | revisions | |
DTDs/Project-5.0.dtd | file | annotate | diff | comparison | revisions | |
DTDs/Project-5.1.dtd | file | annotate | diff | comparison | revisions | |
DTDs/Project-6.0.dtd | file | annotate | diff | comparison | revisions | |
DTDs/Project-6.1.dtd | file | annotate | diff | comparison | revisions | |
E5XML/Config.py | file | annotate | diff | comparison | revisions | |
E5XML/ProjectReader.py | file | annotate | diff | comparison | revisions | |
E5XML/ProjectWriter.py | file | annotate | diff | comparison | revisions | |
Project/Project.py | file | annotate | diff | comparison | revisions |
--- a/DTDs/Project-4.6.dtd Sat Apr 14 18:48:38 2018 +0200 +++ b/DTDs/Project-4.6.dtd Sun Apr 15 11:36:43 2018 +0200 @@ -100,7 +100,7 @@ <!ELEMENT ProjectTypeSpecificData (dict)> -<!ELEMENT ProjectTypeSpecific (ExtraData?)> +<!ELEMENT ProjectTypeSpecific (ProjectTypeSpecific?)> <!ELEMENT DocumentationParams (dict)> @@ -146,7 +146,7 @@ Vcs, FiletypeAssociations, LexerAssociations?, - Extra?, + ProjectTypeSpecific?, Documentation?, Packagers?, Checkers?,
--- a/DTDs/Project-5.0.dtd Sat Apr 14 18:48:38 2018 +0200 +++ b/DTDs/Project-5.0.dtd Sun Apr 15 11:36:43 2018 +0200 @@ -107,7 +107,7 @@ <!ELEMENT ProjectTypeSpecificData (dict)> -<!ELEMENT ProjectTypeSpecific (ExtraData?)> +<!ELEMENT ProjectTypeSpecific (ProjectTypeSpecific?)> <!ELEMENT DocumentationParams (dict)> @@ -129,11 +129,11 @@ <!ELEMENT ProjectWordList (#PCDATA)> -<!ELEMENT ProjectExcludeList (#PCDATA)> - +<!ELEMENT ProjectExcludeList (#PCDATA)> + <!ELEMENT Hash (#PCDATA)> -<!ELEMENT Project (Language, +<!ELEMENT Project (Language, ProjectWordList?, ProjectExcludeList?, Hash, @@ -156,7 +156,7 @@ Vcs, FiletypeAssociations, LexerAssociations?, - Extra?, + ProjectTypeSpecific?, Documentation?, Packagers?, Checkers?,
--- a/DTDs/Project-5.1.dtd Sat Apr 14 18:48:38 2018 +0200 +++ b/DTDs/Project-5.1.dtd Sun Apr 15 11:36:43 2018 +0200 @@ -107,7 +107,7 @@ <!ELEMENT ProjectTypeSpecificData (dict)> -<!ELEMENT ProjectTypeSpecific (ExtraData?)> +<!ELEMENT ProjectTypeSpecific (ProjectTypeSpecific?)> <!ELEMENT DocumentationParams (dict)> @@ -161,7 +161,7 @@ Vcs, FiletypeAssociations, LexerAssociations?, - Extra?, + ProjectTypeSpecific?, Documentation?, Packagers?, Checkers?,
--- a/DTDs/Project-6.0.dtd Sat Apr 14 18:48:38 2018 +0200 +++ b/DTDs/Project-6.0.dtd Sun Apr 15 11:36:43 2018 +0200 @@ -111,7 +111,7 @@ <!ELEMENT ProjectTypeSpecificData (dict)> -<!ELEMENT ProjectTypeSpecific (ExtraData?)> +<!ELEMENT ProjectTypeSpecific (ProjectTypeSpecific?)> <!ELEMENT DocumentationParams (dict)> @@ -165,7 +165,7 @@ Vcs, FiletypeAssociations, LexerAssociations?, - Extra?, + ProjectTypeSpecific?, Documentation?, Packagers?, Checkers?,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DTDs/Project-6.1.dtd Sun Apr 15 11:36:43 2018 +0200 @@ -0,0 +1,179 @@ +<!-- This is the DTD for eric5's project file version 6.0 --> + +<!-- This is a copy of the Basic DTD --> +<!ELEMENT int (#PCDATA)> +<!ELEMENT long (#PCDATA)> +<!ELEMENT float (#PCDATA)> +<!ELEMENT complex (#PCDATA)> +<!ELEMENT bool (#PCDATA)> +<!ELEMENT string (#PCDATA)> +<!ELEMENT bytes (#PCDATA)> +<!ELEMENT bytearray (#PCDATA)> +<!ELEMENT none EMPTY> + +<!ELEMENT pickle (#PCDATA)> +<!ATTLIST pickle + method CDATA #REQUIRED + encoding CDATA #REQUIRED> + +<!ELEMENT key (int | long | float | complex | string | bytes)> +<!ELEMENT value (int | long | float | complex | bool | string | bytes | + bytearray | none | dict | tuple | list | set | frozenset | pickle)> + +<!ELEMENT dict (key, value)*> + +<!ELEMENT tuple (int | long | float | complex | bool | string | bytes | + bytearray | none | dict | tuple | list | set | frozenset | pickle)*> + +<!ELEMENT list (int | long | float | complex | bool | string | bytes | + bytearray | none | dict | tuple | list | set | frozenset | pickle)*> + +<!ELEMENT set (int | long | float | complex | bool | string | bytes | + bytearray | none | dict | tuple | list | set | frozenset | pickle)*> + +<!ELEMENT frozenset (int | long | float | complex | bool | string | bytes | + bytearray | none | dict | tuple | list | set | frozenset | pickle)*> +<!-- End of the Basic DTD --> + +<!ELEMENT ProgLanguage (#PCDATA)> +<!ATTLIST ProgLanguage + mixed CDATA #REQUIRED> + +<!ELEMENT ProjectType (#PCDATA)> + +<!ELEMENT Description (#PCDATA)> + +<!ELEMENT Version (#PCDATA)> + +<!ELEMENT Author (#PCDATA)> + +<!ELEMENT Email (#PCDATA)> + +<!ELEMENT TranslationPattern (#PCDATA)> + +<!ELEMENT TranslationsBinPath (#PCDATA)> + +<!ELEMENT Source (#PCDATA)> + +<!ELEMENT Sources (Source*)> + +<!ELEMENT Form (#PCDATA)> + +<!ELEMENT Forms (Form*)> + +<!ELEMENT Translation (#PCDATA)> + +<!ELEMENT Translations (Translation*)> + +<!ELEMENT TranslationException (#PCDATA)> + +<!ELEMENT TranslationExceptions (TranslationException*)> + +<!ELEMENT Resource (#PCDATA)> + +<!ELEMENT Resources (Resource*)> + +<!ELEMENT Interface (#PCDATA)> + +<!ELEMENT Interfaces (Interface*)> + +<!ELEMENT Protocol (#PCDATA)> + +<!ELEMENT Protocols (Protocol*)> + +<!ELEMENT Other (#PCDATA)> + +<!ELEMENT Others (Other*)> + +<!ELEMENT MainScript (#PCDATA)> + +<!ELEMENT VcsType (#PCDATA)> +<!ELEMENT VcsOptions (dict)> +<!ELEMENT VcsOtherData (dict)> + +<!ELEMENT Vcs (VcsType?, + VcsOptions?, + VcsOtherData?)> + +<!ELEMENT FiletypeAssociation EMPTY> +<!ATTLIST FiletypeAssociation + pattern CDATA #REQUIRED + type CDATA #REQUIRED> + +<!ELEMENT FiletypeAssociations (FiletypeAssociation*)> + +<!ELEMENT LexerAssociation EMPTY> +<!ATTLIST LexerAssociation + pattern CDATA #REQUIRED + lexer CDATA #REQUIRED> + +<!ELEMENT LexerAssociations (LexerAssociation*)> + +<!ELEMENT MakeParameters (dict)> + +<!ELEMENT Make (MakeParameters?)> + +<!ELEMENT ProjectTypeSpecificData (dict)> + +<!ELEMENT ProjectTypeSpecific (ProjectTypeSpecific?)> + +<!ELEMENT DocumentationParams (dict)> + +<!ELEMENT Documentation (DocumentationParams?)> + +<!ELEMENT PackagersParams (dict)> + +<!ELEMENT Packagers (PackagersParams?)> + +<!ELEMENT CheckersParams (dict)> + +<!ELEMENT Checkers (CheckersParams?)> + +<!ELEMENT OtherToolsParams (dict)> + +<!ELEMENT OtherTools (OtherToolsParams?)> + +<!ELEMENT Language (#PCDATA)> + +<!ELEMENT ProjectWordList (#PCDATA)> + +<!ELEMENT ProjectExcludeList (#PCDATA)> + +<!ELEMENT Hash (#PCDATA)> + +<!ELEMENT Eol EMPTY> +<!ATTLIST Eol + index CDATA #REQUIRED> + +<!ELEMENT Project (Language, + ProjectWordList?, + ProjectExcludeList?, + Hash, + ProgLanguage, + ProjectType, + Description?, + Version?, + Author?, + Email?, + TranslationPattern?, + TranslationsBinPath?, + Eol?, + Sources, + Forms, + Translations, + TranslationExceptions?, + Resources, + Interfaces, + Others, + MainScript?, + Vcs, + FiletypeAssociations, + LexerAssociations?, + Make?, + ProjectTypeSpecific?, + Documentation?, + Packagers?, + Checkers?, + OtherTools?)> +<!ATTLIST Project + version CDATA #REQUIRED>
--- a/E5XML/Config.py Sat Apr 14 18:48:38 2018 +0200 +++ b/E5XML/Config.py Sun Apr 15 11:36:43 2018 +0200 @@ -10,8 +10,9 @@ # version number of the multi project file multiProjectFileFormatVersion = "5.1" -# version number of the project file -projectFileFormatVersion = "6.0" +# version numbers of the project file +projectFileFormatVersion ="6.1" +projectFileFormatVersionProto = "6.0" projectFileFormatVersionAlt = "5.1" # version number of the user project file
--- a/E5XML/ProjectReader.py Sat Apr 14 18:48:38 2018 +0200 +++ b/E5XML/ProjectReader.py Sun Apr 15 11:36:43 2018 +0200 @@ -19,8 +19,7 @@ """ Class for reading an XML project file. """ - supportedVersions = ["4.6", "5.0", "5.1", "6.0"] - # TODO: add 'make' support + supportedVersions = ["4.6", "5.0", "5.1", "6.0", "6.1"] def __init__(self, device, project): """ @@ -113,6 +112,9 @@ self.__readFiletypeAssociations() elif self.name() == "LexerAssociations": self.__readLexerAssociations() + elif self.name() == "Make": + self.__readBasicDataField( + "Make", "MakeParameters", "MAKEPARAMS") elif self.name() == "ProjectTypeSpecific": self.__readBasicDataField( "ProjectTypeSpecific", "ProjectTypeSpecificData",
--- a/E5XML/ProjectWriter.py Sat Apr 14 18:48:38 2018 +0200 +++ b/E5XML/ProjectWriter.py Sun Apr 15 11:36:43 2018 +0200 @@ -14,7 +14,8 @@ from E5Gui.E5Application import e5App from .XMLStreamWriterBase import XMLStreamWriterBase -from .Config import projectFileFormatVersion, projectFileFormatVersionAlt +from .Config import projectFileFormatVersion, projectFileFormatVersionProto, \ + projectFileFormatVersionAlt import Preferences import Utilities @@ -24,7 +25,6 @@ """ Class implementing the writer class for writing an XML project file. """ - # TODO: add 'make' support def __init__(self, device, projectName): """ Constructor @@ -43,8 +43,10 @@ """ XMLStreamWriterBase.writeXML(self) - if self.pdata["PROTOCOLS"]: + if not e5App().getObject("Project").hasDefaultMakeParameters(): fileFormatVersion = projectFileFormatVersion + elif self.pdata["PROTOCOLS"]: + fileFormatVersion = projectFileFormatVersionProto else: fileFormatVersion = projectFileFormatVersionAlt @@ -215,6 +217,12 @@ self.writeAttribute("lexer", lexer) self.writeEndElement() + # do the 'make' parameters + if not e5App().getObject("Project").hasDefaultMakeParameters(): + self.writeStartElement("Make") + self.writeBasics("MakeParameters", self.pdata["MAKEPARAMS"]) + self.writeEndElement() + # do the extra project data stuff if len(self.pdata["PROJECTTYPESPECIFICDATA"]): self.writeStartElement("ProjectTypeSpecific")
--- a/Project/Project.py Sat Apr 14 18:48:38 2018 +0200 +++ b/Project/Project.py Sun Apr 15 11:36:43 2018 +0200 @@ -5377,3 +5377,29 @@ """ # TODO: implement this pass + + def hasDefaultMakeParameters(self): + """ + Private method to test, if the project contains the default make + parameters. + + @return flag indicating default parameter set + @rtype bool + """ + return self.pdata["MAKEPARAMS"] == { + "MakeEnabled": False, + "MakeExecutable": "", + "MakeFile": "", + "MakeTarget": "", + "MakeParameters": "", + "MakeTestOnly": True, + } + + def isMakeEnabled(self): + """ + Public method to test, if make is enabled for the project. + + @return flag indicating enabled make support + @rtype bool + """ + return self.pdata["MAKEPARAMS"]["MakeEnabled"]