all actions have wrappers

This commit is contained in:
iLLiCiTiT 2021-02-17 15:48:05 +01:00
parent c0a1144490
commit cfb339da73
7 changed files with 58 additions and 49 deletions

View file

@ -546,8 +546,23 @@ class BaseItemEntity(BaseEntity):
"""Entity's implementation to discard all changes made by user."""
pass
def add_to_studio_default(self, on_change_trigger=None):
initialized = False
if on_change_trigger is None:
if not self.can_add_to_studio_default:
return
initialized = True
on_change_trigger = []
self._add_to_studio_default(on_change_trigger)
if initialized:
for callback in on_change_trigger:
callback()
@abstractmethod
def add_to_studio_default(self):
def _add_to_studio_default(self, on_change_trigger):
"""Item's implementation to set current values as studio's overrides.
Mark item and it's children as they have studio overrides.
@ -592,8 +607,23 @@ class BaseItemEntity(BaseEntity):
"""
pass
def add_to_project_override(self, on_change_trigger=None):
initialized = False
if on_change_trigger is None:
if not self.can_add_to_project_override:
return
initialized = True
on_change_trigger = []
self._add_to_project_override(on_change_trigger)
if initialized:
for callback in on_change_trigger:
callback()
@abstractmethod
def add_to_project_override(self):
def _add_to_project_override(self, on_change_trigger):
"""Item's implementation to set values as overriden for project.
Mark item and all it's children to be stored as project overrides.

View file

@ -435,13 +435,10 @@ class DictImmutableKeysEntity(ItemEntity):
self._ignore_child_changes = False
def add_to_studio_default(self):
if self._override_state is not OverrideState.STUDIO:
return
def _add_to_studio_default(self, on_change_trigger):
self._ignore_child_changes = True
for child_obj in self.non_gui_children.values():
child_obj.add_to_studio_default()
child_obj.add_to_studio_default(on_change_trigger)
self._ignore_child_changes = False
self.parent.on_child_change(self)
@ -451,13 +448,10 @@ class DictImmutableKeysEntity(ItemEntity):
child_obj.remove_from_studio_default(on_change_trigger)
self._ignore_child_changes = False
def add_to_project_override(self):
if self._override_state is not OverrideState.PROJECT:
return
def _add_to_project_override(self, _on_change_trigger):
self._ignore_child_changes = True
for child_obj in self.non_gui_children.values():
child_obj.add_to_project_override()
child_obj.add_to_project_override(_on_change_trigger)
self._ignore_child_changes = False
self.parent.on_child_change(self)

View file

@ -443,9 +443,7 @@ class DictMutableKeysEntity(EndpointEntity):
self.set_override_state(self._override_state)
on_change_trigger.append(self.on_change)
def add_to_studio_default(self):
if self._override_state is not OverrideState.STUDIO:
return
def _add_to_studio_default(self, _on_change_trigger):
self._has_studio_override = True
self.on_change()
@ -473,9 +471,7 @@ class DictMutableKeysEntity(EndpointEntity):
on_change_trigger.append(self.on_change)
def add_to_project_override(self):
if self._override_state is not OverrideState.PROJECT:
return
def _add_to_project_override(self, _on_change_trigger):
self._has_project_override = True
self.on_change()

View file

@ -276,9 +276,7 @@ class InputEntity(EndpointEntity):
raise NotImplementedError("BUG: Unexcpected part of code.")
def add_to_studio_default(self):
if self._override_state is not OverrideState.STUDIO:
return
def _add_to_studio_default(self, _on_change_trigger):
self._has_studio_override = True
self.on_change()
@ -293,9 +291,7 @@ class InputEntity(EndpointEntity):
on_change_trigger.append(self.on_change)
def add_to_project_override(self):
if self._override_state is not OverrideState.PROJECT:
return
def _add_to_project_override(self, _on_change_trigger):
self._has_project_override = True
self.on_change()

View file

@ -162,20 +162,20 @@ class PathEntity(ItemEntity):
def update_studio_value(self, value):
self.child_obj.update_studio_value(value)
def _discard_changes(self, *args):
self.child_obj.discard_changes(*args)
def _discard_changes(self, *args, **kwargs):
self.child_obj.discard_changes(*args, **kwargs)
def add_to_studio_default(self):
self.child_obj.add_to_studio_default()
def _add_to_studio_default(self, *args, **kwargs):
self.child_obj.add_to_studio_default(*args, **kwargs)
def _remove_from_studio_default(self, *args):
self.child_obj.remove_from_studio_default(*args)
def _remove_from_studio_default(self, *args, **kwargs):
self.child_obj.remove_from_studio_default(*args, **kwargs)
def add_to_project_override(self):
self.child_obj.add_to_project_override()
def _add_to_project_override(self, *args, **kwargs):
self.child_obj.add_to_project_override(*args, **kwargs)
def _remove_from_project_override(self, *args):
self.child_obj.remove_from_project_override(*args)
def _remove_from_project_override(self, *args, **kwargs):
self.child_obj.remove_from_project_override(*args, **kwargs)
def reset_callbacks(self):
super(PathEntity, self).reset_callbacks()
@ -359,9 +359,7 @@ class ListStrictEntity(ItemEntity):
for child_obj in self.children:
child_obj.discard_changes(on_change_trigger)
def add_to_studio_default(self):
if self._override_state is not OverrideState.STUDIO:
return
def _add_to_studio_default(self, _on_change_trigger):
self._has_studio_override = True
self.on_change()
@ -375,14 +373,11 @@ class ListStrictEntity(ItemEntity):
self._has_studio_override = False
def add_to_project_override(self):
def _add_to_project_override(self, _on_change_trigger):
self._has_project_override = True
self.on_change()
def _remove_from_project_override(self, on_change_trigger):
if self._override_state is not OverrideState.PROJECT:
return
self._ignore_child_changes = True
for child_obj in self.children:

View file

@ -357,9 +357,7 @@ class ListEntity(EndpointEntity):
on_change_trigger.append(self.on_change)
def add_to_studio_default(self):
if self._override_state is not OverrideState.STUDIO:
return
def _add_to_studio_default(self, _on_change_trigger):
self._has_studio_override = True
self.on_change()
@ -387,7 +385,7 @@ class ListEntity(EndpointEntity):
on_change_trigger.append(self.on_change)
def add_to_project_override(self):
def _add_to_project_override(self, _on_change_trigger):
self._has_project_override = True
self.on_change()

View file

@ -321,20 +321,20 @@ class RootEntity(BaseItemEntity):
for child_obj in self.non_gui_children.values():
child_obj.discard_changes(on_change_trigger)
def add_to_studio_default(self):
def _add_to_studio_default(self, *args, **kwargs):
"""Implementation of abstract method only trigger children callback."""
for child_obj in self.non_gui_children.values():
child_obj.add_to_studio_default()
child_obj.add_to_studio_default(*args, **kwargs)
def _remove_from_studio_default(self, on_change_trigger):
"""Implementation of abstract method only trigger children callback."""
for child_obj in self.non_gui_children.values():
child_obj.remove_from_studio_default(on_change_trigger)
def add_to_project_override(self):
def _add_to_project_override(self, *args, **kwargs):
"""Implementation of abstract method only trigger children callback."""
for child_obj in self.non_gui_children.values():
child_obj.add_to_project_override()
child_obj.add_to_project_override(*args, **kwargs)
def _remove_from_project_override(self, on_change_trigger):
"""Implementation of abstract method only trigger children callback."""