diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 9e47183bc7..57f970bffd 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -34,6 +34,13 @@ class BaseWidget(QtWidgets.QWidget): return "studio" return "" + def hierarchical_style_update(self): + raise NotImplementedError( + "{} not implemented `hierarchical_style_update`".format( + self.__class__.__name__ + ) + ) + def show_actions_menu(self, event): print("Show actions for {}".format(self.entity.path)) @@ -41,7 +48,7 @@ class BaseWidget(QtWidgets.QWidget): class InputWidget(BaseWidget): def update_style(self): state = self.get_style_state( - self.entity.is_invalid, + self.is_invalid, self.entity.has_unsaved_changes, self.entity.has_project_override, self.entity.has_studio_override @@ -57,6 +64,9 @@ class InputWidget(BaseWidget): self.label_widget.setProperty("state", state) self.label_widget.style().polish(self.label_widget) + def hierarchical_style_update(self): + self.update_style() + class GUIWidget(BaseWidget): separator_height = 2 @@ -97,3 +107,6 @@ class GUIWidget(BaseWidget): def _on_entity_change(self): pass + + def hierarchical_style_update(self): + pass diff --git a/pype/tools/settings/settings/widgets/categories.py b/pype/tools/settings/settings/widgets/categories.py index 304237443d..d34bd022af 100644 --- a/pype/tools/settings/settings/widgets/categories.py +++ b/pype/tools/settings/settings/widgets/categories.py @@ -530,9 +530,12 @@ class SystemWidget(SettingsCategoryWidget): self.add_children_gui() + self.ignore_input_changes.set_ignore(True) + for input_field in self.input_fields: input_field.set_entity_value() - # self.hierarchical_style_update() + + self.ignore_input_changes.set_ignore(False) self.set_state(CategoryState.Idle) diff --git a/pype/tools/settings/settings/widgets/dict_mutable_widget.py b/pype/tools/settings/settings/widgets/dict_mutable_widget.py index 2120593915..86f50a8c7a 100644 --- a/pype/tools/settings/settings/widgets/dict_mutable_widget.py +++ b/pype/tools/settings/settings/widgets/dict_mutable_widget.py @@ -690,7 +690,7 @@ class DictMutableKeysWidget(BaseWidget): def update_style(self): _style_state = self.get_style_state( - self.entity.is_invalid, + self.is_invalid, self.entity.has_unsaved_changes, self.entity.has_project_override, self.entity.has_studio_override diff --git a/pype/tools/settings/settings/widgets/item_widgets.py b/pype/tools/settings/settings/widgets/item_widgets.py index 2ec2705a60..4fd3ca15de 100644 --- a/pype/tools/settings/settings/widgets/item_widgets.py +++ b/pype/tools/settings/settings/widgets/item_widgets.py @@ -123,6 +123,11 @@ class DictImmutableKeysWidget(BaseWidget): for input_field in self.input_fields: input_field.set_entity_value() + 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_has_studio_override = self.entity.child_has_studio_override child_modified = self.entity.has_unsaved_changes @@ -438,6 +443,9 @@ class PathWidget(BaseWidget): def set_entity_value(self): self.input_field.set_entity_value() + def hierarchical_style_update(self): + self.input_field.hierarchical_style_update() + def _on_entity_change(self): print("_on_entity_change", self.__class__.__name__, self.entity.path) diff --git a/pype/tools/settings/settings/widgets/list_item_widget.py b/pype/tools/settings/settings/widgets/list_item_widget.py index 3cd4f3e742..de385afb0e 100644 --- a/pype/tools/settings/settings/widgets/list_item_widget.py +++ b/pype/tools/settings/settings/widgets/list_item_widget.py @@ -163,6 +163,9 @@ class ListItem(QtWidgets.QWidget): self.up_btn.setEnabled(True) self.down_btn.setEnabled(True) + def hierarchical_style_update(self): + self.input_field.hierarchical_style_update() + class ListWidget(InputWidget): def create_ui(self): @@ -325,3 +328,12 @@ class ListWidget(InputWidget): self.empty_row.setVisible(self.count() == 0) self.updateGeometry() + + def update_style(self): + # print("ListWidget update_style") + pass + + def hierarchical_style_update(self): + self.update_style() + for input_field in self.input_fields: + input_field.hierarchical_style_update()