certflow.widgets.confirm_dialog 源代码
"""统一的「危险操作」二次确认对话框。
替代各视图手写 ``QMessageBox.question`` + 拼预览文本 的重复(query_view 的删除/归档/
导出、correction_queue、print_view 等)。集中危险样式与文案,避免每处各写一遍。
"""
from __future__ import annotations
from PySide6.QtWidgets import QMessageBox, QWidget
[文档]
class ConfirmDialog:
"""危险操作确认助手(静态方法,不持有状态)。"""
[文档]
@classmethod
def danger(
cls,
parent: QWidget | None,
title: str,
message: str,
preview: str | None = None,
ok_text: str = "删除",
ok_default: bool = False,
) -> bool:
"""弹出警告级确认框,返回用户是否确认。
Args:
preview: 可选详细信息(如待删除记录预览),折叠在「显示详情」里。
ok_text: 确认按钮文案(默认「删除」)。
ok_default: 确认按钮是否设为默认焦点(危险操作默认 ``False``,聚焦取消)。
"""
box = QMessageBox(parent)
box.setIcon(QMessageBox.Icon.Warning)
box.setWindowTitle(title)
box.setText(message)
if preview:
box.setDetailedText(preview)
box.setStandardButtons(QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel)
box.button(QMessageBox.StandardButton.Ok).setText(ok_text)
box.button(QMessageBox.StandardButton.Cancel).setText("取消")
default = QMessageBox.StandardButton.Ok if ok_default else QMessageBox.StandardButton.Cancel
box.setDefaultButton(default)
return box.exec() == QMessageBox.StandardButton.Ok