Thu, 24 Nov 2022 11:51:40 +0100
Continued refactoring of the project browser related code in order to extract some as plugins later on.
--- a/eric7.epj Wed Nov 23 16:07:16 2022 +0100 +++ b/eric7.epj Thu Nov 24 11:51:40 2022 +0100 @@ -1904,7 +1904,6 @@ "src/eric7/Project/Project.py", "src/eric7/Project/ProjectBaseBrowser.py", "src/eric7/Project/ProjectBrowser.py", - "src/eric7/Project/ProjectBrowserFlags.py", "src/eric7/Project/ProjectBrowserModel.py", "src/eric7/Project/ProjectBrowserRepositoryItem.py", "src/eric7/Project/ProjectBrowserSortFilterProxyModel.py",
--- a/src/eric7/Documentation/Source/eric7.Project.ProjectBrowserFlags.html Wed Nov 23 16:07:16 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html><head> -<title>eric7.Project.ProjectBrowserFlags</title> -<meta charset="UTF-8"> -<link rel="stylesheet" href="styles.css"> -</head> -<body> -<a NAME="top" ID="top"></a> -<h1>eric7.Project.ProjectBrowserFlags</h1> - -<p> -Module defining the project browser flags. -</p> -<h3>Global Attributes</h3> - -<table> -<tr><td>AllBrowsersFlag</td></tr><tr><td>FormsBrowserFlag</td></tr><tr><td>InterfacesBrowserFlag</td></tr><tr><td>OthersBrowserFlag</td></tr><tr><td>ProtocolsBrowserFlag</td></tr><tr><td>ResourcesBrowserFlag</td></tr><tr><td>SourcesBrowserFlag</td></tr><tr><td>TranslationsBrowserFlag</td></tr> -</table> -<h3>Classes</h3> - -<table> -<tr><td>None</td></tr> -</table> -<h3>Functions</h3> - -<table> -<tr><td>None</td></tr> -</table> -<hr /> -</body></html> \ No newline at end of file
--- a/src/eric7/Preferences/ConfigurationPages/ProjectBrowserPage.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Preferences/ConfigurationPages/ProjectBrowserPage.py Thu Nov 24 11:51:40 2022 +0100 @@ -7,7 +7,10 @@ Module implementing the Project Browser configuration page. """ -from PyQt6.QtCore import pyqtSlot +import contextlib + +from PyQt6.QtCore import pyqtSlot, Qt +from PyQt6.QtWidgets import QListWidgetItem from eric7 import Preferences from eric7.EricWidgets.EricApplication import ericApp @@ -16,7 +19,6 @@ from .Ui_ProjectBrowserPage import Ui_ProjectBrowserPage -# TODO: change project browser configuration to use a QListWidget class ProjectBrowserPage(ConfigurationPageBase, Ui_ProjectBrowserPage): """ Class implementing the Project Browser configuration page. @@ -32,18 +34,22 @@ self.__currentProjectTypeIndex = 0 + # populate the project browser type list + self.__populateProjectBrowserList() + # set initial values self.projectTypeCombo.addItem("", "") - self.__projectBrowserFlags = {"": 0} + self.__projectBrowsersLists = {"": []} try: projectTypes = ericApp().getObject("Project").getProjectTypes() for projectType in sorted(projectTypes.keys()): self.projectTypeCombo.addItem(projectTypes[projectType], projectType) - self.__projectBrowserFlags[ + self.__projectBrowsersLists[ projectType - ] = Preferences.getProjectBrowserFlags(projectType) + ] = Preferences.getProjectBrowsers(projectType) except KeyError: self.pbGroup.setEnabled(False) + self.pbGroup.setVisible(False) self.initColour( "Highlighted", self.pbHighlightedButton, Preferences.getProjectBrowserColour @@ -84,82 +90,66 @@ ) if self.pbGroup.isEnabled(): - self.__storeProjectBrowserFlags( + self.__storeProjectBrowsersList( self.projectTypeCombo.itemData(self.__currentProjectTypeIndex) ) - for projectType, flags in list(self.__projectBrowserFlags.items()): - if projectType != "": - Preferences.setProjectBrowserFlags(projectType, flags) - - def __storeProjectBrowserFlags(self, projectType): - """ - Private method to store the flags for the selected project type. - - @param projectType type of the selected project (string) - """ - from eric7.Project.ProjectBrowserFlags import ( - FormsBrowserFlag, - InterfacesBrowserFlag, - OthersBrowserFlag, - ProtocolsBrowserFlag, - ResourcesBrowserFlag, - SourcesBrowserFlag, - TranslationsBrowserFlag, - ) + for projectType, browsersList in self.__projectBrowsersLists.items(): + if bool(projectType): + Preferences.setProjectBrowsers(projectType, browsersList) - flags = 0 - if self.sourcesBrowserCheckBox.isChecked(): - flags |= SourcesBrowserFlag - if self.formsBrowserCheckBox.isChecked(): - flags |= FormsBrowserFlag - if self.resourcesBrowserCheckBox.isChecked() and projectType not in ( - "PyQt6", - "PyQt6C", - ): - flags |= ResourcesBrowserFlag - if self.translationsBrowserCheckBox.isChecked(): - flags |= TranslationsBrowserFlag - if self.interfacesBrowserCheckBox.isChecked(): - flags |= InterfacesBrowserFlag - if self.othersBrowserCheckBox.isChecked(): - flags |= OthersBrowserFlag - if self.protocolsBrowserCheckBox.isChecked(): - flags |= ProtocolsBrowserFlag + def __populateProjectBrowserList(self): + """ + Private method to populate the project browsers list. + """ + with contextlib.suppress(KeyError): + projectBrowser = ericApp().getObject("ProjectBrowser") + for ( + browserType, + userString, + ) in projectBrowser.getProjectBrowserUserStrings().items(): + itm = QListWidgetItem(userString, self.projectBrowserListWidget) + itm.setData(Qt.ItemDataRole.UserRole, browserType) + itm.setFlags(itm.flags() | Qt.ItemFlag.ItemIsUserCheckable) + itm.setCheckState(Qt.CheckState.Unchecked) - self.__projectBrowserFlags[projectType] = flags - - def __setProjectBrowsersCheckBoxes(self, projectType): + def __storeProjectBrowsersList(self, projectType): """ - Private method to set the checkboxes according to the selected project + Private method to store the list of enabled browsers for the selected project type. - @param projectType type of the selected project (string) + @param projectType type of the selected project + @type str """ - from eric7.Project.ProjectBrowserFlags import ( - FormsBrowserFlag, - InterfacesBrowserFlag, - OthersBrowserFlag, - ProtocolsBrowserFlag, - ResourcesBrowserFlag, - SourcesBrowserFlag, - TranslationsBrowserFlag, - ) + browsersList = [] + for row in range(self.projectBrowserListWidget.count()): + itm = self.projectBrowserListWidget.item(row) + if itm.checkState() == Qt.CheckState.Checked: + browsersList.append(itm.data(Qt.ItemDataRole.UserRole)) + self.__projectBrowsersLists[projectType] = browsersList - flags = self.__projectBrowserFlags[projectType] + def __setProjectBrowsersList(self, projectType): + """ + Private method to check the project browser entries according to the selected + project type. - self.sourcesBrowserCheckBox.setChecked(flags & SourcesBrowserFlag) - self.formsBrowserCheckBox.setChecked(flags & FormsBrowserFlag) - self.resourcesBrowserCheckBox.setEnabled( - projectType not in ("PyQt6", "PyQt6C", "E7Plugin") - ) - if projectType in ("PyQt6", "PyQt6C", "E7Plugin"): - self.resourcesBrowserCheckBox.setChecked(False) - else: - self.resourcesBrowserCheckBox.setChecked(flags & ResourcesBrowserFlag) - self.translationsBrowserCheckBox.setChecked(flags & TranslationsBrowserFlag) - self.interfacesBrowserCheckBox.setChecked(flags & InterfacesBrowserFlag) - self.othersBrowserCheckBox.setChecked(flags & OthersBrowserFlag) - self.protocolsBrowserCheckBox.setChecked(flags & ProtocolsBrowserFlag) + @param projectType selected project type + @type str + """ + browsersList = self.__projectBrowsersLists[projectType] + for row in range(self.projectBrowserListWidget.count()): + itm = self.projectBrowserListWidget.item(row) + if ( + projectType in ("PyQt6", "PyQt6C", "E7Plugin") + and itm.data(Qt.ItemDataRole.UserRole) == "resources" + ): + itm.setFlags(itm.flags() & ~Qt.ItemFlag.ItemIsEnabled) + else: + itm.setFlags(itm.flags() | Qt.ItemFlag.ItemIsEnabled) + itm.setCheckState( + Qt.CheckState.Checked + if itm.data(Qt.ItemDataRole.UserRole) in browsersList + else Qt.CheckState.Unchecked + ) @pyqtSlot(int) def on_projectTypeCombo_activated(self, index): @@ -172,10 +162,10 @@ if self.__currentProjectTypeIndex == index: return - self.__storeProjectBrowserFlags( + self.__storeProjectBrowsersList( self.projectTypeCombo.itemData(self.__currentProjectTypeIndex) ) - self.__setProjectBrowsersCheckBoxes(self.projectTypeCombo.itemData(index)) + self.__setProjectBrowsersList(self.projectTypeCombo.itemData(index)) self.__currentProjectTypeIndex = index @pyqtSlot(bool)
--- a/src/eric7/Preferences/ConfigurationPages/ProjectBrowserPage.ui Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Preferences/ConfigurationPages/ProjectBrowserPage.ui Thu Nov 24 11:51:40 2022 +0100 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>617</width> - <height>429</height> + <height>709</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> @@ -107,6 +107,19 @@ </layout> </item> <item> + <widget class="QListWidget" name="projectBrowserListWidget"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::NoSelection</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <widget class="QCheckBox" name="sourcesBrowserCheckBox">
--- a/src/eric7/Preferences/__init__.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Preferences/__init__.py Thu Nov 24 11:51:40 2022 +0100 @@ -52,17 +52,6 @@ from eric7.EricWidgets.EricApplication import ericApp from eric7.EricWidgets.EricIconBar import EricIconBar -# TODO: eliminate ProjectBrowserFlags -from eric7.Project.ProjectBrowserFlags import ( - AllBrowsersFlag, - FormsBrowserFlag, - InterfacesBrowserFlag, - OthersBrowserFlag, - ProtocolsBrowserFlag, - ResourcesBrowserFlag, - SourcesBrowserFlag, - TranslationsBrowserFlag, -) from eric7.QScintilla.Shell import ShellHistoryStyle from eric7.Utilities.crypto import pwConvert from eric7.Utilities.crypto.py3PBKDF2 import hashPassword @@ -775,95 +764,55 @@ "Workspace": "", } - # defaults for the project browser flags settings - # TODO: change this to 'projectBrowserTypesDefaults - # all without 'interfaces' and 'protocols' - projectBrowserFlagsDefaults = { + # defaults for the project browser lists settings + projectBrowsersDefaults = { + "allBrowsers": ( + "sources", "forms", "resources", "translations", "others", + "interfaces", "protocols", + ), "PyQt5": ( - SourcesBrowserFlag - | FormsBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "forms", "resources", "translations", "others", + "interfaces", "protocols", ), "PyQt5C": ( - SourcesBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "resources", "translations", "others", + "interfaces", "protocols", ), "PyQt6": ( - SourcesBrowserFlag - | FormsBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "forms", "translations", "others", + "interfaces", "protocols", ), "PyQt6C": ( - SourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "translations", "others", + "interfaces", "protocols", ), "E7Plugin": ( - SourcesBrowserFlag - | FormsBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "forms", "translations", "others", + "interfaces", "protocols", ), "Console": ( - SourcesBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "others", + "interfaces", "protocols", ), "Other": ( - SourcesBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "others", + "interfaces", "protocols", ), "PySide2": ( - SourcesBrowserFlag - | FormsBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "forms", "resources", "translations", "others", + "interfaces", "protocols", ), "PySide2C": ( - SourcesBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "resources", "translations", "others", + "interfaces", "protocols", ), "PySide6": ( - SourcesBrowserFlag - | FormsBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "forms", "resources", "translations", "others", + "interfaces", "protocols", ), "PySide6C": ( - SourcesBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag + "sources", "resources", "translations", "others", + "interfaces", "protocols", ), } @@ -2660,30 +2609,33 @@ Prefs.settings.setValue("Project/" + key, value) -# TODO: change this to use the type names -def getProjectBrowserFlags(key): +def getProjectBrowsers(key): """ - Module function to retrieve the various project browser flags settings. - - @param key the key of the value to get - @return the requested project setting + Function to retrieve the enabled project browsers per project type. + + @param key project type + @type str + @return list of enabled project browsers + @rtype list of str """ try: - default = Prefs.projectBrowserFlagsDefaults[key] + default = list(Prefs.projectBrowsersDefaults[key][:]) except KeyError: - default = AllBrowsersFlag - - return int(Prefs.settings.value("Project/BrowserFlags/" + key, default)) - - -def setProjectBrowserFlags(key, value): + default = list(Prefs.projectBrowsersDefaults["allBrowsers"][:]) + + return toList(Prefs.settings.value("Project/BrowsersEnabled/" + key, default)) + + +def setProjectBrowsers(key, value): """ - Module function to store the various project browser flags settings. - - @param key the key of the setting to be set - @param value the value to be set + Function to store the enabled project browsers per project type. + + @param key project type + @type str + @param value list of enabled project browsers + @type list of str """ - Prefs.settings.setValue("Project/BrowserFlags/" + key, value) + Prefs.settings.setValue("Project/BrowsersEnabled/" + key, value) def getProjectBrowserColour(key):
--- a/src/eric7/Project/Project.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/Project.py Thu Nov 24 11:51:40 2022 +0100 @@ -2324,7 +2324,7 @@ for fileCategory in self.getFileCategories(): if fn in self.__pdata[fileCategory]: self.__pdata[fileCategory].remove(fn) - self.projectFileRemoved(fn, fileCategory) + self.projectFileRemoved.emit(fn, fileCategory) self.setDirty(True) if updateModel: self.__model.removeItem(fn)
--- 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): """
--- a/src/eric7/Project/ProjectBrowserFlags.py Wed Nov 23 16:07:16 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2008 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module defining the project browser flags. -""" - -# TODO: replace these by well defined strings -SourcesBrowserFlag = 1 -FormsBrowserFlag = 2 -ResourcesBrowserFlag = 4 -TranslationsBrowserFlag = 8 -InterfacesBrowserFlag = 16 -OthersBrowserFlag = 32 -ProtocolsBrowserFlag = 64 - -AllBrowsersFlag = ( - SourcesBrowserFlag - | FormsBrowserFlag - | ResourcesBrowserFlag - | TranslationsBrowserFlag - | InterfacesBrowserFlag - | OthersBrowserFlag - | ProtocolsBrowserFlag -)
--- a/src/eric7/Project/ProjectBrowserRepositoryItem.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectBrowserRepositoryItem.py Thu Nov 24 11:51:40 2022 +0100 @@ -21,6 +21,7 @@ """ projectBrowser: ProjectBaseBrowser projectBrowserUserString: str + priority: int # should be 0..100 fileCategory: str getIcon: Callable
--- a/src/eric7/Project/ProjectFormsBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectFormsBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -151,6 +151,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Forms Browser"), + priority=75, fileCategory="FORMS", getIcon=self.getIcon, ),
--- a/src/eric7/Project/ProjectInterfacesBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectInterfacesBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -108,6 +108,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Interfaces (IDL) Browser"), + priority=50, fileCategory="INTERFACES", getIcon=self.getIcon, ),
--- a/src/eric7/Project/ProjectOthersBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectOthersBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -88,6 +88,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Others Browser"), + priority=0, fileCategory="OTHERS", getIcon=self.getIcon, ),
--- a/src/eric7/Project/ProjectProtocolsBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectProtocolsBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -102,6 +102,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Protocols (protobuf) Browser"), + priority=50, fileCategory="PROTOCOLS", getIcon=self.getIcon, ),
--- a/src/eric7/Project/ProjectResourcesBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectResourcesBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -97,6 +97,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Resources Browser"), + priority=75, fileCategory="RESOURCES", getIcon=self.getIcon, ),
--- a/src/eric7/Project/ProjectSourcesBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectSourcesBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -98,6 +98,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Sources Browser"), + priority=100, fileCategory="SOURCES", getIcon=self.getIcon, ), @@ -139,7 +140,27 @@ @return icon for the browser @rtype QIcon """ - return EricPixmapCache.getIcon("projectSources") + 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") + + return icon def __closeAllWindows(self): """
--- a/src/eric7/Project/ProjectTranslationsBrowser.py Wed Nov 23 16:07:16 2022 +0100 +++ b/src/eric7/Project/ProjectTranslationsBrowser.py Thu Nov 24 11:51:40 2022 +0100 @@ -108,6 +108,7 @@ ProjectBrowserRepositoryItem( projectBrowser=self, projectBrowserUserString=self.tr("Translations Browser"), + priority=75, fileCategory="TRANSLATIONS", getIcon=self.getIcon, ),