From 46548eafa074350ce97eecc9e297e36878acddad Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 16 Jun 2020 13:58:06 +0200 Subject: [PATCH] toggle setData method happens on item not on model --- pype/tools/pyblish_pype/window.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/pype/tools/pyblish_pype/window.py b/pype/tools/pyblish_pype/window.py index 21ac500f9c..8f8c65e6ce 100644 --- a/pype/tools/pyblish_pype/window.py +++ b/pype/tools/pyblish_pype/window.py @@ -415,9 +415,9 @@ class Window(QtWidgets.QDialog): QtCore.Qt.DirectConnection ) - artist_view.toggled.connect(self.on_item_toggled) - overview_instance_view.toggled.connect(self.on_item_toggled) - overview_plugin_view.toggled.connect(self.on_item_toggled) + artist_view.toggled.connect(self.on_instance_toggle) + overview_instance_view.toggled.connect(self.on_instance_toggle) + overview_plugin_view.toggled.connect(self.on_plugin_toggle) footer_button_stop.clicked.connect(self.on_stop_clicked) footer_button_reset.clicked.connect(self.on_reset_clicked) @@ -537,7 +537,7 @@ class Window(QtWidgets.QDialog): ): instance_item.setData(enable_value, Roles.IsEnabledRole) - def on_item_toggled(self, index, state=None): + def on_instance_toggle(self, index, state=None): """An item is requesting to be toggled""" if not index.data(Roles.IsOptionalRole): return self.info("This item is mandatory") @@ -548,7 +548,27 @@ class Window(QtWidgets.QDialog): if state is None: state = not index.data(QtCore.Qt.CheckStateRole) - index.model().setData(index, state, QtCore.Qt.CheckStateRole) + instance_id = index.data(Roles.ObjectIdRole) + instanceitem = self.instance_model.instance_items[instance_id] + instanceitem.setData(state, QtCore.Qt.CheckStateRole) + + self.update_compatibility() + + def on_plugin_toggle(self, index, state=None): + """An item is requesting to be toggled""" + if not index.data(Roles.IsOptionalRole): + return self.info("This item is mandatory") + + if self.controller.collect_state != 1: + return self.info("Cannot toggle") + + if state is None: + state = not index.data(QtCore.Qt.CheckStateRole) + + plugin_id = index.data(Roles.ObjectIdRole) + plugin_item = self.plugin_model.plugin_items[plugin_id] + plugin_item.setData(state, QtCore.Qt.CheckStateRole) + self.update_compatibility() def on_tab_changed(self, target):