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,