76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
from PySide6.QtCore import Qt, QSize
|
|
from PySide6.QtGui import QFont
|
|
from PySide6.QtWidgets import (
|
|
QDialog,
|
|
QWidget,
|
|
QLabel,
|
|
QVBoxLayout,
|
|
QHBoxLayout,
|
|
QPushButton,
|
|
QSpacerItem,
|
|
QSizePolicy,
|
|
)
|
|
|
|
|
|
class ConfirmDialog(QDialog):
|
|
def __init__(
|
|
self,
|
|
title: str,
|
|
message: str,
|
|
confirm_text: str,
|
|
ok_object_name: str | None = None,
|
|
):
|
|
super().__init__()
|
|
self.setObjectName("ConfirmDialog")
|
|
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog)
|
|
self.setWindowModality(Qt.ApplicationModal)
|
|
self.setAttribute(Qt.WA_TranslucentBackground)
|
|
self.setMinimumSize(QSize(1024, 600))
|
|
|
|
root = QVBoxLayout(self)
|
|
root.setContentsMargins(24, 24, 24, 24)
|
|
root.setSpacing(16)
|
|
|
|
root.addItem(QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding))
|
|
|
|
card = QWidget()
|
|
card.setObjectName("ConfirmCard")
|
|
card_layout = QVBoxLayout(card)
|
|
card_layout.setContentsMargins(18, 18, 18, 18)
|
|
card_layout.setSpacing(12)
|
|
|
|
title_lbl = QLabel(title)
|
|
title_lbl.setObjectName("ConfirmTitle")
|
|
title_lbl.setFont(QFont("", 20, 700))
|
|
|
|
msg_lbl = QLabel(message)
|
|
msg_lbl.setObjectName("ConfirmMessage")
|
|
msg_lbl.setFont(QFont("", 14, 500))
|
|
msg_lbl.setWordWrap(True)
|
|
|
|
actions = QHBoxLayout()
|
|
actions.setContentsMargins(0, 0, 0, 0)
|
|
actions.setSpacing(12)
|
|
|
|
cancel_btn = QPushButton("Отмена")
|
|
cancel_btn.setObjectName("ConfirmCancel")
|
|
cancel_btn.setMinimumHeight(50)
|
|
cancel_btn.setFont(QFont("", 14, 700))
|
|
cancel_btn.clicked.connect(self.reject)
|
|
|
|
ok_btn = QPushButton(confirm_text)
|
|
ok_btn.setObjectName(ok_object_name or "ConfirmOk")
|
|
ok_btn.setMinimumHeight(50)
|
|
ok_btn.setFont(QFont("", 14, 700))
|
|
ok_btn.clicked.connect(self.accept)
|
|
|
|
actions.addWidget(cancel_btn, 1)
|
|
actions.addWidget(ok_btn, 1)
|
|
|
|
card_layout.addWidget(title_lbl)
|
|
card_layout.addWidget(msg_lbl)
|
|
card_layout.addLayout(actions)
|
|
|
|
root.addWidget(card)
|
|
root.addItem(QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding))
|