From 436cd7170736cfb991697eee54c60b1ad47c0481 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 29 Jan 2021 13:05:06 +0100 Subject: [PATCH] split methods to be able use them without self changes --- .../settings/widgets/dict_mutable_widget.py | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/pype/tools/settings/settings/widgets/dict_mutable_widget.py b/pype/tools/settings/settings/widgets/dict_mutable_widget.py index 7cc3b273be..54a6592688 100644 --- a/pype/tools/settings/settings/widgets/dict_mutable_widget.py +++ b/pype/tools/settings/settings/widgets/dict_mutable_widget.py @@ -534,35 +534,18 @@ class DictMutableKeysWidget(BaseWidget): pass def add_new_key(self, key, label=None, after_widget=None): - new_widget_index = len(self.input_fields) - if self.input_fields: - if not after_widget: - after_widget = self.input_fields[-1] - - for idx in range(self.content_layout.count()): - item = self.content_layout.itemAt(idx) - if item.widget() is after_widget: - new_widget_index = idx + 1 - break - if not key: key = str(uuid4()) 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) + widget = self.add_widget_for_child(child_entity, after_widget) self.on_shuffle() - return widget - def remove_row(self, widget): - self.input_fields.remove(widget) - self.content_layout.removeWidget(widget) - widget.deleteLater() - self.on_shuffle() + def remove_key(self, widget): + key = self.entity.get_child_key(widget.entity) + self.entity.pop(key) + self.remove_row(widget) def change_key(self, new_key, widget): if not new_key or widget.is_key_duplicated: @@ -608,6 +591,32 @@ class DictMutableKeysWidget(BaseWidget): self.entity.children_by_key[sk_new_key] ) + def add_widget_for_child(self, child_entity, after_widget=None): + new_widget_index = len(self.input_fields) + if self.input_fields: + if not after_widget: + after_widget = self.input_fields[-1] + + for idx in range(self.content_layout.count()): + item = self.content_layout.itemAt(idx) + if item.widget() is after_widget: + new_widget_index = idx + 1 + break + + widget = ModifiableDictItem( + self.entity.collapsible, child_entity, self + ) + self.input_fields.append(widget) + self.content_layout.insertWidget(new_widget_index, widget) + + return widget + + def remove_row(self, widget): + self.input_fields.remove(widget) + self.content_layout.removeWidget(widget) + widget.deleteLater() + self.on_shuffle() + def validate_key_duplication(self, old_key, new_key, widget): old_key_items = [] duplicated_items = []