src/eric7/Project/ProjectBrowser.py

branch
eric7
changeset 9527
8601253e7633
parent 9526
c2fe17f95b56
child 9554
fe8c29d7cf96
child 9559
34fc53e6159d
--- 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.

eric ide

mercurial