is invalid is propagated as expected

This commit is contained in:
iLLiCiTiT 2021-02-10 18:38:48 +01:00
parent a3b83959ec
commit 448e4f616e
4 changed files with 39 additions and 7 deletions

View file

@ -12,7 +12,7 @@ class BaseWidget(QtWidgets.QWidget):
self.ignore_input_changes = entity_widget.ignore_input_changes
self.create_ui_for_entity = entity_widget.create_ui_for_entity
self.is_invalid = False
self._is_invalid = False
self._style_state = None
super(BaseWidget, self).__init__(entity_widget.content_widget)
@ -22,6 +22,10 @@ class BaseWidget(QtWidgets.QWidget):
self.label_widget = None
self.create_ui()
@property
def is_invalid(self):
return self._is_invalid
@staticmethod
def get_style_state(
is_invalid, is_modified, has_project_override, has_studio_override

View file

@ -178,6 +178,10 @@ class ModifiableDictItem(QtWidgets.QWidget):
self.create_addible_ui()
self.update_style()
@property
def is_invalid(self):
return self._invalid or self.child_invalid
@property
def child_invalid(self):
return self.is_key_duplicated or self.input_field.child_invalid

View file

@ -140,7 +140,7 @@ class DictImmutableKeysWidget(BaseWidget):
has_project_override = self.entity.child_has_project_override
has_studio_override = self.entity.child_has_studio_override
is_invalid = self.child_invalid
is_invalid = self.is_invalid
if self.body_widget:
child_style_state = self.get_style_state(
is_invalid,
@ -185,10 +185,14 @@ class DictImmutableKeysWidget(BaseWidget):
def _on_entity_change(self):
pass
@property
def is_invalid(self):
return self._is_invalid or self.child_invalid
@property
def child_invalid(self):
for input_field in self.input_fields:
if input_field.child_invalid:
if input_field.is_invalid:
return True
return False
@ -389,7 +393,7 @@ class RawJsonWidget(InputWidget):
def set_entity_value(self):
self.input_field.set_value(self.entity.value)
self.is_invalid = self.input_field.has_invalid_value()
self._is_invalid = self.input_field.has_invalid_value()
def _on_entity_change(self):
if self.is_invalid:
@ -402,7 +406,7 @@ class RawJsonWidget(InputWidget):
if self.ignore_input_changes:
return
self.is_invalid = self.input_field.has_invalid_value()
self._is_invalid = self.input_field.has_invalid_value()
if not self.is_invalid:
self.entity.set_value(self.input_field.json_value())
self.update_style()
@ -493,6 +497,7 @@ class PathWidget(BaseWidget):
has_unsaved_changes = self.entity.has_unsaved_changes
if not has_unsaved_changes and self.entity.group_item:
has_unsaved_changes = self.entity.group_item.has_unsaved_changes
state = self.get_style_state(
self.is_invalid,
has_unsaved_changes,
@ -507,9 +512,13 @@ class PathWidget(BaseWidget):
self.label_widget.setProperty("state", state)
self.label_widget.style().polish(self.label_widget)
@property
def is_invalid(self):
return self._is_invalid or self.child_invalid
@property
def child_invalid(self):
return self.input_field.child_invalid
return self.input_field.is_invalid
def get_invalid(self):
return self.input_field.get_invalid()

View file

@ -117,6 +117,10 @@ class ListItem(QtWidgets.QWidget):
self.spacer_widget = spacer_widget
@property
def is_invalid(self):
return self.input_field.is_invalid
def get_invalid(self):
return self.input_field.get_invalid()
@ -380,6 +384,17 @@ class ListWidget(InputWidget):
self.updateGeometry()
@property
def is_invalid(self):
return self._is_invalid or self.child_invalid
@property
def child_invalid(self):
for input_field in self.input_fields:
if input_field.is_invalid:
return True
return False
def update_style(self):
if not self.body_widget and not self.label_widget:
return
@ -394,7 +409,7 @@ class ListWidget(InputWidget):
has_project_override = self.entity.child_has_project_override
has_studio_override = self.entity.child_has_studio_override
child_invalid = self.child_invalid
child_invalid = self.is_invalid
if self.body_widget:
child_style_state = self.get_style_state(