from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton

from rare.shared import GlobalSignalsSingleton
from rare.utils.misc import ExitCodes


class DebugSettings(QWidget):
    def __init__(self, parent=None):
        super(DebugSettings, self).__init__(parent=parent)

        self.raise_runtime_exception_button = QPushButton("Raise Exception", self)
        self.raise_runtime_exception_button.clicked.connect(self.raise_exception)
        self.restart_button = QPushButton("Restart", self)
        self.restart_button.clicked.connect(
            lambda: GlobalSignalsSingleton().application.quit.emit(ExitCodes.LOGOUT)
        )
        self.send_notification_button = QPushButton("Notify", self)
        self.send_notification_button.clicked.connect(self.send_notification)

        layout = QVBoxLayout(self)
        layout.addWidget(self.raise_runtime_exception_button)
        layout.addWidget(self.restart_button)
        layout.addWidget(self.send_notification_button)
        layout.addStretch(1)

    def raise_exception(self):
        raise RuntimeError("Debug Crash")

    def send_notification(self):
        GlobalSignalsSingleton().application.notify.emit("Debug", "Test notification")
