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

56 lines
1.5 KiB
Python

from typing import List
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMessageBox, QLabel, QWidget, QHBoxLayout
from bauh.api.abstract.view import MessageType
from bauh.view.util import resource
from bauh.view.qt import css
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, locale_keys: dict, 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; }')
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(locale_keys['popup.button.yes'], QMessageBox.YesRole)
bt_yes.setStyleSheet(css.OK_BUTTON)
diag.addButton(locale_keys['popup.button.no'], QMessageBox.NoRole)
if icon:
diag.setWindowIcon(icon)
diag.exec_()
return diag.clickedButton() == bt_yes