diff --git a/pype/tools/settings/settings/widgets/dict_mutable_widget.py b/pype/tools/settings/settings/widgets/dict_mutable_widget.py index ed89ecc6c6..b27e0e492b 100644 --- a/pype/tools/settings/settings/widgets/dict_mutable_widget.py +++ b/pype/tools/settings/settings/widgets/dict_mutable_widget.py @@ -13,8 +13,6 @@ from .lib import ( CHILD_OFFSET ) -from pype.settings.entities import NOT_SET - def create_add_btn(parent): add_btn = QtWidgets.QPushButton("+", parent) @@ -161,8 +159,8 @@ class ModifiableDictItem(QtWidgets.QWidget): self.is_key_duplicated = False self.is_required = False - self.origin_key = NOT_SET - self.origin_key_label = NOT_SET + self.origin_key = None + self.origin_key_label = None self.temp_key = "" self.uuid_key = None @@ -171,6 +169,8 @@ class ModifiableDictItem(QtWidgets.QWidget): self.wrapper_widget = None + self.key_label_input = None + if collapsible_key: self.create_collapsible_ui() else: @@ -272,7 +272,7 @@ class ModifiableDictItem(QtWidgets.QWidget): key_input.textChanged.connect(self._on_key_change) key_input.returnPressed.connect(self._on_enter_press) - key_label_input.textChanged.connect(self._on_key_change) + key_label_input.textChanged.connect(self._on_key_label_change) key_label_input.returnPressed.connect(self._on_enter_press) edit_btn.clicked.connect(self.on_edit_pressed) @@ -339,10 +339,13 @@ class ModifiableDictItem(QtWidgets.QWidget): def set_key_label(self, key, label): self.set_key(key) - if label: - self.key_label_input.setText(label) + self.set_label(label) self.set_edit_mode(False) + def set_label(self, label): + if self.key_label_input and label is not None: + self.key_label_input.setText(label) + def set_as_required(self, key): self.key_input.setText(key) self.key_input.setEnabled(False) @@ -372,6 +375,8 @@ class ModifiableDictItem(QtWidgets.QWidget): self.set_edit_mode(False) def _on_key_label_change(self): + label = self.key_label_value() + self.entity_widget.change_label(label, self) self.update_key_label() def _on_key_change(self): @@ -439,17 +444,6 @@ class ModifiableDictItem(QtWidgets.QWidget): def is_key_label_modified(self): return self.key_label_value() != self.origin_key_label - def is_value_modified(self): - return self.input_field.is_modified - - @property - def is_modified(self): - return ( - self.is_key_modified() - or self.is_key_label_modified() - or self.is_value_modified() - ) - def trigger_hierarchical_style_update(self): self.entity_widget.trigger_hierarchical_style_update() @@ -516,9 +510,9 @@ class ModifiableDictItem(QtWidgets.QWidget): return self.entity_widget.input_fields.index(self) def key_label_value(self): - if self.collapsible_key: + if self.key_label_input: return self.key_label_input.text() - return NOT_SET + return None def mouseReleaseEvent(self, event): return QtWidgets.QWidget.mouseReleaseEvent(self, event) @@ -697,6 +691,13 @@ class DictMutableKeysWidget(BaseWidget): self.entity.children_by_key[sk_old_key] ) + def change_label(self, label, input_field): + entity = input_field.entity + _label = self.entity.get_child_label(entity) + if _label == label: + return + self.entity.set_child_label(entity, label) + def add_widget_for_child( self, child_entity, after_widget=None, first=False ): @@ -803,6 +804,10 @@ class DictMutableKeysWidget(BaseWidget): _input_field = self.add_widget_for_child(child_entity, *args) _input_field.origin_key = key _input_field.set_key(key) + if self.entity.collapsible_key: + label = self.entity.get_child_label(child_entity) + _input_field.origin_key_label = label + _input_field.set_label(label) _input_field.set_entity_value() else: @@ -810,6 +815,11 @@ class DictMutableKeysWidget(BaseWidget): changed = True input_field.set_key(key) + if self.entity.collapsible_key: + label = self.entity.get_child_label(child_entity) + if input_field.key_label_value() != label: + input_field.set_label(label) + if changed: self.on_shuffle() @@ -821,6 +831,10 @@ class DictMutableKeysWidget(BaseWidget): input_field = self.add_widget_for_child(child_entity) input_field.origin_key = key input_field.set_key(key) + if self.entity.collapsible_key: + label = self.entity.get_child_label(child_entity) + input_field.origin_key_label = label + input_field.set_label(label) for input_field in self.input_fields: input_field.set_entity_value()