"""
Simple UI helpers with PyQt
"""

import sys
from PyQt5 import QtCore, QtGui, QtWidgets


def exception_hook(type, value, traceback):
    """
    Use sys.__excepthook__, the standard hook.
    """
    sys.__excepthook__(type, value, traceback)


def run_simple_button_app(title, actions):
    """

    :param title:
    :param actions:
    :return:
    """
    # fix PyQt5 eating exceptions (see http://stackoverflow.com/q/14493081/1536976)
    sys.excepthook = exception_hook

    # create app
    app = QtWidgets.QApplication([])

    # create single widget
    widget = QtWidgets.QWidget()
    widget.setWindowTitle(title)
    widget.setMinimumSize(200, 200)

    # add actions
    layout = QtWidgets.QVBoxLayout(widget)
    for name, action in actions.items():
        button = QtWidgets.QPushButton(name)
        button.clicked.connect(action)
        layout.addWidget(button)
    layout.addStretch()

    # execute app
    widget.show()
    return app.exec_()