Source code for stytra.gui.buttons

from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QToolButton
from PyQt5.QtGui import QIcon
import pkg_resources


[docs]def get_icon(icon_name): return QIcon( pkg_resources.resource_filename(__name__, "../icons/" + icon_name + ".svg") )
[docs]class IconButton(QToolButton): def __init__(self, *args, icon_name="", action_name="", **kwargs): super().__init__(*args, **kwargs) self.icon = QIcon( pkg_resources.resource_filename(__name__, "../icons/" + icon_name + ".svg") ) self.setIcon(self.icon) self.setToolTip(action_name) self.setFixedSize(QSize(48, 48)) self.setIconSize(QSize(32, 32))
[docs]class ToggleIconButton(QToolButton): def __init__( self, *args, icon_on="", icon_off=None, action_on="", action_off=None, on=False, **kwargs ): super().__init__(*args, **kwargs) self.icon_on = get_icon(icon_on) if icon_off is not None: self.icon_off = get_icon(icon_off) else: self.icon_off = self.icon_on self.setCheckable(True) self.setChecked(on) self.setIcon(self.icon_on if on else self.icon_off) self.on = on self.action_on = action_on self.action_off = action_off or action_on self.setToolTip(action_on) self.setFixedSize(QSize(48, 48)) self.setIconSize(QSize(32, 32)) self.clicked.connect(self.flip_icon)
[docs] def flip_icon(self, tg): if not tg: self.setIcon(self.icon_off) self.on = False self.setChecked(False) else: self.setIcon(self.icon_on) self.on = True self.setChecked(True) self.setToolTip(self.action_on if self.on else self.action_off)