Project/Project.py

changeset 5099
175b36822cc9
parent 5098
bc74f74a95f5
child 5100
2c193da9b94f
diff -r bc74f74a95f5 -r 175b36822cc9 Project/Project.py
--- 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,

eric ide

mercurial