From 100dec2c7a9e4295caf980322825845f7b0e9ee7 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 25 Nov 2020 13:24:51 +0100 Subject: [PATCH 01/56] feat(imageio): adding default schema --- .../defaults/project_anatomy/{colorspace.json => imageio.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pype/settings/defaults/project_anatomy/{colorspace.json => imageio.json} (100%) diff --git a/pype/settings/defaults/project_anatomy/colorspace.json b/pype/settings/defaults/project_anatomy/imageio.json similarity index 100% rename from pype/settings/defaults/project_anatomy/colorspace.json rename to pype/settings/defaults/project_anatomy/imageio.json From 7df18a6b417c2897bb7d651a1d33c1b51f8e349e Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 13:44:24 +0100 Subject: [PATCH 02/56] added imageio key to anatomy --- .../projects_schema/0_project_gui_schema.json | 3 ++ .../schema_anatomy_imageio.json | 8 +++++ .../settings/widgets/anatomy_types.py | 33 +++++++++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json index cf95bf4c45..6f69340560 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json @@ -14,6 +14,9 @@ "type": "anatomy_templates", "key": "templates", "is_file": true + }, { + "type": "schema", + "name": "schema_anatomy_imageio" } ] }, { diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json new file mode 100644 index 0000000000..3fdbd3f7f9 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json @@ -0,0 +1,8 @@ +{ + "type": "dict", + "key": "imageio", + "label": "< ENTER LABEL HERE >", + "is_file": true, + "children": [ + ] +} diff --git a/pype/tools/settings/settings/widgets/anatomy_types.py b/pype/tools/settings/settings/widgets/anatomy_types.py index e1a726187c..ef89a802bc 100644 --- a/pype/tools/settings/settings/widgets/anatomy_types.py +++ b/pype/tools/settings/settings/widgets/anatomy_types.py @@ -1,7 +1,11 @@ from Qt import QtWidgets, QtCore from .widgets import ExpandingWidget from .item_types import ( - SettingObject, ModifiableDict, PathWidget, RawJsonWidget + SettingObject, + ModifiableDict, + PathWidget, + RawJsonWidget, + DictWidget ) from .lib import NOT_SET, TypeToKlass, CHILD_OFFSET, METADATA_KEY @@ -50,14 +54,18 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): children_data = input_data["children"] roots_input_data = {} templates_input_data = {} + imageio_input_data = {} for child in children_data: if child["type"] == "anatomy_roots": roots_input_data = child elif child["type"] == "anatomy_templates": templates_input_data = child + elif child["key"] == "imageio": + imageio_input_data = child self.root_widget = RootsWidget(roots_input_data, self) self.templates_widget = TemplatesWidget(templates_input_data, self) + self.imageio_widget = DictWidget(imageio_input_data, self) self.setAttribute(QtCore.Qt.WA_StyledBackground) @@ -75,6 +83,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): content_layout.addWidget(self.root_widget) content_layout.addWidget(self.templates_widget) + content_layout.addWidget(self.imageio_widget) body_widget.set_content_widget(content_widget) @@ -83,6 +92,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): 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 @@ -95,6 +105,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): self.root_widget.update_default_values(value) self.templates_widget.update_default_values(value) + self.imageio_widget.update_default_values(value) def update_studio_values(self, parent_values): self._state = None @@ -107,6 +118,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): self.root_widget.update_studio_values(value) self.templates_widget.update_studio_values(value) + self.imageio_widget.update_studio_values(value) def apply_overrides(self, parent_values): # Make sure this is set to False @@ -119,6 +131,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): self.root_widget.apply_overrides(value) self.templates_widget.apply_overrides(value) + self.imageio_widget.apply_overrides(value) def set_value(self, value): raise TypeError("AnatomyWidget does not allow to use `set_value`") @@ -154,6 +167,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): def hierarchical_style_update(self): self.root_widget.hierarchical_style_update() self.templates_widget.hierarchical_style_update() + self.imageio_widget.hierarchical_style_update() self.update_style() @property @@ -161,6 +175,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): return ( self.root_widget.child_has_studio_override or self.templates_widget.child_has_studio_override + or self.imageio_widget.child_has_studio_override ) @property @@ -168,6 +183,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): return ( self.root_widget.child_modified or self.templates_widget.child_modified + or self.imageio_widget.child_modified ) @property @@ -175,6 +191,7 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): return ( self.root_widget.child_overriden or self.templates_widget.child_overriden + or self.imageio_widget.child_overriden ) @property @@ -182,27 +199,33 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): return ( self.root_widget.child_invalid or self.templates_widget.child_invalid + or self.imageio_widget.child_invalid ) def set_as_overriden(self): self.root_widget.set_as_overriden() self.templates_widget.set_as_overriden() + self.imageio_widget.set_as_overriden() def remove_overrides(self): self.root_widget.remove_overrides() self.templates_widget.remove_overrides() + self.imageio_widget.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() def set_studio_default(self): self.root_widget.set_studio_default() self.templates_widget.set_studio_default() + self.imageio_widget.set_studio_default() def discard_changes(self): self.root_widget.discard_changes() self.templates_widget.discard_changes() + self.imageio_widget.discard_changes() def overrides(self): if self.child_overriden: @@ -213,14 +236,20 @@ class AnatomyWidget(QtWidgets.QWidget, SettingObject): output = {} output.update(self.root_widget.config_value()) output.update(self.templates_widget.config_value()) + output.update(self.imageio_widget.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] + 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 From da1a6ab320b687210c347048a6d1d45e9eb2b812 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 14:24:32 +0100 Subject: [PATCH 03/56] changed env groups in example to not match system env groups --- .../gui_schemas/system_schema/example_schema.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json index 7612e54116..f09ad86a65 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json @@ -13,16 +13,16 @@ "type": "schema_template", "name": "example_template", "template_data": { - "host_label": "Maya 2019", - "host_name": "maya_2019", + "host_label": "Application 1", + "host_name": "app_1", "multipath_executables": false } }, { "type": "schema_template", "name": "example_template", "template_data": { - "host_label": "Maya 2020", - "host_name": "maya_2020" + "host_label": "Application 2", + "host_name": "app_2" } } ] From fc248c5eebe350924cd4d0ce29e14248dfb3e975 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 25 Nov 2020 14:27:27 +0100 Subject: [PATCH 04/56] test example schemas --- .../settings/gui_schemas/system_schema/schema_main.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json index 8e8798149c..3ec652c302 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json @@ -17,6 +17,9 @@ }, { "type": "schema", "name": "schema_tools" + }, { + "type": "schema", + "name": "example_schema" }] } ] From 4c990a7527d14e6f2dfdb4eae3b95a3189060496 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 14:42:04 +0100 Subject: [PATCH 05/56] fixed validation of ListStrictWidget --- pype/tools/settings/settings/widgets/base.py | 2 +- pype/tools/settings/settings/widgets/item_types.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 3f842602ca..692de617df 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -795,7 +795,7 @@ class ProjectWidget(QtWidgets.QWidget): def _update_values(self): self.ignore_value_changes = True - default_values = default_values = lib.convert_data_to_gui_data( + default_values = lib.convert_data_to_gui_data( {"project": default_settings()} ) for input_field in self.input_fields: diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index fd5364ea17..10fd757d3e 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -1897,8 +1897,6 @@ class ListStrictWidget(QtWidgets.QWidget, InputObject): return self._default_input_value def set_value(self, value): - self.validate_value(value) - if self._is_overriden: method_name = "apply_overrides" elif not self._has_studio_override: From 342b3f80e9384ea5362a4add00eecf40e9610db3 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 18:12:45 +0100 Subject: [PATCH 06/56] fixed collapsability --- .../settings/settings/widgets/item_types.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index fd5364ea17..4ba3be12cb 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2190,15 +2190,6 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): self.body_widget = body_widget self.label_widget = body_widget.label_widget - collapsable = input_data.get("collapsable", True) - if collapsable: - collapsed = input_data.get("collapsed", True) - if not collapsed: - body_widget.toggle_content() - - else: - body_widget.hide_toolbox(hide_content=False) - if body_widget is None: content_parent_widget = self else: @@ -2219,6 +2210,16 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): self.content_widget = content_widget self.content_layout = content_layout + if not as_widget: + collapsable = input_data.get("collapsable", True) + if collapsable: + collapsed = input_data.get("collapsed", True) + if not collapsed: + body_widget.toggle_content() + + else: + body_widget.hide_toolbox(hide_content=False) + self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.add_row(is_empty=True) From 3bb15ac9a5010b0870a570f18a8ec89fd8e86133 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 18:17:50 +0100 Subject: [PATCH 07/56] do not create expanding part if label is not entered --- pype/tools/settings/settings/widgets/item_types.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 4ba3be12cb..15ba817f29 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2180,9 +2180,16 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) + label = input_data.get("label") + if as_widget: body_widget = None self.label_widget = label_widget + + elif label is None: + body_widget = None + self.body_widget = body_widget + self.label_widget = None else: body_widget = ExpandingWidget(input_data["label"], self) main_layout.addWidget(body_widget) @@ -2210,7 +2217,7 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): self.content_widget = content_widget self.content_layout = content_layout - if not as_widget: + if not as_widget and body_widget: collapsable = input_data.get("collapsable", True) if collapsable: collapsed = input_data.get("collapsed", True) From b3beb2baf120a9316f3fcfb9d6606a39bae54314 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Wed, 25 Nov 2020 18:22:13 +0100 Subject: [PATCH 08/56] start on ftrack settings --- .../ftrack/ftrack_custom_attributes.json | 56 --- .../ftrack/partnership_ftrack_cred.json | 5 - .../system_settings/global/modules.json | 12 +- .../projects_schema/0_project_gui_schema.json | 3 +- .../projects_schema/1_plugins_gui_schema.json | 326 ------------- .../schemas/schema_project_celaction.json | 50 ++ .../schemas/schema_project_ftrack.json | 129 ++++++ .../schemas/schema_project_hiero.json | 43 ++ .../schemas/schema_project_maya.json | 28 ++ .../schemas/schema_project_nuke.json | 140 ++++++ .../schemas/schema_project_resolve.json | 35 ++ .../module_settings/schema_ftrack.json | 147 ++++++ .../system_schema/schema_modules.json | 430 +++++++----------- 13 files changed, 745 insertions(+), 659 deletions(-) delete mode 100644 pype/settings/defaults/project_settings/ftrack/partnership_ftrack_cred.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_celaction.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_hiero.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_nuke.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_resolve.json create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json diff --git a/pype/settings/defaults/project_settings/ftrack/ftrack_custom_attributes.json b/pype/settings/defaults/project_settings/ftrack/ftrack_custom_attributes.json index f03d473cd0..371be3b8d8 100644 --- a/pype/settings/defaults/project_settings/ftrack/ftrack_custom_attributes.json +++ b/pype/settings/defaults/project_settings/ftrack/ftrack_custom_attributes.json @@ -10,47 +10,6 @@ "config": { "isdecimal": true } -}, { - "label": "Applications", - "key": "applications", - "type": "enumerator", - "entity_type": "show", - "group": "avalon", - "config": { - "multiselect": true, - "data": [ - {"blender_2.80": "Blender 2.80"}, - {"blender_2.81": "Blender 2.81"}, - {"blender_2.82": "Blender 2.82"}, - {"blender_2.83": "Blender 2.83"}, - {"celaction_local": "CelAction2D Local"}, - {"maya_2017": "Maya 2017"}, - {"maya_2018": "Maya 2018"}, - {"maya_2019": "Maya 2019"}, - {"nuke_10.0": "Nuke 10.0"}, - {"nuke_11.2": "Nuke 11.2"}, - {"nuke_11.3": "Nuke 11.3"}, - {"nuke_12.0": "Nuke 12.0"}, - {"nukex_10.0": "NukeX 10.0"}, - {"nukex_11.2": "NukeX 11.2"}, - {"nukex_11.3": "NukeX 11.3"}, - {"nukex_12.0": "NukeX 12.0"}, - {"nukestudio_10.0": "NukeStudio 10.0"}, - {"nukestudio_11.2": "NukeStudio 11.2"}, - {"nukestudio_11.3": "NukeStudio 11.3"}, - {"nukestudio_12.0": "NukeStudio 12.0"}, - {"harmony_17": "Harmony 17"}, - {"houdini_16.5": "Houdini 16.5"}, - {"houdini_17": "Houdini 17"}, - {"houdini_18": "Houdini 18"}, - {"photoshop_2020": "Photoshop 2020"}, - {"python_3": "Python 3"}, - {"python_2": "Python 2"}, - {"premiere_2019": "Premiere Pro 2019"}, - {"premiere_2020": "Premiere Pro 2020"}, - {"resolve_16": "BM DaVinci Resolve 16"} - ] - } }, { "label": "Avalon auto-sync", "key": "avalon_auto_sync", @@ -109,21 +68,6 @@ "is_hierarchical": true, "group": "avalon", "default": null -}, { - "label": "Tools", - "key": "tools_env", - "type": "enumerator", - "is_hierarchical": true, - "group": "avalon", - "config": { - "multiselect": true, - "data": [ - {"mtoa_3.0.1": "mtoa_3.0.1"}, - {"mtoa_3.1.1": "mtoa_3.1.1"}, - {"mtoa_3.2.0": "mtoa_3.2.0"}, - {"yeti_2.1.2": "yeti_2.1"} - ] - } }, { "label": "Resolution Width", "key": "resolutionWidth", diff --git a/pype/settings/defaults/project_settings/ftrack/partnership_ftrack_cred.json b/pype/settings/defaults/project_settings/ftrack/partnership_ftrack_cred.json deleted file mode 100644 index 6b3a32f181..0000000000 --- a/pype/settings/defaults/project_settings/ftrack/partnership_ftrack_cred.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "server_url": "", - "api_key": "", - "api_user": "" -} diff --git a/pype/settings/defaults/system_settings/global/modules.json b/pype/settings/defaults/system_settings/global/modules.json index a28c2f4a03..6c7a45cca3 100644 --- a/pype/settings/defaults/system_settings/global/modules.json +++ b/pype/settings/defaults/system_settings/global/modules.json @@ -27,11 +27,13 @@ "ftrack_events_path": [], "FTRACK_EVENTS_MONGO_DB": "pype", "FTRACK_EVENTS_MONGO_COL": "ftrack_events", - "sync_to_avalon": { - "statuses_name_change": [ - "ready", - "not ready" - ] + "events": { + "sync_to_avalon": { + "enabled": true, + "statuses_name_change": [ + "not ready" + ] + } }, "status_version_to_task": {}, "status_update": { diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json index cf95bf4c45..5b19a1159a 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json @@ -16,7 +16,8 @@ "is_file": true } ] - }, { + }, + { "type": "dict-invisible", "key": "project_settings", "children": [ diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json index 87912cfdc0..0ccdd79bc7 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json @@ -4,89 +4,6 @@ "key": "plugins", "label": "Plugins", "children": [{ - "type": "dict", - "collapsable": true, - "key": "celaction", - "label": "CelAction", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ExtractCelactionDeadline", - "label": "ExtractCelactionDeadline", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "text", - "key": "deadline_department", - "label": "Deadline apartment" - }, { - "type": "number", - "key": "deadline_priority", - "label": "Deadline priority" - }, { - "type": "text", - "key": "deadline_pool", - "label": "Deadline pool" - }, { - "type": "text", - "key": "deadline_pool_secondary", - "label": "Deadline pool (secondary)" - }, { - "type": "text", - "key": "deadline_group", - "label": "Deadline Group" - }, { - "type": "number", - "key": "deadline_chunk_size", - "label": "Deadline Chunk size" - }] - }] - }] - }, { - "type": "dict", - "collapsable": true, - "key": "ftrack", - "label": "Ftrack", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "IntegrateFtrackNote", - "label": "IntegrateFtrackNote", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "text", - "key": "note_with_intent_template", - "label": "Note with intent template" - }, { - "type": "list", - "object_type": "text", - "key": "note_labels", - "label": "Note labels" - }] - }] - }] - }, { "type": "dict", "collapsable": true, "key": "global", @@ -327,249 +244,6 @@ }] }] }] - }, { - "type": "dict-invisible", - "collapsable": true, - "key": "maya", - "label": "Maya", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "maya", - "label": "Maya", - "children": [ - - { - "type": "schema", - "name": "2_maya_capture" - }, - { - "type": "schema", - "name": "2_maya_plugins" - }, - { - "type": "schema", - "name": "2_maya_workfiles" - } - ] - }] - }, { - "type": "dict", - "collapsable": true, - "key": "nuke", - "label": "Nuke", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "create", - "label": "Create plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": false, - "key": "CreateWriteRender", - "label": "CreateWriteRender", - "is_group": true, - "children": [{ - "type": "text", - "key": "fpath_template", - "label": "Path template" - }] - }, { - "type": "dict", - "collapsable": false, - "key": "CreateWritePrerender", - "label": "CreateWritePrerender", - "is_group": true, - "children": [{ - "type": "text", - "key": "fpath_template", - "label": "Path template" - }] - }] - }, { - "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ExtractThumbnail", - "label": "ExtractThumbnail", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "raw-json", - "key": "nodes", - "label": "Nodes" - }] - }, { - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ValidateNukeWriteKnobs", - "label": "ValidateNukeWriteKnobs", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "raw-json", - "key": "knobs", - "label": "Knobs" - }] - }, { - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ExtractReviewDataLut", - "label": "ExtractReviewDataLut", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }, { - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ExtractReviewDataMov", - "label": "ExtractReviewDataMov", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "boolean", - "key": "viewer_lut_raw", - "label": "Viewer LUT raw" - }] - }, { - "type": "dict", - "collapsable": true, - "key": "ExtractSlateFrame", - "label": "ExtractSlateFrame", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "viewer_lut_raw", - "label": "Viewer LUT raw" - }] - }, { - "type": "dict", - "collapsable": true, - "key": "NukeSubmitDeadline", - "label": "NukeSubmitDeadline", - "is_group": true, - "children": [{ - "type": "number", - "key": "deadline_priority", - "label": "deadline_priority" - }, { - "type": "text", - "key": "deadline_pool", - "label": "deadline_pool" - }, { - "type": "text", - "key": "deadline_pool_secondary", - "label": "deadline_pool_secondary" - }, { - "type": "number", - "key": "deadline_chunk_size", - "label": "deadline_chunk_size" - }] - }] - }, { - "type": "raw-json", - "key": "workfile_build", - "label": "Workfile Build logic", - "is_file": true - }] - }, { - "type": "dict", - "collapsable": true, - "key": "nukestudio", - "label": "NukeStudio", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "CollectInstanceVersion", - "label": "Collect Instance Version", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }, { - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ExtractReviewCutUpVideo", - "label": "Extract Review Cut Up Video", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "list", - "object_type": "text", - "key": "tags_addition", - "label": "Tags addition" - }] - }] - }] - }, { - "type": "dict", - "collapsable": true, - "key": "resolve", - "label": "DaVinci Resolve", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "create", - "label": "Creator plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": true, - "key": "CreateShotClip", - "label": "Create Shot Clip", - "is_group": true, - "children": [{ - "type": "text", - "key": "clipName", - "label": "Clip name template" - }, { - "type": "text", - "key": "folder", - "label": "Folder" - }, { - "type": "number", - "key": "steps", - "label": "Steps" - }] - } - - ] - }] }, { "type": "dict", diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_celaction.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_celaction.json new file mode 100644 index 0000000000..a1c94b14ef --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_celaction.json @@ -0,0 +1,50 @@ +{ + "type": "dict", + "collapsable": true, + "key": "celaction", + "label": "CelAction", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "children": [{ + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ExtractCelactionDeadline", + "label": "ExtractCelactionDeadline", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "text", + "key": "deadline_department", + "label": "Deadline apartment" + }, { + "type": "number", + "key": "deadline_priority", + "label": "Deadline priority" + }, { + "type": "text", + "key": "deadline_pool", + "label": "Deadline pool" + }, { + "type": "text", + "key": "deadline_pool_secondary", + "label": "Deadline pool (secondary)" + }, { + "type": "text", + "key": "deadline_group", + "label": "Deadline Group" + }, { + "type": "number", + "key": "deadline_chunk_size", + "label": "Deadline Chunk size" + }] + }] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json new file mode 100644 index 0000000000..1d6b4cbf5b --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json @@ -0,0 +1,129 @@ +{ + "type": "dict", + "key": "Ftrack", + "label": "Ftrack", + "collapsable": true, + "checkbox_key": "enabled", + "is_file": true, + "children": [ + { + "type": "splitter" + }, + { + "type": "label", + "label": "Additional Ftrack paths" + }, + { + "type": "list", + "key": "ftrack_actions_path", + "label": "Action paths", + "object_type": "text" + }, + { + "type": "list", + "key": "ftrack_events_path", + "label": "Event paths", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "type": "dict", + "key": "events", + "label": "Server Events", + "children": [{ + "type": "dict", + "key": "sync_to_avalon", + "label": "Sync to avalon", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "list", + "key": "statuses_name_change", + "label": "Status name change", + "object_type": { + "type": "text", + "multiline": false + } + }] + }, + { + "type": "dict", + "key": "status_version_to_task", + "label": "Version to Task status mapping", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "dict-modifiable", + "key": "statuses", + "label": "Stausesg", + "object_type": "text" + }] + }, + { + "type": "dict", + "key": "status_update", + "label": "Status Updates", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "key": "statuses", + "type": "dict-invisible", + "children": [ + { + "key": "default", + "type": "text", + "label": "complete" + }, + { + "key": "default2", + "type": "text", + "label": "in progress" + } + ] + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "IntegrateFtrackNote", + "label": "IntegrateFtrackNote", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "text", + "key": "note_with_intent_template", + "label": "Note with intent template" + }, { + "type": "list", + "object_type": "text", + "key": "note_labels", + "label": "Note labels" + }] + }] + } + ] + } + ] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_hiero.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_hiero.json new file mode 100644 index 0000000000..d80a6272c5 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_hiero.json @@ -0,0 +1,43 @@ +{ + "type": "dict", + "collapsable": true, + "key": "hiero", + "label": "Hiero", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "children": [{ + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "CollectInstanceVersion", + "label": "Collect Instance Version", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, { + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ExtractReviewCutUpVideo", + "label": "Extract Review Cut Up Video", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "list", + "object_type": "text", + "key": "tags_addition", + "label": "Tags addition" + }] + }] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json new file mode 100644 index 0000000000..6ef30a349d --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json @@ -0,0 +1,28 @@ +{ + "type": "dict", + "collapsable": true, + "key": "maya", + "label": "Maya", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "key": "maya", + "label": "Maya", + "children": [ + + { + "type": "schema", + "name": "2_maya_capture" + }, + { + "type": "schema", + "name": "2_maya_plugins" + }, + { + "type": "schema", + "name": "2_maya_workfiles" + } + ] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_nuke.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_nuke.json new file mode 100644 index 0000000000..3151a26b45 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_nuke.json @@ -0,0 +1,140 @@ +{ + "type": "dict", + "collapsable": true, + "key": "nuke", + "label": "Nuke", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "key": "create", + "label": "Create plugins", + "children": [{ + "type": "dict", + "collapsable": false, + "key": "CreateWriteRender", + "label": "CreateWriteRender", + "is_group": true, + "children": [{ + "type": "text", + "key": "fpath_template", + "label": "Path template" + }] + }, { + "type": "dict", + "collapsable": false, + "key": "CreateWritePrerender", + "label": "CreateWritePrerender", + "is_group": true, + "children": [{ + "type": "text", + "key": "fpath_template", + "label": "Path template" + }] + }] + }, { + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "children": [{ + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ExtractThumbnail", + "label": "ExtractThumbnail", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "raw-json", + "key": "nodes", + "label": "Nodes" + }] + }, { + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ValidateNukeWriteKnobs", + "label": "ValidateNukeWriteKnobs", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "raw-json", + "key": "knobs", + "label": "Knobs" + }] + }, { + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ExtractReviewDataLut", + "label": "ExtractReviewDataLut", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, { + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ExtractReviewDataMov", + "label": "ExtractReviewDataMov", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "boolean", + "key": "viewer_lut_raw", + "label": "Viewer LUT raw" + }] + }, { + "type": "dict", + "collapsable": true, + "key": "ExtractSlateFrame", + "label": "ExtractSlateFrame", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "viewer_lut_raw", + "label": "Viewer LUT raw" + }] + }, { + "type": "dict", + "collapsable": true, + "key": "NukeSubmitDeadline", + "label": "NukeSubmitDeadline", + "is_group": true, + "children": [{ + "type": "number", + "key": "deadline_priority", + "label": "deadline_priority" + }, { + "type": "text", + "key": "deadline_pool", + "label": "deadline_pool" + }, { + "type": "text", + "key": "deadline_pool_secondary", + "label": "deadline_pool_secondary" + }, { + "type": "number", + "key": "deadline_chunk_size", + "label": "deadline_chunk_size" + }] + }] + }, { + "type": "raw-json", + "key": "workfile_build", + "label": "Workfile Build logic" + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_resolve.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_resolve.json new file mode 100644 index 0000000000..9452911354 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_resolve.json @@ -0,0 +1,35 @@ +{ + "type": "dict", + "collapsable": true, + "key": "resolve", + "label": "DaVinci Resolve", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "key": "create", + "label": "Creator plugins", + "children": [{ + "type": "dict", + "collapsable": true, + "key": "CreateShotClip", + "label": "Create Shot Clip", + "is_group": true, + "children": [{ + "type": "text", + "key": "clipName", + "label": "Clip name template" + }, { + "type": "text", + "key": "folder", + "label": "Folder" + }, { + "type": "number", + "key": "steps", + "label": "Steps" + }] + } + + ] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json new file mode 100644 index 0000000000..86570e2ac8 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json @@ -0,0 +1,147 @@ +{ + "type": "dict", + "key": "Ftrack", + "label": "Ftrack", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "text", + "key": "ftrack_server", + "label": "Server" + }, + { + "type": "splitter" + }, + { + "type": "label", + "label": "Additional Ftrack paths" + }, + { + "type": "list", + "key": "ftrack_actions_path", + "label": "Action paths", + "object_type": "text" + }, + { + "type": "list", + "key": "ftrack_events_path", + "label": "Event paths", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "type": "label", + "label": "Ftrack event server advanced settings" + }, + { + "type": "text", + "key": "FTRACK_EVENTS_MONGO_DB", + "label": "Event Mongo DB" + }, + { + "type": "text", + "key": "FTRACK_EVENTS_MONGO_COL", + "label": "Events Mongo Collection" + }, + { + "type": "dict", + "key": "events", + "label": "Server Events", + "children": [{ + "type": "dict", + "key": "sync_to_avalon", + "label": "Sync to avalon", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "list", + "key": "statuses_name_change", + "label": "Status name change", + "object_type": { + "type": "text", + "multiline": false + } + }] + }, + { + "type": "dict", + "key": "status_version_to_task", + "label": "Version to Task status mapping", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "dict-modifiable", + "key": "statuses", + "label": "Stausesg", + "object_type": "text" + }] + }, + { + "type": "dict", + "key": "status_update", + "label": "Status Updates", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "key": "statuses", + "type": "dict-invisible", + "children": [ + { + "key": "default", + "type": "text", + "label": "complete" + }, + { + "key": "default2", + "type": "text", + "label": "in progress" + } + ] + }] + } + ] + }, + { + "key": "intent", + "type": "dict-invisible", + "children": [{ + "type": "dict-modifiable", + "object_type": "text", + "key": "items", + "label": "Intent Key/Label" + }, + { + "key": "default", + "type": "text", + "label": "Default Intent" + } + ] + }, + { + "type": "splitter" + }, + { + "key": "environment", + "label": "Environment", + "type": "raw-json", + "env_group_key": "ftrack" + } + ] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json index fa84a27ae3..31eaab2ede 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json @@ -5,286 +5,184 @@ "collapsable": true, "is_file": true, "children": [{ - "type": "dict", - "key": "Avalon", - "label": "Avalon", - "collapsable": true, - "children": [{ - "type": "text", - "key": "AVALON_MONGO", - "label": "Avalon Mongo URL" - }, - { - "type": "text", - "key": "AVALON_DB_DATA", - "label": "Avalon Mongo Data Location" - }, - { - "type": "text", - "key": "AVALON_THUMBNAIL_ROOT", - "label": "Thumbnail Storage Location" - }, - { - "key": "environment", - "label": "Environment", - "type": "raw-json", - "env_group_key": "avalon" - } - ] - }, { - "type": "dict", - "key": "Ftrack", - "label": "Ftrack", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, - { - "type": "text", - "key": "ftrack_server", - "label": "Server" - }, - { - "type": "splitter" - }, - { - "type": "label", - "label": "Additional Ftrack paths" - }, - { - "type": "list", - "key": "ftrack_actions_path", - "label": "Action paths", - "object_type": "text" - }, - { - "type": "list", - "key": "ftrack_events_path", - "label": "Event paths", - "object_type": "text" - }, - { - "type": "splitter" - }, - { - "type": "label", - "label": "Ftrack event server advanced settings" - }, - { - "type": "text", - "key": "FTRACK_EVENTS_MONGO_DB", - "label": "Event Mongo DB" - }, - { - "type": "text", - "key": "FTRACK_EVENTS_MONGO_COL", - "label": "Events Mongo Collection" - }, - { - "type": "dict", - "key": "sync_to_avalon", - "label": "Sync to avalon", - "children": [{ - "type": "list", - "key": "statuses_name_change", - "label": "Status name change", - "object_type": { - "type": "text", - "multiline": false - } - }] - }, - { - "type": "dict-modifiable", - "key": "status_version_to_task", - "label": "Version to Task status mapping", - "object_type": "text" - }, - { - "type": "dict-modifiable", - "key": "status_update", - "label": "Status Updates", - "object_type": { - "type": "list", - "object_type": "text" + "type": "dict", + "key": "Avalon", + "label": "Avalon", + "collapsable": true, + "children": [{ + "type": "text", + "key": "AVALON_MONGO", + "label": "Avalon Mongo URL" + }, + { + "type": "text", + "key": "AVALON_DB_DATA", + "label": "Avalon Mongo Data Location" + }, + { + "type": "text", + "key": "AVALON_THUMBNAIL_ROOT", + "label": "Thumbnail Storage Location" + }, + { + "key": "environment", + "label": "Environment", + "type": "raw-json", + "env_group_key": "avalon" } - }, - { - "key": "intent", - "type": "dict-invisible", - "children": [{ - "type": "dict-modifiable", - "object_type": "text", - "key": "items", - "label": "Intent Key/Label" - }, - { - "key": "default", - "type": "text", - "label": "Default Intent" - } - ] - }, - { - "type": "splitter" - }, - { - "key": "environment", - "label": "Environment", - "type": "raw-json", - "env_group_key": "ftrack" - } - ] - }, { - "type": "dict", - "key": "Rest Api", - "label": "Rest Api", - "collapsable": true, - "children": [{ - "type": "number", - "key": "default_port", - "label": "Default Port", - "minimum": 1, - "maximum": 65535 - }, - { - "type": "list", - "key": "exclude_ports", - "label": "Exclude ports", - "object_type": { + ] + }, { + "type": "schema", + "name": "schema_ftrack" + }, + { + "type": "dict", + "key": "Rest Api", + "label": "Rest Api", + "collapsable": true, + "children": [{ "type": "number", + "key": "default_port", + "label": "Default Port", "minimum": 1, "maximum": 65535 + }, + { + "type": "list", + "key": "exclude_ports", + "label": "Exclude ports", + "object_type": { + "type": "number", + "minimum": 1, + "maximum": 65535 + } } - } - ] - }, { - "type": "dict", - "key": "Timers Manager", - "label": "Timers Manager", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ + ] + }, { + "type": "dict", + "key": "Timers Manager", + "label": "Timers Manager", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "number", + "decimal": 2, + "key": "full_time", + "label": "Max idle time" + }, { + "type": "number", + "decimal": 2, + "key": "message_time", + "label": "When dialog will show" + } + ] + }, { + "type": "dict", + "key": "Clockify", + "label": "Clockify", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "text", + "key": "workspace_name", + "label": "Workspace name" + } + ] + }, { + "type": "dict", + "key": "Deadline", + "label": "Deadline", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ "type": "boolean", "key": "enabled", "label": "Enabled" - }, - { - "type": "number", - "decimal": 2, - "key": "full_time", - "label": "Max idle time" }, { - "type": "number", - "decimal": 2, - "key": "message_time", - "label": "When dialog will show" - } - ] - }, { - "type": "dict", - "key": "Clockify", - "label": "Clockify", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ + "type": "text", + "key": "DEADLINE_REST_URL", + "label": "Deadline Resl URL" + }] + }, { + "type": "dict", + "key": "Muster", + "label": "Muster", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ "type": "boolean", "key": "enabled", "label": "Enabled" - }, - { + }, { "type": "text", - "key": "workspace_name", - "label": "Workspace name" - } - ] - }, { - "type": "dict", - "key": "Deadline", - "label": "Deadline", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" + "key": "MUSTER_REST_URL", + "label": "Muster Resl URL" + }, { + "type": "dict-modifiable", + "object_type": { + "type": "number", + "minimum": 0, + "maximum": 300 + }, + "is_group": true, + "key": "templates_mapping", + "label": "Templates mapping", + "is_file": true + }] }, { - "type": "text", - "key": "DEADLINE_REST_URL", - "label": "Deadline Resl URL" - }] - }, { - "type": "dict", - "key": "Muster", - "label": "Muster", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" + "type": "dict", + "key": "Logging", + "label": "Logging", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] }, { - "type": "text", - "key": "MUSTER_REST_URL", - "label": "Muster Resl URL" + "type": "dict", + "key": "User setting", + "label": "User setting", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] }, { - "type": "dict-modifiable", - "object_type": { - "type": "number", - "minimum": 0, - "maximum": 300 - }, - "is_group": true, - "key": "templates_mapping", - "label": "Templates mapping", - "is_file": true - }] - }, { - "type": "dict", - "key": "Logging", - "label": "Logging", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }, { - "type": "dict", - "key": "User setting", - "label": "User setting", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }, { - "type": "dict", - "key": "Standalone Publish", - "label": "Standalone Publish", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }, { - "type": "dict", - "key": "Idle Manager", - "label": "Idle Manager", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }] + "type": "dict", + "key": "Standalone Publish", + "label": "Standalone Publish", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, { + "type": "dict", + "key": "Idle Manager", + "label": "Idle Manager", + "collapsable": true, + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + } + ] } From 12de5bdb5fe1eede2d267fcdd945bef447ea39db Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 18:25:15 +0100 Subject: [PATCH 09/56] simplified condition --- pype/tools/settings/settings/widgets/item_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 15ba817f29..4cfca93824 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2217,7 +2217,7 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): self.content_widget = content_widget self.content_layout = content_layout - if not as_widget and body_widget: + if body_widget: collapsable = input_data.get("collapsable", True) if collapsable: collapsed = input_data.get("collapsed", True) From 800efd6ead03f22b1d7d44a93236c00ff87f1c1e Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 19:04:55 +0100 Subject: [PATCH 10/56] do not validate on `set_value` in strict list --- pype/tools/settings/settings/widgets/item_types.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 4cfca93824..99b2f593a9 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -1897,8 +1897,6 @@ class ListStrictWidget(QtWidgets.QWidget, InputObject): return self._default_input_value def set_value(self, value): - self.validate_value(value) - if self._is_overriden: method_name = "apply_overrides" elif not self._has_studio_override: From efeb53aa23e29a1aad327e2d9e6e018f30df64d9 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 19:23:03 +0100 Subject: [PATCH 11/56] fix missing object attribute --- pype/tools/settings/settings/widgets/item_types.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 99b2f593a9..be508d6617 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2186,15 +2186,14 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): elif label is None: body_widget = None - self.body_widget = body_widget self.label_widget = None else: body_widget = ExpandingWidget(input_data["label"], self) main_layout.addWidget(body_widget) - self.body_widget = body_widget self.label_widget = body_widget.label_widget + self.body_widget = body_widget if body_widget is None: content_parent_widget = self else: From f4e442cb333efb90b57cee4def50633d7da9c3b8 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 22:05:58 +0100 Subject: [PATCH 12/56] removed DictInvisible --- .../settings/settings/widgets/item_types.py | 295 +----------------- 1 file changed, 1 insertion(+), 294 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index fd5364ea17..7a7b95ee3b 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2835,299 +2835,6 @@ class DictWidget(QtWidgets.QWidget, SettingObject): return self._override_values(True) -class DictInvisible(QtWidgets.QWidget, SettingObject): - # TODO is not overridable by itself - value_changed = QtCore.Signal(object) - allow_actions = False - expand_in_grid = True - valid_value_types = (dict, type(NOT_SET)) - - def __init__( - self, input_data, parent, - as_widget=False, label_widget=None, parent_widget=None - ): - if parent_widget is None: - parent_widget = parent - super(DictInvisible, self).__init__(parent_widget) - self.setObjectName("DictInvisible") - - self.initial_attributes(input_data, parent, as_widget) - - if self._is_group: - raise TypeError("DictInvisible can't be marked as group input.") - - self.setAttribute(QtCore.Qt.WA_TranslucentBackground) - - layout = QtWidgets.QGridLayout(self) - layout.setContentsMargins(0, 0, 0, 0) - layout.setSpacing(5) - - self.content_layout = layout - - self.input_fields = [] - - self.key = input_data["key"] - - for child_data in input_data.get("children", []): - self.add_children_gui(child_data) - - any_visible = False - for input_field in self.input_fields: - if not input_field.hidden_by_role: - any_visible = True - break - - if not any_visible: - self.hide() - - def add_children_gui(self, child_configuration): - item_type = child_configuration["type"] - klass = TypeToKlass.types.get(item_type) - - row = self.content_layout.rowCount() - if not getattr(klass, "is_input_type", False): - item = klass(child_configuration, self) - self.content_layout.addWidget(item, row, 0, 1, 2) - return item - - label_widget = None - if not klass.expand_in_grid: - label = child_configuration.get("label") - if label is not None: - label_widget = GridLabelWidget(label, self) - self.content_layout.addWidget(label_widget, row, 0, 1, 1) - - item = klass(child_configuration, self, label_widget=label_widget) - item.value_changed.connect(self._on_value_change) - - if label_widget: - if item.hidden_by_role: - label_widget.hide() - label_widget.input_field = item - self.content_layout.addWidget(item, row, 1, 1, 1) - else: - self.content_layout.addWidget(item, row, 0, 1, 2) - - self.input_fields.append(item) - return item - - def update_style(self, *args, **kwargs): - return - - @property - def child_has_studio_override(self): - for input_field in self.input_fields: - if ( - input_field.has_studio_override - or input_field.child_has_studio_override - ): - return True - return False - - @property - def child_modified(self): - for input_field in self.input_fields: - if input_field.child_modified: - return True - return False - - @property - def child_overriden(self): - for input_field in self.input_fields: - if input_field.is_overriden or input_field.child_overriden: - return True - return False - - @property - def child_invalid(self): - for input_field in self.input_fields: - if input_field.child_invalid: - return True - return False - - def get_invalid(self): - output = [] - for input_field in self.input_fields: - output.extend(input_field.get_invalid()) - return output - - def item_value(self): - output = {} - for input_field in self.input_fields: - # TODO maybe merge instead of update should be used - # NOTE merge is custom function which merges 2 dicts - output.update(input_field.config_value()) - return output - - def _on_value_change(self, item=None): - if self.ignore_value_changes: - return - - if self.is_group and not self.any_parent_as_widget: - if self.is_overidable: - self._is_overriden = True - else: - self._has_studio_override = True - self.hierarchical_style_update() - - self.value_changed.emit(self) - - def hierarchical_style_update(self): - for input_field in self.input_fields: - input_field.hierarchical_style_update() - self.update_style() - - def remove_overrides(self): - self._is_overriden = False - self._is_modified = False - for input_field in self.input_fields: - input_field.remove_overrides() - - def reset_to_pype_default(self): - for input_field in self.input_fields: - 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 - self._has_studio_override = self._had_studio_override - - for input_field in self.input_fields: - input_field.discard_changes() - - self._is_modified = self.child_modified - if not self.is_overidable and self.as_widget: - if self.has_studio_override: - self._is_modified = self.studio_value != self.item_value() - else: - self._is_modified = self.default_value != self.item_value() - - self._state = None - self._is_overriden = self._was_overriden - - def set_as_overriden(self): - if self.is_overriden: - return - - if self.is_group: - self._is_overriden = True - return - - for item in self.input_fields: - item.set_as_overriden() - - def update_default_values(self, parent_values): - value = NOT_SET - if self.as_widget: - value = parent_values - elif parent_values is not NOT_SET: - value = parent_values.get(self.key, NOT_SET) - - try: - self.validate_value(value) - except InvalidValueType as exc: - value = NOT_SET - self.log.warning(exc.msg) - - for item in self.input_fields: - item.update_default_values(value) - - def update_studio_values(self, parent_values): - value = NOT_SET - if parent_values is not NOT_SET: - value = parent_values.get(self.key, NOT_SET) - - try: - self.validate_value(value) - except InvalidValueType as exc: - value = NOT_SET - self.log.warning(exc.msg) - - for item in self.input_fields: - item.update_studio_values(value) - - def apply_overrides(self, parent_values): - # Make sure this is set to False - self._state = None - self._child_state = None - - metadata = {} - groups = tuple() - override_values = NOT_SET - if parent_values is not NOT_SET: - metadata = parent_values.get(METADATA_KEY) or metadata - groups = metadata.get("groups") or groups - override_values = parent_values.get(self.key, override_values) - - self._is_overriden = self.key in groups - - try: - self.validate_value(override_values) - except InvalidValueType as exc: - override_values = NOT_SET - self.log.warning(exc.msg) - - for item in self.input_fields: - item.apply_overrides(override_values) - - if not self._is_overriden: - self._is_overriden = ( - self.is_group - and self.is_overidable - and self.child_overriden - ) - self._was_overriden = bool(self._is_overriden) - - def _override_values(self, project_overrides): - values = {} - groups = [] - for input_field in self.input_fields: - if project_overrides: - value, is_group = input_field.overrides() - else: - value, is_group = input_field.studio_overrides() - if value is NOT_SET: - continue - - if METADATA_KEY in value and METADATA_KEY in values: - new_metadata = value.pop(METADATA_KEY) - values[METADATA_KEY] = self.merge_metadata( - values[METADATA_KEY], new_metadata - ) - - values.update(value) - if is_group: - groups.extend(value.keys()) - - if groups: - if METADATA_KEY not in values: - values[METADATA_KEY] = {} - values[METADATA_KEY]["groups"] = groups - return {self.key: values}, self.is_group - - def studio_overrides(self): - if ( - not (self.as_widget or self.any_parent_as_widget) - and not self.has_studio_override - and not self.child_has_studio_override - ): - return NOT_SET, False - return self._override_values(False) - - def overrides(self): - if not self.is_overriden and not self.child_overriden: - return NOT_SET, False - return self._override_values(True) - - class PathWidget(QtWidgets.QWidget, SettingObject): value_changed = QtCore.Signal(object) platforms = ("windows", "darwin", "linux") @@ -3768,7 +3475,7 @@ TypeToKlass.types["dict-modifiable"] = ModifiableDict # DEPRECATED - remove when removed from schemas TypeToKlass.types["dict-item"] = DictWidget TypeToKlass.types["dict"] = DictWidget -TypeToKlass.types["dict-invisible"] = DictInvisible +TypeToKlass.types["dict-invisible"] = DictWidget TypeToKlass.types["path-widget"] = PathWidget TypeToKlass.types["form"] = DictFormWidget From 5443e0e0f906ffd35964212a35c4db0db244b80c Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 22:06:59 +0100 Subject: [PATCH 13/56] modified DictWidget to be able not have label part --- .../settings/settings/widgets/item_types.py | 153 ++++++++++-------- 1 file changed, 86 insertions(+), 67 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 7a7b95ee3b..aef1a0ae19 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2180,24 +2180,22 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) + label = input_data.get("label") + if as_widget: body_widget = None self.label_widget = label_widget + + elif label is None: + body_widget = None + self.label_widget = None else: body_widget = ExpandingWidget(input_data["label"], self) main_layout.addWidget(body_widget) - self.body_widget = body_widget self.label_widget = body_widget.label_widget - collapsable = input_data.get("collapsable", True) - if collapsable: - collapsed = input_data.get("collapsed", True) - if not collapsed: - body_widget.toggle_content() - - else: - body_widget.hide_toolbox(hide_content=False) + self.body_widget = body_widget if body_widget is None: content_parent_widget = self @@ -2219,6 +2217,16 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): self.content_widget = content_widget self.content_layout = content_layout + if body_widget: + collapsable = input_data.get("collapsable", True) + if collapsable: + collapsed = input_data.get("collapsed", True) + if not collapsed: + body_widget.toggle_content() + + else: + body_widget.hide_toolbox(hide_content=False) + self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.add_row(is_empty=True) @@ -2419,12 +2427,16 @@ class DictWidget(QtWidgets.QWidget, SettingObject): self.checkbox_widget = None self.checkbox_key = input_data.get("checkbox_key") - self.label_widget = label_widget + if not self.as_widget: + self.key = input_data["key"] - if self.as_widget: - self._ui_as_widget(input_data) + if not self.as_widget and input_data.get("label") is None: + self._ui_item_without_label() else: - self._ui_as_item(input_data) + self._ui_item_or_as_widget(input_data, label_widget) + + for child_data in input_data.get("children", []): + self.add_children_gui(child_data) any_visible = False for input_field in self.input_fields: @@ -2435,68 +2447,70 @@ class DictWidget(QtWidgets.QWidget, SettingObject): if not any_visible: self.hide() - def _ui_as_item(self, input_data): - self.key = input_data["key"] - if input_data.get("highlight_content", False): - content_state = "hightlighted" - bottom_margin = 5 + def _ui_item_without_label(self): + self.setObjectName("DictInvisible") + + self.label_widget = None + self.body_widget = None + self.content_layout = QtWidgets.QGridLayout(self) + self.content_layout.setContentsMargins(0, 0, 0, 0) + self.content_layout.setSpacing(5) + + def _ui_item_or_as_widget(self, input_data, label_widget): + content_widget = QtWidgets.QWidget(self) + + if self.as_widget: + content_widget.setObjectName("DictAsWidgetBody") + show_borders = str( + int(input_data.get("show_borders", True)) + ) + content_widget.setProperty("show_borders", show_borders) + content_layout_margins = (5, 5, 5, 5) + main_layout_spacing = 5 + body_widget = None + else: - content_state = "" - bottom_margin = 0 + content_widget.setObjectName("ContentWidget") + if input_data.get("highlight_content", False): + content_state = "hightlighted" + bottom_margin = 5 + else: + content_state = "" + bottom_margin = 0 + content_widget.setProperty("content_state", content_state) + content_layout_margins = (CHILD_OFFSET, 5, 0, bottom_margin) + main_layout_spacing = 0 + + body_widget = ExpandingWidget(input_data["label"], self) + label_widget = body_widget.label_widget + body_widget.set_content_widget(content_widget) + + content_layout = QtWidgets.QGridLayout(content_widget) + content_layout.setContentsMargins(*content_layout_margins) main_layout = QtWidgets.QHBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) - main_layout.setSpacing(0) - - body_widget = ExpandingWidget(input_data["label"], self) - - main_layout.addWidget(body_widget) - - content_widget = QtWidgets.QWidget(body_widget) - content_widget.setObjectName("ContentWidget") - content_widget.setProperty("content_state", content_state) - content_layout = QtWidgets.QGridLayout(content_widget) - content_layout.setContentsMargins(CHILD_OFFSET, 5, 0, bottom_margin) - - body_widget.set_content_widget(content_widget) - - self.body_widget = body_widget - self.content_widget = content_widget - self.content_layout = content_layout - - self.label_widget = body_widget.label_widget - - for child_data in input_data.get("children", []): - self.add_children_gui(child_data) - - collapsable = input_data.get("collapsable", True) - if len(self.input_fields) == 1 and self.checkbox_widget: - body_widget.hide_toolbox(hide_content=True) - - elif collapsable: - collapsed = input_data.get("collapsed", True) - if not collapsed: - body_widget.toggle_content() + main_layout.setSpacing(main_layout_spacing) + if not body_widget: + main_layout.addWidget(content_widget) else: - body_widget.hide_toolbox(hide_content=False) + main_layout.addWidget(body_widget) - def _ui_as_widget(self, input_data): - body = QtWidgets.QWidget(self) - body.setObjectName("DictAsWidgetBody") - show_borders = str(int(input_data.get("show_borders", True))) - body.setProperty("show_borders", show_borders) - - content_layout = QtWidgets.QGridLayout(body) - content_layout.setContentsMargins(5, 5, 5, 5) + self.label_widget = label_widget + self.body_widget = body_widget self.content_layout = content_layout - layout = QtWidgets.QHBoxLayout(self) - layout.setContentsMargins(0, 0, 0, 0) - layout.setSpacing(5) - layout.addWidget(body) + if body_widget: + collapsable = input_data.get("collapsable", True) + if len(self.input_fields) == 1 and self.checkbox_widget: + body_widget.hide_toolbox(hide_content=True) - for child_configuration in input_data["children"]: - self.add_children_gui(child_configuration) + elif collapsable: + collapsed = input_data.get("collapsed", True) + if not collapsed: + body_widget.toggle_content() + else: + body_widget.hide_toolbox(hide_content=False) def add_children_gui(self, child_configuration): item_type = child_configuration["type"] @@ -2516,6 +2530,11 @@ class DictWidget(QtWidgets.QWidget, SettingObject): "SCHEMA BUG: Dictionary item has set as checkbox" " item invalid type \"{}\". Expected \"boolean\"." ).format(child_configuration["type"])) + elif self.body_widget is None: + self.log.warning(( + "SCHEMA BUG: Dictionary item has set checkbox" + " item but item does not have label." + ).format(child_configuration["type"])) else: return self._add_checkbox_child(child_configuration) @@ -2706,7 +2725,7 @@ class DictWidget(QtWidgets.QWidget, SettingObject): def update_style(self, is_overriden=None): # TODO add style update when used as widget - if self.as_widget: + if not self.body_widget: return child_has_studio_override = self.child_has_studio_override From 595bd9022482e9d977ccb65140298644244e9097 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Wed, 25 Nov 2020 22:08:16 +0100 Subject: [PATCH 14/56] rename project host settings --- .../projects_schema/0_project_gui_schema.json | 26 +++- ...ns_gui_schema.json => schema_plugins.json} | 0 .../schema_project_celaction.json | 0 .../{schemas => }/schema_project_ftrack.json | 144 +++++++++++------- .../{schemas => }/schema_project_hiero.json | 0 .../{schemas => }/schema_project_maya.json | 6 +- .../{schemas => }/schema_project_nuke.json | 0 .../{schemas => }/schema_project_resolve.json | 0 .../schema_maya_capture.json} | 0 .../schema_maya_plugins.json} | 0 .../schema_maya_workfiles.json} | 0 .../module_settings/schema_ftrack.json | 47 +++--- 12 files changed, 132 insertions(+), 91 deletions(-) rename pype/tools/settings/settings/gui_schemas/projects_schema/{1_plugins_gui_schema.json => schema_plugins.json} (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{schemas => }/schema_project_celaction.json (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{schemas => }/schema_project_ftrack.json (54%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{schemas => }/schema_project_hiero.json (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{schemas => }/schema_project_maya.json (76%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{schemas => }/schema_project_nuke.json (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{schemas => }/schema_project_resolve.json (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{2_maya_capture.json => schemas/schema_maya_capture.json} (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{2_maya_plugins.json => schemas/schema_maya_plugins.json} (100%) rename pype/tools/settings/settings/gui_schemas/projects_schema/{2_maya_workfiles.json => schemas/schema_maya_workfiles.json} (100%) diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json index 5b19a1159a..7409b45533 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json @@ -23,7 +23,31 @@ "children": [ { "type": "schema", - "name": "1_plugins_gui_schema" + "name": "schema_project_ftrack" + }, + { + "type": "schema", + "name": "schema_project_maya" + }, + { + "type": "schema", + "name": "schema_project_nuke" + }, + { + "type": "schema", + "name": "schema_project_hiero" + }, + { + "type": "schema", + "name": "schema_project_celaction" + }, + { + "type": "schema", + "name": "schema_project_resolve" + }, + { + "type": "schema", + "name": "schema_plugins" } ] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_plugins.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_plugins.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_celaction.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_celaction.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_celaction.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_celaction.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json similarity index 54% rename from pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json index 1d6b4cbf5b..767321f835 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_ftrack.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json @@ -32,41 +32,7 @@ "type": "dict", "key": "events", "label": "Server Events", - "children": [{ - "type": "dict", - "key": "sync_to_avalon", - "label": "Sync to avalon", - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "list", - "key": "statuses_name_change", - "label": "Status name change", - "object_type": { - "type": "text", - "multiline": false - } - }] - }, - { - "type": "dict", - "key": "status_version_to_task", - "label": "Version to Task status mapping", - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "dict-modifiable", - "key": "statuses", - "label": "Stausesg", - "object_type": "text" - }] - }, + "children": [ { "type": "dict", "key": "status_update", @@ -96,34 +62,94 @@ }, { "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, + "key": "status_task_to_parent", + "label": "Sync status from Task to Parent", + "checkbox_key": "enabled", "children": [{ - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "IntegrateFtrackNote", - "label": "IntegrateFtrackNote", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "text", - "key": "note_with_intent_template", - "label": "Note with intent template" - }, { - "type": "list", - "object_type": "text", - "key": "note_labels", - "label": "Note labels" - }] + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "dict", + "key": "status_task_to_version", + "label": "Sync status from Task to Version", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "dict", + "key": "status_version_to_task", + "label": "Sync status from Version to Task", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "dict-modifiable", + "key": "statuses", + "label": "statuses", + "object_type": "text" + }] + }, + { + "type": "dict", + "key": "first_version_status", + "label": "Set status on first created version", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "dict", + "key": "next_task_update", + "label": "Update status on next task", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" }] } ] + }, + { + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "is_file": true, + "children": [{ + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "IntegrateFtrackNote", + "label": "IntegrateFtrackNote", + "is_group": true, + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, { + "type": "text", + "key": "note_with_intent_template", + "label": "Note with intent template" + }, { + "type": "list", + "object_type": "text", + "key": "note_labels", + "label": "Note labels" + }] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_hiero.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_hiero.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json similarity index 76% rename from pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json index 6ef30a349d..38c7ff81a1 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_maya.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json @@ -13,15 +13,15 @@ { "type": "schema", - "name": "2_maya_capture" + "name": "schema_maya_capture" }, { "type": "schema", - "name": "2_maya_plugins" + "name": "schema_maya_plugins" }, { "type": "schema", - "name": "2_maya_workfiles" + "name": "schema_maya_workfiles" } ] }] diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_nuke.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_nuke.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_resolve.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_resolve.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_project_resolve.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_resolve.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_capture.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_capture.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_capture.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_capture.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_plugins.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_plugins.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_plugins.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_plugins.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_workfiles.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_workfiles.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_workfiles.json rename to pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_workfiles.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json index 86570e2ac8..4ce23c75f7 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json @@ -54,7 +54,8 @@ "type": "dict", "key": "events", "label": "Server Events", - "children": [{ + "children": [ + { "type": "dict", "key": "sync_to_avalon", "label": "Sync to avalon", @@ -73,47 +74,37 @@ } }] }, - { + { "type": "dict", - "key": "status_version_to_task", - "label": "Version to Task status mapping", + "key": "push_frame_values_to_task", + "label": "Sync Hierarchical and Entity Attributes", "checkbox_key": "enabled", "children": [{ "type": "boolean", "key": "enabled", "label": "Enabled" - }, { - "type": "dict-modifiable", - "key": "statuses", - "label": "Stausesg", - "object_type": "text" }] }, - { + { "type": "dict", - "key": "status_update", - "label": "Status Updates", + "key": "thumbnail_updates", + "label": "Update Hierarchy thumbnails", + "checkbox_key": "enabled", + "children": [{ + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "dict", + "key": "user_assignment", + "label": "Update Hierarchy thumbnails", "checkbox_key": "enabled", "children": [{ "type": "boolean", "key": "enabled", "label": "Enabled" - }, - { - "key": "statuses", - "type": "dict-invisible", - "children": [ - { - "key": "default", - "type": "text", - "label": "complete" - }, - { - "key": "default2", - "type": "text", - "label": "in progress" - } - ] }] } ] From f2f10d91d10b469bdd37791f578a8c06883543eb Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 22:50:20 +0100 Subject: [PATCH 15/56] added `_is_group` check --- pype/tools/settings/settings/widgets/item_types.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index aef1a0ae19..b235e38ab5 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2448,6 +2448,11 @@ class DictWidget(QtWidgets.QWidget, SettingObject): self.hide() def _ui_item_without_label(self): + if self._is_group: + raise TypeError( + "Dictionary without label can't be marked as group input." + ) + self.setObjectName("DictInvisible") self.label_widget = None From ed47e11dedf196d9a74cb5d9bc337686648cd8b0 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 22:50:32 +0100 Subject: [PATCH 16/56] updated readme and examples --- pype/tools/settings/settings/README.md | 55 +++++++++---------- .../system_schema/example_schema.json | 4 +- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/pype/tools/settings/settings/README.md b/pype/tools/settings/settings/README.md index 4f4e9d305a..046f903f90 100644 --- a/pype/tools/settings/settings/README.md +++ b/pype/tools/settings/settings/README.md @@ -116,43 +116,29 @@ ## Basic Dictionary inputs - these inputs wraps another inputs into {key: value} relation -### dict-invisible -- this input gives ability to wrap another inputs but keep them in same widget without visible divider - - this is for example used as first input widget -- has required keys `"key"` and `"children"` - - "children" says what children inputs are underneath - - "key" is key under which will be stored value from it's children -- output is dictionary `{the "key": children values}` -- can't have `"is_group"` key set to True as it breaks visual override showing -``` -{ - "type": "dict-invisible", - "key": "global", - "children": [ - ...ITEMS... - ] -} -``` - ## dict - this is another dictionary input wrapping more inputs but visually makes them different - item may be used as widget (in `list` or `dict-modifiable`) - in that case the only key modifier is `children` which is list of it's keys - USAGE: e.g. List of dictionaries where each dictionary have same structure. -- item options if is not used as widget - - required keys are `"key"` under which will be stored and `"label"` which will be shown in GUI - - this input can be expandable - - that can be set with key `"expandable"` as `True`/`False` (Default: `True`) - - with key `"expanded"` as `True`/`False` can be set that is expanded when GUI is opened (Default: `False`) - - it is possible to add darker background with `"highlight_content"` (Default: `False`) - - darker background has limits of maximum applies after 3-4 nested highlighted items there is not difference in the color +- item may be with or without `"label"` if is not used as widget + - required keys are `"key"` under which will be stored + - without label it is just wrap item holding `"key"` + - can't have `"is_group"` key set to True as it breaks visual override showing + - if `"label"` is entetered there which will be shown in GUI + - item with label can be collapsable + - that can be set with key `"collapsable"` as `True`/`False` (Default: `True`) + - with key `"collapsed"` as `True`/`False` can be set that is collapsed when GUI is opened (Default: `False`) + - it is possible to add darker background with `"highlight_content"` (Default: `False`) + - darker background has limits of maximum applies after 3-4 nested highlighted items there is not difference in the color + - output is dictionary `{the "key": children values}` ``` # Example { "key": "applications", "type": "dict", "label": "Applications", - "expandable": true, + "collapsable": true, "highlight_content": true, "is_group": true, "is_file": true, @@ -161,13 +147,22 @@ ] } +# Without label +{ + "type": "dict", + "key": "global", + "children": [ + ...ITEMS... + ] +} + # When used as widget { "type": "list", "key": "profiles", "label": "Profiles", "object_type": { - "type": "dict-item", + "type": "dict", "children": [ { "key": "families", @@ -318,9 +313,9 @@ - there are 2 possible ways how to set the type: 1.) dictionary with item modifiers (`number` input has `minimum`, `maximum` and `decimals`) in that case item type must be set as value of `"type"` (example below) 2.) item type name as string without modifiers (e.g. `text`) -- this input can be expandable - - that can be set with key `"expandable"` as `True`/`False` (Default: `True`) - - with key `"expanded"` as `True`/`False` can be set that is expanded when GUI is opened (Default: `False`) +- this input can be collapsable + - that can be set with key `"collapsable"` as `True`/`False` (Default: `True`) + - with key `"collapsed"` as `True`/`False` can be set that is collapsed when GUI is opened (Default: `False`) 1.) with item modifiers ``` diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json index 7612e54116..a3e7f52776 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/example_schema.json @@ -40,7 +40,7 @@ ] }, { "key": "dict_wrapper", - "type": "dict-invisible", + "type": "dict", "children": [ { "type": "enum", @@ -248,7 +248,7 @@ "key": "dict_item", "label": "DictItem in List", "object_type": { - "type": "dict-item", + "type": "dict", "children": [ { "key": "families", From 6b13ab2f1d9c8c1a9ecfe9d6bc40058910817f24 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 22:55:49 +0100 Subject: [PATCH 17/56] moved few lines --- pype/tools/settings/settings/widgets/item_types.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index b235e38ab5..769ddca5ad 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -3498,8 +3498,9 @@ TypeToKlass.types["enum"] = EnumeratorWidget TypeToKlass.types["dict-modifiable"] = ModifiableDict # DEPRECATED - remove when removed from schemas TypeToKlass.types["dict-item"] = DictWidget -TypeToKlass.types["dict"] = DictWidget TypeToKlass.types["dict-invisible"] = DictWidget +# --------------------------------------------- +TypeToKlass.types["dict"] = DictWidget TypeToKlass.types["path-widget"] = PathWidget TypeToKlass.types["form"] = DictFormWidget From 663887ec2ff05e7520a743a62fe5fd8cf8349787 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 23:04:07 +0100 Subject: [PATCH 18/56] used dict instead of dict-invisible in schemas --- .../system_schema/host_settings/schema_blender.json | 2 +- .../system_schema/host_settings/schema_celaction.json | 2 +- .../gui_schemas/system_schema/host_settings/schema_djv.json | 2 +- .../system_schema/host_settings/schema_fusion.json | 2 +- .../system_schema/host_settings/schema_harmony.json | 2 +- .../system_schema/host_settings/schema_houdini.json | 2 +- .../gui_schemas/system_schema/host_settings/schema_maya.json | 2 +- .../system_schema/host_settings/schema_mayabatch.json | 2 +- .../system_schema/host_settings/schema_photoshop.json | 2 +- .../system_schema/host_settings/schema_resolve.json | 2 +- .../gui_schemas/system_schema/host_settings/schema_shell.json | 2 +- .../system_schema/host_settings/schema_unreal.json | 2 +- .../system_schema/host_settings/template_nuke.json | 2 +- .../settings/gui_schemas/system_schema/schema_main.json | 4 ++-- .../settings/gui_schemas/system_schema/schema_modules.json | 2 +- .../settings/gui_schemas/system_schema/schema_tools.json | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_blender.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_blender.json index 28adf347b1..1cdd6825bc 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_blender.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_blender.json @@ -20,7 +20,7 @@ "env_group_key": "blender" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_celaction.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_celaction.json index ac872267d8..8a78aaf187 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_celaction.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_celaction.json @@ -20,7 +20,7 @@ "env_group_key": "celaction" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_djv.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_djv.json index 987bb382db..4ebb97d5bd 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_djv.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_djv.json @@ -20,7 +20,7 @@ "env_group_key": "djvview" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_fusion.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_fusion.json index b2ce01b7db..38fdc2d067 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_fusion.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_fusion.json @@ -20,7 +20,7 @@ "env_group_key": "fusion" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_harmony.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_harmony.json index 80bc9864f0..d7b9e61bda 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_harmony.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_harmony.json @@ -20,7 +20,7 @@ "env_group_key": "harmony" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_houdini.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_houdini.json index ace2a3106c..be319198ba 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_houdini.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_houdini.json @@ -20,7 +20,7 @@ "env_group_key": "houdini" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_maya.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_maya.json index eb055863b8..4ecf2362fa 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_maya.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_maya.json @@ -21,7 +21,7 @@ "env_group_key": "maya" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_mayabatch.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_mayabatch.json index 27d2ca68cd..43d281991a 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_mayabatch.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_mayabatch.json @@ -21,7 +21,7 @@ "env_group_key": "mayabatch" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_photoshop.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_photoshop.json index f86f6ff055..755cad12c4 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_photoshop.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_photoshop.json @@ -20,7 +20,7 @@ "env_group_key": "photoshop" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_resolve.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_resolve.json index e6d0a6a84d..4871d0ebb8 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_resolve.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_resolve.json @@ -20,7 +20,7 @@ "env_group_key": "resolve" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_shell.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_shell.json index bbc86c53ee..389d480a45 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_shell.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_shell.json @@ -16,7 +16,7 @@ "env_group_key": "shell" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_unreal.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_unreal.json index 6c2778f470..859d73614b 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_unreal.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_unreal.json @@ -20,7 +20,7 @@ "env_group_key": "unreal" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_nuke.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_nuke.json index e8a8fc3799..d335891b70 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_nuke.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_nuke.json @@ -20,7 +20,7 @@ "env_group_key": "{nuke_type}" }, { - "type": "dict-invisible", + "type": "dict", "key": "variants", "children": [{ "type": "schema_template", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json index 8e8798149c..039d00401c 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json @@ -1,9 +1,9 @@ { "key": "system", - "type": "dict-invisible", + "type": "dict", "children": [ { - "type": "dict-invisible", + "type": "dict", "key": "global", "children": [{ "type": "schema", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json index fa84a27ae3..9d6aa7ccb5 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json @@ -114,7 +114,7 @@ }, { "key": "intent", - "type": "dict-invisible", + "type": "dict", "children": [{ "type": "dict-modifiable", "object_type": "text", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_tools.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_tools.json index 97fbd5c390..c8f4829a09 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_tools.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_tools.json @@ -18,7 +18,7 @@ "name": "schema_yeti" }, { - "type": "dict-invisible", + "type": "dict", "key": "other", "children": [ { From adb1b8457963dfd3581fb9ad6afccd05778af416 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 23:29:02 +0100 Subject: [PATCH 19/56] storing env metadata in raw json moved back to config_value --- .../settings/settings/widgets/item_types.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index be508d6617..ee15ddda6b 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -1328,18 +1328,17 @@ class RawJsonWidget(QtWidgets.QWidget, InputObject): output = {} for key, value in value.items(): output[key.upper()] = value - - if self.is_environ: - output[METADATA_KEY] = { - "environments": { - self.env_group_key: list(output.keys()) - } - } - return output def config_value(self): - return {self.key: self.item_value()} + value = self.item_value() + if self.is_environ: + value[METADATA_KEY] = { + "environments": { + self.env_group_key: list(value.keys()) + } + } + return {self.key: value} class ListItem(QtWidgets.QWidget, SettingObject): From 7d7561f2a608b58436f14e32fdb146814eef140b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 23:29:33 +0100 Subject: [PATCH 20/56] ModifiableDict adds env metadata to output in config_value if is marked to store env groups keys --- pype/tools/settings/settings/widgets/item_types.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index ee15ddda6b..e59db34367 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2334,6 +2334,18 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): output.update(item.config_value()) return output + def config_value(self): + output = self.item_value() + if self.value_is_env_group: + for key, value in tuple(output.items()): + value[METADATA_KEY] = { + "environments": { + key: list(value.keys()) + } + } + output[key] = value + return {self.key: output} + def add_row(self, row=None, key=None, value=None, is_empty=False): # Create new item item_widget = ModifiableDictItem( From 724245cf2f224b9d12589fd7ad76020467f62a6a Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 25 Nov 2020 23:38:08 +0100 Subject: [PATCH 21/56] removed label from what was set as dict-invisible and changed to dict --- .../projects_schema/0_project_gui_schema.json | 4 +-- .../projects_schema/1_plugins_gui_schema.json | 6 ++-- .../projects_schema/2_maya_capture.json | 32 +++++-------------- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json index cf95bf4c45..bc9ec2dc9d 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json @@ -1,6 +1,6 @@ { "key": "project", - "type": "dict-invisible", + "type": "dict", "children": [ { "type": "anatomy", @@ -17,7 +17,7 @@ } ] }, { - "type": "dict-invisible", + "type": "dict", "key": "project_settings", "children": [ { diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json index 87912cfdc0..16ca661604 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/1_plugins_gui_schema.json @@ -121,7 +121,7 @@ "key": "enabled", "label": "Enabled" }, { - "type": "dict-invisible", + "type": "dict", "key": "ffmpeg_args", "children": [{ "type": "list", @@ -328,10 +328,8 @@ }] }] }, { - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "maya", - "label": "Maya", "children": [{ "type": "dict", "collapsable": true, diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_capture.json b/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_capture.json index 836ad90404..ae3e67a7fc 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_capture.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/2_maya_capture.json @@ -6,10 +6,8 @@ "is_file": true, "children": [ { - "type": "dict-invisible", + "type": "dict", "key": "Codec", - "label": "Codec", - "collapsable": false, "children": [ { "type": "label", @@ -37,10 +35,8 @@ } ] }, { - "type": "dict-invisible", + "type": "dict", "key": "Display Options", - "label": "Display Options", - "collapsable": false, "children": [ { "type": "label", @@ -132,10 +128,8 @@ "type": "splitter" } , { - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "Generic", - "label": "Generic", "children": [ { "type": "label", @@ -152,10 +146,8 @@ } ] },{ - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "IO", - "label": "IO", "children": [ { "type": "label", @@ -185,10 +177,8 @@ } ] },{ - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "PanZoom", - "label": "Pan Zoom", "children": [ { "type": "boolean", @@ -200,10 +190,8 @@ { "type": "splitter" },{ - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "Renderer", - "label": "Renderer", "children": [ { @@ -217,10 +205,8 @@ } ] },{ - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "Resolution", - "label": "Resolution", "children": [ { @@ -262,10 +248,8 @@ "type": "splitter" }, { - "type": "dict-invisible", - "collapsable": true, + "type": "dict", "key": "Time Range", - "label": "Time Range", "children": [ { "type": "label", From 647053273e83a03814401bc9633dd573681f54f5 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 00:01:34 +0100 Subject: [PATCH 22/56] convert ftrack settings --- .../defaults/project_settings/Ftrack.json | 73 +++++++++++++++++++ .../schema_project_ftrack.json | 68 ++++++++++++----- 2 files changed, 122 insertions(+), 19 deletions(-) create mode 100644 pype/settings/defaults/project_settings/Ftrack.json diff --git a/pype/settings/defaults/project_settings/Ftrack.json b/pype/settings/defaults/project_settings/Ftrack.json new file mode 100644 index 0000000000..7c9bb8ce0e --- /dev/null +++ b/pype/settings/defaults/project_settings/Ftrack.json @@ -0,0 +1,73 @@ +{ + "ftrack_actions_path": [], + "ftrack_events_path": [], + "events": { + "status_update": { + "enabled": true, + "mapping": { + "In Progress": [ + "__any__" + ], + "Ready": [ + "Not Ready" + ], + "__ignore__": [ + "in prgoress", + "omitted", + "on hold" + ] + } + }, + "status_task_to_parent": { + "enabled": true, + "parent_status_match_all_task_statuses": { + "Completed": [ + "Approved", + "Omitted" + ] + }, + "parent_status_by_task_status": { + "In Progress": [ + "in progress", + "change requested", + "retake", + "pending review" + ] + } + }, + "status_task_to_version": { + "enabled": true, + "mapping": { + "Approved": [ + "Complete" + ] + } + }, + "status_version_to_task": { + "enabled": true, + "mapping": { + "Complete": [ + "Approved", + "Complete" + ] + } + }, + "first_version_status": { + "enabled": true, + "status": "" + }, + "next_task_update": { + "enabled": true, + "mapping": { + "Ready": "Not Ready" + } + } + }, + "publish": { + "IntegrateFtrackNote": { + "enabled": true, + "note_with_intent_template": "", + "note_labels": [] + } + } +} \ No newline at end of file diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json index 767321f835..a7c835081a 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_ftrack.json @@ -36,7 +36,7 @@ { "type": "dict", "key": "status_update", - "label": "Status Updates", + "label": "Update status on task action", "checkbox_key": "enabled", "children": [{ "type": "boolean", @@ -44,20 +44,12 @@ "label": "Enabled" }, { - "key": "statuses", - "type": "dict-invisible", - "children": [ - { - "key": "default", - "type": "text", - "label": "complete" - }, - { - "key": "default2", - "type": "text", - "label": "in progress" - } - ] + "key": "mapping", + "type": "dict-modifiable", + "object_type": { + "type": "list", + "object_type": "text" + } }] }, { @@ -69,6 +61,24 @@ "type": "boolean", "key": "enabled", "label": "Enabled" + }, + { + "key": "parent_status_match_all_task_statuses", + "type": "dict-modifiable", + "label": "Change parent if all tasks match", + "object_type": { + "type": "list", + "object_type": "text" + } + }, + { + "key": "parent_status_by_task_status", + "type": "dict-modifiable", + "label": "Change parent status if a single task matches", + "object_type": { + "type": "list", + "object_type": "text" + } }] }, { @@ -80,6 +90,13 @@ "type": "boolean", "key": "enabled", "label": "Enabled" + }, { + "type": "dict-modifiable", + "key": "mapping", + "object_type": { + "type": "list", + "object_type": "text" + } }] }, { @@ -93,9 +110,11 @@ "label": "Enabled" }, { "type": "dict-modifiable", - "key": "statuses", - "label": "statuses", - "object_type": "text" + "key": "mapping", + "object_type": { + "type": "list", + "object_type": "text" + } }] }, { @@ -107,7 +126,12 @@ "type": "boolean", "key": "enabled", "label": "Enabled" - }] + },{ + "type": "text", + "key": "status", + "label": "Status" + } + ] }, { "type": "dict", @@ -118,6 +142,12 @@ "type": "boolean", "key": "enabled", "label": "Enabled" + },{ + "type": "dict-modifiable", + "key": "mapping", + "object_type": { + "type": "text" + } }] } ] From 112e1e6aca76713896121957abf9f7da0c52c7b0 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 00:01:55 +0100 Subject: [PATCH 23/56] separate hosts in project settings --- .../defaults/project_settings/celaction.json | 13 ++ .../defaults/project_settings/hiero.json | 11 + .../defaults/project_settings/maya.json | 220 ++++++++++++++++++ .../defaults/project_settings/nuke.json | 62 +++++ .../plugins/maya/workfile_build.json | 17 +- .../defaults/project_settings/resolve.json | 9 + .../system_settings/global/modules.json | 29 ++- 7 files changed, 340 insertions(+), 21 deletions(-) create mode 100644 pype/settings/defaults/project_settings/celaction.json create mode 100644 pype/settings/defaults/project_settings/hiero.json create mode 100644 pype/settings/defaults/project_settings/maya.json create mode 100644 pype/settings/defaults/project_settings/nuke.json create mode 100644 pype/settings/defaults/project_settings/resolve.json diff --git a/pype/settings/defaults/project_settings/celaction.json b/pype/settings/defaults/project_settings/celaction.json new file mode 100644 index 0000000000..10165e92de --- /dev/null +++ b/pype/settings/defaults/project_settings/celaction.json @@ -0,0 +1,13 @@ +{ + "publish": { + "ExtractCelactionDeadline": { + "enabled": true, + "deadline_department": "", + "deadline_priority": 0, + "deadline_pool": "", + "deadline_pool_secondary": "", + "deadline_group": "", + "deadline_chunk_size": 0 + } + } +} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/hiero.json b/pype/settings/defaults/project_settings/hiero.json new file mode 100644 index 0000000000..8d31f2d56d --- /dev/null +++ b/pype/settings/defaults/project_settings/hiero.json @@ -0,0 +1,11 @@ +{ + "publish": { + "CollectInstanceVersion": { + "enabled": true + }, + "ExtractReviewCutUpVideo": { + "enabled": true, + "tags_addition": [] + } + } +} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/maya.json b/pype/settings/defaults/project_settings/maya.json new file mode 100644 index 0000000000..d9ec13b3ed --- /dev/null +++ b/pype/settings/defaults/project_settings/maya.json @@ -0,0 +1,220 @@ +{ + "maya_capture": { + "Codec": { + "compression": "jpg", + "format": "image", + "quality": 95 + }, + "Display Options": { + "background": [ + 0.7, + 0.7, + 0.7 + ], + "backgroundBottom": [ + 0.7, + 0.7, + 0.7 + ], + "backgroundTop": [ + 0.7, + 0.7, + 0.7 + ], + "override_display": true + }, + "Generic": { + "isolate_view": true, + "off_screen": true + }, + "IO": { + "name": "", + "open_finished": true, + "raw_frame_numbers": true, + "recent_playblasts": [], + "save_file": true + }, + "PanZoom": { + "pan_zoom": true + }, + "Renderer": { + "rendererName": "vp2Renderer" + }, + "Resolution": { + "width": 1080, + "height": 1920, + "percent": 1.0, + "mode": "Custom" + }, + "Time Range": { + "start_frame": 0, + "end_frame": 0, + "frame": "", + "time": "Time Slider" + }, + "Viewport Options": { + "cameras": false, + "clipGhosts": false, + "controlVertices": false, + "deformers": false, + "dimensions": false, + "displayLights": 0, + "dynamicConstraints": false, + "dynamics": false, + "fluids": false, + "follicles": false, + "gpuCacheDisplayFilter": false, + "greasePencils": false, + "grid": false, + "hairSystems": true, + "handles": false, + "high_quality": true, + "hud": false, + "hulls": false, + "ikHandles": false, + "imagePlane": true, + "joints": false, + "lights": false, + "locators": false, + "manipulators": false, + "motionTrails": false, + "nCloths": false, + "nParticles": false, + "nRigids": false, + "nurbsCurves": false, + "nurbsSurfaces": false, + "override_viewport_options": true, + "particleInstancers": false, + "pivots": false, + "planes": false, + "pluginShapes": false, + "polymeshes": true, + "shadows": true, + "strokes": false, + "subdivSurfaces": false, + "textures": false, + "twoSidedLighting": true + }, + "Camera Options": { + "displayGateMask": false, + "displayResolution": false, + "displayFilmGate": false, + "displayFieldChart": false, + "displaySafeAction": false, + "displaySafeTitle": false, + "displayFilmPivot": false, + "displayFilmOrigin": false, + "overscan": 1.0 + } + }, + "publish": { + "ValidateModelName": { + "enabled": true, + "material_file": { + "windows": "", + "darwin": "", + "linux": "" + }, + "regex": "" + }, + "ValidateAssemblyName": { + "enabled": true + }, + "ValidateShaderName": { + "enabled": true, + "regex": "" + }, + "ValidateMeshHasOverlappingUVs": { + "enabled": true + } + }, + "workfile_build": { + "profiles": [ + { + "tasks": [ + "Lighting" + ], + "current_context": [ + { + "subset_name_filters": [ + "\".+[Mm]ain\"" + ], + "families": [ + "model" + ], + "repre_names": [ + "abc", + "ma" + ], + "loaders": [ + "ReferenceLoader" + ] + }, + { + "subset_name_filters": [], + "families": [ + "animation", + "pointcache" + ], + "repre_names": [ + "abc" + ], + "loaders": [ + "ReferenceLoader" + ] + }, + { + "subset_name_filters": [], + "families": [ + "rendersetup" + ], + "repre_names": [ + "json" + ], + "loaders": [ + "RenderSetupLoader" + ] + }, + { + "subset_name_filters": [], + "families": [ + "camera" + ], + "repre_names": [ + "abc" + ], + "loaders": [ + "ReferenceLoader" + ] + } + ], + "linked_assets": [ + { + "subset_name_filters": [], + "families": [ + "sedress" + ], + "repre_names": [ + "ma" + ], + "loaders": [ + "ReferenceLoader" + ] + }, + { + "subset_name_filters": [], + "families": [ + "ArnoldStandin" + ], + "repre_names": [ + "ass" + ], + "loaders": [ + "assLoader" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/nuke.json b/pype/settings/defaults/project_settings/nuke.json new file mode 100644 index 0000000000..98b4f55aa4 --- /dev/null +++ b/pype/settings/defaults/project_settings/nuke.json @@ -0,0 +1,62 @@ +{ + "create": { + "CreateWriteRender": { + "fpath_template": "" + }, + "CreateWritePrerender": { + "fpath_template": "" + } + }, + "publish": { + "ExtractThumbnail": { + "enabled": true, + "nodes": {} + }, + "ValidateNukeWriteKnobs": { + "enabled": true, + "knobs": {} + }, + "ExtractReviewDataLut": { + "enabled": true + }, + "ExtractReviewDataMov": { + "enabled": true, + "viewer_lut_raw": true + }, + "ExtractSlateFrame": { + "viewer_lut_raw": true + }, + "NukeSubmitDeadline": { + "deadline_priority": 0, + "deadline_pool": "", + "deadline_pool_secondary": "", + "deadline_chunk_size": 0 + } + }, + "workfile_build": { + "profiles": [ + { + "tasks": [ + "compositing" + ], + "current_context": [ + { + "subset_name_filters": [], + "families": [ + "render", + "plate" + ], + "repre_names": [ + "exr", + "dpx" + ], + "loaders": [ + "LoadSequence" + ] + } + ], + "linked_assets": [] + } + ] + } +} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json b/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json index 443bc2cb2c..1aad307895 100644 --- a/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json +++ b/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json @@ -1,10 +1,8 @@ -[ - { +[{ "tasks": [ "lighting" ], - "current_context": [ - { + "current_context": [{ "subset_name_filters": [ ".+[Mm]ain" ], @@ -54,8 +52,7 @@ ] } ], - "linked_assets": [ - { + "linked_assets": [{ "families": [ "setdress" ], @@ -83,8 +80,7 @@ "tasks": [ "animation" ], - "current_context": [ - { + "current_context": [{ "families": [ "camera" ], @@ -108,8 +104,7 @@ ] } ], - "linked_assets": [ - { + "linked_assets": [{ "families": [ "setdress" ], @@ -133,4 +128,4 @@ } ] } -] \ No newline at end of file +] diff --git a/pype/settings/defaults/project_settings/resolve.json b/pype/settings/defaults/project_settings/resolve.json new file mode 100644 index 0000000000..646eb3a70b --- /dev/null +++ b/pype/settings/defaults/project_settings/resolve.json @@ -0,0 +1,9 @@ +{ + "create": { + "CreateShotClip": { + "clipName": "", + "folder": "", + "steps": 0 + } + } +} \ No newline at end of file diff --git a/pype/settings/defaults/system_settings/global/modules.json b/pype/settings/defaults/system_settings/global/modules.json index 6c7a45cca3..386e37b246 100644 --- a/pype/settings/defaults/system_settings/global/modules.json +++ b/pype/settings/defaults/system_settings/global/modules.json @@ -31,19 +31,28 @@ "sync_to_avalon": { "enabled": true, "statuses_name_change": [ - "not ready" + "not ready", + "ready" ] + }, + "push_frame_values_to_task": { + "enabled": true, + "interest_entity_types": [ + "shot" + ], + "interest_attributess": [ + "frameStart", + "frameEnd" + ] + }, + "thumbnail_updates": { + "enabled": true, + "levels": 2 + }, + "user_assignment": { + "enabled": true } }, - "status_version_to_task": {}, - "status_update": { - "Ready": [ - "Not Ready" - ], - "In Progress": [ - "_any_" - ] - }, "intent": { "items": { "-": "-", From 6259a27659b3a0b10c12ecaffa1fd735468f960a Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 00:02:05 +0100 Subject: [PATCH 24/56] fill more host schemas --- .../projects_schema/schema_project_maya.json | 29 +++---- .../projects_schema/schema_project_nuke.json | 8 +- .../schemas/schema_maya_capture.json | 2 +- .../schemas/schema_maya_workfiles.json | 6 -- .../schemas/schema_workfile_build.json | 82 +++++++++++++++++++ .../module_settings/schema_ftrack.json | 76 ++++++++++++----- 6 files changed, 154 insertions(+), 49 deletions(-) delete mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_workfiles.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_workfile_build.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json index 38c7ff81a1..0d8db078ea 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json @@ -5,24 +5,15 @@ "label": "Maya", "is_file": true, "children": [{ - "type": "dict", - "collapsable": true, - "key": "maya", - "label": "Maya", - "children": [ - - { - "type": "schema", - "name": "schema_maya_capture" - }, - { - "type": "schema", - "name": "schema_maya_plugins" - }, - { - "type": "schema", - "name": "schema_maya_workfiles" - } - ] + "type": "schema", + "name": "schema_maya_capture" + }, + { + "type": "schema", + "name": "schema_maya_plugins" + }, + { + "type": "schema", + "name": "schema_workfile_build" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json index 3151a26b45..f928ec6039 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json @@ -132,9 +132,9 @@ "label": "deadline_chunk_size" }] }] - }, { - "type": "raw-json", - "key": "workfile_build", - "label": "Workfile Build logic" + }, + { + "type": "schema", + "name": "schema_workfile_build" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_capture.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_capture.json index 836ad90404..67cd4db496 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_capture.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_capture.json @@ -2,7 +2,7 @@ "type": "dict", "collapsable": true, "key": "maya_capture", - "label": "Maya Capture settings", + "label": "Maya Playblast settings", "is_file": true, "children": [ { diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_workfiles.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_workfiles.json deleted file mode 100644 index bae4d32abd..0000000000 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_workfiles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "raw-json", - "key": "workfile_build", - "label": "Workfile Build logic", - "is_file": true -} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_workfile_build.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_workfile_build.json new file mode 100644 index 0000000000..d8d5b0b09b --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_workfile_build.json @@ -0,0 +1,82 @@ +{ + "type": "dict", + "collapsable": true, + "key": "workfile_build", + "label": "Workfile Build Settings", + "is_group": true, + "children": [{ + "type": "list", + "key": "profiles", + "label": "Profiles", + "object_type": { + "type": "dict", + "children": [{ + "key": "tasks", + "label": "Tasks", + "type": "list", + "object_type": "text" + }, { + "type": "splitter" + }, { + "key": "current_context", + "label": "Current Context", + "type": "list", + "highlight_content": true, + "object_type": { + "type": "dict", + "children": [{ + "key": "subset_name_filters", + "label": "Subset name Filters", + "type": "list", + "object_type": "text" + }, { + "key": "families", + "label": "Families", + "type": "list", + "object_type": "text" + },{ + "key": "repre_names", + "label": "Repre Names", + "type": "list", + "object_type": "text" + },{ + "key": "loaders", + "label": "Loaders", + "type": "list", + "object_type": "text" + }] + } + }, + { + "key": "linked_assets", + "label": "Linked Assets", + "type": "list", + "highlight_content": true, + "object_type": { + "type": "dict", + "children": [{ + "key": "subset_name_filters", + "label": "Subset name Filters", + "type": "list", + "object_type": "text" + }, { + "key": "families", + "label": "Families", + "type": "list", + "object_type": "text" + },{ + "key": "repre_names", + "label": "Repre Names", + "type": "list", + "object_type": "text" + },{ + "key": "loaders", + "label": "Loaders", + "type": "list", + "object_type": "text" + }] + } + }] + } + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json index 4ce23c75f7..9a0d36ad06 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json @@ -54,27 +54,32 @@ "type": "dict", "key": "events", "label": "Server Events", - "children": [ - { + "children": [{ "type": "dict", "key": "sync_to_avalon", "label": "Sync to avalon", "checkbox_key": "enabled", "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "list", - "key": "statuses_name_change", - "label": "Status name change", - "object_type": { - "type": "text", - "multiline": false + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "label", + "label": "Allow name and hierarchy change only if following statuses are on all children tasks" + }, + { + "type": "list", + "key": "statuses_name_change", + "label": "Statuses", + "object_type": { + "type": "text", + "multiline": false + } } - }] + ] }, - { + { "type": "dict", "key": "push_frame_values_to_task", "label": "Sync Hierarchical and Entity Attributes", @@ -83,9 +88,25 @@ "type": "boolean", "key": "enabled", "label": "Enabled" + }, { + "type": "list", + "key": "interest_entity_types", + "label": "Entity types of interest", + "object_type": { + "type": "text", + "multiline": false + } + }, { + "type": "list", + "key": "interest_attributess", + "label": "Attributes to sync", + "object_type": { + "type": "text", + "multiline": false + } }] }, - { + { "type": "dict", "key": "thumbnail_updates", "label": "Update Hierarchy thumbnails", @@ -94,12 +115,19 @@ "type": "boolean", "key": "enabled", "label": "Enabled" + },{ + "type": "label", + "label": "Push thumbnail from version, up through multiple hierarchy levels." + },{ + "type": "number", + "key": "levels", + "label": "Levels" }] }, - { + { "type": "dict", "key": "user_assignment", - "label": "Update Hierarchy thumbnails", + "label": "Run script on user assignments", "checkbox_key": "enabled", "children": [{ "type": "boolean", @@ -109,14 +137,24 @@ } ] }, + { + "type": "splitter" + }, { "key": "intent", "type": "dict-invisible", "children": [{ + "type": "label", + "label": "Intent" + }, + { "type": "dict-modifiable", "object_type": "text", - "key": "items", - "label": "Intent Key/Label" + "key": "items" + }, + { + "type": "label", + "label": " " }, { "key": "default", From 0cda87bd6351f16eea1c6e6e431f8b24738f1ec5 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 26 Nov 2020 13:34:09 +0100 Subject: [PATCH 25/56] feat(imageio): wip schema --- .../schema_anatomy_imageio.json | 274 +++++++++++++++++- 1 file changed, 273 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json index 3fdbd3f7f9..d1a286b883 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json @@ -1,8 +1,280 @@ { "type": "dict", "key": "imageio", - "label": "< ENTER LABEL HERE >", + "label": "Color Management (Image i/o)", "is_file": true, "children": [ + { + "key": "hosts", + "type": "dict", + "label": "Hosts", + "collapsed": false, + "collapsable": true, + "children": [ + { + "key": "hiero", + "type": "dict", + "label": "Hiero", + "children": [ + { + "key": "workfile", + "type": "dict", + "label": "Workfile", + "collapsable": false, + "children": [ + { + "type": "form", + "children": [ + { + "type": "enum", + "key": "ocioConfigName", + "label": "OpenColorIO Config", + "enum_items": [ + {"nuke-default": "nuke-default"}, + {"aces_1.0.3": "aces_1.0.3"}, + {"aces_1.1": "aces_1.1"}, + {"custom": "custom"} + ] + }, { + "type": "path-widget", + "key": "ocioconfigpath", + "label": "Custom OCIO path", + "multiplatform": true, + "multipath": true + }, { + "type": "text", + "key": "workingSpace", + "label": "Working Space" + }, { + "type": "text", + "key": "sixteenBitLut", + "label": "16 Bit Files" + }, { + "type": "text", + "key": "eightBitLut", + "label": "8 Bit Files" + }, { + "type": "text", + "key": "floatLut", + "label": "Floating Point Files" + }, { + "type": "text", + "key": "logLut", + "label": "Log Files" + }, { + "type": "text", + "key": "viewerLut", + "label": "Viewer" + }, { + "type": "text", + "key": "thumbnailLut", + "label": "Thumbnails" + } + ] + } + ] + }, { + "key": "regexInputs", + "type": "dict", + "label": "Colorspace on Inputs by regex detection", + "collapsable": false, + "children": [ + { + "type": "list", + "key": "inputs", + "label": "", + "object_type": { + "type": "dict", + "children": [ + { + "type": "text", + "key": "regex", + "label": "Regex" + }, { + "type": "text", + "key": "colorspace", + "label": "Colorspace" + } + ] + } + } + ] + } + ] + }, { + "key": "nuke", + "type": "dict", + "label": "Nuke", + "children": [ + { + "key": "workfile", + "type": "dict", + "label": "Workfile", + "collapsable": false, + "is_group": true, + "children": [ + { + "type": "form", + "children": [ + { + "type": "enum", + "key": "colorManagement", + "label": "color management", + "enum_items": [ + {"Nuke": "Nuke"}, + {"OCIO": "OCIO"} + ] + }, { + "type": "enum", + "key": "OCIO_config", + "label": "OpenColorIO Config", + "enum_items": [ + {"nuke-default": "nuke-default"}, + {"spi-vfx": "spi-vfx"}, + {"spi-anim": "spi-anim"}, + {"aces_1.0.3": "aces_0.1.1"}, + {"aces_1.0.3": "aces_0.7.1"}, + {"aces_1.0.3": "aces_1.0.1"}, + {"aces_1.0.3": "aces_1.0.3"}, + {"aces_1.1": "aces_1.1"}, + {"custom": "custom"} + ] + }, { + "type": "path-widget", + "key": "customOCIOConfigPath", + "label": "Custom OCIO config path", + "multiplatform": true, + "multipath": true + }, { + "type": "text", + "key": "workingSpaceLUT", + "label": "Working Space" + }, { + "type": "text", + "key": "monitorLut", + "label": "monitor" + }, { + "type": "text", + "key": "int8Lut", + "label": "8-bit files" + }, { + "type": "text", + "key": "int16Lut", + "label": "16-bit files" + }, { + "type": "text", + "key": "logLut", + "label": "log files" + }, { + "type": "text", + "key": "floatLut", + "label": "float files" + } + ] + } + ] + }, { + "key": "nodes", + "type": "dict", + "label": "Nodes", + "collapsable": false, + "is_group": true, + "children": [ + { + "key": "CreateWriteRender", + "label": "CreateWriteRender", + "type": "dict", + "children": [ + { + "type": "text", + "key": "nukeNodeClass", + "label": "Nuke Node Class" + }, { + "type": "splitter" + }, + { + "key": "knobs", + "label": "Knobs", + "type": "list", + "object_type": { + "type": "dict-item", + "children": [ + { + "type": "text", + "key": "name", + "label": "Name" + }, { + "type": "text", + "key": "value", + "label": "Value" + } + ] + } + } + ] + }, { + "type": "list", + "key": "custom-items", + "label": "Custom Nodes", + "object_type": { + "type": "dict", + "children": [ + { + "key": "nodeCreateFamily", + "label": "Creator Family", + "type": "text" + }, { + "type": "text", + "key": "nodeClass", + "label": "Node Class" + }, { + "type": "splitter" + }, + { + "type": "dict-modifiable", + "key": "nodeKnobs", + "label": "Node Knobs", + "highlight_content": true, + "object_type": { + "type": "text", + "key": "nodeKnobValue" + } + } + ] + } + } + ] + }, { + "key": "regexInputs", + "type": "dict", + "label": "Colorspace on Inputs by regex detection", + "collapsable": false, + "children": [ + { + "type": "list", + "key": "inputs", + "label": "", + "object_type": { + "type": "dict", + "children": [ + { + "type": "text", + "key": "regex", + "label": "Regex" + }, { + "type": "text", + "key": "colorspace", + "label": "Colorspace" + } + ] + } + } + ] + } + ] + } + + ] + } ] } From 637605327a365a38d703fe462959e5c2212b0c5e Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 13:43:02 +0100 Subject: [PATCH 26/56] tons of config converted to settings --- .../defaults/project_settings/celaction.json | 4 +- .../ftrack/ftrack_config.json | 16 - .../ftrack/plugins/server.json | 1 - .../project_settings/ftrack/plugins/user.json | 5 - .../defaults/project_settings/global.json | 114 ++++++ .../defaults/project_settings/hiero.json | 12 +- .../defaults/project_settings/maya.json | 93 ++++- .../project_settings/maya/capture.json | 108 ------ .../muster/templates_mapping.json | 19 - .../defaults/project_settings/nuke.json | 46 ++- .../plugins/celaction/publish.json | 11 - .../project_settings/plugins/config.json | 1 - .../plugins/ftrack/publish.json | 7 - .../plugins/global/create.json | 1 - .../plugins/global/filter.json | 1 - .../project_settings/plugins/global/load.json | 1 - .../plugins/global/publish.json | 97 ----- .../project_settings/plugins/maya/create.json | 1 - .../project_settings/plugins/maya/filter.json | 9 - .../project_settings/plugins/maya/load.json | 18 - .../plugins/maya/maya/maya_capture.json | 108 ------ .../plugins/maya/maya/publish.json | 21 -- .../plugins/maya/maya/workfile_build.json | 1 - .../plugins/maya/publish.json | 17 - .../plugins/maya/workfile_build.json | 131 ------- .../project_settings/plugins/nuke/create.json | 8 - .../project_settings/plugins/nuke/load.json | 1 - .../plugins/nuke/publish.json | 53 --- .../plugins/nuke/workfile_build.json | 23 -- .../plugins/nukestudio/filter.json | 10 - .../plugins/nukestudio/publish.json | 9 - .../plugins/resolve/create.json | 7 - .../plugins/standalonepublisher/publish.json | 10 - .../project_settings/plugins/test/create.json | 8 - .../plugins/test/publish.json | 10 - .../defaults/project_settings/resolve.json | 6 +- .../project_settings/standalonepublisher.json | 114 ++++++ .../standalonepublisher/families.json | 90 ----- .../projects_schema/0_project_gui_schema.json | 6 +- .../projects_schema/schema_plugins.json | 243 +------------ .../schema_project_global.json | 343 ++++++++++++++++++ .../projects_schema/schema_project_hiero.json | 5 + .../projects_schema/schema_project_maya.json | 11 +- .../projects_schema/schema_project_nuke.json | 5 + .../schema_project_standalonepublisher.json | 159 ++++++++ .../schemas/schema_maya_load.json | 142 ++++++++ .../schemas/schema_maya_plugins.json | 90 ----- .../schemas/schema_maya_publish.json | 188 ++++++++++ .../schemas/template_color.json | 28 ++ .../schemas/template_creatorfamily.json | 43 +++ 50 files changed, 1302 insertions(+), 1153 deletions(-) delete mode 100644 pype/settings/defaults/project_settings/ftrack/ftrack_config.json delete mode 100644 pype/settings/defaults/project_settings/ftrack/plugins/server.json delete mode 100644 pype/settings/defaults/project_settings/ftrack/plugins/user.json create mode 100644 pype/settings/defaults/project_settings/global.json delete mode 100644 pype/settings/defaults/project_settings/maya/capture.json delete mode 100644 pype/settings/defaults/project_settings/muster/templates_mapping.json delete mode 100644 pype/settings/defaults/project_settings/plugins/celaction/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/config.json delete mode 100644 pype/settings/defaults/project_settings/plugins/ftrack/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/global/create.json delete mode 100644 pype/settings/defaults/project_settings/plugins/global/filter.json delete mode 100644 pype/settings/defaults/project_settings/plugins/global/load.json delete mode 100644 pype/settings/defaults/project_settings/plugins/global/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/create.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/filter.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/load.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/maya/maya_capture.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/maya/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/maya/workfile_build.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/maya/workfile_build.json delete mode 100644 pype/settings/defaults/project_settings/plugins/nuke/create.json delete mode 100644 pype/settings/defaults/project_settings/plugins/nuke/load.json delete mode 100644 pype/settings/defaults/project_settings/plugins/nuke/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/nuke/workfile_build.json delete mode 100644 pype/settings/defaults/project_settings/plugins/nukestudio/filter.json delete mode 100644 pype/settings/defaults/project_settings/plugins/nukestudio/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/resolve/create.json delete mode 100644 pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json delete mode 100644 pype/settings/defaults/project_settings/plugins/test/create.json delete mode 100644 pype/settings/defaults/project_settings/plugins/test/publish.json create mode 100644 pype/settings/defaults/project_settings/standalonepublisher.json delete mode 100644 pype/settings/defaults/project_settings/standalonepublisher/families.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_load.json delete mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_plugins.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_publish.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_color.json create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json diff --git a/pype/settings/defaults/project_settings/celaction.json b/pype/settings/defaults/project_settings/celaction.json index 10165e92de..a4a321fb27 100644 --- a/pype/settings/defaults/project_settings/celaction.json +++ b/pype/settings/defaults/project_settings/celaction.json @@ -3,11 +3,11 @@ "ExtractCelactionDeadline": { "enabled": true, "deadline_department": "", - "deadline_priority": 0, + "deadline_priority": 50, "deadline_pool": "", "deadline_pool_secondary": "", "deadline_group": "", - "deadline_chunk_size": 0 + "deadline_chunk_size": 10 } } } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/ftrack/ftrack_config.json b/pype/settings/defaults/project_settings/ftrack/ftrack_config.json deleted file mode 100644 index 1ef3a9d69f..0000000000 --- a/pype/settings/defaults/project_settings/ftrack/ftrack_config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "sync_to_avalon": { - "statuses_name_change": ["not ready", "ready"] - }, - - "status_update": { - "_ignore_": ["in progress", "ommited", "on hold"], - "Ready": ["not ready"], - "In Progress" : ["_any_"] - }, - "status_version_to_task": { - "__description__": "Status `from` (key) must be lowered!", - "in progress": "in progress", - "approved": "approved" - } -} diff --git a/pype/settings/defaults/project_settings/ftrack/plugins/server.json b/pype/settings/defaults/project_settings/ftrack/plugins/server.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/pype/settings/defaults/project_settings/ftrack/plugins/server.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/pype/settings/defaults/project_settings/ftrack/plugins/user.json b/pype/settings/defaults/project_settings/ftrack/plugins/user.json deleted file mode 100644 index 1ba8e9b511..0000000000 --- a/pype/settings/defaults/project_settings/ftrack/plugins/user.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "TestAction": { - "ignore_me": true - } -} diff --git a/pype/settings/defaults/project_settings/global.json b/pype/settings/defaults/project_settings/global.json new file mode 100644 index 0000000000..b68f6d87bd --- /dev/null +++ b/pype/settings/defaults/project_settings/global.json @@ -0,0 +1,114 @@ +{ + "publish": { + "IntegrateMasterVersion": { + "enabled": true + }, + "ExtractJpegEXR": { + "enabled": true, + "ffmpeg_args": { + "input": [], + "output": [] + } + }, + "ExtractReview": { + "enabled": true, + "profiles": [ + { + "families": [], + "hosts": [], + "outputs": { + "h264": { + "ext": "mp4", + "tags": [ + "burnin", + "ftrackreview" + ], + "ffmpeg_args": { + "video_filters": [], + "audio_filters": [], + "input": [ + "gamma 2.2" + ], + "output": [ + "pix_fmt yuv420p", + "crf 18", + "intra" + ] + }, + "filter": { + "families": [ + "render", + "review", + "ftrack" + ] + } + } + } + } + ] + }, + "ExtractBurnin": { + "enabled": true, + "options": { + "font_size": 42, + "opacity": 1, + "bg_opacity": 0, + "x_offset": 5, + "y_offset": 5, + "bg_padding": 5 + }, + "fields": {}, + "profiles": [ + { + "burnins": { + "burnin": { + "TOP_LEFT": "{yy}-{mm}-{dd}", + "TOP_RIGHT": "{anatomy[version]}", + "TOP_CENTERED": "", + "BOTTOM_RIGHT": "{frame_start}-{current_frame}-{frame_end}", + "BOTTOM_CENTERED": "{asset}", + "BOTTOM_LEFT": "{username}" + } + } + } + ] + }, + "IntegrateAssetNew": { + "template_name_profiles": { + "template_name_profiles": { + "publish": { + "families": [], + "tasks": [] + }, + "render": { + "families": [ + "review", + "render", + "prerender" + ] + } + } + } + }, + "ProcessSubmittedJobOnFarm": { + "enabled": true, + "deadline_department": "", + "deadline_pool": "", + "deadline_group": "", + "deadline_chunk_size": "", + "deadline_priority": "", + "aov_filter": { + "maya": [ + ".+(?:\\.|_)([Bb]eauty)(?:\\.|_).*" + ], + "nuke": [], + "aftereffects": [ + ".*" + ], + "celaction": [ + ".*" + ] + } + } + } +} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/hiero.json b/pype/settings/defaults/project_settings/hiero.json index 8d31f2d56d..e7e6350c29 100644 --- a/pype/settings/defaults/project_settings/hiero.json +++ b/pype/settings/defaults/project_settings/hiero.json @@ -1,11 +1,21 @@ { "publish": { "CollectInstanceVersion": { - "enabled": true + "enabled": false }, "ExtractReviewCutUpVideo": { "enabled": true, "tags_addition": [] } + }, + "filter": { + "strict": { + "ValidateVersion": true, + "VersionUpWorkfile": true + }, + "benevolent": { + "ValidateVersion": false, + "VersionUpWorkfile": false + } } } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/maya.json b/pype/settings/defaults/project_settings/maya.json index d9ec13b3ed..f8315dc129 100644 --- a/pype/settings/defaults/project_settings/maya.json +++ b/pype/settings/defaults/project_settings/maya.json @@ -108,6 +108,13 @@ } }, "publish": { + "CollectMayaRender": { + "sync_workfile_version": true + }, + "ValidateCameraAttributes": { + "enabled": true, + "optional": true + }, "ValidateModelName": { "enabled": true, "material_file": { @@ -126,6 +133,89 @@ }, "ValidateMeshHasOverlappingUVs": { "enabled": true + }, + "ExtractCameraAlembic": { + "enabled": true, + "optional": true, + "bake_attributes": [] + }, + "MayaSubmitDeadline": { + "enabled": true, + "tile_assembler_plugin": "DraftTileAssembler" + } + }, + "load": { + "colors": { + "model": [ + 0.0, + 0.0, + 0.0 + ], + "rig": [ + 0.0, + 0.0, + 0.0 + ], + "pointcache": [ + 0.0, + 0.0, + 0.0 + ], + "animation": [ + 0.0, + 0.0, + 0.0 + ], + "ass": [ + 0.0, + 0.0, + 0.0 + ], + "camera": [ + 0.0, + 0.0, + 0.0 + ], + "fbx": [ + 0.0, + 0.0, + 0.0 + ], + "mayaAscii": [ + 0.0, + 0.0, + 0.0 + ], + "setdress": [ + 0.0, + 0.0, + 0.0 + ], + "layout": [ + 0.0, + 0.0, + 0.0 + ], + "vdbcache": [ + 0.0, + 0.0, + 0.0 + ], + "vrayproxy": [ + 0.0, + 0.0, + 0.0 + ], + "yeticache": [ + 0.0, + 0.0, + 0.0 + ], + "yetiRig": [ + 0.0, + 0.0, + 0.0 + ] } }, "workfile_build": { @@ -216,5 +306,6 @@ ] } ] - } + }, + "filter": {} } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/maya/capture.json b/pype/settings/defaults/project_settings/maya/capture.json deleted file mode 100644 index b6c4893034..0000000000 --- a/pype/settings/defaults/project_settings/maya/capture.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "Codec": { - "compression": "jpg", - "format": "image", - "quality": 95 - }, - "Display Options": { - "background": [ - 0.7137254901960784, - 0.7137254901960784, - 0.7137254901960784 - ], - "backgroundBottom": [ - 0.7137254901960784, - 0.7137254901960784, - 0.7137254901960784 - ], - "backgroundTop": [ - 0.7137254901960784, - 0.7137254901960784, - 0.7137254901960784 - ], - "override_display": true - }, - "Generic": { - "isolate_view": true, - "off_screen": true - }, - "IO": { - "name": "", - "open_finished": false, - "raw_frame_numbers": false, - "recent_playblasts": [], - "save_file": false - }, - "PanZoom": { - "pan_zoom": true - }, - "Renderer": { - "rendererName": "vp2Renderer" - }, - "Resolution": { - "height": 1080, - "mode": "Custom", - "percent": 1.0, - "width": 1920 - }, - "Time Range": { - "end_frame": 25, - "frame": "", - "start_frame": 0, - "time": "Time Slider" - }, - "Viewport Options": { - "cameras": false, - "clipGhosts": false, - "controlVertices": false, - "deformers": false, - "dimensions": false, - "displayLights": 0, - "dynamicConstraints": false, - "dynamics": false, - "fluids": false, - "follicles": false, - "gpuCacheDisplayFilter": false, - "greasePencils": false, - "grid": false, - "hairSystems": false, - "handles": false, - "high_quality": true, - "hud": false, - "hulls": false, - "ikHandles": false, - "imagePlane": false, - "joints": false, - "lights": false, - "locators": false, - "manipulators": false, - "motionTrails": false, - "nCloths": false, - "nParticles": false, - "nRigids": false, - "nurbsCurves": false, - "nurbsSurfaces": false, - "override_viewport_options": true, - "particleInstancers": false, - "pivots": false, - "planes": false, - "pluginShapes": false, - "polymeshes": true, - "shadows": false, - "strokes": false, - "subdivSurfaces": false, - "textures": false, - "twoSidedLighting": true - }, - "Camera Options": { - "displayGateMask": false, - "displayResolution": false, - "displayFilmGate": false, - "displayFieldChart": false, - "displaySafeAction": false, - "displaySafeTitle": false, - "displayFilmPivot": false, - "displayFilmOrigin": false, - "overscan": 1.0 - } -} diff --git a/pype/settings/defaults/project_settings/muster/templates_mapping.json b/pype/settings/defaults/project_settings/muster/templates_mapping.json deleted file mode 100644 index 4edab9077d..0000000000 --- a/pype/settings/defaults/project_settings/muster/templates_mapping.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "3delight": 41, - "arnold": 46, - "arnold_sf": 57, - "gelato": 30, - "harware": 3, - "krakatoa": 51, - "file_layers": 7, - "mentalray": 2, - "mentalray_sf": 6, - "redshift": 55, - "renderman": 29, - "software": 1, - "software_sf": 5, - "turtle": 10, - "vector": 4, - "vray": 37, - "ffmpeg": 48 -} diff --git a/pype/settings/defaults/project_settings/nuke.json b/pype/settings/defaults/project_settings/nuke.json index 98b4f55aa4..5b9ef5c21c 100644 --- a/pype/settings/defaults/project_settings/nuke.json +++ b/pype/settings/defaults/project_settings/nuke.json @@ -1,36 +1,63 @@ { "create": { "CreateWriteRender": { - "fpath_template": "" + "fpath_template": "{work}/renders/nuke/{subset}/{subset}.{frame}.{ext}" }, "CreateWritePrerender": { - "fpath_template": "" + "fpath_template": "{work}/prerenders/nuke/{subset}/{subset}.{frame}.{ext}" } }, "publish": { "ExtractThumbnail": { "enabled": true, - "nodes": {} + "nodes": { + "Reformat": [ + [ + "type", + "to format" + ], + [ + "format", + "HD_1080" + ], + [ + "filter", + "Lanczos6" + ], + [ + "black_outside", + true + ], + [ + "pbb", + false + ] + ] + } }, "ValidateNukeWriteKnobs": { "enabled": true, - "knobs": {} + "knobs": { + "render": { + "review": true + } + } }, "ExtractReviewDataLut": { "enabled": true }, "ExtractReviewDataMov": { "enabled": true, - "viewer_lut_raw": true + "viewer_lut_raw": false }, "ExtractSlateFrame": { - "viewer_lut_raw": true + "viewer_lut_raw": false }, "NukeSubmitDeadline": { - "deadline_priority": 0, + "deadline_priority": 50, "deadline_pool": "", "deadline_pool_secondary": "", - "deadline_chunk_size": 0 + "deadline_chunk_size": 1 } }, "workfile_build": { @@ -58,5 +85,6 @@ "linked_assets": [] } ] - } + }, + "filter": {} } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/celaction/publish.json b/pype/settings/defaults/project_settings/plugins/celaction/publish.json deleted file mode 100644 index 4cda2d5656..0000000000 --- a/pype/settings/defaults/project_settings/plugins/celaction/publish.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ExtractCelactionDeadline": { - "enabled": true, - "deadline_department": "", - "deadline_priority": 60, - "deadline_pool": "", - "deadline_pool_secondary": "", - "deadline_group": "", - "deadline_chunk_size": 10 - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/config.json b/pype/settings/defaults/project_settings/plugins/config.json deleted file mode 100644 index 9e26dfeeb6..0000000000 --- a/pype/settings/defaults/project_settings/plugins/config.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/ftrack/publish.json b/pype/settings/defaults/project_settings/plugins/ftrack/publish.json deleted file mode 100644 index 8570a400e8..0000000000 --- a/pype/settings/defaults/project_settings/plugins/ftrack/publish.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "IntegrateFtrackNote": { - "enabled": true, - "note_with_intent_template": "{intent}: {comment}", - "note_labels": [] - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/global/create.json b/pype/settings/defaults/project_settings/plugins/global/create.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/pype/settings/defaults/project_settings/plugins/global/create.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/pype/settings/defaults/project_settings/plugins/global/filter.json b/pype/settings/defaults/project_settings/plugins/global/filter.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/pype/settings/defaults/project_settings/plugins/global/filter.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/pype/settings/defaults/project_settings/plugins/global/load.json b/pype/settings/defaults/project_settings/plugins/global/load.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/pype/settings/defaults/project_settings/plugins/global/load.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/pype/settings/defaults/project_settings/plugins/global/publish.json b/pype/settings/defaults/project_settings/plugins/global/publish.json deleted file mode 100644 index 676985797f..0000000000 --- a/pype/settings/defaults/project_settings/plugins/global/publish.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "IntegrateMasterVersion": { - "enabled": false - }, - "ExtractJpegEXR": { - "enabled": true, - "ffmpeg_args": { - "input": [ - "-gamma 2.2" - ], - "output": [] - } - }, - "ExtractReview": { - "enabled": true, - "profiles": [ - { - "families": [], - "hosts": [], - "outputs": { - "h264": { - "ext": "mp4", - "tags": [ - "burnin", - "ftrackreview" - ], - "ffmpeg_args": { - "video_filters": [], - "audio_filters": [], - "input": [ - "-gamma 2.2" - ], - "output": [ - "-pix_fmt yuv420p", - "-crf 18", - "-intra" - ] - }, - "filter": { - "families": [ - "render", - "review", - "ftrack" - ] - } - } - } - } - ] - }, - "ExtractBurnin": { - "enabled": true, - "options": { - "font_size": 42, - "opacity": 1, - "bg_opacity": 0, - "x_offset": 5, - "y_offset": 5, - "bg_padding": 5 - }, - "profiles": [ - { - "burnins": { - "burnin": { - "TOP_LEFT": "{yy}-{mm}-{dd}", - "TOP_RIGHT": "{anatomy[version]}", - "TOP_CENTERED": "", - "BOTTOM_RIGHT": "{frame_start}-{current_frame}-{frame_end}", - "BOTTOM_CENTERED": "{asset}", - "BOTTOM_LEFT": "{username}" - } - } - } - ] - }, - "IntegrateAssetNew": { - "template_name_profiles": { - "publish": { - "families": [], - "tasks": [] - }, - "render": { - "families": [ - "review", - "render", - "prerender" - ] - } - } - }, - "ProcessSubmittedJobOnFarm": { - "enabled": true, - "deadline_department": "", - "deadline_pool": "", - "deadline_group": "" - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/maya/create.json b/pype/settings/defaults/project_settings/plugins/maya/create.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/create.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/pype/settings/defaults/project_settings/plugins/maya/filter.json b/pype/settings/defaults/project_settings/plugins/maya/filter.json deleted file mode 100644 index 83d6f05f31..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/filter.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Preset n1": { - "ValidateNoAnimation": false, - "ValidateShapeDefaultNames": false - }, - "Preset n2": { - "ValidateNoAnimation": false - } -} diff --git a/pype/settings/defaults/project_settings/plugins/maya/load.json b/pype/settings/defaults/project_settings/plugins/maya/load.json deleted file mode 100644 index 260fbb35ee..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/load.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "colors": { - "model": [0.821, 0.518, 0.117], - "rig": [0.144, 0.443, 0.463], - "pointcache": [0.368, 0.821, 0.117], - "animation": [0.368, 0.821, 0.117], - "ass": [1.0, 0.332, 0.312], - "camera": [0.447, 0.312, 1.0], - "fbx": [1.0, 0.931, 0.312], - "mayaAscii": [0.312, 1.0, 0.747], - "setdress": [0.312, 1.0, 0.747], - "layout": [0.312, 1.0, 0.747], - "vdbcache": [0.312, 1.0, 0.428], - "vrayproxy": [0.258, 0.95, 0.541], - "yeticache": [0.2, 0.8, 0.3], - "yetiRig": [0, 0.8, 0.5] - } -} diff --git a/pype/settings/defaults/project_settings/plugins/maya/maya/maya_capture.json b/pype/settings/defaults/project_settings/plugins/maya/maya/maya_capture.json deleted file mode 100644 index 02e6a9b95d..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/maya/maya_capture.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "Codec": { - "compression": "jpg", - "format": "image", - "quality": 95 - }, - "Display Options": { - "background": [ - 0.714, - 0.714, - 0.714 - ], - "backgroundBottom": [ - 0.714, - 0.714, - 0.714 - ], - "backgroundTop": [ - 0.714, - 0.714, - 0.714 - ], - "override_display": true - }, - "Generic": { - "isolate_view": true, - "off_screen": true - }, - "IO": { - "name": "", - "open_finished": false, - "raw_frame_numbers": false, - "recent_playblasts": [], - "save_file": false - }, - "PanZoom": { - "pan_zoom": true - }, - "Renderer": { - "rendererName": "vp2Renderer" - }, - "Resolution": { - "width": 1920, - "height": 1080, - "percent": 1.0, - "mode": "Custom" - }, - "Time Range": { - "start_frame": 0, - "end_frame": 25, - "frame": "", - "time": "Time Slider" - }, - "Viewport Options": { - "cameras": false, - "clipGhosts": false, - "controlVertices": false, - "deformers": false, - "dimensions": false, - "displayLights": 0, - "dynamicConstraints": false, - "dynamics": false, - "fluids": false, - "follicles": false, - "gpuCacheDisplayFilter": false, - "greasePencils": false, - "grid": false, - "hairSystems": false, - "handles": false, - "high_quality": true, - "hud": false, - "hulls": false, - "ikHandles": false, - "imagePlane": false, - "joints": false, - "lights": false, - "locators": false, - "manipulators": false, - "motionTrails": false, - "nCloths": false, - "nParticles": false, - "nRigids": false, - "nurbsCurves": false, - "nurbsSurfaces": false, - "override_viewport_options": true, - "particleInstancers": false, - "pivots": false, - "planes": false, - "pluginShapes": false, - "polymeshes": true, - "shadows": false, - "strokes": false, - "subdivSurfaces": false, - "textures": false, - "twoSidedLighting": true - }, - "Camera Options": { - "displayGateMask": false, - "displayResolution": false, - "displayFilmGate": false, - "displayFieldChart": false, - "displaySafeAction": false, - "displaySafeTitle": false, - "displayFilmPivot": false, - "displayFilmOrigin": false, - "overscan": 1.0 - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/maya/maya/publish.json b/pype/settings/defaults/project_settings/plugins/maya/maya/publish.json deleted file mode 100644 index 486f0917e2..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/maya/publish.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "ValidateModelName": { - "enabled": true, - "material_file": { - "windows": "", - "darwin": "", - "linux": "" - }, - "regex": "" - }, - "ValidateAssemblyName": { - "enabled": true - }, - "ValidateShaderName": { - "enabled": true, - "regex": "(?P.*)_(.*)_SHD" - }, - "ValidateMeshHasOverlappingUVs": { - "enabled": true - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/maya/maya/workfile_build.json b/pype/settings/defaults/project_settings/plugins/maya/maya/workfile_build.json deleted file mode 100644 index 9e26dfeeb6..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/maya/workfile_build.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/maya/publish.json b/pype/settings/defaults/project_settings/plugins/maya/publish.json deleted file mode 100644 index 2b3637ff80..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/publish.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "ValidateModelName": { - "enabled": false, - "material_file": "/path/to/shader_name_definition.txt", - "regex": "(.*)_(\\d)*_(?P.*)_(GEO)" - }, - "ValidateAssemblyName": { - "enabled": false - }, - "ValidateShaderName": { - "enabled": false, - "regex": "(?P.*)_(.*)_SHD" - }, - "ValidateMeshHasOverlappingUVs": { - "enabled": false - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json b/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json deleted file mode 100644 index 1aad307895..0000000000 --- a/pype/settings/defaults/project_settings/plugins/maya/workfile_build.json +++ /dev/null @@ -1,131 +0,0 @@ -[{ - "tasks": [ - "lighting" - ], - "current_context": [{ - "subset_name_filters": [ - ".+[Mm]ain" - ], - "families": [ - "model" - ], - "repre_names": [ - "abc", - "ma" - ], - "loaders": [ - "ReferenceLoader" - ] - }, - { - "families": [ - "animation", - "pointcache" - ], - "repre_names": [ - "abc" - ], - "loaders": [ - "ReferenceLoader" - ] - }, - { - "families": [ - "rendersetup" - ], - "repre_names": [ - "json" - ], - "loaders": [ - "RenderSetupLoader" - ] - }, - { - "families": [ - "camera" - ], - "repre_names": [ - "abc" - ], - "loaders": [ - "ReferenceLoader" - ] - } - ], - "linked_assets": [{ - "families": [ - "setdress" - ], - "repre_names": [ - "ma" - ], - "loaders": [ - "ReferenceLoader" - ] - }, - { - "families": [ - "ass" - ], - "repre_names": [ - "ass" - ], - "loaders": [ - "assLoader" - ] - } - ] - }, - { - "tasks": [ - "animation" - ], - "current_context": [{ - "families": [ - "camera" - ], - "repre_names": [ - "abc", - "ma" - ], - "loaders": [ - "ReferenceLoader" - ] - }, - { - "families": [ - "audio" - ], - "repre_names": [ - "wav" - ], - "loaders": [ - "RenderSetupLoader" - ] - } - ], - "linked_assets": [{ - "families": [ - "setdress" - ], - "repre_names": [ - "proxy" - ], - "loaders": [ - "ReferenceLoader" - ] - }, - { - "families": [ - "rig" - ], - "repre_names": [ - "ass" - ], - "loaders": [ - "rigLoader" - ] - } - ] - } -] diff --git a/pype/settings/defaults/project_settings/plugins/nuke/create.json b/pype/settings/defaults/project_settings/plugins/nuke/create.json deleted file mode 100644 index 79ab665696..0000000000 --- a/pype/settings/defaults/project_settings/plugins/nuke/create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "CreateWriteRender": { - "fpath_template": "{work}/renders/nuke/{subset}/{subset}.{frame}.{ext}" - }, - "CreateWritePrerender": { - "fpath_template": "{work}/prerenders/nuke/{subset}/{subset}.{frame}.{ext}" - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/nuke/load.json b/pype/settings/defaults/project_settings/plugins/nuke/load.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/pype/settings/defaults/project_settings/plugins/nuke/load.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/pype/settings/defaults/project_settings/plugins/nuke/publish.json b/pype/settings/defaults/project_settings/plugins/nuke/publish.json deleted file mode 100644 index 50b5b27fc5..0000000000 --- a/pype/settings/defaults/project_settings/plugins/nuke/publish.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "ExtractThumbnail": { - "enabled": true, - "nodes": { - "Reformat": [ - [ - "type", - "to format" - ], - [ - "format", - "HD_1080" - ], - [ - "filter", - "Lanczos6" - ], - [ - "black_outside", - true - ], - [ - "pbb", - false - ] - ] - } - }, - "ValidateNukeWriteKnobs": { - "enabled": true, - "knobs": { - "render": { - "review": true - } - } - }, - "ExtractReviewDataLut": { - "enabled": true - }, - "ExtractReviewDataMov": { - "enabled": true, - "viewer_lut_raw": false - }, - "ExtractSlateFrame": { - "viewer_lut_raw": false - }, - "NukeSubmitDeadline": { - "deadline_priority": 50, - "deadline_pool": "", - "deadline_pool_secondary": "", - "deadline_chunk_size": 1 - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/nuke/workfile_build.json b/pype/settings/defaults/project_settings/plugins/nuke/workfile_build.json deleted file mode 100644 index 4b48b46184..0000000000 --- a/pype/settings/defaults/project_settings/plugins/nuke/workfile_build.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "tasks": [ - "compositing" - ], - "current_context": [ - { - "families": [ - "render", - "plate" - ], - "repre_names": [ - "exr", - "dpx" - ], - "loaders": [ - "LoadSequence" - ] - } - ], - "linked_assets": [] - } -] \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/nukestudio/filter.json b/pype/settings/defaults/project_settings/plugins/nukestudio/filter.json deleted file mode 100644 index bd6a0dc1bd..0000000000 --- a/pype/settings/defaults/project_settings/plugins/nukestudio/filter.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "strict": { - "ValidateVersion": true, - "VersionUpWorkfile": true - }, - "benevolent": { - "ValidateVersion": false, - "VersionUpWorkfile": false - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/nukestudio/publish.json b/pype/settings/defaults/project_settings/plugins/nukestudio/publish.json deleted file mode 100644 index d99a878c35..0000000000 --- a/pype/settings/defaults/project_settings/plugins/nukestudio/publish.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "CollectInstanceVersion": { - "enabled": false - }, - "ExtractReviewCutUpVideo": { - "enabled": true, - "tags_addition": [] - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/resolve/create.json b/pype/settings/defaults/project_settings/plugins/resolve/create.json deleted file mode 100644 index 8ff5b15714..0000000000 --- a/pype/settings/defaults/project_settings/plugins/resolve/create.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "CreateShotClip": { - "clipName": "{track}{sequence}{shot}", - "folder": "takes", - "steps": 20 - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json b/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json deleted file mode 100644 index f7699ef9f7..0000000000 --- a/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ExtractThumbnailSP": { - "ffmpeg_args": { - "input": [ - "-gamma 2.2" - ], - "output": [] - } - } -} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/plugins/test/create.json b/pype/settings/defaults/project_settings/plugins/test/create.json deleted file mode 100644 index fa0b2fc05f..0000000000 --- a/pype/settings/defaults/project_settings/plugins/test/create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "MyTestCreator": { - "my_test_property": "B", - "active": false, - "new_property": "new", - "family": "new_family" - } -} diff --git a/pype/settings/defaults/project_settings/plugins/test/publish.json b/pype/settings/defaults/project_settings/plugins/test/publish.json deleted file mode 100644 index 3180dd5d8a..0000000000 --- a/pype/settings/defaults/project_settings/plugins/test/publish.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "MyTestPlugin": { - "label": "loaded from preset", - "optional": true, - "families": ["changed", "by", "preset"] - }, - "MyTestRemovedPlugin": { - "enabled": false - } -} diff --git a/pype/settings/defaults/project_settings/resolve.json b/pype/settings/defaults/project_settings/resolve.json index 646eb3a70b..cb7064ee76 100644 --- a/pype/settings/defaults/project_settings/resolve.json +++ b/pype/settings/defaults/project_settings/resolve.json @@ -1,9 +1,9 @@ { "create": { "CreateShotClip": { - "clipName": "", - "folder": "", - "steps": 0 + "clipName": "{track}{sequence}{shot}", + "folder": "takes", + "steps": 20 } } } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/standalonepublisher.json b/pype/settings/defaults/project_settings/standalonepublisher.json new file mode 100644 index 0000000000..21ea3db586 --- /dev/null +++ b/pype/settings/defaults/project_settings/standalonepublisher.json @@ -0,0 +1,114 @@ +{ + "publish": { + "ExtractThumbnailSP": { + "ffmpeg_args": { + "input": [ + "gamma 2.2" + ], + "output": [] + } + } + }, + "create": { + "create_workfile": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_model": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_look": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_rig": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_pointcache": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_plate": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_camera": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_mayaAscii": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_editorial": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_image": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "create_matchmove": { + "name": "", + "label": "", + "family": "", + "icon": "", + "defaults": [], + "help": "" + }, + "other_families": { + "create_background": { + "name": "background", + "label": "Background", + "family": "background", + "icon": "image", + "defaults": [ + "Main" + ], + "help": "Layered background from PSD." + } + } + } +} \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/standalonepublisher/families.json b/pype/settings/defaults/project_settings/standalonepublisher/families.json deleted file mode 100644 index d05941cc26..0000000000 --- a/pype/settings/defaults/project_settings/standalonepublisher/families.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "create_look": { - "name": "look", - "label": "Look", - "family": "look", - "icon": "paint-brush", - "defaults": ["Main"], - "help": "Shader connections defining shape look" - }, - "create_model": { - "name": "model", - "label": "Model", - "family": "model", - "icon": "cube", - "defaults": ["Main", "Proxy", "Sculpt"], - "help": "Polygonal static geometry" - }, - "create_workfile": { - "name": "workfile", - "label": "Workfile", - "family": "workfile", - "icon": "cube", - "defaults": ["Main"], - "help": "Working scene backup" - }, - "create_camera": { - "name": "camera", - "label": "Camera", - "family": "camera", - "icon": "video-camera", - "defaults": ["Main"], - "help": "Single baked camera" - }, - "create_pointcache": { - "name": "pointcache", - "label": "Pointcache", - "family": "pointcache", - "icon": "gears", - "defaults": ["Main"], - "help": "Alembic pointcache for animated data" - }, - "create_rig": { - "name": "rig", - "label": "Rig", - "family": "rig", - "icon": "wheelchair", - "defaults": ["Main"], - "help": "Artist-friendly rig with controls" - }, - "create_layout": { - "name": "layout", - "label": "Layout", - "family": "layout", - "icon": "cubes", - "defaults": ["Main"], - "help": "Simple scene for animators with camera" - }, - "create_plate": { - "name": "plate", - "label": "Plate", - "family": "plate", - "icon": "camera", - "defaults": ["Main", "BG", "Reference"], - "help": "Plates for compositors" - }, - "create_matchmove": { - "name": "matchmove", - "label": "Matchmove script", - "family": "matchmove", - "icon": "empire", - "defaults": ["Camera", "Object", "Mocap"], - "help": "Script exported from matchmoving application" - }, - "create_images": { - "name": "image", - "label": "Image file", - "family": "image", - "icon": "image", - "defaults": ["ConceptArt", "Reference", "Texture", "MattePaint"], - "help": "Holder for all kinds of image data" - }, - "create_editorial": { - "name": "editorial", - "label": "Editorial", - "family": "editorial", - "icon": "image", - "defaults": ["Main"], - "help": "Editorial files to generate shots." - } -} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json index 7409b45533..0c14ff6f58 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/0_project_gui_schema.json @@ -21,6 +21,10 @@ "type": "dict-invisible", "key": "project_settings", "children": [ + { + "type": "schema", + "name": "schema_project_global" + }, { "type": "schema", "name": "schema_project_ftrack" @@ -47,7 +51,7 @@ }, { "type": "schema", - "name": "schema_plugins" + "name": "schema_project_standalonepublisher" } ] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_plugins.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_plugins.json index 0ccdd79bc7..f04750ff83 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_plugins.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_plugins.json @@ -3,248 +3,7 @@ "collapsable": true, "key": "plugins", "label": "Plugins", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "global", - "label": "Global", - "children": [{ - "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, - "children": [{ - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "IntegrateMasterVersion", - "label": "IntegrateMasterVersion", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] - }, { - "type": "dict", - "collapsable": true, - "checkbox_key": "enabled", - "key": "ExtractJpegEXR", - "label": "ExtractJpegEXR", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "dict-invisible", - "key": "ffmpeg_args", - "children": [{ - "type": "list", - "object_type": "text", - "key": "input", - "label": "FFmpeg input arguments" - }, { - "type": "list", - "object_type": "text", - "key": "output", - "label": "FFmpeg output arguments" - }] - }] - }, { - "type": "dict", - "collapsable": true, - "key": "ExtractReview", - "label": "ExtractReview", - "checkbox_key": "enabled", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "list", - "key": "profiles", - "label": "Profiles", - "object_type": { - "type": "dict", - "children": [{ - "key": "families", - "label": "Families", - "type": "list", - "object_type": "text" - }, { - "key": "hosts", - "label": "Hosts", - "type": "list", - "object_type": "text" - }, { - "type": "splitter" - }, { - "key": "outputs", - "label": "Output Definitions", - "type": "dict-modifiable", - "highlight_content": true, - "object_type": { - "type": "dict", - "children": [{ - "key": "ext", - "label": "Output extension", - "type": "text" - }, { - "key": "tags", - "label": "Tags", - "type": "enum", - "multiselection": true, - "enum_items": [{ - "burnin": "Add burnins" - }, - { - "ftrackreview": "Add to Ftrack" - }, - { - "delete": "Delete output" - }, - { - "slate-frame": "Add slate frame" - }, - { - "no-hnadles": "Skip handle frames" - } - ] - }, { - "key": "ffmpeg_args", - "label": "FFmpeg arguments", - "type": "dict", - "highlight_content": true, - "children": [{ - "key": "video_filters", - "label": "Video filters", - "type": "list", - "object_type": "text" - }, { - "type": "splitter" - }, { - "key": "audio_filters", - "label": "Audio filters", - "type": "list", - "object_type": "text" - }, { - "type": "splitter" - }, { - "key": "input", - "label": "Input arguments", - "type": "list", - "object_type": "text" - }, { - "type": "splitter" - }, { - "key": "output", - "label": "Output arguments", - "type": "list", - "object_type": "text" - }] - }, { - "key": "filter", - "label": "Additional output filtering", - "type": "dict", - "highlight_content": true, - "children": [{ - "key": "families", - "label": "Families", - "type": "list", - "object_type": "text" - }] - }] - } - }] - } - }] - }, { - "type": "dict", - "collapsable": true, - "key": "ExtractBurnin", - "label": "ExtractBurnin", - "checkbox_key": "enabled", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "dict", - "collapsable": true, - "key": "options", - "label": "Burnin formating options", - "children": [{ - "type": "number", - "key": "font_size", - "label": "Font size" - }, { - "type": "number", - "key": "opacity", - "label": "Font opacity" - }, { - "type": "number", - "key": "bg_opacity", - "label": "Background opacity" - }, { - "type": "number", - "key": "x_offset", - "label": "X Offset" - }, { - "type": "number", - "key": "y_offset", - "label": "Y Offset" - }, { - "type": "number", - "key": "bg_padding", - "label": "Padding aroung text" - }] - }, { - "type": "raw-json", - "key": "profiles", - "label": "Burnin profiles" - }] - }, { - "type": "dict", - "collapsable": true, - "key": "IntegrateAssetNew", - "label": "IntegrateAssetNew", - "is_group": true, - "children": [{ - "type": "raw-json", - "key": "template_name_profiles", - "label": "template_name_profiles" - }] - }, { - "type": "dict", - "collapsable": true, - "key": "ProcessSubmittedJobOnFarm", - "label": "ProcessSubmittedJobOnFarm", - "checkbox_key": "enabled", - "is_group": true, - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "text", - "key": "deadline_department", - "label": "Deadline department" - }, { - "type": "text", - "key": "deadline_pool", - "label": "Deadline Pool" - }, { - "type": "text", - "key": "deadline_group", - "label": "Deadline Group" - }] - }] - }] - }, + "children": [ { "type": "dict", "collapsable": true, diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json new file mode 100644 index 0000000000..ef8fc58257 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json @@ -0,0 +1,343 @@ +{ + "type": "dict", + "collapsable": true, + "key": "global", + "label": "Global", + "is_file": true, + "children": [ + { + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "is_file": true, + "children": [ + { + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "IntegrateMasterVersion", + "label": "IntegrateMasterVersion", + "is_group": true, + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "dict", + "collapsable": true, + "checkbox_key": "enabled", + "key": "ExtractJpegEXR", + "label": "ExtractJpegEXR", + "is_group": true, + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "dict-invisible", + "key": "ffmpeg_args", + "children": [ + { + "type": "list", + "object_type": "text", + "key": "input", + "label": "FFmpeg input arguments" + }, + { + "type": "list", + "object_type": "text", + "key": "output", + "label": "FFmpeg output arguments" + }] + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ExtractReview", + "label": "ExtractReview", + "checkbox_key": "enabled", + "is_group": true, + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "list", + "key": "profiles", + "label": "Profiles", + "object_type": + { + "type": "dict", + "children": [ + { + "key": "families", + "label": "Families", + "type": "list", + "object_type": "text" + }, + { + "key": "hosts", + "label": "Hosts", + "type": "list", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "key": "outputs", + "label": "Output Definitions", + "type": "dict-modifiable", + "highlight_content": true, + "object_type": + { + "type": "dict", + "children": [ + { + "key": "ext", + "label": "Output extension", + "type": "text" + }, + { + "key": "tags", + "label": "Tags", + "type": "enum", + "multiselection": true, + "enum_items": [ + { + "burnin": "Add burnins" + }, + { + "ftrackreview": "Add to Ftrack" + }, + { + "delete": "Delete output" + }, + { + "slate-frame": "Add slate frame" + }, + { + "no-hnadles": "Skip handle frames" + }] + }, + { + "key": "ffmpeg_args", + "label": "FFmpeg arguments", + "type": "dict", + "highlight_content": true, + "children": [ + { + "key": "video_filters", + "label": "Video filters", + "type": "list", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "key": "audio_filters", + "label": "Audio filters", + "type": "list", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "key": "input", + "label": "Input arguments", + "type": "list", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "key": "output", + "label": "Output arguments", + "type": "list", + "object_type": "text" + }] + }, + { + "key": "filter", + "label": "Additional output filtering", + "type": "dict", + "highlight_content": true, + "children": [ + { + "key": "families", + "label": "Families", + "type": "list", + "object_type": "text" + }] + }] + } + }] + } + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ExtractBurnin", + "label": "ExtractBurnin", + "checkbox_key": "enabled", + "is_group": true, + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "dict", + "collapsable": true, + "key": "options", + "label": "Burnin formating options", + "children": [ + { + "type": "number", + "key": "font_size", + "label": "Font size" + }, + { + "type": "number", + "key": "opacity", + "label": "Font opacity" + }, + { + "type": "number", + "key": "bg_opacity", + "label": "Background opacity" + }, + { + "type": "number", + "key": "x_offset", + "label": "X Offset" + }, + { + "type": "number", + "key": "y_offset", + "label": "Y Offset" + }, + { + "type": "number", + "key": "bg_padding", + "label": "Padding aroung text" + }] + }, + { + "type": "raw-json", + "key": "fields", + "label": "Burnin Fields" + }, + { + "type": "raw-json", + "key": "profiles", + "label": "Burnin profiles" + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "IntegrateAssetNew", + "label": "IntegrateAssetNew", + "is_group": true, + "children": [ + { + "type": "raw-json", + "key": "template_name_profiles", + "label": "template_name_profiles" + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ProcessSubmittedJobOnFarm", + "label": "ProcessSubmittedJobOnFarm", + "checkbox_key": "enabled", + "is_group": true, + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "text", + "key": "deadline_department", + "label": "Deadline department" + }, + { + "type": "text", + "key": "deadline_pool", + "label": "Deadline Pool" + }, + { + "type": "text", + "key": "deadline_group", + "label": "Deadline Group" + }, + { + "type": "text", + "key": "deadline_chunk_size", + "label": "Deadline Chunk Size" + }, + { + "type": "text", + "key": "deadline_priority", + "label": "Deadline Priotity" + }, + { + "type": "dict", + "key": "aov_filter", + "label": "Reviewable subsets filter", + "children": [ + { + "type": "list", + "key": "maya", + "label": "Maya", + "object_type":{ + "type":"text" + } + }, + { + "type": "list", + "key": "nuke", + "label": "Nuke", + "object_type":{ + "type":"text" + } + }, + { + "type": "list", + "key": "aftereffects", + "label": "After Effects", + "object_type":{ + "type":"text" + } + }, + { + "type": "list", + "key": "celaction", + "label": "Celaction", + "object_type":{ + "type":"text" + } + } + ] + }] + }] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json index d80a6272c5..0f8475655c 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json @@ -39,5 +39,10 @@ "label": "Tags addition" }] }] + }, + { + "type": "raw-json", + "key": "filter", + "label": "Publish GUI Filters" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json index 0d8db078ea..d863941d1d 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json @@ -10,10 +10,19 @@ }, { "type": "schema", - "name": "schema_maya_plugins" + "name": "schema_maya_publish" + }, + { + "type": "schema", + "name": "schema_maya_load" }, { "type": "schema", "name": "schema_workfile_build" + }, + { + "type": "raw-json", + "key": "filter", + "label": "Publish GUI Filters" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json index f928ec6039..48d78cc422 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json @@ -136,5 +136,10 @@ { "type": "schema", "name": "schema_workfile_build" + }, + { + "type": "raw-json", + "key": "filter", + "label": "Publish GUI Filters" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json new file mode 100644 index 0000000000..5e07d82de6 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json @@ -0,0 +1,159 @@ +{ + "type": "dict", + "collapsable": true, + "key": "standalonepublisher", + "label": "Standalone Publisher", + "is_file": true, + "children": [ + { + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "is_file": true, + "children": [ + { + "type": "dict", + "collapsable": true, + "key": "ExtractThumbnailSP", + "label": "ExtractThumbnailSP", + "is_group": true, + "children": [ + { + "type": "dict", + "collapsable": false, + "key": "ffmpeg_args", + "label": "ffmpeg_args", + "children": [ + { + "type": "list", + "object_type": "text", + "key": "input", + "label": "input" + }, + { + "type": "list", + "object_type": "text", + "key": "output", + "label": "output" + }] + }] + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "create", + "label": "Creator plugins", + "is_file": true, + "children": [ + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Workfile", + "name": "workfile" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Model", + "name": "model" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Look", + "name": "look" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Rig", + "name": "rig" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Pointcache", + "name": "pointcache" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Plate", + "name": "plate" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Camera", + "name": "camera" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Maya Scene", + "name": "mayaAscii" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Editorial", + "name": "editorial" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Image", + "name": "image" + }] + }, + { + "type": "schema_template", + "name": "template_creatorfamily", + "template_data": [ + { + "label": "Matchmove", + "name": "matchmove" + }] + }, + { + "type": "dict-modifiable", + "key": "other_families", + "label": "Other Families", + "object_type": { + "type": "raw-json" + } + }] + }] + +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_load.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_load.json new file mode 100644 index 0000000000..0b96e63124 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_load.json @@ -0,0 +1,142 @@ +{ + "type": "dict", + "collapsable": true, + "key": "load", + "label": "Loader plugins", + "is_file": true, + "children": [ + { + "type": "dict", + "collapsable": true, + "key": "colors", + "label": "Loaded Subsets Outliner Colors", + "children": [ + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Model", + "name": "model" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Rig", + "name": "rig" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Pointcache", + "name": "pointcache" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Animation", + "name": "animation" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Arnold Standin", + "name": "ass" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Camera", + "name": "camera" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "FBX", + "name": "fbx" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Maya Scene", + "name": "mayaAscii" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Set Dress", + "name": "setdress" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Layout", + "name": "layout" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "VDB Cache", + "name": "vdbcache" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Vray Proxy", + "name": "vrayproxy" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Yeti Cache", + "name": "yeticache" + }] + }, + { + "type": "schema_template", + "name": "template_color", + "template_data": [ + { + "label": "Yeti Rig", + "name": "yetiRig" + }] + } + ] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_plugins.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_plugins.json deleted file mode 100644 index 7ba9608610..0000000000 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_plugins.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "type": "dict", - "collapsable": true, - "key": "publish", - "label": "Publish plugins", - "is_file": true, - "children": [ - { - "type": "dict", - "collapsable": true, - "key": "ValidateModelName", - "label": "Validate Model Name", - "checkbox_key": "enabled", - "is_group": true, - "children": [ - { - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, - { - "type": "label", - "label": "Path to material file defining list of material names to check. This is material name per line simple text file.
It will be checked against named group shader in your Validation regex.

For example:
^.*(?P=<shader>.+)_GEO

" - }, - { - "type": "path-widget", - "key": "material_file", - "label": "Material File", - "multiplatform": true, - "multipath": false - }, - { - "type": "text", - "key": "regex", - "label": "Validation regex" - } - ] - }, { - "type": "dict", - "collapsable": true, - "key": "ValidateAssemblyName", - "label": "Validate Assembly Name", - "checkbox_key": "enabled", - "is_group": true, - "children": [ - { - "type": "boolean", - "key": "enabled", - "label": "Enabled" - } - ] - }, { - "type": "dict", - "collapsable": true, - "key": "ValidateShaderName", - "label": "ValidateShaderName", - "checkbox_key": "enabled", - "is_group": true, - "children": [ - { - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, { - "type": "label", - "label": "Shader name regex can use named capture group asset to validate against current asset name.

Example:
^.*(?P=<asset>.+)_SHD

" - - }, { - "type": "text", - "key": "regex", - "label": "Validation regex" - } - ] - }, { - "type": "dict", - "collapsable": true, - "key": "ValidateMeshHasOverlappingUVs", - "label": "ValidateMeshHasOverlappingUVs", - "checkbox_key": "enabled", - "is_group": true, - "children": [ - { - "type": "boolean", - "key": "enabled", - "label": "Enabled" - } - ] - } - ] - } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_publish.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_publish.json new file mode 100644 index 0000000000..44972cad21 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_maya_publish.json @@ -0,0 +1,188 @@ +{ + "type": "dict", + "collapsable": true, + "key": "publish", + "label": "Publish plugins", + "is_file": true, + "children": [ + { + "type": "label", + "label": "Collectors" + }, + { + "type": "dict", + "collapsable": true, + "key": "CollectMayaRender", + "label": "Collect Render Layers", + "children": [ + { + "type": "boolean", + "key": "sync_workfile_version", + "label": "Sync render version with workfile" + }] + }, + { + "type": "splitter" + }, + { + "type": "label", + "label": "Collectors" + }, + { + "type": "dict", + "collapsable": true, + "key": "ValidateCameraAttributes", + "label": "Validate Camera Attributes", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "boolean", + "key": "optional", + "label": "Optional" + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ValidateModelName", + "label": "Validate Model Name", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "label", + "label": "Path to material file defining list of material names to check. This is material name per line simple text file.
It will be checked against named group shader in your Validation regex.

For example:
^.*(?P=<shader>.+)_GEO

" + }, + { + "type": "path-widget", + "key": "material_file", + "label": "Material File", + "multiplatform": true, + "multipath": false + }, + { + "type": "text", + "key": "regex", + "label": "Validation regex" + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ValidateAssemblyName", + "label": "Validate Assembly Name", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ValidateShaderName", + "label": "ValidateShaderName", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "label", + "label": "Shader name regex can use named capture group asset to validate against current asset name.

Example:
^.*(?P=<asset>.+)_SHD

" + + }, + { + "type": "text", + "key": "regex", + "label": "Validation regex" + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "ValidateMeshHasOverlappingUVs", + "label": "ValidateMeshHasOverlappingUVs", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }] + }, + { + "type": "splitter" + }, + { + "type": "label", + "label": "Extractors" + }, + { + "type": "dict", + "collapsable": true, + "key": "ExtractCameraAlembic", + "label": "Extract camera to Alembic", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "label", + "label": "List of attributes that will be added to the baked alembic camera. Needs to be written in python list syntax.

For example:
[\"attributeName\", \"anotherAttribute\"]

" + }, + { + "type": "boolean", + "key": "optional", + "label": "Optional" + }, + { + "type": "raw-json", + "key": "bake_attributes", + "label": "Bake Attributes" + + }] + }, + { + "type": "dict", + "collapsable": true, + "key": "MayaSubmitDeadline", + "label": "Submit maya job to deadline", + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "enum", + "key": "tile_assembler_plugin", + "label": "Tile Assembler Plugin", + "multiselection": false, + "enum_items": [ + { + "DraftTileAssembler": "Draft Tile Assembler" + }, + { + "oiio": "Open Image IO" + }] + }] + }] +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_color.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_color.json new file mode 100644 index 0000000000..ac4313490b --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_color.json @@ -0,0 +1,28 @@ +[ + { + "type": "list-strict", + "key": "{name}", + "label": "{label}:", + "object_types": [ + { + "label": "Red", + "type": "number", + "minimum": 0, + "maximum": 1, + "decimal": 3 + }, { + "label": "Green", + "type": "number", + "minimum": 0, + "maximum": 1, + "decimal": 3 + }, { + "label": "Blue", + "type": "number", + "minimum": 0, + "maximum": 1, + "decimal": 3 + } + ] + } +] diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json new file mode 100644 index 0000000000..eaeccf2c87 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json @@ -0,0 +1,43 @@ +[ + { + "type": "dict", + "collapsable": true, + "key": "create_{name}", + "label": "{label}", + "children": [ + { + "type": "text", + "key": "name", + "label": "Name" + }, + { + "type": "text", + "key": "label", + "label": "Label" + }, + { + "type": "text", + "key": "family", + "label": "Family" + }, + { + "type": "text", + "key": "icon", + "label": "Icon" + }, + { + "type": "list", + "key": "defaults", + "label": "Defaults", + "object_type": { + "type": "text" + } + }, + { + "type": "text", + "key": "help", + "label": "Help" + } + ] + } +] From b304eef0f58cf727ff28bee678195a59564ec501 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 26 Nov 2020 15:07:27 +0100 Subject: [PATCH 27/56] feat(imageio): final schema and default setting for hiero and nuke --- .../defaults/project_anatomy/imageio.json | 161 +++-- .../schema_anatomy_imageio.json | 568 +++++++++--------- 2 files changed, 418 insertions(+), 311 deletions(-) diff --git a/pype/settings/defaults/project_anatomy/imageio.json b/pype/settings/defaults/project_anatomy/imageio.json index 8b934f810d..1adab0fc2b 100644 --- a/pype/settings/defaults/project_anatomy/imageio.json +++ b/pype/settings/defaults/project_anatomy/imageio.json @@ -1,42 +1,131 @@ { - "nuke": { - "root": { - "colorManagement": "Nuke", - "OCIO_config": "nuke-default", - "defaultViewerLUT": "Nuke Root LUTs", - "monitorLut": "sRGB", - "int8Lut": "sRGB", - "int16Lut": "sRGB", - "logLut": "Cineon", - "floatLut": "linear" - }, - "viewer": { - "viewerProcess": "sRGB" - }, - "write": { - "render": { - "colorspace": "linear" + "hosts": { + "hiero": { + "workfile": { + "ocioConfigName": "nuke-default", + "ocioconfigpath": { + "windows": [], + "darwin": [], + "linux": [] + }, + "workingSpace": "linear", + "sixteenBitLut": "sRGB", + "eightBitLut": "sRGB", + "floatLut": "linear", + "logLut": "Cineon", + "viewerLut": "sRGB", + "thumbnailLut": "sRGB" }, - "prerender": { - "colorspace": "linear" - }, - "still": { - "colorspace": "sRGB" + "regexInputs": { + "inputs": [ + { + "regex": "[^-a-zA-Z0-9](plateRef).*(?=mp4)", + "colorspace": "sRGB" + } + ] } }, - "read": { - "[^-a-zA-Z0-9]beauty[^-a-zA-Z0-9]": "linear", - "[^-a-zA-Z0-9](P|N|Z|crypto)[^-a-zA-Z0-9]": "linear", - "[^-a-zA-Z0-9](plateRef)[^-a-zA-Z0-9]": "sRGB" + "nuke": { + "workfile": { + "colorManagement": "Nuke", + "OCIO_config": "nuke-default", + "customOCIOConfigPath": { + "windows": [], + "darwin": [], + "linux": [] + }, + "workingSpaceLUT": "linear", + "monitorLut": "sRGB", + "int8Lut": "sRGB", + "int16Lut": "sRGB", + "logLut": "Cineon", + "floatLut": "linear" + }, + "nodes": { + "requiredNodes": [ + { + "plugins": [ + "CreateWriteRender" + ], + "nukeNodeClass": "Write", + "knobs": [ + { + "name": "file_type", + "value": "exr" + }, + { + "name": "datatype", + "value": "16 bit half" + }, + { + "name": "compression", + "value": "Zip (1 scanline)" + }, + { + "name": "autocrop", + "value": "True" + }, + { + "name": "tile_color", + "value": "0xff0000ff" + }, + { + "name": "channels", + "value": "rgb" + }, + { + "name": "colorspace", + "value": "linear" + } + ] + }, + { + "plugins": [ + "CreateWritePrerender" + ], + "nukeNodeClass": "Write", + "knobs": [ + { + "name": "file_type", + "value": "exr" + }, + { + "name": "datatype", + "value": "16 bit half" + }, + { + "name": "compression", + "value": "Zip (1 scanline)" + }, + { + "name": "autocrop", + "value": "False" + }, + { + "name": "tile_color", + "value": "0xff0000ff" + }, + { + "name": "channels", + "value": "rgb" + }, + { + "name": "colorspace", + "value": "linear" + } + ] + } + ], + "customNodes": [] + }, + "regexInputs": { + "inputs": [ + { + "regex": "[^-a-zA-Z0-9]beauty[^-a-zA-Z0-9]", + "colorspace": "linear" + } + ] + } } - }, - "maya": { - - }, - "houdini": { - - }, - "resolve": { - } -} +} \ No newline at end of file diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json index d1a286b883..b7de6c5091 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json @@ -1,280 +1,298 @@ { + "type": "dict", + "key": "imageio", + "label": "Color Management (Image i/o)", + "is_file": true, + "children": [{ + "key": "hosts", "type": "dict", - "key": "imageio", - "label": "Color Management (Image i/o)", - "is_file": true, - "children": [ - { - "key": "hosts", - "type": "dict", - "label": "Hosts", - "collapsed": false, - "collapsable": true, - "children": [ + "label": "Hosts", + "collapsed": false, + "collapsable": true, + "children": [{ + "key": "hiero", + "type": "dict", + "label": "Hiero", + "children": [{ + "key": "workfile", + "type": "dict", + "label": "Workfile", + "collapsable": false, + "children": [{ + "type": "form", + "children": [{ + "type": "enum", + "key": "ocioConfigName", + "label": "OpenColorIO Config", + "enum_items": [{ + "nuke-default": "nuke-default" + }, { - "key": "hiero", - "type": "dict", - "label": "Hiero", - "children": [ - { - "key": "workfile", - "type": "dict", - "label": "Workfile", - "collapsable": false, - "children": [ - { - "type": "form", - "children": [ - { - "type": "enum", - "key": "ocioConfigName", - "label": "OpenColorIO Config", - "enum_items": [ - {"nuke-default": "nuke-default"}, - {"aces_1.0.3": "aces_1.0.3"}, - {"aces_1.1": "aces_1.1"}, - {"custom": "custom"} - ] - }, { - "type": "path-widget", - "key": "ocioconfigpath", - "label": "Custom OCIO path", - "multiplatform": true, - "multipath": true - }, { - "type": "text", - "key": "workingSpace", - "label": "Working Space" - }, { - "type": "text", - "key": "sixteenBitLut", - "label": "16 Bit Files" - }, { - "type": "text", - "key": "eightBitLut", - "label": "8 Bit Files" - }, { - "type": "text", - "key": "floatLut", - "label": "Floating Point Files" - }, { - "type": "text", - "key": "logLut", - "label": "Log Files" - }, { - "type": "text", - "key": "viewerLut", - "label": "Viewer" - }, { - "type": "text", - "key": "thumbnailLut", - "label": "Thumbnails" - } - ] - } - ] - }, { - "key": "regexInputs", - "type": "dict", - "label": "Colorspace on Inputs by regex detection", - "collapsable": false, - "children": [ - { - "type": "list", - "key": "inputs", - "label": "", - "object_type": { - "type": "dict", - "children": [ - { - "type": "text", - "key": "regex", - "label": "Regex" - }, { - "type": "text", - "key": "colorspace", - "label": "Colorspace" - } - ] - } - } - ] - } - ] - }, { - "key": "nuke", - "type": "dict", - "label": "Nuke", - "children": [ - { - "key": "workfile", - "type": "dict", - "label": "Workfile", - "collapsable": false, - "is_group": true, - "children": [ - { - "type": "form", - "children": [ - { - "type": "enum", - "key": "colorManagement", - "label": "color management", - "enum_items": [ - {"Nuke": "Nuke"}, - {"OCIO": "OCIO"} - ] - }, { - "type": "enum", - "key": "OCIO_config", - "label": "OpenColorIO Config", - "enum_items": [ - {"nuke-default": "nuke-default"}, - {"spi-vfx": "spi-vfx"}, - {"spi-anim": "spi-anim"}, - {"aces_1.0.3": "aces_0.1.1"}, - {"aces_1.0.3": "aces_0.7.1"}, - {"aces_1.0.3": "aces_1.0.1"}, - {"aces_1.0.3": "aces_1.0.3"}, - {"aces_1.1": "aces_1.1"}, - {"custom": "custom"} - ] - }, { - "type": "path-widget", - "key": "customOCIOConfigPath", - "label": "Custom OCIO config path", - "multiplatform": true, - "multipath": true - }, { - "type": "text", - "key": "workingSpaceLUT", - "label": "Working Space" - }, { - "type": "text", - "key": "monitorLut", - "label": "monitor" - }, { - "type": "text", - "key": "int8Lut", - "label": "8-bit files" - }, { - "type": "text", - "key": "int16Lut", - "label": "16-bit files" - }, { - "type": "text", - "key": "logLut", - "label": "log files" - }, { - "type": "text", - "key": "floatLut", - "label": "float files" - } - ] - } - ] - }, { - "key": "nodes", - "type": "dict", - "label": "Nodes", - "collapsable": false, - "is_group": true, - "children": [ - { - "key": "CreateWriteRender", - "label": "CreateWriteRender", - "type": "dict", - "children": [ - { - "type": "text", - "key": "nukeNodeClass", - "label": "Nuke Node Class" - }, { - "type": "splitter" - }, - { - "key": "knobs", - "label": "Knobs", - "type": "list", - "object_type": { - "type": "dict-item", - "children": [ - { - "type": "text", - "key": "name", - "label": "Name" - }, { - "type": "text", - "key": "value", - "label": "Value" - } - ] - } - } - ] - }, { - "type": "list", - "key": "custom-items", - "label": "Custom Nodes", - "object_type": { - "type": "dict", - "children": [ - { - "key": "nodeCreateFamily", - "label": "Creator Family", - "type": "text" - }, { - "type": "text", - "key": "nodeClass", - "label": "Node Class" - }, { - "type": "splitter" - }, - { - "type": "dict-modifiable", - "key": "nodeKnobs", - "label": "Node Knobs", - "highlight_content": true, - "object_type": { - "type": "text", - "key": "nodeKnobValue" - } - } - ] - } - } - ] - }, { - "key": "regexInputs", - "type": "dict", - "label": "Colorspace on Inputs by regex detection", - "collapsable": false, - "children": [ - { - "type": "list", - "key": "inputs", - "label": "", - "object_type": { - "type": "dict", - "children": [ - { - "type": "text", - "key": "regex", - "label": "Regex" - }, { - "type": "text", - "key": "colorspace", - "label": "Colorspace" - } - ] - } - } - ] - } - ] + "aces_1.0.3": "aces_1.0.3" + }, + { + "aces_1.1": "aces_1.1" + }, + { + "custom": "custom" } - - ] - } - ] + ] + }, { + "type": "path-widget", + "key": "ocioconfigpath", + "label": "Custom OCIO path", + "multiplatform": true, + "multipath": true + }, { + "type": "text", + "key": "workingSpace", + "label": "Working Space" + }, { + "type": "text", + "key": "sixteenBitLut", + "label": "16 Bit Files" + }, { + "type": "text", + "key": "eightBitLut", + "label": "8 Bit Files" + }, { + "type": "text", + "key": "floatLut", + "label": "Floating Point Files" + }, { + "type": "text", + "key": "logLut", + "label": "Log Files" + }, { + "type": "text", + "key": "viewerLut", + "label": "Viewer" + }, { + "type": "text", + "key": "thumbnailLut", + "label": "Thumbnails" + }] + }] + }, { + "key": "regexInputs", + "type": "dict", + "label": "Colorspace on Inputs by regex detection", + "collapsable": true, + "children": [{ + "type": "list", + "key": "inputs", + "label": "", + "object_type": { + "type": "dict", + "children": [{ + "type": "text", + "key": "regex", + "label": "Regex" + }, { + "type": "text", + "key": "colorspace", + "label": "Colorspace" + }] + } + }] + }] + }, { + "key": "nuke", + "type": "dict", + "label": "Nuke", + "children": [{ + "key": "workfile", + "type": "dict", + "label": "Workfile", + "collapsable": false, + "is_group": true, + "children": [{ + "type": "form", + "children": [{ + "type": "enum", + "key": "colorManagement", + "label": "color management", + "enum_items": [{ + "Nuke": "Nuke" + }, + { + "OCIO": "OCIO" + } + ] + }, { + "type": "enum", + "key": "OCIO_config", + "label": "OpenColorIO Config", + "enum_items": [{ + "nuke-default": "nuke-default" + }, + { + "spi-vfx": "spi-vfx" + }, + { + "spi-anim": "spi-anim" + }, + { + "aces_1.0.3": "aces_0.1.1" + }, + { + "aces_1.0.3": "aces_0.7.1" + }, + { + "aces_1.0.3": "aces_1.0.1" + }, + { + "aces_1.0.3": "aces_1.0.3" + }, + { + "aces_1.1": "aces_1.1" + }, + { + "custom": "custom" + } + ] + }, { + "type": "path-widget", + "key": "customOCIOConfigPath", + "label": "Custom OCIO config path", + "multiplatform": true, + "multipath": true + }, { + "type": "text", + "key": "workingSpaceLUT", + "label": "Working Space" + }, { + "type": "text", + "key": "monitorLut", + "label": "monitor" + }, { + "type": "text", + "key": "int8Lut", + "label": "8-bit files" + }, { + "type": "text", + "key": "int16Lut", + "label": "16-bit files" + }, { + "type": "text", + "key": "logLut", + "label": "log files" + }, { + "type": "text", + "key": "floatLut", + "label": "float files" + }] + }] + }, { + "key": "nodes", + "type": "dict", + "label": "Nodes", + "collapsable": true, + "is_group": true, + "children": [ + { + "key": "requiredNodes", + "type": "list", + "label": "Required Nodes", + "object_type": { + "type": "dict", + "children": [{ + "type": "list", + "key": "plugins", + "label": "Used in plugins", + "object_type": { + "type": "text", + "key": "pluginClass", + "label": "Plugin Class" + } + }, { + "type": "text", + "key": "nukeNodeClass", + "label": "Nuke Node Class" + }, { + "type": "splitter" + }, { + "key": "knobs", + "label": "Knobs", + "type": "list", + "object_type": { + "type": "dict", + "children": [{ + "type": "text", + "key": "name", + "label": "Name" + }, { + "type": "text", + "key": "value", + "label": "Value" + }] + } + }] + } + }, { + "type": "list", + "key": "customNodes", + "label": "Custom Nodes", + "object_type": { + "type": "dict", + "children": [{ + "type": "list", + "key": "plugins", + "label": "Used in plugins", + "object_type": { + "type": "text", + "key": "pluginClass", + "label": "Plugin Class" + } + }, { + "type": "text", + "key": "nukeNodeClass", + "label": "Nuke Node Class" + }, { + "type": "splitter" + }, { + "key": "knobs", + "label": "Knobs", + "type": "list", + "object_type": { + "type": "dict", + "children": [{ + "type": "text", + "key": "name", + "label": "Name" + }, { + "type": "text", + "key": "value", + "label": "Value" + }] + } + }] + } + } + ] + }, { + "key": "regexInputs", + "type": "dict", + "label": "Colorspace on Inputs by regex detection", + "collapsable": true, + "children": [{ + "type": "list", + "key": "inputs", + "label": "", + "object_type": { + "type": "dict", + "children": [{ + "type": "text", + "key": "regex", + "label": "Regex" + }, { + "type": "text", + "key": "colorspace", + "label": "Colorspace" + }] + } + }] + }] + }] + }] } From 038945374962b6e08bbb9315a39aa66bd6673dcd Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 26 Nov 2020 15:10:48 +0100 Subject: [PATCH 28/56] fix(settings): removing examples --- .../settings/gui_schemas/system_schema/schema_main.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json index 3ec652c302..8e8798149c 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json @@ -17,9 +17,6 @@ }, { "type": "schema", "name": "schema_tools" - }, { - "type": "schema", - "name": "example_schema" }] } ] From 1de4100adb17f7b5d51a309432264c6d4b50fdbe Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 26 Nov 2020 18:06:29 +0100 Subject: [PATCH 29/56] modifiable dictionary can use schemas and templates in --- pype/tools/settings/settings/widgets/lib.py | 87 ++++++++++++--------- 1 file changed, 52 insertions(+), 35 deletions(-) diff --git a/pype/tools/settings/settings/widgets/lib.py b/pype/tools/settings/settings/widgets/lib.py index 1ec46f92b9..f112a6e975 100644 --- a/pype/tools/settings/settings/widgets/lib.py +++ b/pype/tools/settings/settings/widgets/lib.py @@ -213,45 +213,62 @@ def _fill_inner_schemas(schema_data, schema_collection, schema_templates): if schema_data["type"] == "schema": raise ValueError("First item in schema data can't be schema.") - children = schema_data.get("children") - if not children: - return schema_data - - new_children = [] - for child in children: - child_type = child["type"] - if child_type == "schema": - schema_name = child["name"] - if schema_name not in schema_collection: - if schema_name in schema_templates: - raise KeyError(( - "Schema template \"{}\" is used as `schema`" - ).format(schema_name)) - raise KeyError( - "Schema \"{}\" was not found".format(schema_name) - ) - - filled_child = _fill_inner_schemas( - schema_collection[schema_name], - schema_collection, - schema_templates - ) - - elif child_type == "schema_template": - for filled_child in _fill_schema_template( - child, schema_collection, schema_templates - ): - new_children.append(filled_child) + children_key = "children" + object_type_key = "object_type" + for item_key in (children_key, object_type_key): + children = schema_data.get(item_key) + if not children: continue - else: - filled_child = _fill_inner_schemas( - child, schema_collection, schema_templates - ) + if object_type_key == item_key: + if not isinstance(children, dict): + continue + children = [children] - new_children.append(filled_child) + new_children = [] + for child in children: + child_type = child["type"] + if child_type == "schema": + schema_name = child["name"] + if schema_name not in schema_collection: + if schema_name in schema_templates: + raise KeyError(( + "Schema template \"{}\" is used as `schema`" + ).format(schema_name)) + raise KeyError( + "Schema \"{}\" was not found".format(schema_name) + ) - schema_data["children"] = new_children + filled_child = _fill_inner_schemas( + schema_collection[schema_name], + schema_collection, + schema_templates + ) + + elif child_type == "schema_template": + for filled_child in _fill_schema_template( + child, schema_collection, schema_templates + ): + new_children.append(filled_child) + continue + + else: + filled_child = _fill_inner_schemas( + child, schema_collection, schema_templates + ) + + new_children.append(filled_child) + + if item_key == object_type_key: + if len(new_children) != 1: + raise KeyError(( + "Failed to fill object type with type: {} | name {}" + ).format( + child_type, str(child.get("name")) + )) + new_children = new_children[0] + + schema_data[item_key] = new_children return schema_data From f0b50b9491ecb988778a6c272ddafc2fa7e639b8 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 26 Nov 2020 18:07:35 +0100 Subject: [PATCH 30/56] added also separator to replace splitter --- pype/tools/settings/settings/widgets/item_types.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index be508d6617..02cd34416a 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -3771,6 +3771,7 @@ TypeToKlass.types["list-strict"] = ListStrictWidget TypeToKlass.types["enum"] = EnumeratorWidget TypeToKlass.types["dict-modifiable"] = ModifiableDict # DEPRECATED - remove when removed from schemas +TypeToKlass.types["splitter"] = SplitterWidget TypeToKlass.types["dict-item"] = DictWidget TypeToKlass.types["dict"] = DictWidget TypeToKlass.types["dict-invisible"] = DictInvisible @@ -3778,4 +3779,4 @@ TypeToKlass.types["path-widget"] = PathWidget TypeToKlass.types["form"] = DictFormWidget TypeToKlass.types["label"] = LabelWidget -TypeToKlass.types["splitter"] = SplitterWidget +TypeToKlass.types["separator"] = SplitterWidget From 0370600f86d00c4e3394da794003d1e294ce5970 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 18:19:44 +0100 Subject: [PATCH 31/56] add burnin and families SP --- .../defaults/project_settings/global.json | 9 +- .../project_settings/standalonepublisher.json | 12 -- .../schema_project_global.json | 179 ++++++++++++------ .../schema_project_standalonepublisher.json | 150 ++++----------- .../schemas/template_creatorfamily.json | 43 ----- 5 files changed, 167 insertions(+), 226 deletions(-) delete mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json diff --git a/pype/settings/defaults/project_settings/global.json b/pype/settings/defaults/project_settings/global.json index b68f6d87bd..dd379b6180 100644 --- a/pype/settings/defaults/project_settings/global.json +++ b/pype/settings/defaults/project_settings/global.json @@ -57,17 +57,18 @@ "y_offset": 5, "bg_padding": 5 }, - "fields": {}, "profiles": [ { + "families": [], + "hosts": [], "burnins": { "burnin": { "TOP_LEFT": "{yy}-{mm}-{dd}", - "TOP_RIGHT": "{anatomy[version]}", "TOP_CENTERED": "", - "BOTTOM_RIGHT": "{frame_start}-{current_frame}-{frame_end}", + "TOP_RIGHT": "{anatomy[version]}", + "BOTTOM_LEFT": "{username}", "BOTTOM_CENTERED": "{asset}", - "BOTTOM_LEFT": "{username}" + "BOTTOM_RIGHT": "{frame_start}-{current_frame}-{frame_end}" } } } diff --git a/pype/settings/defaults/project_settings/standalonepublisher.json b/pype/settings/defaults/project_settings/standalonepublisher.json index 21ea3db586..85b7a55b9c 100644 --- a/pype/settings/defaults/project_settings/standalonepublisher.json +++ b/pype/settings/defaults/project_settings/standalonepublisher.json @@ -97,18 +97,6 @@ "icon": "", "defaults": [], "help": "" - }, - "other_families": { - "create_background": { - "name": "background", - "label": "Background", - "family": "background", - "icon": "image", - "defaults": [ - "Main" - ], - "help": "Layered background from PSD." - } } } } \ No newline at end of file diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json index ef8fc58257..a4c98ecddb 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json @@ -195,58 +195,120 @@ "checkbox_key": "enabled", "is_group": true, "children": [ - { - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }, - { - "type": "dict", - "collapsable": true, - "key": "options", - "label": "Burnin formating options", - "children": [ { - "type": "number", - "key": "font_size", - "label": "Font size" + "type": "boolean", + "key": "enabled", + "label": "Enabled" }, { - "type": "number", - "key": "opacity", - "label": "Font opacity" + "type": "dict", + "collapsable": true, + "key": "options", + "label": "Burnin formating options", + "children": [ + { + "type": "number", + "key": "font_size", + "label": "Font size" + }, + { + "type": "number", + "key": "opacity", + "label": "Font opacity" + }, + { + "type": "number", + "key": "bg_opacity", + "label": "Background opacity" + }, + { + "type": "number", + "key": "x_offset", + "label": "X Offset" + }, + { + "type": "number", + "key": "y_offset", + "label": "Y Offset" + }, + { + "type": "number", + "key": "bg_padding", + "label": "Padding aroung text" + }, + { + "type": "splitter" + }] }, + { - "type": "number", - "key": "bg_opacity", - "label": "Background opacity" - }, - { - "type": "number", - "key": "x_offset", - "label": "X Offset" - }, - { - "type": "number", - "key": "y_offset", - "label": "Y Offset" - }, - { - "type": "number", - "key": "bg_padding", - "label": "Padding aroung text" - }] - }, - { - "type": "raw-json", - "key": "fields", - "label": "Burnin Fields" - }, - { - "type": "raw-json", - "key": "profiles", - "label": "Burnin profiles" - }] + "type": "list", + "key": "profiles", + "label": "Profiles", + "object_type": + { + "type": "dict", + "children": [ + { + "key": "families", + "label": "Families", + "type": "list", + "object_type": "text" + }, + { + "key": "hosts", + "label": "Hosts", + "type": "list", + "object_type": "text" + }, + { + "type": "splitter" + }, + { + "key": "burnins", + "label": "Burnins", + "type": "dict-modifiable", + "highlight_content": true, + "collapsable": false, + "object_type": + { + "type": "dict", + "children": [ + { + "key": "TOP_LEFT", + "label": "Top Left", + "type": "text" + }, + { + "key": "TOP_CENTERED", + "label": "Top Centered", + "type": "text" + }, + { + "key": "TOP_RIGHT", + "label": "top Right", + "type": "text" + }, + { + "key": "BOTTOM_LEFT", + "label": "Bottom Left", + "type": "text" + }, + { + "key": "BOTTOM_CENTERED", + "label": "Bottom Centered", + "type": "text" + }, + { + "key": "BOTTOM_RIGHT", + "label": "BottomRight", + "type": "text" + }] + } + }] + } + } + ] }, { "type": "dict", @@ -308,35 +370,38 @@ "type": "list", "key": "maya", "label": "Maya", - "object_type":{ - "type":"text" + "object_type": + { + "type": "text" } }, { "type": "list", "key": "nuke", "label": "Nuke", - "object_type":{ - "type":"text" + "object_type": + { + "type": "text" } }, { "type": "list", "key": "aftereffects", "label": "After Effects", - "object_type":{ - "type":"text" + "object_type": + { + "type": "text" } }, { "type": "list", "key": "celaction", "label": "Celaction", - "object_type":{ - "type":"text" + "object_type": + { + "type": "text" } - } - ] + }] }] }] }] diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json index 5e07d82de6..4a6e5f76ec 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_standalonepublisher.json @@ -41,119 +41,49 @@ }] }, { - "type": "dict", + "type": "dict-modifiable", "collapsable": true, "key": "create", "label": "Creator plugins", "is_file": true, - "children": [ - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Workfile", - "name": "workfile" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Model", - "name": "model" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Look", - "name": "look" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Rig", - "name": "rig" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Pointcache", - "name": "pointcache" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Plate", - "name": "plate" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Camera", - "name": "camera" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Maya Scene", - "name": "mayaAscii" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Editorial", - "name": "editorial" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Image", - "name": "image" - }] - }, - { - "type": "schema_template", - "name": "template_creatorfamily", - "template_data": [ - { - "label": "Matchmove", - "name": "matchmove" - }] - }, - { - "type": "dict-modifiable", - "key": "other_families", - "label": "Other Families", - "object_type": { - "type": "raw-json" - } - }] + "object_type": + { + "type": "dict", + "children": [ + { + "type": "text", + "key": "name", + "label": "Name" + }, + { + "type": "text", + "key": "label", + "label": "Label" + }, + { + "type": "text", + "key": "family", + "label": "Family" + }, + { + "type": "text", + "key": "icon", + "label": "Icon" + }, + { + "type": "list", + "key": "defaults", + "label": "Defaults", + "object_type": + { + "type": "text" + } + }, + { + "type": "text", + "key": "help", + "label": "Help" + }] + } }] - } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json deleted file mode 100644 index eaeccf2c87..0000000000 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/template_creatorfamily.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "dict", - "collapsable": true, - "key": "create_{name}", - "label": "{label}", - "children": [ - { - "type": "text", - "key": "name", - "label": "Name" - }, - { - "type": "text", - "key": "label", - "label": "Label" - }, - { - "type": "text", - "key": "family", - "label": "Family" - }, - { - "type": "text", - "key": "icon", - "label": "Icon" - }, - { - "type": "list", - "key": "defaults", - "label": "Defaults", - "object_type": { - "type": "text" - } - }, - { - "type": "text", - "key": "help", - "label": "Help" - } - ] - } -] From aff450992a9547732c429d68efc22e9ad1b0e276 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 18:31:58 +0100 Subject: [PATCH 32/56] remove old dict-invisible --- .../gui_schemas/projects_schema/schema_project_global.json | 2 +- .../system_schema/module_settings/schema_ftrack.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json index a4c98ecddb..6fdc6a23a5 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_global.json @@ -40,7 +40,7 @@ "label": "Enabled" }, { - "type": "dict-invisible", + "type": "dict", "key": "ffmpeg_args", "children": [ { diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json index 9a0d36ad06..8dd219e98e 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/module_settings/schema_ftrack.json @@ -142,7 +142,7 @@ }, { "key": "intent", - "type": "dict-invisible", + "type": "dict", "children": [{ "type": "label", "label": "Intent" From 327ff56ded1e8b47c5e6c4d6828f884d804d95d9 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 26 Nov 2020 19:23:01 +0100 Subject: [PATCH 33/56] filled publish filter settings --- .../defaults/project_settings/hiero.json | 15 +- .../defaults/project_settings/maya.json | 10 +- .../defaults/project_settings/nuke.json | 2 +- .../project_settings/standalonepublisher.json | 152 ++++++++++-------- .../{global => }/applications.json | 0 .../system_settings/{global => }/general.json | 0 .../system_settings/{global => }/hosts.json | 0 .../system_settings/{global => }/intent.json | 0 .../system_settings/{global => }/modules.json | 0 .../standalone_publish/families.json | 90 ----------- .../system_settings/{global => }/tools.json | 0 .../projects_schema/schema_project_hiero.json | 5 +- .../projects_schema/schema_project_maya.json | 5 +- .../projects_schema/schema_project_nuke.json | 5 +- .../schemas/schema_publish_gui_filter.json | 12 ++ .../system_schema/schema_main.json | 32 ++-- 16 files changed, 127 insertions(+), 201 deletions(-) rename pype/settings/defaults/system_settings/{global => }/applications.json (100%) rename pype/settings/defaults/system_settings/{global => }/general.json (100%) rename pype/settings/defaults/system_settings/{global => }/hosts.json (100%) rename pype/settings/defaults/system_settings/{global => }/intent.json (100%) rename pype/settings/defaults/system_settings/{global => }/modules.json (100%) delete mode 100644 pype/settings/defaults/system_settings/standalone_publish/families.json rename pype/settings/defaults/system_settings/{global => }/tools.json (100%) create mode 100644 pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_publish_gui_filter.json diff --git a/pype/settings/defaults/project_settings/hiero.json b/pype/settings/defaults/project_settings/hiero.json index e7e6350c29..e4e65eedd3 100644 --- a/pype/settings/defaults/project_settings/hiero.json +++ b/pype/settings/defaults/project_settings/hiero.json @@ -5,17 +5,10 @@ }, "ExtractReviewCutUpVideo": { "enabled": true, - "tags_addition": [] + "tags_addition": [ + "review" + ] } }, - "filter": { - "strict": { - "ValidateVersion": true, - "VersionUpWorkfile": true - }, - "benevolent": { - "ValidateVersion": false, - "VersionUpWorkfile": false - } - } + "filters": {} } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/maya.json b/pype/settings/defaults/project_settings/maya.json index f8315dc129..afc4442d0f 100644 --- a/pype/settings/defaults/project_settings/maya.json +++ b/pype/settings/defaults/project_settings/maya.json @@ -307,5 +307,13 @@ } ] }, - "filter": {} + "filters": { + "preset 1": { + "ValidateNoAnimation": false, + "ValidateShapeDefaultNames": false + }, + "preset 2": { + "ValidateNoAnimation": false + } + } } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/nuke.json b/pype/settings/defaults/project_settings/nuke.json index 5b9ef5c21c..873f249769 100644 --- a/pype/settings/defaults/project_settings/nuke.json +++ b/pype/settings/defaults/project_settings/nuke.json @@ -86,5 +86,5 @@ } ] }, - "filter": {} + "filters": {} } \ No newline at end of file diff --git a/pype/settings/defaults/project_settings/standalonepublisher.json b/pype/settings/defaults/project_settings/standalonepublisher.json index 85b7a55b9c..2b5db54a4f 100644 --- a/pype/settings/defaults/project_settings/standalonepublisher.json +++ b/pype/settings/defaults/project_settings/standalonepublisher.json @@ -11,92 +11,104 @@ }, "create": { "create_workfile": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "workfile", + "label": "Workfile", + "family": "workfile", + "icon": "cube", + "defaults": [ + "Main" + ], + "help": "Working scene backup" }, "create_model": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" - }, - "create_look": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "mode", + "label": "Model", + "family": "model", + "icon": "cube", + "defaults": [ + "Main" + ], + "help": "Polygonal static geometry" }, "create_rig": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "rig", + "label": "Rig", + "family": "rig", + "icon": "wheelchair", + "defaults": [ + "Main", + "Cloth" + ], + "help": "Artist-friendly rig with controls" }, "create_pointcache": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "pointcache", + "label": "Pointcache", + "family": "pointcache", + "icon": "gears", + "defaults": [ + "Main" + ], + "help": "Alembic pointcache for animated data" }, "create_plate": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "plate", + "label": "Plate", + "family": "plate", + "icon": "camera", + "defaults": [ + "Main", + "BG", + "Animatic", + "Reference", + "Offline" + ], + "help": "Footage for composting or reference" }, "create_camera": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" - }, - "create_mayaAscii": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "camera", + "label": "Camera", + "family": "camera", + "icon": "camera", + "defaults": [ + "Main" + ], + "help": "video-camera" }, "create_editorial": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "editorial", + "label": "Editorial", + "family": "editorial", + "icon": "image", + "defaults": [ + "Main" + ], + "help": "Editorial files to generate shots." }, "create_image": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "image", + "label": "Image file", + "family": "image", + "icon": "image", + "defaults": [ + "Reference", + "Texture", + "ConceptArt", + "MattePaint" + ], + "help": "Holder for all kinds of image data" }, "create_matchmove": { - "name": "", - "label": "", - "family": "", - "icon": "", - "defaults": [], - "help": "" + "name": "matchmove", + "label": "Matchmove script", + "family": "matchmove", + "icon": "empire", + "defaults": [ + "Camera", + "Object", + "Mocap" + ], + "help": "Script exported from matchmoving application" } } } \ No newline at end of file diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/applications.json similarity index 100% rename from pype/settings/defaults/system_settings/global/applications.json rename to pype/settings/defaults/system_settings/applications.json diff --git a/pype/settings/defaults/system_settings/global/general.json b/pype/settings/defaults/system_settings/general.json similarity index 100% rename from pype/settings/defaults/system_settings/global/general.json rename to pype/settings/defaults/system_settings/general.json diff --git a/pype/settings/defaults/system_settings/global/hosts.json b/pype/settings/defaults/system_settings/hosts.json similarity index 100% rename from pype/settings/defaults/system_settings/global/hosts.json rename to pype/settings/defaults/system_settings/hosts.json diff --git a/pype/settings/defaults/system_settings/global/intent.json b/pype/settings/defaults/system_settings/intent.json similarity index 100% rename from pype/settings/defaults/system_settings/global/intent.json rename to pype/settings/defaults/system_settings/intent.json diff --git a/pype/settings/defaults/system_settings/global/modules.json b/pype/settings/defaults/system_settings/modules.json similarity index 100% rename from pype/settings/defaults/system_settings/global/modules.json rename to pype/settings/defaults/system_settings/modules.json diff --git a/pype/settings/defaults/system_settings/standalone_publish/families.json b/pype/settings/defaults/system_settings/standalone_publish/families.json deleted file mode 100644 index d05941cc26..0000000000 --- a/pype/settings/defaults/system_settings/standalone_publish/families.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "create_look": { - "name": "look", - "label": "Look", - "family": "look", - "icon": "paint-brush", - "defaults": ["Main"], - "help": "Shader connections defining shape look" - }, - "create_model": { - "name": "model", - "label": "Model", - "family": "model", - "icon": "cube", - "defaults": ["Main", "Proxy", "Sculpt"], - "help": "Polygonal static geometry" - }, - "create_workfile": { - "name": "workfile", - "label": "Workfile", - "family": "workfile", - "icon": "cube", - "defaults": ["Main"], - "help": "Working scene backup" - }, - "create_camera": { - "name": "camera", - "label": "Camera", - "family": "camera", - "icon": "video-camera", - "defaults": ["Main"], - "help": "Single baked camera" - }, - "create_pointcache": { - "name": "pointcache", - "label": "Pointcache", - "family": "pointcache", - "icon": "gears", - "defaults": ["Main"], - "help": "Alembic pointcache for animated data" - }, - "create_rig": { - "name": "rig", - "label": "Rig", - "family": "rig", - "icon": "wheelchair", - "defaults": ["Main"], - "help": "Artist-friendly rig with controls" - }, - "create_layout": { - "name": "layout", - "label": "Layout", - "family": "layout", - "icon": "cubes", - "defaults": ["Main"], - "help": "Simple scene for animators with camera" - }, - "create_plate": { - "name": "plate", - "label": "Plate", - "family": "plate", - "icon": "camera", - "defaults": ["Main", "BG", "Reference"], - "help": "Plates for compositors" - }, - "create_matchmove": { - "name": "matchmove", - "label": "Matchmove script", - "family": "matchmove", - "icon": "empire", - "defaults": ["Camera", "Object", "Mocap"], - "help": "Script exported from matchmoving application" - }, - "create_images": { - "name": "image", - "label": "Image file", - "family": "image", - "icon": "image", - "defaults": ["ConceptArt", "Reference", "Texture", "MattePaint"], - "help": "Holder for all kinds of image data" - }, - "create_editorial": { - "name": "editorial", - "label": "Editorial", - "family": "editorial", - "icon": "image", - "defaults": ["Main"], - "help": "Editorial files to generate shots." - } -} diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/tools.json similarity index 100% rename from pype/settings/defaults/system_settings/global/tools.json rename to pype/settings/defaults/system_settings/tools.json diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json index 0f8475655c..834dc0bb3d 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_hiero.json @@ -41,8 +41,7 @@ }] }, { - "type": "raw-json", - "key": "filter", - "label": "Publish GUI Filters" + "type": "schema", + "name": "schema_publish_gui_filter" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json index d863941d1d..a71cfb1e09 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_maya.json @@ -21,8 +21,7 @@ "name": "schema_workfile_build" }, { - "type": "raw-json", - "key": "filter", - "label": "Publish GUI Filters" + "type": "schema", + "name": "schema_publish_gui_filter" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json index 48d78cc422..3870fbe8bd 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_project_nuke.json @@ -138,8 +138,7 @@ "name": "schema_workfile_build" }, { - "type": "raw-json", - "key": "filter", - "label": "Publish GUI Filters" + "type": "schema", + "name": "schema_publish_gui_filter" }] } diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_publish_gui_filter.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_publish_gui_filter.json new file mode 100644 index 0000000000..f2385996eb --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schemas/schema_publish_gui_filter.json @@ -0,0 +1,12 @@ +{ + "type": "dict-modifiable", + "collapsable": true, + "key": "filters", + "label": "Publish GUI Filters", + "is_file": true, + "object_type": + { + "type": "raw-json", + "label": "Plugins" + } +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json index 039d00401c..d5c7402dcf 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json @@ -1,23 +1,17 @@ { "key": "system", "type": "dict", - "children": [ - { - "type": "dict", - "key": "global", - "children": [{ - "type": "schema", - "name": "schema_general" - },{ - "type": "schema", - "name": "schema_modules" - }, { - "type": "schema", - "name": "schema_applications" - }, { - "type": "schema", - "name": "schema_tools" - }] - } - ] + "children": [{ + "type": "schema", + "name": "schema_general" + },{ + "type": "schema", + "name": "schema_modules" + }, { + "type": "schema", + "name": "schema_applications" + }, { + "type": "schema", + "name": "schema_tools" + }] } From 50078fa0696ce3b53df973a0d7c3229f58994bd8 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 27 Nov 2020 02:32:07 +0100 Subject: [PATCH 34/56] moved validation of ftrack c ustom attributes to ftrack plugins --- .../publish/validate_custom_ftrack_attributes.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pype/plugins/{global => ftrack}/publish/validate_custom_ftrack_attributes.py (100%) diff --git a/pype/plugins/global/publish/validate_custom_ftrack_attributes.py b/pype/plugins/ftrack/publish/validate_custom_ftrack_attributes.py similarity index 100% rename from pype/plugins/global/publish/validate_custom_ftrack_attributes.py rename to pype/plugins/ftrack/publish/validate_custom_ftrack_attributes.py From 5bd3974dc7935721636eb3251c6986a8ed50cc74 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 27 Nov 2020 02:35:17 +0100 Subject: [PATCH 35/56] delivery action returns bool or message on launch end --- pype/modules/ftrack/actions/action_delivery.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pype/modules/ftrack/actions/action_delivery.py b/pype/modules/ftrack/actions/action_delivery.py index 8812ce9bc7..1beebe3e31 100644 --- a/pype/modules/ftrack/actions/action_delivery.py +++ b/pype/modules/ftrack/actions/action_delivery.py @@ -396,6 +396,13 @@ class Delivery(BaseAction): session.commit() self.db_con.uninstall() + if job["status"] == "failed": + return { + "success": False, + "message": "Delivery failed. Check logs for more information." + } + return True + def real_launch(self, session, entities, event): self.log.info("Delivery action just started.") report_items = collections.defaultdict(list) From 5fc00fa6f48b407e8a528abfb15637ff51b56a62 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:15:19 +0200 Subject: [PATCH 36/56] renamed `load_json` to `load_json_file` --- pype/settings/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index b40e726ad1..e316b1697b 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -77,7 +77,7 @@ def default_settings(): return copy.deepcopy(_DEFAULT_SETTINGS) -def load_json(fpath): +def load_json_file(fpath): # Load json data with open(fpath, "r") as opened_file: lines = opened_file.read().splitlines() From effa7a28f8dedbe38ffb4c63a3bc72c53a2a246a Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:15:52 +0200 Subject: [PATCH 37/56] simplified `load_json_file` as jsons are expected to be saved with gui --- pype/settings/lib.py | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index e316b1697b..953cbda0e6 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -79,48 +79,9 @@ def default_settings(): def load_json_file(fpath): # Load json data - with open(fpath, "r") as opened_file: - lines = opened_file.read().splitlines() - - # prepare json string - standard_json = "" - for line in lines: - # Remove all whitespace on both sides - line = line.strip() - - # Skip blank lines - if len(line) == 0: - continue - - standard_json += line - - # Check if has extra commas - extra_comma = False - if ",]" in standard_json or ",}" in standard_json: - extra_comma = True - standard_json = standard_json.replace(",]", "]") - standard_json = standard_json.replace(",}", "}") - - if extra_comma: - log.error("Extra comma in json file: \"{}\"".format(fpath)) - - # return empty dict if file is empty - if standard_json == "": - return {} - - # Try to parse string - try: - return json.loads(standard_json) - - except json.decoder.JSONDecodeError: - # Return empty dict if it is first time that decode error happened - return {} - - # Repreduce the exact same exception but traceback contains better - # information about position of error in the loaded json try: with open(fpath, "r") as opened_file: - json.load(opened_file) + return json.load(opened_file) except json.decoder.JSONDecodeError: log.warning( From d5b55f60b04eb2df6fa47afc1b065a9da27ba399 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:16:41 +0200 Subject: [PATCH 38/56] changed `load_json` to `load_json_file` in code --- pype/settings/lib.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 953cbda0e6..982ae07490 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -199,25 +199,25 @@ def load_jsons_from_dir(path, *args, **kwargs): def studio_system_settings(): if os.path.exists(SYSTEM_SETTINGS_PATH): - return load_json(SYSTEM_SETTINGS_PATH) + return load_json_file(SYSTEM_SETTINGS_PATH) return {} def studio_environments(): if os.path.exists(ENVIRONMENTS_PATH): - return load_json(ENVIRONMENTS_PATH) + return load_json_file(ENVIRONMENTS_PATH) return {} def studio_project_settings(): if os.path.exists(PROJECT_SETTINGS_PATH): - return load_json(PROJECT_SETTINGS_PATH) + return load_json_file(PROJECT_SETTINGS_PATH) return {} def studio_project_anatomy(): if os.path.exists(PROJECT_ANATOMY_PATH): - return load_json(PROJECT_ANATOMY_PATH) + return load_json_file(PROJECT_ANATOMY_PATH) return {} @@ -244,7 +244,7 @@ def project_settings_overrides(project_name): path_to_json = path_to_project_overrides(project_name) if not os.path.exists(path_to_json): return {} - return load_json(path_to_json) + return load_json_file(path_to_json) def project_anatomy_overrides(project_name): @@ -254,7 +254,7 @@ def project_anatomy_overrides(project_name): path_to_json = path_to_project_anatomy(project_name) if not os.path.exists(path_to_json): return {} - return load_json(path_to_json) + return load_json_file(path_to_json) def merge_overrides(global_dict, override_dict): From 8d23f491d2f52f7cd4f3a5fb964ac404f85ce72d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:17:08 +0200 Subject: [PATCH 39/56] moved `load_jsons_from_dir` # Conflicts: # pype/settings/lib.py --- pype/settings/lib.py | 78 ++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 982ae07490..de1aed31f6 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -92,7 +92,45 @@ def load_json_file(fpath): return {} -def find_environments(data, with_items=False, parents=None): +def load_jsons_from_dir(path, *args, **kwargs): + output = {} + + path = os.path.normpath(path) + if not os.path.exists(path): + # TODO warning + return output + + sub_keys = list(kwargs.pop("subkeys", args)) + for sub_key in tuple(sub_keys): + _path = os.path.join(path, sub_key) + if not os.path.exists(_path): + break + + path = _path + sub_keys.pop(0) + + base_len = len(path) + 1 + for base, _directories, filenames in os.walk(path): + base_items_str = base[base_len:] + if not base_items_str: + base_items = [] + else: + base_items = base_items_str.split(os.path.sep) + + for filename in filenames: + basename, ext = os.path.splitext(filename) + if ext == ".json": + full_path = os.path.join(base, filename) + value = load_json_file(full_path) + dict_keys = base_items + [basename] + output = subkey_merge(output, value, dict_keys) + + for sub_key in sub_keys: + output = output[sub_key] + return output + + +def find_environments(data): if not data or not isinstance(data, dict): return {} @@ -159,44 +197,6 @@ def subkey_merge(_dict, value, keys): return _dict -def load_jsons_from_dir(path, *args, **kwargs): - output = {} - - path = os.path.normpath(path) - if not os.path.exists(path): - # TODO warning - return output - - sub_keys = list(kwargs.pop("subkeys", args)) - for sub_key in tuple(sub_keys): - _path = os.path.join(path, sub_key) - if not os.path.exists(_path): - break - - path = _path - sub_keys.pop(0) - - base_len = len(path) + 1 - for base, _directories, filenames in os.walk(path): - base_items_str = base[base_len:] - if not base_items_str: - base_items = [] - else: - base_items = base_items_str.split(os.path.sep) - - for filename in filenames: - basename, ext = os.path.splitext(filename) - if ext == ".json": - full_path = os.path.join(base, filename) - value = load_json(full_path) - dict_keys = base_items + [basename] - output = subkey_merge(output, value, dict_keys) - - for sub_key in sub_keys: - output = output[sub_key] - return output - - def studio_system_settings(): if os.path.exists(SYSTEM_SETTINGS_PATH): return load_json_file(SYSTEM_SETTINGS_PATH) From 39d83c59ecd9629bf5a151c0949874c13d474f01 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:19:17 +0200 Subject: [PATCH 40/56] path to project settings returns path to studio overrides if project name is None --- pype/settings/lib.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index de1aed31f6..a41b8fad8f 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -221,7 +221,9 @@ def studio_project_anatomy(): return {} -def path_to_project_overrides(project_name): +def path_to_project_settings(project_name): + if not project_name: + return PROJECT_SETTINGS_PATH return os.path.join( STUDIO_OVERRIDES_PATH, project_name, @@ -230,6 +232,8 @@ def path_to_project_overrides(project_name): def path_to_project_anatomy(project_name): + if not project_name: + return PROJECT_ANATOMY_PATH return os.path.join( STUDIO_OVERRIDES_PATH, project_name, @@ -241,7 +245,7 @@ def project_settings_overrides(project_name): if not project_name: return {} - path_to_json = path_to_project_overrides(project_name) + path_to_json = path_to_project_settings(project_name) if not os.path.exists(path_to_json): return {} return load_json_file(path_to_json) From 3697482fe15c83d097181ab1d5bc103cac08b9e5 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:19:36 +0200 Subject: [PATCH 41/56] added functions for saving settings --- pype/settings/lib.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index a41b8fad8f..783347a7b4 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -241,6 +241,38 @@ def path_to_project_anatomy(project_name): ) +def save_studio_settings(data): + dirpath = os.path.dirname(SYSTEM_SETTINGS_PATH) + if not os.path.exists(dirpath): + os.makedirs(dirpath) + + print("Saving studio overrides") + with open(SYSTEM_SETTINGS_PATH, "w") as file_stream: + json.dump(data, file_stream, indent=4) + + +def save_project_settings(project_name, overrides): + project_overrides_json_path = path_to_project_settings(project_name) + dirpath = os.path.dirname(project_overrides_json_path) + if not os.path.exists(dirpath): + os.makedirs(dirpath) + + print("Saving overrides of project \"{}\"".format(project_name)) + with open(project_overrides_json_path, "w") as file_stream: + json.dump(overrides, file_stream, indent=4) + + +def save_project_anatomy(project_name, anatomy_data): + project_anatomy_json_path = path_to_project_anatomy(project_name) + dirpath = os.path.dirname(project_anatomy_json_path) + if not os.path.exists(dirpath): + os.makedirs(dirpath) + + print("Saving anatomy of project \"{}\"".format(project_name)) + with open(project_anatomy_json_path, "w") as file_stream: + json.dump(anatomy_data, file_stream, indent=4) + + def project_settings_overrides(project_name): if not project_name: return {} From cdacc265721d43ed098dabc19f0b3895c06068cf Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:19:44 +0200 Subject: [PATCH 42/56] STUDIO_OVERRIDES_PATH is safer --- pype/settings/lib.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 783347a7b4..ab3e3fcbe6 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -13,7 +13,7 @@ M_ENVIRONMENT_KEY = "__environment_keys__" M_POP_KEY = "__pop_key__" # Folder where studio overrides are stored -STUDIO_OVERRIDES_PATH = os.environ["PYPE_PROJECT_CONFIGS"] +STUDIO_OVERRIDES_PATH = os.getenv("PYPE_PROJECT_CONFIGS") # File where studio's system overrides are stored SYSTEM_SETTINGS_KEY = "system_settings" @@ -88,7 +88,6 @@ def load_json_file(fpath): "File has invalid json format \"{}\"".format(fpath), exc_info=True ) - return {} From b9567b0fe1e1ed744d80dc5801f5f2ade74e1d20 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:20:01 +0200 Subject: [PATCH 43/56] using saving functions in settings tool # Conflicts: # pype/tools/settings/settings/widgets/base.py --- pype/tools/settings/settings/widgets/base.py | 111 +++---------------- 1 file changed, 15 insertions(+), 96 deletions(-) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 3f842602ca..19336b1ac3 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -4,11 +4,8 @@ import json from Qt import QtWidgets, QtCore, QtGui from pype.settings.lib import ( SYSTEM_SETTINGS_KEY, - SYSTEM_SETTINGS_PATH, PROJECT_SETTINGS_KEY, - PROJECT_SETTINGS_PATH, PROJECT_ANATOMY_KEY, - PROJECT_ANATOMY_PATH, DEFAULTS_DIR, @@ -22,12 +19,9 @@ from pype.settings.lib import ( project_settings_overrides, project_anatomy_overrides, - path_to_project_overrides, - path_to_project_anatomy, - - apply_overrides, - find_environments, - DuplicatedEnvGroups + save_studio_settings, + save_project_settings, + save_project_anatomy ) from .widgets import UnsavedChangesDialog from . import lib @@ -222,16 +216,7 @@ class SystemWidget(QtWidgets.QWidget): values = lib.convert_gui_data_to_overrides(_data.get("system", {})) - if not self.duplicated_env_group_validation(overrides=values): - return - - dirpath = os.path.dirname(SYSTEM_SETTINGS_PATH) - if not os.path.exists(dirpath): - os.makedirs(dirpath) - - print("Saving data to:", SYSTEM_SETTINGS_PATH) - with open(SYSTEM_SETTINGS_PATH, "w") as file_stream: - json.dump(values, file_stream, indent=4) + save_studio_settings(values) self._update_values() @@ -670,7 +655,7 @@ class ProjectWidget(QtWidgets.QWidget): has_invalid = True if not has_invalid: - return True + return self._save_overrides() invalid_items = [] for item in self.input_fields: @@ -688,16 +673,6 @@ class ProjectWidget(QtWidgets.QWidget): self.scroll_widget.ensureWidgetVisible(first_invalid_item) if first_invalid_item.isVisible(): first_invalid_item.setFocus(True) - return False - - def _save(self): - if not self.items_are_valid(): - return - - if self.project_name is None: - self._save_studio_overrides() - else: - self._save_overrides() def _on_refresh(self): self.reset() @@ -722,75 +697,19 @@ class ProjectWidget(QtWidgets.QWidget): ) # Saving overrides data - project_overrides_data = output_data.get( - PROJECT_SETTINGS_KEY, {} - ) - project_overrides_json_path = path_to_project_overrides( - self.project_name - ) - dirpath = os.path.dirname(project_overrides_json_path) - if not os.path.exists(dirpath): - os.makedirs(dirpath) - - print("Saving data to:", project_overrides_json_path) - with open(project_overrides_json_path, "w") as file_stream: - json.dump(project_overrides_data, file_stream, indent=4) + project_overrides_data = output_data.get(PROJECT_SETTINGS_KEY, {}) + save_project_settings(self.project_name, project_overrides_data) # Saving anatomy data - project_anatomy_data = output_data.get( - PROJECT_ANATOMY_KEY, {} - ) - project_anatomy_json_path = path_to_project_anatomy( - self.project_name - ) - dirpath = os.path.dirname(project_anatomy_json_path) - if not os.path.exists(dirpath): - os.makedirs(dirpath) + project_anatomy_data = output_data.get(PROJECT_ANATOMY_KEY, {}) + save_project_anatomy(self.project_name, project_anatomy_data) - print("Saving data to:", project_anatomy_json_path) - with open(project_anatomy_json_path, "w") as file_stream: - json.dump(project_anatomy_data, file_stream, indent=4) - - # Refill values with overrides - self._on_project_change() - - def _save_studio_overrides(self): - data = {} - for input_field in self.input_fields: - value, is_group = input_field.studio_overrides() - if value is not lib.NOT_SET: - data.update(value) - - output_data = lib.convert_gui_data_to_overrides( - data.get("project", {}) - ) - - # Project overrides data - project_overrides_data = output_data.get( - PROJECT_SETTINGS_KEY, {} - ) - dirpath = os.path.dirname(PROJECT_SETTINGS_PATH) - if not os.path.exists(dirpath): - os.makedirs(dirpath) - - print("Saving data to:", PROJECT_SETTINGS_PATH) - with open(PROJECT_SETTINGS_PATH, "w") as file_stream: - json.dump(project_overrides_data, file_stream, indent=4) - - # Project Anatomy data - project_anatomy_data = output_data.get( - PROJECT_ANATOMY_KEY, {} - ) - dirpath = os.path.dirname(PROJECT_ANATOMY_PATH) - if not os.path.exists(dirpath): - os.makedirs(dirpath) - - print("Saving data to:", PROJECT_ANATOMY_PATH) - with open(PROJECT_ANATOMY_PATH, "w") as file_stream: - json.dump(project_anatomy_data, file_stream, indent=4) - - # Update saved values - self._update_values() + if self.project_name: + # Refill values with overrides + self._on_project_change() + else: + # Update saved values + self._update_values() def _update_values(self): self.ignore_value_changes = True From 3a7cdae35cf5c1df18f68c345270693fef4fd6f5 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Sat, 3 Oct 2020 01:31:02 +0200 Subject: [PATCH 44/56] make sure settings.lib import won't crash if PYPE_PROJECT_CONFIGS is not set --- pype/settings/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index ab3e3fcbe6..59820d6639 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -13,7 +13,7 @@ M_ENVIRONMENT_KEY = "__environment_keys__" M_POP_KEY = "__pop_key__" # Folder where studio overrides are stored -STUDIO_OVERRIDES_PATH = os.getenv("PYPE_PROJECT_CONFIGS") +STUDIO_OVERRIDES_PATH = os.getenv("PYPE_PROJECT_CONFIGS") or "" # File where studio's system overrides are stored SYSTEM_SETTINGS_KEY = "system_settings" From fa46b8afd7c5a99df8b5cf4d522ba7a2a29205f1 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Oct 2020 10:35:03 +0200 Subject: [PATCH 45/56] fixed saving of project settings # Conflicts: # pype/tools/settings/settings/widgets/base.py --- pype/tools/settings/settings/widgets/base.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 19336b1ac3..c6db3c34de 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -687,8 +687,12 @@ class ProjectWidget(QtWidgets.QWidget): return data = {} + studio_overrides = bool(self.project_name is None) for item in self.input_fields: - value, _is_group = item.overrides() + if studio_overrides: + value, is_group = item.studio_overrides() + else: + value, is_group = item.overrides() if value is not lib.NOT_SET: data.update(value) @@ -714,7 +718,7 @@ class ProjectWidget(QtWidgets.QWidget): def _update_values(self): self.ignore_value_changes = True - default_values = default_values = lib.convert_data_to_gui_data( + default_values = lib.convert_data_to_gui_data( {"project": default_settings()} ) for input_field in self.input_fields: From e8e0261396a9b61dad0cd80769a12bec739deb44 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Oct 2020 11:24:05 +0200 Subject: [PATCH 46/56] safer work with default settings --- pype/settings/lib.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 59820d6639..a998752287 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -324,13 +324,13 @@ def apply_overrides(source_data, override_data): def system_settings(): - default_values = default_settings()[SYSTEM_SETTINGS_KEY] + default_values = copy.deepcopy(default_settings()[SYSTEM_SETTINGS_KEY]) studio_values = studio_system_settings() return apply_overrides(default_values, studio_values) def project_settings(project_name): - default_values = default_settings()[PROJECT_SETTINGS_KEY] + default_values = copy.deepcopy(default_settings()[PROJECT_SETTINGS_KEY]) studio_values = studio_project_settings() studio_overrides = apply_overrides(default_values, studio_values) From 212bbbc8dffd6190ec1be2b2e921bd60874a79ee Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Oct 2020 11:24:27 +0200 Subject: [PATCH 47/56] print more specific data --- pype/settings/lib.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index a998752287..c47710a4d1 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -245,7 +245,9 @@ def save_studio_settings(data): if not os.path.exists(dirpath): os.makedirs(dirpath) - print("Saving studio overrides") + print("Saving studio overrides. Output path: {}".format( + SYSTEM_SETTINGS_PATH + )) with open(SYSTEM_SETTINGS_PATH, "w") as file_stream: json.dump(data, file_stream, indent=4) @@ -256,7 +258,9 @@ def save_project_settings(project_name, overrides): if not os.path.exists(dirpath): os.makedirs(dirpath) - print("Saving overrides of project \"{}\"".format(project_name)) + print("Saving overrides of project \"{}\". Output path: {}".format( + project_name, project_overrides_json_path + )) with open(project_overrides_json_path, "w") as file_stream: json.dump(overrides, file_stream, indent=4) @@ -267,7 +271,9 @@ def save_project_anatomy(project_name, anatomy_data): if not os.path.exists(dirpath): os.makedirs(dirpath) - print("Saving anatomy of project \"{}\"".format(project_name)) + print("Saving anatomy of project \"{}\". Output path: {}".format( + project_name, project_anatomy_json_path + )) with open(project_anatomy_json_path, "w") as file_stream: json.dump(anatomy_data, file_stream, indent=4) From 4ae64993bcdb4d190971b00a94c2475c07b05dcf Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Oct 2020 11:24:39 +0200 Subject: [PATCH 48/56] added few dostrings # Conflicts: # pype/settings/lib.py --- pype/settings/lib.py | 102 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 97 insertions(+), 5 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index c47710a4d1..5fbf5d11dd 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -92,6 +92,35 @@ def load_json_file(fpath): def load_jsons_from_dir(path, *args, **kwargs): + """Load all json files with content from entered path. + + Enterd path hiearchy: + |_ folder1 + | |_ data1.json + |_ folder2 + |_ subfolder1 + |_ data2.json + + Will result in: + ```javascript + { + "folder1": { + "data1": "CONTENT OF FILE" + }, + "folder2": { + "data1": { + "subfolder1": "CONTENT OF FILE" + } + } + } + ``` + + Args: + path (str): Path to folder where jsons should be. + + Returns: + dict: loaded data + """ output = {} path = os.path.normpath(path) @@ -130,6 +159,15 @@ def load_jsons_from_dir(path, *args, **kwargs): def find_environments(data): + """ Find environemnt values from system settings by it's metadata. + + Args: + data(dict): System settings data or dictionary which may contain + environments metadata. + + Returns: + dict: Key as Environment key and value for `acre` module. + """ if not data or not isinstance(data, dict): return {} @@ -197,24 +235,28 @@ def subkey_merge(_dict, value, keys): def studio_system_settings(): + """Studio overrides of system settings.""" if os.path.exists(SYSTEM_SETTINGS_PATH): return load_json_file(SYSTEM_SETTINGS_PATH) return {} def studio_environments(): + """Environment values from defaults.""" if os.path.exists(ENVIRONMENTS_PATH): return load_json_file(ENVIRONMENTS_PATH) return {} def studio_project_settings(): + """Studio overrides of default project settings.""" if os.path.exists(PROJECT_SETTINGS_PATH): return load_json_file(PROJECT_SETTINGS_PATH) return {} def studio_project_anatomy(): + """Studio overrides of default project anatomy data.""" if os.path.exists(PROJECT_ANATOMY_PATH): return load_json_file(PROJECT_ANATOMY_PATH) return {} @@ -241,6 +283,14 @@ def path_to_project_anatomy(project_name): def save_studio_settings(data): + """Save studio overrides of system settings. + + Saving must corespond with loading. For loading should be used function + `studio_system_settings`. + + Args: + data(dict): Data of studio overrides with override metadata. + """ dirpath = os.path.dirname(SYSTEM_SETTINGS_PATH) if not os.path.exists(dirpath): os.makedirs(dirpath) @@ -253,6 +303,17 @@ def save_studio_settings(data): def save_project_settings(project_name, overrides): + """Save studio overrides of project settings. + + Data are saved for specific project or as defaults for all projects. + Saving must corespond with loading. For loading should be used functions + `project_settings_overrides` and `studio_project_settings`. + + Args: + project_name(str, null): Project name for which overrides are + or None for global settings. + data(dict): Data of project overrides with override metadata. + """ project_overrides_json_path = path_to_project_settings(project_name) dirpath = os.path.dirname(project_overrides_json_path) if not os.path.exists(dirpath): @@ -266,6 +327,17 @@ def save_project_settings(project_name, overrides): def save_project_anatomy(project_name, anatomy_data): + """Save studio overrides of project anatomy. + + Data are saved for specific project or as defaults for all projects. + Saving must corespond with loading. For loading should be used functions + `project_anatomy_overrides` and `studio_project_anatomy`. + + Args: + project_name(str, null): Project name for which overrides are + or None for global settings. + data(dict): Data of project overrides with override metadata. + """ project_anatomy_json_path = path_to_project_anatomy(project_name) dirpath = os.path.dirname(project_anatomy_json_path) if not os.path.exists(dirpath): @@ -279,6 +351,14 @@ def save_project_anatomy(project_name, anatomy_data): def project_settings_overrides(project_name): + """Studio overrides of project settings for specific project. + + Args: + project_name(str): Name of project for which data should be loaded. + + Returns: + dict: Only overrides for entered project, may be empty dictionary. + """ if not project_name: return {} @@ -289,6 +369,14 @@ def project_settings_overrides(project_name): def project_anatomy_overrides(project_name): + """Studio overrides of project anatomy for specific project. + + Args: + project_name(str): Name of project for which data should be loaded. + + Returns: + dict: Only overrides for entered project, may be empty dictionary. + """ if not project_name: return {} @@ -299,6 +387,7 @@ def project_anatomy_overrides(project_name): def merge_overrides(global_dict, override_dict): + """Merge override data to source data by metadata stored in.""" if M_OVERRIDEN_KEY in override_dict: overriden_keys = set(override_dict.pop(M_OVERRIDEN_KEY)) else: @@ -308,10 +397,7 @@ def merge_overrides(global_dict, override_dict): if value == M_POP_KEY: global_dict.pop(key) - elif ( - key in overriden_keys - or key not in global_dict - ): + elif (key in overriden_keys or key not in global_dict): global_dict[key] = value elif isinstance(value, dict) and isinstance(global_dict[key], dict): @@ -330,12 +416,14 @@ def apply_overrides(source_data, override_data): def system_settings(): + """System settings with applied studio overrides.""" default_values = copy.deepcopy(default_settings()[SYSTEM_SETTINGS_KEY]) studio_values = studio_system_settings() return apply_overrides(default_values, studio_values) def project_settings(project_name): + """Project settings with applied studio and project overrides.""" default_values = copy.deepcopy(default_settings()[PROJECT_SETTINGS_KEY]) studio_values = studio_project_settings() @@ -347,7 +435,11 @@ def project_settings(project_name): def environments(): - # TODO remove these defaults (All should be set with system settings) + """Environments from defaults and extracted from system settings. + + Returns: + dict: Output should be ready for `acre` module. + """ envs = copy.deepcopy(default_settings()[ENVIRONMENTS_KEY]) # This is part of loading environments from settings envs_from_system_settings = find_environments(system_settings()) From 170d2dc305b7ba84eb5069a5a795e3bd73bbe387 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Oct 2020 12:00:10 +0200 Subject: [PATCH 49/56] modified docstring in save functions to be more clear --- pype/settings/lib.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 5fbf5d11dd..34603ef30e 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -285,8 +285,9 @@ def path_to_project_anatomy(project_name): def save_studio_settings(data): """Save studio overrides of system settings. - Saving must corespond with loading. For loading should be used function - `studio_system_settings`. + Do not use to store whole system settings data with defaults but only it's + overrides with metadata defining how overrides should be applied in load + function. For loading should be used function `studio_system_settings`. Args: data(dict): Data of studio overrides with override metadata. @@ -306,8 +307,12 @@ def save_project_settings(project_name, overrides): """Save studio overrides of project settings. Data are saved for specific project or as defaults for all projects. - Saving must corespond with loading. For loading should be used functions - `project_settings_overrides` and `studio_project_settings`. + + Do not use to store whole project settings data with defaults but only it's + overrides with metadata defining how overrides should be applied in load + function. For loading should be used functions `studio_project_settings` + for global project settings and `project_settings_overrides` for + project specific settings. Args: project_name(str, null): Project name for which overrides are @@ -329,9 +334,11 @@ def save_project_settings(project_name, overrides): def save_project_anatomy(project_name, anatomy_data): """Save studio overrides of project anatomy. - Data are saved for specific project or as defaults for all projects. - Saving must corespond with loading. For loading should be used functions - `project_anatomy_overrides` and `studio_project_anatomy`. + Do not use to store whole project anatomy data with defaults but only it's + overrides with metadata defining how overrides should be applied in load + function. For loading should be used functions `studio_project_anatomy` + for global project settings and `project_anatomy_overrides` for + project specific settings. Args: project_name(str, null): Project name for which overrides are From fd00cf196bea78a92ac734059de6fd839118ee32 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Oct 2020 20:17:27 +0200 Subject: [PATCH 50/56] modified first docstring by comments --- pype/settings/lib.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 34603ef30e..2614d55fbe 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -92,9 +92,12 @@ def load_json_file(fpath): def load_jsons_from_dir(path, *args, **kwargs): - """Load all json files with content from entered path. + """Load all .json files with content from entered folder path. - Enterd path hiearchy: + Data are loaded recursively from a directory and recreate the + hierarchy as a dictionary. + + Entered path hiearchy: |_ folder1 | |_ data1.json |_ folder2 @@ -116,10 +119,10 @@ def load_jsons_from_dir(path, *args, **kwargs): ``` Args: - path (str): Path to folder where jsons should be. + path (str): Path to the root folder where the json hierarchy starts. Returns: - dict: loaded data + dict: Loaded data. """ output = {} From cc9574981986235b2d787273aa2c9092a164a713 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 19 Oct 2020 13:27:48 +0200 Subject: [PATCH 51/56] Small fixes in docstrings --- pype/settings/lib.py | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 2614d55fbe..adb5b2626f 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -23,9 +23,6 @@ SYSTEM_SETTINGS_PATH = os.path.join( # File where studio's environment overrides are stored ENVIRONMENTS_KEY = "environments" -ENVIRONMENTS_PATH = os.path.join( - STUDIO_OVERRIDES_PATH, ENVIRONMENTS_KEY + ".json" -) # File where studio's default project overrides are stored PROJECT_SETTINGS_KEY = "project_settings" @@ -244,13 +241,6 @@ def studio_system_settings(): return {} -def studio_environments(): - """Environment values from defaults.""" - if os.path.exists(ENVIRONMENTS_PATH): - return load_json_file(ENVIRONMENTS_PATH) - return {} - - def studio_project_settings(): """Studio overrides of default project settings.""" if os.path.exists(PROJECT_SETTINGS_PATH): @@ -335,13 +325,7 @@ def save_project_settings(project_name, overrides): def save_project_anatomy(project_name, anatomy_data): - """Save studio overrides of project anatomy. - - Do not use to store whole project anatomy data with defaults but only it's - overrides with metadata defining how overrides should be applied in load - function. For loading should be used functions `studio_project_anatomy` - for global project settings and `project_anatomy_overrides` for - project specific settings. + """Save studio overrides of project anatomy data. Args: project_name(str, null): Project name for which overrides are @@ -396,8 +380,9 @@ def project_anatomy_overrides(project_name): return load_json_file(path_to_json) -def merge_overrides(global_dict, override_dict): - """Merge override data to source data by metadata stored in.""" +def merge_overrides(source_dict, override_dict): + """Merge data from override_dict to source_dict.""" + if M_OVERRIDEN_KEY in override_dict: overriden_keys = set(override_dict.pop(M_OVERRIDEN_KEY)) else: @@ -405,17 +390,17 @@ def merge_overrides(global_dict, override_dict): for key, value in override_dict.items(): if value == M_POP_KEY: - global_dict.pop(key) + source_dict.pop(key) - elif (key in overriden_keys or key not in global_dict): - global_dict[key] = value + elif (key in overriden_keys or key not in source_dict): + source_dict[key] = value - elif isinstance(value, dict) and isinstance(global_dict[key], dict): - global_dict[key] = merge_overrides(global_dict[key], value) + elif isinstance(value, dict) and isinstance(source_dict[key], dict): + source_dict[key] = merge_overrides(source_dict[key], value) else: - global_dict[key] = value - return global_dict + source_dict[key] = value + return source_dict def apply_overrides(source_data, override_data): @@ -445,7 +430,10 @@ def project_settings(project_name): def environments(): - """Environments from defaults and extracted from system settings. + """Calculated environment based on defaults and system settings. + + Any default environment also found in the system settings will be fully + overriden by the one from the system settings. Returns: dict: Output should be ready for `acre` module. From 0ebd6466e90ee138a2c5386e49a65951e0ebe6ae Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 27 Nov 2020 03:32:30 +0100 Subject: [PATCH 52/56] updated lib with new modifications --- pype/settings/lib.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index adb5b2626f..a50d7793b5 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -158,7 +158,7 @@ def load_jsons_from_dir(path, *args, **kwargs): return output -def find_environments(data): +def find_environments(data, with_items=False, parents=None): """ Find environemnt values from system settings by it's metadata. Args: @@ -412,14 +412,14 @@ def apply_overrides(source_data, override_data): def system_settings(): """System settings with applied studio overrides.""" - default_values = copy.deepcopy(default_settings()[SYSTEM_SETTINGS_KEY]) + default_values = default_settings()[SYSTEM_SETTINGS_KEY] studio_values = studio_system_settings() return apply_overrides(default_values, studio_values) def project_settings(project_name): """Project settings with applied studio and project overrides.""" - default_values = copy.deepcopy(default_settings()[PROJECT_SETTINGS_KEY]) + default_values = default_settings()[PROJECT_SETTINGS_KEY] studio_values = studio_project_settings() studio_overrides = apply_overrides(default_values, studio_values) @@ -438,6 +438,7 @@ def environments(): Returns: dict: Output should be ready for `acre` module. """ + # TODO remove these defaults (All should be set with system settings) envs = copy.deepcopy(default_settings()[ENVIRONMENTS_KEY]) # This is part of loading environments from settings envs_from_system_settings = find_environments(system_settings()) From b873c9bc8221fe368cc46eda0865387f58f86d34 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 27 Nov 2020 03:33:49 +0100 Subject: [PATCH 53/56] updated base with new changes --- pype/tools/settings/settings/widgets/base.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index c6db3c34de..3e1c6ea6b9 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -21,7 +21,11 @@ from pype.settings.lib import ( save_studio_settings, save_project_settings, - save_project_anatomy + save_project_anatomy, + + apply_overrides, + find_environments, + DuplicatedEnvGroups ) from .widgets import UnsavedChangesDialog from . import lib @@ -216,6 +220,9 @@ class SystemWidget(QtWidgets.QWidget): values = lib.convert_gui_data_to_overrides(_data.get("system", {})) + if not self.duplicated_env_group_validation(overrides=values): + return + save_studio_settings(values) self._update_values() @@ -528,7 +535,7 @@ class ProjectWidget(QtWidgets.QWidget): layout.addWidget(project_list_widget, 0) layout.addWidget(configurations_widget, 1) - save_btn.clicked.connect(self._save) + save_btn.clicked.connect(self._save_overrides) project_list_widget.project_changed.connect(self._on_project_change) self.project_list_widget = project_list_widget @@ -655,7 +662,7 @@ class ProjectWidget(QtWidgets.QWidget): has_invalid = True if not has_invalid: - return self._save_overrides() + return True invalid_items = [] for item in self.input_fields: @@ -673,6 +680,7 @@ class ProjectWidget(QtWidgets.QWidget): self.scroll_widget.ensureWidgetVisible(first_invalid_item) if first_invalid_item.isVisible(): first_invalid_item.setFocus(True) + return False def _on_refresh(self): self.reset() From f20c8d142ea953abe492f11fd7438b1cabb9d29e Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 27 Nov 2020 03:43:34 +0100 Subject: [PATCH 54/56] fixed refresh of project widgets --- pype/tools/settings/settings/widgets/base.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 3e1c6ea6b9..653da51d43 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -563,11 +563,11 @@ class ProjectWidget(QtWidgets.QWidget): input_field.hierarchical_style_update() def reset(self): - if self.content_layout.count() != 0: - for widget in self.input_fields: - self.content_layout.removeWidget(widget) - widget.deleteLater() - self.input_fields.clear() + self.input_fields.clear() + while self.content_layout.count() != 0: + widget = self.content_layout.itemAt(0).widget() + self.content_layout.removeWidget(widget) + widget.deleteLater() self.schema = lib.gui_schema("projects_schema", "0_project_gui_schema") self.keys = self.schema.get("keys", []) From 5d66a25b78e87b94c1c11caea0c6eb2ff552c903 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Fri, 27 Nov 2020 12:05:21 +0100 Subject: [PATCH 55/56] change name of category --- .../gui_schemas/projects_schema/schema_anatomy_imageio.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json index b7de6c5091..58852ba821 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json @@ -1,7 +1,7 @@ { "type": "dict", "key": "imageio", - "label": "Color Management (Image i/o)", + "label": "Color Management and Output Formats", "is_file": true, "children": [{ "key": "hosts", From 7b1acfd60ddbf0fefdaa581ec614ece18fe3ade9 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 27 Nov 2020 12:07:50 +0100 Subject: [PATCH 56/56] feat(imageio): dropping `host` parent as it is redundant --- .../defaults/project_anatomy/imageio.json | 249 +++++---- .../schema_anatomy_imageio.json | 509 +++++++++--------- 2 files changed, 370 insertions(+), 388 deletions(-) diff --git a/pype/settings/defaults/project_anatomy/imageio.json b/pype/settings/defaults/project_anatomy/imageio.json index 1adab0fc2b..98ded33370 100644 --- a/pype/settings/defaults/project_anatomy/imageio.json +++ b/pype/settings/defaults/project_anatomy/imageio.json @@ -1,131 +1,122 @@ { - "hosts": { - "hiero": { - "workfile": { - "ocioConfigName": "nuke-default", - "ocioconfigpath": { - "windows": [], - "darwin": [], - "linux": [] - }, - "workingSpace": "linear", - "sixteenBitLut": "sRGB", - "eightBitLut": "sRGB", - "floatLut": "linear", - "logLut": "Cineon", - "viewerLut": "sRGB", - "thumbnailLut": "sRGB" - }, - "regexInputs": { - "inputs": [ - { - "regex": "[^-a-zA-Z0-9](plateRef).*(?=mp4)", - "colorspace": "sRGB" - } - ] - } - }, - "nuke": { - "workfile": { - "colorManagement": "Nuke", - "OCIO_config": "nuke-default", - "customOCIOConfigPath": { - "windows": [], - "darwin": [], - "linux": [] - }, - "workingSpaceLUT": "linear", - "monitorLut": "sRGB", - "int8Lut": "sRGB", - "int16Lut": "sRGB", - "logLut": "Cineon", - "floatLut": "linear" - }, - "nodes": { - "requiredNodes": [ - { - "plugins": [ - "CreateWriteRender" - ], - "nukeNodeClass": "Write", - "knobs": [ - { - "name": "file_type", - "value": "exr" - }, - { - "name": "datatype", - "value": "16 bit half" - }, - { - "name": "compression", - "value": "Zip (1 scanline)" - }, - { - "name": "autocrop", - "value": "True" - }, - { - "name": "tile_color", - "value": "0xff0000ff" - }, - { - "name": "channels", - "value": "rgb" - }, - { - "name": "colorspace", - "value": "linear" - } - ] - }, - { - "plugins": [ - "CreateWritePrerender" - ], - "nukeNodeClass": "Write", - "knobs": [ - { - "name": "file_type", - "value": "exr" - }, - { - "name": "datatype", - "value": "16 bit half" - }, - { - "name": "compression", - "value": "Zip (1 scanline)" - }, - { - "name": "autocrop", - "value": "False" - }, - { - "name": "tile_color", - "value": "0xff0000ff" - }, - { - "name": "channels", - "value": "rgb" - }, - { - "name": "colorspace", - "value": "linear" - } - ] - } - ], - "customNodes": [] - }, - "regexInputs": { - "inputs": [ - { - "regex": "[^-a-zA-Z0-9]beauty[^-a-zA-Z0-9]", - "colorspace": "linear" - } - ] - } - } + "hiero": { + "workfile": { + "ocioConfigName": "nuke-default", + "ocioconfigpath": { + "windows": [], + "darwin": [], + "linux": [] + }, + "workingSpace": "linear", + "sixteenBitLut": "sRGB", + "eightBitLut": "sRGB", + "floatLut": "linear", + "logLut": "Cineon", + "viewerLut": "sRGB", + "thumbnailLut": "sRGB" + }, + "regexInputs": { + "inputs": [{ + "regex": "[^-a-zA-Z0-9](plateRef).*(?=mp4)", + "colorspace": "sRGB" + }] } -} \ No newline at end of file + }, + "nuke": { + "workfile": { + "colorManagement": "Nuke", + "OCIO_config": "nuke-default", + "customOCIOConfigPath": { + "windows": [], + "darwin": [], + "linux": [] + }, + "workingSpaceLUT": "linear", + "monitorLut": "sRGB", + "int8Lut": "sRGB", + "int16Lut": "sRGB", + "logLut": "Cineon", + "floatLut": "linear" + }, + "nodes": { + "requiredNodes": [{ + "plugins": [ + "CreateWriteRender" + ], + "nukeNodeClass": "Write", + "knobs": [{ + "name": "file_type", + "value": "exr" + }, + { + "name": "datatype", + "value": "16 bit half" + }, + { + "name": "compression", + "value": "Zip (1 scanline)" + }, + { + "name": "autocrop", + "value": "True" + }, + { + "name": "tile_color", + "value": "0xff0000ff" + }, + { + "name": "channels", + "value": "rgb" + }, + { + "name": "colorspace", + "value": "linear" + } + ] + }, + { + "plugins": [ + "CreateWritePrerender" + ], + "nukeNodeClass": "Write", + "knobs": [{ + "name": "file_type", + "value": "exr" + }, + { + "name": "datatype", + "value": "16 bit half" + }, + { + "name": "compression", + "value": "Zip (1 scanline)" + }, + { + "name": "autocrop", + "value": "False" + }, + { + "name": "tile_color", + "value": "0xff0000ff" + }, + { + "name": "channels", + "value": "rgb" + }, + { + "name": "colorspace", + "value": "linear" + } + ] + } + ], + "customNodes": [] + }, + "regexInputs": { + "inputs": [{ + "regex": "[^-a-zA-Z0-9]beauty[^-a-zA-Z0-9]", + "colorspace": "linear" + }] + } + } +} diff --git a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json index b7de6c5091..2057adfbbc 100644 --- a/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json +++ b/pype/tools/settings/settings/gui_schemas/projects_schema/schema_anatomy_imageio.json @@ -4,294 +4,285 @@ "label": "Color Management (Image i/o)", "is_file": true, "children": [{ - "key": "hosts", + "key": "hiero", "type": "dict", - "label": "Hosts", - "collapsed": false, - "collapsable": true, + "label": "Hiero", "children": [{ - "key": "hiero", + "key": "workfile", "type": "dict", - "label": "Hiero", + "label": "Workfile", + "collapsable": false, "children": [{ - "key": "workfile", - "type": "dict", - "label": "Workfile", - "collapsable": false, + "type": "form", "children": [{ - "type": "form", - "children": [{ - "type": "enum", - "key": "ocioConfigName", - "label": "OpenColorIO Config", - "enum_items": [{ - "nuke-default": "nuke-default" - }, - { - "aces_1.0.3": "aces_1.0.3" - }, - { - "aces_1.1": "aces_1.1" - }, - { - "custom": "custom" - } - ] - }, { - "type": "path-widget", - "key": "ocioconfigpath", - "label": "Custom OCIO path", - "multiplatform": true, - "multipath": true - }, { - "type": "text", - "key": "workingSpace", - "label": "Working Space" - }, { - "type": "text", - "key": "sixteenBitLut", - "label": "16 Bit Files" - }, { - "type": "text", - "key": "eightBitLut", - "label": "8 Bit Files" - }, { - "type": "text", - "key": "floatLut", - "label": "Floating Point Files" - }, { - "type": "text", - "key": "logLut", - "label": "Log Files" - }, { - "type": "text", - "key": "viewerLut", - "label": "Viewer" - }, { - "type": "text", - "key": "thumbnailLut", - "label": "Thumbnails" - }] - }] - }, { - "key": "regexInputs", - "type": "dict", - "label": "Colorspace on Inputs by regex detection", - "collapsable": true, - "children": [{ - "type": "list", - "key": "inputs", - "label": "", - "object_type": { - "type": "dict", - "children": [{ - "type": "text", - "key": "regex", - "label": "Regex" - }, { - "type": "text", - "key": "colorspace", - "label": "Colorspace" - }] - } + "type": "enum", + "key": "ocioConfigName", + "label": "OpenColorIO Config", + "enum_items": [{ + "nuke-default": "nuke-default" + }, + { + "aces_1.0.3": "aces_1.0.3" + }, + { + "aces_1.1": "aces_1.1" + }, + { + "custom": "custom" + } + ] + }, { + "type": "path-widget", + "key": "ocioconfigpath", + "label": "Custom OCIO path", + "multiplatform": true, + "multipath": true + }, { + "type": "text", + "key": "workingSpace", + "label": "Working Space" + }, { + "type": "text", + "key": "sixteenBitLut", + "label": "16 Bit Files" + }, { + "type": "text", + "key": "eightBitLut", + "label": "8 Bit Files" + }, { + "type": "text", + "key": "floatLut", + "label": "Floating Point Files" + }, { + "type": "text", + "key": "logLut", + "label": "Log Files" + }, { + "type": "text", + "key": "viewerLut", + "label": "Viewer" + }, { + "type": "text", + "key": "thumbnailLut", + "label": "Thumbnails" }] }] }, { - "key": "nuke", + "key": "regexInputs", "type": "dict", - "label": "Nuke", + "label": "Colorspace on Inputs by regex detection", + "collapsable": true, "children": [{ - "key": "workfile", - "type": "dict", - "label": "Workfile", - "collapsable": false, - "is_group": true, - "children": [{ - "type": "form", + "type": "list", + "key": "inputs", + "label": "", + "object_type": { + "type": "dict", "children": [{ - "type": "enum", - "key": "colorManagement", - "label": "color management", - "enum_items": [{ - "Nuke": "Nuke" - }, - { - "OCIO": "OCIO" - } - ] - }, { - "type": "enum", - "key": "OCIO_config", - "label": "OpenColorIO Config", - "enum_items": [{ - "nuke-default": "nuke-default" - }, - { - "spi-vfx": "spi-vfx" - }, - { - "spi-anim": "spi-anim" - }, - { - "aces_1.0.3": "aces_0.1.1" - }, - { - "aces_1.0.3": "aces_0.7.1" - }, - { - "aces_1.0.3": "aces_1.0.1" - }, - { - "aces_1.0.3": "aces_1.0.3" - }, - { - "aces_1.1": "aces_1.1" - }, - { - "custom": "custom" - } - ] - }, { - "type": "path-widget", - "key": "customOCIOConfigPath", - "label": "Custom OCIO config path", - "multiplatform": true, - "multipath": true + "type": "text", + "key": "regex", + "label": "Regex" }, { "type": "text", - "key": "workingSpaceLUT", - "label": "Working Space" - }, { - "type": "text", - "key": "monitorLut", - "label": "monitor" - }, { - "type": "text", - "key": "int8Lut", - "label": "8-bit files" - }, { - "type": "text", - "key": "int16Lut", - "label": "16-bit files" - }, { - "type": "text", - "key": "logLut", - "label": "log files" - }, { - "type": "text", - "key": "floatLut", - "label": "float files" + "key": "colorspace", + "label": "Colorspace" }] + } + }] + }] + }, { + "key": "nuke", + "type": "dict", + "label": "Nuke", + "children": [{ + "key": "workfile", + "type": "dict", + "label": "Workfile", + "collapsable": false, + "is_group": true, + "children": [{ + "type": "form", + "children": [{ + "type": "enum", + "key": "colorManagement", + "label": "color management", + "enum_items": [{ + "Nuke": "Nuke" + }, + { + "OCIO": "OCIO" + } + ] + }, { + "type": "enum", + "key": "OCIO_config", + "label": "OpenColorIO Config", + "enum_items": [{ + "nuke-default": "nuke-default" + }, + { + "spi-vfx": "spi-vfx" + }, + { + "spi-anim": "spi-anim" + }, + { + "aces_1.0.3": "aces_0.1.1" + }, + { + "aces_1.0.3": "aces_0.7.1" + }, + { + "aces_1.0.3": "aces_1.0.1" + }, + { + "aces_1.0.3": "aces_1.0.3" + }, + { + "aces_1.1": "aces_1.1" + }, + { + "custom": "custom" + } + ] + }, { + "type": "path-widget", + "key": "customOCIOConfigPath", + "label": "Custom OCIO config path", + "multiplatform": true, + "multipath": true + }, { + "type": "text", + "key": "workingSpaceLUT", + "label": "Working Space" + }, { + "type": "text", + "key": "monitorLut", + "label": "monitor" + }, { + "type": "text", + "key": "int8Lut", + "label": "8-bit files" + }, { + "type": "text", + "key": "int16Lut", + "label": "16-bit files" + }, { + "type": "text", + "key": "logLut", + "label": "log files" + }, { + "type": "text", + "key": "floatLut", + "label": "float files" }] - }, { - "key": "nodes", - "type": "dict", - "label": "Nodes", - "collapsable": true, - "is_group": true, - "children": [ - { - "key": "requiredNodes", + }] + }, { + "key": "nodes", + "type": "dict", + "label": "Nodes", + "collapsable": true, + "is_group": true, + "children": [{ + "key": "requiredNodes", + "type": "list", + "label": "Required Nodes", + "object_type": { + "type": "dict", + "children": [{ "type": "list", - "label": "Required Nodes", + "key": "plugins", + "label": "Used in plugins", "object_type": { - "type": "dict", - "children": [{ - "type": "list", - "key": "plugins", - "label": "Used in plugins", - "object_type": { - "type": "text", - "key": "pluginClass", - "label": "Plugin Class" - } - }, { - "type": "text", - "key": "nukeNodeClass", - "label": "Nuke Node Class" - }, { - "type": "splitter" - }, { - "key": "knobs", - "label": "Knobs", - "type": "list", - "object_type": { - "type": "dict", - "children": [{ - "type": "text", - "key": "name", - "label": "Name" - }, { - "type": "text", - "key": "value", - "label": "Value" - }] - } - }] + "type": "text", + "key": "pluginClass", + "label": "Plugin Class" } }, { + "type": "text", + "key": "nukeNodeClass", + "label": "Nuke Node Class" + }, { + "type": "splitter" + }, { + "key": "knobs", + "label": "Knobs", "type": "list", - "key": "customNodes", - "label": "Custom Nodes", "object_type": { "type": "dict", "children": [{ - "type": "list", - "key": "plugins", - "label": "Used in plugins", - "object_type": { - "type": "text", - "key": "pluginClass", - "label": "Plugin Class" - } + "type": "text", + "key": "name", + "label": "Name" }, { "type": "text", - "key": "nukeNodeClass", - "label": "Nuke Node Class" - }, { - "type": "splitter" - }, { - "key": "knobs", - "label": "Knobs", - "type": "list", - "object_type": { - "type": "dict", - "children": [{ - "type": "text", - "key": "name", - "label": "Name" - }, { - "type": "text", - "key": "value", - "label": "Value" - }] - } + "key": "value", + "label": "Value" }] } - } - ] + }] + } }, { - "key": "regexInputs", - "type": "dict", - "label": "Colorspace on Inputs by regex detection", - "collapsable": true, - "children": [{ - "type": "list", - "key": "inputs", - "label": "", - "object_type": { - "type": "dict", - "children": [{ + "type": "list", + "key": "customNodes", + "label": "Custom Nodes", + "object_type": { + "type": "dict", + "children": [{ + "type": "list", + "key": "plugins", + "label": "Used in plugins", + "object_type": { "type": "text", - "key": "regex", - "label": "Regex" - }, { - "type": "text", - "key": "colorspace", - "label": "Colorspace" - }] - } - }] + "key": "pluginClass", + "label": "Plugin Class" + } + }, { + "type": "text", + "key": "nukeNodeClass", + "label": "Nuke Node Class" + }, { + "type": "splitter" + }, { + "key": "knobs", + "label": "Knobs", + "type": "list", + "object_type": { + "type": "dict", + "children": [{ + "type": "text", + "key": "name", + "label": "Name" + }, { + "type": "text", + "key": "value", + "label": "Value" + }] + } + }] + } + }] + }, { + "key": "regexInputs", + "type": "dict", + "label": "Colorspace on Inputs by regex detection", + "collapsable": true, + "children": [{ + "type": "list", + "key": "inputs", + "label": "", + "object_type": { + "type": "dict", + "children": [{ + "type": "text", + "key": "regex", + "label": "Regex" + }, { + "type": "text", + "key": "colorspace", + "label": "Colorspace" + }] + } }] }] }]