Thu, 18 Aug 2016 17:02:21 +0200
Finished cleaning up some code related to the Project class and data structures.
--- a/APIs/Python3/eric6.api Wed Aug 17 17:52:52 2016 +0200 +++ b/APIs/Python3/eric6.api Thu Aug 18 17:02:21 2016 +0200 @@ -7023,7 +7023,6 @@ eric6.Project.Project.Project.copyDirectory?4(olddn, newdn) eric6.Project.Project.Project.createNewProject?4() eric6.Project.Project.Project.createProjectManagementDir?4() -eric6.Project.Project.Project.dbgKeynames?7 eric6.Project.Project.Project.deleteDirectory?4(dn) eric6.Project.Project.Project.deleteFile?4(fn) eric6.Project.Project.Project.deleteLanguageFile?4(langFile) @@ -7074,6 +7073,7 @@ eric6.Project.Project.Project.isDebugPropertiesLoaded?4() eric6.Project.Project.Project.isDirty?4() eric6.Project.Project.Project.isJavaScriptProject?4() +eric6.Project.Project.Project.isMixedLanguageProject?4() eric6.Project.Project.Project.isOpen?4() eric6.Project.Project.Project.isProjectFile?4(fn) eric6.Project.Project.Project.isProjectForm?4(fn) @@ -7084,7 +7084,6 @@ eric6.Project.Project.Project.isPy3Project?4() eric6.Project.Project.Project.isPythonProject?4() eric6.Project.Project.Project.isRubyProject?4() -eric6.Project.Project.Project.keynames?7 eric6.Project.Project.Project.lexerAssociationsChanged?7 eric6.Project.Project.Project.linguistFile?7 eric6.Project.Project.Project.moveDirectory?4(olddn, newdn) @@ -7144,7 +7143,6 @@ eric6.Project.Project.Project.unregisterProjectType?4(type_) eric6.Project.Project.Project.updateFileTypes?4() eric6.Project.Project.Project.useSystemEol?4() -eric6.Project.Project.Project.userKeynames?7 eric6.Project.Project.Project.vcsSoftwareAvailable?4() eric6.Project.Project.Project.vcsStatusMonitorStatus?7 eric6.Project.Project.Project.writeTasks?4()
--- a/Debugger/DebugUI.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Debugger/DebugUI.py Thu Aug 18 17:02:21 2016 +0200 @@ -891,7 +891,7 @@ """ self.projectOpen = True cap = self.debugServer.getClientCapabilities( - self.project.pdata["PROGLANGUAGE"][0]) + self.project.getProjectLanguage()) if not self.passive: self.debugProjectAct.setEnabled(cap & HasDebugger) self.runProjectAct.setEnabled(cap & HasInterpreter)
--- a/Documentation/Help/source.qhp Wed Aug 17 17:52:52 2016 +0200 +++ b/Documentation/Help/source.qhp Thu Aug 18 17:02:21 2016 +0200 @@ -10914,6 +10914,7 @@ <keyword name="Project.isDebugPropertiesLoaded" id="Project.isDebugPropertiesLoaded" ref="eric6.Project.Project.html#Project.isDebugPropertiesLoaded" /> <keyword name="Project.isDirty" id="Project.isDirty" ref="eric6.Project.Project.html#Project.isDirty" /> <keyword name="Project.isJavaScriptProject" id="Project.isJavaScriptProject" ref="eric6.Project.Project.html#Project.isJavaScriptProject" /> + <keyword name="Project.isMixedLanguageProject" id="Project.isMixedLanguageProject" ref="eric6.Project.Project.html#Project.isMixedLanguageProject" /> <keyword name="Project.isOpen" id="Project.isOpen" ref="eric6.Project.Project.html#Project.isOpen" /> <keyword name="Project.isProjectFile" id="Project.isProjectFile" ref="eric6.Project.Project.html#Project.isProjectFile" /> <keyword name="Project.isProjectForm" id="Project.isProjectForm" ref="eric6.Project.Project.html#Project.isProjectForm" />
--- a/Documentation/Source/eric6.Project.Project.html Wed Aug 17 17:52:52 2016 +0200 +++ b/Documentation/Source/eric6.Project.Project.html Thu Aug 18 17:02:21 2016 +0200 @@ -173,7 +173,7 @@ QObject <h3>Class Attributes</h3> <table> -<tr><td>dbgKeynames</td></tr><tr><td>eols</td></tr><tr><td>keynames</td></tr><tr><td>userKeynames</td></tr> +<tr><td>eols</td></tr> </table> <h3>Class Methods</h3> <table> @@ -569,6 +569,9 @@ <td><a href="#Project.isJavaScriptProject">isJavaScriptProject</a></td> <td>Public method to check, if this project is a JavaScript project.</td> </tr><tr> +<td><a href="#Project.isMixedLanguageProject">isMixedLanguageProject</a></td> +<td>Public method to check, if this is a mixed language project.</td> +</tr><tr> <td><a href="#Project.isOpen">isOpen</a></td> <td>Public method to return the opened state.</td> </tr><tr> @@ -1968,6 +1971,21 @@ <dd> flag indicating a JavaScript project (boolean) </dd> +</dl><a NAME="Project.isMixedLanguageProject" ID="Project.isMixedLanguageProject"></a> +<h4>Project.isMixedLanguageProject</h4> +<b>isMixedLanguageProject</b>(<i></i>) +<p> + Public method to check, if this is a mixed language project. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating a mixed language project +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="Project.isOpen" ID="Project.isOpen"></a> <h4>Project.isOpen</h4> <b>isOpen</b>(<i></i>)
--- a/E5XML/ProjectReader.py Wed Aug 17 17:52:52 2016 +0200 +++ b/E5XML/ProjectReader.py Thu Aug 18 17:02:21 2016 +0200 @@ -48,8 +48,8 @@ if self.version not in self.supportedVersions: self.raiseUnsupportedFormatVersion(self.version) elif self.name() == "Language": - self.project.pdata["SPELLLANGUAGE"] = [ - self.readElementText()] + self.project.pdata["SPELLLANGUAGE"] = \ + self.readElementText() elif self.name() == "ProjectWordList": self.project.pdata["SPELLWORDS"] = \ Utilities.toNativeSeparators(self.readElementText()) @@ -57,26 +57,24 @@ self.project.pdata["SPELLEXCLUDES"] = \ Utilities.toNativeSeparators(self.readElementText()) elif self.name() == "Hash": - self.project.pdata["HASH"] = [self.readElementText()] + self.project.pdata["HASH"] = self.readElementText() elif self.name() == "ProgLanguage": self.project.pdata["MIXEDLANGUAGE"] = \ - [int(self.attribute("mixed", "0"))] - self.project.pdata["PROGLANGUAGE"] = [ - self.readElementText()] - if self.project.pdata["PROGLANGUAGE"][0] == "Python": + int(self.attribute("mixed", "0")) + self.project.pdata["PROGLANGUAGE"] = self.readElementText() + if self.project.pdata["PROGLANGUAGE"] == "Python": # convert Python to the more specific Python2 - self.project.pdata["PROGLANGUAGE"][0] = "Python2" + self.project.pdata["PROGLANGUAGE"] = "Python2" elif self.name() == "ProjectType": - self.project.pdata["PROJECTTYPE"] = [ - self.readElementText()] + self.project.pdata["PROJECTTYPE"] = self.readElementText() elif self.name() == "Description": self.project.pdata["DESCRIPTION"] = self.readElementText() elif self.name() == "Version": self.project.pdata["VERSION"] = self.readElementText() elif self.name() == "Author": - self.project.pdata["AUTHOR"] = [self.readElementText()] + self.project.pdata["AUTHOR"] = self.readElementText() elif self.name() == "Email": - self.project.pdata["EMAIL"] = [self.readElementText()] + self.project.pdata["EMAIL"] = self.readElementText() elif self.name() == "TranslationPattern": self.project.pdata["TRANSLATIONPATTERN"] = \ Utilities.toNativeSeparators(self.readElementText())
--- a/E5XML/ProjectWriter.py Wed Aug 17 17:52:52 2016 +0200 +++ b/E5XML/ProjectWriter.py Thu Aug 18 17:02:21 2016 +0200 @@ -53,15 +53,15 @@ " Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) self.writeComment(" Copyright (C) {0} {1}, {2} ".format( time.strftime('%Y'), - self.pdata["AUTHOR"][0], - self.pdata["EMAIL"][0])) + self.pdata["AUTHOR"], + self.pdata["EMAIL"])) # add the main tag self.writeStartElement("Project") self.writeAttribute("version", projectFileFormatVersion) # do the language (used for spell checking) - self.writeTextElement("Language", self.pdata["SPELLLANGUAGE"][0]) + self.writeTextElement("Language", self.pdata["SPELLLANGUAGE"]) if self.pdata["SPELLWORDS"]: self.writeTextElement( "ProjectWordList", @@ -72,16 +72,16 @@ Utilities.fromNativeSeparators(self.pdata["SPELLEXCLUDES"])) # do the hash - self.writeTextElement("Hash", self.pdata["HASH"][0]) + self.writeTextElement("Hash", self.pdata["HASH"]) # do the programming language self.writeStartElement("ProgLanguage") - self.writeAttribute("mixed", str(int(self.pdata["MIXEDLANGUAGE"][0]))) - self.writeCharacters(self.pdata["PROGLANGUAGE"][0]) + self.writeAttribute("mixed", str(int(self.pdata["MIXEDLANGUAGE"]))) + self.writeCharacters(self.pdata["PROGLANGUAGE"]) self.writeEndElement() # do the UI type - self.writeTextElement("ProjectType", self.pdata["PROJECTTYPE"][0]) + self.writeTextElement("ProjectType", self.pdata["PROJECTTYPE"]) # do description if self.pdata["DESCRIPTION"]: @@ -89,8 +89,8 @@ # do version, author and email self.writeTextElement("Version", self.pdata["VERSION"]) - self.writeTextElement("Author", self.pdata["AUTHOR"][0]) - self.writeTextElement("Email", self.pdata["EMAIL"][0]) + self.writeTextElement("Author", self.pdata["AUTHOR"]) + self.writeTextElement("Email", self.pdata["EMAIL"]) # do the translation pattern if self.pdata["TRANSLATIONPATTERN"]:
--- a/E5XML/UserProjectWriter.py Wed Aug 17 17:52:52 2016 +0200 +++ b/E5XML/UserProjectWriter.py Thu Aug 18 17:02:21 2016 +0200 @@ -55,8 +55,8 @@ self.writeComment( " Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) self.writeComment(" Copyright (C) {0} {1}, {2} ".format( - time.strftime('%Y'), self.pdata["AUTHOR"][0], - self.pdata["EMAIL"][0])) + time.strftime('%Y'), self.pdata["AUTHOR"], + self.pdata["EMAIL"])) # add the main tag self.writeStartElement("UserProject")
--- a/Project/DebuggerPropertiesDialog.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/DebuggerPropertiesDialog.py Thu Aug 18 17:02:21 2016 +0200 @@ -54,24 +54,24 @@ self.interpreterPicker.setText( self.project.debugProperties["INTERPRETER"]) else: - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.pdata["PROGLANGUAGE"] in \ ["Python", "Python2", "Python3"]: self.interpreterPicker.setText(sys.executable) - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.pdata["PROGLANGUAGE"] == "Ruby": self.interpreterPicker.setText("/usr/bin/ruby") if self.project.debugProperties["DEBUGCLIENT"]: self.debugClientPicker.setText( self.project.debugProperties["DEBUGCLIENT"]) else: - if self.project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2"]: + if self.project.pdata["PROGLANGUAGE"] in ["Python", "Python2"]: debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Python", "DebugClient.py") - elif self.project.pdata["PROGLANGUAGE"][0] == "Python3": + elif self.project.pdata["PROGLANGUAGE"] == "Python3": debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Python3", "DebugClient.py") - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.pdata["PROGLANGUAGE"] == "Ruby": debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Ruby", "DebugClient.rb") @@ -112,8 +112,7 @@ Private slot to perform actions before the debug client selection dialog is shown. """ - filters = self.project.dbgFilters[ - self.project.pdata["PROGLANGUAGE"][0]] + filters = self.project.dbgFilters[self.project.pdata["PROGLANGUAGE"]] filters += self.tr("All Files (*)") self.debugClientPicker.setFilters(filters) @@ -124,24 +123,24 @@ self.project.debugProperties["INTERPRETER"] = \ self.interpreterPicker.text() if not self.project.debugProperties["INTERPRETER"]: - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.pdata["PROGLANGUAGE"] in \ ["Python", "Python2", "Python3"]: self.project.debugProperties["INTERPRETER"] = sys.executable - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.pdata["PROGLANGUAGE"] == "Ruby": self.project.debugProperties["INTERPRETER"] = "/usr/bin/ruby" self.project.debugProperties["DEBUGCLIENT"] = \ self.debugClientPicker.text() if not self.project.debugProperties["DEBUGCLIENT"]: - if self.project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2"]: + if self.project.pdata["PROGLANGUAGE"] in ["Python", "Python2"]: debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Python", "DebugClient.py") - elif self.project.pdata["PROGLANGUAGE"][0] == "Python3": + elif self.project.pdata["PROGLANGUAGE"] == "Python3": debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Python3", "DebugClient.py") - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.pdata["PROGLANGUAGE"] == "Ruby": debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Ruby", "DebugClient.rb")
--- a/Project/Project.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/Project.py Thu Aug 18 17:02:21 2016 +0200 @@ -421,15 +421,14 @@ "VCS": "None", "VCSOPTIONS": {}, "VCSOTHERDATA": {}, - # TODO: change these to use lists only where neccessary - "AUTHOR": [''], - "EMAIL": [''], - "HASH": [''], - "PROGLANGUAGE": ["Python3"], - "MIXEDLANGUAGE": [False], - "PROJECTTYPE": ["PyQt5"], + "AUTHOR": '', + "EMAIL": '', + "HASH": '', + "PROGLANGUAGE": "Python3", + "MIXEDLANGUAGE": False, + "PROJECTTYPE": "PyQt5", "SPELLLANGUAGE": - [Preferences.getEditor("SpellCheckingDefaultLanguage")], + Preferences.getEditor("SpellCheckingDefaultLanguage"), "SPELLWORDS": '', "SPELLEXCLUDES": '', "FILETYPES": {}, @@ -510,32 +509,32 @@ values. """ self.pdata["FILETYPES"] = {} - if self.pdata["MIXEDLANGUAGE"][0]: + if self.pdata["MIXEDLANGUAGE"]: sourceKey = "Mixed" else: - sourceKey = self.pdata["PROGLANGUAGE"][0] + sourceKey = self.pdata["PROGLANGUAGE"] for ext in self.__sourceExtensions(sourceKey): self.pdata["FILETYPES"]["*{0}".format(ext)] = "SOURCES" self.pdata["FILETYPES"]["*.idl"] = "INTERFACES" - if self.pdata["PROJECTTYPE"][0] in ["Qt4", "PyQt5", - "E6Plugin", "PySide"]: + if self.pdata["PROJECTTYPE"] in ["Qt4", "PyQt5", + "E6Plugin", "PySide"]: self.pdata["FILETYPES"]["*.ui"] = "FORMS" - if self.pdata["PROJECTTYPE"][0] in ["Qt4", "Qt4C", - "E6Plugin", - "PyQt5", "PyQt5C", - "PySide", "PySideC"]: + if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", + "E6Plugin", + "PyQt5", "PyQt5C", + "PySide", "PySideC"]: self.pdata["FILETYPES"]["*.qrc"] = "RESOURCES" - if self.pdata["PROJECTTYPE"][0] in ["Qt4", "Qt4C", - "E6Plugin", - "PyQt5", "PyQt5C", - "PySide", "PySideC"]: + if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", + "E6Plugin", + "PyQt5", "PyQt5C", + "PySide", "PySideC"]: self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" try: if self.__fileTypeCallbacks[ - self.pdata["PROJECTTYPE"][0]] is not None: + self.pdata["PROJECTTYPE"]] is not None: ftypes = \ - self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"][0]]() + self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"]]() self.pdata["FILETYPES"].update(ftypes) except KeyError: pass @@ -546,19 +545,19 @@ Public method to update the filetype associations with new default values. """ - if self.pdata["PROJECTTYPE"][0] in ["Qt4", "Qt4C", - "E6Plugin", - "PyQt5", "PyQt5C", - "PySide", "PySideC"]: + if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", + "E6Plugin", + "PyQt5", "PyQt5C", + "PySide", "PySideC"]: if "*.ts" not in self.pdata["FILETYPES"]: self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" if "*.qm" not in self.pdata["FILETYPES"]: self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" try: if self.__fileTypeCallbacks[ - self.pdata["PROJECTTYPE"][0]] is not None: + self.pdata["PROJECTTYPE"]] is not None: ftypes = \ - self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"][0]]() + self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"]]() for pattern, ftype in list(ftypes.items()): if pattern not in self.pdata["FILETYPES"]: self.pdata["FILETYPES"][pattern] = ftype @@ -749,12 +748,12 @@ self.otherssubdirs.append(dn) # create hash value, if it doesn't have one - if reader.version.startswith("5.") and not self.pdata["HASH"][0]: + if reader.version.startswith("5.") and not self.pdata["HASH"]: hash = str(QCryptographicHash.hash( QByteArray(self.ppath.encode("utf-8")), QCryptographicHash.Sha1).toHex(), encoding="utf-8") - self.pdata["HASH"] = [hash] + self.pdata["HASH"] = hash self.setDirty(True) return res @@ -776,12 +775,12 @@ self.pdata["VCSOTHERDATA"] = \ copy.deepcopy(self.vcs.vcsGetOtherData()) - if not self.pdata["HASH"][0]: + if not self.pdata["HASH"]: hash = str(QCryptographicHash.hash( QByteArray(self.ppath.encode("utf-8")), QCryptographicHash.Sha1).toHex(), encoding="utf-8") - self.pdata["HASH"] = [hash] + self.pdata["HASH"] = hash if fn is None: fn = self.pfile @@ -1266,7 +1265,7 @@ dlg = AddLanguageDialog(self.parent()) if dlg.exec_() == QDialog.Accepted: lang = dlg.getSelectedLanguage() - if self.pdata["PROJECTTYPE"][0] in \ + if self.pdata["PROJECTTYPE"] in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", "PySide", "PySideC"]: langFile = self.pdata["TRANSLATIONPATTERN"]\ @@ -1285,9 +1284,9 @@ qmFile = "" try: if self.__binaryTranslationsCallbacks[ - self.pdata["PROJECTTYPE"][0]] is not None: + self.pdata["PROJECTTYPE"]] is not None: qmFile = self.__binaryTranslationsCallbacks[ - self.pdata["PROJECTTYPE"][0]](langFile) + self.pdata["PROJECTTYPE"]](langFile) except KeyError: qmFile = langFile.replace('.ts', '.qm') if qmFile == langFile: @@ -2132,7 +2131,7 @@ self.menuApidocAct.setEnabled(True) self.menuPackagersAct.setEnabled(True) self.pluginGrp.setEnabled( - self.pdata["PROJECTTYPE"][0] in ["E6Plugin"]) + self.pdata["PROJECTTYPE"] in ["E6Plugin"]) self.addLanguageAct.setEnabled( bool(self.pdata["TRANSLATIONPATTERN"])) @@ -2142,7 +2141,7 @@ QByteArray(self.ppath.encode("utf-8")), QCryptographicHash.Sha1).toHex(), encoding="utf-8") - self.pdata["HASH"] = [hash] + self.pdata["HASH"] = hash # create the project directory if it doesn't exist already if not os.path.isdir(self.ppath): @@ -2160,7 +2159,7 @@ return # create an empty __init__.py file to make it a Python package # (only for Python and Python3) - if self.pdata["PROGLANGUAGE"][0] in \ + if self.pdata["PROGLANGUAGE"] in \ ["Python", "Python2", "Python3"]: fn = os.path.join(self.ppath, "__init__.py") f = open(fn, "w", encoding="utf-8") @@ -2233,7 +2232,7 @@ self.newProjectAddFiles(ms) # create an empty __init__.py file to make it a Python package # if none exists (only for Python and Python3) - if self.pdata["PROGLANGUAGE"][0] in \ + if self.pdata["PROGLANGUAGE"] in \ ["Python", "Python2", "Python3"]: fn = os.path.join(self.ppath, "__init__.py") if not os.path.exists(fn): @@ -2452,10 +2451,10 @@ self.pdata["TRANSLATIONS"].append(qm) self.projectLanguageAdded.emit(qm) if not self.pdata["MAINSCRIPT"]: - if self.pdata["PROGLANGUAGE"][0] in \ + if self.pdata["PROGLANGUAGE"] in \ ["Python", "Python2", "Python3"]: self.pdata["MAINSCRIPT"] = '{0}.py'.format(mainscriptname) - elif self.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.pdata["PROGLANGUAGE"] == "Ruby": self.pdata["MAINSCRIPT"] = '{0}.rb'.format(mainscriptname) self.setDirty(True) QApplication.restoreOverrideCursor() @@ -2467,7 +2466,7 @@ from .PropertiesDialog import PropertiesDialog dlg = PropertiesDialog(self, False) if dlg.exec_() == QDialog.Accepted: - projectType = self.pdata["PROJECTTYPE"][0] + projectType = self.pdata["PROJECTTYPE"] dlg.storeData() self.setDirty(True) try: @@ -2477,7 +2476,7 @@ except IndexError: pass - if self.pdata["PROJECTTYPE"][0] != projectType: + if self.pdata["PROJECTTYPE"] != projectType: # reinitialize filetype associations self.initFileTypes() @@ -2501,12 +2500,12 @@ self.subdirs.append(tp) self.pluginGrp.setEnabled( - self.pdata["PROJECTTYPE"][0] in ["E6Plugin"]) + self.pdata["PROJECTTYPE"] in ["E6Plugin"]) self.__model.projectPropertiesChanged() self.projectPropertiesChanged.emit() - if self.pdata["PROJECTTYPE"][0] != projectType: + if self.pdata["PROJECTTYPE"] != projectType: self.__reorganizeFiles() def __showUserProperties(self): @@ -2589,7 +2588,7 @@ return language # try project type specific defaults next - projectType = self.pdata["PROJECTTYPE"][0] + projectType = self.pdata["PROJECTTYPE"] try: if self.__lexerAssociationCallbacks[projectType] is not None: return self.__lexerAssociationCallbacks[projectType](filename) @@ -2718,8 +2717,7 @@ self.menuApidocAct.setEnabled(True) self.menuPackagersAct.setEnabled(True) self.pluginGrp.setEnabled( - self.pdata["PROJECTTYPE"][0] in [ - "E6Plugin"]) + self.pdata["PROJECTTYPE"] in ["E6Plugin"]) self.addLanguageAct.setEnabled( bool(self.pdata["TRANSLATIONPATTERN"])) @@ -3065,7 +3063,7 @@ @return UI type of the project (string) """ - return self.pdata["PROJECTTYPE"][0] + return self.pdata["PROJECTTYPE"] def getProjectLanguage(self): """ @@ -3073,7 +3071,16 @@ @return programming language (string) """ - return self.pdata["PROGLANGUAGE"][0] + return self.pdata["PROGLANGUAGE"] + + def isMixedLanguageProject(self): + """ + Public method to check, if this is a mixed language project. + + @return flag indicating a mixed language project + @rtype bool + """ + return self.pdata("MIXEDLANGUAGE") def isPythonProject(self): """ @@ -3082,8 +3089,8 @@ @return flag indicating a Python project (boolean) """ - return self.pdata["PROGLANGUAGE"][0] in ["Python", "Python2", - "Python3"] + return self.pdata["PROGLANGUAGE"] in ["Python", "Python2", + "Python3"] def isPy3Project(self): """ @@ -3091,7 +3098,7 @@ @return flag indicating a Python3 project (boolean) """ - return self.pdata["PROGLANGUAGE"][0] == "Python3" + return self.pdata["PROGLANGUAGE"] == "Python3" def isPy2Project(self): """ @@ -3099,7 +3106,7 @@ @return flag indicating a Python2 project (boolean) """ - return self.pdata["PROGLANGUAGE"][0] in ["Python", "Python2"] + return self.pdata["PROGLANGUAGE"] in ["Python", "Python2"] def isRubyProject(self): """ @@ -3107,7 +3114,7 @@ @return flag indicating a Ruby project (boolean) """ - return self.pdata["PROGLANGUAGE"][0] == "Ruby" + return self.pdata["PROGLANGUAGE"] == "Ruby" def isJavaScriptProject(self): """ @@ -3115,7 +3122,7 @@ @return flag indicating a JavaScript project (boolean) """ - return self.pdata["PROGLANGUAGE"][0] == "JavaScript" + return self.pdata["PROGLANGUAGE"] == "JavaScript" def getProjectSpellLanguage(self): """ @@ -3123,7 +3130,7 @@ @return programming language (string) """ - return self.pdata["SPELLLANGUAGE"][0] + return self.pdata["SPELLLANGUAGE"] def getProjectDictionaries(self): """ @@ -3149,15 +3156,12 @@ @return default extension (including the dot) (string) """ - if self.pdata["PROGLANGUAGE"]: - lang = self.pdata["PROGLANGUAGE"][0] - if lang == "": - lang = "Python3" - elif lang == "Python": - lang = "Python2" - return self.__sourceExtensions(lang)[0] - else: - return "" + lang = self.pdata["PROGLANGUAGE"] + if lang == "": + lang = "Python3" + elif lang == "Python": + lang = "Python2" + return self.__sourceExtensions(lang)[0] def getProjectPath(self): """ @@ -3237,7 +3241,7 @@ @return project hash as a hex string (string) """ - return self.pdata["HASH"][0] + return self.pdata["HASH"] def getRelativePath(self, path): """
--- a/Project/ProjectBrowser.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/ProjectBrowser.py Thu Aug 18 17:02:21 2016 +0200 @@ -301,18 +301,18 @@ if not self.project.isOpen(): icon = UI.PixmapCache.getIcon("projectSources.png") else: - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: - if self.project.pdata["MIXEDLANGUAGE"][0]: + if self.project.isMixedLanguageProject(): icon = UI.PixmapCache.getIcon("projectSourcesPyMixed.png") else: icon = UI.PixmapCache.getIcon("projectSourcesPy.png") - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": - if self.project.pdata["MIXEDLANGUAGE"][0]: + elif self.project.getProjectLanguage() == "Ruby": + if self.project.isMixedLanguageProject(): icon = UI.PixmapCache.getIcon("projectSourcesRbMixed.png") else: icon = UI.PixmapCache.getIcon("projectSourcesRb.png") - elif self.project.pdata["PROGLANGUAGE"][0] == "JavaScript": + elif self.project.getProjectLanguage() == "JavaScript": icon = UI.PixmapCache.getIcon("projectSourcesJavaScript.png") else: icon = UI.PixmapCache.getIcon("projectSources.png")
--- a/Project/ProjectBrowserModel.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/ProjectBrowserModel.py Thu Aug 18 17:02:21 2016 +0200 @@ -433,7 +433,7 @@ bold = False if key == "SOURCES": - sourceLanguage = self.project.pdata["PROGLANGUAGE"][0] + sourceLanguage = self.project.getProjectLanguage() else: sourceLanguage = "" @@ -556,7 +556,7 @@ False, bold) else: if typeString == "SOURCES": - sourceLanguage = self.project.pdata["PROGLANGUAGE"][0] + sourceLanguage = self.project.getProjectLanguage() else: sourceLanguage = "" itm = ProjectBrowserFileItem(
--- a/Project/ProjectFormsBrowser.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/ProjectFormsBrowser.py Thu Aug 18 17:02:21 2016 +0200 @@ -747,7 +747,7 @@ args = [] self.buf = "" - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: if self.project.getProjectType() in ["Qt4", ]: self.uicompiler = 'pyuic4' @@ -775,7 +775,7 @@ uic = Utilities.generatePySideToolPath(self.uicompiler) else: return None - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.getProjectLanguage() == "Ruby": if self.project.getProjectType() == "Qt4": self.uicompiler = 'rbuic4' if Utilities.isWindowsPlatform(): @@ -790,7 +790,7 @@ ofn, ext = os.path.splitext(fn) fn = os.path.join(self.project.ppath, fn) - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: dirname, filename = os.path.split(ofn) self.compiledFile = os.path.join(dirname, "Ui_" + filename + ".py") @@ -800,7 +800,7 @@ args.append("--indent={0}".format(indentWidth)) if Preferences.getQt("PyuicFromImports"): args.append("--from-imports") - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.getProjectLanguage() == "Ruby": self.compiledFile = ofn + '.rb' args.append('-x') @@ -965,11 +965,11 @@ QApplication.processEvents() ifn = os.path.join(self.project.ppath, fn) - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: dirname, filename = os.path.split(os.path.splitext(ifn)[0]) ofn = os.path.join(dirname, "Ui_" + filename + ".py") - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.getProjectLanguage() == "Ruby": ofn = os.path.splitext(ifn)[0] + '.rb' if not os.path.exists(ofn) or \ os.stat(ifn).st_mtime > os.stat(ofn).st_mtime:
--- a/Project/ProjectResourcesBrowser.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/ProjectResourcesBrowser.py Thu Aug 18 17:02:21 2016 +0200 @@ -630,14 +630,14 @@ args = [] self.buf = "" - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: if self.project.getProjectType() in ["Qt4", "Qt4C"]: self.rccCompiler = 'pyrcc4' if Utilities.isWindowsPlatform(): self.rccCompiler += '.exe' if PYQT_VERSION >= 0x040500: - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2"]: args.append("-py2") else: @@ -649,7 +649,7 @@ elif self.project.getProjectType() in ["E6Plugin"]: if PYQT_VERSION < 0x050000: self.rccCompiler = 'pyrcc4' - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2"]: args.append("-py2") else: @@ -661,14 +661,14 @@ elif self.project.getProjectType() in ["PySide", "PySideC"]: self.rccCompiler = Utilities.generatePySideToolPath( 'pyside-rcc') - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2"]: args.append("-py2") else: args.append("-py3") else: return None - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.getProjectLanguage() == "Ruby": if self.project.getProjectType() == "Qt4": self.rccCompiler = 'rbrcc' if Utilities.isWindowsPlatform(): @@ -684,11 +684,11 @@ fn = os.path.join(self.project.ppath, fn) dirname, filename = os.path.split(ofn) - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: self.compiledFile = os.path.join( dirname, self.RCFilenameFormatPython.format(filename)) - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.getProjectLanguage() == "Ruby": self.compiledFile = os.path.join( dirname, self.RCFilenameFormatRuby.format(filename)) @@ -859,12 +859,12 @@ progress.setValue(i) QApplication.processEvents() ifn = os.path.join(self.project.ppath, fn) - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: dirname, filename = os.path.split(os.path.splitext(ifn)[0]) ofn = os.path.join( dirname, self.RCFilenameFormatPython.format(filename)) - elif self.project.pdata["PROGLANGUAGE"][0] == "Ruby": + elif self.project.getProjectLanguage() == "Ruby": dirname, filename = os.path.split(os.path.splitext(ifn)[0]) ofn = os.path.join( dirname, self.RCFilenameFormatRuby.format(filename))
--- a/Project/ProjectTranslationsBrowser.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/ProjectTranslationsBrowser.py Thu Aug 18 17:02:21 2016 +0200 @@ -1026,7 +1026,7 @@ # generate a minimal temporary projectfile suitable for pylupdate self.__tmpProjects = [] - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: ok = self.__writeTempProjectFile(langs, [".py"]) else: @@ -1208,7 +1208,7 @@ # generate a minimal temporary projectfile suitable for lrelease self.__tmpProjects = [] - if self.project.pdata["PROGLANGUAGE"][0] in \ + if self.project.getProjectLanguage() in \ ["Python", "Python2", "Python3"]: ok = self.__writeTempProjectFile(langs, [".py"]) else:
--- a/Project/PropertiesDialog.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/PropertiesDialog.py Thu Aug 18 17:02:21 2016 +0200 @@ -77,41 +77,22 @@ self.nameEdit.setText(os.path.basename(name)) self.languageComboBox.setCurrentIndex( self.languageComboBox.findText( - self.project.pdata["PROGLANGUAGE"][0])) + self.project.pdata["PROGLANGUAGE"])) self.mixedLanguageCheckBox.setChecked( - self.project.pdata["MIXEDLANGUAGE"][0]) + self.project.pdata["MIXEDLANGUAGE"]) curIndex = self.projectTypeComboBox.findData( - self.project.pdata["PROJECTTYPE"][0]) + self.project.pdata["PROJECTTYPE"]) if curIndex == -1: curIndex = self.projectTypeComboBox.findData("Qt4") self.projectTypeComboBox.setCurrentIndex(curIndex) self.dirPicker.setText(self.project.ppath) - try: - self.versionEdit.setText(self.project.pdata["VERSION"]) - except IndexError: - pass - try: - self.mainscriptPicker.setText( - self.project.pdata["MAINSCRIPT"]) - except IndexError: - pass - try: - self.authorEdit.setText(self.project.pdata["AUTHOR"][0]) - except IndexError: - pass - try: - self.emailEdit.setText(self.project.pdata["EMAIL"][0]) - except IndexError: - pass - try: - self.descriptionEdit.setPlainText( - self.project.pdata["DESCRIPTION"]) - except LookupError: - pass - try: - self.eolComboBox.setCurrentIndex(self.project.pdata["EOL"]) - except IndexError: - pass + self.versionEdit.setText(self.project.pdata["VERSION"]) + self.mainscriptPicker.setText(self.project.pdata["MAINSCRIPT"]) + self.authorEdit.setText(self.project.pdata["AUTHOR"]) + self.emailEdit.setText(self.project.pdata["EMAIL"]) + self.descriptionEdit.setPlainText( + self.project.pdata["DESCRIPTION"]) + self.eolComboBox.setCurrentIndex(self.project.pdata["EOL"]) self.vcsLabel.show() if self.project.vcs is not None: vcsSystemsDict = e5App().getObject("PluginManager")\ @@ -286,16 +267,16 @@ else: self.project.pdata["MAINSCRIPT"] = "" self.project.translationsRoot = "" - self.project.pdata["AUTHOR"] = [self.authorEdit.text()] - self.project.pdata["EMAIL"] = [self.emailEdit.text()] + self.project.pdata["AUTHOR"] = self.authorEdit.text() + self.project.pdata["EMAIL"] = self.emailEdit.text() self.project.pdata["DESCRIPTION"] = self.descriptionEdit.toPlainText() self.project.pdata["PROGLANGUAGE"] = \ - [self.languageComboBox.currentText()] + self.languageComboBox.currentText() self.project.pdata["MIXEDLANGUAGE"] = \ - [self.mixedLanguageCheckBox.isChecked()] + self.mixedLanguageCheckBox.isChecked() projectType = self.getProjectType() if projectType is not None: - self.project.pdata["PROJECTTYPE"] = [projectType] + self.project.pdata["PROJECTTYPE"] = projectType self.project.pdata["EOL"] = self.eolComboBox.currentIndex() self.project.vcsRequested = self.vcsCheckBox.isChecked()
--- a/Project/SpellingPropertiesDialog.py Wed Aug 17 17:52:52 2016 +0200 +++ b/Project/SpellingPropertiesDialog.py Thu Aug 18 17:02:21 2016 +0200 @@ -62,7 +62,7 @@ Public method to initialize the dialogs data. """ index = self.spellingComboBox.findText( - self.project.pdata["SPELLLANGUAGE"][0]) + self.project.pdata["SPELLLANGUAGE"]) if index == -1: index = 0 self.spellingComboBox.setCurrentIndex(index) @@ -77,10 +77,10 @@ """ if self.spellingComboBox.currentIndex() == 0: self.project.pdata["SPELLLANGUAGE"] = \ - [Preferences.getEditor("SpellCheckingDefaultLanguage")] + Preferences.getEditor("SpellCheckingDefaultLanguage") else: self.project.pdata["SPELLLANGUAGE"] = \ - [self.spellingComboBox.currentText()] + self.spellingComboBox.currentText() self.project.pdata["SPELLWORDS"] = \ self.project.getRelativePath(self.pwlPicker.text()) self.project.pdata["SPELLEXCLUDES"] = \
--- a/UI/UserInterface.py Wed Aug 17 17:52:52 2016 +0200 +++ b/UI/UserInterface.py Thu Aug 18 17:02:21 2016 +0200 @@ -5588,7 +5588,7 @@ from Debugger.DebugClientCapabilities import HasUnittest self.__setWindowCaption(project=self.project.name) cap = e5App().getObject("DebugServer")\ - .getClientCapabilities(self.project.pdata["PROGLANGUAGE"][0]) + .getClientCapabilities(self.project.getProjectLanguage()) self.utProjectAct.setEnabled(cap & HasUnittest) self.utProjectOpen = cap & HasUnittest