--- /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()