Source code for cgl.ui.widgets.button

import os

from PySide6 import QtCore, QtGui, QtWidgets

from cgl.core.config.query import AlchemyConfigManager

CFG = AlchemyConfigManager()


[docs] class HoverButton(QtWidgets.QToolButton): def __init__(self, *icon, parent=None): super(HoverButton, self).__init__(parent) self.icon = QtGui.QIcon(CFG.get_icon_path(*icon)) self.hovered_icon = self.get_hovered_icon(*icon) self.setIcon(self.icon) # self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) # Add this line
[docs] def enterEvent(self, event): self.setIcon(self.hovered_icon)
[docs] def leaveEvent(self, event): self.setIcon(self.icon)
[docs] def get_hovered_icon(self, *icon): # construct the hovered icon name icon_path = CFG.get_icon_path(*icon) base, ext = os.path.splitext(icon_path) hovered_icon_path = f"{base}_hover{ext}" # if the hovered icon file exists, use it, otherwise use the regular icon if os.path.isfile(hovered_icon_path): # print(hovered_icon_path) return QtGui.QIcon(hovered_icon_path) else: return QtGui.QIcon(icon_path)
[docs] class LJButton(QtWidgets.QPushButton): def __init__(self, parent=None): QtWidgets.QPushButton.__init__(self, parent) self.setProperty("class", "basic")
[docs] class VersionButton(LJButton): empty_version_up = QtCore.Signal() selected_version_up = QtCore.Signal() def __init__(self, parent): LJButton.__init__(self, parent) self.menu = QtWidgets.QMenu() self.setText("New Version") self.empty_act = self.menu.addAction("New Empty Version") self.empty_act.setToolTip("Create a new empty version") self.empty_act.triggered.connect(lambda: self.empty_version_up.emit()) self.selected_act = self.menu.addAction("New Version From Selected") self.selected_act.setToolTip( "Create a new version copying from current version" ) self.selected_act.triggered.connect(lambda: self.selected_version_up.emit()) # self.latest_act = self.menu.addAction(self.tr("Copy Latest Version")) # self.latest_act.triggered.connect(lambda: self.parent().copy_latest_version.emit()) # self.latest_act.setToolTip(self.tr("Create a new version copying from the latest version")) self.setMenu(self.menu)
[docs] def set_new_version(self): self.selected_act.setVisible(False) self.latest_act.setVisible(False) self.setEnabled(True)
[docs] def set_version_selected(self): self.selected_act.setVisible(True) self.latest_act.setVisible(True) self.setEnabled(True)