src/eric7/WebBrowser/TabManager/TabManagerWidget.py

branch
eric7
changeset 10487
fb7b78071ee8
parent 10482
72d9b5ea39b4
child 10692
9becf9ca115c
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)

eric ide

mercurial