src/eric7/EricWidgets/EricToolBarManager.py

branch
eric7
changeset 10278
e26fa3b06f4f
parent 9695
ad962e9b904d
child 10373
093dcebe5ecb
diff -r e3d7e0cc0e6a -r e26fa3b06f4f src/eric7/EricWidgets/EricToolBarManager.py
--- a/src/eric7/EricWidgets/EricToolBarManager.py	Thu Nov 02 16:01:14 2023 +0100
+++ b/src/eric7/EricWidgets/EricToolBarManager.py	Thu Nov 02 16:43:22 2023 +0100
@@ -7,10 +7,20 @@
 Module implementing a toolbar manager class.
 """
 
-from PyQt6.QtCore import QByteArray, QDataStream, QIODevice, QObject
-from PyQt6.QtWidgets import QToolBar
+import contextlib
 
-from eric7 import Utilities
+from PyQt6.QtCore import (
+    QByteArray,
+    QCoreApplication,
+    QDataStream,
+    QIODevice,
+    QObject,
+    QSize,
+    pyqtSlot,
+)
+from PyQt6.QtWidgets import QStyle, QToolBar
+
+from eric7 import Preferences, Utilities
 
 
 class EricToolBarManager(QObject):
@@ -22,6 +32,27 @@
     ToolBarMarker = 0xFEFE
     CustomToolBarMarker = 0xFDFD
 
+    IconSizes = {
+        # tuples with (icon size, translated size string)
+        "": (
+            0,
+            QCoreApplication.translate(
+                "EricToolBarManager", "default (style dependent)"
+            ),
+        ),
+        "xs": (
+            16,
+            QCoreApplication.translate("EricToolBarManager", "extra small (16 px)"),
+        ),
+        "sm": (22, QCoreApplication.translate("EricToolBarManager", "small (22 px)")),
+        "md": (32, QCoreApplication.translate("EricToolBarManager", "medium (32 px)")),
+        "lg": (48, QCoreApplication.translate("EricToolBarManager", "large (48 px)")),
+        "xl": (
+            64,
+            QCoreApplication.translate("EricToolBarManager", "extra large (64 px)"),
+        ),
+    }
+
     def __init__(self, ui=None, parent=None):
         """
         Constructor
@@ -145,6 +176,12 @@
         if toolBar is None:
             return
 
+        iconSizeStr = Preferences.getIcons("IconSize")
+        if iconSizeStr:
+            with contextlib.suppress(KeyError):
+                iconSize = EricToolBarManager.IconSizes[iconSizeStr][0]
+                toolBar.setIconSize(QSize(iconSize, iconSize))
+
         newActions = []
         newActionsWithSeparators = []
         actions = toolBar.actions()
@@ -717,3 +754,30 @@
         if tbID not in self.__defaultToolBars:
             return []
         return self.__defaultToolBars[tbID][:]
+
+    @pyqtSlot()
+    def preferencesChanged(self):
+        """
+        Public slot to handle a change of preferences.
+        """
+        iconSizeStr = Preferences.getIcons("IconSize")
+        if iconSizeStr:
+            try:
+                iconSize = EricToolBarManager.IconSizes[iconSizeStr][0]
+            except KeyError:
+                # determine icon size through the style
+                iconSize = (
+                    list(self.__allToolBars.items()[0])
+                    .style()
+                    .pixelMetric(QStyle.PixelMetric.PM_ToolBarIconSize)
+                )
+        else:
+            # determine icon size through the style
+            iconSize = (
+                list(self.__allToolBars.values())[0]
+                .style()
+                .pixelMetric(QStyle.PixelMetric.PM_ToolBarIconSize)
+            )
+
+        for tbID in self.__allToolBars:
+            self.__allToolBars[tbID].setIconSize(QSize(iconSize, iconSize))

eric ide

mercurial