diff -r 175b36822cc9 -r 2c193da9b94f Project/Project.py --- 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): """