mutable dict inherit from endpoint

This commit is contained in:
iLLiCiTiT 2021-02-12 12:11:15 +01:00
parent 830076debf
commit cf79d23c9f
3 changed files with 27 additions and 44 deletions

View file

@ -4,7 +4,7 @@ from .lib import (
NOT_SET,
OverrideState
)
from . import ItemEntity
from . import EndpointEntity
from .exceptions import DefaultsNotDefined
from pype.settings.constants import (
METADATA_KEYS,
@ -13,7 +13,8 @@ from pype.settings.constants import (
)
class DictMutableKeysEntity(ItemEntity):
class DictMutableKeysEntity(EndpointEntity):
""""""
schema_types = ["dict-modifiable"]
_miss_arg = object()
@ -78,20 +79,6 @@ class DictMutableKeysEntity(ItemEntity):
self.children_by_key[new_key] = self.children_by_key.pop(old_key)
self.on_change()
def change_child_key(self, child_entity, new_key):
old_key = None
for key, child in self.children_by_key.items():
if child is child_entity:
old_key = key
break
self.change_key(old_key, new_key)
def get_child_key(self, child_entity):
for key, child in self.children_by_key.items():
if child is child_entity:
return key
return None
def _add_key(self, key):
if key in self.children_by_key:
self.pop(key)
@ -112,6 +99,21 @@ class DictMutableKeysEntity(ItemEntity):
self.on_change()
return new_child
def change_child_key(self, child_entity, new_key):
old_key = None
for key, child in self.children_by_key.items():
if child is child_entity:
old_key = key
break
self.change_key(old_key, new_key)
def get_child_key(self, child_entity):
for key, child in self.children_by_key.items():
if child is child_entity:
return key
return None
def _item_initalization(self):
self._default_metadata = {}
self._studio_override_metadata = {}
@ -185,12 +187,7 @@ class DictMutableKeysEntity(ItemEntity):
return "/".join([self.path, result_key])
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):
def on_child_change(self, _child_entity):
if self._ignore_child_changes:
return
@ -367,19 +364,7 @@ class DictMutableKeysEntity(ItemEntity):
return True
return False
def settings_value(self):
if self._override_state is OverrideState.NOT_DEFINED:
return NOT_SET
if self.is_group:
if self._override_state is OverrideState.STUDIO:
if not self._has_studio_override:
return NOT_SET
elif self._override_state is OverrideState.PROJECT:
if not self._has_project_override:
return NOT_SET
def _settings_value(self):
output = {}
for key, child_entity in self.children_by_key.items():
child_value = child_entity.settings_value()

View file

@ -94,6 +94,11 @@ class EndpointEntity(ItemEntity):
return NOT_SET
return self._settings_value()
def on_change(self):
for callback in self.on_change_callbacks:
callback()
self.parent.on_child_change(self)
def update_default_value(self, value):
value = self._check_update_value(value, "default")
self._default_value = value
@ -184,9 +189,7 @@ class InputEntity(EndpointEntity):
self._value_is_modified = value_is_modified
for callback in self.on_change_callbacks:
callback()
self.parent.on_child_change(self)
super(InputEntity, self).on_change()
def on_child_change(self, child_obj):
raise TypeError("Input entities do not contain children.")

View file

@ -149,12 +149,7 @@ class ListEntity(EndpointEntity):
for item in value:
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):
def on_child_change(self, _child_entity):
if self._ignore_child_changes:
return