diff --git a/pype/tools/settings/settings/widgets/anatomy_types.py b/pype/tools/settings/settings/widgets/anatomy_types.py index 9a20df3ae4..ad24d54050 100644 --- a/pype/tools/settings/settings/widgets/anatomy_types.py +++ b/pype/tools/settings/settings/widgets/anatomy_types.py @@ -72,19 +72,15 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): content_layout.setContentsMargins(CHILD_OFFSET, 5, 0, 0) content_layout.setSpacing(5) - content_layout.addWidget(self.root_widget) - content_layout.addWidget(self.templates_widget) - content_layout.addWidget(self.imageio_widget) + for input_field in self.input_fields: + content_layout.addWidget(input_field) + input_field.value_changed.connect(self._on_value_change) body_widget.set_content_widget(content_widget) self.body_widget = body_widget self.label_widget = body_widget.label_widget - self.root_widget.value_changed.connect(self._on_value_change) - self.templates_widget.value_changed.connect(self._on_value_change) - self.imageio_widget.value_changed.connect(self._on_value_change) - def update_default_values(self, parent_values): self._state = None self._child_state = None @@ -94,9 +90,8 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): else: value = NOT_SET - self.root_widget.update_default_values(value) - self.templates_widget.update_default_values(value) - self.imageio_widget.update_default_values(value) + for input_field in self.input_fields: + input_field.update_default_values(value) def update_studio_values(self, parent_values): self._state = None @@ -107,9 +102,8 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): else: value = NOT_SET - self.root_widget.update_studio_values(value) - self.templates_widget.update_studio_values(value) - self.imageio_widget.update_studio_values(value) + for input_field in self.input_fields: + input_field.update_studio_values(value) def apply_overrides(self, parent_values): # Make sure this is set to False @@ -120,9 +114,8 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): if parent_values is not NOT_SET: value = parent_values.get(self.key, value) - self.root_widget.apply_overrides(value) - self.templates_widget.apply_overrides(value) - self.imageio_widget.apply_overrides(value) + for input_field in self.input_fields: + input_field.apply_overrides(value) def set_value(self, value): raise TypeError("AnatomyWidget does not allow to use `set_value`") @@ -156,67 +149,58 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): self._child_state = child_state def hierarchical_style_update(self): - self.root_widget.hierarchical_style_update() - self.templates_widget.hierarchical_style_update() - self.imageio_widget.hierarchical_style_update() + for input_field in self.input_fields: + input_field.hierarchical_style_update() + self.update_style() @property def child_has_studio_override(self): - return ( - self.root_widget.child_has_studio_override - or self.templates_widget.child_has_studio_override - or self.imageio_widget.child_has_studio_override - ) + for input_field in self.input_fields: + if input_field.child_has_studio_override: + return True + return False @property def child_modified(self): - return ( - self.root_widget.child_modified - or self.templates_widget.child_modified - or self.imageio_widget.child_modified - ) + for input_field in self.input_fields: + if input_field.child_modified: + return True + return False @property def child_overriden(self): - return ( - self.root_widget.child_overriden - or self.templates_widget.child_overriden - or self.imageio_widget.child_overriden - ) + for input_field in self.input_fields: + if input_field.child_overriden: + return True + return False @property def child_invalid(self): - return ( - self.root_widget.child_invalid - or self.templates_widget.child_invalid - or self.imageio_widget.child_invalid - ) + for input_field in self.input_fields: + if input_field.child_invalid: + return True + return False def set_as_overriden(self): - self.root_widget.set_as_overriden() - self.templates_widget.set_as_overriden() - self.imageio_widget.set_as_overriden() + for input_field in self.input_fields: + input_field.child_invalid.set_as_overriden() def remove_overrides(self): - self.root_widget.remove_overrides() - self.templates_widget.remove_overrides() - self.imageio_widget.remove_overrides() + for input_field in self.input_fields: + input_field.remove_overrides() def reset_to_pype_default(self): - self.root_widget.reset_to_pype_default() - self.templates_widget.reset_to_pype_default() - self.imageio_widget.reset_to_pype_default() + for input_field in self.input_fields: + input_field.reset_to_pype_default() def set_studio_default(self): - self.root_widget.set_studio_default() - self.templates_widget.set_studio_default() - self.imageio_widget.set_studio_default() + for input_field in self.input_fields: + input_field.set_studio_default() def discard_changes(self): - self.root_widget.discard_changes() - self.templates_widget.discard_changes() - self.imageio_widget.discard_changes() + for input_field in self.input_fields: + input_field.discard_changes() def overrides(self): if self.child_overriden: @@ -225,26 +209,30 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): def item_value(self): output = {} - output.update(self.root_widget.config_value()) - output.update(self.templates_widget.config_value()) - output.update(self.imageio_widget.config_value()) + for input_field in self.input_fields: + output.update(input_field.config_value()) return output def studio_overrides(self): - if ( - self.root_widget.child_has_studio_override - or self.templates_widget.child_has_studio_override - or self.imageio_widget.child_has_studio_override - ): - groups = [ - self.root_widget.key, - self.templates_widget.key, - self.imageio_widget.key - ] - value = self.config_value() - value[self.key][METADATA_KEY] = {"groups": groups} - return value, True - return NOT_SET, False + has_overrides = False + for input_field in self.input_fields: + if input_field.child_has_studio_override: + has_overrides = True + break + + if not has_overrides: + return NOT_SET, False + + groups = [] + for input_field in self.input_fields: + groups.append(input_field.key) + + value = self.config_value() + if METADATA_KEY not in value[self.key]: + value[self.key][METADATA_KEY] = {} + value[self.key][METADATA_KEY]["groups"] = groups + + return value, True def config_value(self): return {self.key: self.item_value()} @@ -267,6 +255,7 @@ class RootsWidget(QtWidgets.QWidget, SettingObject): self.studio_is_multiroot = False self.was_multiroot = NOT_SET + def create_ui(self, _label_widget=None): checkbox_widget = QtWidgets.QWidget(self) multiroot_label = QtWidgets.QLabel( "Use multiple roots", checkbox_widget @@ -650,6 +639,7 @@ class TemplatesWidget(QtWidgets.QWidget, SettingObject): self.key = input_data["key"] + def create_ui(self, label_widget=None): body_widget = ExpandingWidget("Templates", self) content_widget = QtWidgets.QWidget(body_widget) body_widget.set_content_widget(content_widget) @@ -775,5 +765,5 @@ class TemplatesWidget(QtWidgets.QWidget, SettingObject): TypeToKlass.types["anatomy"] = AnatomyWidget -TypeToKlass.types["anatomy_roots"] = AnatomyWidget -TypeToKlass.types["anatomy_templates"] = AnatomyWidget +TypeToKlass.types["anatomy_roots"] = RootsWidget +TypeToKlass.types["anatomy_templates"] = TemplatesWidget