From 4e1c327b25b5784420cbf268699e16a6662ea9b9 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 5 Feb 2021 15:57:31 +0100 Subject: [PATCH] added child change ignore ability --- .../entities/dict_immutable_keys_entity.py | 20 ++++++++++++++++++- pype/settings/entities/list_entity.py | 8 ++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/pype/settings/entities/dict_immutable_keys_entity.py b/pype/settings/entities/dict_immutable_keys_entity.py index c3d42fcc42..5879383b9a 100644 --- a/pype/settings/entities/dict_immutable_keys_entity.py +++ b/pype/settings/entities/dict_immutable_keys_entity.py @@ -71,7 +71,8 @@ class DictImmutableKeysEntity(ItemEntity): self.parent.on_child_change(self) def on_child_change(self, _child_obj): - self.on_change() + if not self.ignore_child_changes: + self.on_change() def _add_children(self, schema_data, first=True): added_children = [] @@ -108,6 +109,8 @@ class DictImmutableKeysEntity(ItemEntity): self.studio_override_metadata = NOT_SET self.project_override_metadata = NOT_SET + self.ignore_child_changes = False + # `current_metadata` are still when schema is loaded # - only metadata stored with dict item are gorup overrides in # M_OVERRIDEN_KEY @@ -364,33 +367,48 @@ class DictImmutableKeysEntity(ItemEntity): ) def discard_changes(self): + self.ignore_child_changes = True for child_obj in self.non_gui_children.values(): child_obj.discard_changes() + self.ignore_child_changes = False + self.parent.on_child_change(self) def set_studio_default(self): if self.override_state is not OverrideState.STUDIO: return + self.ignore_child_changes = True for child_obj in self.non_gui_children.values(): child_obj.set_studio_default() + self.ignore_child_changes = False + self.parent.on_child_change(self) def reset_to_pype_default(self): if self.override_state is not OverrideState.STUDIO: return + self.ignore_child_changes = True for child_obj in self.non_gui_children.values(): child_obj.reset_to_pype_default() + self.ignore_child_changes = False + self.parent.on_child_change(self) def remove_overrides(self): if self.override_state is not OverrideState.PROJECT: return + self.ignore_child_changes = True for child_obj in self.non_gui_children.values(): child_obj.remove_overrides() + self.ignore_child_changes = False + self.parent.on_child_change(self) def set_as_overriden(self): if self.override_state is not OverrideState.PROJECT: return + self.ignore_child_changes = True for child_obj in self.non_gui_children.values(): child_obj.set_as_overriden() + self.ignore_child_changes = False + self.parent.on_child_change(self) diff --git a/pype/settings/entities/list_entity.py b/pype/settings/entities/list_entity.py index 8a1216b955..6ca1e8aa98 100644 --- a/pype/settings/entities/list_entity.py +++ b/pype/settings/entities/list_entity.py @@ -329,8 +329,7 @@ class ListEntity(ItemEntity): self._has_studio_override = self.had_studio_override self.ignore_child_changes = False - - self.on_change() + self.parent.on_child_change(self) def set_studio_default(self): if self.override_state is not OverrideState.STUDIO: @@ -358,7 +357,8 @@ class ListEntity(ItemEntity): self.ignore_child_changes = False self._has_studio_override = False - self.on_change() + + self.parent.on_child_change(self) def set_as_overriden(self): self._has_project_override = True @@ -390,7 +390,7 @@ class ListEntity(ItemEntity): self._has_project_override = False - self.on_change() + self.parent.on_child_change(self) def update_default_value(self, value): self.has_default_value = value is not NOT_SET