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