diff --git a/pype/settings/entities/item_entities.py b/pype/settings/entities/item_entities.py index 3fe0cdf93a..b750fe238b 100644 --- a/pype/settings/entities/item_entities.py +++ b/pype/settings/entities/item_entities.py @@ -633,7 +633,7 @@ class DictMutableKeysEntity(ItemEntity): child_obj = self.children_by_key.pop(old_key) self.children_by_key[new_key] = child_obj - def _add_child(self, key): + def add_new_key(self, key): new_child = self.create_schema_object(self.item_schema, self, True) self.children.append(new_child) self.children_by_key[key] = new_child @@ -716,7 +716,7 @@ class DictMutableKeysEntity(ItemEntity): # TODO Check for value type if is Settings entity? child_obj = self.children_by_key.get(key) if not child_obj: - child_obj = self._add_child(key) + child_obj = self.add_new_key(key) child_obj.set_value(value) @@ -841,7 +841,7 @@ class DictMutableKeysEntity(ItemEntity): # Create new children for _key, _value in self._current_value.items(): - child_obj = self._add_child(_key) + child_obj = self.add_new_key(_key) child_obj.update_default_value(_value) if using_overrides: if state is OverrideState.STUDIO: diff --git a/pype/tools/settings/settings/widgets/dict_mutable_widget.py b/pype/tools/settings/settings/widgets/dict_mutable_widget.py index 9207a14ce7..1f8b0a61de 100644 --- a/pype/tools/settings/settings/widgets/dict_mutable_widget.py +++ b/pype/tools/settings/settings/widgets/dict_mutable_widget.py @@ -532,11 +532,29 @@ class DictMutableKeysWidget(BaseWidget): # TODO implement pass + def add_new_key(self, key, label=None, after_widget=None): + new_widget_index = 0 + if self.input_fields: + if not after_widget: + after_widget = self.input_fields[-1] + + for idx in self.content_layout.count(): + item = self.content_layout.itemAt(idx) + if item.widget() is after_widget: + new_widget_index = idx + break + child_entity = self.entity.add_new_key(key) + widget = ModifiableDictItem( + self.entity.collapsible, child_entity, self + ) + self.input_fields.append(widget) + self.content_layout.insertWidget(new_widget_index, widget) + return widget + def _on_entity_change(self): print("_on_entity_change", self.__class__.__name__, self.entity.path) - class ModifiableDict(QtWidgets.QWidget): def create_ui(self, label_widget=None): if self.hightlight_content: