Finished cleaning up some code related to the Project class and data structures.

Thu, 18 Aug 2016 17:02:21 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 18 Aug 2016 17:02:21 +0200
changeset 5100
2c193da9b94f
parent 5099
175b36822cc9
child 5101
6f34ec319318

Finished cleaning up some code related to the Project class and data structures.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
Debugger/DebugUI.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Project.Project.html file | annotate | diff | comparison | revisions
E5XML/ProjectReader.py file | annotate | diff | comparison | revisions
E5XML/ProjectWriter.py file | annotate | diff | comparison | revisions
E5XML/UserProjectWriter.py file | annotate | diff | comparison | revisions
Project/DebuggerPropertiesDialog.py file | annotate | diff | comparison | revisions
Project/Project.py file | annotate | diff | comparison | revisions
Project/ProjectBrowser.py file | annotate | diff | comparison | revisions
Project/ProjectBrowserModel.py file | annotate | diff | comparison | revisions
Project/ProjectFormsBrowser.py file | annotate | diff | comparison | revisions
Project/ProjectResourcesBrowser.py file | annotate | diff | comparison | revisions
Project/ProjectTranslationsBrowser.py file | annotate | diff | comparison | revisions
Project/PropertiesDialog.py file | annotate | diff | comparison | revisions
Project/SpellingPropertiesDialog.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
--- 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)
Binary file Documentation/Help/source.qch has changed
--- 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
         

eric ide

mercurial