mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 06:12:19 +01:00
is invalid is propagated as expected
This commit is contained in:
parent
a3b83959ec
commit
448e4f616e
4 changed files with 39 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue