Files
bearhub/bauh/view/qt/dialog.py

62 lines
1.8 KiB
Python

from typing import List
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon, QCursor
from PyQt5.QtWidgets import QMessageBox, QLabel, QWidget, QHBoxLayout
from bauh.api.abstract.view import MessageType
from bauh.view.qt import css
from bauh.view.util import resource
from bauh.view.util.translation import I18n
MSG_TYPE_MAP = {
MessageType.ERROR: QMessageBox.Critical,
MessageType.INFO: QMessageBox.Information,
MessageType.WARNING: QMessageBox.Warning
}
def show_message(title: str, body: str, type_: MessageType, icon: QIcon = QIcon(resource.get_path('img/logo.svg'))):
popup = QMessageBox()
popup.setWindowTitle(title)
popup.setText(body)
popup.setIcon(MSG_TYPE_MAP[type_])
if icon:
popup.setWindowIcon(icon)
popup.exec_()
def ask_confirmation(title: str, body: str, i18n: I18n, icon: QIcon = QIcon(resource.get_path('img/logo.svg')), widgets: List[QWidget] = None):
diag = QMessageBox()
diag.setIcon(QMessageBox.Question)
diag.setWindowTitle(title)
diag.setStyleSheet('QLabel { margin-right: 25px; }')
diag.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint)
wbody = QWidget()
wbody.setLayout(QHBoxLayout())
wbody.layout().addWidget(QLabel(body))
if widgets:
for w in widgets:
wbody.layout().addWidget(w)
diag.layout().addWidget(wbody, 0, 1)
bt_yes = diag.addButton(i18n['popup.button.yes'], QMessageBox.YesRole)
bt_yes.setStyleSheet(css.OK_BUTTON)
bt_yes.setCursor(QCursor(Qt.PointingHandCursor))
diag.setDefaultButton(bt_yes)
bt_no = diag.addButton(i18n['popup.button.no'], QMessageBox.NoRole)
bt_no.setCursor(QCursor(Qt.PointingHandCursor))
if icon:
diag.setWindowIcon(icon)
diag.exec_()
return diag.clickedButton() == bt_yes