Source code for qrainbowstyle.windows.base.Buttons

from qtpy.QtWidgets import QWidget, QSizePolicy, QHBoxLayout, QToolButton, QLabel, QPushButton
from qtpy.QtGui import QRegion
from qtpy.QtCore import Qt, QSize, QRect

import qrainbowstyle








[docs]class TitlebarWindowsButton(QPushButton): def __init__(self, parent): super(TitlebarWindowsButton, self).__init__(parent) iconsize = QSize(45, 30) self.setIconSize(iconsize) self.setMinimumSize(iconsize) self.setText("") self.setEnabled(True) self.setAutoFillBackground(True) self.setChecked(False) self.setMouseTracking(True) sizepolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizepolicy.setHorizontalStretch(0) sizepolicy.setVerticalStretch(0) sizepolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizepolicy)
[docs]class MinimizeWindowsButton(TitlebarWindowsButton): def __init__(self, parent=None): super(MinimizeWindowsButton, self).__init__(parent)
[docs]class MaximizeWindowsButton(TitlebarWindowsButton): def __init__(self, parent=None): super(MaximizeWindowsButton, self).__init__(parent)
[docs]class RestoreWindowsButton(TitlebarWindowsButton): def __init__(self, parent=None): super(RestoreWindowsButton, self).__init__(parent)
[docs]class CloseWindowsButton(TitlebarWindowsButton): def __init__(self, parent=None): super(CloseWindowsButton, self).__init__(parent)
[docs]class CloseSquareWindowsButton(TitlebarWindowsButton): def __init__(self, parent=None): super(CloseSquareWindowsButton, self).__init__(parent) iconsize = QSize(30, 30) self.setIconSize(iconsize) self.setMinimumSize(iconsize)
[docs]class TitlebarDarwinButton(QPushButton): def __init__(self, parent): super(TitlebarDarwinButton, self).__init__(parent) self.setIconSize(QSize(15, 15)) self.setMinimumSize(QSize(15, 15)) self.setAutoFillBackground(True) self.setMouseTracking(True) sizepolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizepolicy.setHorizontalStretch(0) sizepolicy.setVerticalStretch(0) sizepolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizepolicy)
[docs]class MinimizeDarwinButton(TitlebarDarwinButton): def __init__(self, parent=None): super(MinimizeDarwinButton, self).__init__(parent)
[docs]class MaximizeDarwinButton(TitlebarDarwinButton): def __init__(self, parent=None): super(MaximizeDarwinButton, self).__init__(parent)
[docs]class RestoreDarwinButton(TitlebarDarwinButton): def __init__(self, parent=None): super(RestoreDarwinButton, self).__init__(parent)
[docs]class CloseDarwinButton(TitlebarDarwinButton): def __init__(self, parent=None): super(CloseDarwinButton, self).__init__(parent)
[docs]class ButtonsWidget(QWidget): """Widget with titlebar buttons""" def __init__(self, parent): super(ButtonsWidget, self).__init__(parent) self.setObjectName("buttonsWidget") self.setContentsMargins(0, 0, 0, 0) sizepolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizepolicy.setHorizontalStretch(0) sizepolicy.setVerticalStretch(0) sizepolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizepolicy) self.setStyleSheet("padding: 0px;") self.buttonsLayout = QHBoxLayout(self) self.buttonsLayout.setContentsMargins(0, 0, 0, 0) self.buttonsLayout.setSpacing(0) self.buttonsLayout.setAlignment(Qt.AlignVCenter) self.setLayout(self.buttonsLayout) if qrainbowstyle.USE_DARWIN_BUTTONS: self.btnMinimize = MinimizeDarwinButton(self) self.btnMaximize = MaximizeDarwinButton(self) self.btnRestore = RestoreDarwinButton(self) self.btnClose = CloseDarwinButton(self) else: self.btnMinimize = MinimizeWindowsButton(self) self.btnMaximize = MaximizeWindowsButton(self) self.btnRestore = RestoreWindowsButton(self) self.btnClose = CloseWindowsButton(self) if qrainbowstyle.ALIGN_BUTTONS_LEFT: self.buttonsLayout.addWidget(self.btnClose) if not qrainbowstyle.USE_DARWIN_BUTTONS: self.buttonsLayout.addWidget(self.btnRestore) self.buttonsLayout.addWidget(self.btnMinimize) self.buttonsLayout.addWidget(self.btnMaximize) else: self.buttonsLayout.addWidget(self.btnMinimize) self.buttonsLayout.addWidget(self.btnMaximize) if not qrainbowstyle.USE_DARWIN_BUTTONS: self.buttonsLayout.addWidget(self.btnRestore) self.buttonsLayout.addWidget(self.btnClose) self.btnMinimize.setObjectName("btnMinimize") self.btnMaximize.setObjectName("btnMaximize") if not qrainbowstyle.USE_DARWIN_BUTTONS: self.btnRestore.setObjectName("btnRestore") self.btnClose.setObjectName("btnClose") if qrainbowstyle.USE_DARWIN_BUTTONS: self.buttonsLayout.setSpacing(8)