mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
Error message box is less creator's specific
This commit is contained in:
parent
0fd5445419
commit
9774c507f2
1 changed files with 57 additions and 48 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import collections
|
||||
import copy
|
||||
from Qt import QtWidgets, QtCore, QtGui
|
||||
|
||||
from openpype import (
|
||||
|
|
@ -224,10 +225,10 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
# Floating publish frame
|
||||
publish_frame = PublishFrame(controller, self.footer_border, self)
|
||||
|
||||
creators_dialog_message_timer = QtCore.QTimer()
|
||||
creators_dialog_message_timer.setInterval(100)
|
||||
creators_dialog_message_timer.timeout.connect(
|
||||
self._on_creators_message_timeout
|
||||
errors_dialog_message_timer = QtCore.QTimer()
|
||||
errors_dialog_message_timer.setInterval(100)
|
||||
errors_dialog_message_timer.timeout.connect(
|
||||
self._on_errors_message_timeout
|
||||
)
|
||||
|
||||
help_btn.clicked.connect(self._on_help_click)
|
||||
|
|
@ -268,16 +269,16 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
"show.card.message", self._on_overlay_message
|
||||
)
|
||||
controller.event_system.add_callback(
|
||||
"instances.collection.failed", self._instance_collection_failed
|
||||
"instances.collection.failed", self._on_creator_error
|
||||
)
|
||||
controller.event_system.add_callback(
|
||||
"instances.save.failed", self._instance_save_failed
|
||||
"instances.save.failed", self._on_creator_error
|
||||
)
|
||||
controller.event_system.add_callback(
|
||||
"instances.remove.failed", self._instance_remove_failed
|
||||
"instances.remove.failed", self._on_creator_error
|
||||
)
|
||||
controller.event_system.add_callback(
|
||||
"instances.create.failed", self._instance_create_failed
|
||||
"instances.create.failed", self._on_creator_error
|
||||
)
|
||||
|
||||
# Store extra header widget for TrayPublisher
|
||||
|
|
@ -325,8 +326,8 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
self._restart_timer = None
|
||||
self._publish_frame_visible = None
|
||||
|
||||
self._creators_messages_to_show = collections.deque()
|
||||
self._creators_dialog_message_timer = creators_dialog_message_timer
|
||||
self._error_messages_to_show = collections.deque()
|
||||
self._errors_dialog_message_timer = errors_dialog_message_timer
|
||||
|
||||
self._set_publish_visibility(False)
|
||||
|
||||
|
|
@ -357,7 +358,10 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
self._update_publish_frame_rect()
|
||||
|
||||
def _on_overlay_message(self, event):
|
||||
self._overlay_object.add_message(event["message"])
|
||||
self._overlay_object.add_message(
|
||||
event["message"],
|
||||
event.get("message_type")
|
||||
)
|
||||
|
||||
def _on_first_show(self):
|
||||
self.resize(self.default_width, self.default_height)
|
||||
|
|
@ -604,37 +608,39 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
0, window_size.height() - height
|
||||
)
|
||||
|
||||
def add_message_dialog(self, title, failed_info):
|
||||
self._creators_messages_to_show.append((title, failed_info))
|
||||
self._creators_dialog_message_timer.start()
|
||||
def add_error_message_dialog(self, title, failed_info, message_start=None):
|
||||
self._error_messages_to_show.append(
|
||||
(title, failed_info, message_start)
|
||||
)
|
||||
self._errors_dialog_message_timer.start()
|
||||
|
||||
def _on_creators_message_timeout(self):
|
||||
if not self._creators_messages_to_show:
|
||||
self._creators_dialog_message_timer.stop()
|
||||
def _on_errors_message_timeout(self):
|
||||
if not self._error_messages_to_show:
|
||||
self._errors_dialog_message_timer.stop()
|
||||
return
|
||||
|
||||
item = self._creators_messages_to_show.popleft()
|
||||
title, failed_info = item
|
||||
dialog = CreatorsErrorMessageBox(title, failed_info, self)
|
||||
item = self._error_messages_to_show.popleft()
|
||||
title, failed_info, message_start = item
|
||||
dialog = ErrorsMessageBox(
|
||||
title, failed_info, message_start, self
|
||||
)
|
||||
dialog.exec_()
|
||||
dialog.deleteLater()
|
||||
|
||||
def _instance_collection_failed(self, event):
|
||||
self.add_message_dialog(event["title"], event["failed_info"])
|
||||
|
||||
def _instance_save_failed(self, event):
|
||||
self.add_message_dialog(event["title"], event["failed_info"])
|
||||
|
||||
def _instance_remove_failed(self, event):
|
||||
self.add_message_dialog(event["title"], event["failed_info"])
|
||||
|
||||
def _instance_create_failed(self, event):
|
||||
self.add_message_dialog(event["title"], event["failed_info"])
|
||||
def _on_creator_error(self, event):
|
||||
new_failed_info = []
|
||||
for item in event["failed_info"]:
|
||||
new_item = copy.deepcopy(item)
|
||||
new_item["label"] = new_item.pop("creator_label")
|
||||
new_item["identifier"] = new_item.pop("creator_identifier")
|
||||
new_failed_info.append(new_item)
|
||||
self.add_error_message_dialog(event["title"], new_failed_info, "Creator:")
|
||||
|
||||
|
||||
class CreatorsErrorMessageBox(ErrorMessageBox):
|
||||
def __init__(self, error_title, failed_info, parent):
|
||||
class ErrorsMessageBox(ErrorMessageBox):
|
||||
def __init__(self, error_title, failed_info, message_start, parent):
|
||||
self._failed_info = failed_info
|
||||
self._message_start = message_start
|
||||
self._info_with_id = [
|
||||
# Id must be string when used in tab widget
|
||||
{"id": str(idx), "info": info}
|
||||
|
|
@ -644,7 +650,7 @@ class CreatorsErrorMessageBox(ErrorMessageBox):
|
|||
self._tabs_widget = None
|
||||
self._stack_layout = None
|
||||
|
||||
super(CreatorsErrorMessageBox, self).__init__(error_title, parent)
|
||||
super(ErrorsMessageBox, self).__init__(error_title, parent)
|
||||
|
||||
layout = self.layout()
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
|
|
@ -659,17 +665,21 @@ class CreatorsErrorMessageBox(ErrorMessageBox):
|
|||
def _get_report_data(self):
|
||||
output = []
|
||||
for info in self._failed_info:
|
||||
creator_label = info["creator_label"]
|
||||
creator_identifier = info["creator_identifier"]
|
||||
report_message = "Creator:"
|
||||
if creator_label:
|
||||
report_message += " {} ({})".format(
|
||||
creator_label, creator_identifier)
|
||||
item_label = info.get("label")
|
||||
item_identifier = info["identifier"]
|
||||
if item_label:
|
||||
report_message = "{} ({})".format(
|
||||
item_label, item_identifier)
|
||||
else:
|
||||
report_message += " {}".format(creator_identifier)
|
||||
report_message = "{}".format(item_identifier)
|
||||
|
||||
if self._message_start:
|
||||
report_message = "{} {}".format(
|
||||
self._message_start, report_message
|
||||
)
|
||||
|
||||
report_message += "\n\nError: {}".format(info["message"])
|
||||
formatted_traceback = info["traceback"]
|
||||
formatted_traceback = info.get("traceback")
|
||||
if formatted_traceback:
|
||||
report_message += "\n\n{}".format(formatted_traceback)
|
||||
output.append(report_message)
|
||||
|
|
@ -686,11 +696,10 @@ class CreatorsErrorMessageBox(ErrorMessageBox):
|
|||
item_id = item["id"]
|
||||
info = item["info"]
|
||||
message = info["message"]
|
||||
formatted_traceback = info["traceback"]
|
||||
creator_label = info["creator_label"]
|
||||
creator_identifier = info["creator_identifier"]
|
||||
if not creator_label:
|
||||
creator_label = creator_identifier
|
||||
formatted_traceback = info.get("traceback")
|
||||
item_label = info.get("label")
|
||||
if not item_label:
|
||||
item_label = info["identifier"]
|
||||
|
||||
msg_widget = QtWidgets.QWidget(stack_widget)
|
||||
msg_layout = QtWidgets.QVBoxLayout(msg_widget)
|
||||
|
|
@ -710,7 +719,7 @@ class CreatorsErrorMessageBox(ErrorMessageBox):
|
|||
|
||||
msg_layout.addStretch(1)
|
||||
|
||||
tabs_widget.add_tab(creator_label, item_id)
|
||||
tabs_widget.add_tab(item_label, item_id)
|
||||
stack_layout.addWidget(msg_widget)
|
||||
if first:
|
||||
first = False
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue