src/eric7/Project/ProjectBrowserModel.py

branch
eric7
changeset 9527
8601253e7633
parent 9524
6a730f4d0080
child 9624
b47dfa7a137d
diff -r c2fe17f95b56 -r 8601253e7633 src/eric7/Project/ProjectBrowserModel.py
--- 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):

eric ide

mercurial