mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 08:54:53 +01:00
base implementation of remaining mutable dict methods
This commit is contained in:
parent
822b3ac191
commit
a81106909f
1 changed files with 68 additions and 2 deletions
|
|
@ -424,7 +424,34 @@ class DictMutableKeysEntity(ItemEntity):
|
|||
self.on_change()
|
||||
|
||||
def reset_to_pype_default(self):
|
||||
pass
|
||||
if self.override_state is not OverrideState.STUDIO:
|
||||
return
|
||||
|
||||
value = self.default_value
|
||||
metadata = self.default_metadata
|
||||
if value is NOT_SET:
|
||||
value = self.value_on_not_set
|
||||
|
||||
new_value = copy.deepcopy(value)
|
||||
self._current_value = new_value
|
||||
# It is important to pass `new_value`!!!
|
||||
self.current_metadata = self.get_metadata_from_value(
|
||||
new_value, metadata
|
||||
)
|
||||
|
||||
# Simulate `clear` method without triggering value change
|
||||
for key in tuple(self.children_by_key.keys()):
|
||||
child_obj = self.children_by_key.pop(key)
|
||||
self.children.remove(child_obj)
|
||||
|
||||
# Create new children
|
||||
for _key, _value in self._current_value.items():
|
||||
child_obj = self.add_new_key(_key)
|
||||
child_obj.update_default_value(_value)
|
||||
child_obj.set_override_state(self.override_state)
|
||||
|
||||
self._has_studio_override = False
|
||||
self.on_change()
|
||||
|
||||
def set_as_overriden(self):
|
||||
if self.override_state is not OverrideState.PROJECT:
|
||||
|
|
@ -433,4 +460,43 @@ class DictMutableKeysEntity(ItemEntity):
|
|||
self.on_change()
|
||||
|
||||
def remove_overrides(self):
|
||||
pass
|
||||
if self.override_state is not OverrideState.PROJECT:
|
||||
return
|
||||
|
||||
if not self._has_project_override:
|
||||
return
|
||||
|
||||
using_overrides = False
|
||||
metadata = self.default_metadata
|
||||
if self._has_studio_override:
|
||||
value = self.studio_override_value
|
||||
metadata = self.studio_override_metadata
|
||||
using_overrides = True
|
||||
elif self.has_default_value:
|
||||
value = self.default_value
|
||||
else:
|
||||
value = self.value_on_not_set
|
||||
|
||||
new_value = copy.deepcopy(value)
|
||||
self._current_value = new_value
|
||||
# It is important to pass `new_value`!!!
|
||||
self.current_metadata = self.get_metadata_from_value(
|
||||
new_value, metadata
|
||||
)
|
||||
|
||||
# Simulate `clear` method without triggering value change
|
||||
for key in tuple(self.children_by_key.keys()):
|
||||
child_obj = self.children_by_key.pop(key)
|
||||
self.children.remove(child_obj)
|
||||
|
||||
# Create new children
|
||||
for _key, _value in self._current_value.items():
|
||||
child_obj = self.add_new_key(_key)
|
||||
child_obj.update_default_value(_value)
|
||||
if using_overrides:
|
||||
child_obj.update_studio_value(_value)
|
||||
child_obj.set_override_state(self.override_state)
|
||||
|
||||
self._has_project_override = False
|
||||
|
||||
self.on_change()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue