WebBrowser/Navigation/ReloadStopButton.py

changeset 5734
d8b99b5fa673
child 5745
4f4316e83318
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebBrowser/Navigation/ReloadStopButton.py	Sat May 13 12:09:45 2017 +0200
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a button alternating between reload and stop.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt
+from PyQt5.QtWidgets import QToolButton
+
+import UI.PixmapCache
+
+
+class ReloadStopButton(QToolButton):
+    """
+    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(ReloadStopButton, self).__init__(parent)
+        
+        self.setObjectName("navigation_reloadstop_button")
+        self.setToolButtonStyle(Qt.ToolButtonIconOnly)
+        self.setFocusPolicy(Qt.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.png"))
+            self.setToolTip(self.tr("Stop loading"))
+        else:
+            self.setIcon(UI.PixmapCache.getIcon("reload.png"))
+            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