From eff4dbf0772c822fcf70f2624ee4faf0e7667ff0 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 24 Feb 2021 11:23:42 +0100 Subject: [PATCH 1/3] add wrapper to layout on add of first child in wrapper --- pype/tools/settings/settings/widgets/item_widgets.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_widgets.py b/pype/tools/settings/settings/widgets/item_widgets.py index fd33f337d7..718724f64e 100644 --- a/pype/tools/settings/settings/widgets/item_widgets.py +++ b/pype/tools/settings/settings/widgets/item_widgets.py @@ -39,6 +39,7 @@ class DictImmutableKeysWidget(BaseWidget): self.widget_mapping = {} self.wrapper_widgets_by_id = {} + self._added_wrapper_ids = set() self._prepare_entity_layouts( self.entity.gui_layout, self.content_widget ) @@ -72,7 +73,6 @@ class DictImmutableKeysWidget(BaseWidget): self.widget_mapping[wrapper.id] = widget self.wrapper_widgets_by_id[wrapper.id] = wrapper - self.add_widget_to_layout(wrapper) self._prepare_entity_layouts(child["children"], wrapper) def _ui_item_without_label(self): @@ -151,6 +151,9 @@ class DictImmutableKeysWidget(BaseWidget): wrapper = self.widget_mapping[map_id] if wrapper is not self.content_widget: wrapper.add_widget_to_layout(widget, label) + if wrapper.id not in self._added_wrapper_ids: + self.add_widget_to_layout(wrapper) + self._added_wrapper_ids.add(wrapper.id) return row = self.content_layout.rowCount() From 3ab0ac66a8f2bc2fc871f1e941a0cb85d4869094 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 24 Feb 2021 11:24:00 +0100 Subject: [PATCH 2/3] removed unused variable --- pype/tools/settings/settings/widgets/item_widgets.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_widgets.py b/pype/tools/settings/settings/widgets/item_widgets.py index 718724f64e..58d3c1cd57 100644 --- a/pype/tools/settings/settings/widgets/item_widgets.py +++ b/pype/tools/settings/settings/widgets/item_widgets.py @@ -38,7 +38,6 @@ class DictImmutableKeysWidget(BaseWidget): ) self.widget_mapping = {} - self.wrapper_widgets_by_id = {} self._added_wrapper_ids = set() self._prepare_entity_layouts( self.entity.gui_layout, self.content_widget @@ -72,7 +71,6 @@ class DictImmutableKeysWidget(BaseWidget): ) self.widget_mapping[wrapper.id] = widget - self.wrapper_widgets_by_id[wrapper.id] = wrapper self._prepare_entity_layouts(child["children"], wrapper) def _ui_item_without_label(self): From bcde1896c91fbae16a6e3ee8c45c65bc6337f8df Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 24 Feb 2021 11:24:14 +0100 Subject: [PATCH 3/3] renamed `widget_mapping` to `_parent_widget_by_entity_id` --- pype/tools/settings/settings/widgets/item_widgets.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_widgets.py b/pype/tools/settings/settings/widgets/item_widgets.py index 58d3c1cd57..e0c97e0c80 100644 --- a/pype/tools/settings/settings/widgets/item_widgets.py +++ b/pype/tools/settings/settings/widgets/item_widgets.py @@ -37,7 +37,7 @@ class DictImmutableKeysWidget(BaseWidget): self.entity.checkbox_key ) - self.widget_mapping = {} + self._parent_widget_by_entity_id = {} self._added_wrapper_ids = set() self._prepare_entity_layouts( self.entity.gui_layout, self.content_widget @@ -56,7 +56,7 @@ class DictImmutableKeysWidget(BaseWidget): for child in children: if not isinstance(child, dict): if child is not self.checkbox_child: - self.widget_mapping[child.id] = widget + self._parent_widget_by_entity_id[child.id] = widget continue if child["type"] == "collapsible-wrap": @@ -70,7 +70,8 @@ class DictImmutableKeysWidget(BaseWidget): "Unknown Wrapper type \"{}\"".format(child["type"]) ) - self.widget_mapping[wrapper.id] = widget + self._parent_widget_by_entity_id[wrapper.id] = widget + self._prepare_entity_layouts(child["children"], wrapper) def _ui_item_without_label(self): @@ -146,7 +147,7 @@ class DictImmutableKeysWidget(BaseWidget): else: map_id = widget.entity.id - wrapper = self.widget_mapping[map_id] + wrapper = self._parent_widget_by_entity_id[map_id] if wrapper is not self.content_widget: wrapper.add_widget_to_layout(widget, label) if wrapper.id not in self._added_wrapper_ids: