store ignore_missing_defaults and reuse it on callbacks

This commit is contained in:
iLLiCiTiT 2021-06-29 16:57:01 +02:00
parent df37c2e1ff
commit 672ee1d98d
7 changed files with 34 additions and 8 deletions

View file

@ -136,6 +136,7 @@ class BaseItemEntity(BaseEntity):
# Override state defines which values are used, saved and how.
# TODO convert to private attribute
self._override_state = OverrideState.NOT_DEFINED
self._ignore_missing_defaults = None
# These attributes may change values during existence of an object
# Default value, studio override values and project override values

View file

@ -377,6 +377,7 @@ class DictConditionalEntity(ItemEntity):
# Change has/had override states
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
# Set override state on enum entity first
self.enum_entity.set_override_state(state, ignore_missing_defaults)

View file

@ -266,6 +266,7 @@ class DictImmutableKeysEntity(ItemEntity):
# Change has/had override states
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
for child_obj in self.non_gui_children.values():
child_obj.set_override_state(state, ignore_missing_defaults)

View file

@ -154,7 +154,9 @@ class DictMutableKeysEntity(EndpointEntity):
def add_key(self, key):
new_child = self._add_key(key)
new_child.set_override_state(self._override_state)
new_child.set_override_state(
self._override_state, self._ignore_missing_defaults
)
self.on_change()
return new_child
@ -328,6 +330,8 @@ class DictMutableKeysEntity(EndpointEntity):
# TODO change metadata
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
# Ignore if is dynamic item and use default in that case
if not self.is_dynamic_item and not self.is_in_dynamic_item:
if state > OverrideState.DEFAULTS:
@ -616,7 +620,9 @@ class DictMutableKeysEntity(EndpointEntity):
if not self._can_discard_changes:
return
self.set_override_state(self._override_state)
self.set_override_state(
self._override_state, self._ignore_missing_defaults
)
on_change_trigger.append(self.on_change)
def _add_to_studio_default(self, _on_change_trigger):
@ -651,7 +657,9 @@ class DictMutableKeysEntity(EndpointEntity):
if label:
children_label_by_id[child_entity.id] = label
child_entity.set_override_state(self._override_state)
child_entity.set_override_state(
self._override_state, self._ignore_missing_defaults
)
self.children_label_by_id = children_label_by_id
@ -700,7 +708,9 @@ class DictMutableKeysEntity(EndpointEntity):
if label:
children_label_by_id[child_entity.id] = label
child_entity.set_override_state(self._override_state)
child_entity.set_override_state(
self._override_state, self._ignore_missing_defaults
)
self.children_label_by_id = children_label_by_id

View file

@ -224,6 +224,7 @@ class InputEntity(EndpointEntity):
return
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
# Ignore if is dynamic item and use default in that case
if not self.is_dynamic_item and not self.is_in_dynamic_item:
if state > OverrideState.DEFAULTS:

View file

@ -157,6 +157,7 @@ class PathEntity(ItemEntity):
return
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
self.child_obj.set_override_state(state, ignore_missing_defaults)
def update_default_value(self, value):
@ -351,6 +352,7 @@ class ListStrictEntity(ItemEntity):
return
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
# Ignore if is dynamic item and use default in that case
if not self.is_dynamic_item and not self.is_in_dynamic_item:
if state > OverrideState.DEFAULTS:

View file

@ -102,7 +102,9 @@ class ListEntity(EndpointEntity):
def add_new_item(self, idx=None, trigger_change=True):
child_obj = self._add_new_item(idx)
child_obj.set_override_state(self._override_state)
child_obj.set_override_state(
self._override_state, self._ignore_missing_defaults
)
if trigger_change:
self.on_child_change(child_obj)
@ -212,6 +214,7 @@ class ListEntity(EndpointEntity):
return
self._override_state = state
self._ignore_missing_defaults = ignore_missing_defaults
while self.children:
self.children.pop(0)
@ -403,7 +406,9 @@ class ListEntity(EndpointEntity):
if self.had_studio_override:
child_obj.update_studio_value(item)
child_obj.set_override_state(self._override_state)
child_obj.set_override_state(
self._override_state, self._ignore_missing_defaults
)
if self._override_state >= OverrideState.PROJECT:
self._has_project_override = self.had_project_override
@ -435,7 +440,9 @@ class ListEntity(EndpointEntity):
for item in value:
child_obj = self._add_new_item()
child_obj.update_default_value(item)
child_obj.set_override_state(self._override_state)
child_obj.set_override_state(
self._override_state, self._ignore_missing_defaults
)
self._ignore_child_changes = False
@ -468,7 +475,10 @@ class ListEntity(EndpointEntity):
child_obj.update_default_value(item)
if self._has_studio_override:
child_obj.update_studio_value(item)
child_obj.set_override_state(self._override_state)
child_obj.set_override_state(
self._override_state,
self._ignore_missing_defaults
)
self._ignore_child_changes = False