has unsaved changes should work properly

This commit is contained in:
iLLiCiTiT 2021-01-25 18:43:27 +01:00
parent 4407f5186c
commit b9c31d1c5d
3 changed files with 24 additions and 4 deletions

View file

@ -159,6 +159,8 @@ class BaseEntity:
self.defaults_not_set = False
# Default input attributes
self.had_default_value = False
self.has_studio_override = False
self.had_studio_override = False
@ -168,7 +170,7 @@ class BaseEntity:
self.value_is_modified = False
self.is_invalid = False
self.override_state = OverrideState.STUDIO
self.override_state = OverrideState.NOT_DEFINED
@property
def path(self):

View file

@ -35,6 +35,7 @@ __all__ = (
class OverrideState(enum.Enum):
NOT_DEFINED = object()
DEFAULTS = object()
STUDIO = object()
PROJECT = object()

View file

@ -125,17 +125,33 @@ class InputEntity(ItemEntity):
@property
def has_unsaved_changes(self):
if self.override_state is OverrideState.NOT_DEFINED:
return False
if self.value_is_modified:
return True
if self.override_state is OverrideState.STUDIO:
if self.override_state is OverrideState.DEFAULTS:
if not self.had_default_value:
return True
elif self.override_state is OverrideState.STUDIO:
if self.has_studio_override != self.had_studio_override:
return True
if not self.has_studio_override and not self.had_default_value:
return True
elif self.override_state is OverrideState.PROJECT:
if self.has_project_override != self.had_project_override:
return True
if (
not self.has_project_override
and not self.has_studio_override
and not self.had_default_value
):
return True
return False
def settings_value(self):
@ -179,9 +195,10 @@ class InputEntity(ItemEntity):
if value is NOT_SET:
value = self.value_on_not_set
self.value_is_modified = True
self.had_default_value = False
else:
self.value_is_modified = False
self.had_default_value = True
self.value_is_modified = False
self._current_value = copy.deepcopy(value)