93 lines
2.9 KiB
Python
93 lines
2.9 KiB
Python
# coding:utf-8
|
|
from PySide6.QtCore import Qt, Signal
|
|
from PySide6.QtGui import QColor
|
|
from PySide6.QtWidgets import QFrame, QVBoxLayout, QHBoxLayout, QPushButton
|
|
|
|
from ...common.style_sheet import FluentStyleSheet
|
|
from ..widgets.button import PrimaryPushButton
|
|
|
|
from .mask_dialog_base import MaskDialogBase
|
|
|
|
|
|
class MessageBoxBase(MaskDialogBase):
|
|
""" Message box base """
|
|
|
|
def __init__(self, parent=None):
|
|
super().__init__(parent=parent)
|
|
self.buttonGroup = QFrame(self.widget)
|
|
self.yesButton = PrimaryPushButton(self.tr('OK'), self.buttonGroup)
|
|
self.cancelButton = QPushButton(self.tr('Cancel'), self.buttonGroup)
|
|
|
|
self.vBoxLayout = QVBoxLayout(self.widget)
|
|
self.viewLayout = QVBoxLayout()
|
|
self.buttonLayout = QHBoxLayout(self.buttonGroup)
|
|
|
|
self.__initWidget()
|
|
|
|
def __initWidget(self):
|
|
self.__setQss()
|
|
self.__initLayout()
|
|
|
|
self.setShadowEffect(60, (0, 10), QColor(0, 0, 0, 50))
|
|
self.setMaskColor(QColor(0, 0, 0, 76))
|
|
|
|
# fixes https://github.com/zhiyiYo/PyQt-Fluent-Widgets/issues/19
|
|
self.yesButton.setAttribute(Qt.WA_LayoutUsesWidgetRect)
|
|
self.cancelButton.setAttribute(Qt.WA_LayoutUsesWidgetRect)
|
|
|
|
self.yesButton.setAttribute(Qt.WA_MacShowFocusRect, False)
|
|
|
|
self.yesButton.setFocus()
|
|
self.buttonGroup.setFixedHeight(81)
|
|
|
|
self.yesButton.clicked.connect(self.__onYesButtonClicked)
|
|
self.cancelButton.clicked.connect(self.__onCancelButtonClicked)
|
|
|
|
def __initLayout(self):
|
|
self._hBoxLayout.removeWidget(self.widget)
|
|
self._hBoxLayout.addWidget(self.widget, 1, Qt.AlignCenter)
|
|
|
|
self.vBoxLayout.setSpacing(0)
|
|
self.vBoxLayout.setContentsMargins(0, 0, 0, 0)
|
|
self.vBoxLayout.addLayout(self.viewLayout, 1)
|
|
self.vBoxLayout.addWidget(self.buttonGroup, 0, Qt.AlignBottom)
|
|
|
|
self.viewLayout.setSpacing(12)
|
|
self.viewLayout.setContentsMargins(24, 24, 24, 24)
|
|
|
|
self.buttonLayout.setSpacing(12)
|
|
self.buttonLayout.setContentsMargins(24, 24, 24, 24)
|
|
self.buttonLayout.addWidget(self.yesButton, 1, Qt.AlignVCenter)
|
|
self.buttonLayout.addWidget(self.cancelButton, 1, Qt.AlignVCenter)
|
|
|
|
def validate(self) -> bool:
|
|
""" validate the data of form before closing dialog
|
|
|
|
Returns
|
|
-------
|
|
isValid: bool
|
|
whether the data of form is legal
|
|
"""
|
|
return True
|
|
|
|
def __onCancelButtonClicked(self):
|
|
self.reject()
|
|
|
|
def __onYesButtonClicked(self):
|
|
if self.validate():
|
|
self.accept()
|
|
|
|
def __setQss(self):
|
|
self.buttonGroup.setObjectName('buttonGroup')
|
|
self.cancelButton.setObjectName('cancelButton')
|
|
FluentStyleSheet.DIALOG.apply(self)
|
|
|
|
def hideYesButton(self):
|
|
self.yesButton.hide()
|
|
self.buttonLayout.insertStretch(0, 1)
|
|
|
|
def hideCancelButton(self):
|
|
self.cancelButton.hide()
|
|
self.buttonLayout.insertStretch(0, 1)
|
|
|