Source code for editor.widgets.basic.button

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QToolButton, QPushButton, QMenu
from editor.common.icon_cache import getThemeIcon

[docs]class CheckableToolButton(QToolButton): def __init__(self, icon): super().__init__() self.setCheckable(True) self.setFocusPolicy(Qt.NoFocus) self.setIcon(getThemeIcon(icon))
[docs]class IconTextToolButton(QPushButton): def __init__(self, text, icon): super().__init__() # self.setCheckable(True) self.setFocusPolicy(Qt.NoFocus) self.setIcon(getThemeIcon(icon)) self.setText(text)
[docs]class ToggleableToolButton(QToolButton): def __init__(self, icon1, icon2): super().__init__() self.icon1 = getThemeIcon(icon1) self.icon2 = getThemeIcon(icon2) # self.setCheckable(True) self.setFocusPolicy(Qt.NoFocus) self.setIcon(self.icon1) self.checked = False self.clicked.connect(self.onButtonClicked)
[docs] def onButtonClicked(self): self.checked = not self.checked if self.checked: self.setIcon(self.icon2) else: self.setIcon(self.icon1)
[docs]class PopupPushButton(QPushButton): def __init__(self, text): super().__init__() self.setObjectName('popup') self.setFocusPolicy(Qt.NoFocus) self.setText(text) # self.pressed.connect(self.showMenu) # self.setPopupMode(QToolButton.MenuButtonPopup)
[docs] def addTestMenu(self): menu = QMenu(self) menu.setAttribute(Qt.WA_TranslucentBackground) menu.setWindowFlag(Qt.FramelessWindowHint, True) act1 = menu.addAction("New") menu.addSeparator() act2 = menu.addAction("Open") act2.setCheckable(True) act2.setChecked(True) act3 = menu.addAction("Quit") act4 = menu.addAction("Long item") if (self.text() == 'build'): act4.setShortcut('Meta+T') act4.triggered.connect(lambda: print('shit')) act4.setShortcutContext(Qt.ApplicationShortcut) act4.setShortcutVisibleInContextMenu(True) submenu = QMenu('test', menu) submenu.setAttribute(Qt.WA_TranslucentBackground) submenu.setWindowFlag(Qt.FramelessWindowHint, True) subact1 = submenu.addAction("New") submenu.addSeparator() menu.addMenu(submenu) submenu.addAction("test") self.setMenu(menu)
[docs]class PopupToolButton(QToolButton): def __init__(self, text): super().__init__() self.setObjectName('popup') self.setFocusPolicy(Qt.NoFocus) self.setCheckable(True) self.setText(text) self.setPopupMode(QToolButton.MenuButtonPopup)
[docs] def addTestMenu(self): menu = QMenu(self) menu.setAttribute(Qt.WA_TranslucentBackground) menu.setWindowFlag(Qt.FramelessWindowHint, True) act1 = menu.addAction("New") menu.addSeparator() act2 = menu.addAction("Open") act2.setCheckable(True) act2.setChecked(True) act3 = menu.addAction("Quit") act4 = menu.addAction("Long item") if (self.text() == 'build'): act4.setShortcut('Meta+T') act4.triggered.connect(lambda: print('shit')) act4.setShortcutContext(Qt.ApplicationShortcut) act4.setShortcutVisibleInContextMenu(True) submenu = QMenu('test', menu) submenu.setAttribute(Qt.WA_TranslucentBackground) submenu.setWindowFlag(Qt.FramelessWindowHint, True) subact1 = submenu.addAction("New") submenu.addSeparator() menu.addMenu(submenu) submenu.addAction("test") self.setMenu(menu)