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

Wed, 17 Aug 2016 17:52:52 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 17 Aug 2016 17:52:52 +0200
changeset 5099
175b36822cc9
parent 5098
bc74f74a95f5
child 5100
2c193da9b94f

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

E5XML/ProjectReader.py file | annotate | diff | comparison | revisions
E5XML/ProjectWriter.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsPySvn/subversion.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsSubversion/subversion.py file | annotate | diff | comparison | revisions
Project/Project.py file | annotate | diff | comparison | revisions
Project/ProjectTranslationsBrowser.py file | annotate | diff | comparison | revisions
Project/PropertiesDialog.py file | annotate | diff | comparison | revisions
Project/TranslationPropertiesDialog.py file | annotate | diff | comparison | revisions
Project/UserPropertiesDialog.py file | annotate | diff | comparison | revisions
VCS/ProjectHelper.py file | annotate | diff | comparison | revisions
--- a/E5XML/ProjectReader.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/E5XML/ProjectReader.py	Wed Aug 17 17:52:52 2016 +0200
@@ -70,23 +70,22 @@
                     self.project.pdata["PROJECTTYPE"] = [
                         self.readElementText()]
                 elif self.name() == "Description":
-                    self.project.pdata["DESCRIPTION"] = [
-                        self.readElementText()]
+                    self.project.pdata["DESCRIPTION"] = self.readElementText()
                 elif self.name() == "Version":
-                    self.project.pdata["VERSION"] = [self.readElementText()]
+                    self.project.pdata["VERSION"] = self.readElementText()
                 elif self.name() == "Author":
                     self.project.pdata["AUTHOR"] = [self.readElementText()]
                 elif self.name() == "Email":
                     self.project.pdata["EMAIL"] = [self.readElementText()]
                 elif self.name() == "TranslationPattern":
                     self.project.pdata["TRANSLATIONPATTERN"] = \
-                        [Utilities.toNativeSeparators(self.readElementText())]
+                        Utilities.toNativeSeparators(self.readElementText())
                 elif self.name() == "TranslationsBinPath":
                     self.project.pdata["TRANSLATIONSBINPATH"] = \
-                        [Utilities.toNativeSeparators(self.readElementText())]
+                        Utilities.toNativeSeparators(self.readElementText())
                 elif self.name() == "Eol":
-                    self.project.pdata["EOL"] = [
-                        int(self.attribute("index", "0"))]
+                    self.project.pdata["EOL"] = \
+                        int(self.attribute("index", "0"))
                 elif self.name() == "Sources":
                     self.__readFiles("Sources", "Source", "SOURCES")
                 elif self.name() == "Forms":
@@ -106,7 +105,7 @@
                     self.__readFiles("Others", "Other", "OTHERS")
                 elif self.name() == "MainScript":
                     self.project.pdata["MAINSCRIPT"] = \
-                        [Utilities.toNativeSeparators(self.readElementText())]
+                        Utilities.toNativeSeparators(self.readElementText())
                 elif self.name() == "Vcs":
                     self.__readVcs()
                 elif self.name() == "FiletypeAssociations":
@@ -185,11 +184,11 @@
             
             if self.isStartElement():
                 if self.name() == "VcsType":
-                    self.project.pdata["VCS"] = [self.readElementText()]
+                    self.project.pdata["VCS"] = self.readElementText()
                 elif self.name() == "VcsOptions":
-                    self.project.pdata["VCSOPTIONS"] = [self._readBasics()]
+                    self.project.pdata["VCSOPTIONS"] = self._readBasics()
                 elif self.name() == "VcsOtherData":
-                    self.project.pdata["VCSOTHERDATA"] = [self._readBasics()]
+                    self.project.pdata["VCSOTHERDATA"] = self._readBasics()
                 else:
                     self.raiseUnexpectedStartTag(self.name())
     
--- a/E5XML/ProjectWriter.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/E5XML/ProjectWriter.py	Wed Aug 17 17:52:52 2016 +0200
@@ -85,10 +85,10 @@
         
         # do description
         if self.pdata["DESCRIPTION"]:
-            self.writeTextElement("Description", self.pdata["DESCRIPTION"][0])
+            self.writeTextElement("Description", self.pdata["DESCRIPTION"])
         
         # do version, author and email
-        self.writeTextElement("Version", self.pdata["VERSION"][0])
+        self.writeTextElement("Version", self.pdata["VERSION"])
         self.writeTextElement("Author", self.pdata["AUTHOR"][0])
         self.writeTextElement("Email", self.pdata["EMAIL"][0])
             
@@ -97,19 +97,19 @@
             self.writeTextElement(
                 "TranslationPattern",
                 Utilities.fromNativeSeparators(
-                    self.pdata["TRANSLATIONPATTERN"][0]))
+                    self.pdata["TRANSLATIONPATTERN"]))
         
         # do the binary translations path
         if self.pdata["TRANSLATIONSBINPATH"]:
             self.writeTextElement(
                 "TranslationsBinPath",
                 Utilities.fromNativeSeparators(
-                    self.pdata["TRANSLATIONSBINPATH"][0]))
+                    self.pdata["TRANSLATIONSBINPATH"]))
         
         # do the eol setting
-        if self.pdata["EOL"] and self.pdata["EOL"][0]:
+        if self.pdata["EOL"] >= 0:
             self.writeEmptyElement("Eol")
-            self.writeAttribute("index", str(int(self.pdata["EOL"][0])))
+            self.writeAttribute("index", str(int(self.pdata["EOL"])))
         
         # do the sources
         self.writeStartElement("Sources")
@@ -165,16 +165,16 @@
         if self.pdata["MAINSCRIPT"]:
             self.writeTextElement(
                 "MainScript",
-                Utilities.fromNativeSeparators(self.pdata["MAINSCRIPT"][0]))
+                Utilities.fromNativeSeparators(self.pdata["MAINSCRIPT"]))
         
         # do the vcs stuff
         self.writeStartElement("Vcs")
         if self.pdata["VCS"]:
-            self.writeTextElement("VcsType", self.pdata["VCS"][0])
+            self.writeTextElement("VcsType", self.pdata["VCS"])
         if self.pdata["VCSOPTIONS"]:
-            self.writeBasics("VcsOptions", self.pdata["VCSOPTIONS"][0])
+            self.writeBasics("VcsOptions", self.pdata["VCSOPTIONS"])
         if self.pdata["VCSOTHERDATA"]:
-            self.writeBasics("VcsOtherData", self.pdata["VCSOTHERDATA"][0])
+            self.writeBasics("VcsOtherData", self.pdata["VCSOTHERDATA"])
         self.writeEndElement()
         
         # do the filetype associations
--- a/Plugins/VcsPlugins/vcsPySvn/subversion.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Plugins/VcsPlugins/vcsPySvn/subversion.py	Wed Aug 17 17:52:52 2016 +0200
@@ -238,7 +238,7 @@
                     cwdIsPpath = False
                 shutil.rmtree(project.ppath, True)
                 os.rename(tmpProjectDir, project.ppath)
-                project.pdata["VCS"] = ['None']
+                project.pdata["VCS"] = 'None'
                 project.vcs = None
                 project.setDirty(True)
                 project.saveProject()
--- a/Plugins/VcsPlugins/vcsSubversion/subversion.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Plugins/VcsPlugins/vcsSubversion/subversion.py	Wed Aug 17 17:52:52 2016 +0200
@@ -251,7 +251,7 @@
                     cwdIsPpath = False
                 shutil.rmtree(project.ppath, True)
                 os.rename(tmpProjectDir, project.ppath)
-                project.pdata["VCS"] = ['None']
+                project.pdata["VCS"] = 'None'
                 project.vcs = None
                 project.setDirty(True)
                 project.saveProject()
--- a/Project/Project.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Project/Project.py	Wed Aug 17 17:52:52 2016 +0200
@@ -406,22 +406,22 @@
         self.dbgAutoContinue = True
         
         self.pdata = {
-            # TODO: change these to use lists only where neccessary
-            "DESCRIPTION": [],
-            "VERSION": [],
+            "DESCRIPTION": "",
+            "VERSION": "",
             "SOURCES": [],
             "FORMS": [],
             "RESOURCES": [],
             "INTERFACES": [],
             "OTHERS": [],
             "TRANSLATIONS": [],
-            "TRANSLATIONPATTERN": [],
-            "TRANSLATIONSBINPATH": [],
             "TRANSLATIONEXCEPTIONS": [],
-            "MAINSCRIPT": [],
-            "VCS": [],
-            "VCSOPTIONS": [],
-            "VCSOTHERDATA": [],
+            "TRANSLATIONPATTERN": "",
+            "TRANSLATIONSBINPATH": "",
+            "MAINSCRIPT": "",
+            "VCS": "None",
+            "VCSOPTIONS": {},
+            "VCSOTHERDATA": {},
+            # TODO: change these to use lists only where neccessary
             "AUTHOR": [''],
             "EMAIL": [''],
             "HASH": [''],
@@ -439,7 +439,7 @@
             "PACKAGERSPARMS": {},
             "DOCUMENTATIONPARMS": {},
             "OTHERTOOLSPARMS": {},
-            "EOL": [-1],
+            "EOL": -1,
         }
         
         self.__initDebugProperties()
@@ -708,12 +708,12 @@
         self.__syncRecent()
         
         if res:
-            if len(self.pdata["TRANSLATIONPATTERN"]) == 1:
+            if self.pdata["TRANSLATIONPATTERN"]:
                 self.translationsRoot = \
-                    self.pdata["TRANSLATIONPATTERN"][0].split("%language%")[0]
-            elif len(self.pdata["MAINSCRIPT"]) == 1:
+                    self.pdata["TRANSLATIONPATTERN"].split("%language%")[0]
+            elif self.pdata["MAINSCRIPT"]:
                 self.translationsRoot = os.path.splitext(
-                    self.pdata["MAINSCRIPT"][0])[0]
+                    self.pdata["MAINSCRIPT"])[0]
             if os.path.isdir(os.path.join(self.ppath, self.translationsRoot)):
                 dn = self.translationsRoot
             else:
@@ -771,10 +771,10 @@
         @return flag indicating success
         """
         if self.vcs is not None:
-            self.pdata["VCSOPTIONS"] = [
-                copy.deepcopy(self.vcs.vcsGetOptions())]
-            self.pdata["VCSOTHERDATA"] = [
-                copy.deepcopy(self.vcs.vcsGetOtherData())]
+            self.pdata["VCSOPTIONS"] = \
+                copy.deepcopy(self.vcs.vcsGetOptions())
+            self.pdata["VCSOTHERDATA"] = \
+                copy.deepcopy(self.vcs.vcsGetOtherData())
         
         if not self.pdata["HASH"][0]:
             hash = str(QCryptographicHash.hash(
@@ -1239,10 +1239,7 @@
         
         @return translation pattern (string)
         """
-        if self.pdata["TRANSLATIONPATTERN"]:
-            return self.pdata["TRANSLATIONPATTERN"][0]
-        else:
-            return ""
+        return self.pdata["TRANSLATIONPATTERN"]
     
     def setTranslationPattern(self, pattern):
         """
@@ -1251,17 +1248,13 @@
         @param pattern translation pattern
         @type str
         """
-        if pattern:
-            self.pdata["TRANSLATIONPATTERN"] = [pattern]
-        else:
-            self.pdata["TRANSLATIONPATTERN"] = []
+        self.pdata["TRANSLATIONPATTERN"] = pattern
     
     def addLanguage(self):
         """
         Public slot used to add a language to the project.
         """
-        if len(self.pdata["TRANSLATIONPATTERN"]) == 0 or \
-           self.pdata["TRANSLATIONPATTERN"][0] == '':
+        if not self.pdata["TRANSLATIONPATTERN"]:
             E5MessageBox.critical(
                 self.ui,
                 self.tr("Add Language"),
@@ -1276,7 +1269,7 @@
             if self.pdata["PROJECTTYPE"][0] in \
                     ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin",
                      "PySide", "PySideC"]:
-                langFile = self.pdata["TRANSLATIONPATTERN"][0]\
+                langFile = self.pdata["TRANSLATIONPATTERN"]\
                     .replace("%language%", lang)
                 self.appendFile(langFile)
             self.projectLanguageAddedByCode.emit(lang)
@@ -1305,8 +1298,7 @@
         """
         Public slot to check the language files after a release process.
         """
-        tbPath = self.pdata["TRANSLATIONSBINPATH"] and \
-            self.pdata["TRANSLATIONSBINPATH"][0] or ""
+        tbPath = self.pdata["TRANSLATIONSBINPATH"]
         for langFile in self.pdata["TRANSLATIONS"][:]:
             qmFile = self.__binaryTranslationFile(langFile)
             if qmFile:
@@ -1335,7 +1327,7 @@
             try:
                 if self.pdata["TRANSLATIONSBINPATH"]:
                     qmFile = self.getRelativePath(
-                        os.path.join(self.pdata["TRANSLATIONSBINPATH"][0],
+                        os.path.join(self.pdata["TRANSLATIONSBINPATH"],
                                      os.path.basename(qmFile)))
                 self.pdata["TRANSLATIONS"].remove(qmFile)
                 self.__model.removeItem(qmFile)
@@ -1377,7 +1369,7 @@
             try:
                 if self.pdata["TRANSLATIONSBINPATH"]:
                     qmFile = self.getRelativePath(
-                        os.path.join(self.pdata["TRANSLATIONSBINPATH"][0],
+                        os.path.join(self.pdata["TRANSLATIONSBINPATH"],
                                      os.path.basename(qmFile)))
                 fn = os.path.join(self.ppath, qmFile)
                 if os.path.exists(fn):
@@ -1767,11 +1759,11 @@
         """
         if self.pdata["MAINSCRIPT"]:
             ofn = self.getRelativePath(oldfn)
-            if ofn != self.pdata["MAINSCRIPT"][0]:
+            if ofn != self.pdata["MAINSCRIPT"]:
                 return
             
             fn = self.getRelativePath(newfn)
-            self.pdata["MAINSCRIPT"] = [fn]
+            self.pdata["MAINSCRIPT"] = fn
             self.setDirty(True)
         
     def renameFile(self, oldfn, newfn=None):
@@ -2118,7 +2110,7 @@
         if dlg.exec_() == QDialog.Accepted:
             self.closeProject()
             dlg.storeData()
-            self.pdata["VCS"] = ['None']
+            self.pdata["VCS"] = 'None'
             self.opened = True
             if not self.pdata["FILETYPES"]:
                 self.initFileTypes()
@@ -2142,8 +2134,7 @@
             self.pluginGrp.setEnabled(
                 self.pdata["PROJECTTYPE"][0] in ["E6Plugin"])
             self.addLanguageAct.setEnabled(
-                len(self.pdata["TRANSLATIONPATTERN"]) > 0 and
-                self.pdata["TRANSLATIONPATTERN"][0] != '')
+                bool(self.pdata["TRANSLATIONPATTERN"]))
             
             self.projectAboutToBeCreated.emit()
             
@@ -2176,13 +2167,12 @@
                     f.close()
                     self.appendFile(fn, True)
                 # create an empty main script file, if a name was given
-                if len(self.pdata["MAINSCRIPT"]) and \
-                        self.pdata["MAINSCRIPT"][0]:
-                    if not os.path.isabs(self.pdata["MAINSCRIPT"][0]):
+                if self.pdata["MAINSCRIPT"]:
+                    if not os.path.isabs(self.pdata["MAINSCRIPT"]):
                         ms = os.path.join(
-                            self.ppath, self.pdata["MAINSCRIPT"][0])
+                            self.ppath, self.pdata["MAINSCRIPT"])
                     else:
-                        ms = self.pdata["MAINSCRIPT"][0]
+                        ms = self.pdata["MAINSCRIPT"]
                     f = open(ms, "w")
                     f.close()
                     self.appendFile(ms, True)
@@ -2193,7 +2183,7 @@
                     os.makedirs(tpd)
                 if self.pdata["TRANSLATIONSBINPATH"]:
                     tpd = os.path.join(
-                        self.ppath, self.pdata["TRANSLATIONSBINPATH"][0])
+                        self.ppath, self.pdata["TRANSLATIONSBINPATH"])
                     if not os.path.isdir(tpd):
                         os.makedirs(tpd)
                 
@@ -2216,7 +2206,7 @@
                     return
                 
                 try:
-                    ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"][0])
+                    ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"])
                     if not os.path.exists(ms):
                         try:
                             f = open(ms, "w")
@@ -2279,7 +2269,7 @@
                                 vcsSystem = "None"
                         else:
                             vcsSystem = vcsData[0][1]
-                        self.pdata["VCS"] = [vcsSystem]
+                        self.pdata["VCS"] = vcsSystem
                         self.vcs = self.initVCS()
                         self.setDirty(True)
                         if self.vcs is not None:
@@ -2312,7 +2302,7 @@
                                     self.saveProject()
                                     self.vcs.vcsAdd(self.pfile)
                         else:
-                            self.pdata["VCS"] = ['None']
+                            self.pdata["VCS"] = 'None'
                         self.saveProject()
                         break
             
@@ -2338,16 +2328,16 @@
                             break
                     else:
                         vcsSystem = "None"
-                    self.pdata["VCS"] = [vcsSystem]
+                    self.pdata["VCS"] = vcsSystem
                 else:
-                    self.pdata["VCS"] = ['None']
+                    self.pdata["VCS"] = 'None'
                 self.vcs = self.initVCS()
                 if self.vcs is not None:
                     vcsdlg = self.vcs.vcsOptionsDialog(self, self.name)
                     if vcsdlg.exec_() == QDialog.Accepted:
                         vcsDataDict = vcsdlg.getData()
                     else:
-                        self.pdata["VCS"] = ['None']
+                        self.pdata["VCS"] = 'None'
                         self.vcs = self.initVCS()
                 self.setDirty(True)
                 if self.vcs is not None:
@@ -2408,11 +2398,11 @@
             tpd = self.ppath
         tslist = []
         if self.pdata["TRANSLATIONPATTERN"]:
-            pattern = os.path.basename(self.pdata["TRANSLATIONPATTERN"][0])
+            pattern = os.path.basename(self.pdata["TRANSLATIONPATTERN"])
             if "%language%" in pattern:
                 pattern = pattern.replace("%language%", "*")
             else:
-                tpd = self.pdata["TRANSLATIONPATTERN"][0].split(
+                tpd = self.pdata["TRANSLATIONPATTERN"].split(
                     "%language%")[0]
         else:
             pattern = "*.ts"
@@ -2426,10 +2416,10 @@
                 mainscriptname = os.path.splitext(mainscript)[0] or \
                     os.path.basename(tslist[0]).split('_')[0]
                 self.pdata["TRANSLATIONPATTERN"] = \
-                    [os.path.join(os.path.dirname(tslist[0]),
+                    os.path.join(os.path.dirname(tslist[0]),
                      "{0}_%language%{1}".format(
                          os.path.basename(tslist[0]).split('_')[0],
-                         os.path.splitext(tslist[0])[1]))]
+                         os.path.splitext(tslist[0])[1]))
             else:
                 pattern, ok = QInputDialog.getText(
                     None,
@@ -2440,11 +2430,11 @@
                     QLineEdit.Normal,
                     tslist[0])
                 if pattern:
-                    self.pdata["TRANSLATIONPATTERN"] = [pattern]
+                    self.pdata["TRANSLATIONPATTERN"] = pattern
             if self.pdata["TRANSLATIONPATTERN"]:
-                self.pdata["TRANSLATIONPATTERN"][0] = \
-                    self.getRelativePath(self.pdata["TRANSLATIONPATTERN"][0])
-                pattern = self.pdata["TRANSLATIONPATTERN"][0]\
+                self.pdata["TRANSLATIONPATTERN"] = \
+                    self.getRelativePath(self.pdata["TRANSLATIONPATTERN"])
+                pattern = self.pdata["TRANSLATIONPATTERN"]\
                     .replace("%language%", "*")
                 for ts in tslist:
                     if fnmatch.fnmatch(ts, pattern):
@@ -2452,24 +2442,21 @@
                         self.projectLanguageAdded.emit(ts)
                 if self.pdata["TRANSLATIONSBINPATH"]:
                     tpd = os.path.join(self.ppath,
-                                       self.pdata["TRANSLATIONSBINPATH"][0])
+                                       self.pdata["TRANSLATIONSBINPATH"])
                     pattern = os.path.basename(
-                        self.pdata["TRANSLATIONPATTERN"][0])\
+                        self.pdata["TRANSLATIONPATTERN"])\
                         .replace("%language%", "*")
                     pattern = self.__binaryTranslationFile(pattern)
                     qmlist = Utilities.direntries(tpd, True, pattern)
                     for qm in qmlist:
                         self.pdata["TRANSLATIONS"].append(qm)
                         self.projectLanguageAdded.emit(qm)
-            if len(self.pdata["MAINSCRIPT"]) == 0 or \
-               len(self.pdata["MAINSCRIPT"][0]) == 0:
+            if not self.pdata["MAINSCRIPT"]:
                 if self.pdata["PROGLANGUAGE"][0] in \
                         ["Python", "Python2", "Python3"]:
-                    self.pdata["MAINSCRIPT"] = [
-                        '{0}.py'.format(mainscriptname)]
+                    self.pdata["MAINSCRIPT"] = '{0}.py'.format(mainscriptname)
                 elif self.pdata["PROGLANGUAGE"][0] == "Ruby":
-                    self.pdata["MAINSCRIPT"] = [
-                        '{0}.rb'.format(mainscriptname)]
+                    self.pdata["MAINSCRIPT"] = '{0}.rb'.format(mainscriptname)
         self.setDirty(True)
         QApplication.restoreOverrideCursor()
     
@@ -2484,7 +2471,7 @@
             dlg.storeData()
             self.setDirty(True)
             try:
-                ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"][0])
+                ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"])
                 if os.path.exists(ms):
                     self.appendFile(ms)
             except IndexError:
@@ -2507,7 +2494,7 @@
             
             if self.pdata["TRANSLATIONSBINPATH"]:
                 tp = os.path.join(
-                    self.ppath, self.pdata["TRANSLATIONSBINPATH"][0])
+                    self.ppath, self.pdata["TRANSLATIONSBINPATH"])
                 if not os.path.isdir(tp):
                     os.makedirs(tp)
                 if tp != self.ppath and tp not in self.subdirs:
@@ -2526,7 +2513,7 @@
         """
         Private slot to display the user specific properties dialog.
         """
-        vcsSystem = self.pdata["VCS"] and self.pdata["VCS"][0] or None
+        vcsSystem = self.pdata["VCS"] or None
         vcsSystemOverride = self.pudata["VCSOVERRIDE"] or None
         
         from .UserPropertiesDialog import UserPropertiesDialog
@@ -2535,7 +2522,7 @@
             dlg.storeData()
             
             if (self.pdata["VCS"] and
-                self.pdata["VCS"][0] != vcsSystem) or \
+                self.pdata["VCS"] != vcsSystem) or \
                (self.pudata["VCSOVERRIDE"] and
                 self.pudata["VCSOVERRIDE"] != vcsSystemOverride) or \
                (vcsSystemOverride is not None and
@@ -2706,13 +2693,13 @@
                                         vcsSystem = "None"
                                 else:
                                     vcsSystem = vcsData[0][0]
-                                self.pdata["VCS"] = [vcsSystem]
+                                self.pdata["VCS"] = vcsSystem
                                 self.vcs = self.initVCS()
                                 self.setDirty(True)
                     if self.vcs is not None and \
                         (self.vcs.vcsRegisteredState(self.ppath) !=
                             self.vcs.canBeCommitted):
-                        self.pdata["VCS"] = ['None']
+                        self.pdata["VCS"] = 'None'
                         self.vcs = self.initVCS()
                     self.closeAct.setEnabled(True)
                     self.saveasAct.setEnabled(True)
@@ -2734,8 +2721,7 @@
                         self.pdata["PROJECTTYPE"][0] in [
                             "E6Plugin"])
                     self.addLanguageAct.setEnabled(
-                        len(self.pdata["TRANSLATIONPATTERN"]) > 0 and
-                        self.pdata["TRANSLATIONPATTERN"][0] != '')
+                        bool(self.pdata["TRANSLATIONPATTERN"]))
                     
                     self.__model.projectOpened()
                     self.projectOpenedHooks.emit()
@@ -2752,10 +2738,10 @@
                     
                     if restoreSession:
                         # open the main script
-                        if len(self.pdata["MAINSCRIPT"]) == 1:
+                        if self.pdata["MAINSCRIPT"]:
                             self.sourceFile.emit(
                                 os.path.join(
-                                    self.ppath, self.pdata["MAINSCRIPT"][0]))
+                                    self.ppath, self.pdata["MAINSCRIPT"]))
                         
                         # open a project session file being quiet about errors
                         if reopen:
@@ -3051,11 +3037,11 @@
             (boolean)
         @return filename of the projects main script (string)
         """
-        if len(self.pdata["MAINSCRIPT"]):
+        if self.pdata["MAINSCRIPT"]:
             if normalized:
-                return os.path.join(self.ppath, self.pdata["MAINSCRIPT"][0])
+                return os.path.join(self.ppath, self.pdata["MAINSCRIPT"])
             else:
-                return self.pdata["MAINSCRIPT"][0]
+                return self.pdata["MAINSCRIPT"]
         else:
             return None
         
@@ -3314,8 +3300,8 @@
         
         @return eol string (string)
         """
-        if self.pdata["EOL"][0] >= 0:
-            return self.eols[self.pdata["EOL"][0]]
+        if self.pdata["EOL"] >= 0:
+            return self.eols[self.pdata["EOL"]]
         else:
             eolMode = Preferences.getEditor("EOLMode")
             if eolMode == QsciScintilla.EolWindows:
@@ -3334,7 +3320,7 @@
         
         @return flag indicating the usage of system eol (boolean)
         """
-        return self.pdata["EOL"][0] == 0
+        return self.pdata["EOL"] == 0
         
     def isProjectFile(self, fn):
         """
@@ -4145,7 +4131,7 @@
             except OSError:
                 newSources = []
             if self.pdata["TRANSLATIONPATTERN"]:
-                pattern = self.pdata["TRANSLATIONPATTERN"][0]\
+                pattern = self.pdata["TRANSLATIONPATTERN"]\
                     .replace("%language%", "*")
             else:
                 pattern = "*.ts"
@@ -4320,13 +4306,12 @@
         override = False
         
         if vcsSystem is None:
-            if len(self.pdata["VCS"]):
-                if self.pdata["VCS"][0] != 'None':
-                    vcsSystem = self.pdata["VCS"][0]
+            if self.pdata["VCS"] and self.pdata["VCS"] != 'None':
+                vcsSystem = self.pdata["VCS"]
         else:
             forProject = False
         
-        if self.pdata["VCS"] and self.pdata["VCS"][0] != 'None':
+        if self.pdata["VCS"] and self.pdata["VCS"] != 'None':
             if self.pudata["VCSOVERRIDE"] and \
                not nooverride:
                 vcsSystem = self.pudata["VCSOVERRIDE"]
@@ -4368,7 +4353,7 @@
                         "<p>{1}</p>").format(vcsSystem, msg))
                 vcs = None
                 if forProject:
-                    self.pdata["VCS"][0] = 'None'
+                    self.pdata["VCS"] = 'None'
                     self.setDirty(True)
             else:
                 vcs.vcsInitConfig(self)
@@ -4377,13 +4362,13 @@
             # set the vcs options
             if vcs.vcsSupportCommandOptions():
                 try:
-                    vcsopt = copy.deepcopy(self.pdata["VCSOPTIONS"][0])
+                    vcsopt = copy.deepcopy(self.pdata["VCSOPTIONS"])
                     vcs.vcsSetOptions(vcsopt)
                 except LookupError:
                     pass
             # set vcs specific data
             try:
-                vcsother = copy.deepcopy(self.pdata["VCSOTHERDATA"][0])
+                vcsother = copy.deepcopy(self.pdata["VCSOTHERDATA"])
                 vcs.vcsSetOtherData(vcsother)
             except LookupError:
                 pass
@@ -4789,8 +4774,7 @@
                         """Aborting...</p>"""))
             return
         
-        if len(self.pdata["MAINSCRIPT"]) == 0 or \
-           len(self.pdata["MAINSCRIPT"][0]) == 0:
+        if not self.pdata["MAINSCRIPT"]:
             E5MessageBox.critical(
                 self.ui,
                 self.tr("Create Plugin Archive"),
@@ -4814,7 +4798,7 @@
             return
         
         archive = os.path.join(
-            self.ppath, self.pdata["MAINSCRIPT"][0].replace(".py", ".zip"))
+            self.ppath, self.pdata["MAINSCRIPT"].replace(".py", ".zip"))
         try:
             archiveFile = zipfile.ZipFile(archive, "w")
         except IOError as why:
@@ -4832,17 +4816,17 @@
                 try:
                     self.__createZipDirEntries(
                         os.path.split(name)[0], archiveFile)
-                    if snapshot and name == self.pdata["MAINSCRIPT"][0]:
+                    if snapshot and name == self.pdata["MAINSCRIPT"]:
                         snapshotSource, version = self.__createSnapshotSource(
                             os.path.join(self.ppath,
-                                         self.pdata["MAINSCRIPT"][0]))
+                                         self.pdata["MAINSCRIPT"]))
                         archiveFile.writestr(name, snapshotSource)
                     else:
                         archiveFile.write(os.path.join(self.ppath, name), name)
-                        if name == self.pdata["MAINSCRIPT"][0]:
+                        if name == self.pdata["MAINSCRIPT"]:
                             version = self.__pluginExtractVersion(
                                 os.path.join(self.ppath,
-                                             self.pdata["MAINSCRIPT"][0]))
+                                             self.pdata["MAINSCRIPT"]))
                 except OSError as why:
                     E5MessageBox.critical(
                         self.ui,
--- a/Project/ProjectTranslationsBrowser.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Project/ProjectTranslationsBrowser.py	Wed Aug 17 17:52:52 2016 +0200
@@ -775,7 +775,7 @@
                      for lang in langs if lang.fileName().endswith('.ts')]
         else:
             try:
-                pattern = self.project.pdata["TRANSLATIONPATTERN"][0]\
+                pattern = self.project.pdata["TRANSLATIONPATTERN"]\
                     .replace("%language%", "*")
                 langs = [lang for lang in self.project.pdata["TRANSLATIONS"]
                          if fnmatch.fnmatch(lang, pattern)]
@@ -1149,11 +1149,10 @@
                     self.tr("Translation file release"),
                     self.tr("The release of the translation files (*.qm)"
                             " was successful."))
-            if self.project.pdata["TRANSLATIONSBINPATH"] and \
-                    self.project.pdata["TRANSLATIONSBINPATH"][0]:
+            if self.project.pdata["TRANSLATIONSBINPATH"]:
                 target = os.path.join(
                     self.project.ppath,
-                    self.project.pdata["TRANSLATIONSBINPATH"][0])
+                    self.project.pdata["TRANSLATIONSBINPATH"])
                 for langFile in self.project.pdata["TRANSLATIONS"][:]:
                     if langFile.endswith('.ts'):
                         qmFile = os.path.join(self.project.ppath,
--- a/Project/PropertiesDialog.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Project/PropertiesDialog.py	Wed Aug 17 17:52:52 2016 +0200
@@ -87,12 +87,12 @@
             self.projectTypeComboBox.setCurrentIndex(curIndex)
             self.dirPicker.setText(self.project.ppath)
             try:
-                self.versionEdit.setText(self.project.pdata["VERSION"][0])
+                self.versionEdit.setText(self.project.pdata["VERSION"])
             except IndexError:
                 pass
             try:
                 self.mainscriptPicker.setText(
-                    self.project.pdata["MAINSCRIPT"][0])
+                    self.project.pdata["MAINSCRIPT"])
             except IndexError:
                 pass
             try:
@@ -105,11 +105,11 @@
                 pass
             try:
                 self.descriptionEdit.setPlainText(
-                    self.project.pdata["DESCRIPTION"][0])
+                    self.project.pdata["DESCRIPTION"])
             except LookupError:
                 pass
             try:
-                self.eolComboBox.setCurrentIndex(self.project.pdata["EOL"][0])
+                self.eolComboBox.setCurrentIndex(self.project.pdata["EOL"])
             except IndexError:
                 pass
             self.vcsLabel.show()
@@ -118,7 +118,7 @@
                     .getPluginDisplayStrings("version_control")
                 try:
                     vcsSystemDisplay = \
-                        vcsSystemsDict[self.project.pdata["VCS"][0]]
+                        vcsSystemsDict[self.project.pdata["VCS"]]
                 except KeyError:
                     vcsSystemDisplay = "None"
                 self.vcsLabel.setText(
@@ -277,19 +277,18 @@
             self.project.pfile = os.path.join(self.project.ppath, fn)
         else:
             self.project.pfile = ""
-        self.project.pdata["VERSION"] = [self.versionEdit.text()]
+        self.project.pdata["VERSION"] = self.versionEdit.text()
         fn = self.mainscriptPicker.text()
         if fn:
             fn = self.project.getRelativePath(fn)
-            self.project.pdata["MAINSCRIPT"] = [fn]
+            self.project.pdata["MAINSCRIPT"] = fn
             self.project.translationsRoot = os.path.splitext(fn)[0]
         else:
-            self.project.pdata["MAINSCRIPT"] = []
+            self.project.pdata["MAINSCRIPT"] = ""
             self.project.translationsRoot = ""
         self.project.pdata["AUTHOR"] = [self.authorEdit.text()]
         self.project.pdata["EMAIL"] = [self.emailEdit.text()]
-        self.project.pdata["DESCRIPTION"] = \
-            [self.descriptionEdit.toPlainText()]
+        self.project.pdata["DESCRIPTION"] = self.descriptionEdit.toPlainText()
         self.project.pdata["PROGLANGUAGE"] = \
             [self.languageComboBox.currentText()]
         self.project.pdata["MIXEDLANGUAGE"] = \
@@ -297,7 +296,7 @@
         projectType = self.getProjectType()
         if projectType is not None:
             self.project.pdata["PROJECTTYPE"] = [projectType]
-        self.project.pdata["EOL"] = [self.eolComboBox.currentIndex()]
+        self.project.pdata["EOL"] = self.eolComboBox.currentIndex()
         
         self.project.vcsRequested = self.vcsCheckBox.isChecked()
         
--- a/Project/TranslationPropertiesDialog.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Project/TranslationPropertiesDialog.py	Wed Aug 17 17:52:52 2016 +0200
@@ -74,16 +74,10 @@
         Public method to initialize the dialogs data.
         """
         self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
-        try:
-            self.transPatternPicker.setText(
-                self.project.pdata["TRANSLATIONPATTERN"][0])
-        except IndexError:
-            pass
-        try:
-            self.transBinPathPicker.setText(
-                self.project.pdata["TRANSLATIONSBINPATH"][0])
-        except IndexError:
-            pass
+        self.transPatternPicker.setText(
+            self.project.pdata["TRANSLATIONPATTERN"])
+        self.transBinPathPicker.setText(
+            self.project.pdata["TRANSLATIONSBINPATH"])
         self.exceptionsList.clear()
         for texcept in self.project.pdata["TRANSLATIONEXCEPTIONS"]:
             if texcept:
@@ -201,16 +195,16 @@
         tp = self.transPatternPicker.text()
         if tp:
             tp = self.project.getRelativePath(tp)
-            self.project.pdata["TRANSLATIONPATTERN"] = [tp]
+            self.project.pdata["TRANSLATIONPATTERN"] = tp
             self.project.translationsRoot = tp.split("%language%")[0]
         else:
-            self.project.pdata["TRANSLATIONPATTERN"] = []
+            self.project.pdata["TRANSLATIONPATTERN"] = ""
         tp = self.transBinPathPicker.text()
         if tp:
             tp = self.project.getRelativePath(tp)
-            self.project.pdata["TRANSLATIONSBINPATH"] = [tp]
+            self.project.pdata["TRANSLATIONSBINPATH"] = tp
         else:
-            self.project.pdata["TRANSLATIONSBINPATH"] = []
+            self.project.pdata["TRANSLATIONSBINPATH"] = ""
         exceptList = []
         for i in range(self.exceptionsList.count()):
             exceptList.append(self.exceptionsList.item(i).text())
--- a/Project/UserPropertiesDialog.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/Project/UserPropertiesDialog.py	Wed Aug 17 17:52:52 2016 +0200
@@ -51,7 +51,7 @@
                     e5App().getObject("PluginManager")\
                     .getVcsSystemIndicators().items():
                 for vcsSystem, vcsSystemDisplay in vcsData:
-                    if vcsSystem == self.project.pdata["VCS"][0]:
+                    if vcsSystem == self.project.pdata["VCS"]:
                         found = True
                         break
                 
@@ -67,7 +67,7 @@
             if self.project.pudata["VCSOVERRIDE"]:
                 vcsSystem = self.project.pudata["VCSOVERRIDE"]
             else:
-                vcsSystem = self.project.pdata["VCS"][0]
+                vcsSystem = self.project.pdata["VCS"]
             index = self.vcsInterfaceCombo.findData(vcsSystem)
             if index == -1:
                 index = 0
@@ -92,12 +92,12 @@
             vcsSystem = self.vcsInterfaceCombo\
                 .itemData(self.vcsInterfaceCombo.currentIndex())
             if self.vcsInterfaceDefaultCheckBox.isChecked():
-                if vcsSystem != self.project.pdata["VCS"][0]:
-                    self.project.pdata["VCS"] = [vcsSystem]
+                if vcsSystem != self.project.pdata["VCS"]:
+                    self.project.pdata["VCS"] = vcsSystem
                     self.project.pudata["VCSOVERRIDE"] = ""
                     self.project.setDirty(True)
             else:
-                if vcsSystem != self.project.pdata["VCS"][0]:
+                if vcsSystem != self.project.pdata["VCS"]:
                     self.project.pudata["VCSOVERRIDE"] = vcsSystem
                 else:
                     self.project.pudata["VCSOVERRIDE"] = ""
--- a/VCS/ProjectHelper.py	Wed Aug 17 12:32:58 2016 +0200
+++ b/VCS/ProjectHelper.py	Wed Aug 17 17:52:52 2016 +0200
@@ -203,13 +203,13 @@
         if not self.project.closeProject():
             return
         
-        self.project.pdata["VCS"] = [vcsSystem]
+        self.project.pdata["VCS"] = vcsSystem
         self.project.vcs = self.project.initVCS(vcsSystem)
         if self.project.vcs is not None:
             vcsdlg = self.project.vcs.vcsNewProjectOptionsDialog()
             if vcsdlg.exec_() == QDialog.Accepted:
                 projectdir, vcsDataDict = vcsdlg.getData()
-                self.project.pdata["VCS"] = [vcsSystem]
+                self.project.pdata["VCS"] = vcsSystem
                 self.project.vcs = self.project.initVCS(vcsSystem)
                 # edit VCS command options
                 if self.project.vcs.vcsSupportCommandOptions():
@@ -238,7 +238,7 @@
                             self.tr(
                                 "<p>The project directory <b>{0}</b> could not"
                                 " be created.</p>").format(projectdir))
-                        self.project.pdata["VCS"] = ['None']
+                        self.project.pdata["VCS"] = 'None'
                         self.project.vcs = self.project.initVCS()
                         return
                 
@@ -271,7 +271,7 @@
                                     QFileInfo(d, pfilename).absoluteFilePath())
                                 self.project.newProject.emit()
                         if export:
-                            self.project.pdata["VCS"] = ['None']
+                            self.project.pdata["VCS"] = 'None'
                             self.project.vcs = self.project.initVCS()
                             self.project.setDirty(True)
                             self.project.saveProject()
@@ -298,7 +298,7 @@
                                 try:
                                     ms = os.path.join(
                                         self.project.ppath,
-                                        self.project.pdata["MAINSCRIPT"][0])
+                                        self.project.pdata["MAINSCRIPT"])
                                     if os.path.exists(ms):
                                         self.project.appendFile(ms)
                                 except IndexError:
@@ -326,10 +326,10 @@
                         self.tr(
                             """The project could not be retrieved from"""
                             """ the repository."""))
-                    self.project.pdata["VCS"] = ['None']
+                    self.project.pdata["VCS"] = 'None'
                     self.project.vcs = self.project.initVCS()
             else:
-                self.project.pdata["VCS"] = ['None']
+                self.project.pdata["VCS"] = 'None'
                 self.project.vcs = self.project.initVCS()
 
     def _vcsExport(self):
@@ -351,7 +351,7 @@
             """
             Local function to revert the changes made to the project object.
             """
-            self.project.pdata["VCS"] = pdata_vcs[:]
+            self.project.pdata["VCS"] = pdata_vcs
             self.project.pdata["VCSOPTIONS"] = copy.deepcopy(pdata_vcsoptions)
             self.project.pdata["VCSOTHERDATA"] = copy.deepcopy(pdata_vcsother)
             self.project.vcs = vcs
@@ -361,7 +361,7 @@
             self.project.setDirty(True)
             self.project.saveProject()
         
-        pdata_vcs = self.project.pdata["VCS"][:]
+        pdata_vcs = self.project.pdata["VCS"]
         pdata_vcsoptions = copy.deepcopy(self.project.pdata["VCSOPTIONS"])
         pdata_vcsother = copy.deepcopy(self.project.pdata["VCSOTHERDATA"])
         vcs = self.project.vcs
@@ -388,7 +388,7 @@
             if vcsSystemDisplay == vcsSelected:
                 break
         
-        self.project.pdata["VCS"] = [vcsSystem]
+        self.project.pdata["VCS"] = vcsSystem
         self.project.vcs = self.project.initVCS(vcsSystem)
         if self.project.vcs is not None:
             vcsdlg = self.project.vcs.vcsOptionsDialog(self.project,

eric ide

mercurial