src/eric7/WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py

branch
eric7
changeset 11105
ec86fc991d28
parent 11102
ceabb30155b8
--- a/src/eric7/WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py	Wed Dec 18 17:40:14 2024 +0100
+++ b/src/eric7/WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py	Wed Dec 18 18:03:07 2024 +0100
@@ -11,6 +11,7 @@
 
 from PyQt6.QtCore import Qt, pyqtSlot
 from PyQt6.QtWidgets import QAbstractItemView, QDialog, QTreeWidget, QTreeWidgetItem
+
 try:
     # Qt 6.8+
     from PyQt6.QtWebEngineCore import QWebEnginePermission
@@ -178,7 +179,9 @@
             # Qt 6.8+
             self.clipboardList = QTreeWidget()
             self.clipboardList.setAlternatingRowColors(True)
-            self.clipboardList.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
+            self.clipboardList.setSelectionMode(
+                QAbstractItemView.SelectionMode.ExtendedSelection
+            )
             self.clipboardList.setRootIsDecorated(False)
             self.clipboardList.setItemsExpandable(False)
             self.clipboardList.setAllColumnsShowFocus(True)
@@ -187,12 +190,16 @@
             self.clipboardList.headerItem().setText(0, self.tr("Host"))
             self.clipboardList.headerItem().setText(1, self.tr("Permission"))
             self.tabWidget.addTab(
-                self.clipboardList, EricPixmapCache.getIcon("clipboard"), self.tr("Clipboard")
+                self.clipboardList,
+                EricPixmapCache.getIcon("clipboard"),
+                self.tr("Clipboard"),
             )
 
             self.localFontsList = QTreeWidget()
             self.localFontsList.setAlternatingRowColors(True)
-            self.localFontsList.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
+            self.localFontsList.setSelectionMode(
+                QAbstractItemView.SelectionMode.ExtendedSelection
+            )
             self.localFontsList.setRootIsDecorated(False)
             self.localFontsList.setItemsExpandable(False)
             self.localFontsList.setAllColumnsShowFocus(True)
@@ -201,7 +208,9 @@
             self.localFontsList.headerItem().setText(0, self.tr("Host"))
             self.localFontsList.headerItem().setText(1, self.tr("Permission"))
             self.tabWidget.addTab(
-                self.localFontsList, EricPixmapCache.getIcon("font"), self.tr("Local Fonts")
+                self.localFontsList,
+                EricPixmapCache.getIcon("font"),
+                self.tr("Local Fonts"),
             )
 
         self.setTabOrder(self.tabWidget, self.notifList)
@@ -223,67 +232,92 @@
 
         if QtUtilities.qVersionTuple() >= (6, 8, 0):
             # Qt 6.8+
-            self.__permissionStrings = {
-                QWebEnginePermission.State.Granted: self.tr("Allow"),
-                QWebEnginePermission.State.Denied: self.tr("Deny"),
-                QWebEnginePermission.State.Ask: self.tr("Always Ask"),
-                QWebEnginePermission.State.Invalid: self.tr("Invalid"),
-            }
-
-            self.__permissionsLists = {
-                QWebEnginePermission.PermissionType.Geolocation: self.geoList,
-                QWebEnginePermission.PermissionType.MediaAudioCapture: self.micList,
-                QWebEnginePermission.PermissionType.MediaVideoCapture: self.camList,
-                QWebEnginePermission.PermissionType.MediaAudioVideoCapture: self.micCamList,
-                QWebEnginePermission.PermissionType.MouseLock: self.mouseLockList,
-                QWebEnginePermission.PermissionType.DesktopVideoCapture: self.deskVidList,
-                QWebEnginePermission.PermissionType.DesktopAudioVideoCapture: self.deskAudVidList,
-                QWebEnginePermission.PermissionType.Notifications: self.notifList,
-                QWebEnginePermission.PermissionType.ClipboardReadWrite: self.clipboardList,
-                QWebEnginePermission.PermissionType.LocalFontsAccess: self.localFontsList,
-            }
-
-            for permission in featurePermissions:
-                with contextlib.suppress(KeyError):
-                    permissionsList = self.__permissionsLists[permission.permissionType()]
-                    itm = QTreeWidgetItem(
-                        permissionsList, [
-                            permission.origin().toString(),
-                            self.__permissionStrings[permission.state()],
-                        ]
-                    )
-                    itm.setData(0, Qt.ItemDataRole.UserRole, permission)
+            self.__initializePermissionsList_qt68(featurePermissions)
         else:
             # Qt <6.8
-            self.__permissionStrings = {
-                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: self.tr("Allow"),
-                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: self.tr("Deny"),
-            }
-
-            self.__permissionsLists = {
-                QWebEnginePage.Feature.Geolocation: self.geoList,
-                QWebEnginePage.Feature.MediaAudioCapture: self.micList,
-                QWebEnginePage.Feature.MediaVideoCapture: self.camList,
-                QWebEnginePage.Feature.MediaAudioVideoCapture: self.micCamList,
-                QWebEnginePage.Feature.MouseLock: self.mouseLockList,
-                QWebEnginePage.Feature.DesktopVideoCapture: self.deskVidList,
-                QWebEnginePage.Feature.DesktopAudioVideoCapture: self.deskAudVidList,
-                QWebEnginePage.Feature.Notifications: self.notifList,
-            }
-
-            for feature, permissionsList in self.__permissionsLists.items():
-                for permission in featurePermissions[feature]:
-                    for host in featurePermissions[feature][permission]:
-                        itm = QTreeWidgetItem(
-                            permissionsList, [host, self.__permissionStrings[permission]]
-                        )
-                        itm.setData(0, Qt.ItemDataRole.UserRole, permission)
+            self.__initializePermissionsList_qt67(featurePermissions)
 
         self.__removedPermissions = []
         self.__previousCurrent = -1
         self.tabWidget.currentChanged.connect(self.__currentTabChanged)
         self.tabWidget.setCurrentIndex(0)
 
+    def __initializePermissionsList_qt68(self, permissions):
+        """
+        Private method to initialize the permission lists for Qt 6.8+.
+
+        @param permissions list of permission objects
+        @type list of QWebEnginePermission
+        """
+        self.__permissionStrings = {
+            QWebEnginePermission.State.Granted: self.tr("Allow"),
+            QWebEnginePermission.State.Denied: self.tr("Deny"),
+            QWebEnginePermission.State.Ask: self.tr("Always Ask"),
+            QWebEnginePermission.State.Invalid: self.tr("Invalid"),
+        }
+
+        self.__permissionsLists = {
+            QWebEnginePermission.PermissionType.Geolocation: self.geoList,
+            QWebEnginePermission.PermissionType.MediaAudioCapture: self.micList,
+            QWebEnginePermission.PermissionType.MediaVideoCapture: self.camList,
+            QWebEnginePermission.PermissionType.MediaAudioVideoCapture: self.micCamList,
+            QWebEnginePermission.PermissionType.MouseLock: self.mouseLockList,
+            QWebEnginePermission.PermissionType.DesktopVideoCapture: self.deskVidList,
+            QWebEnginePermission.PermissionType.DesktopAudioVideoCapture: (
+                self.deskAudVidList
+            ),
+            QWebEnginePermission.PermissionType.Notifications: self.notifList,
+            QWebEnginePermission.PermissionType.ClipboardReadWrite: self.clipboardList,
+            QWebEnginePermission.PermissionType.LocalFontsAccess: self.localFontsList,
+        }
+
+        for permission in permissions:
+            with contextlib.suppress(KeyError):
+                permissionsList = self.__permissionsLists[permission.permissionType()]
+                itm = QTreeWidgetItem(
+                    permissionsList,
+                    [
+                        permission.origin().toString(),
+                        self.__permissionStrings[permission.state()],
+                    ],
+                )
+                itm.setData(0, Qt.ItemDataRole.UserRole, permission)
+        for permissionsList in self.__permissionsLists.values():
+            permissionsList.resizeColumnToContents(0)
+
+    def __initializePermissionsList_qt67(self, permissions):
+        """
+        Private method to initialize the permission lists for Qt <6.8.
+
+        @param permissions dictionary with remembered feature permissions
+        @type dict of dict of list
+        """
+        self.__permissionStrings = {
+            QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: self.tr("Allow"),
+            QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: self.tr("Deny"),
+        }
+
+        self.__permissionsLists = {
+            QWebEnginePage.Feature.Geolocation: self.geoList,
+            QWebEnginePage.Feature.MediaAudioCapture: self.micList,
+            QWebEnginePage.Feature.MediaVideoCapture: self.camList,
+            QWebEnginePage.Feature.MediaAudioVideoCapture: self.micCamList,
+            QWebEnginePage.Feature.MouseLock: self.mouseLockList,
+            QWebEnginePage.Feature.DesktopVideoCapture: self.deskVidList,
+            QWebEnginePage.Feature.DesktopAudioVideoCapture: self.deskAudVidList,
+            QWebEnginePage.Feature.Notifications: self.notifList,
+        }
+
+        for feature, permissionsList in self.__permissionsLists.items():
+            for permission in permissions[feature]:
+                for host in permissions[feature][permission]:
+                    itm = QTreeWidgetItem(
+                        permissionsList,
+                        [host, self.__permissionStrings[permission]],
+                    )
+                    itm.setData(0, Qt.ItemDataRole.UserRole, permission)
+            permissionsList.resizeColumnToContents(0)
+
     @pyqtSlot(int)
     def __currentTabChanged(self, index):
         """

eric ide

mercurial