mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
92 lines
2.5 KiB
Python
92 lines
2.5 KiB
Python
from Qt import QtCore, QtGui, QtWidgets
|
|
from avalon import style
|
|
from pype.api import resources
|
|
|
|
|
|
class MessageWidget(QtWidgets.QWidget):
|
|
|
|
SIZE_W = 300
|
|
SIZE_H = 130
|
|
|
|
closed = QtCore.Signal()
|
|
|
|
def __init__(self, parent=None, messages=[], title="Message"):
|
|
|
|
super(MessageWidget, self).__init__()
|
|
|
|
self._parent = parent
|
|
|
|
# Icon
|
|
if parent and hasattr(parent, 'icon'):
|
|
self.setWindowIcon(parent.icon)
|
|
else:
|
|
icon = QtGui.QIcon(resources.pype_icon_filepath())
|
|
self.setWindowIcon(icon)
|
|
|
|
self.setWindowFlags(
|
|
QtCore.Qt.WindowCloseButtonHint |
|
|
QtCore.Qt.WindowMinimizeButtonHint
|
|
)
|
|
|
|
# Font
|
|
self.font = QtGui.QFont()
|
|
self.font.setFamily("DejaVu Sans Condensed")
|
|
self.font.setPointSize(9)
|
|
self.font.setBold(True)
|
|
self.font.setWeight(50)
|
|
self.font.setKerning(True)
|
|
|
|
# Size setting
|
|
self.resize(self.SIZE_W, self.SIZE_H)
|
|
self.setMinimumSize(QtCore.QSize(self.SIZE_W, self.SIZE_H))
|
|
self.setMaximumSize(QtCore.QSize(self.SIZE_W+100, self.SIZE_H+100))
|
|
|
|
# Style
|
|
self.setStyleSheet(style.load_stylesheet())
|
|
|
|
self.setLayout(self._ui_layout(messages))
|
|
self.setWindowTitle(title)
|
|
|
|
def _ui_layout(self, messages):
|
|
if not messages:
|
|
messages = ["*Misssing messages (This is a bug)*", ]
|
|
|
|
elif not isinstance(messages, (tuple, list)):
|
|
messages = [messages, ]
|
|
|
|
main_layout = QtWidgets.QVBoxLayout(self)
|
|
|
|
labels = []
|
|
for message in messages:
|
|
label = QtWidgets.QLabel(message)
|
|
label.setFont(self.font)
|
|
label.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
|
|
label.setTextFormat(QtCore.Qt.RichText)
|
|
label.setWordWrap(True)
|
|
|
|
labels.append(label)
|
|
main_layout.addWidget(label)
|
|
|
|
btn_close = QtWidgets.QPushButton("Close")
|
|
btn_close.setToolTip('Close this window')
|
|
btn_close.clicked.connect(self.on_close_clicked)
|
|
|
|
btn_group = QtWidgets.QHBoxLayout()
|
|
btn_group.addStretch(1)
|
|
btn_group.addWidget(btn_close)
|
|
|
|
main_layout.addLayout(btn_group)
|
|
|
|
self.labels = labels
|
|
self.btn_group = btn_group
|
|
self.btn_close = btn_close
|
|
self.main_layout = main_layout
|
|
|
|
return main_layout
|
|
|
|
def on_close_clicked(self):
|
|
self.close()
|
|
|
|
def close(self, *args, **kwargs):
|
|
self.closed.emit()
|
|
super(MessageWidget, self).close(*args, **kwargs)
|