src/eric7/WebBrowser/Navigation/ReloadStopButton.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/WebBrowser/Navigation/ReloadStopButton.py	Thu Jul 07 11:23:56 2022 +0200
@@ -0,0 +1,77 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a button alternating between reload and stop.
+"""
+
+from PyQt6.QtCore import pyqtSlot, pyqtSignal, Qt
+
+from EricWidgets.EricToolButton import EricToolButton
+
+import UI.PixmapCache
+
+
+class ReloadStopButton(EricToolButton):
+    """
+    Class implementing a button alternating between reload and stop.
+    
+    @signal reloadClicked() emitted to initiate a reload action
+    @signal stopClicked() emitted to initiate a stop action
+    """
+    reloadClicked = pyqtSignal()
+    stopClicked = pyqtSignal()
+    
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super().__init__(parent)
+        
+        self.setObjectName("navigation_reloadstop_button")
+        self.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
+        self.setFocusPolicy(Qt.FocusPolicy.NoFocus)
+        self.setAutoRaise(True)
+        
+        self.__loading = False
+        
+        self.clicked.connect(self.__buttonClicked)
+        
+        self.__updateButton()
+    
+    @pyqtSlot()
+    def __buttonClicked(self):
+        """
+        Private slot handling a user clicking the button.
+        """
+        if self.__loading:
+            self.stopClicked.emit()
+        else:
+            self.reloadClicked.emit()
+    
+    @pyqtSlot()
+    def __updateButton(self):
+        """
+        Private slot to update the button.
+        """
+        if self.__loading:
+            self.setIcon(UI.PixmapCache.getIcon("stopLoading"))
+            self.setToolTip(self.tr("Stop loading"))
+        else:
+            self.setIcon(UI.PixmapCache.getIcon("reload"))
+            self.setToolTip(self.tr("Reload the current screen"))
+    
+    def setLoading(self, loading):
+        """
+        Public method to set the loading state.
+        
+        @param loading flag indicating the new loading state
+        @type bool
+        """
+        self.__loading = loading
+        self.__updateButton()

eric ide

mercurial