added set studio defaults action

This commit is contained in:
iLLiCiTiT 2020-09-11 19:43:44 +02:00
parent 4996c56170
commit 57ac12b514
2 changed files with 54 additions and 1 deletions

View file

@ -171,7 +171,6 @@ class ConfigObject(AbstractConfigObject):
return "-".join(items) or cls.default_state
def mouseReleaseEvent(self, event):
if self.allow_actions and event.button() == QtCore.Qt.RightButton:
menu = QtWidgets.QMenu()
@ -202,6 +201,17 @@ class ConfigObject(AbstractConfigObject):
actions_mapping[action] = self._reset_to_pype_default
menu.addAction(action)
if (
not self.is_overidable
and (
(self.is_group and not self._had_studio_override)
or self.any_parent_is_group
)
):
action = QtWidgets.QAction("Set sudio default")
actions_mapping[action] = self._set_studio_default
menu.addAction(action)
if (
not self.any_parent_overriden()
and (self.is_overriden or self.child_overriden)
@ -362,6 +372,9 @@ class InputObject(ConfigObject):
self.set_value(self.default_value)
self._has_studio_override = False
def set_studio_default(self):
self._has_studio_override = True
def discard_changes(self):
self._is_overriden = self._was_overriden
self._has_studio_override = self._had_studio_override
@ -1627,6 +1640,13 @@ class DictWidget(QtWidgets.QWidget, ConfigObject):
input_field.reset_to_pype_default()
self._has_studio_override = False
def set_studio_default(self):
for input_field in self.input_fields:
input_field.set_studio_default()
if self.is_group:
self._has_studio_override = True
def discard_changes(self):
self._is_overriden = self._was_overriden
self._is_modified = False
@ -1957,6 +1977,13 @@ class DictInvisible(QtWidgets.QWidget, ConfigObject):
input_field.reset_to_pype_default()
self._has_studio_override = False
def set_studio_default(self):
for input_field in self.input_fields:
input_field.set_studio_default()
if self.is_group:
self._has_studio_override = True
def discard_changes(self):
self._is_modified = False
self._is_overriden = self._was_overriden
@ -2328,6 +2355,13 @@ class PathWidget(QtWidgets.QWidget, ConfigObject):
input_field.reset_to_pype_default()
self._has_studio_override = False
def set_studio_default(self):
for input_field in self.input_fields:
input_field.set_studio_default()
if self.is_group:
self._has_studio_override = True
def discard_changes(self):
self._is_modified = False
self._is_overriden = self._was_overriden
@ -2491,6 +2525,13 @@ class DictFormWidget(QtWidgets.QWidget, ConfigObject):
input_field.reset_to_pype_default()
self._has_studio_override = False
def set_studio_default(self):
for input_field in self.input_fields:
input_field.set_studio_default()
if self.is_group:
self._has_studio_override = True
def set_as_overriden(self):
if self.is_overriden:
return

View file

@ -400,6 +400,18 @@ class AbstractConfigObject:
)
)
def _set_studio_default(self):
self.ignore_value_changes = True
self.set_studio_default()
self.ignore_value_changes = False
def set_studio_default(self):
raise NotImplementedError(
"{} Method `set_studio_default` not implemented!".format(
repr(self)
)
)
def _reset_to_pype_default(self):
self.ignore_value_changes = True
self.reset_to_pype_default()