instance context change triggers refresh of instance states

This commit is contained in:
iLLiCiTiT 2021-09-03 18:32:21 +02:00
parent e89c0d42ad
commit def20bc03c
2 changed files with 25 additions and 0 deletions

View file

@ -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

View file

@ -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()