From 8635e12dad02ed105570ee5fe77de2ef56046c7f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 8 Feb 2021 11:27:38 +0100 Subject: [PATCH] implemented few list strict methods --- .../entities/dict_mutable_keys_entity.py | 2 +- pype/settings/entities/item_entities.py | 62 ++++++++++++++----- pype/settings/entities/list_entity.py | 3 - 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/pype/settings/entities/dict_mutable_keys_entity.py b/pype/settings/entities/dict_mutable_keys_entity.py index 1fc935b774..1471318e07 100644 --- a/pype/settings/entities/dict_mutable_keys_entity.py +++ b/pype/settings/entities/dict_mutable_keys_entity.py @@ -175,7 +175,7 @@ class DictMutableKeysEntity(ItemEntity): callback() self.parent.on_child_change(self) - def on_child_change(self, child_obj): + def on_child_change(self, _child_obj): if not self.ignore_child_changes: self.on_change() diff --git a/pype/settings/entities/item_entities.py b/pype/settings/entities/item_entities.py index afa2508e82..c149c20a57 100644 --- a/pype/settings/entities/item_entities.py +++ b/pype/settings/entities/item_entities.py @@ -387,25 +387,12 @@ class PathEntity(ItemEntity): class ListStrictEntity(ItemEntity): schema_types = ["list-strict"] - gui_type = True - - child_has_studio_override = False - child_has_project_override = False - has_unsaved_changes = False - child_is_modified = False - - # Abstract methods - set_value = None - on_change = None - on_child_change = None - on_value_change = None - settings_value = None - def item_initalization(self): self.valid_value_types = (list, ) self.require_key = True - self._current_value = NOT_SET + self.ignore_child_changes = False + # Child items self.object_types = self.schema_data["object_types"] @@ -433,7 +420,50 @@ class ListStrictEntity(ItemEntity): @property def value(self): - return self._current_value + output = [] + for child_obj in self.children: + output.append(child_obj.value) + return output + + def set_value(self, value): + for idx, item in value: + self.children[idx].set_value(item) + + def settings_value(self): + output = [] + for child_obj in self.children: + output.append(child_obj.settings_value()) + return output + + 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 not self.ignore_child_changes: + self.on_change() + + def has_unsaved_changes(self): + return False + + def child_is_modified(self): + for child_obj in self.children: + if child_obj.has_unsaved_changes: + return True + return False + + def child_has_studio_override(self): + for child_obj in self.children: + if child_obj.has_studio_override: + return True + return False + + def child_has_project_override(self): + for child_obj in self.children: + if child_obj.has_project_override: + return True + return False def set_override_state(self, state): # TODO use right value as current_value is held here diff --git a/pype/settings/entities/list_entity.py b/pype/settings/entities/list_entity.py index 3904b548f2..cde50a46bb 100644 --- a/pype/settings/entities/list_entity.py +++ b/pype/settings/entities/list_entity.py @@ -128,9 +128,6 @@ class ListEntity(ItemEntity): self._has_project_override = self.child_has_project_override self.on_change() - def on_value_change(self): - raise NotImplementedError(self.__class__.__name__) - def set_override_state(self, state): self.override_state = state