--- a/src/eric7/Project/ProjectBrowserModel.py Thu Nov 24 11:59:08 2022 +0100 +++ b/src/eric7/Project/ProjectBrowserModel.py Thu Nov 24 14:43:31 2022 +0100 @@ -28,16 +28,6 @@ ProjectBrowserItemDirectory = 101 ProjectBrowserItemFile = 102 -# TODO: move these definitions to the project browser repository -ProjectBrowserNoType = "none" -ProjectBrowserSourceType = "source" -ProjectBrowserFormType = "form" -ProjectBrowserInterfaceType = "interface" -ProjectBrowserTranslationType = "translation" -ProjectBrowserOthersType = "other" -ProjectBrowserResourceType = "resource" -ProjectBrowserProtocolsType = "protocol" - class ProjectBrowserItemMixin: """ @@ -249,6 +239,7 @@ self.progDir = None self.project = parent + self.__projectBrowser = None self.watchedItems = {} self.__watcherActive = True @@ -257,18 +248,6 @@ self.inRefresh = False - # TODO: move this to ProjectBrowser (ProjectBrowserRepository) - # mapping of file category to project browser type - self.projectBrowserTypes = { - "SOURCES": ProjectBrowserSourceType, - "FORMS": ProjectBrowserFormType, - "RESOURCES": ProjectBrowserResourceType, - "INTERFACES": ProjectBrowserInterfaceType, - "PROTOCOLS": ProjectBrowserProtocolsType, - "TRANSLATIONS": ProjectBrowserTranslationType, - "OTHERS": ProjectBrowserOthersType, - } - self.colorNames = { "A": "VcsAdded", "M": "VcsModified", @@ -292,6 +271,15 @@ self.vcsStatusReport = {} + def setProjectBrowserReference(self, projectBrowser): + """ + Public method to set a reference to the project browser instance. + + @param projectBrowser reference to the project browser instance + @type ProjectBrowser + """ + self.__projectBrowser = projectBrowser + def data(self, index, role): """ Public method to get data of an item. @@ -429,39 +417,43 @@ """ self.__vcsStatus = {} states = {} - keys = list(self.projectBrowserTypes.keys())[:] + fileCategories = self.project.getFileCategories() if self.project.vcs is not None: - for key in keys: - for fn in self.project.getProjectData(dataKey=key): + for fileCategory in fileCategories: + for fn in self.project.getProjectData(dataKey=fileCategory): states[os.path.normcase(os.path.join(self.project.ppath, fn))] = 0 self.project.vcs.clearStatusCache() states = self.project.vcs.vcsAllRegisteredStates(states, self.project.ppath) self.inRefresh = True - for key in keys: + for fileCategory in fileCategories: # Show the entry in bold in the others browser to make it more # distinguishable - bold = key == "OTHERS" + bold = fileCategory == "OTHERS" sourceLanguage = ( - self.project.getProjectLanguage() if key == "SOURCES" else "" + self.project.getProjectLanguage() if fileCategory == "SOURCES" else "" ) - for fn in self.project.getProjectData(dataKey=key): + for fn in self.project.getProjectData(dataKey=fileCategory): fname = os.path.join(self.project.ppath, fn) parentItem, dt = self.findParentItemByName( - self.projectBrowserTypes[key], fn + self.__projectBrowser.getProjectBrowserFilter(fileCategory), fn ) itm = ( ProjectBrowserDirectoryItem( - parentItem, fname, self.projectBrowserTypes[key], False, bold + parentItem, + fname, + self.__projectBrowser.getProjectBrowserFilter(fileCategory), + False, + bold, ) if os.path.isdir(fname) else ProjectBrowserFileItem( parentItem, fname, - self.projectBrowserTypes[key], + self.__projectBrowser.getProjectBrowserFilter(fileCategory), False, bold, sourceLanguage=sourceLanguage, @@ -558,7 +550,7 @@ fname = os.path.join(self.project.ppath, name) parentItem, dt = self.findParentItemByName( - self.projectBrowserTypes[typeString], name + self.__projectBrowser.getProjectBrowserFilter(typeString), name ) parentIndex = ( QModelIndex() @@ -567,7 +559,11 @@ ) if os.path.isdir(fname): itm = ProjectBrowserDirectoryItem( - parentItem, fname, self.projectBrowserTypes[typeString], False, bold + parentItem, + fname, + self.__projectBrowser.getProjectBrowserFilter(typeString), + False, + bold, ) else: if typeString == "SOURCES": @@ -577,7 +573,7 @@ itm = ProjectBrowserFileItem( parentItem, fname, - self.projectBrowserTypes[typeString], + self.__projectBrowser.getProjectBrowserFilter(typeString), False, bold, sourceLanguage=sourceLanguage, @@ -585,8 +581,10 @@ self.__addVCSStatus(itm, fname) if additionalTypeStrings: for additionalTypeString in additionalTypeStrings: - type_ = self.projectBrowserTypes[additionalTypeString] - itm.addProjectType(type_) + browserType = self.__projectBrowser.getProjectBrowserFilter( + additionalTypeString + ) + itm.addProjectType(browserType) self.addItem(itm, parentIndex) def renameItem(self, name, newFilename):