Project/Project.py

changeset 5100
2c193da9b94f
parent 5099
175b36822cc9
child 5101
6f34ec319318
--- 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):
         """

eric ide

mercurial