--- 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): """