from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMessageBox

from bauh.core import resource


def show_error(title: str, body: str, icon: QIcon = QIcon(resource.get_path('img/logo.svg'))):
    error_msg = QMessageBox()
    error_msg.setIcon(QMessageBox.Critical)
    error_msg.setWindowTitle(title)
    error_msg.setText(body)

    if icon:
        error_msg.setWindowIcon(icon)

    error_msg.exec_()


def show_warning(title: str, body: str, icon: QIcon = QIcon(resource.get_path('img/logo.svg'))):
    msg = QMessageBox()
    msg.setIcon(QMessageBox.Warning)
    msg.setWindowTitle(title)
    msg.setText(body)

    if icon:
        msg.setWindowIcon(icon)

    msg.exec_()


def ask_confirmation(title: str, body: str, locale_keys: dict, icon: QIcon = QIcon(resource.get_path('img/logo.svg'))):
    dialog_confirmation = QMessageBox()
    dialog_confirmation.setIcon(QMessageBox.Question)
    dialog_confirmation.setWindowTitle(title)
    dialog_confirmation.setText(body)
    dialog_confirmation.setStyleSheet('QLabel { margin-right: 25px; }')

    bt_yes = dialog_confirmation.addButton(locale_keys['popup.button.yes'], QMessageBox.YesRole)
    dialog_confirmation.addButton(locale_keys['popup.button.no'], QMessageBox.NoRole)

    if icon:
        dialog_confirmation.setWindowIcon(icon)

    dialog_confirmation.exec_()

    return dialog_confirmation.clickedButton() == bt_yes
