mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +01:00
list entity can ignore child changes
This commit is contained in:
parent
5b080eedfc
commit
634db846cd
1 changed files with 17 additions and 1 deletions
|
|
@ -58,6 +58,8 @@ class ListEntity(ItemEntity):
|
|||
self.valid_value_types = (list, )
|
||||
self.children = []
|
||||
|
||||
self.ignore_child_changes = False
|
||||
|
||||
item_schema = self.schema_data["object_type"]
|
||||
if not isinstance(item_schema, dict):
|
||||
item_schema = {"type": item_schema}
|
||||
|
|
@ -111,12 +113,14 @@ class ListEntity(ItemEntity):
|
|||
self.append(item)
|
||||
|
||||
def on_change(self):
|
||||
|
||||
for callback in self.on_change_callbacks:
|
||||
callback()
|
||||
self.parent.on_child_change(self)
|
||||
|
||||
def on_child_change(self, child_obj):
|
||||
if self.ignore_child_changes:
|
||||
return
|
||||
|
||||
# TODO is this enough?
|
||||
if self.override_state is OverrideState.STUDIO:
|
||||
self._has_studio_override = self.child_has_studio_override
|
||||
|
|
@ -300,6 +304,8 @@ class ListEntity(ItemEntity):
|
|||
if value is not_set:
|
||||
raise NotImplementedError("BUG: Unexcpected part of code.")
|
||||
|
||||
self.ignore_child_changes = True
|
||||
|
||||
while self.children:
|
||||
self.children.pop(0)
|
||||
|
||||
|
|
@ -322,6 +328,8 @@ class ListEntity(ItemEntity):
|
|||
if self.override_state >= OverrideState.STUDIO:
|
||||
self._has_studio_override = self.had_studio_override
|
||||
|
||||
self.ignore_child_changes = False
|
||||
|
||||
self.on_change()
|
||||
|
||||
def set_studio_default(self):
|
||||
|
|
@ -338,6 +346,8 @@ class ListEntity(ItemEntity):
|
|||
if value is NOT_SET:
|
||||
value = self.value_on_not_set
|
||||
|
||||
self.ignore_child_changes = True
|
||||
|
||||
while self.children:
|
||||
self.children.pop(0)
|
||||
|
||||
|
|
@ -345,6 +355,8 @@ class ListEntity(ItemEntity):
|
|||
child_obj = self.add_new_item()
|
||||
child_obj.update_default_value(item)
|
||||
|
||||
self.ignore_child_changes = False
|
||||
|
||||
self._has_studio_override = False
|
||||
self.on_change()
|
||||
|
||||
|
|
@ -366,12 +378,16 @@ class ListEntity(ItemEntity):
|
|||
else:
|
||||
value = self.value_on_not_set
|
||||
|
||||
self.ignore_child_changes = True
|
||||
|
||||
for item in value:
|
||||
child_obj = self.add_new_item()
|
||||
child_obj.update_default_value(item)
|
||||
if self._has_studio_override:
|
||||
child_obj.update_studio_values(item)
|
||||
|
||||
self.ignore_child_changes = False
|
||||
|
||||
self._has_project_override = False
|
||||
|
||||
self.on_change()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue