Merge pull request #1457 from pypeclub/bugfix/settings_actions_process_fix

This commit is contained in:
Milan Kolar 2021-05-04 16:06:34 +02:00 committed by GitHub
commit 7afdbbcfb8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 79 additions and 57 deletions

View file

@ -457,25 +457,16 @@ class BaseItemEntity(BaseEntity):
pass
@property
def can_discard_changes(self):
"""Result defines if `discard_changes` will be processed.
Also can be used as validation before the method is called.
"""
def _can_discard_changes(self):
"""Defines if `discard_changes` will be processed."""
return self.has_unsaved_changes
@property
def can_add_to_studio_default(self):
"""Result defines if `add_to_studio_default` will be processed.
Also can be used as validation before the method is called.
"""
def _can_add_to_studio_default(self):
"""Defines if `add_to_studio_default` will be processed."""
if self._override_state is not OverrideState.STUDIO:
return False
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
# Skip if entity is under group
if self.group_item:
return False
@ -487,30 +478,18 @@ class BaseItemEntity(BaseEntity):
return True
@property
def can_remove_from_studio_default(self):
"""Result defines if `remove_from_studio_default` can be triggered.
This can be also used as validation before the method is called.
"""
def _can_remove_from_studio_default(self):
"""Defines if `remove_from_studio_default` can be processed."""
if self._override_state is not OverrideState.STUDIO:
return False
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
if not self.has_studio_override:
return False
return True
@property
def can_add_to_project_override(self):
"""Result defines if `add_to_project_override` can be triggered.
Also can be used as validation before the method is called.
"""
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
def _can_add_to_project_override(self):
"""Defines if `add_to_project_override` can be processed."""
# Show only when project overrides are set
if self._override_state is not OverrideState.PROJECT:
return False
@ -525,14 +504,8 @@ class BaseItemEntity(BaseEntity):
return True
@property
def can_remove_from_project_override(self):
"""Result defines if `remove_from_project_override` can be triggered.
This can be also used as validation before the method is called.
"""
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
def _can_remove_from_project_override(self):
"""Defines if `remove_from_project_override` can be processed."""
if self._override_state is not OverrideState.PROJECT:
return False
@ -544,6 +517,54 @@ class BaseItemEntity(BaseEntity):
return False
return True
@property
def can_trigger_discard_changes(self):
"""Defines if can trigger `discard_changes`.
Also can be used as validation before the method is called.
"""
return self._can_discard_changes
@property
def can_trigger_add_to_studio_default(self):
"""Defines if can trigger `add_to_studio_default`.
Also can be used as validation before the method is called.
"""
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
return self._can_add_to_studio_default
@property
def can_trigger_remove_from_studio_default(self):
"""Defines if can trigger `remove_from_studio_default`.
Also can be used as validation before the method is called.
"""
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
return self._can_remove_from_studio_default
@property
def can_trigger_add_to_project_override(self):
"""Defines if can trigger `add_to_project_override`.
Also can be used as validation before the method is called.
"""
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
return self._can_add_to_project_override
@property
def can_trigger_remove_from_project_override(self):
"""Defines if can trigger `remove_from_project_override`.
Also can be used as validation before the method is called.
"""
if self.is_dynamic_item or self.is_in_dynamic_item:
return False
return self._can_remove_from_project_override
def discard_changes(self, on_change_trigger=None):
"""Discard changes on entity and it's children.
@ -568,7 +589,7 @@ class BaseItemEntity(BaseEntity):
"""
initialized = False
if on_change_trigger is None:
if not self.can_discard_changes:
if not self.can_trigger_discard_changes:
return
initialized = True
@ -588,7 +609,7 @@ class BaseItemEntity(BaseEntity):
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:
if not self.can_trigger_add_to_studio_default:
return
initialized = True
@ -625,7 +646,7 @@ class BaseItemEntity(BaseEntity):
"""
initialized = False
if on_change_trigger is None:
if not self.can_remove_from_studio_default:
if not self.can_trigger_remove_from_studio_default:
return
initialized = True
@ -649,7 +670,7 @@ class BaseItemEntity(BaseEntity):
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:
if not self.can_trigger_add_to_project_override:
return
initialized = True
@ -689,7 +710,7 @@ class BaseItemEntity(BaseEntity):
initialized = False
if on_change_trigger is None:
if not self.can_remove_from_project_override:
if not self.can_trigger_remove_from_project_override:
return
initialized = True
on_change_trigger = []

View file

@ -522,7 +522,7 @@ class DictMutableKeysEntity(EndpointEntity):
self.had_project_override = value is not NOT_SET
def _discard_changes(self, on_change_trigger):
if not self.can_discard_changes:
if not self._can_discard_changes:
return
self.set_override_state(self._override_state)
@ -533,7 +533,7 @@ class DictMutableKeysEntity(EndpointEntity):
self.on_change()
def _remove_from_studio_default(self, on_change_trigger):
if not self.can_remove_from_studio_default:
if not self._can_remove_from_studio_default:
return
value = self._default_value
@ -574,7 +574,7 @@ class DictMutableKeysEntity(EndpointEntity):
self.on_change()
def _remove_from_project_override(self, on_change_trigger):
if not self.can_remove_from_project_override:
if not self._can_remove_from_project_override:
return
if self._has_studio_override:

View file

@ -251,7 +251,7 @@ class InputEntity(EndpointEntity):
self._current_value = copy.deepcopy(value)
def _discard_changes(self, on_change_trigger=None):
if not self.can_discard_changes:
if not self._can_discard_changes:
return
self._value_is_modified = False
@ -289,7 +289,7 @@ class InputEntity(EndpointEntity):
self.on_change()
def _remove_from_studio_default(self, on_change_trigger):
if not self.can_remove_from_studio_default:
if not self._can_remove_from_studio_default:
return
value = self._default_value
@ -307,7 +307,7 @@ class InputEntity(EndpointEntity):
self.on_change()
def _remove_from_project_override(self, on_change_trigger):
if not self.can_remove_from_project_override:
if not self._can_remove_from_project_override:
return
self._has_project_override = False

View file

@ -453,4 +453,5 @@ class ListStrictEntity(ItemEntity):
def reset_callbacks(self):
super(ListStrictEntity, self).reset_callbacks()
self.child_obj.reset_callbacks()
for child_obj in self.children:
child_obj.reset_callbacks()

View file

@ -343,7 +343,7 @@ class ListEntity(EndpointEntity):
return output
def _discard_changes(self, on_change_trigger):
if not self.can_discard_changes:
if not self._can_discard_changes:
return
not_set = object()
@ -405,7 +405,7 @@ class ListEntity(EndpointEntity):
self.on_change()
def _remove_from_studio_default(self, on_change_trigger):
if not self.can_remove_from_studio_default:
if not self._can_remove_from_studio_default:
return
value = self._default_value
@ -433,7 +433,7 @@ class ListEntity(EndpointEntity):
self.on_change()
def _remove_from_project_override(self, on_change_trigger):
if not self.can_remove_from_project_override:
if not self._can_remove_from_project_override:
return
if self._has_studio_override:

View file

@ -71,7 +71,7 @@ class BaseWidget(QtWidgets.QWidget):
def _discard_changes_action(self, menu, actions_mapping):
# TODO use better condition as unsaved changes may be caused due to
# changes in schema.
if not self.entity.can_discard_changes:
if not self.entity.can_trigger_discard_changes:
return
def discard_changes():
@ -86,7 +86,7 @@ class BaseWidget(QtWidgets.QWidget):
def _add_to_studio_default(self, menu, actions_mapping):
"""Set values as studio overrides."""
# Skip if not in studio overrides
if not self.entity.can_add_to_studio_default:
if not self.entity.can_trigger_add_to_studio_default:
return
action = QtWidgets.QAction("Add to studio default")
@ -94,7 +94,7 @@ class BaseWidget(QtWidgets.QWidget):
menu.addAction(action)
def _remove_from_studio_default_action(self, menu, actions_mapping):
if not self.entity.can_remove_from_studio_default:
if not self.entity.can_trigger_remove_from_studio_default:
return
def remove_from_studio_default():
@ -106,7 +106,7 @@ class BaseWidget(QtWidgets.QWidget):
menu.addAction(action)
def _add_to_project_override_action(self, menu, actions_mapping):
if not self.entity.can_add_to_project_override:
if not self.entity.can_trigger_add_to_project_override:
return
action = QtWidgets.QAction("Add to project project override")
@ -114,7 +114,7 @@ class BaseWidget(QtWidgets.QWidget):
menu.addAction(action)
def _remove_from_project_override_action(self, menu, actions_mapping):
if not self.entity.can_remove_from_project_override:
if not self.entity.can_trigger_remove_from_project_override:
return
def remove_from_project_override():