styles are automatically updated on _ignore_value_changes changed to False

This commit is contained in:
iLLiCiTiT 2020-08-25 18:09:02 +02:00
parent 6342f02574
commit 31d75aa5cc
2 changed files with 51 additions and 2 deletions

View file

@ -12,11 +12,12 @@ class StudioWidget(QtWidgets.QWidget):
is_overriden = False
is_group = False
any_parent_is_group = False
ignore_value_changes = False
def __init__(self, parent=None):
super(StudioWidget, self).__init__(parent)
self._ignore_value_changes = False
self.input_fields = []
scroll_widget = QtWidgets.QScrollArea(self)
@ -55,6 +56,20 @@ class StudioWidget(QtWidgets.QWidget):
self.reset()
@property
def ignore_value_changes(self):
return self._ignore_value_changes
@ignore_value_changes.setter
def ignore_value_changes(self, value):
self._ignore_value_changes = value
if value is False:
self.hierarchical_style_update()
def hierarchical_style_update(self):
for input_field in self.input_fields:
input_field.hierarchical_style_update()
def reset(self):
if self.content_layout.count() != 0:
for widget in self.input_fields:
@ -256,7 +271,7 @@ class ProjectWidget(QtWidgets.QWidget):
super(ProjectWidget, self).__init__(parent)
self.is_overidable = False
self.ignore_value_changes = False
self._ignore_value_changes = False
self.project_name = None
self.input_fields = []
@ -310,6 +325,20 @@ class ProjectWidget(QtWidgets.QWidget):
self.reset()
@property
def ignore_value_changes(self):
return self._ignore_value_changes
@ignore_value_changes.setter
def ignore_value_changes(self, value):
self._ignore_value_changes = value
if value is False:
self.hierarchical_style_update()
def hierarchical_style_update(self):
for input_field in self.input_fields:
input_field.hierarchical_style_update()
def reset(self):
values = {"project": config.global_project_configurations()}
schema = lib.gui_schema("projects_schema", "0_project_gui_schema")

View file

@ -53,6 +53,9 @@ class ConfigWidget:
raise NotImplementedError(
"Method `reset_children_attributes` not implemented!"
)
@ignore_value_changes.setter
def ignore_value_changes(self, value):
self._parent.ignore_value_changes = value
def item_value(self):
raise NotImplementedError(
@ -136,6 +139,9 @@ class InputWidget(ConfigWidget):
return NOT_SET, False
return self.config_value(), self.is_group
def hierarchical_style_update(self):
self.update_style()
@property
def child_modified(self):
return self.is_modified
@ -1780,6 +1786,11 @@ class DictWidget(QtWidgets.QWidget, ConfigWidget):
self.update_style()
def hierarchical_style_update(self):
self.update_style()
for input_field in self.input_fields:
input_field.hierarchical_style_update()
def update_style(self, is_overriden=None):
child_modified = self.child_modified
child_state = self.style_state(self.child_overriden, child_modified)
@ -1951,6 +1962,11 @@ class DictInvisible(QtWidgets.QWidget, ConfigWidget):
self.value_changed.emit(self)
def hierarchical_style_update(self):
self.update_style()
for input_field in self.input_fields:
input_field.hierarchical_style_update()
def apply_overrides(self, override_value):
self._is_overriden = False
for item in self.input_fields:
@ -2051,6 +2067,10 @@ class DictFormWidget(QtWidgets.QWidget, ConfigWidget):
self.input_fields[key] = item
return item
def hierarchical_style_update(self):
for input_field in self.input_fields.items():
input_field.hierarchical_style_update()
def item_value(self):
output = {}
for input_field in self.input_fields.values():