diff -r c2fe17f95b56 -r 8601253e7633 src/eric7/Project/ProjectBrowser.py --- a/src/eric7/Project/ProjectBrowser.py Thu Nov 24 11:59:08 2022 +0100 +++ b/src/eric7/Project/ProjectBrowser.py Thu Nov 24 14:43:31 2022 +0100 @@ -130,6 +130,9 @@ self.__currentBrowsersList = [] self.__browserRepository = {} + self.__fileFilterMapping = {} # redundant data store for speed reasons + + self.project.getModel().setProjectBrowserReference(self) # create all the individual browsers for browserClass in ( @@ -182,6 +185,9 @@ ) else: self.__browserRepository[browserType] = projectBrowserItem + self.__fileFilterMapping[ + projectBrowserItem.fileCategory + ] = projectBrowserItem.fileFilter self.__setBrowsersAvailable(self.__currentBrowsersList) @@ -199,6 +205,10 @@ browserIndex = self.indexOf(self.getProjectBrowser(browserType)) if browserIndex >= 0: self.removeTab(browserIndex) + + del self.__fileFilterMapping[ + self.__browserRepository[browserType].fileCategory + ] del self.__browserRepository[browserType] self.__setBrowsersAvailable(self.__currentBrowsersList) @@ -238,7 +248,7 @@ def getProjectBrowserUserStrings(self): """ Public method to get a dictionary of defined project browser user strings. - + @return dictionary of defined project browser user strings @rtype dict """ @@ -248,11 +258,48 @@ } def getProjectBrowserIcon(self, browserType): + """ + Public method to get the icon for a project browser. + + @param browserType type of the project browser + @type str + @return icon for the project browser + @rtype QIcon + """ try: return self.__browserRepository[browserType].getIcon() except KeyError: return QIcon() + def getProjectBrowserType(self, fileCategory): + """ + Public method to get the project browser type for a file category. + + @param fileCategory file category + @type str + @return project browser type + @rtype str + """ + for browserType, browserItem in self.__browserRepository.items(): + if browserItem.fileCategory == fileCategory: + return browserType + + return "" + + def getProjectBrowserFilter(self, fileCategory): + """ + Public method to get the project browser file filter for a file category. + + @param fileCategory file category + @type str + @return project browser file filter + @rtype str + """ + with contextlib.suppress(KeyError): + return self.__fileFilterMapping[fileCategory] + + return "" + def __setBrowsersAvailable(self, browsersList): """ Private method to add selected browsers to the project browser.