diff -r 157f119cd10d -r fb7b78071ee8 src/eric7/WebBrowser/TabManager/TabManagerWidget.py --- a/src/eric7/WebBrowser/TabManager/TabManagerWidget.py Sun Jan 07 12:40:28 2024 +0100 +++ b/src/eric7/WebBrowser/TabManager/TabManagerWidget.py Sun Jan 07 14:20:24 2024 +0100 @@ -13,6 +13,7 @@ # import collections +import enum import os from PyQt6.QtCore import QPoint, QRect, Qt, QTimer, pyqtSignal, pyqtSlot @@ -33,22 +34,31 @@ from eric7.EricWidgets.EricClickableLabel import EricClickableLabel +class TabGroupByType(enum.Enum): + """ + Class defining the supported "Group By" types. + """ + + Window = 0 + Domain = 1 + Host = 2 + + +TabGroupByDefaultType = TabGroupByType.Window + + class TabManagerWidget(QWidget): """ Class implementing a window for managing the web browser tabs. - @signal groupTypeChanged(int) emitted when the 'Group By' value was changed + @signal groupTypeChanged(TabGroupByType) emitted when the 'Group By' value + was changed """ - # TODO: change this to an enum - GroupByWindow = 0 - GroupByDomain = 1 - GroupByHost = 2 - WebBrowserRole = Qt.ItemDataRole.UserRole + 1 WebWindowRole = Qt.ItemDataRole.UserRole + 2 - groupTypeChanged = pyqtSignal(int) + groupTypeChanged = pyqtSignal(TabGroupByType) _tldExtractor = None @@ -83,7 +93,13 @@ self.__refreshBlocked = False self.__waitForRefresh = False self.__isDefaultWidget = defaultWidget - self.__groupType = Preferences.getWebBrowser("TabManagerGroupByType") + try: + self.__groupType = TabGroupByType( + Preferences.getWebBrowser("TabManagerGroupByType") + ) + except ValueError: + # use default + self.__groupType = TabGroupByDefaultType if TabManagerWidget._tldExtractor is None: TabManagerWidget._tldExtractor = EricTldExtractor.instance() @@ -154,7 +170,7 @@ @type int (0 - 2) """ self.__groupType = groupType - Preferences.setWebBrowser("TabManagerGroupByType", groupType) + Preferences.setWebBrowser("TabManagerGroupByType", groupType.value) def domainFromUrl(self, url, useHostName=False): """ @@ -381,13 +397,13 @@ self.__tree.clear() - if self.__groupType == TabManagerWidget.GroupByHost: + if self.__groupType == TabGroupByType.Host: self.__groupByDomainName(True) - elif self.__groupType == TabManagerWidget.GroupByDomain: + elif self.__groupType == TabGroupByType.Domain: self.__groupByDomainName() else: # default is group by window - self.__setGroupType(TabManagerWidget.GroupByWindow) + self.__setGroupType(TabGroupByType.Window) self.__groupByWindow() # restore selected items @@ -505,19 +521,19 @@ menu = QMenu() groupTypeSubMenu = QMenu(self.tr("Group by")) act = groupTypeSubMenu.addAction(self.tr("&Window")) - act.setData(TabManagerWidget.GroupByWindow) + act.setData(TabGroupByType.Window) act.setCheckable(True) - act.setChecked(self.__groupType == TabManagerWidget.GroupByWindow) + act.setChecked(self.__groupType == TabGroupByType.Window) act = groupTypeSubMenu.addAction(self.tr("&Domain")) - act.setData(TabManagerWidget.GroupByDomain) + act.setData(TabGroupByType.Domain) act.setCheckable(True) - act.setChecked(self.__groupType == TabManagerWidget.GroupByDomain) + act.setChecked(self.__groupType == TabGroupByType.Domain) act = groupTypeSubMenu.addAction(self.tr("&Host")) - act.setData(TabManagerWidget.GroupByHost) + act.setData(TabGroupByType.Host) act.setCheckable(True) - act.setChecked(self.__groupType == TabManagerWidget.GroupByHost) + act.setChecked(self.__groupType == TabGroupByType.Host) groupTypeSubMenu.triggered.connect(self.changeGroupType) menu.addMenu(groupTypeSubMenu)