diff -r 6e260b424396 -r 2b104ad132a4 src/eric7/Project/Project.py --- a/src/eric7/Project/Project.py Wed Nov 16 10:10:06 2022 +0100 +++ b/src/eric7/Project/Project.py Wed Nov 16 10:53:40 2022 +0100 @@ -483,7 +483,7 @@ "redirect": True, } - self.pdata = { + self.__pdata = { "DESCRIPTION": "", "VERSION": "", "SOURCES": [], @@ -547,6 +547,15 @@ "LICENSE": "", "EMBEDDED_VENV": False, } + self.__knownFileCategories = [ + "FORMS", + "OTHERS", + "RESOURCES", + "SOURCES", + "TRANSLATIONS", + "INTERFACES", + "PROTOCOLS", + ] self.__initDebugProperties() @@ -559,6 +568,48 @@ self.__initVenvConfiguration() + def getProjectData(self, dataKey=None, default=None): + """ + Public method to get the data associated with the given data key. + + Note: If dataKey is None, a copy of the project data structure + is returned. + + @param dataKey key of the data to get (defaults to None) + @type str (optional) + @param default default value for non-existent keys (defaults to None) + @type Any (optional) + @return requested data or None if the data key doesn't exist or + a copy of the project data dictionary + @rtype Any + """ + if dataKey is None: + return copy.deepcopy(self.__pdata) + + try: + return self.__pdata[dataKey] + except KeyError: + return default + + def setProjectData(self, data, dataKey=None): + """ + Public method to set data associated with the given data key in the project + dictionary + + Note: If no data key is given or is None, the data must be a dictionary used + to update the project data. + + @param data data to be set or a dictionary to update the project data + @type Any + @param dataKey key of the data to set (defaults to None) + @type str (optional) + """ + if dataKey is None: + self.__pdata.update(data) + else: + self.__pdata[dataKey] = data + self.setDirty(True) + def getData(self, category, key): """ Public method to get data out of the project data store. @@ -579,9 +630,9 @@ "DOCUMENTATIONPARMS", "OTHERTOOLSPARMS", ] - and key in self.pdata[category] + and key in self.__pdata[category] ): - return copy.deepcopy(self.pdata[category][key]) + return copy.deepcopy(self.__pdata[category][key]) else: return None @@ -608,29 +659,38 @@ # test for changes of data and save them in the project # 1. there were none, now there are - if key not in self.pdata[category] and len(data) > 0: - self.pdata[category][key] = copy.deepcopy(data) + if key not in self.__pdata[category] and len(data) > 0: + self.__pdata[category][key] = copy.deepcopy(data) self.setDirty(True) # 2. there were some, now there aren't - elif key in self.pdata[category] and len(data) == 0: - del self.pdata[category][key] + elif key in self.__pdata[category] and len(data) == 0: + del self.__pdata[category][key] self.setDirty(True) # 3. there were some and still are - elif key in self.pdata[category] and len(data) > 0: - if data != self.pdata[category][key]: - self.pdata[category][key] = copy.deepcopy(data) + elif key in self.__pdata[category] and len(data) > 0: + if data != self.__pdata[category][key]: + self.__pdata[category][key] = copy.deepcopy(data) self.setDirty(True) # 4. there were none and none are given else: return False return True + def getFileCategories(self): + """ + Public method to get the list of known file categories. + + @return list of known file categories + @rtype list of str + """ + return self.__knownFileCategories[:] + def initFileTypes(self): """ Public method to initialize the filetype associations with default values. """ - self.pdata["FILETYPES"] = { + self.__pdata["FILETYPES"] = { "*.txt": "OTHERS", "*.md": "OTHERS", "*.rst": "OTHERS", @@ -645,29 +705,29 @@ # Sources sourceKey = ( - "Mixed" if self.pdata["MIXEDLANGUAGE"] else self.pdata["PROGLANGUAGE"] + "Mixed" if self.__pdata["MIXEDLANGUAGE"] else self.__pdata["PROGLANGUAGE"] ) for ext in self.__sourceExtensions(sourceKey): - self.pdata["FILETYPES"]["*{0}".format(ext)] = "SOURCES" + self.__pdata["FILETYPES"]["*{0}".format(ext)] = "SOURCES" # IDL interfaces - self.pdata["FILETYPES"]["*.idl"] = "INTERFACES" + self.__pdata["FILETYPES"]["*.idl"] = "INTERFACES" # Protobuf Files - self.pdata["FILETYPES"]["*.proto"] = "PROTOCOLS" + self.__pdata["FILETYPES"]["*.proto"] = "PROTOCOLS" # Forms - if self.pdata["PROJECTTYPE"] in [ + if self.__pdata["PROJECTTYPE"] in [ "E7Plugin", "PyQt5", "PyQt6", "PySide2", "PySide6", ]: - self.pdata["FILETYPES"]["*.ui"] = "FORMS" + self.__pdata["FILETYPES"]["*.ui"] = "FORMS" # Resources - if self.pdata["PROJECTTYPE"] in [ + if self.__pdata["PROJECTTYPE"] in [ "PyQt5", "PyQt5C", "PySide2", @@ -675,10 +735,10 @@ "PySide6", "PySide6C", ]: - self.pdata["FILETYPES"]["*.qrc"] = "RESOURCES" + self.__pdata["FILETYPES"]["*.qrc"] = "RESOURCES" # Translations - if self.pdata["PROJECTTYPE"] in [ + if self.__pdata["PROJECTTYPE"] in [ "E7Plugin", "PyQt5", "PyQt5C", @@ -689,14 +749,14 @@ "PySide6", "PySide6C", ]: - self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" - self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" + self.__pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" + self.__pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" # Project type specific ones with contextlib.suppress(KeyError): - if self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"]] is not None: - ftypes = self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"]]() - self.pdata["FILETYPES"].update(ftypes) + if self.__fileTypeCallbacks[self.__pdata["PROJECTTYPE"]] is not None: + ftypes = self.__fileTypeCallbacks[self.__pdata["PROJECTTYPE"]]() + self.__pdata["FILETYPES"].update(ftypes) self.setDirty(True) @@ -705,7 +765,7 @@ Public method to update the filetype associations with new default values. """ - if self.pdata["PROJECTTYPE"] in [ + if self.__pdata["PROJECTTYPE"] in [ "E7Plugin", "PyQt5", "PyQt5C", @@ -716,16 +776,16 @@ "PySide6", "PySide6C", ]: - if "*.ts" not in self.pdata["FILETYPES"]: - self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" - if "*.qm" not in self.pdata["FILETYPES"]: - self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" + if "*.ts" not in self.__pdata["FILETYPES"]: + self.__pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" + if "*.qm" not in self.__pdata["FILETYPES"]: + self.__pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" with contextlib.suppress(KeyError): - if self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"]] is not None: - ftypes = self.__fileTypeCallbacks[self.pdata["PROJECTTYPE"]]() + if self.__fileTypeCallbacks[self.__pdata["PROJECTTYPE"]] is not None: + ftypes = self.__fileTypeCallbacks[self.__pdata["PROJECTTYPE"]]() for pattern, ftype in list(ftypes.items()): - if pattern not in self.pdata["FILETYPES"]: - self.pdata["FILETYPES"][pattern] = ftype + if pattern not in self.__pdata["FILETYPES"]: + self.__pdata["FILETYPES"][pattern] = ftype self.setDirty(True) def __loadRecent(self): @@ -844,14 +904,14 @@ """ removed = False removelist = [] - for file in self.pdata[index]: + for file in self.__pdata[index]: if not os.path.exists(os.path.join(self.ppath, file)): removelist.append(file) removed = True if removed: for file in removelist: - self.pdata[index].remove(file) + self.__pdata[index].remove(file) self.setDirty(True) def __readProject(self, fn): @@ -875,7 +935,7 @@ f.close() # create hash value, if it doesn't have one - if reader.version.startswith("5.") and not self.pdata["HASH"]: + if reader.version.startswith("5.") and not self.__pdata["HASH"]: hashStr = str( QCryptographicHash.hash( QByteArray(self.ppath.encode("utf-8")), @@ -883,7 +943,7 @@ ).toHex(), encoding="utf-8", ) - self.pdata["HASH"] = hashStr + self.__pdata["HASH"] = hashStr self.setDirty(True) else: EricMessageBox.critical( @@ -902,12 +962,12 @@ # insert filename into list of recently opened projects self.__syncRecent() - if self.pdata["TRANSLATIONPATTERN"]: - self.translationsRoot = self.pdata["TRANSLATIONPATTERN"].split( + if self.__pdata["TRANSLATIONPATTERN"]: + self.translationsRoot = self.__pdata["TRANSLATIONPATTERN"].split( "%language%" )[0] - elif self.pdata["MAINSCRIPT"]: - self.translationsRoot = os.path.splitext(self.pdata["MAINSCRIPT"])[0] + elif self.__pdata["MAINSCRIPT"]: + self.translationsRoot = os.path.splitext(self.__pdata["MAINSCRIPT"])[0] if os.path.isdir(os.path.join(self.ppath, self.translationsRoot)): dn = self.translationsRoot else: @@ -919,29 +979,34 @@ # check, if the files of the project still exist in the # project directory - self.__checkFilesExist("SOURCES") - self.__checkFilesExist("FORMS") - self.__checkFilesExist("INTERFACES") - self.__checkFilesExist("PROTOCOLS") - self.__checkFilesExist("TRANSLATIONS") - self.__checkFilesExist("RESOURCES") - self.__checkFilesExist("OTHERS") + for fileCategory in self.__knownFileCategories: + self.__checkFilesExist(fileCategory) + ##self.__checkFilesExist("SOURCES") + ##self.__checkFilesExist("FORMS") + ##self.__checkFilesExist("INTERFACES") + ##self.__checkFilesExist("PROTOCOLS") + ##self.__checkFilesExist("TRANSLATIONS") + ##self.__checkFilesExist("RESOURCES") + ##self.__checkFilesExist("OTHERS") # get the names of subdirectories the files are stored in - for fn in ( - self.pdata["SOURCES"] - + self.pdata["FORMS"] - + self.pdata["INTERFACES"] - + self.pdata["PROTOCOLS"] - + self.pdata["RESOURCES"] - + self.pdata["TRANSLATIONS"] - ): - dn = os.path.dirname(fn) - if dn not in self.subdirs: - self.subdirs.append(dn) + for fileCategory in [ + c for c in self.__knownFileCategories if c != "OTHERS" + ]: + for fn in self.__pdata[fileCategory]: + ##self.__pdata["SOURCES"] + ##+ self.__pdata["FORMS"] + ##+ self.__pdata["INTERFACES"] + ##+ self.__pdata["PROTOCOLS"] + ##+ self.__pdata["RESOURCES"] + ##+ self.__pdata["TRANSLATIONS"] + ##): + dn = os.path.dirname(fn) + if dn not in self.subdirs: + self.subdirs.append(dn) # get the names of other subdirectories - for fn in self.pdata["OTHERS"]: + for fn in self.__pdata["OTHERS"]: dn = os.path.dirname(fn) if dn not in self.otherssubdirs: self.otherssubdirs.append(dn) @@ -960,10 +1025,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()) - - if not self.pdata["HASH"]: + self.__pdata["VCSOPTIONS"] = copy.deepcopy(self.vcs.vcsGetOptions()) + self.__pdata["VCSOTHERDATA"] = copy.deepcopy(self.vcs.vcsGetOtherData()) + + if not self.__pdata["HASH"]: hashStr = str( QCryptographicHash.hash( QByteArray(self.ppath.encode("utf-8")), @@ -971,7 +1036,7 @@ ).toHex(), encoding="utf-8", ) - self.pdata["HASH"] = hashStr + self.__pdata["HASH"] = hashStr if fn is None: fn = self.pfile @@ -1353,7 +1418,7 @@ @return load status of debug properties (boolean) """ - return self.debugPropertiesLoaded or self.pdata["EMBEDDED_VENV"] + return self.debugPropertiesLoaded or self.__pdata["EMBEDDED_VENV"] def __showDebugProperties(self): """ @@ -1458,7 +1523,7 @@ @return translation pattern (string) """ - return self.pdata["TRANSLATIONPATTERN"] + return self.__pdata["TRANSLATIONPATTERN"] def setTranslationPattern(self, pattern): """ @@ -1467,7 +1532,7 @@ @param pattern translation pattern @type str """ - self.pdata["TRANSLATIONPATTERN"] = pattern + self.__pdata["TRANSLATIONPATTERN"] = pattern def addLanguage(self): """ @@ -1475,7 +1540,7 @@ """ from .AddLanguageDialog import AddLanguageDialog - if not self.pdata["TRANSLATIONPATTERN"]: + if not self.__pdata["TRANSLATIONPATTERN"]: EricMessageBox.critical( self.ui, self.tr("Add Language"), @@ -1486,7 +1551,7 @@ dlg = AddLanguageDialog(self.parent()) if dlg.exec() == QDialog.DialogCode.Accepted: lang = dlg.getSelectedLanguage() - if self.pdata["PROJECTTYPE"] in [ + if self.__pdata["PROJECTTYPE"] in [ "PyQt5", "PyQt5C", "PyQt6", @@ -1497,7 +1562,9 @@ "PySide6", "PySide6C", ]: - langFile = self.pdata["TRANSLATIONPATTERN"].replace("%language%", lang) + langFile = self.__pdata["TRANSLATIONPATTERN"].replace( + "%language%", lang + ) self.appendFile(langFile) self.projectLanguageAddedByCode.emit(lang) @@ -1512,12 +1579,12 @@ qmFile = "" try: if ( - self.__binaryTranslationsCallbacks[self.pdata["PROJECTTYPE"]] + self.__binaryTranslationsCallbacks[self.__pdata["PROJECTTYPE"]] is not None ): - qmFile = self.__binaryTranslationsCallbacks[self.pdata["PROJECTTYPE"]]( - langFile - ) + qmFile = self.__binaryTranslationsCallbacks[ + self.__pdata["PROJECTTYPE"] + ](langFile) except KeyError: qmFile = langFile.replace(".ts", ".qm") if qmFile == langFile: @@ -1528,17 +1595,17 @@ """ Public slot to check the language files after a release process. """ - tbPath = self.pdata["TRANSLATIONSBINPATH"] - for langFile in self.pdata["TRANSLATIONS"][:]: + tbPath = self.__pdata["TRANSLATIONSBINPATH"] + for langFile in self.__pdata["TRANSLATIONS"][:]: qmFile = self.__binaryTranslationFile(langFile) if qmFile: - if qmFile not in self.pdata["TRANSLATIONS"] and os.path.exists( + if qmFile not in self.__pdata["TRANSLATIONS"] and os.path.exists( os.path.join(self.ppath, qmFile) ): self.appendFile(qmFile) if tbPath: qmFile = os.path.join(tbPath, os.path.basename(qmFile)) - if qmFile not in self.pdata["TRANSLATIONS"] and os.path.exists( + if qmFile not in self.__pdata["TRANSLATIONS"] and os.path.exists( os.path.join(self.ppath, qmFile) ): self.appendFile(qmFile) @@ -1553,17 +1620,18 @@ """ langFile = self.getRelativePath(langFile) qmFile = self.__binaryTranslationFile(langFile) - self.pdata["TRANSLATIONS"].remove(langFile) + self.__pdata["TRANSLATIONS"].remove(langFile) self.__model.removeItem(langFile) if qmFile: with contextlib.suppress(ValueError): - if self.pdata["TRANSLATIONSBINPATH"]: + if self.__pdata["TRANSLATIONSBINPATH"]: qmFile = self.getRelativePath( os.path.join( - self.pdata["TRANSLATIONSBINPATH"], os.path.basename(qmFile) + self.__pdata["TRANSLATIONSBINPATH"], + os.path.basename(qmFile), ) ) - self.pdata["TRANSLATIONS"].remove(qmFile) + self.__pdata["TRANSLATIONS"].remove(qmFile) self.__model.removeItem(qmFile) self.setDirty(True) @@ -1601,10 +1669,11 @@ # now get rid of the .qm file if qmFile: try: - if self.pdata["TRANSLATIONSBINPATH"]: + if self.__pdata["TRANSLATIONSBINPATH"]: qmFile = self.getRelativePath( os.path.join( - self.pdata["TRANSLATIONSBINPATH"], os.path.basename(qmFile) + self.__pdata["TRANSLATIONSBINPATH"], + os.path.basename(qmFile), ) ) fn = os.path.join(self.ppath, qmFile) @@ -1646,50 +1715,51 @@ if fnmatch.fnmatch(bfn, "*.ts") or fnmatch.fnmatch(bfn, "*.qm"): filetype = "TRANSLATIONS" else: - for pattern in sorted(self.pdata["FILETYPES"].keys(), reverse=True): + for pattern in sorted(self.__pdata["FILETYPES"].keys(), reverse=True): if fnmatch.fnmatch(bfn, pattern): - filetype = self.pdata["FILETYPES"][pattern] + filetype = self.__pdata["FILETYPES"][pattern] break if filetype == "__IGNORE__": return + # TODO: change this logic to be more generic (use fileCategory) if filetype in ["SOURCES", "FORMS", "INTERFACES", "PROTOCOLS", "RESOURCES"]: if filetype == "SOURCES": - if newfn not in self.pdata["SOURCES"]: - self.pdata["SOURCES"].append(newfn) + if newfn not in self.__pdata["SOURCES"]: + self.__pdata["SOURCES"].append(newfn) self.projectSourceAdded.emit(newfn) updateModel and self.__model.addNewItem("SOURCES", newfn) dirty = True else: updateModel and self.repopulateItem(newfn) elif filetype == "FORMS": - if newfn not in self.pdata["FORMS"]: - self.pdata["FORMS"].append(newfn) + if newfn not in self.__pdata["FORMS"]: + self.__pdata["FORMS"].append(newfn) self.projectFormAdded.emit(newfn) updateModel and self.__model.addNewItem("FORMS", newfn) dirty = True else: updateModel and self.repopulateItem(newfn) elif filetype == "INTERFACES": - if newfn not in self.pdata["INTERFACES"]: - self.pdata["INTERFACES"].append(newfn) + if newfn not in self.__pdata["INTERFACES"]: + self.__pdata["INTERFACES"].append(newfn) self.projectInterfaceAdded.emit(newfn) (updateModel and self.__model.addNewItem("INTERFACES", newfn)) dirty = True else: updateModel and self.repopulateItem(newfn) elif filetype == "PROTOCOLS": - if newfn not in self.pdata["PROTOCOLS"]: - self.pdata["PROTOCOLS"].append(newfn) + if newfn not in self.__pdata["PROTOCOLS"]: + self.__pdata["PROTOCOLS"].append(newfn) self.projectProtocolAdded.emit(newfn) (updateModel and self.__model.addNewItem("PROTOCOLS", newfn)) dirty = True else: updateModel and self.repopulateItem(newfn) elif filetype == "RESOURCES": - if newfn not in self.pdata["RESOURCES"]: - self.pdata["RESOURCES"].append(newfn) + if newfn not in self.__pdata["RESOURCES"]: + self.__pdata["RESOURCES"].append(newfn) self.projectResourceAdded.emit(newfn) updateModel and self.__model.addNewItem("RESOURCES", newfn) dirty = True @@ -1698,16 +1768,16 @@ if newdir not in self.subdirs: self.subdirs.append(newdir) elif filetype == "TRANSLATIONS": - if newfn not in self.pdata["TRANSLATIONS"]: - self.pdata["TRANSLATIONS"].append(newfn) + if newfn not in self.__pdata["TRANSLATIONS"]: + self.__pdata["TRANSLATIONS"].append(newfn) updateModel and self.__model.addNewItem("TRANSLATIONS", newfn) self.projectLanguageAdded.emit(newfn) dirty = True else: updateModel and self.repopulateItem(newfn) else: # filetype == "OTHERS" - if newfn not in self.pdata["OTHERS"]: - self.pdata["OTHERS"].append(newfn) + if newfn not in self.__pdata["OTHERS"]: + self.__pdata["OTHERS"].append(newfn) self.othersAdded(newfn, updateModel) dirty = True else: @@ -1791,7 +1861,7 @@ # get all relevant filename patterns patterns = [] ignorePatterns = [] - for pattern, patterntype in list(self.pdata["FILETYPES"].items()): + for pattern, patterntype in list(self.__pdata["FILETYPES"].items()): if patterntype == filetype: patterns.append(pattern) elif patterntype == "__IGNORE__": @@ -1871,7 +1941,7 @@ ignore_patterns = [ pattern - for pattern, filetype in self.pdata["FILETYPES"].items() + for pattern, filetype in self.__pdata["FILETYPES"].items() if filetype == "__IGNORE__" ] @@ -1947,8 +2017,8 @@ if fn.endswith(os.sep): fn = fn[:-1] - if fn not in self.pdata["OTHERS"]: - self.pdata["OTHERS"].append(fn) + if fn not in self.__pdata["OTHERS"]: + self.__pdata["OTHERS"].append(fn) self.othersAdded(fn) self.setDirty(True) @@ -2038,13 +2108,13 @@ @param oldfn old filename (string) @param newfn new filename of the main script (string) """ - if self.pdata["MAINSCRIPT"]: + if self.__pdata["MAINSCRIPT"]: ofn = self.getRelativePath(oldfn) - if ofn != self.pdata["MAINSCRIPT"]: + 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): @@ -2056,7 +2126,7 @@ @return flag indicating success """ fn = self.getRelativePath(oldfn) - isSourceFile = fn in self.pdata["SOURCES"] + isSourceFile = fn in self.__pdata["SOURCES"] if newfn is None: newfn = EricFileDialog.getSaveFileName( @@ -2096,22 +2166,23 @@ ) return False - if ( - fn in self.pdata["SOURCES"] - or fn in self.pdata["FORMS"] - or fn in self.pdata["TRANSLATIONS"] - or fn in self.pdata["INTERFACES"] - or fn in self.pdata["PROTOCOLS"] - or fn in self.pdata["RESOURCES"] - or fn in self.pdata["OTHERS"] - ): + ##if ( + ##fn in self.__pdata["SOURCES"] + ##or fn in self.__pdata["FORMS"] + ##or fn in self.__pdata["TRANSLATIONS"] + ##or fn in self.__pdata["INTERFACES"] + ##or fn in self.__pdata["PROTOCOLS"] + ##or fn in self.__pdata["RESOURCES"] + ##or fn in self.__pdata["OTHERS"] + ##): + if any(fn in self.__pdata[category] for category in self.__knownFileCategories): self.renameFileInPdata(oldfn, newfn, isSourceFile) return True def renameFileInPdata(self, oldname, newname, isSourceFile=False): """ - Public method to rename a file in the pdata structure. + Public method to rename a file in the __pdata structure. @param oldname old filename (string) @param newname new filename (string) @@ -2140,15 +2211,18 @@ """ filelist = [] start = self.getRelativePath(start) - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "OTHERS", + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"OTHERS", + ##]: + for fileCategory in [ + c for c in self.__knownFileCategories if c != "TRANSLATIONS" ]: - for entry in self.pdata[key][:]: + for entry in self.__pdata[fileCategory][:]: if entry.startswith(start): filelist.append(os.path.join(self.ppath, entry)) return filelist @@ -2161,52 +2235,55 @@ # init data store for the reorganization newPdata = {} - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "OTHERS", - "TRANSLATIONS", - ]: - newPdata[key] = [] + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"OTHERS", + ##"TRANSLATIONS", + ##]: + for fileCategory in self.__knownFileCategories: + newPdata[fileCategory] = [] # iterate over all files checking for a reassignment - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "OTHERS", - "TRANSLATIONS", - ]: - for fn in self.pdata[key][:]: - filetype = key + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"OTHERS", + ##"TRANSLATIONS", + ##]: + for fileCategory in self.__knownFileCategories: + for fn in self.__pdata[fileCategory][:]: + filetype = fileCategory bfn = os.path.basename(fn) - for pattern in sorted(self.pdata["FILETYPES"].keys(), reverse=True): + for pattern in sorted(self.__pdata["FILETYPES"].keys(), reverse=True): if fnmatch.fnmatch(bfn, pattern): - filetype = self.pdata["FILETYPES"][pattern] + filetype = self.__pdata["FILETYPES"][pattern] break if filetype != "__IGNORE__": newPdata[filetype].append(fn) - if filetype != key: + if filetype != fileCategory: reorganized = True if reorganized: # copy the reorganized files back to the project - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "OTHERS", - "TRANSLATIONS", - ]: - self.pdata[key] = newPdata[key][:] + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"OTHERS", + ##"TRANSLATIONS", + ##]: + for fileCategory in self.__knownFileCategories: + self.__pdata[fileCategory] = newPdata[fileCategory][:] # repopulate the model self.__model.projectClosed(False) @@ -2221,18 +2298,23 @@ """ olddn = self.getRelativePath(olddn) newdn = self.getRelativePath(newdn) - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "OTHERS", + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"OTHERS", + ##]: + for fileCategory in [ + c for c in self.__knownFileCategories if c != "TRANSLATIONS" ]: - for entry in self.pdata[key][:]: + for entry in self.__pdata[fileCategory][:]: if entry.startswith(olddn): entry = entry.replace(olddn, newdn) - self.appendFile(os.path.join(self.ppath, entry), key == "SOURCES") + self.appendFile( + os.path.join(self.ppath, entry), fileCategory == "SOURCES" + ) self.setDirty(True) def moveDirectory(self, olddn, newdn): @@ -2245,22 +2327,25 @@ olddn = self.getRelativePath(olddn) newdn = self.getRelativePath(newdn) typeStrings = [] - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "OTHERS", + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"OTHERS", + ##]: + for fileCategory in [ + c for c in self.__knownFileCategories if c != "TRANSLATIONS" ]: - for entry in self.pdata[key][:]: + for entry in self.__pdata[fileCategory][:]: if entry.startswith(olddn): - if key not in typeStrings: - typeStrings.append(key) - self.pdata[key].remove(entry) + if fileCategory not in typeStrings: + typeStrings.append(fileCategory) + self.__pdata[fileCategory].remove(entry) entry = entry.replace(olddn, newdn) - self.pdata[key].append(entry) - if key == "OTHERS": + self.__pdata[fileCategory].append(entry) + if fileCategory == "OTHERS": if newdn not in self.otherssubdirs: self.otherssubdirs.append(newdn) else: @@ -2289,26 +2374,27 @@ """ fn = self.getRelativePath(fn) dirty = True - if fn in self.pdata["SOURCES"]: - self.pdata["SOURCES"].remove(fn) + # TODO: change this logic to be more generic (use fileCategory) + if fn in self.__pdata["SOURCES"]: + self.__pdata["SOURCES"].remove(fn) self.projectSourceRemoved.emit(fn) - elif fn in self.pdata["FORMS"]: - self.pdata["FORMS"].remove(fn) + elif fn in self.__pdata["FORMS"]: + self.__pdata["FORMS"].remove(fn) self.projectFormRemoved.emit(fn) - elif fn in self.pdata["INTERFACES"]: - self.pdata["INTERFACES"].remove(fn) + elif fn in self.__pdata["INTERFACES"]: + self.__pdata["INTERFACES"].remove(fn) self.projectInterfaceRemoved.emit(fn) - elif fn in self.pdata["PROTOCOLS"]: - self.pdata["PROTOCOLS"].remove(fn) + elif fn in self.__pdata["PROTOCOLS"]: + self.__pdata["PROTOCOLS"].remove(fn) self.projectProtocolRemoved.emit(fn) - elif fn in self.pdata["RESOURCES"]: - self.pdata["RESOURCES"].remove(fn) + elif fn in self.__pdata["RESOURCES"]: + self.__pdata["RESOURCES"].remove(fn) self.projectResourceRemoved.emit(fn) - elif fn in self.pdata["OTHERS"]: - self.pdata["OTHERS"].remove(fn) + elif fn in self.__pdata["OTHERS"]: + self.__pdata["OTHERS"].remove(fn) self.projectOthersRemoved.emit(fn) - elif fn in self.pdata["TRANSLATIONS"]: - self.pdata["TRANSLATIONS"].remove(fn) + elif fn in self.__pdata["TRANSLATIONS"]: + self.__pdata["TRANSLATIONS"].remove(fn) self.projectLanguageRemoved.emit(fn) else: dirty = False @@ -2326,22 +2412,23 @@ """ dirty = False dn = self.getRelativePath(dn) - for entry in self.pdata["OTHERS"][:]: + for entry in self.__pdata["OTHERS"][:]: if entry.startswith(dn): - self.pdata["OTHERS"].remove(entry) + self.__pdata["OTHERS"].remove(entry) dirty = True dn2 = dn if dn.endswith(os.sep) else dn + os.sep - for key in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "TRANSLATIONS", - ]: - for entry in self.pdata[key][:]: + ##for key in [ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"TRANSLATIONS", + ##]: + for fileCategory in [c for c in self.__knownFileCategories if c != "OTHERS"]: + for entry in self.__pdata[fileCategory][:]: if entry.startswith(dn2): - self.pdata[key].remove(entry) + self.__pdata[fileCategory].remove(entry) dirty = True self.__model.removeItem(dn) if dirty: @@ -2431,14 +2518,18 @@ @return flag indicating, if the project contains the file (boolean) """ fn = self.getRelativePath(fn) - return ( - fn in self.pdata["SOURCES"] - or fn in self.pdata["FORMS"] - or fn in self.pdata["INTERFACES"] - or fn in self.pdata["PROTOCOLS"] - or fn in self.pdata["RESOURCES"] - or fn in self.pdata["OTHERS"] - ) + return any( + fn in self.__pdata[category] + for category in self.__knownFileCategories + if category != "TRANSLATIONS" + ) + ##fn in self.__pdata["SOURCES"] + ##or fn in self.__pdata["FORMS"] + ##or fn in self.__pdata["INTERFACES"] + ##or fn in self.__pdata["PROTOCOLS"] + ##or fn in self.__pdata["RESOURCES"] + ##or fn in self.__pdata["OTHERS"] + ##) def createNewProject(self): """ @@ -2458,9 +2549,9 @@ if dlg.exec() == QDialog.DialogCode.Accepted: self.closeProject() dlg.storeData() - self.pdata["VCS"] = "None" + self.__pdata["VCS"] = "None" self.opened = True - if not self.pdata["FILETYPES"]: + if not self.__pdata["FILETYPES"]: self.initFileTypes() self.setDirty(True) self.closeAct.setEnabled(True) @@ -2479,10 +2570,10 @@ self.menuDiagramAct.setEnabled(True) self.menuApidocAct.setEnabled(True) self.menuPackagersAct.setEnabled(True) - self.pluginGrp.setEnabled(self.pdata["PROJECTTYPE"] in ["E7Plugin"]) - self.addLanguageAct.setEnabled(bool(self.pdata["TRANSLATIONPATTERN"])) - self.makeGrp.setEnabled(self.pdata["MAKEPARAMS"]["MakeEnabled"]) - self.menuMakeAct.setEnabled(self.pdata["MAKEPARAMS"]["MakeEnabled"]) + self.pluginGrp.setEnabled(self.__pdata["PROJECTTYPE"] in ["E7Plugin"]) + self.addLanguageAct.setEnabled(bool(self.__pdata["TRANSLATIONPATTERN"])) + self.makeGrp.setEnabled(self.__pdata["MAKEPARAMS"]["MakeEnabled"]) + self.menuMakeAct.setEnabled(self.__pdata["MAKEPARAMS"]["MakeEnabled"]) self.menuOtherToolsAct.setEnabled(True) self.menuFormattingAct.setEnabled(True) @@ -2495,11 +2586,11 @@ ).toHex(), encoding="utf-8", ) - self.pdata["HASH"] = hashStr - - if self.pdata["PROGLANGUAGE"] == "MicroPython": + self.__pdata["HASH"] = hashStr + + if self.__pdata["PROGLANGUAGE"] == "MicroPython": # change the lexer association for *.py files - self.pdata["LEXERASSOCS"] = { + self.__pdata["LEXERASSOCS"] = { "*.py": "MicroPython", } @@ -2521,25 +2612,25 @@ # create an empty __init__.py file to make it a Python package # (only for Python and Python3) - if self.pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"]: + if self.__pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"]: fn = os.path.join(self.ppath, "__init__.py") with open(fn, "w", encoding="utf-8"): pass self.appendFile(fn, True) # create an empty main script file, if a name was given - if self.pdata["MAINSCRIPT"]: - if not os.path.isabs(self.pdata["MAINSCRIPT"]): - ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + if self.__pdata["MAINSCRIPT"]: + if not os.path.isabs(self.__pdata["MAINSCRIPT"]): + ms = os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) else: - ms = self.pdata["MAINSCRIPT"] + ms = self.__pdata["MAINSCRIPT"] os.makedirs(os.path.dirname(ms), exist_ok=True) with open(ms, "w"): pass self.appendFile(ms, True) - if self.pdata["MAKEPARAMS"]["MakeEnabled"]: - mf = self.pdata["MAKEPARAMS"]["MakeFile"] + if self.__pdata["MAKEPARAMS"]["MakeEnabled"]: + mf = self.__pdata["MAKEPARAMS"]["MakeFile"] if mf: if not os.path.isabs(mf): mf = os.path.join(self.ppath, mf) @@ -2555,8 +2646,8 @@ tpd = os.path.dirname(tpd) if not os.path.isdir(tpd): os.makedirs(tpd, exist_ok=True) - if self.pdata["TRANSLATIONSBINPATH"]: - tpd = os.path.join(self.ppath, self.pdata["TRANSLATIONSBINPATH"]) + if self.__pdata["TRANSLATIONSBINPATH"]: + tpd = os.path.join(self.ppath, self.__pdata["TRANSLATIONSBINPATH"]) if not os.path.isdir(tpd): os.makedirs(tpd, exist_ok=True) @@ -2580,11 +2671,11 @@ ) return - if self.pdata["MAINSCRIPT"]: - if not os.path.isabs(self.pdata["MAINSCRIPT"]): - ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + if self.__pdata["MAINSCRIPT"]: + if not os.path.isabs(self.__pdata["MAINSCRIPT"]): + ms = os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) else: - ms = self.pdata["MAINSCRIPT"] + ms = self.__pdata["MAINSCRIPT"] if not os.path.exists(ms): try: os.makedirs(os.path.dirname(ms)) @@ -2603,8 +2694,8 @@ else: ms = "" - if self.pdata["MAKEPARAMS"]["MakeEnabled"]: - mf = self.pdata["MAKEPARAMS"]["MakeFile"] + if self.__pdata["MAKEPARAMS"]["MakeEnabled"]: + mf = self.__pdata["MAKEPARAMS"]["MakeFile"] if mf: if not os.path.isabs(mf): mf = os.path.join(self.ppath, mf) @@ -2638,7 +2729,7 @@ addAllToVcs = res # create an empty __init__.py file to make it a Python package # if none exists (only for Python and Python3) - if self.pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"]: + if self.__pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"]: fn = os.path.join(self.ppath, "__init__.py") if not os.path.exists(fn): with open(fn, "w", encoding="utf-8"): @@ -2676,7 +2767,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: @@ -2711,7 +2802,7 @@ self.saveProject() self.vcs.vcsAdd(self.pfile) else: - self.pdata["VCS"] = "None" + self.__pdata["VCS"] = "None" self.saveProject() break @@ -2737,19 +2828,19 @@ if ok and vcsSelected != self.tr("None"): for vcsSystem, vcsSystemDisplay in vcsSystemsDict.items(): if vcsSystemDisplay == vcsSelected: - self.pdata["VCS"] = vcsSystem + self.__pdata["VCS"] = vcsSystem break else: - self.pdata["VCS"] = "None" + self.__pdata["VCS"] = "None" 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.DialogCode.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: @@ -2782,9 +2873,9 @@ self.newProjectHooks.emit() self.newProject.emit() - if self.pdata["EMBEDDED_VENV"]: + if self.__pdata["EMBEDDED_VENV"]: self.__createEmbeddedEnvironment() - self.menuEnvironmentAct.setEnabled(self.pdata["EMBEDDED_VENV"]) + self.menuEnvironmentAct.setEnabled(self.__pdata["EMBEDDED_VENV"]) def newProjectAddFiles(self, mainscript): """ @@ -2797,7 +2888,7 @@ with EricOverrideCursor(): # search the project directory for files with known extensions - filespecs = list(self.pdata["FILETYPES"].keys()) + filespecs = list(self.__pdata["FILETYPES"].keys()) for filespec in filespecs: files = Utilities.direntries(self.ppath, True, filespec) for file in files: @@ -2811,12 +2902,12 @@ else: tpd = self.ppath tslist = [] - if self.pdata["TRANSLATIONPATTERN"]: - pattern = os.path.basename(self.pdata["TRANSLATIONPATTERN"]) + if self.__pdata["TRANSLATIONPATTERN"]: + pattern = os.path.basename(self.__pdata["TRANSLATIONPATTERN"]) if "%language%" in pattern: pattern = pattern.replace("%language%", "*") else: - tpd = self.pdata["TRANSLATIONPATTERN"].split("%language%")[0] + tpd = self.__pdata["TRANSLATIONPATTERN"].split("%language%")[0] else: pattern = "*.ts" tslist.extend(Utilities.direntries(tpd, True, pattern)) @@ -2830,7 +2921,7 @@ os.path.splitext(mainscript)[0] or os.path.basename(tslist[0]).split("_")[0] ) - self.pdata["TRANSLATIONPATTERN"] = os.path.join( + self.__pdata["TRANSLATIONPATTERN"] = os.path.join( os.path.dirname(tslist[0]), "{0}_%language%{1}".format( os.path.basename(tslist[0]).split("_")[0], @@ -2851,35 +2942,35 @@ tslist[0], ) if pattern: - self.pdata["TRANSLATIONPATTERN"] = pattern - if self.pdata["TRANSLATIONPATTERN"]: - self.pdata["TRANSLATIONPATTERN"] = self.getRelativePath( - self.pdata["TRANSLATIONPATTERN"] + self.__pdata["TRANSLATIONPATTERN"] = pattern + if self.__pdata["TRANSLATIONPATTERN"]: + self.__pdata["TRANSLATIONPATTERN"] = self.getRelativePath( + self.__pdata["TRANSLATIONPATTERN"] ) - pattern = self.pdata["TRANSLATIONPATTERN"].replace( + pattern = self.__pdata["TRANSLATIONPATTERN"].replace( "%language%", "*" ) for ts in tslist: if fnmatch.fnmatch(ts, pattern): - self.pdata["TRANSLATIONS"].append(ts) + self.__pdata["TRANSLATIONS"].append(ts) self.projectLanguageAdded.emit(ts) - if self.pdata["TRANSLATIONSBINPATH"]: + if self.__pdata["TRANSLATIONSBINPATH"]: tpd = os.path.join( - self.ppath, self.pdata["TRANSLATIONSBINPATH"] + self.ppath, self.__pdata["TRANSLATIONSBINPATH"] ) pattern = os.path.basename( - self.pdata["TRANSLATIONPATTERN"] + 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.__pdata["TRANSLATIONS"].append(qm) self.projectLanguageAdded.emit(qm) - if not self.pdata["MAINSCRIPT"] and bool(mainscriptname): - if self.pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"]: - self.pdata["MAINSCRIPT"] = "{0}.py".format(mainscriptname) - elif self.pdata["PROGLANGUAGE"] == "Ruby": - self.pdata["MAINSCRIPT"] = "{0}.rb".format(mainscriptname) + if not self.__pdata["MAINSCRIPT"] and bool(mainscriptname): + if self.__pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"]: + self.__pdata["MAINSCRIPT"] = "{0}.py".format(mainscriptname) + elif self.__pdata["PROGLANGUAGE"] == "Ruby": + self.__pdata["MAINSCRIPT"] = "{0}.rb".format(mainscriptname) self.setDirty(True) def __showProperties(self): @@ -2890,19 +2981,19 @@ dlg = PropertiesDialog(self, False) if dlg.exec() == QDialog.DialogCode.Accepted: - projectType = self.pdata["PROJECTTYPE"] + projectType = self.__pdata["PROJECTTYPE"] dlg.storeData() self.setDirty(True) - if self.pdata["MAINSCRIPT"]: - if not os.path.isabs(self.pdata["MAINSCRIPT"]): - ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + if self.__pdata["MAINSCRIPT"]: + if not os.path.isabs(self.__pdata["MAINSCRIPT"]): + ms = os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) else: - ms = self.pdata["MAINSCRIPT"] + ms = self.__pdata["MAINSCRIPT"] if os.path.exists(ms): self.appendFile(ms) - if self.pdata["MAKEPARAMS"]["MakeEnabled"]: - mf = self.pdata["MAKEPARAMS"]["MakeFile"] + if self.__pdata["MAKEPARAMS"]["MakeEnabled"]: + mf = self.__pdata["MAKEPARAMS"]["MakeFile"] if mf: if not os.path.isabs(mf): mf = os.path.join(self.ppath, mf) @@ -2923,7 +3014,7 @@ ) self.appendFile(mf) - if self.pdata["PROJECTTYPE"] != projectType: + if self.__pdata["PROJECTTYPE"] != projectType: # reinitialize filetype associations self.initFileTypes() @@ -2938,22 +3029,22 @@ if tp != self.ppath and tp not in self.subdirs: self.subdirs.append(tp) - if self.pdata["TRANSLATIONSBINPATH"]: - tp = os.path.join(self.ppath, self.pdata["TRANSLATIONSBINPATH"]) + if self.__pdata["TRANSLATIONSBINPATH"]: + tp = os.path.join(self.ppath, self.__pdata["TRANSLATIONSBINPATH"]) if not os.path.isdir(tp): os.makedirs(tp) if tp != self.ppath and tp not in self.subdirs: self.subdirs.append(tp) - self.pluginGrp.setEnabled(self.pdata["PROJECTTYPE"] in ["E7Plugin"]) + self.pluginGrp.setEnabled(self.__pdata["PROJECTTYPE"] in ["E7Plugin"]) self.__model.projectPropertiesChanged() self.projectPropertiesChanged.emit() - if self.pdata["PROJECTTYPE"] != projectType: + if self.__pdata["PROJECTTYPE"] != projectType: self.__reorganizeFiles() - if self.pdata["EMBEDDED_VENV"] and not self.__findEmbeddedEnvironment(): + if self.__pdata["EMBEDDED_VENV"] and not self.__findEmbeddedEnvironment(): self.__createEmbeddedEnvironment() def __showUserProperties(self): @@ -2962,7 +3053,7 @@ """ from .UserPropertiesDialog import UserPropertiesDialog - vcsSystem = self.pdata["VCS"] or None + vcsSystem = self.__pdata["VCS"] or None vcsSystemOverride = self.pudata["VCSOVERRIDE"] or None dlg = UserPropertiesDialog(self) @@ -2970,7 +3061,7 @@ dlg.storeData() if ( - (self.pdata["VCS"] and self.pdata["VCS"] != vcsSystem) + (self.__pdata["VCS"] and self.__pdata["VCS"] != vcsSystem) or ( self.pudata["VCSOVERRIDE"] and self.pudata["VCSOVERRIDE"] != vcsSystemOverride @@ -3023,8 +3114,8 @@ """ return [ assoc - for assoc in self.pdata["FILETYPES"] - if self.pdata["FILETYPES"][assoc] == associationType + for assoc in self.__pdata["FILETYPES"] + if self.__pdata["FILETYPES"][assoc] == associationType ] def __showLexerAssociations(self): @@ -3048,12 +3139,12 @@ @return the requested lexer language (string) """ # try user settings first - for pattern, language in list(self.pdata["LEXERASSOCS"].items()): + for pattern, language in list(self.__pdata["LEXERASSOCS"].items()): if fnmatch.fnmatch(filename, pattern): return language # try project type specific defaults next - projectType = self.pdata["PROJECTTYPE"] + projectType = self.__pdata["PROJECTTYPE"] with contextlib.suppress(KeyError): if self.__lexerAssociationCallbacks[projectType] is not None: return self.__lexerAssociationCallbacks[projectType](filename) @@ -3098,7 +3189,7 @@ ok = self.__readProject(fn) if ok: self.opened = True - if not self.pdata["FILETYPES"]: + if not self.__pdata["FILETYPES"]: self.initFileTypes() else: self.updateFileTypes() @@ -3155,14 +3246,14 @@ 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) @@ -3180,12 +3271,16 @@ self.menuDiagramAct.setEnabled(True) self.menuApidocAct.setEnabled(True) self.menuPackagersAct.setEnabled(True) - self.pluginGrp.setEnabled(self.pdata["PROJECTTYPE"] in ["E7Plugin"]) + self.pluginGrp.setEnabled( + self.__pdata["PROJECTTYPE"] in ["E7Plugin"] + ) self.addLanguageAct.setEnabled( - bool(self.pdata["TRANSLATIONPATTERN"]) + bool(self.__pdata["TRANSLATIONPATTERN"]) ) - self.makeGrp.setEnabled(self.pdata["MAKEPARAMS"]["MakeEnabled"]) - self.menuMakeAct.setEnabled(self.pdata["MAKEPARAMS"]["MakeEnabled"]) + self.makeGrp.setEnabled(self.__pdata["MAKEPARAMS"]["MakeEnabled"]) + self.menuMakeAct.setEnabled( + self.__pdata["MAKEPARAMS"]["MakeEnabled"] + ) self.menuOtherToolsAct.setEnabled(True) self.menuFormattingAct.setEnabled(True) @@ -3196,7 +3291,7 @@ self.__model.projectOpened() - if self.pdata["EMBEDDED_VENV"]: + if self.__pdata["EMBEDDED_VENV"]: envPath = self.__findEmbeddedEnvironment() if bool(envPath): self.__loadEnvironmentConfiguration() @@ -3208,7 +3303,7 @@ self.__configureEnvironment(envPath) else: self.__createEmbeddedEnvironment() - self.menuEnvironmentAct.setEnabled(self.pdata["EMBEDDED_VENV"]) + self.menuEnvironmentAct.setEnabled(self.__pdata["EMBEDDED_VENV"]) self.projectOpenedHooks.emit() self.projectOpened.emit() @@ -3225,11 +3320,11 @@ if restoreSession: # open the main script - if self.pdata["MAINSCRIPT"]: - if not os.path.isabs(self.pdata["MAINSCRIPT"]): - ms = os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + if self.__pdata["MAINSCRIPT"]: + if not os.path.isabs(self.__pdata["MAINSCRIPT"]): + ms = os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) else: - ms = self.pdata["MAINSCRIPT"] + ms = self.__pdata["MAINSCRIPT"] self.sourceFile.emit(ms) # open a project session file being quiet about errors @@ -3485,7 +3580,7 @@ filesWithSyntaxErrors = 0 for fn in vm.getOpenFilenames(): rfn = self.getRelativePath(fn) - if rfn in self.pdata["SOURCES"] or rfn in self.pdata["OTHERS"]: + if rfn in self.__pdata["SOURCES"] or rfn in self.__pdata["OTHERS"]: editor = vm.getOpenEditor(fn) success &= vm.saveEditorEd(editor) if reportSyntaxErrors and editor.hasSyntaxErrors(): @@ -3519,7 +3614,7 @@ filesWithSyntaxErrors = 0 for fn in vm.getOpenFilenames(): rfn = self.getRelativePath(fn) - if rfn in self.pdata["SOURCES"] or rfn in self.pdata["OTHERS"]: + if rfn in self.__pdata["SOURCES"] or rfn in self.__pdata["OTHERS"]: editor = vm.getOpenEditor(fn) success &= editor.checkDirty() if reportSyntaxErrors and editor.hasSyntaxErrors(): @@ -3551,11 +3646,11 @@ @return filename of the projects main script @rtype str """ - if self.pdata["MAINSCRIPT"]: + if self.__pdata["MAINSCRIPT"]: if normalized: - return os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + return os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) else: - return self.pdata["MAINSCRIPT"] + return self.__pdata["MAINSCRIPT"] else: return "" @@ -3583,21 +3678,22 @@ @rtype list of str @exception ValueError raised when an unsupported file type is given """ - if fileType not in [ - "SOURCES", - "FORMS", - "RESOURCES", - "INTERFACES", - "PROTOCOLS", - "OTHERS", - "TRANSLATIONS", - ]: + if fileType not in self.__knownFileCategories: + ##[ + ##"SOURCES", + ##"FORMS", + ##"RESOURCES", + ##"INTERFACES", + ##"PROTOCOLS", + ##"OTHERS", + ##"TRANSLATIONS", + ##]: raise ValueError("Given file type has incorrect value.") if normalized: - return [os.path.join(self.ppath, fn) for fn in self.pdata[fileType]] + return [os.path.join(self.ppath, fn) for fn in self.__pdata[fileType]] else: - return self.pdata[fileType] + return self.__pdata[fileType] def getProjectType(self): """ @@ -3605,7 +3701,7 @@ @return UI type of the project (string) """ - return self.pdata["PROJECTTYPE"] + return self.__pdata["PROJECTTYPE"] def getProjectLanguage(self): """ @@ -3613,7 +3709,7 @@ @return programming language (string) """ - return self.pdata["PROGLANGUAGE"] + return self.__pdata["PROGLANGUAGE"] def isMixedLanguageProject(self): """ @@ -3622,7 +3718,7 @@ @return flag indicating a mixed language project @rtype bool """ - return self.pdata["MIXEDLANGUAGE"] + return self.__pdata["MIXEDLANGUAGE"] def isPythonProject(self): """ @@ -3631,7 +3727,7 @@ @return flag indicating a Python project (boolean) """ - return self.pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"] + return self.__pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"] def isPy3Project(self): """ @@ -3639,7 +3735,7 @@ @return flag indicating a Python3 project (boolean) """ - return self.pdata["PROGLANGUAGE"] == "Python3" + return self.__pdata["PROGLANGUAGE"] == "Python3" def isMicroPythonProject(self): """ @@ -3648,7 +3744,7 @@ @return flag indicating a MicroPython project @rtype bool """ - return self.pdata["PROGLANGUAGE"] == "MicroPython" + return self.__pdata["PROGLANGUAGE"] == "MicroPython" def isRubyProject(self): """ @@ -3656,7 +3752,7 @@ @return flag indicating a Ruby project (boolean) """ - return self.pdata["PROGLANGUAGE"] == "Ruby" + return self.__pdata["PROGLANGUAGE"] == "Ruby" def isJavaScriptProject(self): """ @@ -3664,7 +3760,7 @@ @return flag indicating a JavaScript project (boolean) """ - return self.pdata["PROGLANGUAGE"] == "JavaScript" + return self.__pdata["PROGLANGUAGE"] == "JavaScript" def getProjectSpellLanguage(self): """ @@ -3672,7 +3768,7 @@ @return programming language (string) """ - return self.pdata["SPELLLANGUAGE"] + return self.__pdata["SPELLLANGUAGE"] def getProjectDictionaries(self): """ @@ -3682,14 +3778,14 @@ project specific word and exclude list """ pwl = "" - if self.pdata["SPELLWORDS"]: - pwl = os.path.join(self.ppath, self.pdata["SPELLWORDS"]) + if self.__pdata["SPELLWORDS"]: + pwl = os.path.join(self.ppath, self.__pdata["SPELLWORDS"]) if not os.path.isfile(pwl): pwl = "" pel = "" - if self.pdata["SPELLEXCLUDES"]: - pel = os.path.join(self.ppath, self.pdata["SPELLEXCLUDES"]) + if self.__pdata["SPELLEXCLUDES"]: + pel = os.path.join(self.ppath, self.__pdata["SPELLEXCLUDES"]) if not os.path.isfile(pel): pel = "" @@ -3702,7 +3798,7 @@ @return default extension (including the dot) (string) """ - lang = self.pdata["PROGLANGUAGE"] + lang = self.__pdata["PROGLANGUAGE"] if lang in ("", "Python"): lang = "Python3" return self.__sourceExtensions(lang)[0] @@ -3778,7 +3874,7 @@ @return project hash as a hex string (string) """ - return self.pdata["HASH"] + return self.__pdata["HASH"] def getRelativePath(self, path): """ @@ -3835,8 +3931,8 @@ @return eol string (string) """ - if self.pdata["EOL"] >= 0: - return self.eols[self.pdata["EOL"]] + if self.__pdata["EOL"] >= 0: + return self.eols[self.__pdata["EOL"]] else: eolMode = Preferences.getEditor("EOLMode") if eolMode == QsciScintilla.EolMode.EolWindows: @@ -3855,7 +3951,7 @@ @return flag indicating the usage of system eol (boolean) """ - return self.pdata["EOL"] == 0 + return self.__pdata["EOL"] == 0 def getProjectVersion(self): """ @@ -3864,7 +3960,7 @@ @return version number @rtype str """ - return self.pdata["VERSION"] + return self.__pdata["VERSION"] def getProjectAuthor(self): """ @@ -3873,7 +3969,7 @@ @return author name @rtype str """ - return self.pdata["AUTHOR"] + return self.__pdata["AUTHOR"] def getProjectAuthorEmail(self): """ @@ -3882,7 +3978,7 @@ @return project author email @rtype str """ - return self.pdata["EMAIL"] + return self.__pdata["EMAIL"] def getProjectDescription(self): """ @@ -3891,7 +3987,7 @@ @return project description @rtype str """ - return self.pdata["DESCRIPTION"] + return self.__pdata["DESCRIPTION"] def getProjectVenv(self, resolveDebugger=True): """ @@ -3906,7 +4002,7 @@ """ venvName = ( self.__venvConfiguration["name"] - if self.pdata["EMBEDDED_VENV"] and bool(self.__venvConfiguration["name"]) + if self.__pdata["EMBEDDED_VENV"] and bool(self.__venvConfiguration["name"]) else self.getDebugProperty("VIRTUALENV") ) if ( @@ -3931,7 +4027,7 @@ """ interpreter = ( self.__venvConfiguration["interpreter"] - if self.pdata["EMBEDDED_VENV"] + if self.__pdata["EMBEDDED_VENV"] else "" ) if not interpreter: @@ -3954,7 +4050,7 @@ @return executable search path prefix @rtype str """ - if self.pdata["EMBEDDED_VENV"]: + if self.__pdata["EMBEDDED_VENV"]: execPath = self.__venvConfiguration["exec_path"] else: execPath = "" @@ -3976,7 +4072,7 @@ @rtype str """ try: - return self.pdata["TESTING_FRAMEWORK"] + return self.__pdata["TESTING_FRAMEWORK"] except KeyError: return "" @@ -3988,7 +4084,7 @@ @rtype str """ try: - return self.pdata["LICENSE"] + return self.__pdata["LICENSE"] except KeyError: return "" @@ -4005,16 +4101,17 @@ newfn = os.path.abspath(fn) newfn = self.getRelativePath(newfn) return any( - newfn in self.pdata[group] - for group in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "TRANSLATIONS", - "OTHERS", - ] + newfn in self.__pdata[category] + for category in self.__knownFileCategories + ##[ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"TRANSLATIONS", + ##"OTHERS", + ##] ) def isProjectFile(self, fn): @@ -4026,16 +4123,17 @@ @return flag indicating membership (boolean) """ return any( - self.__checkProjectFileGroup(fn, group) - for group in [ - "SOURCES", - "FORMS", - "INTERFACES", - "PROTOCOLS", - "RESOURCES", - "TRANSLATIONS", - "OTHERS", - ] + self.__checkProjectFileGroup(fn, category) + for category in self.__knownFileCategories + ##[ + ##"SOURCES", + ##"FORMS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"RESOURCES", + ##"TRANSLATIONS", + ##"OTHERS", + ##] ) def __checkProjectFileGroup(self, fn, group): @@ -4049,25 +4147,26 @@ """ newfn = os.path.abspath(fn) newfn = self.getRelativePath(newfn) - if newfn in self.pdata[group] or ( + if newfn in self.__pdata[group] or ( group == "OTHERS" - and any(newfn.startswith(entry) for entry in self.pdata[group]) + and any(newfn.startswith(entry) for entry in self.__pdata[group]) ): return True if Utilities.isWindowsPlatform(): # try the above case-insensitive newfn = newfn.lower() - if any(entry.lower() == newfn for entry in self.pdata[group]): + if any(entry.lower() == newfn for entry in self.__pdata[group]): return True elif group == "OTHERS" and any( - newfn.startswith(entry.lower()) for entry in self.pdata[group] + newfn.startswith(entry.lower()) for entry in self.__pdata[group] ): return True return False + # TODO: change the following methods to a more generic logix using fileCategories def isProjectSource(self, fn): """ Public method used to check, if the passed in filename belongs to the @@ -5392,7 +5491,7 @@ Private method to set up the project menu. """ self.menuRecentAct.setEnabled(len(self.recent) > 0) - self.menuEnvironmentAct.setEnabled(self.pdata["EMBEDDED_VENV"]) + self.menuEnvironmentAct.setEnabled(self.__pdata["EMBEDDED_VENV"]) self.showMenu.emit("Main", self.__menus["Main"]) @@ -5502,7 +5601,7 @@ ignore_patterns = [ pattern - for pattern, filetype in self.pdata["FILETYPES"].items() + for pattern, filetype in self.__pdata["FILETYPES"].items() if filetype == "__IGNORE__" ] @@ -5522,8 +5621,8 @@ except OSError: newSources = [] pattern = ( - self.pdata["TRANSLATIONPATTERN"].replace("%language%", "*") - if self.pdata["TRANSLATIONPATTERN"] + self.__pdata["TRANSLATIONPATTERN"].replace("%language%", "*") + if self.__pdata["TRANSLATIONPATTERN"] else "*.ts" ) binpattern = self.__binaryTranslationFile(pattern) @@ -5555,27 +5654,40 @@ filetype = "" bfn = os.path.basename(fn) - for pattern in sorted(self.pdata["FILETYPES"].keys(), reverse=True): + for pattern in sorted(self.__pdata["FILETYPES"].keys(), reverse=True): if fnmatch.fnmatch(bfn, pattern): - filetype = self.pdata["FILETYPES"][pattern] + filetype = self.__pdata["FILETYPES"][pattern] break if ( - (filetype == "SOURCES" and fn not in self.pdata["SOURCES"]) - or (filetype == "FORMS" and fn not in self.pdata["FORMS"]) - or (filetype == "INTERFACES" and fn not in self.pdata["INTERFACES"]) - or (filetype == "PROTOCOLS" and fn not in self.pdata["PROTOCOLS"]) - or (filetype == "RESOURCES" and fn not in self.pdata["RESOURCES"]) - or (filetype == "OTHERS" and fn not in self.pdata["OTHERS"]) - or ( - filetype == "TRANSLATIONS" - and fn not in self.pdata["TRANSLATIONS"] - and ( - fnmatch.fnmatch(ns, pattern) - or fnmatch.fnmatch(ns, binpattern) + filetype in self.__knownFileCategories + and fn not in self.__pdata[filetype] + and ( + filetype != "TRANSLATIONS" + or ( + filetype == "TRANSLATIONS" + and ( + fnmatch.fnmatch(ns, pattern) + or fnmatch.fnmatch(ns, binpattern) + ) ) ) ): + ##(filetype == "SOURCES" and fn not in self.__pdata["SOURCES"]) + ##or (filetype == "FORMS" and fn not in self.__pdata["FORMS"]) + ##or (filetype == "INTERFACES" and fn not in self.__pdata["INTERFACES"]) + ##or (filetype == "PROTOCOLS" and fn not in self.__pdata["PROTOCOLS"]) + ##or (filetype == "RESOURCES" and fn not in self.__pdata["RESOURCES"]) + ##or (filetype == "OTHERS" and fn not in self.__pdata["OTHERS"]) + ##or ( + ##filetype == "TRANSLATIONS" + ##and fn not in self.__pdata["TRANSLATIONS"] + ##and ( + ##fnmatch.fnmatch(ns, pattern) + ##or fnmatch.fnmatch(ns, binpattern) + ##) + ##) + ##): if autoInclude and AI: self.appendFile(ns) else: @@ -5695,15 +5807,15 @@ override = False if vcsSystem is None: - if self.pdata["VCS"] and self.pdata["VCS"] != "None": - vcsSystem = self.pdata["VCS"] + if self.__pdata["VCS"] and self.__pdata["VCS"] != "None": + vcsSystem = self.__pdata["VCS"] else: forProject = False if ( forProject - and self.pdata["VCS"] - and self.pdata["VCS"] != "None" + and self.__pdata["VCS"] + and self.__pdata["VCS"] != "None" and self.pudata["VCSOVERRIDE"] and not nooverride ): @@ -5749,7 +5861,7 @@ ) vcs = None if forProject: - self.pdata["VCS"] = "None" + self.__pdata["VCS"] = "None" self.setDirty(True) else: vcs.vcsInitConfig(self) @@ -5758,11 +5870,11 @@ # set the vcs options if vcs.vcsSupportCommandOptions(): with contextlib.suppress(LookupError): - vcsopt = copy.deepcopy(self.pdata["VCSOPTIONS"]) + vcsopt = copy.deepcopy(self.__pdata["VCSOPTIONS"]) vcs.vcsSetOptions(vcsopt) # set vcs specific data with contextlib.suppress(LookupError): - vcsother = copy.deepcopy(self.pdata["VCSOTHERDATA"]) + vcsother = copy.deepcopy(self.__pdata["VCSOTHERDATA"]) vcs.vcsSetOtherData(vcsother) if forProject: @@ -5782,7 +5894,7 @@ """ Public method to reset the VCS. """ - self.pdata["VCS"] = "None" + self.__pdata["VCS"] = "None" self.vcs = self.initVCS() ericApp().getObject("PluginManager").deactivateVcsPlugins() @@ -5871,7 +5983,7 @@ files = [ os.path.join(self.ppath, file) - for file in self.pdata["SOURCES"] + for file in self.__pdata["SOURCES"] if file.endswith(".py") ] self.codemetrics = CodeMetricsDialog() @@ -5917,7 +6029,7 @@ files = [ os.path.join(self.ppath, file) - for file in self.pdata["SOURCES"] + for file in self.__pdata["SOURCES"] if os.path.splitext(file)[1].startswith(".py") ] self.codecoverage = PyCoverageDialog() @@ -6145,16 +6257,17 @@ # build the list of entries lst_ = [] - for key in [ - "SOURCES", - "FORMS", - "RESOURCES", - "TRANSLATIONS", - "INTERFACES", - "PROTOCOLS", - "OTHERS", - ]: - lst_.extend(self.pdata[key]) + for key in self.__knownFileCategories: + ##[ + ##"SOURCES", + ##"FORMS", + ##"RESOURCES", + ##"TRANSLATIONS", + ##"INTERFACES", + ##"PROTOCOLS", + ##"OTHERS", + ##]: + lst_.extend(self.__pdata[key]) lst = [] for entry in lst_: if os.path.isdir(self.getAbsolutePath(entry)): @@ -6181,7 +6294,7 @@ # write the file try: - newline = None if self.pdata["EOL"] == 0 else self.getEolString() + newline = None if self.__pdata["EOL"] == 0 else self.getEolString() with open(pkglist, "w", encoding="utf-8", newline=newline) as pkglistFile: pkglistFile.write("\n".join(header) + "\n") pkglistFile.write( @@ -6200,7 +6313,7 @@ ) return - if "PKGLIST" not in self.pdata["OTHERS"]: + if "PKGLIST" not in self.__pdata["OTHERS"]: self.appendFile("PKGLIST") @pyqtSlot() @@ -6210,7 +6323,7 @@ @param snapshot flag indicating snapshot archives (boolean) """ - if not self.pdata["MAINSCRIPT"]: + if not self.__pdata["MAINSCRIPT"]: EricMessageBox.critical( self.ui, self.tr("Create Plugin Archive"), @@ -6324,7 +6437,7 @@ os.path.join(self.ppath, archiveName) if archiveName else os.path.join( - self.ppath, self.pdata["MAINSCRIPT"].replace(".py", ".zip") + self.ppath, self.__pdata["MAINSCRIPT"].replace(".py", ".zip") ) ) try: @@ -6346,16 +6459,16 @@ if name: try: self.__createZipDirEntries(os.path.split(name)[0], archiveFile) - if snapshot and name == self.pdata["MAINSCRIPT"]: + if snapshot and name == self.__pdata["MAINSCRIPT"]: snapshotSource, version = self.__createSnapshotSource( - os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) ) archiveFile.writestr(name, snapshotSource) else: archiveFile.write(os.path.join(self.ppath, name), name) - if name == self.pdata["MAINSCRIPT"]: + if name == self.__pdata["MAINSCRIPT"]: version = self.__pluginExtractVersion( - os.path.join(self.ppath, self.pdata["MAINSCRIPT"]) + os.path.join(self.ppath, self.__pdata["MAINSCRIPT"]) ) if archiveVersion and ( self.__pluginVersionToTuple(version) @@ -6375,7 +6488,7 @@ archiveFile.writestr("VERSION", version.encode("utf-8")) archiveFile.close() - if archive not in self.pdata["OTHERS"]: + if archive not in self.__pdata["OTHERS"]: self.appendFile(archive) progress.setValue(len(selectedLists)) @@ -6520,7 +6633,7 @@ @return flag indicating default parameter set @rtype bool """ - return self.pdata["MAKEPARAMS"] == { + return self.__pdata["MAKEPARAMS"] == { "MakeEnabled": False, "MakeExecutable": "", "MakeFile": "", @@ -6536,7 +6649,7 @@ @return flag indicating enabled make support @rtype bool """ - return self.pdata["MAKEPARAMS"]["MakeEnabled"] + return self.__pdata["MAKEPARAMS"]["MakeEnabled"] @pyqtSlot() def executeMake(self): @@ -6545,7 +6658,7 @@ (execute or question). """ self.__executeMake( - questionOnly=self.pdata["MAKEPARAMS"]["MakeTestOnly"], interactive=False + questionOnly=self.__pdata["MAKEPARAMS"]["MakeTestOnly"], interactive=False ) @pyqtSlot() @@ -6560,31 +6673,33 @@ @type bool """ if ( - not self.pdata["MAKEPARAMS"]["MakeEnabled"] + not self.__pdata["MAKEPARAMS"]["MakeEnabled"] or self.__makeProcess is not None ): return prog = ( - self.pdata["MAKEPARAMS"]["MakeExecutable"] - if self.pdata["MAKEPARAMS"]["MakeExecutable"] + self.__pdata["MAKEPARAMS"]["MakeExecutable"] + if self.__pdata["MAKEPARAMS"]["MakeExecutable"] else Project.DefaultMake ) args = [] - if self.pdata["MAKEPARAMS"]["MakeParameters"]: + if self.__pdata["MAKEPARAMS"]["MakeParameters"]: args.extend( - Utilities.parseOptionString(self.pdata["MAKEPARAMS"]["MakeParameters"]) + Utilities.parseOptionString( + self.__pdata["MAKEPARAMS"]["MakeParameters"] + ) ) - if self.pdata["MAKEPARAMS"]["MakeFile"]: - args.append("--makefile={0}".format(self.pdata["MAKEPARAMS"]["MakeFile"])) + if self.__pdata["MAKEPARAMS"]["MakeFile"]: + args.append("--makefile={0}".format(self.__pdata["MAKEPARAMS"]["MakeFile"])) if questionOnly: args.append("--question") - if self.pdata["MAKEPARAMS"]["MakeTarget"]: - args.append(self.pdata["MAKEPARAMS"]["MakeTarget"]) + if self.__pdata["MAKEPARAMS"]["MakeTarget"]: + args.append(self.__pdata["MAKEPARAMS"]["MakeTarget"]) self.__makeProcess = QProcess(self) self.__makeProcess.readyReadStandardOutput.connect(self.__makeReadStdOut) @@ -6657,11 +6772,11 @@ # a rebuild is needed title = self.tr("Test for Changes") - if self.pdata["MAKEPARAMS"]["MakeTarget"]: + if self.__pdata["MAKEPARAMS"]["MakeTarget"]: message = self.tr( """<p>There are changes that require the configured""" """ make target <b>{0}</b> to be rebuilt.</p>""" - ).format(self.pdata["MAKEPARAMS"]["MakeTarget"]) + ).format(self.__pdata["MAKEPARAMS"]["MakeTarget"]) else: message = self.tr( """<p>There are changes that require the default""" @@ -6706,7 +6821,7 @@ @return flag indicating default parameter set @rtype bool """ - return self.pdata["IDLPARAMS"] == { + return self.__pdata["IDLPARAMS"] == { "IncludeDirs": [], "DefinedNames": [], "UndefinedNames": [], @@ -6724,7 +6839,7 @@ @return flag indicating default parameter set @rtype bool """ - return self.pdata["UICPARAMS"] == { + return self.__pdata["UICPARAMS"] == { "Package": "", "RcSuffix": "", "PackagesRoot": "", @@ -6739,8 +6854,8 @@ @return value of the given parameter @rtype any, None in case on non-existence """ - if name in self.pdata["UICPARAMS"]: - return self.pdata["UICPARAMS"][name] + if name in self.__pdata["UICPARAMS"]: + return self.__pdata["UICPARAMS"][name] else: return None @@ -6756,7 +6871,7 @@ @return flag indicating default parameter set @rtype bool """ - return self.pdata["RCCPARAMS"] == self.getDefaultRccCompilerParameters() + return self.__pdata["RCCPARAMS"] == self.getDefaultRccCompilerParameters() def getDefaultRccCompilerParameters(self): """ @@ -6784,7 +6899,7 @@ @return flag indicating default parameter @rtype bool """ - return self.pdata["DOCSTRING"] == "" + return self.__pdata["DOCSTRING"] == "" def getDocstringType(self): """ @@ -6793,7 +6908,7 @@ @return configured docstring style @rtype str """ - return self.pdata["DOCSTRING"] + return self.__pdata["DOCSTRING"] ######################################################################### ## Below are methods implementing the 'SBOM' support @@ -6956,8 +7071,8 @@ @param value flag indicating an embedded environment @type bool """ - if value != self.pdata["EMBEDDED_VENV"]: - self.pdata["EMBEDDED_VENV"] = value + if value != self.__pdata["EMBEDDED_VENV"]: + self.__pdata["EMBEDDED_VENV"] = value self.setDirty(True) def __initVenvConfiguration(self):