From dcf9b999953cae1a4beb4ee5dd9053899909ee6f Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Mon, 3 Oct 2022 12:04:01 +0200 Subject: [PATCH] moved overlay messages to main window --- openpype/tools/publisher/control.py | 10 ++++++++++ .../tools/publisher/widgets/create_widget.py | 18 +++++++----------- openpype/tools/publisher/window.py | 12 +++++++++++- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index b48bb61386..17dccca04a 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -413,6 +413,7 @@ class PublisherController: self._publish_started_callback_refs = set() self._publish_validated_callback_refs = set() self._publish_stopped_callback_refs = set() + self._message_emit_callback_refs = set() self._publish_instance_changed_callback_refs = set() self._publish_plugin_changed_callback_refs = set() @@ -516,6 +517,12 @@ class PublisherController: ref = self._create_reference(callback) self._publish_stopped_callback_refs.add(ref) + def add_message_emitted_callback(self, callback): + """Callbacks triggered when message is emitted.""" + + ref = self._create_reference(callback) + self._message_emit_callback_refs.add(ref) + def get_asset_docs(self): """Get asset documents from cache for whole project.""" return self._asset_docs_cache.get_asset_docs() @@ -614,6 +621,9 @@ class PublisherController: self._trigger_callbacks(self._instances_refresh_callback_refs) + def emit_message(self, message): + self._trigger_callbacks(self._message_emit_callback_refs, message) + def get_creator_attribute_definitions(self, instances): """Collect creator attribute definitions for multuple instances. diff --git a/openpype/tools/publisher/widgets/create_widget.py b/openpype/tools/publisher/widgets/create_widget.py index 733dbf18ca..393f734924 100644 --- a/openpype/tools/publisher/widgets/create_widget.py +++ b/openpype/tools/publisher/widgets/create_widget.py @@ -290,7 +290,7 @@ class CreateWidget(QtWidgets.QWidget): self.setWindowTitle("Create new instance") - self.controller = controller + self._controller = controller self._asset_name = self.dbcon.Session.get("AVALON_ASSET") self._task_name = self.dbcon.Session.get("AVALON_TASK") @@ -307,8 +307,6 @@ class CreateWidget(QtWidgets.QWidget): self._name_pattern = name_pattern self._compiled_name_pattern = re.compile(name_pattern) - overlay_object = MessageOverlayObject(self) - context_widget = QtWidgets.QWidget(self) assets_widget = CreateWidgetAssetsWidget(controller, context_widget) @@ -476,8 +474,6 @@ class CreateWidget(QtWidgets.QWidget): controller.add_plugins_refresh_callback(self._on_plugins_refresh) - self._overlay_object = overlay_object - self._splitter_widget = splitter_widget self._context_widget = context_widget @@ -509,7 +505,7 @@ class CreateWidget(QtWidgets.QWidget): self._first_show = True def _emit_message(self, message): - self._overlay_object.add_message(message) + self._controller.emit_message(message) def _context_change_is_enabled(self): return self._context_widget.isEnabled() @@ -537,7 +533,7 @@ class CreateWidget(QtWidgets.QWidget): @property def dbcon(self): - return self.controller.dbcon + return self._controller.dbcon def _set_context_enabled(self, enabled): self._assets_widget.set_enabled(enabled) @@ -655,7 +651,7 @@ class CreateWidget(QtWidgets.QWidget): # Add new families new_creators = set() - for identifier, creator in self.controller.manual_creators.items(): + for identifier, creator in self._controller.manual_creators.items(): # TODO add details about creator new_creators.add(identifier) if identifier in existing_items: @@ -738,7 +734,7 @@ class CreateWidget(QtWidgets.QWidget): self._detail_description_input.setMarkdown(detailed_description) def _set_creator_by_identifier(self, identifier): - creator = self.controller.manual_creators.get(identifier) + creator = self._controller.manual_creators.get(identifier) self._set_creator(creator) def _set_creator(self, creator): @@ -822,7 +818,7 @@ class CreateWidget(QtWidgets.QWidget): self.subset_name_input.setText("< Valid variant >") return - project_name = self.controller.project_name + project_name = self._controller.project_name task_name = self._get_task_name() asset_doc = copy.deepcopy(self._asset_doc) @@ -951,7 +947,7 @@ class CreateWidget(QtWidgets.QWidget): error_msg = None formatted_traceback = None try: - self.controller.create( + self._controller.create( creator_identifier, subset_name, instance_data, diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index 4db8cd4af1..cc5d191ca3 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -6,8 +6,10 @@ from openpype import ( ) from openpype.tools.utils import ( PlaceholderLineEdit, - PixmapLabel + MessageOverlayObject, + PixmapLabel, ) + from .publish_report_viewer import PublishReportViewerWidget from .control import PublisherController from .widgets import ( @@ -56,6 +58,8 @@ class PublisherWindow(QtWidgets.QDialog): controller = PublisherController() + overlay_object = MessageOverlayObject(self) + # Header header_widget = QtWidgets.QWidget(self) icon_pixmap = QtGui.QPixmap(resources.get_openpype_icon_filepath()) @@ -224,6 +228,7 @@ class PublisherWindow(QtWidgets.QDialog): controller.add_publish_started_callback(self._on_publish_start) controller.add_publish_validated_callback(self._on_publish_validated) controller.add_publish_stopped_callback(self._on_publish_stop) + controller.add_message_emitted_callback(self._on_overlay_message) # Store header for TrayPublisher self._header_layout = header_layout @@ -253,6 +258,8 @@ class PublisherWindow(QtWidgets.QDialog): self._validate_btn = validate_btn self._publish_btn = publish_btn + self._overlay_object = overlay_object + self._controller = controller self._first_show = True @@ -276,6 +283,9 @@ class PublisherWindow(QtWidgets.QDialog): super(PublisherWindow, self).resizeEvent(event) self._update_publish_frame_rect() + def _on_overlay_message(self, message): + self._overlay_object.add_message(message) + def _on_first_show(self): self.resize(self.default_width, self.default_height) self.setStyleSheet(style.load_stylesheet())