From def20bc03c0d809e70ec3ef5fecdf20966fc2c84 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 3 Sep 2021 18:32:21 +0200 Subject: [PATCH] instance context change triggers refresh of instance states --- openpype/tools/new_publisher/widgets/widgets.py | 10 ++++++++++ openpype/tools/new_publisher/window.py | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/openpype/tools/new_publisher/widgets/widgets.py b/openpype/tools/new_publisher/widgets/widgets.py index a45dbfc979..0ccf3642ef 100644 --- a/openpype/tools/new_publisher/widgets/widgets.py +++ b/openpype/tools/new_publisher/widgets/widgets.py @@ -572,6 +572,8 @@ class MultipleItemWidget(QtWidgets.QWidget): class GlobalAttrsWidget(QtWidgets.QWidget): + instance_context_changed = QtCore.Signal() + multiselection_text = "< Multiselection >" unknown_value = "N/A" @@ -687,6 +689,8 @@ class GlobalAttrsWidget(QtWidgets.QWidget): self.cancel_btn.setEnabled(False) self.submit_btn.setEnabled(False) + self.instance_context_changed.emit() + def _on_cancel(self): self.variant_input.reset_to_origin() self.asset_value_widget.reset_to_origin() @@ -938,6 +942,7 @@ class SubsetAttributesWidget(QtWidgets.QWidget): | attributes | attributes | BOTTOM |______________|______________| """ + instance_context_changed = QtCore.Signal() def __init__(self, controller, parent): super(SubsetAttributesWidget, self).__init__(parent) @@ -948,6 +953,7 @@ class SubsetAttributesWidget(QtWidgets.QWidget): # Global attributes global_attrs_widget = GlobalAttrsWidget(controller, top_widget) thumbnail_widget = ThumbnailWidget(top_widget) + thumbnail_widget.setVisible(False) top_layout = QtWidgets.QHBoxLayout(top_widget) top_layout.setContentsMargins(0, 0, 0, 0) @@ -982,6 +988,10 @@ class SubsetAttributesWidget(QtWidgets.QWidget): layout.addWidget(top_bottom, 0) layout.addWidget(bottom_widget, 1) + global_attrs_widget.instance_context_changed.connect( + self.instance_context_changed + ) + self.controller = controller self.global_attrs_widget = global_attrs_widget diff --git a/openpype/tools/new_publisher/window.py b/openpype/tools/new_publisher/window.py index d4123a632d..1caafe881f 100644 --- a/openpype/tools/new_publisher/window.py +++ b/openpype/tools/new_publisher/window.py @@ -175,6 +175,9 @@ class PublisherWindow(QtWidgets.QDialog): subset_view_cards.selection_changed.connect( self._on_subset_change ) + subset_attributes_widget.instance_context_changed.connect( + self._on_instance_context_change + ) controller.add_instances_refresh_callback(self._on_instances_refresh) @@ -237,6 +240,18 @@ class PublisherWindow(QtWidgets.QDialog): view = self.subset_views_layout.currentWidget() return view.get_selected_items() + def _on_instance_context_change(self): + current_idx = self.subset_views_layout.currentIndex() + for idx in range(self.subset_views_layout.count()): + if idx == current_idx: + continue + widget = self.subset_views_layout.widget(idx) + if widget.refreshed: + widget.set_refreshed(False) + + current_widget = self.subset_views_layout.widget(current_idx) + current_widget.refresh_instance_states() + def _change_view_type(self): old_view = self.subset_views_layout.currentWidget()