mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-26 05:42:15 +01:00
removed singleroot support in settings tool
This commit is contained in:
parent
7e3909fff0
commit
a32377231e
1 changed files with 22 additions and 219 deletions
|
|
@ -250,35 +250,12 @@ class RootsWidget(QtWidgets.QWidget, SettingObject):
|
|||
|
||||
self.key = input_data["key"]
|
||||
|
||||
self._multiroot_state = None
|
||||
self.default_is_multiroot = False
|
||||
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
|
||||
)
|
||||
multiroot_checkbox = QtWidgets.QCheckBox(checkbox_widget)
|
||||
|
||||
checkbox_layout = QtWidgets.QHBoxLayout(checkbox_widget)
|
||||
checkbox_layout.addWidget(multiroot_label, 0)
|
||||
checkbox_layout.addWidget(multiroot_checkbox, 1)
|
||||
|
||||
body_widget = ExpandingWidget("Roots", self)
|
||||
content_widget = QtWidgets.QWidget(body_widget)
|
||||
|
||||
path_widget_data = {
|
||||
"key": self.key,
|
||||
"multipath": False,
|
||||
"multiplatform": True
|
||||
}
|
||||
singleroot_widget = PathWidget(
|
||||
path_widget_data, self,
|
||||
as_widget=True, parent_widget=content_widget
|
||||
)
|
||||
singleroot_widget.create_ui()
|
||||
multiroot_data = {
|
||||
"key": self.key,
|
||||
"expandable": False,
|
||||
|
|
@ -295,8 +272,6 @@ class RootsWidget(QtWidgets.QWidget, SettingObject):
|
|||
|
||||
content_layout = QtWidgets.QVBoxLayout(content_widget)
|
||||
content_layout.setContentsMargins(0, 0, 0, 0)
|
||||
content_layout.addWidget(checkbox_widget)
|
||||
content_layout.addWidget(singleroot_widget)
|
||||
content_layout.addWidget(multiroot_widget)
|
||||
|
||||
body_widget.set_content_widget(content_widget)
|
||||
|
|
@ -307,24 +282,11 @@ class RootsWidget(QtWidgets.QWidget, SettingObject):
|
|||
main_layout.addWidget(body_widget)
|
||||
|
||||
self.body_widget = body_widget
|
||||
self.multiroot_label = multiroot_label
|
||||
self.multiroot_checkbox = multiroot_checkbox
|
||||
self.singleroot_widget = singleroot_widget
|
||||
self.multiroot_widget = multiroot_widget
|
||||
|
||||
multiroot_checkbox.stateChanged.connect(self._on_multiroot_checkbox)
|
||||
singleroot_widget.value_changed.connect(self._on_value_change)
|
||||
multiroot_widget.value_changed.connect(self._on_value_change)
|
||||
|
||||
self._on_multiroot_checkbox()
|
||||
|
||||
@property
|
||||
def is_multiroot(self):
|
||||
return self.multiroot_checkbox.isChecked()
|
||||
|
||||
def update_default_values(self, parent_values):
|
||||
self._state = None
|
||||
self._multiroot_state = None
|
||||
self._is_modified = False
|
||||
|
||||
if isinstance(parent_values, dict):
|
||||
|
|
@ -339,28 +301,16 @@ class RootsWidget(QtWidgets.QWidget, SettingObject):
|
|||
is_multiroot = True
|
||||
break
|
||||
|
||||
self.default_is_multiroot = is_multiroot
|
||||
self.was_multiroot = is_multiroot
|
||||
self.set_multiroot(is_multiroot)
|
||||
|
||||
self._has_studio_override = False
|
||||
self._had_studio_override = False
|
||||
if is_multiroot:
|
||||
for _value in value.values():
|
||||
singleroot_value = _value
|
||||
break
|
||||
|
||||
multiroot_value = value
|
||||
else:
|
||||
singleroot_value = value
|
||||
multiroot_value = {"": value}
|
||||
if not is_multiroot and value is not NOT_SET:
|
||||
value = {"": value}
|
||||
|
||||
self.singleroot_widget.update_default_values(singleroot_value)
|
||||
self.multiroot_widget.update_default_values(multiroot_value)
|
||||
self.multiroot_widget.update_default_values(value)
|
||||
|
||||
def update_studio_values(self, parent_values):
|
||||
self._state = None
|
||||
self._multiroot_state = None
|
||||
self._is_modified = False
|
||||
|
||||
if isinstance(parent_values, dict):
|
||||
|
|
@ -368,81 +318,29 @@ class RootsWidget(QtWidgets.QWidget, SettingObject):
|
|||
else:
|
||||
value = NOT_SET
|
||||
|
||||
if value is NOT_SET:
|
||||
is_multiroot = self.default_is_multiroot
|
||||
self.studio_is_multiroot = NOT_SET
|
||||
self._has_studio_override = False
|
||||
self._had_studio_override = False
|
||||
else:
|
||||
is_multiroot = False
|
||||
if isinstance(value, dict):
|
||||
for _value in value.values():
|
||||
if isinstance(_value, dict):
|
||||
is_multiroot = True
|
||||
break
|
||||
self.studio_is_multiroot = is_multiroot
|
||||
self._has_studio_override = True
|
||||
self._had_studio_override = True
|
||||
self._has_studio_override = value is not NOT_SET
|
||||
self._had_studio_override = value is not NOT_SET
|
||||
|
||||
self.was_multiroot = is_multiroot
|
||||
self.set_multiroot(is_multiroot)
|
||||
|
||||
if is_multiroot:
|
||||
self.multiroot_widget.update_studio_values(value)
|
||||
else:
|
||||
self.singleroot_widget.update_studio_values(value)
|
||||
self.multiroot_widget.update_studio_values(value)
|
||||
|
||||
def apply_overrides(self, parent_values):
|
||||
# Make sure this is set to False
|
||||
self._state = None
|
||||
self._multiroot_state = None
|
||||
self._is_modified = False
|
||||
|
||||
value = NOT_SET
|
||||
if parent_values is not NOT_SET:
|
||||
value = parent_values.get(self.key, value)
|
||||
|
||||
if value is NOT_SET:
|
||||
is_multiroot = self.studio_is_multiroot
|
||||
if is_multiroot is NOT_SET:
|
||||
is_multiroot = self.default_is_multiroot
|
||||
else:
|
||||
is_multiroot = False
|
||||
if isinstance(value, dict):
|
||||
for _value in value.values():
|
||||
if isinstance(_value, dict):
|
||||
is_multiroot = True
|
||||
break
|
||||
|
||||
self.was_multiroot = is_multiroot
|
||||
self.set_multiroot(is_multiroot)
|
||||
|
||||
if is_multiroot:
|
||||
self._is_overriden = value is not NOT_SET
|
||||
self._was_overriden = bool(self._is_overriden)
|
||||
self.multiroot_widget.apply_overrides(value)
|
||||
else:
|
||||
self._is_overriden = value is not NOT_SET
|
||||
self._was_overriden = bool(self._is_overriden)
|
||||
self.singleroot_widget.apply_overrides(value)
|
||||
self._is_overriden = value is not NOT_SET
|
||||
self._was_overriden = bool(self._is_overriden)
|
||||
self.multiroot_widget.apply_overrides(value)
|
||||
|
||||
def hierarchical_style_update(self):
|
||||
self.singleroot_widget.hierarchical_style_update()
|
||||
self.multiroot_widget.hierarchical_style_update()
|
||||
self.update_style()
|
||||
|
||||
def update_style(self):
|
||||
multiroot_state = self.style_state(
|
||||
self.has_studio_override,
|
||||
False,
|
||||
False,
|
||||
self.was_multiroot != self.is_multiroot
|
||||
)
|
||||
if multiroot_state != self._multiroot_state:
|
||||
self.multiroot_label.setProperty("state", multiroot_state)
|
||||
self.multiroot_label.style().polish(self.multiroot_label)
|
||||
self._multiroot_state = multiroot_state
|
||||
|
||||
state = self.style_state(
|
||||
self.has_studio_override,
|
||||
self.child_invalid,
|
||||
|
|
@ -467,162 +365,67 @@ class RootsWidget(QtWidgets.QWidget, SettingObject):
|
|||
|
||||
self._state = state
|
||||
|
||||
def _on_multiroot_checkbox(self):
|
||||
self.set_multiroot()
|
||||
|
||||
def _on_value_change(self, item=None):
|
||||
if self.ignore_value_changes:
|
||||
return
|
||||
|
||||
if item is not None and (
|
||||
(self.is_multiroot and item != self.multiroot_widget)
|
||||
or (not self.is_multiroot and item != self.singleroot_widget)
|
||||
):
|
||||
return
|
||||
|
||||
if self.is_group and self.is_overidable:
|
||||
self._is_overriden = True
|
||||
|
||||
self._is_modified = (
|
||||
self.was_multiroot != self.is_multiroot
|
||||
or self.child_modified
|
||||
)
|
||||
self._is_modified = bool(self.child_modified)
|
||||
|
||||
self.update_style()
|
||||
|
||||
self.value_changed.emit(self)
|
||||
|
||||
def _from_single_to_multi(self):
|
||||
single_value = self.singleroot_widget.item_value()
|
||||
mutli_value = self.multiroot_widget.item_value()
|
||||
first_key = None
|
||||
for key in mutli_value.keys():
|
||||
first_key = key
|
||||
break
|
||||
|
||||
if first_key is None:
|
||||
first_key = ""
|
||||
|
||||
mutli_value[first_key] = single_value
|
||||
|
||||
self.multiroot_widget.set_value(mutli_value)
|
||||
|
||||
def _from_multi_to_single(self):
|
||||
mutli_value = self.multiroot_widget.all_item_values()
|
||||
for value in mutli_value.values():
|
||||
single_value = value
|
||||
break
|
||||
|
||||
self.singleroot_widget.set_value(single_value)
|
||||
|
||||
def set_multiroot(self, is_multiroot=None):
|
||||
if is_multiroot is None:
|
||||
is_multiroot = self.is_multiroot
|
||||
if is_multiroot:
|
||||
self._from_single_to_multi()
|
||||
else:
|
||||
self._from_multi_to_single()
|
||||
|
||||
if is_multiroot != self.is_multiroot:
|
||||
self.multiroot_checkbox.setChecked(is_multiroot)
|
||||
|
||||
self.singleroot_widget.setVisible(not is_multiroot)
|
||||
self.multiroot_widget.setVisible(is_multiroot)
|
||||
|
||||
self._on_value_change()
|
||||
|
||||
@property
|
||||
def child_has_studio_override(self):
|
||||
if self.is_multiroot:
|
||||
return self.multiroot_widget.has_studio_override
|
||||
else:
|
||||
return self.singleroot_widget.has_studio_override
|
||||
return self.multiroot_widget.has_studio_override
|
||||
|
||||
@property
|
||||
def child_modified(self):
|
||||
if self.is_multiroot:
|
||||
return self.multiroot_widget.child_modified
|
||||
else:
|
||||
return self.singleroot_widget.child_modified
|
||||
return self.multiroot_widget.child_modified
|
||||
|
||||
@property
|
||||
def child_overriden(self):
|
||||
if self.is_multiroot:
|
||||
return (
|
||||
self.multiroot_widget.is_overriden
|
||||
or self.multiroot_widget.child_overriden
|
||||
)
|
||||
else:
|
||||
return (
|
||||
self.singleroot_widget.is_overriden
|
||||
or self.singleroot_widget.child_overriden
|
||||
)
|
||||
return (
|
||||
self.multiroot_widget.is_overriden
|
||||
or self.multiroot_widget.child_overriden
|
||||
)
|
||||
|
||||
@property
|
||||
def child_invalid(self):
|
||||
if self.is_multiroot:
|
||||
return self.multiroot_widget.child_invalid
|
||||
else:
|
||||
return self.singleroot_widget.child_invalid
|
||||
return self.multiroot_widget.child_invalid
|
||||
|
||||
def remove_overrides(self):
|
||||
self._is_overriden = False
|
||||
self._is_modified = False
|
||||
|
||||
if self.studio_is_multiroot is NOT_SET:
|
||||
self.set_multiroot(self.default_is_multiroot)
|
||||
else:
|
||||
self.set_multiroot(self.studio_is_multiroot)
|
||||
|
||||
if self.is_multiroot:
|
||||
self.multiroot_widget.remove_overrides()
|
||||
else:
|
||||
self.singleroot_widget.remove_overrides()
|
||||
self.multiroot_widget.remove_overrides()
|
||||
|
||||
def reset_to_pype_default(self):
|
||||
self.set_multiroot(self.default_is_multiroot)
|
||||
if self.is_multiroot:
|
||||
self.multiroot_widget.reset_to_pype_default()
|
||||
else:
|
||||
self.singleroot_widget.reset_to_pype_default()
|
||||
self.multiroot_widget.reset_to_pype_default()
|
||||
self._has_studio_override = False
|
||||
|
||||
def set_studio_default(self):
|
||||
if self.is_multiroot:
|
||||
self.multiroot_widget.reset_to_pype_default()
|
||||
else:
|
||||
self.singleroot_widget.reset_to_pype_default()
|
||||
self.multiroot_widget.reset_to_pype_default()
|
||||
self._has_studio_override = True
|
||||
|
||||
def discard_changes(self):
|
||||
self._is_overriden = self._was_overriden
|
||||
self._is_modified = False
|
||||
if self._is_overriden:
|
||||
self.set_multiroot(self.was_multiroot)
|
||||
else:
|
||||
if self.studio_is_multiroot is NOT_SET:
|
||||
self.set_multiroot(self.default_is_multiroot)
|
||||
else:
|
||||
self.set_multiroot(self.studio_is_multiroot)
|
||||
|
||||
if self.is_multiroot:
|
||||
self.multiroot_widget.discard_changes()
|
||||
else:
|
||||
self.singleroot_widget.discard_changes()
|
||||
self.multiroot_widget.discard_changes()
|
||||
|
||||
self._is_modified = self.child_modified
|
||||
self._has_studio_override = self._had_studio_override
|
||||
|
||||
def set_as_overriden(self):
|
||||
self._is_overriden = True
|
||||
self.singleroot_widget.set_as_overriden()
|
||||
self.multiroot_widget.set_as_overriden()
|
||||
|
||||
def item_value(self):
|
||||
if self.is_multiroot:
|
||||
return self.multiroot_widget.item_value()
|
||||
else:
|
||||
return self.singleroot_widget.item_value()
|
||||
return self.multiroot_widget.item_value()
|
||||
|
||||
def config_value(self):
|
||||
return {self.key: self.item_value()}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue