src/eric7/Project/ProjectBrowser.py

branch
eric7
changeset 9525
477545eef9f4
parent 9524
6a730f4d0080
child 9526
c2fe17f95b56
--- a/src/eric7/Project/ProjectBrowser.py	Wed Nov 23 16:07:16 2022 +0100
+++ b/src/eric7/Project/ProjectBrowser.py	Thu Nov 24 11:51:40 2022 +0100
@@ -10,8 +10,7 @@
 import contextlib
 
 from PyQt6.QtCore import Qt, pyqtSignal
-from PyQt6.QtGui import QColor
-from PyQt6.QtWidgets import QApplication
+from PyQt6.QtGui import QColor, QIcon
 
 from eric7 import Preferences
 from eric7.EricGui import EricPixmapCache
@@ -19,16 +18,6 @@
 from eric7.EricWidgets.EricLed import EricClickableLed
 from eric7.EricWidgets.EricTabWidget import EricTabWidget
 
-from .ProjectBrowserFlags import (
-    AllBrowsersFlag,
-    FormsBrowserFlag,
-    InterfacesBrowserFlag,
-    OthersBrowserFlag,
-    ProtocolsBrowserFlag,
-    ResourcesBrowserFlag,
-    SourcesBrowserFlag,
-    TranslationsBrowserFlag,
-)
 from .ProjectBrowserRepositoryItem import ProjectBrowserRepositoryItem
 from .ProjectFormsBrowser import ProjectFormsBrowser
 from .ProjectInterfacesBrowser import ProjectInterfacesBrowser
@@ -162,7 +151,7 @@
         self.currentChanged.connect(self.__currentChanged)
         self.project.getModel().vcsStateChanged.connect(self.__vcsStateChanged)
 
-        self.__currentBrowsersFlags = 0
+        self.__currentBrowsersList = []
         self.__projectPropertiesChanged()
         self.setCurrentIndex(0)
 
@@ -217,7 +206,7 @@
         @return list of references to project browsers
         @rtype list of ProjectBaseBrowser
         """
-        return [itm.projectBrowser for itm in self.__browserRepository.items()]
+        return [itm.projectBrowser for itm in self.__browserRepository.values()]
 
     def getProjectBrowser(self, browserType):
         """
@@ -242,97 +231,51 @@
         """
         return list(self.__browserRepository.keys())
 
-    def __setBrowsersAvailable(self, browserFlags):
+    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
+        """
+        return {
+            key: item.projectBrowserUserString
+            for key, item in self.__browserRepository.items()
+        }
+
+    def getProjectBrowserIcon(self, browserType):
+        try:
+            return self.__browserRepository[browserType].getIcon()
+        except KeyError:
+            return QIcon()
+
+    def __setBrowsersAvailable(self, browsersList):
         """
         Private method to add selected browsers to the project browser.
 
-        @param browserFlags flags indicating the browsers to add (integer)
+        @param browsersList list of project browsers to be shown
+        @type list of str
         """
         # step 1: remove all tabs
         while self.count() > 0:
             self.removeTab(0)
 
         # step 2: add browsers
-        # TODO: change the logic after browser flags have been eliminated
-        if browserFlags & SourcesBrowserFlag:
-            index = self.addTab(
-                self.__browserRepository["sources"].projectBrowser,
-                self.__browserRepository["sources"].getIcon(),
-                "",
-            )
-            self.setTabToolTip(
-                index,
-                self.__browserRepository["sources"].projectBrowser.windowTitle(),
-            )
-
-        if browserFlags & FormsBrowserFlag:
+        for browser in sorted(
+            browsersList,
+            key=lambda x: self.__browserRepository[x].priority,
+            reverse=True,
+        ):
             index = self.addTab(
-                self.__browserRepository["forms"].projectBrowser,
-                self.__browserRepository["forms"].getIcon(),
-                "",
-            )
-            self.setTabToolTip(
-                index,
-                self.__browserRepository["forms"].projectBrowser.windowTitle(),
-            )
-
-        if browserFlags & ResourcesBrowserFlag:
-            index = self.addTab(
-                self.__browserRepository["resources"].projectBrowser,
-                self.__browserRepository["resources"].getIcon(),
+                self.__browserRepository[browser].projectBrowser,
+                self.__browserRepository[browser].getIcon(),
                 "",
             )
             self.setTabToolTip(
                 index,
-                self.__browserRepository["resources"].projectBrowser.windowTitle(),
-            )
-
-        if browserFlags & TranslationsBrowserFlag:
-            index = self.addTab(
-                self.__browserRepository["translations"].projectBrowser,
-                self.__browserRepository["translations"].getIcon(),
-                "",
-            )
-            self.setTabToolTip(
-                index,
-                self.__browserRepository["translations"].projectBrowser.windowTitle(),
-            )
-
-        if browserFlags & InterfacesBrowserFlag:
-            index = self.addTab(
-                self.__browserRepository["interfaces"].projectBrowser,
-                self.__browserRepository["interfaces"].getIcon(),
-                "",
-            )
-            self.setTabToolTip(
-                index,
-                self.__browserRepository["interfaces"].projectBrowser.windowTitle(),
+                self.__browserRepository[browser].projectBrowser.windowTitle(),
             )
 
-        if browserFlags & ProtocolsBrowserFlag:
-            index = self.addTab(
-                self.__browserRepository["protocols"].projectBrowser,
-                self.__browserRepository["protocols"].getIcon(),
-                "",
-            )
-            self.setTabToolTip(
-                index,
-                self.__browserRepository["protocols"].projectBrowser.windowTitle(),
-            )
-
-        if browserFlags & OthersBrowserFlag:
-            index = self.addTab(
-                self.__browserRepository["others"].projectBrowser,
-                self.__browserRepository["others"].getIcon(),
-                "",
-            )
-            self.setTabToolTip(
-                index,
-                self.__browserRepository["others"].projectBrowser.windowTitle(),
-            )
-
-        QApplication.processEvents()
-
     def __currentChanged(self, index):
         """
         Private slot to handle the currentChanged(int) signal.
@@ -372,15 +315,15 @@
         """
         Private slot to handle the projectPropertiesChanged signal.
         """
-        flags = (
-            Preferences.getProjectBrowserFlags(self.project.getProjectType())
+        browsersList = (
+            Preferences.getProjectBrowsers(self.project.getProjectType())
             if self.project.isOpen()
-            else AllBrowsersFlag
+            else list(self.__browserRepository.keys())
         )
 
-        if flags != self.__currentBrowsersFlags:
-            self.__currentBrowsersFlags = flags
-            self.__setBrowsersAvailable(flags)
+        if browsersList != self.__currentBrowsersList:
+            self.__currentBrowsersList = browsersList[:]
+            self.__setBrowsersAvailable(browsersList)
 
         endIndex = self.count()
         for index in range(endIndex):
@@ -388,31 +331,14 @@
 
         self.__setSourcesIcon()
 
-    # TODO: move the logic to determine the icon to the sources browser.
     def __setSourcesIcon(self):
         """
         Private method to set the right icon for the sources browser tab.
         """
-        if not self.project.isOpen():
-            icon = EricPixmapCache.getIcon("projectSources")
-        else:
-            if self.project.getProjectLanguage() == "Python3":
-                if self.project.isMixedLanguageProject():
-                    icon = EricPixmapCache.getIcon("projectSourcesPyMixed")
-                else:
-                    icon = EricPixmapCache.getIcon("projectSourcesPy")
-            elif self.project.getProjectLanguage() == "MicroPython":
-                icon = EricPixmapCache.getIcon("micropython")
-            elif self.project.getProjectLanguage() == "Ruby":
-                if self.project.isMixedLanguageProject():
-                    icon = EricPixmapCache.getIcon("projectSourcesRbMixed")
-                else:
-                    icon = EricPixmapCache.getIcon("projectSourcesRb")
-            elif self.project.getProjectLanguage() == "JavaScript":
-                icon = EricPixmapCache.getIcon("projectSourcesJavaScript")
-            else:
-                icon = EricPixmapCache.getIcon("projectSources")
-        self.setTabIcon(self.indexOf(self.getProjectBrowser("sources")), icon)
+        self.setTabIcon(
+            self.indexOf(self.getProjectBrowser("sources")),
+            self.getProjectBrowserIcon("sources"),
+        )
 
     def handleEditorChanged(self, fn):
         """

eric ide

mercurial