added child change ignore ability

This commit is contained in:
iLLiCiTiT 2021-02-05 15:57:31 +01:00
parent 634db846cd
commit 4e1c327b25
2 changed files with 23 additions and 5 deletions

View file

@ -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)

View file

@ -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