From cfbe04d536ab85632384b86490178da8eec23b71 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:44:16 +0100 Subject: [PATCH 01/86] simple version of user role in settings gui --- pype/tools/settings/__main__.py | 12 ++++++++++-- pype/tools/settings/settings/widgets/base.py | 12 ++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pype/tools/settings/__main__.py b/pype/tools/settings/__main__.py index 55a38b36041..2e27c282087 100644 --- a/pype/tools/settings/__main__.py +++ b/pype/tools/settings/__main__.py @@ -11,8 +11,16 @@ app.setStyleSheet(stylesheet) app.setWindowIcon(QtGui.QIcon(settings.style.app_icon_path())) - develop = "-d" in sys.argv or "--develop" in sys.argv - widget = settings.MainWidget(develop) + _develop = "-d" in sys.argv or "--develop" in sys.argv + _user = "-m" in sys.argv or "--manager" in sys.argv + if _develop: + user_role = "developer" + elif _user: + user_role = "manager" + else: + user_role = "artist" + + widget = settings.MainWidget(user_role) widget.show() sys.exit(app.exec_()) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 7cbe7c2f6ff..ea082ef4b02 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -39,10 +39,10 @@ class SystemWidget(QtWidgets.QWidget): is_group = _is_group = False any_parent_is_group = _any_parent_is_group = False - def __init__(self, develop_mode, parent=None): + def __init__(self, user_role, parent=None): super(SystemWidget, self).__init__(parent) - self.develop_mode = develop_mode + self.user_role = user_role self._hide_studio_overrides = False self._ignore_value_changes = False @@ -68,7 +68,7 @@ def __init__(self, develop_mode, parent=None): footer_widget = QtWidgets.QWidget() footer_layout = QtWidgets.QHBoxLayout(footer_widget) - if self.develop_mode: + if self.user_role == "developer": save_as_default_btn = QtWidgets.QPushButton("Save as Default") save_as_default_btn.clicked.connect(self._save_as_defaults) @@ -415,10 +415,10 @@ class ProjectWidget(QtWidgets.QWidget): is_group = _is_group = False any_parent_is_group = _any_parent_is_group = False - def __init__(self, develop_mode, parent=None): + def __init__(self, user_role, parent=None): super(ProjectWidget, self).__init__(parent) - self.develop_mode = develop_mode + self.user_role = user_role self._hide_studio_overrides = False self.is_overidable = False @@ -445,7 +445,7 @@ def __init__(self, develop_mode, parent=None): footer_widget = QtWidgets.QWidget() footer_layout = QtWidgets.QHBoxLayout(footer_widget) - if self.develop_mode: + if self.user_role == "developer": save_as_default_btn = QtWidgets.QPushButton("Save as Default") save_as_default_btn.clicked.connect(self._save_as_defaults) From 6edabcb912dd5317416c2a1acf57b00a78c29d1c Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:45:17 +0100 Subject: [PATCH 02/86] hide items not available for specific user role --- .../settings/settings/widgets/item_types.py | 93 +++++++++++++++++-- .../tools/settings/settings/widgets/window.py | 6 +- 2 files changed, 86 insertions(+), 13 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 87f2fcd48e6..0b6c22a3e03 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -100,6 +100,8 @@ def _set_default_attributes(self): self._is_nullable = False self._as_widget = False self._is_group = False + self._roles = None + self.hidden_by_role = False # If value should be stored to environments self._env_group_key = None @@ -125,6 +127,13 @@ def _set_default_attributes(self): # Only for develop mode self.defaults_not_set = False + def available_for_role(self, role_name=None): + if not self._roles: + return True + if role_name is None: + role_name = self.user_role + return role_name in self._roles + def initial_attributes(self, input_data, parent, as_widget): """Prepare attributes based on entered arguments. @@ -136,10 +145,14 @@ def initial_attributes(self, input_data, parent, as_widget): self._parent = parent self._as_widget = as_widget + self._roles = input_data.get("roles") + if self._roles is not None and not isinstance(self._roles, list): + self._roles = [self._roles] + self._is_group = input_data.get("is_group", False) + self._env_group_key = input_data.get("env_group_key") # TODO not implemented yet self._is_nullable = input_data.get("is_nullable", False) - self._env_group_key = input_data.get("env_group_key") if self.is_environ: if not self.allow_to_environment: @@ -166,15 +179,19 @@ def initial_attributes(self, input_data, parent, as_widget): self._any_parent_is_group = any_parent_is_group + if not self.available_for_role(): + self.hide() + self.hidden_by_role = True + @property - def develop_mode(self): - """Tool is in develop mode or not. + def user_role(self): + """Tool is running with any user role. Returns: - bool + str: user role as string. """ - return self._parent.develop_mode + return self._parent.user_role @property def log(self): @@ -659,7 +676,7 @@ def update_default_values(self, parent_values): value = parent_values.get(self.key, NOT_SET) if value is NOT_SET: - if self.develop_mode: + if self.available_for_role("developer"): self.defaults_not_set = True value = self.default_input_value if value is NOT_SET: @@ -1000,7 +1017,6 @@ def __init__( super(TextWidget, self).__init__(parent_widget) self.initial_attributes(input_data, parent, as_widget) - self.multiline = input_data.get("multiline", False) placeholder = input_data.get("placeholder") @@ -1319,6 +1335,7 @@ def config_value(self): } return {self.key: value} + class ListItem(QtWidgets.QWidget, SettingObject): _btn_size = 20 value_changed = QtCore.Signal(object) @@ -2390,6 +2407,15 @@ def __init__( else: self._ui_as_item(input_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 _ui_as_item(self, input_data): self.key = input_data["key"] if input_data.get("highlight_content", False): @@ -2485,6 +2511,8 @@ def add_children_gui(self, child_configuration): 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: @@ -2824,6 +2852,15 @@ def __init__( 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) @@ -2845,6 +2882,8 @@ def add_children_gui(self, child_configuration): 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: @@ -3202,7 +3241,7 @@ def update_default_values(self, parent_values): value = parent_values.get(self.key, NOT_SET) if value is NOT_SET: - if self.develop_mode: + if self.available_for_role("developer"): self.defaults_not_set = True value = self.default_input_value if value is NOT_SET: @@ -3450,6 +3489,15 @@ def __init__( self.setAttribute(QtCore.Qt.WA_TranslucentBackground) + 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"] # Pop label to not be set in child @@ -3462,6 +3510,9 @@ def add_children_gui(self, child_configuration): item = klass(child_configuration, self, label_widget=label_widget) label_widget.item = item + if item.hidden_by_role: + label_widget.hide() + item.value_changed.connect(self._on_value_change) self.content_layout.addRow(label_widget, item) self.input_fields.append(item) @@ -3636,7 +3687,7 @@ def overrides(self): class LabelWidget(QtWidgets.QWidget): is_input_type = False - def __init__(self, configuration, parent=None): + def __init__(self, configuration, parent): super(LabelWidget, self).__init__(parent) self.setObjectName("LabelWidget") @@ -3647,12 +3698,23 @@ def __init__(self, configuration, parent=None): label_widget = QtWidgets.QLabel(label, self) layout.addWidget(label_widget) + # Role handling + roles = configuration.get("roles") + if roles is not None and not isinstance(roles, list): + roles = [roles] + + if roles and parent.user_role not in roles: + self.hide() + self.hidden_by_role = True + else: + self.hidden_by_role = False + class SplitterWidget(QtWidgets.QWidget): is_input_type = False _height = 2 - def __init__(self, configuration, parent=None): + def __init__(self, configuration, parent): super(SplitterWidget, self).__init__(parent) layout = QtWidgets.QHBoxLayout(self) @@ -3663,6 +3725,17 @@ def __init__(self, configuration, parent=None): splitter_item.setMaximumHeight(self._height) layout.addWidget(splitter_item) + # Role handling + roles = configuration.get("roles") + if roles is not None and not isinstance(roles, list): + roles = [roles] + + if roles and parent.user_role not in roles: + self.hide() + self.hidden_by_role = True + else: + self.hidden_by_role = False + TypeToKlass.types["boolean"] = BooleanWidget TypeToKlass.types["number"] = NumberWidget diff --git a/pype/tools/settings/settings/widgets/window.py b/pype/tools/settings/settings/widgets/window.py index f83da8efe08..670d00fb2bf 100644 --- a/pype/tools/settings/settings/widgets/window.py +++ b/pype/tools/settings/settings/widgets/window.py @@ -6,7 +6,7 @@ class MainWidget(QtWidgets.QWidget): widget_width = 1000 widget_height = 600 - def __init__(self, develop, parent=None): + def __init__(self, user_role, parent=None): super(MainWidget, self).__init__(parent) self.setObjectName("MainWidget") self.setWindowTitle("Pype Settings") @@ -15,8 +15,8 @@ def __init__(self, develop, parent=None): header_tab_widget = QtWidgets.QTabWidget(parent=self) - studio_widget = SystemWidget(develop, header_tab_widget) - project_widget = ProjectWidget(develop, header_tab_widget) + studio_widget = SystemWidget(user_role, header_tab_widget) + project_widget = ProjectWidget(user_role, header_tab_widget) header_tab_widget.addTab(studio_widget, "System") header_tab_widget.addTab(project_widget, "Project") From 8cc56b14654a7e859cf181dd2b7a5ac15f2abb54 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:46:00 +0100 Subject: [PATCH 03/86] template item can have multiple item definitions in one schema item --- pype/tools/settings/settings/widgets/lib.py | 44 ++++++++++++--------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/pype/tools/settings/settings/widgets/lib.py b/pype/tools/settings/settings/widgets/lib.py index 569e7bfbb74..1ec46f92b9a 100644 --- a/pype/tools/settings/settings/widgets/lib.py +++ b/pype/tools/settings/settings/widgets/lib.py @@ -178,28 +178,34 @@ def _fill_schema_template(child_data, schema_collection, schema_templates): template_name )) + # Default value must be dictionary (NOT list) + # - empty list would not add any item if `template_data` are not filled template_data = child_data.get("template_data") or {} - try: - filled_child = _fill_schema_template_data( - template, template_data - ) - - except SchemaTemplateMissingKeys as exc: - raise SchemaTemplateMissingKeys( - exc.missing_keys, exc.required_keys, template_name - ) + if isinstance(template_data, dict): + template_data = [template_data] output = [] - for item in filled_child: - filled_item = _fill_inner_schemas( - item, schema_collection, schema_templates - ) - if filled_item["type"] == "schema_template": - output.extend(_fill_schema_template( - filled_item, schema_collection, schema_templates - )) - else: - output.append(filled_item) + for single_template_data in template_data: + try: + filled_child = _fill_schema_template_data( + template, single_template_data + ) + + except SchemaTemplateMissingKeys as exc: + raise SchemaTemplateMissingKeys( + exc.missing_keys, exc.required_keys, template_name + ) + + for item in filled_child: + filled_item = _fill_inner_schemas( + item, schema_collection, schema_templates + ) + if filled_item["type"] == "schema_template": + output.extend(_fill_schema_template( + filled_item, schema_collection, schema_templates + )) + else: + output.append(filled_item) return output From 6845545840c837405a1bb5f7dee7206b6a2c8b25 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:49:52 +0100 Subject: [PATCH 04/86] changed `{host_name}_executables` key to `executables` --- .../system_schema/host_settings/system_host_template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json index b39d6ac79db..89192921801 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json @@ -17,7 +17,7 @@ }, { "type": "path-widget", - "key": "{host_name}_executables", + "key": "executables", "label": "Executables", "multiplatform": "{multiplatform}", "multipath": "{multipath_executables}" From 10b176ed0324beba7a6a9b4ffa693d9fe8b97a78 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:50:23 +0100 Subject: [PATCH 05/86] host template has also label and variant label inputs for developers --- .../host_settings/system_host_template.json | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json index 89192921801..85053d0bef1 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json @@ -1,4 +1,5 @@ -[{ +[ + { "__default_values__": { "multipath_executables": true, "multiplatform": true @@ -10,11 +11,26 @@ "label": "{host_version}", "collapsable": true, "checkbox_key": "enabled", - "children": [{ + "children": [ + { "type": "boolean", "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Used from host label if not filled.", + "roles": ["developer"] + }, + { + "type": "text", + "key": "variant_label", + "label": "Variant label", + "placeholder": "Only \"Label\" is used if not filled.", + "roles": ["developer"] + }, { "type": "path-widget", "key": "executables", From b644bb9e761d9e0ef4f8ff69f2356c3b43ee69be Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:52:06 +0100 Subject: [PATCH 06/86] variants are wrapped under invisible dict with key `variants` --- .../host_settings/system_blender_schema.json | 30 ++++++----- .../system_celaction_schema.json | 36 ++++++------- .../host_settings/system_djv_schema.json | 16 +++--- .../host_settings/system_fusion_schema.json | 30 ++++++----- .../host_settings/system_harmony_schema.json | 54 +++++++++---------- .../host_settings/system_houdini_schema.json | 30 ++++++----- .../host_settings/system_maya_schema.json | 42 +++++++-------- .../host_settings/system_nuke_template.json | 48 ++++++++--------- .../system_photoshop_schema.json | 18 ++++--- .../host_settings/system_resolve_schema.json | 18 ++++--- .../host_settings/system_shell_schema.json | 42 +++++++-------- .../host_settings/system_unreal_schema.json | 18 ++++--- 12 files changed, 199 insertions(+), 183 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json index 8600d8de8a6..83c85b626d2 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json @@ -16,20 +16,22 @@ "env_group_key": "blender" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "2.90", - "host_name": "blender" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "2.83", - "host_name": "blender" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "2.90", + "host_name": "blender" + }, + { + "host_version": "2.83", + "host_name": "blender" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json index 36addab00d1..74541361e7e 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json @@ -16,24 +16,24 @@ "env_group_key": "celaction" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "Local", - "host_name": "celation", - "multiplatform": false, - "multipath_executables": false - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "Publish", - "host_name": "celation", - "multiplatform": false, - "multipath_executables": false - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [{ + "host_version": "Local", + "host_name": "celation", + "multiplatform": false, + "multipath_executables": false + }, + { + "host_version": "Publish", + "host_name": "celation", + "multiplatform": false, + "multipath_executables": false + }] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json index 704b13443d2..5445c80ad8a 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json @@ -16,12 +16,16 @@ "env_group_key": "djvview" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "1.1", - "host_name": "djvview" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": { + "host_version": "1.1", + "host_name": "djvview" + } + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json index b3dc79ef978..c52ac9bf486 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json @@ -16,20 +16,22 @@ "env_group_key": "fusion" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "16", - "host_name": "fusion" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "9", - "host_name": "fusion" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "16", + "host_name": "fusion" + }, + { + "host_version": "9", + "host_name": "fusion" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json index 10cb929fc4f..250b375bdef 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json @@ -16,36 +16,30 @@ "env_group_key": "harmony" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "20", - "host_name": "harmony" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "19", - "host_name": "harmony" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "18", - "host_name": "harmony" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "17", - "host_name": "harmony" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "20", + "host_name": "harmony" + }, + { + "host_version": "19", + "host_name": "harmony" + }, + { + "host_version": "18", + "host_name": "harmony" + }, + { + "host_version": "17", + "host_name": "harmony" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json index 36c6d9fcb2e..0752b06e4bd 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json @@ -16,20 +16,22 @@ "env_group_key": "houdini" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "18", - "host_name": "houdini" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "17", - "host_name": "houdini" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "18", + "host_name": "houdini" + }, + { + "host_version": "17", + "host_name": "houdini" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json index 710b62a9cc1..3e1b394d435 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json @@ -16,28 +16,26 @@ "env_group_key": "maya" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "2020", - "host_name": "maya" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "2019", - "host_name": "maya" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "2018", - "host_name": "maya" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "2020", + "host_name": "maya" + }, + { + "host_version": "2019", + "host_name": "maya" + }, + { + "host_version": "2018", + "host_name": "maya" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json index 22b2e0c4df6..7b1fc3bb54e 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json @@ -16,31 +16,29 @@ "env_group_key": "{nuke_type}" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "12.0", - "host_name": "{nuke_type}", - "multipath_executables": true - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "11.3", - "host_name": "{nuke_type}", - "multipath_executables": true - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "11.2", - "host_name": "{nuke_type}", - "multipath_executables": true - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "12.0", + "host_name": "{nuke_type}", + "multipath_executables": true + }, + { + "host_version": "11.3", + "host_name": "{nuke_type}", + "multipath_executables": true + }, + { + "host_version": "11.2", + "host_name": "{nuke_type}", + "multipath_executables": true + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json index c1062045e73..dde3ef8a444 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json @@ -16,12 +16,18 @@ "env_group_key": "photoshop" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "2020", - "host_name": "photoshop" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "2020", + "host_name": "photoshop" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json index 364be8208d8..f5a52d2832b 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json @@ -16,12 +16,18 @@ "env_group_key": "resolve" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "16", - "host_name": "resolve" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "16", + "host_name": "resolve" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json index 22955abc469..b677746eb2a 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json @@ -16,28 +16,26 @@ "env_group_key": "shell" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "Python 3.7", - "host_name": "python" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "Python 2.7", - "host_name": "python" - } - }, - { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "Terminal", - "host_name": "terminal" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "Python 3.7", + "host_name": "python" + }, + { + "host_version": "Python 2.7", + "host_name": "python" + }, + { + "host_version": "Terminal", + "host_name": "terminal" + } + ] + }] } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json index e0408f9a36a..42417476540 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json @@ -16,12 +16,18 @@ "env_group_key": "unreal" }, { - "type": "schema_template", - "name": "system_host_template", - "template_data": { - "host_version": "4.24", - "host_name": "unreal" - } + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "system_host_template", + "template_data": [ + { + "host_version": "4.24", + "host_name": "unreal" + } + ] + }] } ] } From adc8caa6bf718891c88f67dc7e25856279932f95 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:52:43 +0100 Subject: [PATCH 07/86] hosts schema also contain label (host label) only for developers --- .../host_settings/system_blender_schema.json | 7 +++++++ .../host_settings/system_celaction_schema.json | 7 +++++++ .../system_schema/host_settings/system_djv_schema.json | 7 +++++++ .../host_settings/system_fusion_schema.json | 7 +++++++ .../host_settings/system_harmony_schema.json | 7 +++++++ .../host_settings/system_houdini_schema.json | 7 +++++++ .../host_settings/system_maya_schema.json | 10 +++++++++- .../host_settings/system_nuke_template.json | 7 +++++++ .../host_settings/system_photoshop_schema.json | 7 +++++++ .../host_settings/system_resolve_schema.json | 7 +++++++ .../host_settings/system_unreal_schema.json | 7 +++++++ 11 files changed, 79 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json index 83c85b626d2..961789c1ec1 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json index 74541361e7e..6359ef9ba00 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json index 5445c80ad8a..b51a78a3dc6 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json index c52ac9bf486..24560142837 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json index 250b375bdef..312c77f65ed 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json index 0752b06e4bd..5a5755ac1cd 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json index 3e1b394d435..83dc836298b 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json @@ -4,11 +4,19 @@ "label": "Autodesk Maya", "collapsable": true, "checkbox_key": "enabled", - "children": [{ + "children": [ + { "type": "boolean", "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json index 7b1fc3bb54e..e90a88adbb1 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json index dde3ef8a444..953c5740669 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json index f5a52d2832b..668327e3562 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json index 42417476540..f81d31e3dae 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json @@ -9,6 +9,13 @@ "key": "enabled", "label": "Enabled" }, + { + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] + }, { "key": "environment", "label": "Environment", From 3d96589ca9f6f96f12d911a3e1d32aab89f01177 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:53:50 +0100 Subject: [PATCH 08/86] renamed `system_host_template` to `template_host_variant` --- .../system_schema/host_settings/system_blender_schema.json | 2 +- .../system_schema/host_settings/system_celaction_schema.json | 2 +- .../system_schema/host_settings/system_djv_schema.json | 2 +- .../system_schema/host_settings/system_fusion_schema.json | 2 +- .../system_schema/host_settings/system_harmony_schema.json | 2 +- .../system_schema/host_settings/system_houdini_schema.json | 2 +- .../system_schema/host_settings/system_maya_schema.json | 2 +- .../system_schema/host_settings/system_nuke_template.json | 2 +- .../system_schema/host_settings/system_photoshop_schema.json | 2 +- .../system_schema/host_settings/system_resolve_schema.json | 2 +- .../system_schema/host_settings/system_shell_schema.json | 2 +- .../system_schema/host_settings/system_unreal_schema.json | 2 +- .../{system_host_template.json => template_host_variant.json} | 0 13 files changed, 12 insertions(+), 12 deletions(-) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_host_template.json => template_host_variant.json} (100%) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json index 961789c1ec1..e92449f9aaf 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "2.90", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json index 6359ef9ba00..9261f7f7093 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [{ "host_version": "Local", "host_name": "celation", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json index b51a78a3dc6..86457db8643 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": { "host_version": "1.1", "host_name": "djvview" diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json index 24560142837..c76edae49c6 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "16", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json index 312c77f65ed..3736d6a28dc 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "20", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json index 5a5755ac1cd..30b1cbc5140 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "18", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json index 83dc836298b..ebdc2c9e846 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json @@ -28,7 +28,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "2020", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json index e90a88adbb1..0ec54a0baba 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "12.0", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json index 953c5740669..f3975771d50 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "2020", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json index 668327e3562..6360852331f 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "16", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json index b677746eb2a..bbc86c53eeb 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json @@ -20,7 +20,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "Python 3.7", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json index f81d31e3dae..79c9494cc35 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json @@ -27,7 +27,7 @@ "key": "variants", "children": [{ "type": "schema_template", - "name": "system_host_template", + "name": "template_host_variant", "template_data": [ { "host_version": "4.24", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_variant.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_host_template.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_variant.json From ce0b2703cb472aa8062cc6539edcb2e60ebefe50 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 15:56:14 +0100 Subject: [PATCH 09/86] renamed hosts schemas and templates files --- .../{system_blender_schema.json => schema_blender.json} | 0 .../{system_celaction_schema.json => schema_celaction.json} | 0 .../host_settings/{system_djv_schema.json => schema_djv.json} | 0 .../{system_fusion_schema.json => schema_fusion.json} | 0 .../{system_harmony_schema.json => schema_harmony.json} | 0 .../{system_houdini_schema.json => schema_houdini.json} | 0 .../host_settings/{system_maya_schema.json => schema_maya.json} | 0 .../{system_photoshop_schema.json => schema_photoshop.json} | 0 .../{system_resolve_schema.json => schema_resolve.json} | 0 .../host_settings/{system_shell_schema.json => schema_shell.json} | 0 .../{system_unreal_schema.json => schema_unreal.json} | 0 .../{system_nuke_template.json => template_nuke.json} | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_blender_schema.json => schema_blender.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_celaction_schema.json => schema_celaction.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_djv_schema.json => schema_djv.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_fusion_schema.json => schema_fusion.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_harmony_schema.json => schema_harmony.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_houdini_schema.json => schema_houdini.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_maya_schema.json => schema_maya.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_photoshop_schema.json => schema_photoshop.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_resolve_schema.json => schema_resolve.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_shell_schema.json => schema_shell.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_unreal_schema.json => schema_unreal.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/host_settings/{system_nuke_template.json => template_nuke.json} (100%) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_blender.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_blender_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_blender.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_celaction.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_celaction_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_celaction.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_djv.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_djv_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_djv.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_fusion.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_fusion_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_fusion.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_harmony.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_harmony_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_harmony.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_houdini.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_houdini_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_houdini.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_maya.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_maya_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_maya.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_photoshop.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_photoshop_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_photoshop.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_resolve.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_resolve_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_resolve.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_shell.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_shell_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_shell.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_unreal.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_unreal_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_unreal.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_nuke.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/host_settings/system_nuke_template.json rename to pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_nuke.json From 73295c303adb8e220e482676bf8b1a98c298f028 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 16:02:18 +0100 Subject: [PATCH 10/86] renamed all system settings schemas and templates kept examples with `example` at the start --- ...i_schema.json => schema_applications.json} | 30 +++++++++---------- ...al_gui_schema.json => schema_general.json} | 0 ...ystem_gui_schema.json => schema_main.json} | 8 ++--- ...es_gui_schema.json => schema_modules.json} | 0 ...ools_gui_schema.json => schema_tools.json} | 0 pype/tools/settings/settings/widgets/base.py | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) rename pype/tools/settings/settings/gui_schemas/system_schema/{1_applications_gui_schema.json => schema_applications.json} (68%) rename pype/tools/settings/settings/gui_schemas/system_schema/{1_general_gui_schema.json => schema_general.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/{0_system_gui_schema.json => schema_main.json} (67%) rename pype/tools/settings/settings/gui_schemas/system_schema/{1_modules_gui_schema.json => schema_modules.json} (100%) rename pype/tools/settings/settings/gui_schemas/system_schema/{1_tools_gui_schema.json => schema_tools.json} (100%) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/1_applications_gui_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json similarity index 68% rename from pype/tools/settings/settings/gui_schemas/system_schema/1_applications_gui_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json index 6b73fc3f8c1..fdb3257f5e8 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/1_applications_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json @@ -6,11 +6,11 @@ "is_file": true, "children": [{ "type": "schema", - "name": "system_maya_schema" + "name": "schema_maya" }, { "type": "schema_template", - "name": "system_nuke_template", + "name": "template_nuke", "template_data": { "nuke_type": "nuke", "nuke_label": "Nuke" @@ -18,7 +18,7 @@ }, { "type": "schema_template", - "name": "system_nuke_template", + "name": "template_nuke", "template_data": { "nuke_type": "nukex", "nuke_label": "Nuke X" @@ -26,7 +26,7 @@ }, { "type": "schema_template", - "name": "system_nuke_template", + "name": "template_nuke", "template_data": { "nuke_type": "nukestudio", "nuke_label": "Nuke Studio" @@ -34,7 +34,7 @@ }, { "type": "schema_template", - "name": "system_nuke_template", + "name": "template_nuke", "template_data": { "nuke_type": "hiero", "nuke_label": "Hiero" @@ -42,43 +42,43 @@ }, { "type": "schema", - "name": "system_fusion_schema" + "name": "schema_fusion" }, { "type": "schema", - "name": "system_resolve_schema" + "name": "schema_resolve" }, { "type": "schema", - "name": "system_houdini_schema" + "name": "schema_houdini" }, { "type": "schema", - "name": "system_blender_schema" + "name": "schema_blender" }, { "type": "schema", - "name": "system_harmony_schema" + "name": "schema_harmony" }, { "type": "schema", - "name": "system_photoshop_schema" + "name": "schema_photoshop" }, { "type": "schema", - "name": "system_celaction_schema" + "name": "schema_celaction" }, { "type": "schema", - "name": "system_unreal_schema" + "name": "schema_unreal" }, { "type": "schema", - "name": "system_shell_schema" + "name": "schema_shell" }, { "type": "schema", - "name": "system_djv_schema" + "name": "schema_djv" } ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/1_general_gui_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_general.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/1_general_gui_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/schema_general.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/0_system_gui_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json similarity index 67% rename from pype/tools/settings/settings/gui_schemas/system_schema/0_system_gui_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json index eb7d707f6a1..8e8798149cd 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/0_system_gui_schema.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_main.json @@ -7,16 +7,16 @@ "key": "global", "children": [{ "type": "schema", - "name": "1_general_gui_schema" + "name": "schema_general" },{ "type": "schema", - "name": "1_modules_gui_schema" + "name": "schema_modules" }, { "type": "schema", - "name": "1_applications_gui_schema" + "name": "schema_applications" }, { "type": "schema", - "name": "1_tools_gui_schema" + "name": "schema_tools" }] } ] diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/1_modules_gui_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/1_modules_gui_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/schema_modules.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/1_tools_gui_schema.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_tools.json similarity index 100% rename from pype/tools/settings/settings/gui_schemas/system_schema/1_tools_gui_schema.json rename to pype/tools/settings/settings/gui_schemas/system_schema/schema_tools.json diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index ea082ef4b02..9ceb192a154 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -144,7 +144,7 @@ def reset(self): self.content_layout.removeWidget(widget) widget.deleteLater() - self.schema = lib.gui_schema("system_schema", "0_system_gui_schema") + self.schema = lib.gui_schema("system_schema", "schema_main") self.keys = self.schema.get("keys", []) self.add_children_gui(self.schema) self._update_values() From 51912c4f909c8f2b8888efc31d24846d41e4913b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 16:13:08 +0100 Subject: [PATCH 11/86] updated added new template for hosts unchangeable values --- .../host_settings/template_host_unchangables.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json new file mode 100644 index 00000000000..521d22d1c79 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json @@ -0,0 +1,14 @@ +[{ + "type": "text", + "key": "label", + "label": "Label", + "placeholder": "Host label (without any version)", + "roles": ["developer"] +}, +{ + "type": "text", + "key": "icon", + "label": "Icon", + "placeholder": "Host icon path template", + "roles": ["developer"] +}] From 8d1cdbfd14283f8ad258ce7976331187d8454c91 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 16:13:36 +0100 Subject: [PATCH 12/86] added unchangable template to hosts --- .../system_schema/host_settings/schema_blender.json | 7 ++----- .../system_schema/host_settings/schema_celaction.json | 7 ++----- .../system_schema/host_settings/schema_djv.json | 7 ++----- .../system_schema/host_settings/schema_fusion.json | 7 ++----- .../system_schema/host_settings/schema_harmony.json | 7 ++----- .../system_schema/host_settings/schema_houdini.json | 7 ++----- .../system_schema/host_settings/schema_maya.json | 7 ++----- .../system_schema/host_settings/schema_photoshop.json | 7 ++----- .../system_schema/host_settings/schema_resolve.json | 7 ++----- .../system_schema/host_settings/schema_unreal.json | 7 ++----- .../system_schema/host_settings/template_host_variant.json | 7 +++++++ .../system_schema/host_settings/template_nuke.json | 7 ++----- 12 files changed, 29 insertions(+), 55 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 e92449f9aaf..28adf347b12 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 9261f7f7093..ac872267d87 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 86457db8643..987bb382db1 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 c76edae49c6..b2ce01b7db0 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 3736d6a28dc..80bc9864f00 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 30b1cbc5140..ace2a3106c3 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 ebdc2c9e846..eb055863b8d 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 @@ -11,11 +11,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 f3975771d50..f86f6ff0554 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 6360852331f..e6d0a6a84d0 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", 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 79c9494cc35..6c2778f4709 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_variant.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_variant.json index 85053d0bef1..ce3a75e8714 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_variant.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_variant.json @@ -31,6 +31,13 @@ "placeholder": "Only \"Label\" is used if not filled.", "roles": ["developer"] }, + { + "type": "text", + "key": "icon", + "label": "Icon", + "placeholder": "Host icon path template. Used from host if not filled.", + "roles": ["developer"] + }, { "type": "path-widget", "key": "executables", 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 0ec54a0baba..e8a8fc37996 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 @@ -10,11 +10,8 @@ "label": "Enabled" }, { - "type": "text", - "key": "label", - "label": "Label", - "placeholder": "Host label (without any version)", - "roles": ["developer"] + "type": "schema_template", + "name": "template_host_unchangables" }, { "key": "environment", From bb280f7ba5406e026108390de89856bdfea61439 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 16:15:01 +0100 Subject: [PATCH 13/86] initial commit of application manager --- pype/lib/_applications.py | 500 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 500 insertions(+) create mode 100644 pype/lib/_applications.py diff --git a/pype/lib/_applications.py b/pype/lib/_applications.py new file mode 100644 index 00000000000..9b355641fcd --- /dev/null +++ b/pype/lib/_applications.py @@ -0,0 +1,500 @@ +### DEBUG PART +import os +import sys + +pype_setup_path = "C:/Users/iLLiCiT/Desktop/Prace/pype-setup" +virtual_env_path = "C:/Users/Public/pype_env2" + +environ_paths_str = os.environ.get("PYTHONPATH") or "" +environ_paths = environ_paths_str.split(os.pathsep) +environ_paths.extend([ + pype_setup_path, + f"{virtual_env_path}/Lib/site-packages", + f"{pype_setup_path}/vendor/python/acre", + f"{pype_setup_path}/repos/pyblish-base", + f"{pype_setup_path}/repos/pyblish-lite", + f"{pype_setup_path}/repos/pype", + f"{pype_setup_path}/repos/avalon-core", + f"{pype_setup_path}/repos/pype/pype/tools" +]) + +new_env_environ_paths = [] +for path in environ_paths: + path = os.path.normpath(path) + if path not in new_env_environ_paths: + new_env_environ_paths.append(path) + +envs = { + "AVALON_CONFIG": "pype", + "AVALON_DEBUG": "1", + "AVALON_DB_DATA": f"{pype_setup_path}/../mongo_db_data", + "AVALON_SCHEMA": f"{pype_setup_path}/repos/pype/schema", + "AVALON_LABEL": "Pype", + "AVALON_TIMEOUT": "1000", + "AVALON_THUMBNAIL_ROOT": "D:/thumbnails", + "AVALON_MONGO": "mongodb://localhost:2707", + "AVALON_DB": "avalon", + "PYPE_STUDIO_NAME": "Pype", + "PYPE_PROJECT_CONFIGS": "", + "PYPE_CONFIG": f"{pype_setup_path}/repos/pype-config", + "PYPE_SETUP_PATH": pype_setup_path, + "VIRTUAL_ENV": virtual_env_path, + "PYTHONPATH": os.pathsep.join(new_env_environ_paths) +} + +for key, value in envs.items(): + os.environ[key] = value +for path in environ_paths: + if path not in sys.path: + sys.path.append(path) +### DEBUG PART ENDED + +import os +import re +import copy +import subprocess +import logging +import types +import platform +import getpass + +import six +import acre + +from pype.api import ( + system_settings, + environments, + Anatomy +) +import avalon.api + + +class ApplicationNotFound(Exception): + pass + + +class ApplictionExecutableNotFound(Exception): + pass + + +class ApplicationLaunchFailed(Exception): + pass + + +def env_value_to_bool(env_key=None, value=None, default=False): + if value is None and env_key is None: + return default + + if value is None: + value = os.environ.get(env_key) + + if value is not None: + value = str(value).lower() + if value in ("true", "yes", "1"): + return True + elif value in ("false", "no", "0"): + return False + return default + + +def compile_list_of_regexes(in_list): + """Convert strings in entered list to compiled regex objects.""" + regexes = list() + if not in_list: + return regexes + + for item in in_list: + if item: + try: + regexes.append(re.compile(item)) + except TypeError: + print(( + "Invalid type \"{}\" value \"{}\"." + " Expected string based object. Skipping." + ).format(str(type(item)), str(item))) + return regexes + + +class Application: + def __init__(self, host_name, app_name, app_data, manager): + self.manager = manager + + self.host_name = host_name + self.app_name = app_name + self.label = app_data["label"] + self.variant_label = app_data["variant_label"] or None + + self.enabled = app_data["enabled"] + + executables = app_data["executables"] + if isinstance(executables, dict): + executables = executables.get(platform.system().lower()) or [] + + if not isinstance(executables, list): + executables = [executables] + self.executables = executables + + @property + def full_label(self): + if self.variant_label: + return "{} {}".format(self.label, self.variant_label) + return str(self.label) + + def find_executable(self): + for executable_path in self.executables: + if os.path.exists(executable_path): + return executable_path + return None + + def launch(self, project_name, asset_name, task_name): + self.manager.launch(self.app_name, project_name, asset_name, task_name) + + +class ApplicationLaunchContext: + def __init__( + self, application, executable, + project_name, asset_name, task_name, + **data + ): + # Application object + self.application = application + + # Logger + logger_name = "{}-{}".format(self.__class__.__name__, self.app_name) + self.log = logging.getLogger(logger_name) + + # Context + self.project_name = project_name + self.asset_name = asset_name + self.task_name = task_name + + self.executable = executable + + self.data = dict(data) + + passed_env = self.data.pop("env", None) + if passed_env is None: + env = os.environ + else: + env = passed_env + self.env = copy.deepcopy(env) + + # subprocess.Popen launch arguments (first argument in constructor) + self.launch_args = [executable] + # subprocess.Popen keyword arguments + self.kwargs = { + "env": self.env + } + + if platform.system().lower() == "windows": + # Detach new process from currently running process on Windows + flags = ( + subprocess.CREATE_NEW_PROCESS_GROUP + | subprocess.DETACHED_PROCESS + ) + self.kwargs["creationflags"] = flags + + self.process = None + + self.dbcon = avalon.api.AvalonMongoDB() + self.dbcon.Session["AVALON_PROJECT"] = project_name + self.dbcon.install() + + self.prepare_global_data() + self.prepare_host_environments() + self.prepare_context_environments() + + def __del__(self): + # At least uninstall + self.dbcon.uninstall() + + @property + def app_name(self): + return self.application.app_name + + @property + def host_name(self): + return self.application.host_name + + def launch(self): + args = self.clear_launch_args(self.launch_args) + self.process = subprocess.Popen(args, **self.kwargs) + return self.process + + @staticmethod + def clear_launch_args(args): + while True: + all_cleared = True + new_args = [] + for arg in args: + if isinstance(arg, (list, tuple, set)): + all_cleared = False + for _arg in arg: + new_args.append(_arg) + else: + new_args.append(args) + args = new_args + + if all_cleared: + break + return args + + def prepare_global_data(self): + # Mongo documents + project_doc = self.dbcon.find_one({"type": "project"}) + asset_doc = self.dbcon.find_one({ + "type": "asset", + "name": self.asset_name + }) + + self.data["project_doc"] = project_doc + self.data["asset_doc"] = asset_doc + + # Anatomy + self.data["anatomy"] = Anatomy(self.project_name) + + def prepare_host_environments(self): + passed_env = self.data.pop("env", None) + if passed_env is None: + env = os.environ + else: + env = passed_env + env = copy.deepcopy(env) + + settings_env = self.data.get("settings_env") + if settings_env is None: + settings_env = environments() + self.data["settings_env"] = settings_env + + # keys = (self.app_name, self.host_name) + keys = ("global", "avalon", self.app_name, self.host_name) + env_values = {} + for env_key in keys: + _env_values = settings_env.get(env_key) + if not _env_values: + continue + + tool_env = acre.parse(_env_values) + env_values = acre.append(env_values, tool_env) + + final_env = acre.merge(acre.compute(env_values), current_env=self.env) + self.env.update(final_env) + + def prepare_context_environments(self): + # Context environments + workdir_data = self.prepare_workdir_data() + self.data["workdir_data"] = workdir_data + + hierarchy = workdir_data["hierarchy"] + anatomy = self.data["anatomy"] + + try: + anatomy_filled = anatomy.format(workdir_data) + workdir = os.path.normpath(anatomy_filled["work"]["folder"]) + if not os.path.exists(workdir): + os.makedirs(workdir) + + except Exception as exc: + raise ApplicationLaunchFailed( + "Error in anatomy.format: {}".format(str(exc)) + ) + + context_env = { + "AVALON_PROJECT": self.project_name, + "AVALON_ASSET": self.asset_name, + "AVALON_TASK": self.task_name, + "AVALON_APP": self.host_name, + "AVALON_APP_NAME": self.app_name, + "AVALON_HIERARCHY": hierarchy, + "AVALON_WORKDIR": workdir + } + self.env.update(context_env) + + self.prepare_last_workfile(workdir) + + def prepare_workdir_data(self): + project_doc = self.data["project_doc"] + asset_doc = self.data["asset_doc"] + + hierarchy = "/".join(asset_doc["data"]["parents"]) + + data = { + "project": { + "name": project_doc["name"], + "code": project_doc["data"].get("code") + }, + "task": self.task_name, + "asset": self.asset_name, + "app": self.host_name, + "hierarchy": hierarchy + } + return data + + def prepare_last_workfile(self, workdir): + workdir_data = copy.deepcopy(self.data["workdir_data"]) + start_last_workfile = self.should_start_last_workfile( + self.project_name, self.host_name, self.task_name + ) + self.data["start_last_workfile"] = start_last_workfile + + # Store boolean as "0"(False) or "1"(True) + self.env["AVALON_OPEN_LAST_WORKFILE"] = ( + str(int(bool(start_last_workfile))) + ) + + last_workfile_path = "" + extensions = avalon.api.HOST_WORKFILE_EXTENSIONS.get(self.host_name) + if extensions: + anatomy = self.data["anatomy"] + # Find last workfile + file_template = anatomy.templates["work"]["file"] + workdir_data.update({ + "version": 1, + "user": os.environ.get("PYPE_USERNAME") or getpass.getuser(), + "ext": extensions[0] + }) + + last_workfile_path = avalon.api.last_workfile( + workdir, file_template, workdir_data, extensions, True + ) + + self.env["AVALON_LAST_WORKFILE"] = last_workfile_path + self.data["last_workfile_path"] = last_workfile_path + + def should_start_last_workfile(self, project_name, host_name, task_name): + """Define if host should start last version workfile if possible. + + Default output is `False`. Can be overriden with environment variable + `AVALON_OPEN_LAST_WORKFILE`, valid values without case sensitivity are + `"0", "1", "true", "false", "yes", "no"`. + + Args: + project_name (str): Name of project. + host_name (str): Name of host which is launched. In avalon's + application context it's value stored in app definition under + key `"application_dir"`. Is not case sensitive. + task_name (str): Name of task which is used for launching the host. + Task name is not case sensitive. + + Returns: + bool: True if host should start workfile. + + """ + default_output = env_value_to_bool( + "AVALON_OPEN_LAST_WORKFILE", default=False + ) + # TODO convert to settings + try: + from pype.api import config + startup_presets = ( + config.get_presets(project_name) + .get("tools", {}) + .get("workfiles", {}) + .get("last_workfile_on_startup") + ) + except Exception: + startup_presets = None + self.log.warning("Couldn't load pype's presets", exc_info=True) + + if not startup_presets: + return default_output + + host_name_lowered = host_name.lower() + task_name_lowered = task_name.lower() + + max_points = 2 + matching_points = -1 + matching_item = None + for item in startup_presets: + hosts = item.get("hosts") or tuple() + tasks = item.get("tasks") or tuple() + + hosts_lowered = tuple(_host_name.lower() for _host_name in hosts) + # Skip item if has set hosts and current host is not in + if hosts_lowered and host_name_lowered not in hosts_lowered: + continue + + tasks_lowered = tuple(_task_name.lower() for _task_name in tasks) + # Skip item if has set tasks and current task is not in + if tasks_lowered: + task_match = False + for task_regex in compile_list_of_regexes(tasks_lowered): + if re.match(task_regex, task_name_lowered): + task_match = True + break + + if not task_match: + continue + + points = int(bool(hosts_lowered)) + int(bool(tasks_lowered)) + if points > matching_points: + matching_item = item + matching_points = points + + if matching_points == max_points: + break + + if matching_item is not None: + output = matching_item.get("enabled") + if output is None: + output = default_output + return output + return default_output + + +class ApplicationManager: + def __init__(self): + self.log = logging.getLogger(self.__class__.__name__) + + self.applications = {} + + self.refresh() + + def refresh(self): + settings = system_settings() + hosts_definitions = settings["global"]["applications"] + for host_name, variant_definitions in hosts_definitions.items(): + enabled = variant_definitions["enabled"] + label = variant_definitions.get("label") or host_name + variants = variant_definitions.get("variants") or {} + for app_name, app_data in variants.items(): + # If host is disabled then disable all variants + if not enabled: + app_data["enabled"] = enabled + + # Pass label from host definition + if not app_data.get("label"): + app_data["label"] = label + + if app_name in self.applications: + raise AssertionError(( + "BUG: Duplicated application name in settings \"{}\"" + ).format(app_name)) + self.applications[app_name] = Application( + host_name, app_name, app_data, self + ) + + def launch(self, app_name, project_name, asset_name, task_name): + app = self.applications.get(app_name) + if not app: + raise ApplicationNotFound(app_name) + + executable = app.find_executable() + if not executable: + raise ApplictionExecutableNotFound(app) + + context = ApplicationLaunchContext( + app, executable, project_name, asset_name, task_name + ) + # TODO pass context through launch hooks + return context.launch() + + +if __name__ == "__main__": + man = ApplicationManager() + + __app_name = "maya_2020" + __project_name = "kuba_each_case" + __asset_name = "Alpaca_01" + __task_name = "animation" + man.launch(__app_name, __project_name, __asset_name, __task_name) From b24be8f4e47a69cf572e2318da16f1e64fb6af41 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 16:26:22 +0100 Subject: [PATCH 14/86] applications manager works with expect icons --- pype/lib/_applications.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pype/lib/_applications.py b/pype/lib/_applications.py index 9b355641fcd..719c2b8f6a9 100644 --- a/pype/lib/_applications.py +++ b/pype/lib/_applications.py @@ -123,6 +123,7 @@ def __init__(self, host_name, app_name, app_data, manager): self.app_name = app_name self.label = app_data["label"] self.variant_label = app_data["variant_label"] or None + self.icon = app_data["icon"] or None self.enabled = app_data["enabled"] @@ -446,6 +447,9 @@ class ApplicationManager: def __init__(self): self.log = logging.getLogger(self.__class__.__name__) + self.registered_hook_paths = [] + self.registered_hooks = [] + self.applications = {} self.refresh() @@ -457,6 +461,7 @@ def refresh(self): enabled = variant_definitions["enabled"] label = variant_definitions.get("label") or host_name variants = variant_definitions.get("variants") or {} + icon = variant_definitions.get("icon") for app_name, app_data in variants.items(): # If host is disabled then disable all variants if not enabled: @@ -466,6 +471,9 @@ def refresh(self): if not app_data.get("label"): app_data["label"] = label + if not app_data.get("icon"): + app_data["icon"] = icon + if app_name in self.applications: raise AssertionError(( "BUG: Duplicated application name in settings \"{}\"" From 4dd9d72a5f48629d053d4a0eb2c606ff0edce63c Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 17:15:16 +0100 Subject: [PATCH 15/86] moved the code to applications.py --- pype/lib/_applications.py | 508 -------------------------------------- pype/lib/applications.py | 439 +++++++++++++++++++++++++++++++- 2 files changed, 437 insertions(+), 510 deletions(-) delete mode 100644 pype/lib/_applications.py diff --git a/pype/lib/_applications.py b/pype/lib/_applications.py deleted file mode 100644 index 719c2b8f6a9..00000000000 --- a/pype/lib/_applications.py +++ /dev/null @@ -1,508 +0,0 @@ -### DEBUG PART -import os -import sys - -pype_setup_path = "C:/Users/iLLiCiT/Desktop/Prace/pype-setup" -virtual_env_path = "C:/Users/Public/pype_env2" - -environ_paths_str = os.environ.get("PYTHONPATH") or "" -environ_paths = environ_paths_str.split(os.pathsep) -environ_paths.extend([ - pype_setup_path, - f"{virtual_env_path}/Lib/site-packages", - f"{pype_setup_path}/vendor/python/acre", - f"{pype_setup_path}/repos/pyblish-base", - f"{pype_setup_path}/repos/pyblish-lite", - f"{pype_setup_path}/repos/pype", - f"{pype_setup_path}/repos/avalon-core", - f"{pype_setup_path}/repos/pype/pype/tools" -]) - -new_env_environ_paths = [] -for path in environ_paths: - path = os.path.normpath(path) - if path not in new_env_environ_paths: - new_env_environ_paths.append(path) - -envs = { - "AVALON_CONFIG": "pype", - "AVALON_DEBUG": "1", - "AVALON_DB_DATA": f"{pype_setup_path}/../mongo_db_data", - "AVALON_SCHEMA": f"{pype_setup_path}/repos/pype/schema", - "AVALON_LABEL": "Pype", - "AVALON_TIMEOUT": "1000", - "AVALON_THUMBNAIL_ROOT": "D:/thumbnails", - "AVALON_MONGO": "mongodb://localhost:2707", - "AVALON_DB": "avalon", - "PYPE_STUDIO_NAME": "Pype", - "PYPE_PROJECT_CONFIGS": "", - "PYPE_CONFIG": f"{pype_setup_path}/repos/pype-config", - "PYPE_SETUP_PATH": pype_setup_path, - "VIRTUAL_ENV": virtual_env_path, - "PYTHONPATH": os.pathsep.join(new_env_environ_paths) -} - -for key, value in envs.items(): - os.environ[key] = value -for path in environ_paths: - if path not in sys.path: - sys.path.append(path) -### DEBUG PART ENDED - -import os -import re -import copy -import subprocess -import logging -import types -import platform -import getpass - -import six -import acre - -from pype.api import ( - system_settings, - environments, - Anatomy -) -import avalon.api - - -class ApplicationNotFound(Exception): - pass - - -class ApplictionExecutableNotFound(Exception): - pass - - -class ApplicationLaunchFailed(Exception): - pass - - -def env_value_to_bool(env_key=None, value=None, default=False): - if value is None and env_key is None: - return default - - if value is None: - value = os.environ.get(env_key) - - if value is not None: - value = str(value).lower() - if value in ("true", "yes", "1"): - return True - elif value in ("false", "no", "0"): - return False - return default - - -def compile_list_of_regexes(in_list): - """Convert strings in entered list to compiled regex objects.""" - regexes = list() - if not in_list: - return regexes - - for item in in_list: - if item: - try: - regexes.append(re.compile(item)) - except TypeError: - print(( - "Invalid type \"{}\" value \"{}\"." - " Expected string based object. Skipping." - ).format(str(type(item)), str(item))) - return regexes - - -class Application: - def __init__(self, host_name, app_name, app_data, manager): - self.manager = manager - - self.host_name = host_name - self.app_name = app_name - self.label = app_data["label"] - self.variant_label = app_data["variant_label"] or None - self.icon = app_data["icon"] or None - - self.enabled = app_data["enabled"] - - executables = app_data["executables"] - if isinstance(executables, dict): - executables = executables.get(platform.system().lower()) or [] - - if not isinstance(executables, list): - executables = [executables] - self.executables = executables - - @property - def full_label(self): - if self.variant_label: - return "{} {}".format(self.label, self.variant_label) - return str(self.label) - - def find_executable(self): - for executable_path in self.executables: - if os.path.exists(executable_path): - return executable_path - return None - - def launch(self, project_name, asset_name, task_name): - self.manager.launch(self.app_name, project_name, asset_name, task_name) - - -class ApplicationLaunchContext: - def __init__( - self, application, executable, - project_name, asset_name, task_name, - **data - ): - # Application object - self.application = application - - # Logger - logger_name = "{}-{}".format(self.__class__.__name__, self.app_name) - self.log = logging.getLogger(logger_name) - - # Context - self.project_name = project_name - self.asset_name = asset_name - self.task_name = task_name - - self.executable = executable - - self.data = dict(data) - - passed_env = self.data.pop("env", None) - if passed_env is None: - env = os.environ - else: - env = passed_env - self.env = copy.deepcopy(env) - - # subprocess.Popen launch arguments (first argument in constructor) - self.launch_args = [executable] - # subprocess.Popen keyword arguments - self.kwargs = { - "env": self.env - } - - if platform.system().lower() == "windows": - # Detach new process from currently running process on Windows - flags = ( - subprocess.CREATE_NEW_PROCESS_GROUP - | subprocess.DETACHED_PROCESS - ) - self.kwargs["creationflags"] = flags - - self.process = None - - self.dbcon = avalon.api.AvalonMongoDB() - self.dbcon.Session["AVALON_PROJECT"] = project_name - self.dbcon.install() - - self.prepare_global_data() - self.prepare_host_environments() - self.prepare_context_environments() - - def __del__(self): - # At least uninstall - self.dbcon.uninstall() - - @property - def app_name(self): - return self.application.app_name - - @property - def host_name(self): - return self.application.host_name - - def launch(self): - args = self.clear_launch_args(self.launch_args) - self.process = subprocess.Popen(args, **self.kwargs) - return self.process - - @staticmethod - def clear_launch_args(args): - while True: - all_cleared = True - new_args = [] - for arg in args: - if isinstance(arg, (list, tuple, set)): - all_cleared = False - for _arg in arg: - new_args.append(_arg) - else: - new_args.append(args) - args = new_args - - if all_cleared: - break - return args - - def prepare_global_data(self): - # Mongo documents - project_doc = self.dbcon.find_one({"type": "project"}) - asset_doc = self.dbcon.find_one({ - "type": "asset", - "name": self.asset_name - }) - - self.data["project_doc"] = project_doc - self.data["asset_doc"] = asset_doc - - # Anatomy - self.data["anatomy"] = Anatomy(self.project_name) - - def prepare_host_environments(self): - passed_env = self.data.pop("env", None) - if passed_env is None: - env = os.environ - else: - env = passed_env - env = copy.deepcopy(env) - - settings_env = self.data.get("settings_env") - if settings_env is None: - settings_env = environments() - self.data["settings_env"] = settings_env - - # keys = (self.app_name, self.host_name) - keys = ("global", "avalon", self.app_name, self.host_name) - env_values = {} - for env_key in keys: - _env_values = settings_env.get(env_key) - if not _env_values: - continue - - tool_env = acre.parse(_env_values) - env_values = acre.append(env_values, tool_env) - - final_env = acre.merge(acre.compute(env_values), current_env=self.env) - self.env.update(final_env) - - def prepare_context_environments(self): - # Context environments - workdir_data = self.prepare_workdir_data() - self.data["workdir_data"] = workdir_data - - hierarchy = workdir_data["hierarchy"] - anatomy = self.data["anatomy"] - - try: - anatomy_filled = anatomy.format(workdir_data) - workdir = os.path.normpath(anatomy_filled["work"]["folder"]) - if not os.path.exists(workdir): - os.makedirs(workdir) - - except Exception as exc: - raise ApplicationLaunchFailed( - "Error in anatomy.format: {}".format(str(exc)) - ) - - context_env = { - "AVALON_PROJECT": self.project_name, - "AVALON_ASSET": self.asset_name, - "AVALON_TASK": self.task_name, - "AVALON_APP": self.host_name, - "AVALON_APP_NAME": self.app_name, - "AVALON_HIERARCHY": hierarchy, - "AVALON_WORKDIR": workdir - } - self.env.update(context_env) - - self.prepare_last_workfile(workdir) - - def prepare_workdir_data(self): - project_doc = self.data["project_doc"] - asset_doc = self.data["asset_doc"] - - hierarchy = "/".join(asset_doc["data"]["parents"]) - - data = { - "project": { - "name": project_doc["name"], - "code": project_doc["data"].get("code") - }, - "task": self.task_name, - "asset": self.asset_name, - "app": self.host_name, - "hierarchy": hierarchy - } - return data - - def prepare_last_workfile(self, workdir): - workdir_data = copy.deepcopy(self.data["workdir_data"]) - start_last_workfile = self.should_start_last_workfile( - self.project_name, self.host_name, self.task_name - ) - self.data["start_last_workfile"] = start_last_workfile - - # Store boolean as "0"(False) or "1"(True) - self.env["AVALON_OPEN_LAST_WORKFILE"] = ( - str(int(bool(start_last_workfile))) - ) - - last_workfile_path = "" - extensions = avalon.api.HOST_WORKFILE_EXTENSIONS.get(self.host_name) - if extensions: - anatomy = self.data["anatomy"] - # Find last workfile - file_template = anatomy.templates["work"]["file"] - workdir_data.update({ - "version": 1, - "user": os.environ.get("PYPE_USERNAME") or getpass.getuser(), - "ext": extensions[0] - }) - - last_workfile_path = avalon.api.last_workfile( - workdir, file_template, workdir_data, extensions, True - ) - - self.env["AVALON_LAST_WORKFILE"] = last_workfile_path - self.data["last_workfile_path"] = last_workfile_path - - def should_start_last_workfile(self, project_name, host_name, task_name): - """Define if host should start last version workfile if possible. - - Default output is `False`. Can be overriden with environment variable - `AVALON_OPEN_LAST_WORKFILE`, valid values without case sensitivity are - `"0", "1", "true", "false", "yes", "no"`. - - Args: - project_name (str): Name of project. - host_name (str): Name of host which is launched. In avalon's - application context it's value stored in app definition under - key `"application_dir"`. Is not case sensitive. - task_name (str): Name of task which is used for launching the host. - Task name is not case sensitive. - - Returns: - bool: True if host should start workfile. - - """ - default_output = env_value_to_bool( - "AVALON_OPEN_LAST_WORKFILE", default=False - ) - # TODO convert to settings - try: - from pype.api import config - startup_presets = ( - config.get_presets(project_name) - .get("tools", {}) - .get("workfiles", {}) - .get("last_workfile_on_startup") - ) - except Exception: - startup_presets = None - self.log.warning("Couldn't load pype's presets", exc_info=True) - - if not startup_presets: - return default_output - - host_name_lowered = host_name.lower() - task_name_lowered = task_name.lower() - - max_points = 2 - matching_points = -1 - matching_item = None - for item in startup_presets: - hosts = item.get("hosts") or tuple() - tasks = item.get("tasks") or tuple() - - hosts_lowered = tuple(_host_name.lower() for _host_name in hosts) - # Skip item if has set hosts and current host is not in - if hosts_lowered and host_name_lowered not in hosts_lowered: - continue - - tasks_lowered = tuple(_task_name.lower() for _task_name in tasks) - # Skip item if has set tasks and current task is not in - if tasks_lowered: - task_match = False - for task_regex in compile_list_of_regexes(tasks_lowered): - if re.match(task_regex, task_name_lowered): - task_match = True - break - - if not task_match: - continue - - points = int(bool(hosts_lowered)) + int(bool(tasks_lowered)) - if points > matching_points: - matching_item = item - matching_points = points - - if matching_points == max_points: - break - - if matching_item is not None: - output = matching_item.get("enabled") - if output is None: - output = default_output - return output - return default_output - - -class ApplicationManager: - def __init__(self): - self.log = logging.getLogger(self.__class__.__name__) - - self.registered_hook_paths = [] - self.registered_hooks = [] - - self.applications = {} - - self.refresh() - - def refresh(self): - settings = system_settings() - hosts_definitions = settings["global"]["applications"] - for host_name, variant_definitions in hosts_definitions.items(): - enabled = variant_definitions["enabled"] - label = variant_definitions.get("label") or host_name - variants = variant_definitions.get("variants") or {} - icon = variant_definitions.get("icon") - for app_name, app_data in variants.items(): - # If host is disabled then disable all variants - if not enabled: - app_data["enabled"] = enabled - - # Pass label from host definition - if not app_data.get("label"): - app_data["label"] = label - - if not app_data.get("icon"): - app_data["icon"] = icon - - if app_name in self.applications: - raise AssertionError(( - "BUG: Duplicated application name in settings \"{}\"" - ).format(app_name)) - self.applications[app_name] = Application( - host_name, app_name, app_data, self - ) - - def launch(self, app_name, project_name, asset_name, task_name): - app = self.applications.get(app_name) - if not app: - raise ApplicationNotFound(app_name) - - executable = app.find_executable() - if not executable: - raise ApplictionExecutableNotFound(app) - - context = ApplicationLaunchContext( - app, executable, project_name, asset_name, task_name - ) - # TODO pass context through launch hooks - return context.launch() - - -if __name__ == "__main__": - man = ApplicationManager() - - __app_name = "maya_2020" - __project_name = "kuba_each_case" - __asset_name = "Alpaca_01" - __task_name = "animation" - man.launch(__app_name, __project_name, __asset_name, __task_name) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 159840ceb5d..bec6dff31f7 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -1,26 +1,78 @@ import os import sys +import re +import types import getpass import copy import platform import logging import subprocess +import six import acre import avalon.lib - -from ..api import Anatomy, Logger, config +import avalon.api + +from ..api import ( + Anatomy, + Logger, + config, + system_settings, + environments +) from .hooks import execute_hook from .deprecated import get_avalon_database log = logging.getLogger(__name__) +class ApplicationNotFound(Exception): + pass + + +class ApplictionExecutableNotFound(Exception): + pass + + class ApplicationLaunchFailed(Exception): pass +def env_value_to_bool(env_key=None, value=None, default=False): + if value is None and env_key is None: + return default + + if value is None: + value = os.environ.get(env_key) + + if value is not None: + value = str(value).lower() + if value in ("true", "yes", "1"): + return True + elif value in ("false", "no", "0"): + return False + return default + + +def compile_list_of_regexes(in_list): + """Convert strings in entered list to compiled regex objects.""" + regexes = list() + if not in_list: + return regexes + + for item in in_list: + if item: + try: + regexes.append(re.compile(item)) + except TypeError: + print(( + "Invalid type \"{}\" value \"{}\"." + " Expected string based object. Skipping." + ).format(str(type(item)), str(item))) + return regexes + + def launch_application(project_name, asset_name, task_name, app_name): """Launch host application with filling required environments. @@ -455,3 +507,386 @@ def _subprocess(*args, **kwargs): raise RuntimeError(exc_msg) return full_output + + +class ApplicationManager: + def __init__(self): + self.log = logging.getLogger(self.__class__.__name__) + + self.registered_hook_paths = [] + self.registered_hooks = [] + + self.applications = {} + + self.refresh() + + def refresh(self): + settings = system_settings() + hosts_definitions = settings["global"]["applications"] + for host_name, variant_definitions in hosts_definitions.items(): + enabled = variant_definitions["enabled"] + label = variant_definitions.get("label") or host_name + variants = variant_definitions.get("variants") or {} + icon = variant_definitions.get("icon") + for app_name, app_data in variants.items(): + # If host is disabled then disable all variants + if not enabled: + app_data["enabled"] = enabled + + # Pass label from host definition + if not app_data.get("label"): + app_data["label"] = label + + if not app_data.get("icon"): + app_data["icon"] = icon + + if app_name in self.applications: + raise AssertionError(( + "BUG: Duplicated application name in settings \"{}\"" + ).format(app_name)) + self.applications[app_name] = Application( + host_name, app_name, app_data, self + ) + + def launch(self, app_name, project_name, asset_name, task_name): + app = self.applications.get(app_name) + if not app: + raise ApplicationNotFound(app_name) + + executable = app.find_executable() + if not executable: + raise ApplictionExecutableNotFound(app) + + context = ApplicationLaunchContext( + app, executable, project_name, asset_name, task_name + ) + # TODO pass context through launch hooks + return context.launch() + + +class Application: + def __init__(self, host_name, app_name, app_data, manager): + self.manager = manager + + self.host_name = host_name + self.app_name = app_name + self.label = app_data["label"] + self.variant_label = app_data["variant_label"] or None + self.icon = app_data["icon"] or None + + self.enabled = app_data["enabled"] + + executables = app_data["executables"] + if isinstance(executables, dict): + executables = executables.get(platform.system().lower()) or [] + + if not isinstance(executables, list): + executables = [executables] + self.executables = executables + + @property + def full_label(self): + if self.variant_label: + return "{} {}".format(self.label, self.variant_label) + return str(self.label) + + def find_executable(self): + for executable_path in self.executables: + if os.path.exists(executable_path): + return executable_path + return None + + def launch(self, project_name, asset_name, task_name): + self.manager.launch(self.app_name, project_name, asset_name, task_name) + + +class ApplicationLaunchContext: + def __init__( + self, application, executable, + project_name, asset_name, task_name, + **data + ): + # Application object + self.application = application + + # Logger + logger_name = "{}-{}".format(self.__class__.__name__, self.app_name) + self.log = logging.getLogger(logger_name) + + # Context + self.project_name = project_name + self.asset_name = asset_name + self.task_name = task_name + + self.executable = executable + + self.data = dict(data) + + passed_env = self.data.pop("env", None) + if passed_env is None: + env = os.environ + else: + env = passed_env + self.env = copy.deepcopy(env) + + # subprocess.Popen launch arguments (first argument in constructor) + self.launch_args = [executable] + # subprocess.Popen keyword arguments + self.kwargs = { + "env": self.env + } + + if platform.system().lower() == "windows": + # Detach new process from currently running process on Windows + flags = ( + subprocess.CREATE_NEW_PROCESS_GROUP + | subprocess.DETACHED_PROCESS + ) + self.kwargs["creationflags"] = flags + + self.process = None + + self.dbcon = avalon.api.AvalonMongoDB() + self.dbcon.Session["AVALON_PROJECT"] = project_name + self.dbcon.install() + + self.prepare_global_data() + self.prepare_host_environments() + self.prepare_context_environments() + + def __del__(self): + # At least uninstall + self.dbcon.uninstall() + + @property + def app_name(self): + return self.application.app_name + + @property + def host_name(self): + return self.application.host_name + + def launch(self): + args = self.clear_launch_args(self.launch_args) + self.process = subprocess.Popen(args, **self.kwargs) + return self.process + + @staticmethod + def clear_launch_args(args): + while True: + all_cleared = True + new_args = [] + for arg in args: + if isinstance(arg, (list, tuple, set)): + all_cleared = False + for _arg in arg: + new_args.append(_arg) + else: + new_args.append(args) + args = new_args + + if all_cleared: + break + return args + + def prepare_global_data(self): + # Mongo documents + project_doc = self.dbcon.find_one({"type": "project"}) + asset_doc = self.dbcon.find_one({ + "type": "asset", + "name": self.asset_name + }) + + self.data["project_doc"] = project_doc + self.data["asset_doc"] = asset_doc + + # Anatomy + self.data["anatomy"] = Anatomy(self.project_name) + + def prepare_host_environments(self): + passed_env = self.data.pop("env", None) + if passed_env is None: + env = os.environ + else: + env = passed_env + env = copy.deepcopy(env) + + settings_env = self.data.get("settings_env") + if settings_env is None: + settings_env = environments() + self.data["settings_env"] = settings_env + + # keys = (self.app_name, self.host_name) + keys = ("global", "avalon", self.app_name, self.host_name) + env_values = {} + for env_key in keys: + _env_values = settings_env.get(env_key) + if not _env_values: + continue + + tool_env = acre.parse(_env_values) + env_values = acre.append(env_values, tool_env) + + final_env = acre.merge(acre.compute(env_values), current_env=self.env) + self.env.update(final_env) + + def prepare_context_environments(self): + # Context environments + workdir_data = self.prepare_workdir_data() + self.data["workdir_data"] = workdir_data + + hierarchy = workdir_data["hierarchy"] + anatomy = self.data["anatomy"] + + try: + anatomy_filled = anatomy.format(workdir_data) + workdir = os.path.normpath(anatomy_filled["work"]["folder"]) + if not os.path.exists(workdir): + os.makedirs(workdir) + + except Exception as exc: + raise ApplicationLaunchFailed( + "Error in anatomy.format: {}".format(str(exc)) + ) + + context_env = { + "AVALON_PROJECT": self.project_name, + "AVALON_ASSET": self.asset_name, + "AVALON_TASK": self.task_name, + "AVALON_APP": self.host_name, + "AVALON_APP_NAME": self.app_name, + "AVALON_HIERARCHY": hierarchy, + "AVALON_WORKDIR": workdir + } + self.env.update(context_env) + + self.prepare_last_workfile(workdir) + + def prepare_workdir_data(self): + project_doc = self.data["project_doc"] + asset_doc = self.data["asset_doc"] + + hierarchy = "/".join(asset_doc["data"]["parents"]) + + data = { + "project": { + "name": project_doc["name"], + "code": project_doc["data"].get("code") + }, + "task": self.task_name, + "asset": self.asset_name, + "app": self.host_name, + "hierarchy": hierarchy + } + return data + + def prepare_last_workfile(self, workdir): + workdir_data = copy.deepcopy(self.data["workdir_data"]) + start_last_workfile = self.should_start_last_workfile( + self.project_name, self.host_name, self.task_name + ) + self.data["start_last_workfile"] = start_last_workfile + + # Store boolean as "0"(False) or "1"(True) + self.env["AVALON_OPEN_LAST_WORKFILE"] = ( + str(int(bool(start_last_workfile))) + ) + + last_workfile_path = "" + extensions = avalon.api.HOST_WORKFILE_EXTENSIONS.get(self.host_name) + if extensions: + anatomy = self.data["anatomy"] + # Find last workfile + file_template = anatomy.templates["work"]["file"] + workdir_data.update({ + "version": 1, + "user": os.environ.get("PYPE_USERNAME") or getpass.getuser(), + "ext": extensions[0] + }) + + last_workfile_path = avalon.api.last_workfile( + workdir, file_template, workdir_data, extensions, True + ) + + self.env["AVALON_LAST_WORKFILE"] = last_workfile_path + self.data["last_workfile_path"] = last_workfile_path + + def should_start_last_workfile(self, project_name, host_name, task_name): + """Define if host should start last version workfile if possible. + + Default output is `False`. Can be overriden with environment variable + `AVALON_OPEN_LAST_WORKFILE`, valid values without case sensitivity are + `"0", "1", "true", "false", "yes", "no"`. + + Args: + project_name (str): Name of project. + host_name (str): Name of host which is launched. In avalon's + application context it's value stored in app definition under + key `"application_dir"`. Is not case sensitive. + task_name (str): Name of task which is used for launching the host. + Task name is not case sensitive. + + Returns: + bool: True if host should start workfile. + + """ + default_output = env_value_to_bool( + "AVALON_OPEN_LAST_WORKFILE", default=False + ) + # TODO convert to settings + try: + from pype.api import config + startup_presets = ( + config.get_presets(project_name) + .get("tools", {}) + .get("workfiles", {}) + .get("last_workfile_on_startup") + ) + except Exception: + startup_presets = None + self.log.warning("Couldn't load pype's presets", exc_info=True) + + if not startup_presets: + return default_output + + host_name_lowered = host_name.lower() + task_name_lowered = task_name.lower() + + max_points = 2 + matching_points = -1 + matching_item = None + for item in startup_presets: + hosts = item.get("hosts") or tuple() + tasks = item.get("tasks") or tuple() + + hosts_lowered = tuple(_host_name.lower() for _host_name in hosts) + # Skip item if has set hosts and current host is not in + if hosts_lowered and host_name_lowered not in hosts_lowered: + continue + + tasks_lowered = tuple(_task_name.lower() for _task_name in tasks) + # Skip item if has set tasks and current task is not in + if tasks_lowered: + task_match = False + for task_regex in compile_list_of_regexes(tasks_lowered): + if re.match(task_regex, task_name_lowered): + task_match = True + break + + if not task_match: + continue + + points = int(bool(hosts_lowered)) + int(bool(tasks_lowered)) + if points > matching_points: + matching_item = item + matching_points = points + + if matching_points == max_points: + break + + if matching_item is not None: + output = matching_item.get("enabled") + if output is None: + output = default_output + return output + return default_output From f8532c464d26813137842a5f6bba421d3607b34b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 17:21:16 +0100 Subject: [PATCH 16/86] added new defaults of settings --- .../system_settings/global/applications.json | 1077 +++++++++-------- 1 file changed, 548 insertions(+), 529 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index b85ec5369c5..294aebcda95 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -1,6 +1,8 @@ { "maya": { "enabled": true, + "label": "Autodesk Maya", + "icon": "{}/app_icons/maya.png", "environment": { "__environment_keys__": { "maya": [ @@ -26,105 +28,63 @@ "LC_ALL": "C", "PYPE_LOG_NO_COLORS": "Yes" }, - "maya_2020": { - "enabled": true, - "maya_executables": { - "windows": [ - "C:\\Program Files\\Autodesk\\maya2020\\bin\\maya.exe" - ], - "darwin": [ - "" - ], - "linux": [ - "/usr/autodesk/maya2020/bin/maya" - ] - }, - "environment": { - "__environment_keys__": { - "maya_2020": [ - "MAYA_VERSION", - "MAYA_LOCATION", - "DYLD_LIBRARY_PATH" - ] - }, - "MAYA_VERSION": "2020", - "MAYA_LOCATION": { - "darwin": "/Applications/Autodesk/maya{MAYA_VERSION}/Maya.app/Contents", - "linux": "/usr/autodesk/maya{MAYA_VERSION}", - "windows": "C:/Program Files/Autodesk/Maya{MAYA_VERSION}" - }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MAYA_LOCATION}/MacOS" - } - } - }, - "maya_2019": { - "enabled": true, - "maya_executables": { - "windows": [ - "C:\\Program Files\\Autodesk\\maya2019\\bin\\maya.exe" - ], - "darwin": [ - "" - ], - "linux": [ - "/usr/autodesk/maya2019/bin/maya" - ] - }, - "environment": { - "__environment_keys__": { - "maya_2019": [ - "MAYA_VERSION", - "MAYA_LOCATION", - "DYLD_LIBRARY_PATH" - ] - }, - "MAYA_VERSION": "2019", - "MAYA_LOCATION": { - "darwin": "/Applications/Autodesk/maya{MAYA_VERSION}/Maya.app/Contents", - "linux": "/usr/autodesk/maya{MAYA_VERSION}", - "windows": "C:/Program Files/Autodesk/Maya{MAYA_VERSION}" + "variants": { + "maya_2020": { + "enabled": true, + "label": "", + "variant_label": "2020", + "icon": "", + "executables": { + "windows": [ + "C:\\Program Files\\Autodesk\\Maya2020\\bin\\maya.exe" + ], + "darwin": [], + "linux": [] }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MAYA_LOCATION}/MacOS" - } - } - }, - "maya_2018": { - "enabled": true, - "maya_executables": { - "windows": [ - "C:\\Program Files\\Autodesk\\maya2018\\bin\\maya.exe" - ], - "darwin": [ - "" - ], - "linux": [ - "/usr/autodesk/maya2018/bin/maya" - ] - }, - "environment": { - "__environment_keys__": { - "maya_2018": [ - "MAYA_VERSION", - "MAYA_LOCATION", - "DYLD_LIBRARY_PATH" - ] + "environment": { + "__environment_keys__": { + "maya_2020": [] + } + } + }, + "maya_2019": { + "enabled": true, + "label": "", + "variant_label": "2019", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] }, - "MAYA_VERSION": "2018", - "MAYA_LOCATION": { - "darwin": "/Applications/Autodesk/maya{MAYA_VERSION}/Maya.app/Contents", - "linux": "/usr/autodesk/maya{MAYA_VERSION}", - "windows": "C:/Program Files/Autodesk/Maya{MAYA_VERSION}" + "environment": { + "__environment_keys__": { + "maya_2019": [] + } + } + }, + "maya_2018": { + "enabled": true, + "label": "", + "variant_label": "2018", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MAYA_LOCATION}/MacOS" + "environment": { + "__environment_keys__": { + "maya_2018": [] + } } } } }, "nuke": { "enabled": true, + "label": "Nuke", + "icon": "{}/app_icons/nuke.png", "environment": { "__environment_keys__": { "nuke": [ @@ -141,66 +101,61 @@ "windows": "C:/Program Files (x86)/QuickTime/QTSystem/;{PATH}" } }, - "nuke_12.0": { - "enabled": true, - "nuke_executables": { - "windows": [ - "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke12.0v1/Nuke12.0" - ] - }, - "environment": { - "__environment_keys__": { - "nuke_12.0": [] - } - } - }, - "nuke_11.3": { - "enabled": true, - "nuke_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.3v4\\Nuke11.3.exe", - "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.3v4/Nuke11.3", - "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe" - ] - }, - "environment": { - "__environment_keys__": { - "nuke_11.3": [] - } - } - }, - "nuke_11.2": { - "enabled": true, - "nuke_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.2v3\\Nuke11.2.exe", - "C:\\Program Files\\Nuke11.2v2\\Nuke11.2.exe", - "C:\\Program Files\\Nuke11.2v1\\Nuke11.2.exe" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.2v3/Nuke11.2", - "/usr/local/Nuke11.2v2/Nuke11.2", - "/usr/local/Nuke11.2v1/Nuke11.2" - ] - }, - "environment": { - "__environment_keys__": { - "nuke_11.2": [] + "variants": { + "nuke_12.0": { + "enabled": true, + "label": "", + "variant_label": "12.0", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nuke_12.0": [] + } + } + }, + "nuke_11.3": { + "enabled": true, + "label": "", + "variant_label": "11.3", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nuke_11.3": [] + } + } + }, + "nuke_11.2": { + "enabled": true, + "label": "", + "variant_label": "11.2", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nuke_11.2": [] + } } } } }, "nukex": { "enabled": true, + "label": "Nuke X", + "icon": "{}/app_icons/nuke.png", "environment": { "__environment_keys__": { "nukex": [ @@ -217,60 +172,61 @@ "windows": "C:/Program Files (x86)/QuickTime/QTSystem/;{PATH}" } }, - "nukex_12.0": { - "enabled": true, - "nukex_executables": { - "windows": [ - "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe -nukex" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke12.0v1/Nuke12.0 -nukex" - ] - }, - "environment": { - "__environment_keys__": { - "nukex_12.0": [] - } - } - }, - "nukex_11.3": { - "enabled": true, - "nukex_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe -nukex" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.3v1/Nuke11.3 -nukex" - ] - }, - "environment": { - "__environment_keys__": { - "nukex_11.3": [] - } - } - }, - "nukex_11.2": { - "enabled": true, - "nukex_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.2v3\\Nuke11.2.exe -nukex" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.2v3/Nuke11.2 -nukex" - ] - }, - "environment": { - "__environment_keys__": { - "nukex_11.2": [] + "variants": { + "nukex_12.0": { + "enabled": true, + "label": "", + "variant_label": "12.0", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nukex_12.0": [] + } + } + }, + "nukex_11.3": { + "enabled": true, + "label": "", + "variant_label": "11.3", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nukex_11.3": [] + } + } + }, + "nukex_11.2": { + "enabled": true, + "label": "", + "variant_label": "11.2", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nukex_11.2": [] + } } } } }, "nukestudio": { "enabled": true, + "label": "Nuke Studio", + "icon": "{}/app_icons/nuke.png", "environment": { "__environment_keys__": { "nukestudio": [ @@ -291,60 +247,61 @@ "TAG_ASSETBUILD_STARTUP": "0", "PYPE_LOG_NO_COLORS": "True" }, - "nukestudio_12.0": { - "enabled": true, - "nukestudio_executables": { - "windows": [ - "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe -studio" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke12.0v1/Nuke12.0 -studio" - ] - }, - "environment": { - "__environment_keys__": { - "nukestudio_12.0": [] - } - } - }, - "nukestudio_11.3": { - "enabled": true, - "nukestudio_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe -studio" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.3v1/Nuke11.3 -studio" - ] - }, - "environment": { - "__environment_keys__": { - "nukestudio_11.3": [] - } - } - }, - "nukestudio_11.2": { - "enabled": true, - "nukestudio_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.2v3\\Nuke11.2.exe -studio" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.2v3/Nuke11.2 -studio" - ] - }, - "environment": { - "__environment_keys__": { - "nukestudio_11.2": [] + "variants": { + "nukestudio_12.0": { + "enabled": true, + "label": "", + "variant_label": "12.0", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nukestudio_12.0": [] + } + } + }, + "nukestudio_11.3": { + "enabled": true, + "label": "", + "variant_label": "11.3", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nukestudio_11.3": [] + } + } + }, + "nukestudio_11.2": { + "enabled": true, + "label": "", + "variant_label": "11.2", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "nukestudio_11.2": [] + } } } } }, "hiero": { "enabled": true, + "label": "Hiero", + "icon": "{}/app_icons/hiero.png", "environment": { "__environment_keys__": { "hiero": [ @@ -365,90 +322,105 @@ "TAG_ASSETBUILD_STARTUP": "0", "PYPE_LOG_NO_COLORS": "True" }, - "hiero_12.0": { - "enabled": true, - "hiero_executables": { - "windows": [ - "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe -hiero" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke12.0v1/Nuke12.0 -hiero" - ] - }, - "environment": { - "__environment_keys__": { - "hiero_12.0": [] - } - } - }, - "hiero_11.3": { - "enabled": true, - "hiero_executables": { - "windows": [ - "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe -hiero" - ], - "darwin": [], - "linux": [ - "/usr/local/Nuke11.3v1/Nuke11.3 -hiero" - ] - }, - "environment": { - "__environment_keys__": { - "hiero_11.3": [] - } - } - }, - "hiero_11.2": { - "enabled": true, - "hiero_executables": { - "windows": [], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "hiero_11.2": [] + "variants": { + "hiero_12.0": { + "enabled": true, + "label": "", + "variant_label": "12.0", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "hiero_12.0": [] + } + } + }, + "hiero_11.3": { + "enabled": true, + "label": "", + "variant_label": "11.3", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "hiero_11.3": [] + } + } + }, + "hiero_11.2": { + "enabled": true, + "label": "", + "variant_label": "11.2", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "hiero_11.2": [] + } } } } }, "fusion": { "enabled": true, + "label": "BlackMagic Fusion", + "icon": "{}/app_icons/fusion.png", "environment": { "__environment_keys__": { "fusion": [] } }, - "fusion_16": { - "enabled": true, - "fusion_executables": { - "windows": [], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "fusion_16": [] - } - } - }, - "fusion_9": { - "enabled": true, - "fusion_executables": { - "windows": [], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "fusion_9": [] + "variants": { + "fusion_16": { + "enabled": true, + "label": "", + "variant_label": "16", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "fusion_16": [] + } + } + }, + "fusion_9": { + "enabled": true, + "label": "", + "variant_label": "9", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "fusion_9": [] + } } } } }, "resolve": { "enabled": true, + "label": "Blackmagic DaVinci Resolve", + "icon": "{}/app_icons/resolve.png", "environment": { "__environment_keys__": { "resolve": [ @@ -503,24 +475,29 @@ "PYPE_LOG_NO_COLORS": "True", "RESOLVE_DEV": "True" }, - "resolve_16": { - "enabled": true, - "resolve_executables": { - "windows": [ - "C:/Program Files/Blackmagic Design/DaVinci Resolve/Resolve.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "resolve_16": [] + "variants": { + "resolve_16": { + "enabled": true, + "label": "", + "variant_label": "16", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "resolve_16": [] + } } } } }, "houdini": { "enabled": true, + "label": "SideFX Houdini", + "icon": "{}/app_icons/houdini.png", "environment": { "__environment_keys__": { "houdini": [ @@ -539,39 +516,45 @@ "windows": "{PYPE_MODULE_ROOT}/setup/houdini;&" } }, - "houdini_18": { - "enabled": true, - "houdini_executables": { - "windows": [ - "C:\\Program Files\\Side Effects Software\\Houdini 18.0.287\\bin\\houdini.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "houdini_18": [] - } - } - }, - "houdini_17": { - "enabled": true, - "houdini_executables": { - "windows": [ - "C:\\Program Files\\Side Effects Software\\Houdini 17.0.459\\bin\\houdini.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "houdini_17": [] + "variants": { + "houdini_18": { + "enabled": true, + "label": "", + "variant_label": "18", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "houdini_18": [] + } + } + }, + "houdini_17": { + "enabled": true, + "label": "", + "variant_label": "17", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "houdini_17": [] + } } } } }, "blender": { "enabled": true, + "label": "Blender", + "icon": "{}/app_icons/blender.png", "environment": { "__environment_keys__": { "blender": [ @@ -587,39 +570,45 @@ ], "CREATE_NEW_CONSOLE": "yes" }, - "blender_2.90": { - "enabled": true, - "blender_executables": { - "windows": [ - "C:\\Program Files\\Blender Foundation\\Blender 2.90\\blender.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "blender_2.90": [] - } - } - }, - "blender_2.83": { - "enabled": true, - "blender_executables": { - "windows": [ - "C:\\Program Files\\Blender Foundation\\Blender 2.83\\blender.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "blender_2.83": [] + "variants": { + "blender_2.90": { + "enabled": true, + "label": "", + "variant_label": "2.90", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "blender_2.90": [] + } + } + }, + "blender_2.83": { + "enabled": true, + "label": "", + "variant_label": "2.83", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "blender_2.83": [] + } } } } }, "harmony": { "enabled": true, + "label": "Toon Boom Harmony", + "icon": "{}/app_icons/harmony.png", "environment": { "__environment_keys__": { "harmony": [ @@ -630,69 +619,77 @@ "AVALON_HARMONY_WORKFILES_ON_LAUNCH": "1", "PYBLISH_GUI_ALWAYS_EXEC": "1" }, - "harmony_20": { - "enabled": true, - "harmony_executables": { - "windows": [ - "C:/Program Files (x86)/Toon Boom Animation/Toon Boom Harmony 20 Premium/win64/bin/HarmonyPremium.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "harmony_20": [] - } - } - }, - "harmony_19": { - "enabled": true, - "harmony_executables": { - "windows": [ - "C:/Program Files (x86)/Toon Boom Animation/Toon Boom Harmony 19 Premium/win64/bin/HarmonyPremium.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "harmony_19": [] - } - } - }, - "harmony_18": { - "enabled": true, - "harmony_executables": { - "windows": [ - "C:/Program Files (x86)/Toon Boom Animation/Toon Boom Harmony 17 Premium/win64/bin/HarmonyPremium.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "harmony_18": [] - } - } - }, - "harmony_17": { - "enabled": true, - "harmony_executables": { - "windows": [ - "C:/Program Files (x86)/Toon Boom Animation/Toon Boom Harmony 17 Premium/win64/bin/HarmonyPremium.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "harmony_17": [] + "variants": { + "harmony_20": { + "enabled": true, + "label": "", + "variant_label": "20", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "harmony_20": [] + } + } + }, + "harmony_19": { + "enabled": true, + "label": "", + "variant_label": "19", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "harmony_19": [] + } + } + }, + "harmony_18": { + "enabled": true, + "label": "", + "variant_label": "18", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "harmony_18": [] + } + } + }, + "harmony_17": { + "enabled": true, + "label": "", + "variant_label": "17", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "harmony_17": [] + } } } } }, "photoshop": { "enabled": true, + "label": "Adobe Photoshop", + "icon": "{}/app_icons/photoshop.png", "environment": { "__environment_keys__": { "photoshop": [ @@ -709,24 +706,29 @@ "WEBSOCKET_URL": "ws://localhost:8099/ws/", "WORKFILES_SAVE_AS": "Yes" }, - "photoshop_2020": { - "enabled": true, - "photoshop_executables": { - "windows": [ - "C:\\Program Files\\Adobe\\Adobe Photoshop 2020\\Photoshop.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "photoshop_2020": [] + "variants": { + "photoshop_2020": { + "enabled": true, + "label": "", + "variant_label": "2020", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "photoshop_2020": [] + } } } } }, "celaction": { "enabled": true, + "label": "CelAction 2D", + "icon": "app_icons/celaction.png", "environment": { "__environment_keys__": { "celaction": [ @@ -735,44 +737,57 @@ }, "CELACTION_TEMPLATE": "{PYPE_MODULE_ROOT}/pype/hosts/celaction/celaction_template_scene.scn" }, - "celation_Local": { - "enabled": true, - "celation_executables": "C:\\Program Files (x86)\\CelAction\\CelAction2D.exe", - "environment": { - "__environment_keys__": { - "celation_Local": [] - } - } - }, - "celation_Publish": { - "enabled": true, - "celation_executables": "%PYPE_PYTHON_EXE% \"%PYPE_MODULE_ROOT%\\pype\\hosts\\celaction\\cli.py\" %*", - "environment": { - "__environment_keys__": { - "celation_Publish": [] + "variants": { + "celation_Local": { + "enabled": true, + "label": "", + "variant_label": "Local", + "icon": "{}/app_icons/celaction_local.png", + "executables": "", + "environment": { + "__environment_keys__": { + "celation_Local": [] + } + } + }, + "celation_Publish": { + "enabled": true, + "label": "", + "variant_label": "Pulblish", + "icon": "", + "executables": "", + "environment": { + "__environment_keys__": { + "celation_Publish": [] + } } } } }, "unreal": { "enabled": true, + "label": "Unreal Editor", + "icon": "{}/app_icons/ue4.png'", "environment": { "__environment_keys__": { "unreal": [] } }, - "unreal_4.24": { - "enabled": true, - "unreal_executables": { - "windows": [ - "%AVALON_CURRENT_UNREAL_ENGINE%\\Engine\\Binaries\\Win64\\UE4Editor.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "unreal_4.24": [] + "variants": { + "unreal_4.24": { + "enabled": true, + "label": "", + "variant_label": "4.24", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "unreal_4.24": [] + } } } } @@ -784,77 +799,81 @@ "shell": [] } }, - "python_Python 3.7": { - "enabled": true, - "python_executables": { - "windows": [ - "C:\\Python37\\python.exe", - "C:\\Python36\\python.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "python_Python 3.7": [] - } - } - }, - "python_Python 2.7": { - "enabled": true, - "python_executables": { - "windows": [ - "C:\\Python27\\python.exe" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "python_Python 2.7": [] - } - } - }, - "terminal_Terminal": { - "enabled": true, - "terminal_executables": { - "windows": [ - "start cmd" - ], - "darwin": [], - "linux": [] - }, - "environment": { - "__environment_keys__": { - "terminal_Terminal": [] + "variants": { + "python_Python 3.7": { + "enabled": true, + "label": "Python", + "variant_label": "3.7", + "icon": "{}/app_icons/python.png", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "python_Python 3.7": [] + } + } + }, + "python_Python 2.7": { + "enabled": true, + "label": "Python", + "variant_label": "2.7", + "icon": "{}/app_icons/python.png", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "python_Python 2.7": [] + } + } + }, + "terminal_Terminal": { + "enabled": true, + "label": "Terminal", + "variant_label": "", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "terminal_Terminal": [] + } } } } }, "djvview": { "enabled": true, + "label": "DJV View", + "icon": "{}/app_icons/djvView.png", "environment": { "__environment_keys__": { "djvview": [] } }, - "djvview_1.1": { - "enabled": true, - "djvview_executables": { - "windows": [ - "C:/Program Files/djv-1.1.0-Windows-64/bin/djv_view.exe", - "C:/Program Files/DJV/bin/djv_view.exe" - ], - "darwin": [ - "Application/DJV.app/Contents/MacOS/DJV" - ], - "linux": [ - "usr/local/djv/djv_view" - ] - }, - "environment": { - "__environment_keys__": { - "djvview_1.1": [] + "variants": { + "djvview_1.1": { + "enabled": true, + "label": "", + "variant_label": "1.1", + "icon": "", + "executables": { + "windows": [], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "djvview_1.1": [] + } } } } From a0d5a41dd09616691015db56d68a8727482c8cde Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 17:24:53 +0100 Subject: [PATCH 17/86] corrent keys are used with tools --- pype/lib/applications.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index bec6dff31f7..d8d9a563621 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -716,10 +716,17 @@ def prepare_host_environments(self): settings_env = environments() self.data["settings_env"] = settings_env - # keys = (self.app_name, self.host_name) - keys = ("global", "avalon", self.app_name, self.host_name) + # Keys for getting environments + env_keys = [self.app_name, self.host_name] + asset_doc = self.data["asset_doc"] + + # Add tools environments + for key in asset_doc["data"].get("tools_env") or []: + if key not in env_keys: + env_keys.append(key) + env_values = {} - for env_key in keys: + for env_key in env_keys: _env_values = settings_env.get(env_key) if not _env_values: continue From b2a3a8d89fb3bbfdcccafa8fa7857351683149c5 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 18:48:24 +0100 Subject: [PATCH 18/86] added few docstrings --- pype/lib/applications.py | 55 ++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index d8d9a563621..fcc571eeea5 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -565,16 +565,31 @@ def launch(self, app_name, project_name, asset_name, task_name): class Application: - def __init__(self, host_name, app_name, app_data, manager): - self.manager = manager + """Hold information about application. + + Object by itself does nothing special. + Args: + host_name (str): Host name or rather name of host implementation. + e.g. "maya", "nuke", "photoshop", etc. + app_name (str): Specific version (or variant) of host. + e.g. "maya2020", "nuke11.3", etc. + app_data (dict): Data for the version containing information about + executables, label, variant label, icon or if is enabled. + Only required key is `executables`. + manager (ApplicationManager): Application manager that created object. + """ + + def __init__(self, host_name, app_name, app_data, manager): self.host_name = host_name self.app_name = app_name - self.label = app_data["label"] - self.variant_label = app_data["variant_label"] or None - self.icon = app_data["icon"] or None + self.app_data = app_data + self.manager = manager - self.enabled = app_data["enabled"] + self.label = app_data.get("label") or app_name + self.variant_label = app_data.get("variant_label") or None + self.icon = app_data.get("icon") or None + self.enabled = app_data.get("enabled", True) executables = app_data["executables"] if isinstance(executables, dict): @@ -584,20 +599,44 @@ def __init__(self, host_name, app_name, app_data, manager): executables = [executables] self.executables = executables + def __bool__(self): + return self.enabled + @property def full_label(self): + """Full label of application. + + Concatenate `label` and `variant_label` attributes if `variant_label` + is set. + """ if self.variant_label: return "{} {}".format(self.label, self.variant_label) return str(self.label) def find_executable(self): + """Try to find existing executable for application. + + Returns (str): Path to executable from `executables` or None if any + exists. + """ for executable_path in self.executables: if os.path.exists(executable_path): return executable_path return None - def launch(self, project_name, asset_name, task_name): - self.manager.launch(self.app_name, project_name, asset_name, task_name) + def launch(self, *args, **kwargs): + """Launch the application. + + For this purpose is used manager's launch method to keep logic at one + place. + + Arguments must match with manager's launch method. That's why *args + **kwargs are used. + + Returns: + subprocess.Popen: Return executed process as Popen object. + """ + return self.manager.launch(self.app_name, *args, **kwargs) class ApplicationLaunchContext: From 2c913557c620d2cdf601f97b7e5890a4bbacfca1 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Tue, 17 Nov 2020 19:13:47 +0100 Subject: [PATCH 19/86] added few more docstrings --- pype/lib/applications.py | 77 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index fcc571eeea5..cb5a07c2346 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -640,6 +640,32 @@ def launch(self, *args, **kwargs): class ApplicationLaunchContext: + """Context of launching application. + + Main purpose of context is to prepare launch arguments and keword arguments + for new process. Most important part of keyword arguments preparations + are environment variables. + + During the whole process is possible to use `data` attribute to store + object usable in multiple places. + + Launch arguments are strings in list. It is possible to "chain" argument + when order of them matters. That is possible to do with adding list where + order is right and should not change. + NOTE: This is recommendation, not requirement. + e.g.: `["nuke.exe", "--NukeX"]` -> In this case any part of process may + insert argument between `nuke.exe` and `--NukeX`. To keep them together + it is better to wrap them in another list: `[["nuke.exe", "--NukeX"]]`. + + Args: + application (Application): Application definition. + executable (str): Path to executable. + project_name (str): Information about project for avalon context. + asset_name (str): Information about asset for avalon context. + task_name (str): Information about task for avalon context. + **data (dict): Any additional data. Data may be used during + preparation to store objects usable in multiple places. + """ def __init__( self, application, executable, project_name, asset_name, task_name, @@ -685,6 +711,7 @@ def __init__( self.process = None + # TODO maybe give ability to do this out of initialization? self.dbcon = avalon.api.AvalonMongoDB() self.dbcon.Session["AVALON_PROJECT"] = project_name self.dbcon.install() @@ -695,7 +722,8 @@ def __init__( def __del__(self): # At least uninstall - self.dbcon.uninstall() + if self.dbcon and self.dbcon.is_installed(): + self.dbcon.uninstall() @property def app_name(self): @@ -706,12 +734,40 @@ def host_name(self): return self.application.host_name def launch(self): + """Collect data for new process and then create it. + + This method must not be executed more than once. + + Returns: + subprocess.Popen: Created process as Popen object. + """ + if self.process is None: + self.log.warning("Application was already launched.") + return + args = self.clear_launch_args(self.launch_args) self.process = subprocess.Popen(args, **self.kwargs) return self.process @staticmethod def clear_launch_args(args): + """Collect launch arguments to final order. + + Launch argument should be list that may contain another lists this + function will upack inner lists and keep ordering. + + ``` + # source + [ [ arg1, [ arg2, arg3 ] ], arg4, [arg5, arg6]] + # result + [ arg1, arg2, arg3, arg4, arg5, arg6] + + Args: + args (list): Source arguments in list may contain inner lists. + + Return: + list: Unpacked arguments. + """ while True: all_cleared = True new_args = [] @@ -729,6 +785,7 @@ def clear_launch_args(args): return args def prepare_global_data(self): + """Prepare global objects to `data` that will be used for sure.""" # Mongo documents project_doc = self.dbcon.find_one({"type": "project"}) asset_doc = self.dbcon.find_one({ @@ -743,6 +800,7 @@ def prepare_global_data(self): self.data["anatomy"] = Anatomy(self.project_name) def prepare_host_environments(self): + """Modify launch environments based on launched app and context.""" passed_env = self.data.pop("env", None) if passed_env is None: env = os.environ @@ -777,8 +835,9 @@ def prepare_host_environments(self): self.env.update(final_env) def prepare_context_environments(self): + """Modify launch environemnts with context data for launched host.""" # Context environments - workdir_data = self.prepare_workdir_data() + workdir_data = self._prepare_workdir_data() self.data["workdir_data"] = workdir_data hierarchy = workdir_data["hierarchy"] @@ -808,7 +867,7 @@ def prepare_context_environments(self): self.prepare_last_workfile(workdir) - def prepare_workdir_data(self): + def _prepare_workdir_data(self): project_doc = self.data["project_doc"] asset_doc = self.data["asset_doc"] @@ -827,6 +886,18 @@ def prepare_workdir_data(self): return data def prepare_last_workfile(self, workdir): + """last workfile workflow preparation. + + Function check if should care about last workfile workflow and tries + to find the last workfile. Both information are stored to `data` and + environments. + + Last workfile is filled always (with version 1) even if any workfile + exists yet. + + Args: + workdir (str): Path to folder where workfiles should be stored. + """ workdir_data = copy.deepcopy(self.data["workdir_data"]) start_last_workfile = self.should_start_last_workfile( self.project_name, self.host_name, self.task_name From 2d6a507b304a3cd8e1097e5ee3c447fe9f901601 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 12:24:01 +0100 Subject: [PATCH 20/86] made application context more prelaunch hook ready --- pype/lib/applications.py | 160 ++++++++++++++++++++++----------------- 1 file changed, 92 insertions(+), 68 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index cb5a07c2346..e099dfdc68e 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -513,14 +513,12 @@ class ApplicationManager: def __init__(self): self.log = logging.getLogger(self.__class__.__name__) - self.registered_hook_paths = [] - self.registered_hooks = [] - self.applications = {} self.refresh() def refresh(self): + """Refresh applications from settings.""" settings = system_settings() hosts_definitions = settings["global"]["applications"] for host_name, variant_definitions in hosts_definitions.items(): @@ -548,7 +546,17 @@ def refresh(self): host_name, app_name, app_data, self ) - def launch(self, app_name, project_name, asset_name, task_name): + def launch(self, app_name, **data): + """Launch procedure. + + For host application it's expected to contain "project_name", + "asset_name" and "task_name". + + Args: + app_name (str): Name of application that should be launched. + **data (dict): Any additional data. Data may be used during + preparation to store objects usable in multiple places. + """ app = self.applications.get(app_name) if not app: raise ApplicationNotFound(app_name) @@ -558,7 +566,7 @@ def launch(self, app_name, project_name, asset_name, task_name): raise ApplictionExecutableNotFound(app) context = ApplicationLaunchContext( - app, executable, project_name, asset_name, task_name + app, executable, **data ) # TODO pass context through launch hooks return context.launch() @@ -599,9 +607,6 @@ def __init__(self, host_name, app_name, app_data, manager): executables = [executables] self.executables = executables - def __bool__(self): - return self.enabled - @property def full_label(self): """Full label of application. @@ -660,17 +665,10 @@ class ApplicationLaunchContext: Args: application (Application): Application definition. executable (str): Path to executable. - project_name (str): Information about project for avalon context. - asset_name (str): Information about asset for avalon context. - task_name (str): Information about task for avalon context. **data (dict): Any additional data. Data may be used during preparation to store objects usable in multiple places. """ - def __init__( - self, application, executable, - project_name, asset_name, task_name, - **data - ): + def __init__(self, application, executable, **data): # Application object self.application = application @@ -678,15 +676,11 @@ def __init__( logger_name = "{}-{}".format(self.__class__.__name__, self.app_name) self.log = logging.getLogger(logger_name) - # Context - self.project_name = project_name - self.asset_name = asset_name - self.task_name = task_name - self.executable = executable self.data = dict(data) + # Handle launch environemtns passed_env = self.data.pop("env", None) if passed_env is None: env = os.environ @@ -694,6 +688,12 @@ def __init__( env = passed_env self.env = copy.deepcopy(env) + # Load settings if were not passed in data + settings_env = self.data.get("settings_env") + if settings_env is None: + settings_env = environments() + self.data["settings_env"] = settings_env + # subprocess.Popen launch arguments (first argument in constructor) self.launch_args = [executable] # subprocess.Popen keyword arguments @@ -711,20 +711,11 @@ def __init__( self.process = None - # TODO maybe give ability to do this out of initialization? - self.dbcon = avalon.api.AvalonMongoDB() - self.dbcon.Session["AVALON_PROJECT"] = project_name - self.dbcon.install() - + # TODO move these to pre-paunch hook self.prepare_global_data() self.prepare_host_environments() self.prepare_context_environments() - def __del__(self): - # At least uninstall - if self.dbcon and self.dbcon.is_installed(): - self.dbcon.uninstall() - @property def app_name(self): return self.application.app_name @@ -787,41 +778,51 @@ def clear_launch_args(args): def prepare_global_data(self): """Prepare global objects to `data` that will be used for sure.""" # Mongo documents - project_doc = self.dbcon.find_one({"type": "project"}) - asset_doc = self.dbcon.find_one({ - "type": "asset", - "name": self.asset_name - }) + project_name = self.data.get("project_name") + if not project_name: + self.log.info( + "Skipping global data preparation." + " Key `project_name` was not found in launch context." + ) + return + # Anatomy + self.data["anatomy"] = Anatomy(project_name) + + # Mongo connection + dbcon = avalon.api.AvalonMongoDB() + dbcon.Session["AVALON_PROJECT"] = project_name + dbcon.install() + + self.data["dbcon"] = dbcon + + # Project document + project_doc = dbcon.find_one({"type": "project"}) self.data["project_doc"] = project_doc - self.data["asset_doc"] = asset_doc - # Anatomy - self.data["anatomy"] = Anatomy(self.project_name) + asset_name = self.data.get("asset_name") + if not asset_name: + return + + asset_doc = dbcon.find_one({ + "type": "asset", + "name": asset_name + }) + self.data["asset_doc"] = asset_doc def prepare_host_environments(self): """Modify launch environments based on launched app and context.""" - passed_env = self.data.pop("env", None) - if passed_env is None: - env = os.environ - else: - env = passed_env - env = copy.deepcopy(env) - - settings_env = self.data.get("settings_env") - if settings_env is None: - settings_env = environments() - self.data["settings_env"] = settings_env - # Keys for getting environments env_keys = [self.app_name, self.host_name] - asset_doc = self.data["asset_doc"] - # Add tools environments - for key in asset_doc["data"].get("tools_env") or []: - if key not in env_keys: - env_keys.append(key) + asset_doc = self.data.get("asset_doc") + if asset_doc: + # Add tools environments + for key in asset_doc["data"].get("tools_env") or []: + if key not in env_keys: + env_keys.append(key) + settings_env = self.data["settings_env"] env_values = {} for env_key in env_keys: _env_values = settings_env.get(env_key) @@ -837,7 +838,23 @@ def prepare_host_environments(self): def prepare_context_environments(self): """Modify launch environemnts with context data for launched host.""" # Context environments - workdir_data = self._prepare_workdir_data() + project_doc = self.data.get("project_doc") + asset_doc = self.data.get("asset_doc") + task_name = self.data.get("task_name") + if ( + not project_doc + or not asset_doc + or not task_name + ): + self.log.info( + "Skipping context environments preparation." + " Launch context does not contain required data." + ) + return + + workdir_data = self._prepare_workdir_data( + project_doc, asset_doc, task_name + ) self.data["workdir_data"] = workdir_data hierarchy = workdir_data["hierarchy"] @@ -855,9 +872,9 @@ def prepare_context_environments(self): ) context_env = { - "AVALON_PROJECT": self.project_name, - "AVALON_ASSET": self.asset_name, - "AVALON_TASK": self.task_name, + "AVALON_PROJECT": project_doc["name"], + "AVALON_ASSET": asset_doc["name"], + "AVALON_TASK": task_name, "AVALON_APP": self.host_name, "AVALON_APP_NAME": self.app_name, "AVALON_HIERARCHY": hierarchy, @@ -867,10 +884,7 @@ def prepare_context_environments(self): self.prepare_last_workfile(workdir) - def _prepare_workdir_data(self): - project_doc = self.data["project_doc"] - asset_doc = self.data["asset_doc"] - + def _prepare_workdir_data(self, project_doc, asset_doc, task_name): hierarchy = "/".join(asset_doc["data"]["parents"]) data = { @@ -878,8 +892,8 @@ def _prepare_workdir_data(self): "name": project_doc["name"], "code": project_doc["data"].get("code") }, - "task": self.task_name, - "asset": self.asset_name, + "task": task_name, + "asset": asset_doc["name"], "app": self.host_name, "hierarchy": hierarchy } @@ -898,9 +912,19 @@ def prepare_last_workfile(self, workdir): Args: workdir (str): Path to folder where workfiles should be stored. """ - workdir_data = copy.deepcopy(self.data["workdir_data"]) + _workdir_data = self.data.get("workdir_data") + if not _workdir_data: + self.log.info( + "Skipping last workfile preparation." + " Key `workdir_data` not filled." + ) + return + + workdir_data = copy.deepcopy(_workdir_data) + project_name = self.data["project_name"] + task_name = self.data["task_name"] start_last_workfile = self.should_start_last_workfile( - self.project_name, self.host_name, self.task_name + project_name, self.host_name, task_name ) self.data["start_last_workfile"] = start_last_workfile From 7e37702e37fb4a378bacdb433aeb183d292c5230 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 12:31:09 +0100 Subject: [PATCH 21/86] few raises information --- pype/lib/applications.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index e099dfdc68e..5d70b588637 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -556,6 +556,15 @@ def launch(self, app_name, **data): app_name (str): Name of application that should be launched. **data (dict): Any additional data. Data may be used during preparation to store objects usable in multiple places. + + Raises: + ApplicationNotFound: Application was not found by entered + argument `app_name`. + ApplictionExecutableNotFound: Executables in application definition + were not found on this machine. + ApplicationLaunchFailed: Something important for application launch + failed. Exception should contain explanation message, + traceback should not be needed. """ app = self.applications.get(app_name) if not app: From 8c238d84aaafe8b8331c4d728988dfa2284c4a54 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 14:44:38 +0100 Subject: [PATCH 22/86] added iter to app manager --- pype/lib/applications.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 5d70b588637..2abd3d40366 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -517,6 +517,10 @@ def __init__(self): self.refresh() + def __iter__(self): + for item in self.applications.items(): + yield item + def refresh(self): """Refresh applications from settings.""" settings = system_settings() From b8bb62ddf0c8f350d95f5f3923a9fa8715b7688a Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 14:48:38 +0100 Subject: [PATCH 23/86] added manager to lib init --- pype/lib/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pype/lib/__init__.py b/pype/lib/__init__.py index 1ade97cd0e3..407d23f9787 100644 --- a/pype/lib/__init__.py +++ b/pype/lib/__init__.py @@ -20,6 +20,9 @@ from .applications import ( ApplicationLaunchFailed, + ApplictionExecutableNotFound, + ApplicationNotFound, + ApplicationManager, launch_application, ApplicationAction, _subprocess @@ -53,6 +56,9 @@ "execute_hook", "ApplicationLaunchFailed", + "ApplictionExecutableNotFound", + "ApplicationNotFound", + "ApplicationManager", "launch_application", "ApplicationAction", From da2527765a11e92dd23fab4cf0b5a7cddd7a730f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 17:17:44 +0100 Subject: [PATCH 24/86] implemented new applications ftrack action --- .../ftrack/actions/action_applications.py | 251 ++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 pype/modules/ftrack/actions/action_applications.py diff --git a/pype/modules/ftrack/actions/action_applications.py b/pype/modules/ftrack/actions/action_applications.py new file mode 100644 index 00000000000..6d11efbecec --- /dev/null +++ b/pype/modules/ftrack/actions/action_applications.py @@ -0,0 +1,251 @@ +import os +from uuid import uuid4 + +from pype import lib as pypelib +from pype.api import config +from pype.modules.ftrack.lib import BaseAction +from pype.lib import ApplicationManager + + +class AppplicationsAction(BaseAction): + """Application Action class. + + Args: + session (ftrack_api.Session): Session where action will be registered. + label (str): A descriptive string identifing your action. + varaint (str, optional): To group actions together, give them the same + label and specify a unique variant per action. + identifier (str): An unique identifier for app. + description (str): A verbose descriptive text for you action. + icon (str): Url path to icon which will be shown in Ftrack web. + """ + + type = "Application" + label = "Application action" + identifier = "pype_app.{}.".format(str(uuid4())) + icon_url = os.environ.get("PYPE_STATICS_SERVER") + + def __init__(self, session, plugins_presets=None): + super().__init__(session, plugins_presets) + + self.application_manager = ApplicationManager() + + def construct_requirements_validations(self): + # Override validation as this action does not need them + return + + def register(self): + """Registers the action, subscribing the discover and launch topics.""" + + discovery_subscription = ( + "topic=ftrack.action.discover and source.user.username={0}" + ).format(self.session.api_user) + + self.session.event_hub.subscribe( + discovery_subscription, + self._discover, + priority=self.priority + ) + + launch_subscription = ( + "topic=ftrack.action.launch" + " and data.actionIdentifier={0}" + " and source.user.username={1}" + ).format( + self.identifier + "*", + self.session.api_user + ) + self.session.event_hub.subscribe( + launch_subscription, + self._launch + ) + + def _discover(self, event): + entities = self._translate_event(event) + items = self.discover(self.session, entities, event) + if items: + return {"items": items} + + def discover(self, session, entities, event): + """Return true if we can handle the selected entities. + + Args: + session (ftrack_api.Session): Helps to query necessary data. + entities (list): Object of selected entities. + event (ftrack_api.Event): Ftrack event causing discover callback. + """ + + if ( + len(entities) != 1 + or entities[0].entity_type.lower() != "task" + ): + return False + + entity = entities[0] + if entity["parent"].entity_type.lower() == "project": + return False + + avalon_project_apps = event["data"].get("avalon_project_apps", None) + avalon_project_doc = event["data"].get("avalon_project_doc", None) + if avalon_project_apps is None: + if avalon_project_doc is None: + ft_project = self.get_project_from_entity(entity) + database = pypelib.get_avalon_database() + project_name = ft_project["full_name"] + avalon_project_doc = database[project_name].find_one({ + "type": "project" + }) or False + event["data"]["avalon_project_doc"] = avalon_project_doc + + if not avalon_project_doc: + return False + + project_apps_config = avalon_project_doc["config"].get("apps", []) + avalon_project_apps = [ + app["name"] for app in project_apps_config + ] or False + event["data"]["avalon_project_apps"] = avalon_project_apps + + if not avalon_project_apps: + return False + + items = [] + for app_name in avalon_project_apps: + app = self.application_manager.applications.get(app_name) + if not app: + continue + + app_icon = app.icon + if app_icon and self.icon_url: + try: + app_icon = app_icon.format(self.icon_url) + except Exception: + self.log.warning(( + "Couldn't fill icon path. Icon template: \"{}\"" + " --- Icon url: \"{}\"" + ).format(app_icon, self.icon_url)) + app_icon = None + + items.append({ + "label": app.label, + "variant": app.variant_label, + "description": None, + "actionIdentifier": self.identifier + app_name, + "icon": app_icon + }) + + return items + + def launch(self, session, entities, event): + """Callback method for the custom action. + + return either a bool (True if successful or False if the action failed) + or a dictionary with they keys `message` and `success`, the message + should be a string and will be displayed as feedback to the user, + success should be a bool, True if successful or False if the action + failed. + + *session* is a `ftrack_api.Session` instance + + *entities* is a list of tuples each containing the entity type and + the entity id. If the entity is a hierarchical you will always get + the entity type TypedContext, once retrieved through a get operation + you will have the "real" entity type ie. example Shot, Sequence + or Asset Build. + + *event* the unmodified original event + """ + identifier = event["data"]["actionIdentifier"] + app_name = identifier[len(self.identifier):] + + entity = entities[0] + + task_name = entity["name"] + asset_name = entity["parent"]["name"] + project_name = entity["project"]["full_name"] + self.log.info(( + "Ftrack launch app: \"{}\" on Project/Asset/Task: {}/{}/{}" + ).format(app_name, project_name, asset_name, task_name)) + try: + self.application_manager.launch( + app_name, + project_name=project_name, + asset_name=asset_name, + task_name=task_name + ) + + except pypelib.ApplicationLaunchFailed as exc: + self.log.error(str(exc)) + return { + "success": False, + "message": str(exc) + } + + except Exception: + msg = "Unexpected failure of application launch {}".format( + self.label + ) + self.log.error(msg, exc_info=True) + return { + "success": False, + "message": msg + } + + # TODO Move to prelaunch/afterlaunch hooks + # Change status of task to In progress + presets = config.get_presets()["ftrack"]["ftrack_config"] + + if "status_update" in presets: + statuses = presets["status_update"] + + actual_status = entity["status"]["name"].lower() + already_tested = [] + ent_path = "/".join( + [ent["name"] for ent in entity["link"]] + ) + while True: + next_status_name = None + for key, value in statuses.items(): + if key in already_tested: + continue + if actual_status in value or "_any_" in value: + if key != "_ignore_": + next_status_name = key + already_tested.append(key) + break + already_tested.append(key) + + if next_status_name is None: + break + + try: + query = "Status where name is \"{}\"".format( + next_status_name + ) + status = session.query(query).one() + + entity["status"] = status + session.commit() + self.log.debug("Changing status to \"{}\" <{}>".format( + next_status_name, ent_path + )) + break + + except Exception: + session.rollback() + msg = ( + "Status \"{}\" in presets wasn't found" + " on Ftrack entity type \"{}\"" + ).format(next_status_name, entity.entity_type) + self.log.warning(msg) + + return { + "success": True, + "message": "Launching {0}".format(self.label) + } + + +def register(session, plugins_presets=None): + '''Register action. Called when used as an event plugin.''' + + AppplicationsAction(session, plugins_presets).register() From df37b9cdb2326694232b97be4723cf7bb17a164e Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 17:18:50 +0100 Subject: [PATCH 25/86] added enabled check --- pype/modules/ftrack/actions/action_applications.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/modules/ftrack/actions/action_applications.py b/pype/modules/ftrack/actions/action_applications.py index 6d11efbecec..d75628f29cc 100644 --- a/pype/modules/ftrack/actions/action_applications.py +++ b/pype/modules/ftrack/actions/action_applications.py @@ -112,7 +112,7 @@ def discover(self, session, entities, event): items = [] for app_name in avalon_project_apps: app = self.application_manager.applications.get(app_name) - if not app: + if not app or not app.enabled: continue app_icon = app.icon From 558d9761673f127ca164afdb19aed232d8b5e3c8 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 17:24:03 +0100 Subject: [PATCH 26/86] do not use pypelib in action --- .../ftrack/actions/action_applications.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/pype/modules/ftrack/actions/action_applications.py b/pype/modules/ftrack/actions/action_applications.py index d75628f29cc..b3e85a69182 100644 --- a/pype/modules/ftrack/actions/action_applications.py +++ b/pype/modules/ftrack/actions/action_applications.py @@ -1,10 +1,13 @@ import os from uuid import uuid4 -from pype import lib as pypelib from pype.api import config from pype.modules.ftrack.lib import BaseAction -from pype.lib import ApplicationManager +from pype.lib import ( + ApplicationManager, + ApplicationLaunchFailed +) +from avalon.api import AvalonMongoDB class AppplicationsAction(BaseAction): @@ -29,6 +32,7 @@ def __init__(self, session, plugins_presets=None): super().__init__(session, plugins_presets) self.application_manager = ApplicationManager() + self.dbcon = AvalonMongoDB() def construct_requirements_validations(self): # Override validation as this action does not need them @@ -90,9 +94,11 @@ def discover(self, session, entities, event): if avalon_project_apps is None: if avalon_project_doc is None: ft_project = self.get_project_from_entity(entity) - database = pypelib.get_avalon_database() project_name = ft_project["full_name"] - avalon_project_doc = database[project_name].find_one({ + if not self.dbcon.is_installed(): + self.dbcon.install() + self.dbcon.Session["AVALON_PROJECT"] = project_name + avalon_project_doc = self.dbcon.find_one({ "type": "project" }) or False event["data"]["avalon_project_doc"] = avalon_project_doc @@ -174,7 +180,7 @@ def launch(self, session, entities, event): task_name=task_name ) - except pypelib.ApplicationLaunchFailed as exc: + except ApplicationLaunchFailed as exc: self.log.error(str(exc)) return { "success": False, @@ -192,6 +198,7 @@ def launch(self, session, entities, event): } # TODO Move to prelaunch/afterlaunch hooks + # TODO change to settings # Change status of task to In progress presets = config.get_presets()["ftrack"]["ftrack_config"] From cba93bb9b544e727eddb3c57a5e04ed5b11eaf37 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 18:23:28 +0100 Subject: [PATCH 27/86] resources has variable RESOURCES_DIR --- pype/resources/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pype/resources/__init__.py b/pype/resources/__init__.py index 2f7f95e3eba..1a568b87212 100644 --- a/pype/resources/__init__.py +++ b/pype/resources/__init__.py @@ -1,6 +1,9 @@ import os +RESOURCES_DIR = os.path.dirname(os.path.abspath(__file__)) + + def get_resource(*args): """ Serves to simple resources access From 011508cfe0206a77bb0fc7b22a8213b57c3c977f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 18:30:12 +0100 Subject: [PATCH 28/86] icon path is also tried with formatting icon string --- pype/tools/launcher/lib.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pype/tools/launcher/lib.py b/pype/tools/launcher/lib.py index a6d6ff68654..f70929fc2ed 100644 --- a/pype/tools/launcher/lib.py +++ b/pype/tools/launcher/lib.py @@ -84,6 +84,9 @@ def get_action_icon(action): return icon icon_path = resources.get_resource(icon_name) + if not os.path.exists(icon_path): + icon_path = icon_name.format(resources.RESOURCES_DIR) + if os.path.exists(icon_path): icon = QtGui.QIcon(icon_path) ICON_CACHE[icon_name] = icon From ab943e7aaae32fcf481f57bd792aeb0230a57162 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 18:33:22 +0100 Subject: [PATCH 29/86] fixed small issue in launch logic --- pype/lib/applications.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 2abd3d40366..5444d6ca383 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -745,7 +745,7 @@ def launch(self): Returns: subprocess.Popen: Created process as Popen object. """ - if self.process is None: + if self.process is not None: self.log.warning("Application was already launched.") return From f14475788d84bdbd09c7757d29b448870de41cf6 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 18:34:07 +0100 Subject: [PATCH 30/86] use pype logger to get any output --- pype/lib/applications.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 5444d6ca383..5c89e12a9ad 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -511,7 +511,7 @@ def _subprocess(*args, **kwargs): class ApplicationManager: def __init__(self): - self.log = logging.getLogger(self.__class__.__name__) + self.log = Logger().get_logger(self.__class__.__name__) self.applications = {} @@ -687,7 +687,7 @@ def __init__(self, application, executable, **data): # Logger logger_name = "{}-{}".format(self.__class__.__name__, self.app_name) - self.log = logging.getLogger(logger_name) + self.log = Logger().get_logger(logger_name) self.executable = executable From f0e4bb6cccc20943d43f9ac824f627a25e27cfe8 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 18:37:44 +0100 Subject: [PATCH 31/86] added simple after launch procedures --- pype/lib/applications.py | 172 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 5c89e12a9ad..217e172bc67 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -245,7 +245,7 @@ def launch_application(project_name, asset_name, task_name, app_name): return popen -class ApplicationAction(avalon.api.Action): +class ApplicationAction: """Default application launcher This is a convenience application Action that when "config" refers to a @@ -751,6 +751,9 @@ def launch(self): args = self.clear_launch_args(self.launch_args) self.process = subprocess.Popen(args, **self.kwargs) + + self.after_launch_procedures() + return self.process @staticmethod @@ -1044,3 +1047,170 @@ def should_start_last_workfile(self, project_name, host_name, task_name): output = default_output return output return default_output + + def after_launch_procedures(self): + self._ftrack_after_launch_procedure() + + def _ftrack_after_launch_procedure(self): + # TODO move to launch hook + project_name = self.data.get("project_name") + asset_name = self.data.get("asset_name") + task_name = self.data.get("task_name") + if ( + not project_name + or not asset_name + or not task_name + ): + return + + required_keys = ("FTRACK_SERVER", "FTRACK_API_USER", "FTRACK_API_KEY") + for key in required_keys: + if not os.environ.get(key): + self.log.debug(( + "Missing required environment \"{}\"" + " for Ftrack after launch procedure." + ).format(key)) + return + + try: + import ftrack_api + session = ftrack_api.Session(auto_connect_event_hub=True) + self.log.debug("Ftrack session created") + except Exception: + self.log.warning("Couldn't create Ftrack session") + return + + try: + entity = self._find_ftrack_task_entity( + session, project_name, asset_name, task_name + ) + self._ftrack_status_change(session, entity, project_name) + self._start_timer(session, entity, ftrack_api) + except Exception: + self.log.warning( + "Couldn't finish Ftrack procedure.", exc_info=True + ) + return + + finally: + session.close() + + def _find_ftrack_task_entity( + self, session, project_name, asset_name, task_name + ): + project_entity = session.query( + "Project where full_name is \"{}\"".format(project_name) + ).first() + if not project_entity: + self.log.warning( + "Couldn't find project \"{}\" in Ftrack.".format(project_name) + ) + return + + potential_task_entities = session.query(( + "TypedContext where parent.name is \"{}\" and project_id is \"{}\"" + ).format(asset_name, project_entity["id"])).all() + filtered_entities = [] + for _entity in potential_task_entities: + if ( + _entity.entity_type.lower() == "task" + and _entity["name"] == task_name + ): + filtered_entities.append(_entity) + + if not filtered_entities: + self.log.warning(( + "Couldn't find task \"{}\" under parent \"{}\" in Ftrack." + ).format(task_name, asset_name)) + return + + if len(filtered_entities) > 1: + self.log.warning(( + "Found more than one task \"{}\"" + " under parent \"{}\" in Ftrack." + ).format(task_name, asset_name)) + return + + return filtered_entities[0] + + def _ftrack_status_change(self, session, entity, project_name): + from pype.api import config + presets = config.get_presets(project_name)["ftrack"]["ftrack_config"] + statuses = presets.get("status_update") + if not statuses: + return + + actual_status = entity["status"]["name"].lower() + already_tested = set() + ent_path = "/".join( + [ent["name"] for ent in entity["link"]] + ) + while True: + next_status_name = None + for key, value in statuses.items(): + if key in already_tested: + continue + if actual_status in value or "_any_" in value: + if key != "_ignore_": + next_status_name = key + already_tested.add(key) + break + already_tested.add(key) + + if next_status_name is None: + break + + try: + query = "Status where name is \"{}\"".format( + next_status_name + ) + status = session.query(query).one() + + entity["status"] = status + session.commit() + self.log.debug("Changing status to \"{}\" <{}>".format( + next_status_name, ent_path + )) + break + + except Exception: + session.rollback() + msg = ( + "Status \"{}\" in presets wasn't found" + " on Ftrack entity type \"{}\"" + ).format(next_status_name, entity.entity_type) + self.log.warning(msg) + + def _start_timer(self, session, entity, _ftrack_api): + self.log.debug("Triggering timer start.") + + user_entity = session.query("User where username is \"{}\"".format( + os.environ["FTRACK_API_USER"] + )).first() + if not user_entity: + self.log.warning( + "Couldn't find user with username \"{}\" in Ftrack".format( + os.environ["FTRACK_API_USER"] + ) + ) + return + + source = { + "user": { + "id": user_entity["id"], + "username": user_entity["username"] + } + } + event_data = { + "actionIdentifier": "start.timer", + "selection": [{"entityId": entity["id"], "entityType": "task"}] + } + session.event_hub.publish( + _ftrack_api.event.base.Event( + topic="ftrack.action.launch", + data=event_data, + source=source + ), + on_error="ignore" + ) + self.log.debug("Timer start triggered successfully.") From fc2f4f929dea4adc80e746d8cae786ca419496f7 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 18:39:05 +0100 Subject: [PATCH 32/86] after launch procedures in try except --- pype/lib/applications.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 217e172bc67..672e8bca877 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -752,7 +752,14 @@ def launch(self): args = self.clear_launch_args(self.launch_args) self.process = subprocess.Popen(args, **self.kwargs) - self.after_launch_procedures() + # TODO do this with after-launch hooks + try: + self.after_launch_procedures() + except Exception: + self.log.warning( + "After launch procedures were not successful.", + exc_info=True + ) return self.process From 24a8fad51316f67fa14958e67bdbec3c6c353a3a Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:23:55 +0100 Subject: [PATCH 33/86] moved `env_value_to_bool` to env_tools --- pype/lib/__init__.py | 3 +++ pype/lib/applications.py | 16 ---------------- pype/lib/env_tools.py | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 pype/lib/env_tools.py diff --git a/pype/lib/__init__.py b/pype/lib/__init__.py index 407d23f9787..e75799e6b51 100644 --- a/pype/lib/__init__.py +++ b/pype/lib/__init__.py @@ -6,6 +6,7 @@ set_io_database ) +from .env_tools import env_value_to_bool from .avalon_context import ( is_latest, any_outdated, @@ -44,6 +45,8 @@ "get_avalon_database", "set_io_database", + "env_value_to_bool", + "is_latest", "any_outdated", "get_asset", diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 672e8bca877..f13f2431efe 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -39,22 +39,6 @@ class ApplicationLaunchFailed(Exception): pass -def env_value_to_bool(env_key=None, value=None, default=False): - if value is None and env_key is None: - return default - - if value is None: - value = os.environ.get(env_key) - - if value is not None: - value = str(value).lower() - if value in ("true", "yes", "1"): - return True - elif value in ("false", "no", "0"): - return False - return default - - def compile_list_of_regexes(in_list): """Convert strings in entered list to compiled regex objects.""" regexes = list() diff --git a/pype/lib/env_tools.py b/pype/lib/env_tools.py new file mode 100644 index 00000000000..af7b68054fc --- /dev/null +++ b/pype/lib/env_tools.py @@ -0,0 +1,17 @@ +import os + + +def env_value_to_bool(env_key=None, value=None, default=False): + if value is None and env_key is None: + return default + + if value is None: + value = os.environ.get(env_key) + + if value is not None: + value = str(value).lower() + if value in ("true", "yes", "1"): + return True + elif value in ("false", "no", "0"): + return False + return default From 1901c83f67beef881fb949cb623823cd74c9c1db Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:24:09 +0100 Subject: [PATCH 34/86] applications imports fix --- pype/lib/applications.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index f13f2431efe..37a60ecd178 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -23,6 +23,7 @@ ) from .hooks import execute_hook from .deprecated import get_avalon_database +from .env_tools import env_value_to_bool log = logging.getLogger(__name__) @@ -983,7 +984,6 @@ def should_start_last_workfile(self, project_name, host_name, task_name): ) # TODO convert to settings try: - from pype.api import config startup_presets = ( config.get_presets(project_name) .get("tools", {}) From 314c251076354e13932839a22fedb077e23f4962 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:32:43 +0100 Subject: [PATCH 35/86] get_paths_from_environ moved to env_tools --- pype/lib/__init__.py | 9 ++++++--- pype/lib/env_tools.py | 44 ++++++++++++++++++++++++++++++++++++++++++ pype/lib/path_tools.py | 38 ------------------------------------ 3 files changed, 50 insertions(+), 41 deletions(-) diff --git a/pype/lib/__init__.py b/pype/lib/__init__.py index e75799e6b51..a3a3d7225d5 100644 --- a/pype/lib/__init__.py +++ b/pype/lib/__init__.py @@ -6,7 +6,11 @@ set_io_database ) -from .env_tools import env_value_to_bool +from .env_tools import ( + env_value_to_bool, + get_paths_from_environ +) + from .avalon_context import ( is_latest, any_outdated, @@ -35,7 +39,6 @@ version_up, get_version_from_path, get_last_version_from_path, - get_paths_from_environ, get_ffmpeg_tool_path ) @@ -46,6 +49,7 @@ "set_io_database", "env_value_to_bool", + "get_paths_from_environ", "is_latest", "any_outdated", @@ -70,7 +74,6 @@ "version_up", "get_version_from_path", "get_last_version_from_path", - "get_paths_from_environ", "get_ffmpeg_tool_path", "ffprobe_streams", diff --git a/pype/lib/env_tools.py b/pype/lib/env_tools.py index af7b68054fc..900d62901d3 100644 --- a/pype/lib/env_tools.py +++ b/pype/lib/env_tools.py @@ -15,3 +15,47 @@ def env_value_to_bool(env_key=None, value=None, default=False): elif value in ("false", "no", "0"): return False return default + + +def get_paths_from_environ(env_key=None, env_value=None, return_first=False): + """Return existing paths from specific envirnment variable. + + Args: + env_key (str): Environment key where should look for paths. + env_value (str): Value of environemnt variable. Argument `env_key` is + skipped if this argument is entered. + return_first (bool): Return first found value or return list of found + paths. `None` or empty list returned if nothing found. + + Returns: + str, list, None: Result of found path/s. + """ + existing_paths = [] + if not env_key and not env_value: + if return_first: + return None + return existing_paths + + if env_value is None: + env_value = os.environ.get(env_key) or "" + + path_items = env_value.split(os.pathsep) + for path in path_items: + # Skip empty string + if not path: + continue + # Normalize path + path = os.path.normpath(path) + # Check if path exists + if os.path.exists(path): + # Return path if `return_first` is set to True + if return_first: + return path + # Store path + existing_paths.append(path) + + # Return None if none of paths exists + if return_first: + return None + # Return all existing paths from environment variable + return existing_paths diff --git a/pype/lib/path_tools.py b/pype/lib/path_tools.py index ba383ea3eda..a0da0c21907 100644 --- a/pype/lib/path_tools.py +++ b/pype/lib/path_tools.py @@ -5,44 +5,6 @@ log = logging.getLogger(__name__) -def get_paths_from_environ(env_key, return_first=False): - """Return existing paths from specific envirnment variable. - - Args: - env_key (str): Environment key where should look for paths. - - Returns: - (bool): Return first path on `True`, list of all on `False`. - - - Difference when none of paths exists: - - when `return_first` is set to `False` then function returns empty list. - - when `return_first` is set to `True` then function returns `None`. - """ - existing_paths = [] - paths = os.environ.get(env_key) or "" - path_items = paths.split(os.pathsep) - for path in path_items: - # Skip empty string - if not path: - continue - # Normalize path - path = os.path.normpath(path) - # Check if path exists - if os.path.exists(path): - # Return path if `return_first` is set to True - if return_first: - return path - # Store path - existing_paths.append(path) - - # Return None if none of paths exists - if return_first: - return None - # Return all existing paths from environment variable - return existing_paths - - def get_ffmpeg_tool_path(tool="ffmpeg"): """Find path to ffmpeg tool in FFMPEG_PATH paths. From 9a04ace92bcb1eb79ebf8986f4840edac7116b6d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:32:53 +0100 Subject: [PATCH 36/86] env_value_to_bool has docstring --- pype/lib/env_tools.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pype/lib/env_tools.py b/pype/lib/env_tools.py index 900d62901d3..f31426103b1 100644 --- a/pype/lib/env_tools.py +++ b/pype/lib/env_tools.py @@ -2,6 +2,16 @@ def env_value_to_bool(env_key=None, value=None, default=False): + """Convert environment variable value to boolean. + + Function is based on value of the environemt variable. Value is lowered + so function is not case sensitive. + + Returns: + bool: If value match to one of ["true", "yes", "1"] result if True + but if value match to ["false", "no", "0"] result is False else + default value is returned. + """ if value is None and env_key is None: return default From 4e0ae38a123ce09343b288208075ae5d4c58cdd2 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:33:24 +0100 Subject: [PATCH 37/86] get_ffmpeg_tool_path moved to ffmpeg utils --- pype/lib/__init__.py | 10 ++++++---- pype/lib/ffmpeg_utils.py | 25 ++++++++++++++++++++++++- pype/lib/path_tools.py | 22 ---------------------- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/pype/lib/__init__.py b/pype/lib/__init__.py index a3a3d7225d5..188dd680396 100644 --- a/pype/lib/__init__.py +++ b/pype/lib/__init__.py @@ -38,11 +38,13 @@ from .path_tools import ( version_up, get_version_from_path, - get_last_version_from_path, - get_ffmpeg_tool_path + get_last_version_from_path ) -from .ffmpeg_utils import ffprobe_streams +from .ffmpeg_utils import ( + get_ffmpeg_tool_path, + ffprobe_streams +) __all__ = [ "get_avalon_database", @@ -74,9 +76,9 @@ "version_up", "get_version_from_path", "get_last_version_from_path", - "get_ffmpeg_tool_path", "ffprobe_streams", + "get_ffmpeg_tool_path", "source_hash", "_subprocess" diff --git a/pype/lib/ffmpeg_utils.py b/pype/lib/ffmpeg_utils.py index 0096fd13aa9..ba9f24c5d7c 100644 --- a/pype/lib/ffmpeg_utils.py +++ b/pype/lib/ffmpeg_utils.py @@ -1,12 +1,35 @@ +import os import logging import json import subprocess -from . import get_ffmpeg_tool_path +from . import get_paths_from_environ log = logging.getLogger("FFmpeg utils") +def get_ffmpeg_tool_path(tool="ffmpeg"): + """Find path to ffmpeg tool in FFMPEG_PATH paths. + + Function looks for tool in paths set in FFMPEG_PATH environment. If tool + exists then returns it's full path. + + Args: + tool (string): tool name + + Returns: + (str): tool name itself when tool path was not found. (FFmpeg path + may be set in PATH environment variable) + """ + dir_paths = get_paths_from_environ("FFMPEG_PATH") + for dir_path in dir_paths: + for file_name in os.listdir(dir_path): + base, _ext = os.path.splitext(file_name) + if base.lower() == tool.lower(): + return os.path.join(dir_path, tool) + return tool + + def ffprobe_streams(path_to_file, logger=None): """Load streams from entered filepath via ffprobe. diff --git a/pype/lib/path_tools.py b/pype/lib/path_tools.py index a0da0c21907..e1dd1e7f103 100644 --- a/pype/lib/path_tools.py +++ b/pype/lib/path_tools.py @@ -5,28 +5,6 @@ log = logging.getLogger(__name__) -def get_ffmpeg_tool_path(tool="ffmpeg"): - """Find path to ffmpeg tool in FFMPEG_PATH paths. - - Function looks for tool in paths set in FFMPEG_PATH environment. If tool - exists then returns it's full path. - - Args: - tool (string): tool name - - Returns: - (str): tool name itself when tool path was not found. (FFmpeg path - may be set in PATH environment variable) - """ - dir_paths = get_paths_from_environ("FFMPEG_PATH") - for dir_path in dir_paths: - for file_name in os.listdir(dir_path): - base, _ext = os.path.splitext(file_name) - if base.lower() == tool.lower(): - return os.path.join(dir_path, tool) - return tool - - def _rreplace(s, a, b, n=1): """Replace a with b in string s from right side n times.""" return b.join(s.rsplit(a, n)) From 2d56b423d935fc56ba64751d827912dbb12c74a3 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:50:52 +0100 Subject: [PATCH 38/86] added choice to use app manager with setting PYPE_USE_APP_MANAGER environment --- pype/modules/ftrack/actions/action_application_loader.py | 4 ++++ pype/modules/ftrack/actions/action_applications.py | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pype/modules/ftrack/actions/action_application_loader.py b/pype/modules/ftrack/actions/action_application_loader.py index ecc5a4fad34..8749f89555e 100644 --- a/pype/modules/ftrack/actions/action_application_loader.py +++ b/pype/modules/ftrack/actions/action_application_loader.py @@ -48,6 +48,10 @@ def registerApp(app, session, plugins_presets): def register(session, plugins_presets={}): + from pype.lib import env_value_to_bool + if env_value_to_bool("PYPE_USE_APP_MANAGER", default=False): + return + app_usages = ( config.get_presets() .get("global", {}) diff --git a/pype/modules/ftrack/actions/action_applications.py b/pype/modules/ftrack/actions/action_applications.py index b3e85a69182..63540213e39 100644 --- a/pype/modules/ftrack/actions/action_applications.py +++ b/pype/modules/ftrack/actions/action_applications.py @@ -254,5 +254,6 @@ def launch(self, session, entities, event): def register(session, plugins_presets=None): '''Register action. Called when used as an event plugin.''' - - AppplicationsAction(session, plugins_presets).register() + from pype.lib import env_value_to_bool + if env_value_to_bool("PYPE_USE_APP_MANAGER", default=False): + AppplicationsAction(session, plugins_presets).register() From caaa341509459e7d839b4422f57bb92857bb89c4 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:51:23 +0100 Subject: [PATCH 39/86] added application action to launcher tool --- pype/tools/launcher/actions.py | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pype/tools/launcher/actions.py b/pype/tools/launcher/actions.py index 80e6f71ae76..6603844fa6f 100644 --- a/pype/tools/launcher/actions.py +++ b/pype/tools/launcher/actions.py @@ -102,3 +102,53 @@ def register_environment_actions(): module, str(e) ) ) + + +class ApplicationAction(api.Action): + """Pype's application launcher + + Application action based on pype's ApplicationManager system. + """ + + # Application object + application = None + # Action attributes + name = None + label = None + label_variant = None + group = None + icon = None + color = None + order = 0 + + _log = None + required_session_keys = ( + "AVALON_PROJECT", + "AVALON_ASSET", + "AVALON_TASK" + ) + + @property + def log(self): + from pype.api import Logger + if self._log is None: + self._log = Logger().get_logger(self.__class__.__name__) + return self._log + + def is_compatible(self, session): + for key in self.required_session_keys: + if key not in session: + return False + return True + + def process(self, session, **kwargs): + """Process the full Application action""" + + project_name = session["AVALON_PROJECT"] + asset_name = session["AVALON_ASSET"] + task_name = session["AVALON_TASK"] + self.application.launch( + project_name=project_name, + asset_name=asset_name, + task_name=task_name + ) From 675a1e134d532800697c55cc6a97c4d58baed3a0 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 19:53:22 +0100 Subject: [PATCH 40/86] implemented actions for launcher with app manager --- pype/tools/launcher/models.py | 46 +++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/pype/tools/launcher/models.py b/pype/tools/launcher/models.py index b2743d221c2..07db36fa9a8 100644 --- a/pype/tools/launcher/models.py +++ b/pype/tools/launcher/models.py @@ -3,9 +3,11 @@ import collections from . import lib +from .actions import ApplicationAction from Qt import QtCore, QtGui from avalon.vendor import qtawesome from avalon import style, api +from pype.lib import ApplicationManager, env_value_to_bool log = logging.getLogger(__name__) @@ -115,6 +117,12 @@ def __init__(self, dbcon, parent=None): super(ActionModel, self).__init__(parent=parent) self.dbcon = dbcon + self.use_manager = env_value_to_bool( + "PYPE_USE_APP_MANAGER", default=False + ) + if self.use_manager: + self.application_manager = ApplicationManager() + self._session = {} self._groups = {} self.default_icon = qtawesome.icon("fa.cube", color="white") @@ -133,12 +141,46 @@ def discover(self): actions = api.discover(api.Action) # Get available project actions and the application actions - project_doc = self.dbcon.find_one({"type": "project"}) - app_actions = lib.get_application_actions(project_doc) + if self.use_manager: + app_actions = self.get_application_actions() + else: + project_doc = self.dbcon.find_one({"type": "project"}) + app_actions = lib.get_application_actions(project_doc) actions.extend(app_actions) self._registered_actions = actions + def get_application_actions(self): + actions = [] + project_doc = self.dbcon.find_one({"type": "project"}) + if not project_doc: + return actions + + for app_def in project_doc["config"]["apps"]: + app_name = app_def["name"] + app = self.application_manager.applications.get(app_name) + if not app or not app.enabled: + continue + + # Get from app definition, if not there from app in project + action = type( + "app_{}".format(app_name), + (ApplicationAction,), + { + "application": app, + "name": app.app_name, + "label": app.label, + "label_variant": app.variant_label, + "group": None, + "icon": app.icon, + "color": getattr(app, "color", None), + "order": getattr(app, "order", None) or 0 + } + ) + + actions.append(action) + return actions + def get_icon(self, action, skip_default=False): icon = lib.get_action_icon(action) if not icon and not skip_default: From c3b9f2558d01176062c5c93a702b59f72c30affd Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 20:24:25 +0100 Subject: [PATCH 41/86] remove unused imports --- pype/lib/applications.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 37a60ecd178..9b103c6fc47 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -1,14 +1,12 @@ import os import sys import re -import types import getpass import copy import platform import logging import subprocess -import six import acre import avalon.lib From 2b56a409cbb35097c55e67bc2245bfac21a64f69 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 18 Nov 2020 20:34:23 +0100 Subject: [PATCH 42/86] replaced RESOURCES_DIR in get_resource method --- pype/resources/__init__.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pype/resources/__init__.py b/pype/resources/__init__.py index 1a568b87212..9adce2afe40 100644 --- a/pype/resources/__init__.py +++ b/pype/resources/__init__.py @@ -11,12 +11,7 @@ def get_resource(*args): resource from resources folder :type *args: list """ - return os.path.normpath( - os.path.join( - os.path.dirname(os.path.abspath(__file__)), - *args - ) - ) + return os.path.normpath(os.path.join(RESOURCES_DIR, *args)) def get_liberation_font_path(bold=False, italic=False): From cb58f6a474766a8a4066b07cba7bcc1677a03133 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 11:16:34 +0100 Subject: [PATCH 43/86] Exceptions have docstrings --- pype/lib/applications.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 9b103c6fc47..702f212ec35 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -27,14 +27,33 @@ class ApplicationNotFound(Exception): + """Application was not found in ApplicationManager by name.""" pass class ApplictionExecutableNotFound(Exception): - pass + """Defined executable paths are not available on the machine.""" + def __init__(self, application): + self.application = application + if not self.application.executables: + msg = ( + "Executable paths for application \"{}\" are not set." + ).format(self.application.app_name) + else: + msg = ( + "Defined executable paths for application \"{}\"" + " are not available at this machine. Defined paths: {}" + ).format( + application.app_name, os.pathsep.join(application.executables) + ) + super(ApplictionExecutableNotFound, self).__init__(msg) class ApplicationLaunchFailed(Exception): + """Application launch failed due to known reason. + + Message should be self explanatory as traceback won't be shown. + """ pass From c281059a199d1250f86a7ea4f23d6626175f003f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 11:28:10 +0100 Subject: [PATCH 44/86] ApplicationNotFound has minimum message --- pype/lib/applications.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 702f212ec35..26e150c2e0b 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -28,7 +28,11 @@ class ApplicationNotFound(Exception): """Application was not found in ApplicationManager by name.""" - pass + def __init__(self, app_name): + self.app_name = app_name + super(ApplicationNotFound, self).__init__( + "Application \"{}\" was not found.".format(app_name) + ) class ApplictionExecutableNotFound(Exception): From bcd28e7bb1ec07cbcfbd48581e418d0534ccc453 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 11:34:27 +0100 Subject: [PATCH 45/86] Launcher will show popup message when something went wrong with application launch --- pype/tools/launcher/actions.py | 63 ++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/pype/tools/launcher/actions.py b/pype/tools/launcher/actions.py index 6603844fa6f..d83feeb0dcf 100644 --- a/pype/tools/launcher/actions.py +++ b/pype/tools/launcher/actions.py @@ -1,7 +1,13 @@ import os import importlib -from avalon import api, lib +from avalon import api, lib, style +from pype.api import Logger, resources +from pype.lib import ( + ApplictionExecutableNotFound, + ApplicationLaunchFailed +) +from Qt import QtWidgets, QtGui class ProjectManagerAction(api.Action): @@ -130,7 +136,6 @@ class ApplicationAction(api.Action): @property def log(self): - from pype.api import Logger if self._log is None: self._log = Logger().get_logger(self.__class__.__name__) return self._log @@ -141,14 +146,58 @@ def is_compatible(self, session): return False return True + def _show_message_box(self, title, message, details=None): + dialog = QtWidgets.QMessageBox() + icon = QtGui.QIcon(resources.pype_icon_filepath()) + dialog.setWindowIcon(icon) + dialog.setStyleSheet(style.load_stylesheet()) + dialog.setWindowTitle(title) + dialog.setText(message) + if details: + dialog.setDetailedText(details) + dialog.exec_() + def process(self, session, **kwargs): """Process the full Application action""" project_name = session["AVALON_PROJECT"] asset_name = session["AVALON_ASSET"] task_name = session["AVALON_TASK"] - self.application.launch( - project_name=project_name, - asset_name=asset_name, - task_name=task_name - ) + try: + self.application.launch( + project_name=project_name, + asset_name=asset_name, + task_name=task_name + ) + + except ApplictionExecutableNotFound: + details = None + if not self.application.executables: + msg = ( + "Executable paths for application \"{}\"({}) are not set." + ) + else: + msg = ( + "Defined executable paths for application \"{}\"({})" + " are not available at this machine." + ) + + details = "Defined paths:" + for executable in self.application.executables: + details += "\n- {}".format(executable) + + msg = msg.format( + self.application.full_label, self.application.app_name + ) + log_msg = str(msg) + if details: + log_msg += "\n" + details + self.log.warning(log_msg) + self._show_message_box( + "Application executable not found", msg, details + ) + + except ApplicationLaunchFailed as exc: + msg = str(exc) + self.log.warning(msg, exc_info=True) + self._show_message_box("Application launch failed", msg) From f27179d4ad3ea9002fb419d833ab85d6451c03db Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 11:48:49 +0100 Subject: [PATCH 46/86] do message and details in executables exception --- pype/lib/applications.py | 26 ++++++++++++++++++-------- pype/tools/launcher/actions.py | 22 +++------------------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 26e150c2e0b..d7b028d0fcf 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -39,18 +39,28 @@ class ApplictionExecutableNotFound(Exception): """Defined executable paths are not available on the machine.""" def __init__(self, application): self.application = application - if not self.application.executables: + details = None + if not application.executables: msg = ( - "Executable paths for application \"{}\" are not set." - ).format(self.application.app_name) + "Executable paths for application \"{}\"({}) are not set." + ) else: msg = ( - "Defined executable paths for application \"{}\"" - " are not available at this machine. Defined paths: {}" - ).format( - application.app_name, os.pathsep.join(application.executables) + "Defined executable paths for application \"{}\"({})" + " are not available on this machine." ) - super(ApplictionExecutableNotFound, self).__init__(msg) + details = "Defined paths:" + for executable_path in application.executables: + details += "\n- " + executable_path + + self.message = msg.format(application.full_label, application.app_name) + self.details = details + + exc_mgs = str(self.message) + if details: + # Is good idea to pass new line symbol to exception message? + exc_mgs += "\n" + details + super(ApplictionExecutableNotFound, self).__init__(exc_mgs) class ApplicationLaunchFailed(Exception): diff --git a/pype/tools/launcher/actions.py b/pype/tools/launcher/actions.py index d83feeb0dcf..0a1b73daaf6 100644 --- a/pype/tools/launcher/actions.py +++ b/pype/tools/launcher/actions.py @@ -170,25 +170,9 @@ def process(self, session, **kwargs): task_name=task_name ) - except ApplictionExecutableNotFound: - details = None - if not self.application.executables: - msg = ( - "Executable paths for application \"{}\"({}) are not set." - ) - else: - msg = ( - "Defined executable paths for application \"{}\"({})" - " are not available at this machine." - ) - - details = "Defined paths:" - for executable in self.application.executables: - details += "\n- {}".format(executable) - - msg = msg.format( - self.application.full_label, self.application.app_name - ) + except ApplictionExecutableNotFound as exc: + details = exc.details + msg = exc.message log_msg = str(msg) if details: log_msg += "\n" + details From 6d9d7235a2d3af1a8dfe90f35f767409f000cebc Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 11:52:50 +0100 Subject: [PATCH 47/86] error message appears in ftrack whene executable was not found --- pype/lib/applications.py | 1 + pype/modules/ftrack/actions/action_applications.py | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index d7b028d0fcf..cc819abf513 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -60,6 +60,7 @@ def __init__(self, application): if details: # Is good idea to pass new line symbol to exception message? exc_mgs += "\n" + details + self.exc_msg = exc_mgs super(ApplictionExecutableNotFound, self).__init__(exc_mgs) diff --git a/pype/modules/ftrack/actions/action_applications.py b/pype/modules/ftrack/actions/action_applications.py index 63540213e39..89016043dc3 100644 --- a/pype/modules/ftrack/actions/action_applications.py +++ b/pype/modules/ftrack/actions/action_applications.py @@ -5,7 +5,8 @@ from pype.modules.ftrack.lib import BaseAction from pype.lib import ( ApplicationManager, - ApplicationLaunchFailed + ApplicationLaunchFailed, + ApplictionExecutableNotFound ) from avalon.api import AvalonMongoDB @@ -180,6 +181,13 @@ def launch(self, session, entities, event): task_name=task_name ) + except ApplictionExecutableNotFound as exc: + self.log.warning(exc.exc_msg) + return { + "success": False, + "message": exc.message + } + except ApplicationLaunchFailed as exc: self.log.error(str(exc)) return { From dec7fbc9bc099819c21f87e102f00daeded56f20 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 11:54:33 +0100 Subject: [PATCH 48/86] changed `message` attribute to `msg` --- pype/lib/applications.py | 4 ++-- pype/modules/ftrack/actions/action_applications.py | 2 +- pype/tools/launcher/actions.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index cc819abf513..46141030de0 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -53,10 +53,10 @@ def __init__(self, application): for executable_path in application.executables: details += "\n- " + executable_path - self.message = msg.format(application.full_label, application.app_name) + self.msg = msg.format(application.full_label, application.app_name) self.details = details - exc_mgs = str(self.message) + exc_mgs = str(self.msg) if details: # Is good idea to pass new line symbol to exception message? exc_mgs += "\n" + details diff --git a/pype/modules/ftrack/actions/action_applications.py b/pype/modules/ftrack/actions/action_applications.py index 89016043dc3..a75b581ce3f 100644 --- a/pype/modules/ftrack/actions/action_applications.py +++ b/pype/modules/ftrack/actions/action_applications.py @@ -185,7 +185,7 @@ def launch(self, session, entities, event): self.log.warning(exc.exc_msg) return { "success": False, - "message": exc.message + "message": exc.msg } except ApplicationLaunchFailed as exc: diff --git a/pype/tools/launcher/actions.py b/pype/tools/launcher/actions.py index 0a1b73daaf6..6d0c94b6769 100644 --- a/pype/tools/launcher/actions.py +++ b/pype/tools/launcher/actions.py @@ -172,7 +172,7 @@ def process(self, session, **kwargs): except ApplictionExecutableNotFound as exc: details = exc.details - msg = exc.message + msg = exc.msg log_msg = str(msg) if details: log_msg += "\n" + details From 8d1b564decdbc9ae148150b001f0c820dc37c6d0 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Thu, 19 Nov 2020 13:52:42 +0100 Subject: [PATCH 49/86] add tools to settings --- .../{mtoa_3.1.1.json => mtoa_3.2.json} | 2 +- .../system_settings/global/applications.json | 2 +- .../system_settings/global/general.json | 4 +- .../system_settings/global/tools.json | 40 ++++++++++++++++-- .../system_schema/schema_tools.json | 42 ++++++++++--------- .../tool_settings/schema_arnold.json | 29 +++++++++++++ .../tool_settings/schema_vray.json | 29 +++++++++++++ .../tool_settings/schema_yeti.json | 29 +++++++++++++ .../tool_settings/template_tool_variant.json | 15 +++++++ 9 files changed, 165 insertions(+), 27 deletions(-) rename pype/settings/defaults/environments/{mtoa_3.1.1.json => mtoa_3.2.json} (95%) create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json diff --git a/pype/settings/defaults/environments/mtoa_3.1.1.json b/pype/settings/defaults/environments/mtoa_3.2.json similarity index 95% rename from pype/settings/defaults/environments/mtoa_3.1.1.json rename to pype/settings/defaults/environments/mtoa_3.2.json index f7b9f94d4ed..38c8cbbfc43 100644 --- a/pype/settings/defaults/environments/mtoa_3.1.1.json +++ b/pype/settings/defaults/environments/mtoa_3.2.json @@ -1,6 +1,6 @@ { "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoa_{MAYA_VERSION}_{MTOA_VERSION}", - "MTOA_VERSION": "3.1.1", + "MTOA_VERSION": "3.2.0", "MAYA_RENDER_DESC_PATH": "{MTOA}", "MAYA_MODULE_PATH": "{MTOA}", "ARNOLD_PLUGIN_PATH": "{MTOA}/shaders", diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index 294aebcda95..631b04f7ddc 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -31,7 +31,7 @@ "variants": { "maya_2020": { "enabled": true, - "label": "", + "label": "Super Maya", "variant_label": "2020", "icon": "", "executables": { diff --git a/pype/settings/defaults/system_settings/global/general.json b/pype/settings/defaults/system_settings/global/general.json index 23e8a3ff5d1..0369052a52e 100644 --- a/pype/settings/defaults/system_settings/global/general.json +++ b/pype/settings/defaults/system_settings/global/general.json @@ -1,6 +1,6 @@ { - "studio_name": "convert from \"PYPE_STUDIO_NAME\"", - "studio_code": "convert from \"PYPE_STUDIO_CODE\"", + "studio_name": "clothcat", + "studio_code": "CC", "project_plugins": { "windows": "convert from \"PYPE_PROJECT_PLUGINS\"", "darwin": "", diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index 1f8c2ad1ea6..8f1c5a0f095 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -1,6 +1,38 @@ { - "mtoa_3.0.1": false, - "mtoa_3.1.1": false, - "mtoa_3.2.0": true, - "yeti_2.1.2": true + "mtoa": { + "enabled": true, + "environment": { + "__environment_keys__": { + "null": [] + } + }, + "variants": { + "mtoa": {} + } + }, + "vray": { + "enabled": true, + "environment": { + "__environment_keys__": { + "null": [] + } + }, + "variants": { + "vray": {} + } + }, + "yeti": { + "enabled": true, + "environment": { + "__environment_keys__": { + "null": [] + } + }, + "variants": { + "yeti": {} + } + }, + "variants": { + "othertools": {} + } } \ No newline at end of file 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 08b8d13d896..994e48c49cf 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 @@ -3,25 +3,29 @@ "type": "dict", "label": "Tools", "collapsable": true, - "is_group": true, "is_file": true, "children": [ - { - "key": "mtoa_3.0.1", - "type": "boolean", - "label": "Arnold Maya 3.0.1" - }, { - "key": "mtoa_3.1.1", - "type": "boolean", - "label": "Arnold Maya 3.1.1" - }, { - "key": "mtoa_3.2.0", - "type": "boolean", - "label": "Arnold Maya 3.2.0" - }, { - "key": "yeti_2.1.2", - "type": "boolean", - "label": "Yeti 2.1.2" - } - ] + { + "type": "schema", + "name": "schema_arnold" + }, + { + "type": "schema", + "name": "schema_vray" + }, + { + "type": "schema", + "name": "schema_yeti" + }, + { + "type": "schema_template", + "name": "template_tool_variant", + "template_data": [ + { + "tool_name": "othertools", + "tool_label": "Other Tools and Plugins" + } + ] + } + ] } diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json new file mode 100644 index 00000000000..0df8b6e3a23 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json @@ -0,0 +1,29 @@ +{ + "type": "dict", + "key": "mtoa", + "label": "Autodesk Arnold", + "collapsable": true, + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "key": "environment", + "label": "Environment", + "type": "raw-json" + }, + { + "type": "schema_template", + "name": "template_tool_variant", + "template_data": [ + { + "tool_name": "mtoa", + "tool_label": "Arnold Versions" + } + ] + } + ] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json new file mode 100644 index 00000000000..9b352e3ad53 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json @@ -0,0 +1,29 @@ +{ + "type": "dict", + "key": "vray", + "label": "Chaos Group Vray", + "collapsable": true, + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "key": "environment", + "label": "Environment", + "type": "raw-json" + }, + { + "type": "schema_template", + "name": "template_tool_variant", + "template_data": [ + { + "tool_name": "vray", + "tool_label": "Vray Versions" + } + ] + } + ] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json new file mode 100644 index 00000000000..5f252f56fd5 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json @@ -0,0 +1,29 @@ +{ + "type": "dict", + "key": "yeti", + "label": "Pergrine Labs Yeti", + "collapsable": true, + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "key": "environment", + "label": "Environment", + "type": "raw-json" + }, + { + "type": "schema_template", + "name": "template_tool_variant", + "template_data": [ + { + "tool_name": "yeti", + "tool_label": "Yeti Versions" + } + ] + } + ] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json new file mode 100644 index 00000000000..6e58f568125 --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json @@ -0,0 +1,15 @@ +[ + { + "type": "dict-invisible", + "key": "variants", + "children": [ { + "type": "dict-modifiable", + "key": "{tool_name}", + "label": "{tool_label}", + "object_type": { + "type": "raw-json" + } + }] + } + +] From 14024bc61e39b86d52f354a169fe9314b31e8d6f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 19 Nov 2020 19:37:37 +0100 Subject: [PATCH 50/86] invalidate raw json on init --- pype/tools/settings/settings/widgets/item_types.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 0b6c22a3e03..55895869cc6 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -1286,6 +1286,7 @@ def __init__( QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.MinimumExpanding ) + self._is_invalid = self.input_field.has_invalid_value() self.setFocusProxy(self.input_field) From 08b21b6ccf016301a8cac1681c2c82e5ff65f465 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 09:43:14 +0100 Subject: [PATCH 51/86] modifiable dict in tools can have the key `variants` --- .../tool_settings/template_tool_variant.json | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json index 6e58f568125..4c49106462f 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json @@ -1,15 +1,11 @@ [ { - "type": "dict-invisible", + "type": "dict-modifiable", "key": "variants", - "children": [ { - "type": "dict-modifiable", - "key": "{tool_name}", - "label": "{tool_label}", - "object_type": { - "type": "raw-json" - } - }] + "label": "{tool_label}", + "object_type": { + "type": "raw-json" + } } ] From e629403844972aa2044caec50406b751c563ca9c Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 09:43:49 +0100 Subject: [PATCH 52/86] wrapped other tools to dict-invisible to keep same structure --- .../system_schema/schema_tools.json | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) 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 994e48c49cf..97fbd5c3909 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 @@ -5,27 +5,33 @@ "collapsable": true, "is_file": true, "children": [ - { - "type": "schema", - "name": "schema_arnold" - }, - { - "type": "schema", - "name": "schema_vray" - }, - { - "type": "schema", - "name": "schema_yeti" - }, - { - "type": "schema_template", - "name": "template_tool_variant", - "template_data": [ - { - "tool_name": "othertools", - "tool_label": "Other Tools and Plugins" - } - ] - } - ] + { + "type": "schema", + "name": "schema_arnold" + }, + { + "type": "schema", + "name": "schema_vray" + }, + { + "type": "schema", + "name": "schema_yeti" + }, + { + "type": "dict-invisible", + "key": "other", + "children": [ + { + "type": "schema_template", + "name": "template_tool_variant", + "template_data": [ + { + "tool_name": "othertools", + "tool_label": "Other Tools and Plugins" + } + ] + } + ] + } + ] } From c1d2e85912826ddc6f23ceb411639469211d972b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 09:44:21 +0100 Subject: [PATCH 53/86] updated tools values --- .../defaults/system_settings/global/tools.json | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index 8f1c5a0f095..61467f8a670 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -6,9 +6,7 @@ "null": [] } }, - "variants": { - "mtoa": {} - } + "variants": {} }, "vray": { "enabled": true, @@ -17,9 +15,7 @@ "null": [] } }, - "variants": { - "vray": {} - } + "variants": {} }, "yeti": { "enabled": true, @@ -28,11 +24,9 @@ "null": [] } }, - "variants": { - "yeti": {} - } + "variants": {} }, - "variants": { - "othertools": {} + "other": { + "variants": {} } } \ No newline at end of file From 0acf2bd28ebb45c45111f90c1ae4cfc2a0126779 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 09:50:25 +0100 Subject: [PATCH 54/86] filled few paths --- .../system_settings/global/applications.json | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index 631b04f7ddc..5be549b9037 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -39,7 +39,9 @@ "C:\\Program Files\\Autodesk\\Maya2020\\bin\\maya.exe" ], "darwin": [], - "linux": [] + "linux": [ + "/usr/autodesk/maya2020/bin/maya" + ] }, "environment": { "__environment_keys__": { @@ -53,9 +55,13 @@ "variant_label": "2019", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Autodesk\\Maya2019\\bin\\maya.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/autodesk/maya2019/bin/maya" + ] }, "environment": { "__environment_keys__": { @@ -69,9 +75,13 @@ "variant_label": "2018", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Autodesk\\Maya2017\\bin\\maya.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/autodesk/maya2018/bin/maya" + ] }, "environment": { "__environment_keys__": { @@ -593,7 +603,9 @@ "variant_label": "2.83", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Blender Foundation\\Blender 2.83\\blender.exe" + ], "darwin": [], "linux": [] }, @@ -675,7 +687,9 @@ "icon": "", "executables": { "windows": [], - "darwin": [], + "darwin": [ + "/Applications/Toon Boom Harmony 17 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium" + ], "linux": [] }, "environment": { From 0e00e93d17739039b94984c9885f2cd7d0740f3d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 09:58:08 +0100 Subject: [PATCH 55/86] filled few paths --- .../system_settings/global/applications.json | 76 ++++++++++++++----- 1 file changed, 57 insertions(+), 19 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index 5be549b9037..e825168941c 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -118,9 +118,13 @@ "variant_label": "12.0", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke12.0v1/Nuke12.0" + ] }, "environment": { "__environment_keys__": { @@ -134,9 +138,13 @@ "variant_label": "11.3", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke11.3v5/Nuke11.3" + ] }, "environment": { "__environment_keys__": { @@ -150,7 +158,9 @@ "variant_label": "11.2", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.2v2\\Nuke11.2.exe" + ], "darwin": [], "linux": [] }, @@ -189,9 +199,13 @@ "variant_label": "12.0", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke12.0v1/Nuke12.0" + ] }, "environment": { "__environment_keys__": { @@ -205,9 +219,13 @@ "variant_label": "11.3", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke11.3v5/Nuke11.3" + ] }, "environment": { "__environment_keys__": { @@ -221,7 +239,9 @@ "variant_label": "11.2", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.2v2\\Nuke11.2.exe" + ], "darwin": [], "linux": [] }, @@ -264,9 +284,13 @@ "variant_label": "12.0", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke12.0v1/Nuke12.0" + ] }, "environment": { "__environment_keys__": { @@ -280,9 +304,13 @@ "variant_label": "11.3", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke11.3v5/Nuke11.3" + ] }, "environment": { "__environment_keys__": { @@ -339,9 +367,13 @@ "variant_label": "12.0", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke12.0v1\\Nuke12.0.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke12.0v1/Nuke12.0" + ] }, "environment": { "__environment_keys__": { @@ -355,9 +387,13 @@ "variant_label": "11.3", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.3v1\\Nuke11.3.exe" + ], "darwin": [], - "linux": [] + "linux": [ + "/usr/local/Nuke11.3v5/Nuke11.3" + ] }, "environment": { "__environment_keys__": { @@ -371,7 +407,9 @@ "variant_label": "11.2", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Nuke11.2v2\\Nuke11.2.exe" + ], "darwin": [], "linux": [] }, From 72c6a4c847c3be486e69a898dcb20f50f67ab38d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 10:26:28 +0100 Subject: [PATCH 56/86] store environment metadata only if raw json is marked for environment variables --- pype/tools/settings/settings/widgets/item_types.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 55895869cc6..cf56513a489 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -1329,11 +1329,12 @@ def item_value(self): def config_value(self): value = self.item_value() - value[METADATA_KEY] = { - "environments": { - self.env_group_key: list(value.keys()) + if self.is_environ: + value[METADATA_KEY] = { + "environments": { + self.env_group_key: list(value.keys()) + } } - } return {self.key: value} From 510ec38aefc7fac23f27b3468ab39184e35c2eb6 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 11:06:17 +0100 Subject: [PATCH 57/86] empty env metadata keys --- .../system_settings/global/tools.json | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index 61467f8a670..65f15601513 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -1,32 +1,20 @@ { "mtoa": { "enabled": true, - "environment": { - "__environment_keys__": { - "null": [] - } - }, + "environment": {}, "variants": {} }, "vray": { "enabled": true, - "environment": { - "__environment_keys__": { - "null": [] - } - }, + "environment": {}, "variants": {} }, "yeti": { "enabled": true, - "environment": { - "__environment_keys__": { - "null": [] - } - }, + "environment": {}, "variants": {} }, "other": { "variants": {} } -} \ No newline at end of file +} From 25e025d5c332df39343e4b505480bd4f0a194453 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Fri, 20 Nov 2020 11:22:16 +0100 Subject: [PATCH 58/86] add mtoa example environment --- .../system_settings/global/tools.json | 43 +++++++++++++++++-- .../tool_settings/schema_arnold.json | 5 ++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index 65f15601513..177fc7c5422 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -1,8 +1,45 @@ { "mtoa": { "enabled": true, - "environment": {}, - "variants": {} + "environment": { + "__environment_keys__": { + "mtoa": [ + "MTOA", + "MAYA_RENDER_DESC_PATH", + "MAYA_MODULE_PATH", + "ARNOLD_PLUGIN_PATH", + "MTOA_EXTENSIONS_PATH", + "MTOA_EXTENSIONS", + "DYLD_LIBRARY_PATH", + "PATH" + ] + }, + "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoa_{MAYA_VERSION}_{MTOA_VERSION}", + "MAYA_RENDER_DESC_PATH": "{MTOA}", + "MAYA_MODULE_PATH": "{MTOA}", + "ARNOLD_PLUGIN_PATH": "{MTOA}/shaders", + "MTOA_EXTENSIONS_PATH": { + "darwin": "{MTOA}/extensions", + "linux": "{MTOA}/extensions", + "windows": "{MTOA}/extensions" + }, + "MTOA_EXTENSIONS": { + "darwin": "{MTOA}/extensions", + "linux": "{MTOA}/extensions", + "windows": "{MTOA}/extensions" + }, + "DYLD_LIBRARY_PATH": { + "darwin": "{MTOA}/bin" + }, + "PATH": { + "windows": "{PATH};{MTOA}/bin" + } + }, + "variants": { + "mtoa_3.2": { + "MTOA_VERSION": "3.2" + } + } }, "vray": { "enabled": true, @@ -17,4 +54,4 @@ "other": { "variants": {} } -} +} \ No newline at end of file diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json index 0df8b6e3a23..c0a1dfd803b 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json @@ -12,8 +12,9 @@ }, { "key": "environment", - "label": "Environment", - "type": "raw-json" + "label": "Environment (mtoa)", + "type": "raw-json", + "env_group_key": "mtoa" }, { "type": "schema_template", From 2dc662c156df05abc9b2d32540496c34c6e0768b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 11:43:16 +0100 Subject: [PATCH 59/86] added ApplicationTool structure --- pype/lib/applications.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 46141030de0..653774dd188 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -531,6 +531,7 @@ def __init__(self): self.log = Logger().get_logger(self.__class__.__name__) self.applications = {} + self.tools = {} self.refresh() @@ -541,6 +542,7 @@ def __iter__(self): def refresh(self): """Refresh applications from settings.""" settings = system_settings() + hosts_definitions = settings["global"]["applications"] for host_name, variant_definitions in hosts_definitions.items(): enabled = variant_definitions["enabled"] @@ -567,6 +569,21 @@ def refresh(self): host_name, app_name, app_data, self ) + tools_definitions = settings["global"]["tools"] + for tool_group_name, tool_group_data in tools_definitions.items(): + enabled = tool_group_data.get("enabled", True) + tool_variants = tool_group_data.get("variants") or {} + for tool_name, tool_data in tool_variants.items(): + if tool_name in self.tools: + self.log.warning(( + "Duplicated tool name in settings \"{}\"" + ).format(tool_name)) + + _enabled = tool_data.get("enabled", enabled) + self.tools[tool_name] = ApplicationTool( + tool_name, tool_group_name, _enabled + ) + def launch(self, app_name, **data): """Launch procedure. @@ -602,6 +619,25 @@ def launch(self, app_name, **data): return context.launch() +class ApplicationTool: + """Hold information about application tool. + + Structure of tool information. + + Args: + tool_name (str): Name of the tool. + group_name (str): Name of group which wraps tool. + enabled (bool): Is tool enabled by studio. + """ + def __init__(self, tool_name, group_name, enabled): + self.name = tool_name + self.group_name = group_name + self.enabled = enabled + + def __bool__(self): + return self.enabled + + class Application: """Hold information about application. From e62948ee8825e081899314699c50d0efd1eb2451 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 11:46:08 +0100 Subject: [PATCH 60/86] use ApplciationTool in environment setting --- pype/lib/applications.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 653774dd188..4d49184e817 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -790,6 +790,10 @@ def app_name(self): def host_name(self): return self.application.host_name + @property + def manager(self): + return self.application.manager + def launch(self): """Collect data for new process and then create it. @@ -895,8 +899,13 @@ def prepare_host_environments(self): if asset_doc: # Add tools environments for key in asset_doc["data"].get("tools_env") or []: - if key not in env_keys: - env_keys.append(key) + tool = self.manager.tools.get(key) + if tool: + if tool.group_name not in env_keys: + env_keys.append(key) + + if tool.name not in env_keys: + env_keys.append(key) settings_env = self.data["settings_env"] env_values = {} From 81caa9273ba75f61b66e471633aec7916affa352 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 11:48:24 +0100 Subject: [PATCH 61/86] removed Super Maya label --- pype/settings/defaults/system_settings/global/applications.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index e825168941c..105033efa87 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -31,7 +31,7 @@ "variants": { "maya_2020": { "enabled": true, - "label": "Super Maya", + "label": "", "variant_label": "2020", "icon": "", "executables": { From 2ac5333fc7a78fccb676fbfb1516b94ece3e8017 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:36:32 +0100 Subject: [PATCH 62/86] remove check of as widget item for env groups --- pype/tools/settings/settings/widgets/item_types.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index cf56513a489..93efb963336 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -160,11 +160,6 @@ def initial_attributes(self, input_data, parent, as_widget): "Item {} does not allow to store environment values" ).format(input_data["type"])) - if self.as_widget: - raise TypeError(( - "Item is used as widget and" - " marked to store environments at the same time." - )) self.add_environ_field(self) any_parent_as_widget = parent.as_widget From 2bb03726c2b9da14b982aaf4b9deccf183dd6188 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:36:51 +0100 Subject: [PATCH 63/86] env_group_key has setter --- pype/tools/settings/settings/widgets/item_types.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 93efb963336..34d1cdc7c01 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -223,12 +223,20 @@ def has_studio_override(self): @property def is_environ(self): - return self._env_group_key is not None + return self.env_group_key is not None @property def env_group_key(self): return self._env_group_key + @env_group_key.setter + def env_group_key(self, value): + if value is not None and not isinstance(value, str): + raise TypeError( + "Expected 'None' of 'str'. Got {}".format(str(type(value))) + ) + self._env_group_key = value + def add_environ_field(self, input_field): self._parent.add_environ_field(input_field) From 6881740e52d4794efef90b69ea71b5245a0de9ea Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:37:41 +0100 Subject: [PATCH 64/86] raw json cares about metadata during `item_value` method --- pype/tools/settings/settings/widgets/item_types.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 34d1cdc7c01..000f2720eb5 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -1328,17 +1328,18 @@ def item_value(self): output = {} for key, value in value.items(): output[key.upper()] = value - return output - def config_value(self): - value = self.item_value() if self.is_environ: - value[METADATA_KEY] = { + output[METADATA_KEY] = { "environments": { - self.env_group_key: list(value.keys()) + self.env_group_key: list(output.keys()) } } - return {self.key: value} + + return output + + def config_value(self): + return {self.key: self.item_value()} class ListItem(QtWidgets.QWidget, SettingObject): From 15ca7273d0abace4fe8079057235c5a2ba59c6ee Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:38:04 +0100 Subject: [PATCH 65/86] modifiable dictionary can be marked to store env groups --- pype/tools/settings/settings/widgets/item_types.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 000f2720eb5..71ae77d40fb 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2041,6 +2041,10 @@ def apply_overrides(self, key, value): self.key_input.setText(key) self.value_input.apply_overrides(value) + @property + def value_is_env_group(self): + return self._parent.value_is_env_group + @property def is_group(self): return self._parent.is_group @@ -2139,6 +2143,7 @@ def __init__( self.input_fields = [] self.key = input_data["key"] + self.value_is_env_group = input_data.get("value_is_env_group") or False object_type = input_data["object_type"] if isinstance(object_type, dict): @@ -2156,6 +2161,9 @@ def __init__( )) self.item_schema.update(input_modifiers) + if self.value_is_env_group: + self.item_schema["env_group_key"] = "" + if input_data.get("highlight_content", False): content_state = "hightlighted" bottom_margin = 5 From ea6a55db712259c2c17138fb3ab571c810394efb Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:38:26 +0100 Subject: [PATCH 66/86] key change in modifiable dictionary item has inter method --- pype/tools/settings/settings/widgets/item_types.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 71ae77d40fb..fd5364ea172 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2003,7 +2003,7 @@ def __init__(self, item_schema, config_parent, parent): self.add_btn.clicked.connect(self.on_add_clicked) self.remove_btn.clicked.connect(self.on_remove_clicked) - self.key_input.textChanged.connect(self._on_value_change) + self.key_input.textChanged.connect(self._on_key_change) self.value_input.value_changed.connect(self._on_value_change) self.origin_key = NOT_SET @@ -2022,6 +2022,11 @@ def is_key_invalid(self): return True return False + def _on_key_change(self): + if self.value_is_env_group: + self.value_input.env_group_key = self.key_input.text() + self._on_value_change() + def _on_value_change(self, item=None): self.update_style() self.value_changed.emit(self) From a007c39753ba6e31bcc688484f2aca567bd0d56f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:38:50 +0100 Subject: [PATCH 67/86] tools modifiable dictionary is marked to store env variables --- .../system_schema/tool_settings/template_tool_variant.json | 1 + 1 file changed, 1 insertion(+) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json index 4c49106462f..f46bd8081b4 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json @@ -3,6 +3,7 @@ "type": "dict-modifiable", "key": "variants", "label": "{tool_label}", + "value_is_env_group": true, "object_type": { "type": "raw-json" } From 6092942218347619597eaa476d62b740d2d37571 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:39:04 +0100 Subject: [PATCH 68/86] new tools data with metadata --- .../defaults/system_settings/global/tools.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index 177fc7c5422..314b66ad7e7 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -37,7 +37,20 @@ }, "variants": { "mtoa_3.2": { + "__environment_keys__": { + "mtoa_3.2": [ + "MTOA_VERSION" + ] + }, "MTOA_VERSION": "3.2" + }, + "mtoa_3.1": { + "__environment_keys__": { + "mtoa_3.1": [ + "MTOA_VERSION" + ] + }, + "MTOA_VERSION": "3.1" } } }, From 005194212fff99b238a0464155fe3f133de48eea Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 12:44:29 +0100 Subject: [PATCH 69/86] tool_name is not needed for toom template --- .../gui_schemas/system_schema/tool_settings/schema_arnold.json | 1 - .../gui_schemas/system_schema/tool_settings/schema_vray.json | 1 - .../gui_schemas/system_schema/tool_settings/schema_yeti.json | 1 - .../system_schema/tool_settings/template_tool_variant.json | 1 - 4 files changed, 4 deletions(-) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json index c0a1dfd803b..b756788a43e 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_arnold.json @@ -21,7 +21,6 @@ "name": "template_tool_variant", "template_data": [ { - "tool_name": "mtoa", "tool_label": "Arnold Versions" } ] diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json index 9b352e3ad53..8ddd5435f6c 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_vray.json @@ -20,7 +20,6 @@ "name": "template_tool_variant", "template_data": [ { - "tool_name": "vray", "tool_label": "Vray Versions" } ] diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json index 5f252f56fd5..16b1b03aadd 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/schema_yeti.json @@ -20,7 +20,6 @@ "name": "template_tool_variant", "template_data": [ { - "tool_name": "yeti", "tool_label": "Yeti Versions" } ] diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json index f46bd8081b4..b0ba63469cd 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/tool_settings/template_tool_variant.json @@ -8,5 +8,4 @@ "type": "raw-json" } } - ] From 326dbd012efb984ddefdb08467cf93b5b7b48a74 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 13:37:54 +0100 Subject: [PATCH 70/86] added few logs --- pype/lib/applications.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 4d49184e817..b42871cb3f5 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -2,6 +2,7 @@ import sys import re import getpass +import json import copy import platform import logging @@ -807,6 +808,11 @@ def launch(self): return args = self.clear_launch_args(self.launch_args) + self.log.debug( + "Launching \"{}\" with args: {} and kwargs: {}".format( + self.app_name, args, self.kwargs + ) + ) self.process = subprocess.Popen(args, **self.kwargs) # TODO do this with after-launch hooks @@ -866,6 +872,7 @@ def prepare_global_data(self): ) return + self.log.debug(f"Project name is set to \"{project_name}\"") # Anatomy self.data["anatomy"] = Anatomy(project_name) @@ -882,6 +889,9 @@ def prepare_global_data(self): asset_name = self.data.get("asset_name") if not asset_name: + self.log.warning( + "Asset name was not set. Skipping asset document query." + ) return asset_doc = dbcon.find_one({ @@ -907,6 +917,8 @@ def prepare_host_environments(self): if tool.name not in env_keys: env_keys.append(key) + self.log.debug(f"Finding environment groups for keys: {env_keys}") + settings_env = self.data["settings_env"] env_values = {} for env_key in env_keys: @@ -949,6 +961,7 @@ def prepare_context_environments(self): anatomy_filled = anatomy.format(workdir_data) workdir = os.path.normpath(anatomy_filled["work"]["folder"]) if not os.path.exists(workdir): + self.log.debug(f"Creating workdir folder: \"{workdir}\"") os.makedirs(workdir) except Exception as exc: @@ -965,6 +978,11 @@ def prepare_context_environments(self): "AVALON_HIERARCHY": hierarchy, "AVALON_WORKDIR": workdir } + self.log.debug( + "Context environemnts set:\n{}".format( + json.dumps(context_env, indent=4) + ) + ) self.env.update(context_env) self.prepare_last_workfile(workdir) @@ -1018,6 +1036,12 @@ def prepare_last_workfile(self, workdir): str(int(bool(start_last_workfile))) ) + _sub_msg = "" if start_last_workfile else " not" + self.log.debug( + "Last workfile should{} be opened on start.".format(_sub_msg) + ) + + # Last workfile path last_workfile_path = "" extensions = avalon.api.HOST_WORKFILE_EXTENSIONS.get(self.host_name) if extensions: @@ -1034,6 +1058,13 @@ def prepare_last_workfile(self, workdir): workdir, file_template, workdir_data, extensions, True ) + if os.path.exists(last_workfile_path): + self.log.debug(( + "Workfiles for launch context does not exists" + " yet but path will be set." + )) + self.log.debug(f"Setting last workfile path: {last_workfile_path}") + self.env["AVALON_LAST_WORKFILE"] = last_workfile_path self.data["last_workfile_path"] = last_workfile_path From 77ae17faf89f4e9ca92c2c55345e9e3f279dfa3e Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 13:45:44 +0100 Subject: [PATCH 71/86] fix env groups --- pype/lib/applications.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index b42871cb3f5..e78d5014586 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -809,9 +809,7 @@ def launch(self): args = self.clear_launch_args(self.launch_args) self.log.debug( - "Launching \"{}\" with args: {} and kwargs: {}".format( - self.app_name, args, self.kwargs - ) + "Launching \"{}\" with args: {}".format(self.app_name, args) ) self.process = subprocess.Popen(args, **self.kwargs) @@ -903,7 +901,7 @@ def prepare_global_data(self): def prepare_host_environments(self): """Modify launch environments based on launched app and context.""" # Keys for getting environments - env_keys = [self.app_name, self.host_name] + env_keys = [self.host_name, self.app_name] asset_doc = self.data.get("asset_doc") if asset_doc: @@ -912,10 +910,10 @@ def prepare_host_environments(self): tool = self.manager.tools.get(key) if tool: if tool.group_name not in env_keys: - env_keys.append(key) + env_keys.append(tool.group_name) if tool.name not in env_keys: - env_keys.append(key) + env_keys.append(tool.name) self.log.debug(f"Finding environment groups for keys: {env_keys}") From 9258f2ea20a74a1f5a3db922f2b27908c57512b7 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 14:36:22 +0100 Subject: [PATCH 72/86] keep python 2 support --- pype/lib/applications.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index e78d5014586..15929bfd563 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -870,7 +870,7 @@ def prepare_global_data(self): ) return - self.log.debug(f"Project name is set to \"{project_name}\"") + self.log.debug("Project name is set to \"{}\"".format(project_name)) # Anatomy self.data["anatomy"] = Anatomy(project_name) @@ -915,7 +915,9 @@ def prepare_host_environments(self): if tool.name not in env_keys: env_keys.append(tool.name) - self.log.debug(f"Finding environment groups for keys: {env_keys}") + self.log.debug( + "Finding environment groups for keys: {}".format(env_keys) + ) settings_env = self.data["settings_env"] env_values = {} @@ -959,7 +961,9 @@ def prepare_context_environments(self): anatomy_filled = anatomy.format(workdir_data) workdir = os.path.normpath(anatomy_filled["work"]["folder"]) if not os.path.exists(workdir): - self.log.debug(f"Creating workdir folder: \"{workdir}\"") + self.log.debug( + "Creating workdir folder: \"{}\"".format(workdir) + ) os.makedirs(workdir) except Exception as exc: @@ -1061,7 +1065,9 @@ def prepare_last_workfile(self, workdir): "Workfiles for launch context does not exists" " yet but path will be set." )) - self.log.debug(f"Setting last workfile path: {last_workfile_path}") + self.log.debug( + "Setting last workfile path: {}".format(last_workfile_path) + ) self.env["AVALON_LAST_WORKFILE"] = last_workfile_path self.data["last_workfile_path"] = last_workfile_path From 87c35e2e97f9e9b793cdd4474bd1b8258b5abc87 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 16:21:05 +0100 Subject: [PATCH 73/86] borrowed and modified acre merge function --- pype/lib/applications.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 15929bfd563..09ee92616bc 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -898,6 +898,15 @@ def prepare_global_data(self): }) self.data["asset_doc"] = asset_doc + def _merge_env(self, env, current_env): + """Modified function(merge) from acre module.""" + result = current_env.copy() + for key, value in env.items(): + # Keep missing keys by not filling `missing` kwarg + value = acre.lib.partial_format(value, data=current_env) + result[key] = value + return result + def prepare_host_environments(self): """Modify launch environments based on launched app and context.""" # Keys for getting environments @@ -926,10 +935,14 @@ def prepare_host_environments(self): if not _env_values: continue + # Choose right platform tool_env = acre.parse(_env_values) - env_values = acre.append(env_values, tool_env) + # Merge dictionaries + env_values = self._merge_env(tool_env, env_values) + + final_env = self._merge_env(acre.compute(env_values), self.env) - final_env = acre.merge(acre.compute(env_values), current_env=self.env) + # Update env self.env.update(final_env) def prepare_context_environments(self): From 9bba70944bdd32463392595ee16e3610b6861348 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 19:38:08 +0100 Subject: [PATCH 74/86] added ability to create applications and tools attribute with applications manager --- pype/lib/applications.py | 4 -- .../actions/action_create_cust_attrs.py | 44 ++++++++++++++++++- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 09ee92616bc..8de7efb3e2c 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -536,10 +536,6 @@ def __init__(self): self.refresh() - def __iter__(self): - for item in self.applications.items(): - yield item - def refresh(self): """Refresh applications from settings.""" settings = system_settings() diff --git a/pype/modules/ftrack/actions/action_create_cust_attrs.py b/pype/modules/ftrack/actions/action_create_cust_attrs.py index 21c4743725b..2d0cd8352b2 100644 --- a/pype/modules/ftrack/actions/action_create_cust_attrs.py +++ b/pype/modules/ftrack/actions/action_create_cust_attrs.py @@ -9,6 +9,7 @@ CUST_ATTR_ID_KEY, CUST_ATTR_GROUP, default_custom_attributes_definition ) from pype.api import config +from pype.lib import ApplicationManager, env_value_to_bool """ This action creates/updates custom attributes. @@ -145,6 +146,9 @@ class CustomAttributes(BaseAction): "text", "boolean", "date", "enumerator", "dynamic enumerator", "number" ) + # Pype 3 features + use_app_manager = env_value_to_bool("PYPE_USE_APP_MANAGER", default=False) + app_manager = None def discover(self, session, entities, event): ''' @@ -167,6 +171,9 @@ def launch(self, session, entities, event): }) session.commit() + if self.use_app_manager: + self.app_manager = ApplicationManager() + try: self.prepare_global_data(session) self.avalon_mongo_id_attributes(session, event) @@ -372,6 +379,18 @@ def convert_mongo_id_to_hierarchical( exc_info=True ) + def app_defs_from_app_manager(self): + app_definitions = [] + for app_name, app in self.app_manager.applications.items(): + if app.enabled: + app_definitions.append({ + app_name: app.full_label + }) + + if not app_definitions: + app_definitions.append({"empty": "< Empty >"}) + return app_definitions + def application_definitions(self): app_usages = self.presets.get("global", {}).get("applications") or {} @@ -416,6 +435,11 @@ def application_definitions(self): return app_definitions def applications_attribute(self, event): + if self.use_app_manager: + apps_data = self.app_defs_from_app_manager() + else: + apps_data = self.application_definitions() + applications_custom_attr_data = { "label": "Applications", "key": "applications", @@ -424,17 +448,33 @@ def applications_attribute(self, event): "group": CUST_ATTR_GROUP, "config": { "multiselect": True, - "data": self.application_definitions() + "data": apps_data } } self.process_attr_data(applications_custom_attr_data, event) - def tools_attribute(self, event): + def tools_from_app_manager(self): + tools_data = [] + for tool_name, tool in self.app_manager.tools.items(): + if tool.enabled: + tools_data.append({ + tool_name: tool_name + }) + return tools_data + + def tools_data(self): tool_usages = self.presets.get("global", {}).get("tools") or {} tools_data = [] for tool_name, usage in tool_usages.items(): if usage: tools_data.append({tool_name: tool_name}) + return tools_data + + def tools_attribute(self, event): + if self.use_app_manager: + tools_data = self.tools_from_app_manager() + else: + tools_data = self.tools_data() # Make sure there is at least one item if not tools_data: From 19a04ea11050be577210820abc4d3d9fbfd42175 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 19:44:16 +0100 Subject: [PATCH 75/86] added is_tool key to determine if has app group host implementation --- .../host_settings/template_host_unchangables.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json index 521d22d1c79..732fd06c307 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/template_host_unchangables.json @@ -11,4 +11,10 @@ "label": "Icon", "placeholder": "Host icon path template", "roles": ["developer"] +}, +{ + "type": "boolean", + "key": "is_host", + "label": "Has host implementation", + "roles": ["developer"] }] From 1e2c88b1b8941a8852cc71d288371ae7908cff01 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 20 Nov 2020 19:50:39 +0100 Subject: [PATCH 76/86] used is_host attribute to create applications in ftrack --- pype/lib/applications.py | 14 ++++++++++---- .../ftrack/actions/action_create_cust_attrs.py | 2 +- .../system_settings/global/applications.json | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/pype/lib/applications.py b/pype/lib/applications.py index 8de7efb3e2c..600530a00f9 100644 --- a/pype/lib/applications.py +++ b/pype/lib/applications.py @@ -546,7 +546,13 @@ def refresh(self): label = variant_definitions.get("label") or host_name variants = variant_definitions.get("variants") or {} icon = variant_definitions.get("icon") + is_host = variant_definitions.get("is_host", False) for app_name, app_data in variants.items(): + if app_name in self.applications: + raise AssertionError(( + "BUG: Duplicated application name in settings \"{}\"" + ).format(app_name)) + # If host is disabled then disable all variants if not enabled: app_data["enabled"] = enabled @@ -558,10 +564,9 @@ def refresh(self): if not app_data.get("icon"): app_data["icon"] = icon - if app_name in self.applications: - raise AssertionError(( - "BUG: Duplicated application name in settings \"{}\"" - ).format(app_name)) + is_host = app_data.get("is_host", is_host) + app_data["is_host"] = is_host + self.applications[app_name] = Application( host_name, app_name, app_data, self ) @@ -661,6 +666,7 @@ def __init__(self, host_name, app_name, app_data, manager): self.variant_label = app_data.get("variant_label") or None self.icon = app_data.get("icon") or None self.enabled = app_data.get("enabled", True) + self.is_host = app_data.get("is_host", False) executables = app_data["executables"] if isinstance(executables, dict): diff --git a/pype/modules/ftrack/actions/action_create_cust_attrs.py b/pype/modules/ftrack/actions/action_create_cust_attrs.py index 2d0cd8352b2..11931a5b308 100644 --- a/pype/modules/ftrack/actions/action_create_cust_attrs.py +++ b/pype/modules/ftrack/actions/action_create_cust_attrs.py @@ -382,7 +382,7 @@ def convert_mongo_id_to_hierarchical( def app_defs_from_app_manager(self): app_definitions = [] for app_name, app in self.app_manager.applications.items(): - if app.enabled: + if app.enabled and app.is_host: app_definitions.append({ app_name: app.full_label }) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index 105033efa87..ad1868632e1 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -3,6 +3,7 @@ "enabled": true, "label": "Autodesk Maya", "icon": "{}/app_icons/maya.png", + "is_host": true, "environment": { "__environment_keys__": { "maya": [ @@ -95,6 +96,7 @@ "enabled": true, "label": "Nuke", "icon": "{}/app_icons/nuke.png", + "is_host": true, "environment": { "__environment_keys__": { "nuke": [ @@ -176,6 +178,7 @@ "enabled": true, "label": "Nuke X", "icon": "{}/app_icons/nuke.png", + "is_host": true, "environment": { "__environment_keys__": { "nukex": [ @@ -257,6 +260,7 @@ "enabled": true, "label": "Nuke Studio", "icon": "{}/app_icons/nuke.png", + "is_host": true, "environment": { "__environment_keys__": { "nukestudio": [ @@ -340,6 +344,7 @@ "enabled": true, "label": "Hiero", "icon": "{}/app_icons/hiero.png", + "is_host": true, "environment": { "__environment_keys__": { "hiero": [ @@ -425,6 +430,7 @@ "enabled": true, "label": "BlackMagic Fusion", "icon": "{}/app_icons/fusion.png", + "is_host": true, "environment": { "__environment_keys__": { "fusion": [] @@ -469,6 +475,7 @@ "enabled": true, "label": "Blackmagic DaVinci Resolve", "icon": "{}/app_icons/resolve.png", + "is_host": true, "environment": { "__environment_keys__": { "resolve": [ @@ -546,6 +553,7 @@ "enabled": true, "label": "SideFX Houdini", "icon": "{}/app_icons/houdini.png", + "is_host": true, "environment": { "__environment_keys__": { "houdini": [ @@ -603,6 +611,7 @@ "enabled": true, "label": "Blender", "icon": "{}/app_icons/blender.png", + "is_host": true, "environment": { "__environment_keys__": { "blender": [ @@ -659,6 +668,7 @@ "enabled": true, "label": "Toon Boom Harmony", "icon": "{}/app_icons/harmony.png", + "is_host": true, "environment": { "__environment_keys__": { "harmony": [ @@ -742,6 +752,7 @@ "enabled": true, "label": "Adobe Photoshop", "icon": "{}/app_icons/photoshop.png", + "is_host": true, "environment": { "__environment_keys__": { "photoshop": [ @@ -781,6 +792,7 @@ "enabled": true, "label": "CelAction 2D", "icon": "app_icons/celaction.png", + "is_host": true, "environment": { "__environment_keys__": { "celaction": [ @@ -820,6 +832,7 @@ "enabled": true, "label": "Unreal Editor", "icon": "{}/app_icons/ue4.png'", + "is_host": true, "environment": { "__environment_keys__": { "unreal": [] @@ -906,6 +919,7 @@ "enabled": true, "label": "DJV View", "icon": "{}/app_icons/djvView.png", + "is_host": false, "environment": { "__environment_keys__": { "djvview": [] From c2f87939692d6e3a98273dbdb5995b614744b274 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 23 Nov 2020 12:44:02 +0100 Subject: [PATCH 77/86] add maya version defaults --- .../system_settings/global/applications.json | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index ad1868632e1..ab3dde66951 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -46,8 +46,11 @@ }, "environment": { "__environment_keys__": { - "maya_2020": [] - } + "maya_2020": [ + "MAYA_VERSION" + ] + }, + "MAYA_VERSION": "2020" } }, "maya_2019": { @@ -66,8 +69,11 @@ }, "environment": { "__environment_keys__": { - "maya_2019": [] - } + "maya_2019": [ + "MAYA_VERSION" + ] + }, + "MAYA_VERSION": "2019" } }, "maya_2018": { @@ -86,8 +92,11 @@ }, "environment": { "__environment_keys__": { - "maya_2018": [] - } + "maya_2018": [ + "MAYA_VERSION" + ] + }, + "MAYA_VERSION": "2018" } } } @@ -650,9 +659,7 @@ "variant_label": "2.83", "icon": "", "executables": { - "windows": [ - "C:\\Program Files\\Blender Foundation\\Blender 2.83\\blender.exe" - ], + "windows": [], "darwin": [], "linux": [] }, From ea8792dd21c325d27d78c5e3804b7ba1886e240b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 23 Nov 2020 12:47:03 +0100 Subject: [PATCH 78/86] added item validations to default savings too --- .../system_settings/global/applications.json | 4 +- pype/tools/settings/settings/widgets/base.py | 90 +++++++++++-------- 2 files changed, 57 insertions(+), 37 deletions(-) diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index ab3dde66951..e54e8293302 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -659,7 +659,9 @@ "variant_label": "2.83", "icon": "", "executables": { - "windows": [], + "windows": [ + "C:\\Program Files\\Blender Foundation\\Blender 2.83\\blender.exe" + ], "darwin": [], "linux": [] }, diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 9ceb192a154..7adbd6952c9 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -150,34 +150,40 @@ def reset(self): self._update_values() self.hierarchical_style_update() - def _save(self): + def items_are_valid(self): has_invalid = False for item in self.input_fields: if item.child_invalid: has_invalid = True - if has_invalid: - invalid_items = [] - for item in self.input_fields: - invalid_items.extend(item.get_invalid()) - msg_box = QtWidgets.QMessageBox( - QtWidgets.QMessageBox.Warning, - "Invalid input", - "There is invalid value in one of inputs." - " Please lead red color and fix them." - ) - msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok) - msg_box.exec_() + if not has_invalid: + return True + + invalid_items = [] + for item in self.input_fields: + invalid_items.extend(item.get_invalid()) + msg_box = QtWidgets.QMessageBox( + QtWidgets.QMessageBox.Warning, + "Invalid input", + "There is invalid value in one of inputs." + " Please lead red color and fix them." + ) + msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok) + msg_box.exec_() - first_invalid_item = invalid_items[0] - self.scroll_widget.ensureWidgetVisible(first_invalid_item) - if first_invalid_item.isVisible(): - first_invalid_item.setFocus(True) + first_invalid_item = invalid_items[0] + 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 _data = {} for input_field in self.input_fields: - value, is_group = input_field.studio_overrides() + value, _is_group = input_field.studio_overrides() if value is not lib.NOT_SET: _data.update(value) @@ -202,6 +208,9 @@ def _on_hide_studio_overrides(self, state): self.hierarchical_style_update() def _save_as_defaults(self): + if not self.items_are_valid(): + return + output = {} for item in self.input_fields: output.update(item.config_value()) @@ -615,29 +624,35 @@ def _save_as_defaults(self): self._update_values() self.hierarchical_style_update() - def _save(self): + def items_are_valid(self): has_invalid = False for item in self.input_fields: if item.child_invalid: has_invalid = True - if has_invalid: - invalid_items = [] - for item in self.input_fields: - invalid_items.extend(item.get_invalid()) - msg_box = QtWidgets.QMessageBox( - QtWidgets.QMessageBox.Warning, - "Invalid input", - "There is invalid value in one of inputs." - " Please lead red color and fix them." - ) - msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok) - msg_box.exec_() + if not has_invalid: + return True + + invalid_items = [] + for item in self.input_fields: + invalid_items.extend(item.get_invalid()) + msg_box = QtWidgets.QMessageBox( + QtWidgets.QMessageBox.Warning, + "Invalid input", + "There is invalid value in one of inputs." + " Please lead red color and fix them." + ) + msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok) + msg_box.exec_() - first_invalid_item = invalid_items[0] - self.scroll_widget.ensureWidgetVisible(first_invalid_item) - if first_invalid_item.isVisible(): - first_invalid_item.setFocus(True) + first_invalid_item = invalid_items[0] + 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: @@ -654,9 +669,12 @@ def _on_hide_studio_overrides(self, state): self.hierarchical_style_update() def _save_overrides(self): + if not self.items_are_valid(): + return + data = {} for item in self.input_fields: - value, is_group = item.overrides() + value, _is_group = item.overrides() if value is not lib.NOT_SET: data.update(value) From 9eec66e9671038913371baf63e90f062580c8a80 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 23 Nov 2020 18:38:41 +0100 Subject: [PATCH 79/86] default returns copy of cached defaults --- 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 96c3829388c..0e50fe6b0c6 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -56,7 +56,7 @@ def default_settings(): global _DEFAULT_SETTINGS if _DEFAULT_SETTINGS is None: _DEFAULT_SETTINGS = load_jsons_from_dir(DEFAULTS_DIR) - return _DEFAULT_SETTINGS + return copy.deepcopy(_DEFAULT_SETTINGS) def load_json(fpath): From 92255897ae2ecb7cc584125a33c94d92a53fb646 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 23 Nov 2020 18:38:57 +0100 Subject: [PATCH 80/86] find_environments does not pop metadata keys --- 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 0e50fe6b0c6..9a0fe922880 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -119,7 +119,7 @@ def find_environments(data): output = {} if M_ENVIRONMENT_KEY in data: - metadata = data.pop(M_ENVIRONMENT_KEY) + metadata = data.get(M_ENVIRONMENT_KEY) for env_group_key, env_keys in metadata.items(): output[env_group_key] = {} for key in env_keys: From 219515ea0ec3ae8c07913ee5da826c2673ed3158 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 23 Nov 2020 18:39:14 +0100 Subject: [PATCH 81/86] added few comments --- pype/settings/lib.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 9a0fe922880..38d8ce70c1b 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -299,8 +299,11 @@ def project_settings(project_name): def environments(): + # 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()) + for env_group_key, values in envs_from_system_settings.items(): envs[env_group_key] = values return envs From 8494fd55e6056a20def019e545fc42b6f3cf37d5 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 23 Nov 2020 18:39:25 +0100 Subject: [PATCH 82/86] duplicated environment group keys are checked --- pype/settings/lib.py | 68 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index 38d8ce70c1b..b40e726ad1c 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -47,6 +47,24 @@ _DEFAULT_SETTINGS = None +class DuplicatedEnvGroups(Exception): + def __init__(self, duplicated): + self.origin_duplicated = duplicated + self.duplicated = {} + for key, items in duplicated.items(): + self.duplicated[key] = [] + for item in items: + self.duplicated[key].append("/".join(item["parents"])) + + msg = "Duplicated environment group keys. {}".format( + ", ".join([ + "\"{}\"".format(env_key) for env_key in self.duplicated.keys() + ]) + ) + + super(DuplicatedEnvGroups, self).__init__(msg) + + def reset_default_settings(): global _DEFAULT_SETTINGS _DEFAULT_SETTINGS = None @@ -113,30 +131,58 @@ def load_json(fpath): return {} -def find_environments(data): +def find_environments(data, with_items=False, parents=None): if not data or not isinstance(data, dict): - return + return {} output = {} + if parents is None: + parents = [] + if M_ENVIRONMENT_KEY in data: metadata = data.get(M_ENVIRONMENT_KEY) for env_group_key, env_keys in metadata.items(): - output[env_group_key] = {} - for key in env_keys: - output[env_group_key][key] = data[key] + if env_group_key not in output: + output[env_group_key] = [] - for value in data.values(): - result = find_environments(value) + _env_values = {} + for key in env_keys: + _env_values[key] = data[key] + + item = { + "env": _env_values, + "parents": parents[:-1] + } + output[env_group_key].append(item) + + for key, value in data.items(): + _parents = copy.deepcopy(parents) + _parents.append(key) + result = find_environments(value, True, _parents) if not result: continue for env_group_key, env_values in result.items(): if env_group_key not in output: - output[env_group_key] = {} + output[env_group_key] = [] - for env_key, env_value in env_values.items(): - output[env_group_key][env_key] = env_value - return output + for env_values_item in env_values: + output[env_group_key].append(env_values_item) + + if with_items: + return output + + duplicated_env_groups = {} + final_output = {} + for key, value_in_list in output.items(): + if len(value_in_list) > 1: + duplicated_env_groups[key] = value_in_list + else: + final_output[key] = value_in_list[0]["env"] + + if duplicated_env_groups: + raise DuplicatedEnvGroups(duplicated_env_groups) + return final_output def subkey_merge(_dict, value, keys): From 4b1908be108dc87168b1021984efebac5247098b Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 23 Nov 2020 18:41:35 +0100 Subject: [PATCH 83/86] added validation of duplicated environemnt groupts to system settings --- pype/tools/settings/settings/widgets/base.py | 41 +++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/pype/tools/settings/settings/widgets/base.py b/pype/tools/settings/settings/widgets/base.py index 7adbd6952c9..3f842602ca8 100644 --- a/pype/tools/settings/settings/widgets/base.py +++ b/pype/tools/settings/settings/widgets/base.py @@ -1,4 +1,5 @@ import os +import copy import json from Qt import QtWidgets, QtCore, QtGui from pype.settings.lib import ( @@ -22,7 +23,11 @@ project_anatomy_overrides, path_to_project_overrides, - path_to_project_anatomy + path_to_project_anatomy, + + apply_overrides, + find_environments, + DuplicatedEnvGroups ) from .widgets import UnsavedChangesDialog from . import lib @@ -177,6 +182,34 @@ def items_are_valid(self): first_invalid_item.setFocus(True) return False + def duplicated_env_group_validation(self, values=None, overrides=None): + try: + if overrides is not None: + default_values = default_settings()[SYSTEM_SETTINGS_KEY] + values = apply_overrides(default_values, overrides) + else: + values = copy.deepcopy(values) + + # Check if values contain duplicated environment groups + find_environments(values) + + except DuplicatedEnvGroups as exc: + msg = "You have set same environment group key in multiple places." + for key, hierarchies in exc.duplicated.items(): + msg += "\nEnvironment group \"{}\":".format(key) + for hierarchy in hierarchies: + msg += "\n- {}".format(hierarchy) + + msg_box = QtWidgets.QMessageBox( + QtWidgets.QMessageBox.Warning, + "Duplicated environment groups", + msg + ) + msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok) + msg_box.exec_() + return False + return True + def _save(self): if not self.items_are_valid(): return @@ -189,6 +222,9 @@ def _save(self): 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) @@ -230,6 +266,9 @@ def _save_as_defaults(self): # Skip first key all_values = lib.convert_gui_data_with_metadata(all_values["system"]) + if not self.duplicated_env_group_validation(all_values): + return + prject_defaults_dir = os.path.join( DEFAULTS_DIR, SYSTEM_SETTINGS_KEY ) From cc31a9089e37d4b1e875f8769b72185e06b0625f Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 23 Nov 2020 22:44:47 +0100 Subject: [PATCH 84/86] remove application environments --- .../defaults/environments/blender.json | 8 ---- .../defaults/environments/celaction.json | 3 -- .../defaults/environments/deadline.json | 3 -- .../defaults/environments/ftrack.json | 18 --------- .../defaults/environments/harmony.json | 4 -- .../defaults/environments/houdini.json | 12 ------ pype/settings/defaults/environments/maya.json | 14 ------- .../defaults/environments/maya_2018.json | 11 ----- .../defaults/environments/maya_2020.json | 11 ----- .../defaults/environments/mtoa_3.2.json | 23 ----------- .../defaults/environments/muster.json | 3 -- pype/settings/defaults/environments/nuke.json | 15 ------- .../defaults/environments/nukestudio.json | 11 ----- .../environments/nukestudio_10.0.json | 4 -- .../settings/defaults/environments/nukex.json | 10 ----- .../defaults/environments/nukex_10.0.json | 4 -- .../defaults/environments/photoshop.json | 7 ---- .../defaults/environments/premiere.json | 11 ----- .../defaults/environments/resolve.json | 40 ------------------- .../defaults/environments/storyboardpro.json | 4 -- .../defaults/environments/unreal_4.24.json | 5 --- .../defaults/environments/vray_4300.json | 15 ------- .../defaults/project_anatomy/roots.json | 6 +-- .../plugins/celaction/publish.json | 2 +- .../plugins/ftrack/publish.json | 2 +- .../plugins/global/publish.json | 5 +-- .../plugins/nuke/publish.json | 4 +- .../plugins/standalonepublisher/publish.json | 17 -------- .../system_settings/global/applications.json | 21 ++++++---- .../system_settings/global/general.json | 6 ++- .../system_settings/global/modules.json | 9 ++++- .../system_settings/global/tools.json | 2 +- .../system_schema/schema_modules.json | 11 ----- 33 files changed, 35 insertions(+), 286 deletions(-) delete mode 100644 pype/settings/defaults/environments/blender.json delete mode 100644 pype/settings/defaults/environments/celaction.json delete mode 100644 pype/settings/defaults/environments/deadline.json delete mode 100644 pype/settings/defaults/environments/ftrack.json delete mode 100644 pype/settings/defaults/environments/harmony.json delete mode 100644 pype/settings/defaults/environments/houdini.json delete mode 100644 pype/settings/defaults/environments/maya.json delete mode 100644 pype/settings/defaults/environments/maya_2018.json delete mode 100644 pype/settings/defaults/environments/maya_2020.json delete mode 100644 pype/settings/defaults/environments/mtoa_3.2.json delete mode 100644 pype/settings/defaults/environments/muster.json delete mode 100644 pype/settings/defaults/environments/nuke.json delete mode 100644 pype/settings/defaults/environments/nukestudio.json delete mode 100644 pype/settings/defaults/environments/nukestudio_10.0.json delete mode 100644 pype/settings/defaults/environments/nukex.json delete mode 100644 pype/settings/defaults/environments/nukex_10.0.json delete mode 100644 pype/settings/defaults/environments/photoshop.json delete mode 100644 pype/settings/defaults/environments/premiere.json delete mode 100644 pype/settings/defaults/environments/resolve.json delete mode 100644 pype/settings/defaults/environments/storyboardpro.json delete mode 100644 pype/settings/defaults/environments/unreal_4.24.json delete mode 100644 pype/settings/defaults/environments/vray_4300.json diff --git a/pype/settings/defaults/environments/blender.json b/pype/settings/defaults/environments/blender.json deleted file mode 100644 index 00a4070b8e0..00000000000 --- a/pype/settings/defaults/environments/blender.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "BLENDER_USER_SCRIPTS": "{PYPE_SETUP_PATH}/repos/avalon-core/setup/blender", - "PYTHONPATH": [ - "{PYPE_SETUP_PATH}/repos/avalon-core/setup/blender", - "{PYTHONPATH}" - ], - "CREATE_NEW_CONSOLE": "yes" -} diff --git a/pype/settings/defaults/environments/celaction.json b/pype/settings/defaults/environments/celaction.json deleted file mode 100644 index cdd4e609ab7..00000000000 --- a/pype/settings/defaults/environments/celaction.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "CELACTION_TEMPLATE": "{PYPE_MODULE_ROOT}/pype/hosts/celaction/celaction_template_scene.scn" -} diff --git a/pype/settings/defaults/environments/deadline.json b/pype/settings/defaults/environments/deadline.json deleted file mode 100644 index e8ef52805b6..00000000000 --- a/pype/settings/defaults/environments/deadline.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "DEADLINE_REST_URL": "http://localhost:8082" -} diff --git a/pype/settings/defaults/environments/ftrack.json b/pype/settings/defaults/environments/ftrack.json deleted file mode 100644 index 4f25de027b5..00000000000 --- a/pype/settings/defaults/environments/ftrack.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "FTRACK_SERVER": "https://pype.ftrackapp.com", - "FTRACK_ACTIONS_PATH": [ - "{PYPE_MODULE_ROOT}/pype/modules/ftrack/actions" - ], - "FTRACK_EVENTS_PATH": [ - "{PYPE_MODULE_ROOT}/pype/modules/ftrack/events" - ], - "PYTHONPATH": [ - "{PYPE_MODULE_ROOT}/pype/vendor", - "{PYTHONPATH}" - ], - "PYBLISHPLUGINPATH": [ - "{PYPE_MODULE_ROOT}/pype/plugins/ftrack/publish" - ], - "FTRACK_EVENTS_MONGO_DB": "pype", - "FTRACK_EVENTS_MONGO_COL": "ftrack_events" -} diff --git a/pype/settings/defaults/environments/harmony.json b/pype/settings/defaults/environments/harmony.json deleted file mode 100644 index d3943439352..00000000000 --- a/pype/settings/defaults/environments/harmony.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "AVALON_HARMONY_WORKFILES_ON_LAUNCH": "1", - "PYBLISH_GUI_ALWAYS_EXEC": "1" -} diff --git a/pype/settings/defaults/environments/houdini.json b/pype/settings/defaults/environments/houdini.json deleted file mode 100644 index 95c7d190885..00000000000 --- a/pype/settings/defaults/environments/houdini.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "HOUDINI_PATH": { - "darwin": "{PYPE_MODULE_ROOT}/setup/houdini:&", - "linux": "{PYPE_MODULE_ROOT}/setup/houdini:&", - "windows": "{PYPE_MODULE_ROOT}/setup/houdini;&" - }, - "HOUDINI_MENU_PATH": { - "darwin": "{PYPE_MODULE_ROOT}/setup/houdini:&", - "linux": "{PYPE_MODULE_ROOT}/setup/houdini:&", - "windows": "{PYPE_MODULE_ROOT}/setup/houdini;&" - } -} diff --git a/pype/settings/defaults/environments/maya.json b/pype/settings/defaults/environments/maya.json deleted file mode 100644 index 7785b108f70..00000000000 --- a/pype/settings/defaults/environments/maya.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "PYTHONPATH": [ - "{PYPE_SETUP_PATH}/repos/avalon-core/setup/maya", - "{PYPE_SETUP_PATH}/repos/maya-look-assigner", - "{PYTHON_ENV}/python2/Lib/site-packages", - "{PYTHONPATH}" - ], - "MAYA_DISABLE_CLIC_IPM": "Yes", - "MAYA_DISABLE_CIP": "Yes", - "MAYA_DISABLE_CER": "Yes", - "PYMEL_SKIP_MEL_INIT": "Yes", - "LC_ALL": "C", - "PYPE_LOG_NO_COLORS": "Yes" -} diff --git a/pype/settings/defaults/environments/maya_2018.json b/pype/settings/defaults/environments/maya_2018.json deleted file mode 100644 index 72a0c57ce3d..00000000000 --- a/pype/settings/defaults/environments/maya_2018.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "MAYA_VERSION": "2018", - "MAYA_LOCATION": { - "darwin": "/Applications/Autodesk/maya{MAYA_VERSION}/Maya.app/Contents", - "linux": "/usr/autodesk/maya{MAYA_VERSION}", - "windows": "C:/Program Files/Autodesk/Maya{MAYA_VERSION}" - }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MAYA_LOCATION}/MacOS" - } -} diff --git a/pype/settings/defaults/environments/maya_2020.json b/pype/settings/defaults/environments/maya_2020.json deleted file mode 100644 index efd0250bc8e..00000000000 --- a/pype/settings/defaults/environments/maya_2020.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "MAYA_VERSION": "2020", - "MAYA_LOCATION": { - "darwin": "/Applications/Autodesk/maya{MAYA_VERSION}/Maya.app/Contents", - "linux": "/usr/autodesk/maya{MAYA_VERSION}", - "windows": "C:/Program Files/Autodesk/Maya{MAYA_VERSION}" - }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MAYA_LOCATION}/MacOS" - } -} diff --git a/pype/settings/defaults/environments/mtoa_3.2.json b/pype/settings/defaults/environments/mtoa_3.2.json deleted file mode 100644 index 38c8cbbfc43..00000000000 --- a/pype/settings/defaults/environments/mtoa_3.2.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoa_{MAYA_VERSION}_{MTOA_VERSION}", - "MTOA_VERSION": "3.2.0", - "MAYA_RENDER_DESC_PATH": "{MTOA}", - "MAYA_MODULE_PATH": "{MTOA}", - "ARNOLD_PLUGIN_PATH": "{MTOA}/shaders", - "MTOA_EXTENSIONS_PATH": { - "darwin": "{MTOA}/extensions", - "linux": "{MTOA}/extensions", - "windows": "{MTOA}/extensions" - }, - "MTOA_EXTENSIONS": { - "darwin": "{MTOA}/extensions", - "linux": "{MTOA}/extensions", - "windows": "{MTOA}/extensions" - }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MTOA}/bin" - }, - "PATH": { - "windows": "{PATH};{MTOA}/bin" - } -} diff --git a/pype/settings/defaults/environments/muster.json b/pype/settings/defaults/environments/muster.json deleted file mode 100644 index 26f311146aa..00000000000 --- a/pype/settings/defaults/environments/muster.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "MUSTER_REST_URL": "http://127.0.0.1:9890" -} diff --git a/pype/settings/defaults/environments/nuke.json b/pype/settings/defaults/environments/nuke.json deleted file mode 100644 index 50dd31ac911..00000000000 --- a/pype/settings/defaults/environments/nuke.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "NUKE_PATH": [ - "{PYPE_SETUP_PATH}/repos/avalon-core/setup/nuke/nuke_path", - "{PYPE_MODULE_ROOT}/setup/nuke/nuke_path", - "{PYPE_STUDIO_PLUGINS}/nuke" - ], - "PATH": { - "windows": "C:/Program Files (x86)/QuickTime/QTSystem/;{PATH}" - }, - "PYPE_LOG_NO_COLORS": "True", - "PYTHONPATH": { - "windows": "{VIRTUAL_ENV}/Lib/site-packages;{PYTHONPATH}", - "linux": "{VIRTUAL_ENV}/lib/python3.6/site-packages:{PYTHONPATH}" - } -} diff --git a/pype/settings/defaults/environments/nukestudio.json b/pype/settings/defaults/environments/nukestudio.json deleted file mode 100644 index b05e2411f00..00000000000 --- a/pype/settings/defaults/environments/nukestudio.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "HIERO_PLUGIN_PATH": [ - "{PYPE_MODULE_ROOT}/setup/nukestudio/hiero_plugin_path" - ], - "PATH": { - "windows": "C:/Program Files (x86)/QuickTime/QTSystem/;{PATH}" - }, - "WORKFILES_STARTUP": "0", - "TAG_ASSETBUILD_STARTUP": "0", - "PYPE_LOG_NO_COLORS": "True" -} diff --git a/pype/settings/defaults/environments/nukestudio_10.0.json b/pype/settings/defaults/environments/nukestudio_10.0.json deleted file mode 100644 index 9bdcef53c92..00000000000 --- a/pype/settings/defaults/environments/nukestudio_10.0.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "PYPE_LOG_NO_COLORS": "Yes", - "QT_PREFERRED_BINDING": "PySide" -} \ No newline at end of file diff --git a/pype/settings/defaults/environments/nukex.json b/pype/settings/defaults/environments/nukex.json deleted file mode 100644 index 2b77f44076c..00000000000 --- a/pype/settings/defaults/environments/nukex.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "NUKE_PATH": [ - "{PYPE_SETUP_PATH}/repos/avalon-core/setup/nuke/nuke_path", - "{PYPE_MODULE_ROOT}/setup/nuke/nuke_path", - "{PYPE_STUDIO_PLUGINS}/nuke" - ], - "PATH": { - "windows": "C:/Program Files (x86)/QuickTime/QTSystem/;{PATH}" - } -} diff --git a/pype/settings/defaults/environments/nukex_10.0.json b/pype/settings/defaults/environments/nukex_10.0.json deleted file mode 100644 index 9bdcef53c92..00000000000 --- a/pype/settings/defaults/environments/nukex_10.0.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "PYPE_LOG_NO_COLORS": "Yes", - "QT_PREFERRED_BINDING": "PySide" -} \ No newline at end of file diff --git a/pype/settings/defaults/environments/photoshop.json b/pype/settings/defaults/environments/photoshop.json deleted file mode 100644 index d39634ce20a..00000000000 --- a/pype/settings/defaults/environments/photoshop.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "AVALON_PHOTOSHOP_WORKFILES_ON_LAUNCH": "1", - "PYTHONPATH": "{PYTHONPATH}", - "PYPE_LOG_NO_COLORS": "Yes", - "WEBSOCKET_URL": "ws://localhost:8099/ws/", - "WORKFILES_SAVE_AS": "Yes" -} diff --git a/pype/settings/defaults/environments/premiere.json b/pype/settings/defaults/environments/premiere.json deleted file mode 100644 index 27dc5c564b3..00000000000 --- a/pype/settings/defaults/environments/premiere.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "EXTENSIONS_PATH": { - "windows": "{USERPROFILE}/AppData/Roaming/Adobe/CEP/extensions", - "darvin": "{USER}/Library/Application Support/Adobe/CEP/extensions" - }, - "EXTENSIONS_CACHE_PATH": { - "windows": "{USERPROFILE}/AppData/Local/Temp/cep_cache", - "darvin": "{USER}/Library/Application Support/Adobe/CEP/cep_cache" - }, - "installed_zxp": "" -} diff --git a/pype/settings/defaults/environments/resolve.json b/pype/settings/defaults/environments/resolve.json deleted file mode 100644 index 1ff197dd5aa..00000000000 --- a/pype/settings/defaults/environments/resolve.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "RESOLVE_UTILITY_SCRIPTS_SOURCE_DIR": [ - "{STUDIO_SOFT}/davinci_resolve/scripts/python" - ], - "RESOLVE_SCRIPT_API": { - "windows": "{PROGRAMDATA}/Blackmagic Design/DaVinci Resolve/Support/Developer/Scripting", - "darvin": "/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting", - "linux": "/opt/resolve/Developer/Scripting" - }, - "RESOLVE_SCRIPT_LIB": { - "windows": "C:/Program Files/Blackmagic Design/DaVinci Resolve/fusionscript.dll", - "darvin": "/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so", - "linux": "/opt/resolve/libs/Fusion/fusionscript.so" - }, - "RESOLVE_UTILITY_SCRIPTS_DIR": { - "windows": "{PROGRAMDATA}/Blackmagic Design/DaVinci Resolve/Fusion/Scripts/Comp", - "darvin": "/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts/Comp", - "linux": "/opt/resolve/Fusion/Scripts/Comp" - }, - "PYTHON36_RESOLVE": { - "windows": "{LOCALAPPDATA}/Programs/Python/Python36", - "darvin": "~/Library/Python/3.6/bin", - "linux": "/opt/Python/3.6/bin" - }, - "PYTHONPATH": [ - "{PYTHON36_RESOLVE}/Lib/site-packages", - "{VIRTUAL_ENV}/Lib/site-packages", - "{PYTHONPATH}", - "{RESOLVE_SCRIPT_API}/Modules", - "{PYTHONPATH}" - ], - "PATH": [ - "{PYTHON36_RESOLVE}", - "{PYTHON36_RESOLVE}/Scripts", - "{PATH}" - ], - "PRE_PYTHON_SCRIPT": "{PYPE_MODULE_ROOT}/pype/resolve/preload_console.py", - "PYPE_LOG_NO_COLORS": "True", - "RESOLVE_DEV": "True" -} diff --git a/pype/settings/defaults/environments/storyboardpro.json b/pype/settings/defaults/environments/storyboardpro.json deleted file mode 100644 index 581ad4db45a..00000000000 --- a/pype/settings/defaults/environments/storyboardpro.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "AVALON_TOONBOOM_WORKFILES_ON_LAUNCH": "1", - "PYBLISH_LITE_ALWAYS_EXEC": "1" -} diff --git a/pype/settings/defaults/environments/unreal_4.24.json b/pype/settings/defaults/environments/unreal_4.24.json deleted file mode 100644 index 8feeb0230f9..00000000000 --- a/pype/settings/defaults/environments/unreal_4.24.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "AVALON_UNREAL_PLUGIN": "{PYPE_SETUP_PATH}/repos/avalon-unreal-integration", - "PYPE_LOG_NO_COLORS": "True", - "QT_PREFERRED_BINDING": "PySide" -} diff --git a/pype/settings/defaults/environments/vray_4300.json b/pype/settings/defaults/environments/vray_4300.json deleted file mode 100644 index 32121884419..00000000000 --- a/pype/settings/defaults/environments/vray_4300.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "VRAY_VERSION": "43001", - "VRAY_ROOT": "C:/vray/vray_{VRAY_VERSION}", - "MAYA_RENDER_DESC_PATH": "{VRAY_ROOT}/maya_root/bin/rendererDesc", - "VRAY_FOR_MAYA2019_MAIN": "{VRAY_ROOT}/maya_vray", - "VRAY_FOR_MAYA2019_PLUGINS": "{VRAY_ROOT}/maya_vray/vrayplugins", - "VRAY_PLUGINS": "{VRAY_ROOT}/maya_vray/vrayplugins", - "VRAY_OSL_PATH_MAYA2019": "{VRAY_ROOT}/vray/opensl", - "PATH": "{VRAY_ROOT}/maya_root/bin;{PATH}", - "MAYA_PLUG_IN_PATH": "{VRAY_ROOT}/maya_vray/plug-ins", - "MAYA_SCRIPT_PATH": "{VRAY_ROOT}/maya_vray/scripts", - "PYTHONPATH": "{VRAY_ROOT}/maya_vray/scripts;{PYTHONPATH}", - "XBMLANGPATH": "{VRAY_ROOT}/maya_vray/icons;{XBMLANGPATH}", - "VRAY_AUTH_CLIENT_FILE_PATH": "{VRAY_ROOT}" -} diff --git a/pype/settings/defaults/project_anatomy/roots.json b/pype/settings/defaults/project_anatomy/roots.json index 0282471a608..7321f46b03d 100644 --- a/pype/settings/defaults/project_anatomy/roots.json +++ b/pype/settings/defaults/project_anatomy/roots.json @@ -1,5 +1,5 @@ { "windows": "C:/projects", - "linux": "/mnt/share/projects", - "darwin": "/Volumes/path" -} + "darwin": "/Volumes/path", + "linux": "/mnt/share/projects" +} \ 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 index fd1af23d843..4cda2d56568 100644 --- a/pype/settings/defaults/project_settings/plugins/celaction/publish.json +++ b/pype/settings/defaults/project_settings/plugins/celaction/publish.json @@ -2,7 +2,7 @@ "ExtractCelactionDeadline": { "enabled": true, "deadline_department": "", - "deadline_priority": 50, + "deadline_priority": 60, "deadline_pool": "", "deadline_pool_secondary": "", "deadline_group": "", diff --git a/pype/settings/defaults/project_settings/plugins/ftrack/publish.json b/pype/settings/defaults/project_settings/plugins/ftrack/publish.json index d8d93a36eee..8570a400e8a 100644 --- a/pype/settings/defaults/project_settings/plugins/ftrack/publish.json +++ b/pype/settings/defaults/project_settings/plugins/ftrack/publish.json @@ -1,6 +1,6 @@ { "IntegrateFtrackNote": { - "enabled": false, + "enabled": true, "note_with_intent_template": "{intent}: {comment}", "note_labels": [] } diff --git a/pype/settings/defaults/project_settings/plugins/global/publish.json b/pype/settings/defaults/project_settings/plugins/global/publish.json index 0a7f6fbf3d3..676985797f8 100644 --- a/pype/settings/defaults/project_settings/plugins/global/publish.json +++ b/pype/settings/defaults/project_settings/plugins/global/publish.json @@ -49,7 +49,7 @@ ] }, "ExtractBurnin": { - "enabled": false, + "enabled": true, "options": { "font_size": 42, "opacity": 1, @@ -58,7 +58,6 @@ "y_offset": 5, "bg_padding": 5 }, - "fields": {}, "profiles": [ { "burnins": { @@ -90,7 +89,7 @@ } }, "ProcessSubmittedJobOnFarm": { - "enabled": false, + "enabled": true, "deadline_department": "", "deadline_pool": "", "deadline_group": "" diff --git a/pype/settings/defaults/project_settings/plugins/nuke/publish.json b/pype/settings/defaults/project_settings/plugins/nuke/publish.json index 08a099a0a0c..50b5b27fc5e 100644 --- a/pype/settings/defaults/project_settings/plugins/nuke/publish.json +++ b/pype/settings/defaults/project_settings/plugins/nuke/publish.json @@ -27,7 +27,7 @@ } }, "ValidateNukeWriteKnobs": { - "enabled": false, + "enabled": true, "knobs": { "render": { "review": true @@ -35,7 +35,7 @@ } }, "ExtractReviewDataLut": { - "enabled": false + "enabled": true }, "ExtractReviewDataMov": { "enabled": true, diff --git a/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json b/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json index 2f1a3e7aca4..f7699ef9f78 100644 --- a/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json +++ b/pype/settings/defaults/project_settings/plugins/standalonepublisher/publish.json @@ -6,22 +6,5 @@ ], "output": [] } - }, - "ExtractReviewSP": { - "outputs": { - "h264": { - "input": [ - "-gamma 2.2" - ], - "output": [ - "-pix_fmt yuv420p", - "-crf 18" - ], - "tags": [ - "preview" - ], - "ext": "mov" - } - } } } \ No newline at end of file diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index e54e8293302..e622ba67ca0 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -13,7 +13,8 @@ "MAYA_DISABLE_CER", "PYMEL_SKIP_MEL_INIT", "LC_ALL", - "PYPE_LOG_NO_COLORS" + "PYPE_LOG_NO_COLORS", + "MAYA_TEST" ] }, "PYTHONPATH": [ @@ -27,7 +28,8 @@ "MAYA_DISABLE_CER": "Yes", "PYMEL_SKIP_MEL_INIT": "Yes", "LC_ALL": "C", - "PYPE_LOG_NO_COLORS": "Yes" + "PYPE_LOG_NO_COLORS": "Yes", + "MAYA_TEST": "{MAYA_VERSION}" }, "variants": { "maya_2020": { @@ -659,9 +661,7 @@ "variant_label": "2.83", "icon": "", "executables": { - "windows": [ - "C:\\Program Files\\Blender Foundation\\Blender 2.83\\blender.exe" - ], + "windows": [], "darwin": [], "linux": [] }, @@ -844,8 +844,15 @@ "is_host": true, "environment": { "__environment_keys__": { - "unreal": [] - } + "unreal": [ + "AVALON_UNREAL_PLUGIN", + "PYPE_LOG_NO_COLORS", + "QT_PREFERRED_BINDING" + ] + }, + "AVALON_UNREAL_PLUGIN": "{PYPE_SETUP_PATH}/repos/avalon-unreal-integration", + "PYPE_LOG_NO_COLORS": "True", + "QT_PREFERRED_BINDING": "PySide" }, "variants": { "unreal_4.24": { diff --git a/pype/settings/defaults/system_settings/global/general.json b/pype/settings/defaults/system_settings/global/general.json index 0369052a52e..7d6894446e4 100644 --- a/pype/settings/defaults/system_settings/global/general.json +++ b/pype/settings/defaults/system_settings/global/general.json @@ -1,6 +1,6 @@ { - "studio_name": "clothcat", - "studio_code": "CC", + "studio_name": "Studio name", + "studio_code": "stu", "project_plugins": { "windows": "convert from \"PYPE_PROJECT_PLUGINS\"", "darwin": "", @@ -21,6 +21,7 @@ "PYTHONPATH", "PYPE_PROJECT_CONFIGS", "PYPE_PYTHON_EXE", + "PYPE_OCIO_CONFIG", "PYBLISH_GUI" ] }, @@ -48,6 +49,7 @@ "linux": "{VIRTUAL_ENV}/Scripts/python", "darwin": "{VIRTUAL_ENV}/bin/python" }, + "PYPE_OCIO_CONFIG": "{STUDIO_SOFT}/OpenColorIO-Configs", "PYBLISH_GUI": "pyblish_pype" } } \ 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 b0245f52bdb..9e5453011d1 100644 --- a/pype/settings/defaults/system_settings/global/modules.json +++ b/pype/settings/defaults/system_settings/global/modules.json @@ -56,7 +56,8 @@ "ftrack": [ "FTRACK_ACTIONS_PATH", "FTRACK_EVENTS_PATH", - "PYBLISHPLUGINPATH" + "PYBLISHPLUGINPATH", + "PYTHONPATH" ] }, "FTRACK_ACTIONS_PATH": [ @@ -67,6 +68,10 @@ ], "PYBLISHPLUGINPATH": [ "{PYPE_MODULE_ROOT}/pype/plugins/ftrack/publish" + ], + "PYTHONPATH": [ + "{PYPE_MODULE_ROOT}/pype/vendor", + "{PYTHONPATH}" ] } }, @@ -89,7 +94,7 @@ }, "Muster": { "enabled": false, - "MUSTER_REST_URL": "", + "MUSTER_REST_URL": "http://127.0.0.1:9890", "templates_mapping": { "file_layers": 7, "mentalray": 2, diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index 314b66ad7e7..ae4e60b9858 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -14,7 +14,7 @@ "PATH" ] }, - "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoa_{MAYA_VERSION}_{MTOA_VERSION}", + "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoaDDDDDDDDDD_{MAYA_VERSION}_{MTOA_VERSION}", "MAYA_RENDER_DESC_PATH": "{MTOA}", "MAYA_MODULE_PATH": "{MTOA}", "ARNOLD_PLUGIN_PATH": "{MTOA}/shaders", 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 937eea40972..fa84a27ae39 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 @@ -253,17 +253,6 @@ "key": "enabled", "label": "Enabled" }] - }, { - "type": "dict", - "key": "Adobe Communicator", - "label": "Adobe Communicator", - "collapsable": true, - "checkbox_key": "enabled", - "children": [{ - "type": "boolean", - "key": "enabled", - "label": "Enabled" - }] }, { "type": "dict", "key": "User setting", From 2e88b1b204b5b11f86c0e871bf75162253c90feb Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 23 Nov 2020 22:54:39 +0100 Subject: [PATCH 85/86] remove obsolete launchers --- .../defaults/environments/mayabatch.json | 14 --- .../defaults/environments/mayabatch_2019.json | 11 --- .../defaults/launchers/blender_2.80.toml | 8 -- .../defaults/launchers/blender_2.81.toml | 9 -- .../defaults/launchers/blender_2.82.toml | 9 -- .../defaults/launchers/blender_2.83.toml | 9 -- .../defaults/launchers/celaction_local.toml | 9 -- .../defaults/launchers/celaction_publish.toml | 8 -- .../defaults/launchers/darwin/blender_2.82 | 2 - .../defaults/launchers/darwin/harmony_17 | 9 -- .../launchers/darwin/harmony_17_launch | 5 - .../defaults/launchers/darwin/python3 | 2 - .../defaults/launchers/harmony_17.toml | 9 -- .../defaults/launchers/houdini_16.toml | 8 -- .../defaults/launchers/houdini_17.toml | 8 -- .../defaults/launchers/houdini_18.toml | 8 -- .../defaults/launchers/linux/maya2016 | 8 -- .../defaults/launchers/linux/maya2017 | 8 -- .../defaults/launchers/linux/maya2018 | 8 -- .../defaults/launchers/linux/maya2019 | 8 -- .../defaults/launchers/linux/maya2020 | 8 -- .../defaults/launchers/linux/nuke11.3 | 2 - .../defaults/launchers/linux/nuke12.0 | 2 - .../defaults/launchers/linux/nukestudio11.3 | 2 - .../defaults/launchers/linux/nukestudio12.0 | 2 - .../defaults/launchers/linux/nukex11.3 | 2 - .../defaults/launchers/linux/nukex12.0 | 2 - .../defaults/launchers/maya_2016.toml | 27 ----- .../defaults/launchers/maya_2017.toml | 29 ------ .../defaults/launchers/maya_2018.toml | 15 --- .../defaults/launchers/maya_2019.toml | 15 --- .../defaults/launchers/maya_2020.toml | 15 --- .../defaults/launchers/mayabatch_2019.toml | 17 ---- .../defaults/launchers/mayabatch_2020.toml | 17 ---- .../defaults/launchers/mayapy2016.toml | 17 ---- .../defaults/launchers/mayapy2017.toml | 17 ---- .../defaults/launchers/mayapy2018.toml | 17 ---- .../defaults/launchers/mayapy2019.toml | 17 ---- .../defaults/launchers/mayapy2020.toml | 17 ---- pype/settings/defaults/launchers/myapp.toml | 5 - .../defaults/launchers/nuke_10.0.toml | 8 -- .../defaults/launchers/nuke_11.0.toml | 8 -- .../defaults/launchers/nuke_11.2.toml | 8 -- .../defaults/launchers/nuke_11.3.toml | 8 -- .../defaults/launchers/nuke_12.0.toml | 8 -- .../defaults/launchers/nukestudio_10.0.toml | 8 -- .../defaults/launchers/nukestudio_11.0.toml | 8 -- .../defaults/launchers/nukestudio_11.2.toml | 8 -- .../defaults/launchers/nukestudio_11.3.toml | 8 -- .../defaults/launchers/nukestudio_12.0.toml | 8 -- .../defaults/launchers/nukex_10.0.toml | 8 -- .../defaults/launchers/nukex_11.0.toml | 8 -- .../defaults/launchers/nukex_11.2.toml | 8 -- .../defaults/launchers/nukex_11.3.toml | 8 -- .../defaults/launchers/nukex_12.0.toml | 8 -- .../defaults/launchers/photoshop_2020.toml | 9 -- .../defaults/launchers/premiere_2019.toml | 9 -- .../defaults/launchers/premiere_2020.toml | 10 -- .../settings/defaults/launchers/python_2.toml | 12 --- .../settings/defaults/launchers/python_3.toml | 12 --- .../defaults/launchers/resolve_16.toml | 10 -- pype/settings/defaults/launchers/shell.toml | 7 -- .../defaults/launchers/storyboardpro_7.toml | 9 -- .../defaults/launchers/unreal_4.24.toml | 10 -- .../launchers/windows/blender_2.80.bat | 11 --- .../launchers/windows/blender_2.81.bat | 11 --- .../launchers/windows/blender_2.82.bat | 11 --- .../launchers/windows/blender_2.83.bat | 11 --- .../launchers/windows/celaction_local.bat | 19 ---- .../launchers/windows/celaction_publish.bat | 3 - .../defaults/launchers/windows/harmony_17.bat | 13 --- .../defaults/launchers/windows/houdini_16.bat | 13 --- .../defaults/launchers/windows/houdini_17.bat | 13 --- .../defaults/launchers/windows/houdini_18.bat | 13 --- .../defaults/launchers/windows/maya2016.bat | 17 ---- .../defaults/launchers/windows/maya2017.bat | 17 ---- .../defaults/launchers/windows/maya2018.bat | 17 ---- .../defaults/launchers/windows/maya2019.bat | 17 ---- .../defaults/launchers/windows/maya2020.bat | 17 ---- .../launchers/windows/mayabatch2019.bat | 14 --- .../launchers/windows/mayabatch2020.bat | 14 --- .../defaults/launchers/windows/mayapy2016.bat | 13 --- .../defaults/launchers/windows/mayapy2017.bat | 13 --- .../defaults/launchers/windows/mayapy2018.bat | 13 --- .../defaults/launchers/windows/mayapy2019.bat | 13 --- .../defaults/launchers/windows/mayapy2020.bat | 13 --- .../defaults/launchers/windows/nuke10.0.bat | 13 --- .../defaults/launchers/windows/nuke11.0.bat | 13 --- .../defaults/launchers/windows/nuke11.2.bat | 13 --- .../defaults/launchers/windows/nuke11.3.bat | 13 --- .../defaults/launchers/windows/nuke12.0.bat | 13 --- .../launchers/windows/nukestudio10.0.bat | 13 --- .../launchers/windows/nukestudio11.0.bat | 13 --- .../launchers/windows/nukestudio11.2.bat | 13 --- .../launchers/windows/nukestudio11.3.bat | 13 --- .../launchers/windows/nukestudio12.0.bat | 13 --- .../defaults/launchers/windows/nukex10.0.bat | 13 --- .../defaults/launchers/windows/nukex11.0.bat | 13 --- .../defaults/launchers/windows/nukex11.2.bat | 13 --- .../defaults/launchers/windows/nukex11.3.bat | 13 --- .../defaults/launchers/windows/nukex12.0.bat | 13 --- .../launchers/windows/photoshop_2020.bat | 15 --- .../launchers/windows/premiere_pro_2019.bat | 14 --- .../launchers/windows/premiere_pro_2020.bat | 13 --- .../defaults/launchers/windows/python3.bat | 13 --- .../defaults/launchers/windows/resolve_16.bat | 17 ---- .../defaults/launchers/windows/shell.bat | 2 - .../launchers/windows/storyboardpro_7.bat | 13 --- .../defaults/launchers/windows/unreal.bat | 11 --- .../system_settings/global/applications.json | 98 +++++++++++++++++++ .../system_settings/global/modules.json | 3 - .../launchers/blender_2.80.toml | 7 -- .../launchers/blender_2.81.toml | 7 -- .../launchers/blender_2.82.toml | 7 -- .../launchers/blender_2.83.toml | 7 -- .../launchers/celaction_local.toml | 8 -- .../launchers/celaction_publish.toml | 7 -- .../launchers/darwin/blender_2.82 | 2 - .../launchers/darwin/harmony_17 | 9 -- .../launchers/darwin/harmony_17_launch | 5 - .../system_settings/launchers/darwin/python3 | 2 - .../system_settings/launchers/harmony_17.toml | 8 -- .../system_settings/launchers/houdini_16.toml | 7 -- .../system_settings/launchers/houdini_17.toml | 7 -- .../system_settings/launchers/houdini_18.toml | 7 -- .../system_settings/launchers/linux/maya2016 | 8 -- .../system_settings/launchers/linux/maya2017 | 8 -- .../system_settings/launchers/linux/maya2018 | 8 -- .../system_settings/launchers/linux/maya2019 | 8 -- .../system_settings/launchers/linux/maya2020 | 8 -- .../system_settings/launchers/linux/nuke11.3 | 2 - .../system_settings/launchers/linux/nuke12.0 | 2 - .../launchers/linux/nukestudio11.3 | 2 - .../launchers/linux/nukestudio12.0 | 2 - .../system_settings/launchers/linux/nukex11.3 | 2 - .../system_settings/launchers/linux/nukex12.0 | 2 - .../system_settings/launchers/maya_2016.toml | 26 ----- .../system_settings/launchers/maya_2017.toml | 28 ------ .../system_settings/launchers/maya_2018.toml | 14 --- .../system_settings/launchers/maya_2019.toml | 14 --- .../system_settings/launchers/maya_2020.toml | 14 --- .../launchers/mayabatch_2019.toml | 17 ---- .../launchers/mayabatch_2020.toml | 17 ---- .../system_settings/launchers/mayapy2016.toml | 17 ---- .../system_settings/launchers/mayapy2017.toml | 17 ---- .../system_settings/launchers/mayapy2018.toml | 17 ---- .../system_settings/launchers/mayapy2019.toml | 17 ---- .../system_settings/launchers/mayapy2020.toml | 17 ---- .../system_settings/launchers/myapp.toml | 5 - .../system_settings/launchers/nuke_10.0.toml | 7 -- .../system_settings/launchers/nuke_11.0.toml | 7 -- .../system_settings/launchers/nuke_11.2.toml | 7 -- .../system_settings/launchers/nuke_11.3.toml | 7 -- .../system_settings/launchers/nuke_12.0.toml | 7 -- .../launchers/nukestudio_10.0.toml | 7 -- .../launchers/nukestudio_11.0.toml | 7 -- .../launchers/nukestudio_11.2.toml | 7 -- .../launchers/nukestudio_11.3.toml | 7 -- .../launchers/nukestudio_12.0.toml | 7 -- .../system_settings/launchers/nukex_10.0.toml | 7 -- .../system_settings/launchers/nukex_11.0.toml | 7 -- .../system_settings/launchers/nukex_11.2.toml | 7 -- .../system_settings/launchers/nukex_11.3.toml | 7 -- .../system_settings/launchers/nukex_12.0.toml | 7 -- .../launchers/photoshop_2020.toml | 8 -- .../launchers/premiere_2019.toml | 8 -- .../launchers/premiere_2020.toml | 9 -- .../system_settings/launchers/python_2.toml | 10 -- .../system_settings/launchers/python_3.toml | 10 -- .../system_settings/launchers/resolve_16.toml | 9 -- .../system_settings/launchers/shell.toml | 7 -- .../launchers/storyboardpro_7.toml | 8 -- .../launchers/unreal_4.24.toml | 8 -- .../launchers/windows/blender_2.80.bat | 11 --- .../launchers/windows/blender_2.81.bat | 11 --- .../launchers/windows/blender_2.82.bat | 11 --- .../launchers/windows/blender_2.83.bat | 11 --- .../launchers/windows/celaction_local.bat | 19 ---- .../launchers/windows/celaction_publish.bat | 3 - .../launchers/windows/harmony_17.bat | 13 --- .../launchers/windows/houdini_16.bat | 13 --- .../launchers/windows/houdini_17.bat | 13 --- .../launchers/windows/houdini_18.bat | 13 --- .../launchers/windows/maya2016.bat | 17 ---- .../launchers/windows/maya2017.bat | 17 ---- .../launchers/windows/maya2018.bat | 17 ---- .../launchers/windows/maya2019.bat | 17 ---- .../launchers/windows/maya2020.bat | 17 ---- .../launchers/windows/mayabatch2019.bat | 14 --- .../launchers/windows/mayabatch2020.bat | 14 --- .../launchers/windows/mayapy2016.bat | 13 --- .../launchers/windows/mayapy2017.bat | 13 --- .../launchers/windows/mayapy2018.bat | 13 --- .../launchers/windows/mayapy2019.bat | 13 --- .../launchers/windows/mayapy2020.bat | 13 --- .../launchers/windows/nuke10.0.bat | 13 --- .../launchers/windows/nuke11.0.bat | 13 --- .../launchers/windows/nuke11.2.bat | 13 --- .../launchers/windows/nuke11.3.bat | 13 --- .../launchers/windows/nuke12.0.bat | 13 --- .../launchers/windows/nukestudio10.0.bat | 13 --- .../launchers/windows/nukestudio11.0.bat | 13 --- .../launchers/windows/nukestudio11.2.bat | 13 --- .../launchers/windows/nukestudio11.3.bat | 13 --- .../launchers/windows/nukestudio12.0.bat | 13 --- .../launchers/windows/nukex10.0.bat | 13 --- .../launchers/windows/nukex11.0.bat | 13 --- .../launchers/windows/nukex11.2.bat | 13 --- .../launchers/windows/nukex11.3.bat | 13 --- .../launchers/windows/nukex12.0.bat | 13 --- .../launchers/windows/photoshop_2020.bat | 15 --- .../launchers/windows/premiere_pro_2019.bat | 14 --- .../launchers/windows/premiere_pro_2020.bat | 13 --- .../launchers/windows/python3.bat | 13 --- .../launchers/windows/resolve_16.bat | 17 ---- .../launchers/windows/shell.bat | 2 - .../launchers/windows/storyboardpro_7.bat | 13 --- .../launchers/windows/unreal.bat | 11 --- .../host_settings/schema_mayabatch.json | 46 +++++++++ .../system_schema/schema_applications.json | 7 +- 220 files changed, 150 insertions(+), 2339 deletions(-) delete mode 100644 pype/settings/defaults/environments/mayabatch.json delete mode 100644 pype/settings/defaults/environments/mayabatch_2019.json delete mode 100644 pype/settings/defaults/launchers/blender_2.80.toml delete mode 100644 pype/settings/defaults/launchers/blender_2.81.toml delete mode 100644 pype/settings/defaults/launchers/blender_2.82.toml delete mode 100644 pype/settings/defaults/launchers/blender_2.83.toml delete mode 100644 pype/settings/defaults/launchers/celaction_local.toml delete mode 100644 pype/settings/defaults/launchers/celaction_publish.toml delete mode 100644 pype/settings/defaults/launchers/darwin/blender_2.82 delete mode 100644 pype/settings/defaults/launchers/darwin/harmony_17 delete mode 100644 pype/settings/defaults/launchers/darwin/harmony_17_launch delete mode 100644 pype/settings/defaults/launchers/darwin/python3 delete mode 100644 pype/settings/defaults/launchers/harmony_17.toml delete mode 100644 pype/settings/defaults/launchers/houdini_16.toml delete mode 100644 pype/settings/defaults/launchers/houdini_17.toml delete mode 100644 pype/settings/defaults/launchers/houdini_18.toml delete mode 100644 pype/settings/defaults/launchers/linux/maya2016 delete mode 100644 pype/settings/defaults/launchers/linux/maya2017 delete mode 100644 pype/settings/defaults/launchers/linux/maya2018 delete mode 100644 pype/settings/defaults/launchers/linux/maya2019 delete mode 100644 pype/settings/defaults/launchers/linux/maya2020 delete mode 100644 pype/settings/defaults/launchers/linux/nuke11.3 delete mode 100644 pype/settings/defaults/launchers/linux/nuke12.0 delete mode 100644 pype/settings/defaults/launchers/linux/nukestudio11.3 delete mode 100644 pype/settings/defaults/launchers/linux/nukestudio12.0 delete mode 100644 pype/settings/defaults/launchers/linux/nukex11.3 delete mode 100644 pype/settings/defaults/launchers/linux/nukex12.0 delete mode 100644 pype/settings/defaults/launchers/maya_2016.toml delete mode 100644 pype/settings/defaults/launchers/maya_2017.toml delete mode 100644 pype/settings/defaults/launchers/maya_2018.toml delete mode 100644 pype/settings/defaults/launchers/maya_2019.toml delete mode 100644 pype/settings/defaults/launchers/maya_2020.toml delete mode 100644 pype/settings/defaults/launchers/mayabatch_2019.toml delete mode 100644 pype/settings/defaults/launchers/mayabatch_2020.toml delete mode 100644 pype/settings/defaults/launchers/mayapy2016.toml delete mode 100644 pype/settings/defaults/launchers/mayapy2017.toml delete mode 100644 pype/settings/defaults/launchers/mayapy2018.toml delete mode 100644 pype/settings/defaults/launchers/mayapy2019.toml delete mode 100644 pype/settings/defaults/launchers/mayapy2020.toml delete mode 100644 pype/settings/defaults/launchers/myapp.toml delete mode 100644 pype/settings/defaults/launchers/nuke_10.0.toml delete mode 100644 pype/settings/defaults/launchers/nuke_11.0.toml delete mode 100644 pype/settings/defaults/launchers/nuke_11.2.toml delete mode 100644 pype/settings/defaults/launchers/nuke_11.3.toml delete mode 100644 pype/settings/defaults/launchers/nuke_12.0.toml delete mode 100644 pype/settings/defaults/launchers/nukestudio_10.0.toml delete mode 100644 pype/settings/defaults/launchers/nukestudio_11.0.toml delete mode 100644 pype/settings/defaults/launchers/nukestudio_11.2.toml delete mode 100644 pype/settings/defaults/launchers/nukestudio_11.3.toml delete mode 100644 pype/settings/defaults/launchers/nukestudio_12.0.toml delete mode 100644 pype/settings/defaults/launchers/nukex_10.0.toml delete mode 100644 pype/settings/defaults/launchers/nukex_11.0.toml delete mode 100644 pype/settings/defaults/launchers/nukex_11.2.toml delete mode 100644 pype/settings/defaults/launchers/nukex_11.3.toml delete mode 100644 pype/settings/defaults/launchers/nukex_12.0.toml delete mode 100644 pype/settings/defaults/launchers/photoshop_2020.toml delete mode 100644 pype/settings/defaults/launchers/premiere_2019.toml delete mode 100644 pype/settings/defaults/launchers/premiere_2020.toml delete mode 100644 pype/settings/defaults/launchers/python_2.toml delete mode 100644 pype/settings/defaults/launchers/python_3.toml delete mode 100644 pype/settings/defaults/launchers/resolve_16.toml delete mode 100644 pype/settings/defaults/launchers/shell.toml delete mode 100644 pype/settings/defaults/launchers/storyboardpro_7.toml delete mode 100644 pype/settings/defaults/launchers/unreal_4.24.toml delete mode 100644 pype/settings/defaults/launchers/windows/blender_2.80.bat delete mode 100644 pype/settings/defaults/launchers/windows/blender_2.81.bat delete mode 100644 pype/settings/defaults/launchers/windows/blender_2.82.bat delete mode 100644 pype/settings/defaults/launchers/windows/blender_2.83.bat delete mode 100644 pype/settings/defaults/launchers/windows/celaction_local.bat delete mode 100644 pype/settings/defaults/launchers/windows/celaction_publish.bat delete mode 100644 pype/settings/defaults/launchers/windows/harmony_17.bat delete mode 100644 pype/settings/defaults/launchers/windows/houdini_16.bat delete mode 100644 pype/settings/defaults/launchers/windows/houdini_17.bat delete mode 100644 pype/settings/defaults/launchers/windows/houdini_18.bat delete mode 100644 pype/settings/defaults/launchers/windows/maya2016.bat delete mode 100644 pype/settings/defaults/launchers/windows/maya2017.bat delete mode 100644 pype/settings/defaults/launchers/windows/maya2018.bat delete mode 100644 pype/settings/defaults/launchers/windows/maya2019.bat delete mode 100644 pype/settings/defaults/launchers/windows/maya2020.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayabatch2019.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayabatch2020.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayapy2016.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayapy2017.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayapy2018.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayapy2019.bat delete mode 100644 pype/settings/defaults/launchers/windows/mayapy2020.bat delete mode 100644 pype/settings/defaults/launchers/windows/nuke10.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nuke11.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nuke11.2.bat delete mode 100644 pype/settings/defaults/launchers/windows/nuke11.3.bat delete mode 100644 pype/settings/defaults/launchers/windows/nuke12.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukestudio10.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukestudio11.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukestudio11.2.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukestudio11.3.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukestudio12.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukex10.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukex11.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukex11.2.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukex11.3.bat delete mode 100644 pype/settings/defaults/launchers/windows/nukex12.0.bat delete mode 100644 pype/settings/defaults/launchers/windows/photoshop_2020.bat delete mode 100644 pype/settings/defaults/launchers/windows/premiere_pro_2019.bat delete mode 100644 pype/settings/defaults/launchers/windows/premiere_pro_2020.bat delete mode 100644 pype/settings/defaults/launchers/windows/python3.bat delete mode 100644 pype/settings/defaults/launchers/windows/resolve_16.bat delete mode 100644 pype/settings/defaults/launchers/windows/shell.bat delete mode 100644 pype/settings/defaults/launchers/windows/storyboardpro_7.bat delete mode 100644 pype/settings/defaults/launchers/windows/unreal.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/blender_2.80.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/blender_2.81.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/blender_2.82.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/blender_2.83.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/celaction_local.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/celaction_publish.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/darwin/blender_2.82 delete mode 100644 pype/settings/defaults/system_settings/launchers/darwin/harmony_17 delete mode 100644 pype/settings/defaults/system_settings/launchers/darwin/harmony_17_launch delete mode 100644 pype/settings/defaults/system_settings/launchers/darwin/python3 delete mode 100644 pype/settings/defaults/system_settings/launchers/harmony_17.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/houdini_16.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/houdini_17.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/houdini_18.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/maya2016 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/maya2017 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/maya2018 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/maya2019 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/maya2020 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/nuke11.3 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/nuke12.0 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/nukestudio11.3 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/nukestudio12.0 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/nukex11.3 delete mode 100644 pype/settings/defaults/system_settings/launchers/linux/nukex12.0 delete mode 100644 pype/settings/defaults/system_settings/launchers/maya_2016.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/maya_2017.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/maya_2018.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/maya_2019.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/maya_2020.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayabatch_2019.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayabatch_2020.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayapy2016.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayapy2017.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayapy2018.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayapy2019.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/mayapy2020.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/myapp.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nuke_10.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nuke_11.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nuke_11.2.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nuke_11.3.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nuke_12.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukestudio_10.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukestudio_11.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukestudio_11.2.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukestudio_11.3.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukestudio_12.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukex_10.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukex_11.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukex_11.2.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukex_11.3.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/nukex_12.0.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/photoshop_2020.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/premiere_2019.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/premiere_2020.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/python_2.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/python_3.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/resolve_16.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/shell.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/storyboardpro_7.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/unreal_4.24.toml delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/blender_2.80.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/blender_2.81.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/blender_2.82.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/blender_2.83.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/celaction_local.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/celaction_publish.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/harmony_17.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/houdini_16.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/houdini_17.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/houdini_18.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/maya2016.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/maya2017.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/maya2018.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/maya2019.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/maya2020.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayabatch2019.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayabatch2020.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayapy2016.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayapy2017.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayapy2018.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayapy2019.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/mayapy2020.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nuke10.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nuke11.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nuke11.2.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nuke11.3.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nuke12.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukestudio10.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukestudio11.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukestudio11.2.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukestudio11.3.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukestudio12.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukex10.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukex11.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukex11.2.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukex11.3.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/nukex12.0.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/photoshop_2020.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2019.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2020.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/python3.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/resolve_16.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/shell.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/storyboardpro_7.bat delete mode 100644 pype/settings/defaults/system_settings/launchers/windows/unreal.bat create mode 100644 pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_mayabatch.json diff --git a/pype/settings/defaults/environments/mayabatch.json b/pype/settings/defaults/environments/mayabatch.json deleted file mode 100644 index 7785b108f70..00000000000 --- a/pype/settings/defaults/environments/mayabatch.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "PYTHONPATH": [ - "{PYPE_SETUP_PATH}/repos/avalon-core/setup/maya", - "{PYPE_SETUP_PATH}/repos/maya-look-assigner", - "{PYTHON_ENV}/python2/Lib/site-packages", - "{PYTHONPATH}" - ], - "MAYA_DISABLE_CLIC_IPM": "Yes", - "MAYA_DISABLE_CIP": "Yes", - "MAYA_DISABLE_CER": "Yes", - "PYMEL_SKIP_MEL_INIT": "Yes", - "LC_ALL": "C", - "PYPE_LOG_NO_COLORS": "Yes" -} diff --git a/pype/settings/defaults/environments/mayabatch_2019.json b/pype/settings/defaults/environments/mayabatch_2019.json deleted file mode 100644 index aa7360a943e..00000000000 --- a/pype/settings/defaults/environments/mayabatch_2019.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "MAYA_VERSION": "2019", - "MAYA_LOCATION": { - "darwin": "/Applications/Autodesk/maya{MAYA_VERSION}/Maya.app/Contents", - "linux": "/usr/autodesk/maya{MAYA_VERSION}", - "windows": "C:/Program Files/Autodesk/Maya{MAYA_VERSION}" - }, - "DYLD_LIBRARY_PATH": { - "darwin": "{MAYA_LOCATION}/MacOS" - } -} diff --git a/pype/settings/defaults/launchers/blender_2.80.toml b/pype/settings/defaults/launchers/blender_2.80.toml deleted file mode 100644 index 88b5ea0c11b..00000000000 --- a/pype/settings/defaults/launchers/blender_2.80.toml +++ /dev/null @@ -1,8 +0,0 @@ -application_dir = "blender" -executable = "blender_2.80" -schema = "avalon-core:application-1.0" -label = "Blender" -label_variant = "2.80" -ftrack_label = "Blender" -icon = "app_icons/blender.png" -ftrack_icon = "{}/app_icons/blender.png" diff --git a/pype/settings/defaults/launchers/blender_2.81.toml b/pype/settings/defaults/launchers/blender_2.81.toml deleted file mode 100644 index 072eaa8141e..00000000000 --- a/pype/settings/defaults/launchers/blender_2.81.toml +++ /dev/null @@ -1,9 +0,0 @@ -application_dir = "blender" -executable = "blender_2.81" -schema = "avalon-core:application-1.0" -label = "Blender" -label_variant = "2.81" -icon = "app_icons/blender.png" - -ftrack_label = "Blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/launchers/blender_2.82.toml b/pype/settings/defaults/launchers/blender_2.82.toml deleted file mode 100644 index a485f790f14..00000000000 --- a/pype/settings/defaults/launchers/blender_2.82.toml +++ /dev/null @@ -1,9 +0,0 @@ -application_dir = "blender" -executable = "blender_2.82" -schema = "avalon-core:application-1.0" -label = "Blender" -label_variant = "2.82" -icon = "app_icons/blender.png" - -ftrack_label = "Blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/launchers/blender_2.83.toml b/pype/settings/defaults/launchers/blender_2.83.toml deleted file mode 100644 index 0f98151d019..00000000000 --- a/pype/settings/defaults/launchers/blender_2.83.toml +++ /dev/null @@ -1,9 +0,0 @@ -application_dir = "blender" -executable = "blender_2.83" -schema = "avalon-core:application-1.0" -label = "Blender" -label_variant = "2.83" -icon = "app_icons/blender.png" - -ftrack_label = "Blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/launchers/celaction_local.toml b/pype/settings/defaults/launchers/celaction_local.toml deleted file mode 100644 index 6cc5d4fa0ef..00000000000 --- a/pype/settings/defaults/launchers/celaction_local.toml +++ /dev/null @@ -1,9 +0,0 @@ -executable = "celaction_local" -schema = "avalon-core:application-1.0" -application_dir = "celaction" -label = "CelAction2D" -icon = "app_icons/celaction_local.png" -launch_hook = "pype/hooks/celaction/prelaunch.py/CelactionPrelaunchHook" - -ftrack_label = "CelAction2D" -ftrack_icon = '{}/app_icons/celaction_local.png' diff --git a/pype/settings/defaults/launchers/celaction_publish.toml b/pype/settings/defaults/launchers/celaction_publish.toml deleted file mode 100644 index dc7ac826735..00000000000 --- a/pype/settings/defaults/launchers/celaction_publish.toml +++ /dev/null @@ -1,8 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "shell" -executable = "celaction_publish" -label = "Celaction Shell" -icon = "app_icons/celaction.png" - -[environment] -CREATE_NEW_CONSOLE = "Yes" diff --git a/pype/settings/defaults/launchers/darwin/blender_2.82 b/pype/settings/defaults/launchers/darwin/blender_2.82 deleted file mode 100644 index 8254411ea26..00000000000 --- a/pype/settings/defaults/launchers/darwin/blender_2.82 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -open -a blender $@ diff --git a/pype/settings/defaults/launchers/darwin/harmony_17 b/pype/settings/defaults/launchers/darwin/harmony_17 deleted file mode 100644 index b7eba2c2d0c..00000000000 --- a/pype/settings/defaults/launchers/darwin/harmony_17 +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -DIRNAME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -set >~/environment.tmp -if [ $? -ne -0 ] ; then - echo "ERROR: cannot write to '~/environment.tmp'!" - read -n 1 -s -r -p "Press any key to exit" - return -fi -open -a Terminal.app "$DIRNAME/harmony_17_launch" diff --git a/pype/settings/defaults/launchers/darwin/harmony_17_launch b/pype/settings/defaults/launchers/darwin/harmony_17_launch deleted file mode 100644 index 5dcf5db57e3..00000000000 --- a/pype/settings/defaults/launchers/darwin/harmony_17_launch +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -source ~/environment.tmp -export $(cut -d= -f1 ~/environment.tmp) -exe="/Applications/Toon Boom Harmony 17 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium" -$PYPE_PYTHON_EXE -c "import avalon.harmony;avalon.harmony.launch('$exe')" diff --git a/pype/settings/defaults/launchers/darwin/python3 b/pype/settings/defaults/launchers/darwin/python3 deleted file mode 100644 index c2b82c7638c..00000000000 --- a/pype/settings/defaults/launchers/darwin/python3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -open /usr/bin/python3 --args $@ diff --git a/pype/settings/defaults/launchers/harmony_17.toml b/pype/settings/defaults/launchers/harmony_17.toml deleted file mode 100644 index dd1c929b1b5..00000000000 --- a/pype/settings/defaults/launchers/harmony_17.toml +++ /dev/null @@ -1,9 +0,0 @@ -application_dir = "harmony" -label = "Harmony" -label_variant = "17" -ftrack_label = "Harmony" -schema = "avalon-core:application-1.0" -executable = "harmony_17" -description = "" -icon = "app_icons/harmony.png" -ftrack_icon = '{}/app_icons/harmony.png' diff --git a/pype/settings/defaults/launchers/houdini_16.toml b/pype/settings/defaults/launchers/houdini_16.toml deleted file mode 100644 index 0a0876a2645..00000000000 --- a/pype/settings/defaults/launchers/houdini_16.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "houdini_16" -schema = "avalon-core:application-1.0" -application_dir = "houdini" -label = "Houdini" -label_variant = "16" -ftrack_label = "Houdini" -icon = "app_icons/houdini.png" -ftrack_icon = '{}/app_icons/houdini.png' diff --git a/pype/settings/defaults/launchers/houdini_17.toml b/pype/settings/defaults/launchers/houdini_17.toml deleted file mode 100644 index 203f5cdb9b0..00000000000 --- a/pype/settings/defaults/launchers/houdini_17.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "houdini_17" -schema = "avalon-core:application-1.0" -application_dir = "houdini" -label = "Houdini" -label_variant = "17" -ftrack_label = "Houdini" -icon = "app_icons/houdini.png" -ftrack_icon = '{}/app_icons/houdini.png' diff --git a/pype/settings/defaults/launchers/houdini_18.toml b/pype/settings/defaults/launchers/houdini_18.toml deleted file mode 100644 index 40f530c2913..00000000000 --- a/pype/settings/defaults/launchers/houdini_18.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "houdini_18" -schema = "avalon-core:application-1.0" -application_dir = "houdini" -label = "Houdini" -label_variant = "18" -ftrack_label = "Houdini" -icon = "app_icons/houdini.png" -ftrack_icon = '{}/app_icons/houdini.png' diff --git a/pype/settings/defaults/launchers/linux/maya2016 b/pype/settings/defaults/launchers/linux/maya2016 deleted file mode 100644 index 98424304b16..00000000000 --- a/pype/settings/defaults/launchers/linux/maya2016 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2016/bin/maya" - -if [[ -z $PYPE_LOG_NO_COLORS ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/launchers/linux/maya2017 b/pype/settings/defaults/launchers/linux/maya2017 deleted file mode 100644 index 7a2662a55ec..00000000000 --- a/pype/settings/defaults/launchers/linux/maya2017 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2017/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/launchers/linux/maya2018 b/pype/settings/defaults/launchers/linux/maya2018 deleted file mode 100644 index db832b3fe70..00000000000 --- a/pype/settings/defaults/launchers/linux/maya2018 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2018/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/launchers/linux/maya2019 b/pype/settings/defaults/launchers/linux/maya2019 deleted file mode 100644 index 8398734ab9f..00000000000 --- a/pype/settings/defaults/launchers/linux/maya2019 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2019/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/launchers/linux/maya2020 b/pype/settings/defaults/launchers/linux/maya2020 deleted file mode 100644 index 18a1edd5980..00000000000 --- a/pype/settings/defaults/launchers/linux/maya2020 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2020/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/launchers/linux/nuke11.3 b/pype/settings/defaults/launchers/linux/nuke11.3 deleted file mode 100644 index b1c9a90d74c..00000000000 --- a/pype/settings/defaults/launchers/linux/nuke11.3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke11.3v5/Nuke11.3' diff --git a/pype/settings/defaults/launchers/linux/nuke12.0 b/pype/settings/defaults/launchers/linux/nuke12.0 deleted file mode 100644 index 99ea1a6b0c0..00000000000 --- a/pype/settings/defaults/launchers/linux/nuke12.0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke12.0v1/Nuke12.0' diff --git a/pype/settings/defaults/launchers/linux/nukestudio11.3 b/pype/settings/defaults/launchers/linux/nukestudio11.3 deleted file mode 100644 index 750d54a7d55..00000000000 --- a/pype/settings/defaults/launchers/linux/nukestudio11.3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke11.3v5/Nuke11.3 --studio' diff --git a/pype/settings/defaults/launchers/linux/nukestudio12.0 b/pype/settings/defaults/launchers/linux/nukestudio12.0 deleted file mode 100644 index ba5cf654a8d..00000000000 --- a/pype/settings/defaults/launchers/linux/nukestudio12.0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke12.0v1/Nuke12.0 --studio' diff --git a/pype/settings/defaults/launchers/linux/nukex11.3 b/pype/settings/defaults/launchers/linux/nukex11.3 deleted file mode 100644 index d913e4b9618..00000000000 --- a/pype/settings/defaults/launchers/linux/nukex11.3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke11.3v5/Nuke11.3 -nukex' diff --git a/pype/settings/defaults/launchers/linux/nukex12.0 b/pype/settings/defaults/launchers/linux/nukex12.0 deleted file mode 100644 index da2721c48ba..00000000000 --- a/pype/settings/defaults/launchers/linux/nukex12.0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke12.0v1/Nuke12.0 -nukex' diff --git a/pype/settings/defaults/launchers/maya_2016.toml b/pype/settings/defaults/launchers/maya_2016.toml deleted file mode 100644 index 24a463d9c62..00000000000 --- a/pype/settings/defaults/launchers/maya_2016.toml +++ /dev/null @@ -1,27 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya" -label_variant = "2016" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2016" -description = "" -icon = "app_icons/maya.png" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" - -[environment] -MAYA_DISABLE_CLIC_IPM = "Yes" # Disable the AdSSO process -MAYA_DISABLE_CIP = "Yes" # Shorten time to boot -MAYA_DISABLE_CER = "Yes" -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/maya_2017.toml b/pype/settings/defaults/launchers/maya_2017.toml deleted file mode 100644 index 5295862e873..00000000000 --- a/pype/settings/defaults/launchers/maya_2017.toml +++ /dev/null @@ -1,29 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya" -label_variant = "2017" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2017" -description = "" -icon = "app_icons/maya.png" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" - -[environment] -MAYA_DISABLE_CLIC_IPM = "Yes" # Disable the AdSSO process -MAYA_DISABLE_CIP = "Yes" # Shorten time to boot -MAYA_DISABLE_CER = "Yes" -PYMEL_SKIP_MEL_INIT = "Yes" -LC_ALL= "C" # Mute color management warnings -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/maya_2018.toml b/pype/settings/defaults/launchers/maya_2018.toml deleted file mode 100644 index 2bdff2094d0..00000000000 --- a/pype/settings/defaults/launchers/maya_2018.toml +++ /dev/null @@ -1,15 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "renders" -] -label = "Autodesk Maya" -label_variant = "2018" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2018" -description = "" -icon = "app_icons/maya.png" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" diff --git a/pype/settings/defaults/launchers/maya_2019.toml b/pype/settings/defaults/launchers/maya_2019.toml deleted file mode 100644 index 8eb88179f96..00000000000 --- a/pype/settings/defaults/launchers/maya_2019.toml +++ /dev/null @@ -1,15 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "renders" -] -label = "Autodesk Maya" -label_variant = "2019" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2019" -description = "" -icon = "app_icons/maya.png" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" diff --git a/pype/settings/defaults/launchers/maya_2020.toml b/pype/settings/defaults/launchers/maya_2020.toml deleted file mode 100644 index 693de0cf9e3..00000000000 --- a/pype/settings/defaults/launchers/maya_2020.toml +++ /dev/null @@ -1,15 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "renders" -] -label = "Autodesk Maya" -label_variant = "2020" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2020" -description = "" -icon = "app_icons/maya.png" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" diff --git a/pype/settings/defaults/launchers/mayabatch_2019.toml b/pype/settings/defaults/launchers/mayabatch_2019.toml deleted file mode 100644 index a928618d2b7..00000000000 --- a/pype/settings/defaults/launchers/mayabatch_2019.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2019x64" -schema = "avalon-core:application-1.0" -executable = "mayabatch2019" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/mayabatch_2020.toml b/pype/settings/defaults/launchers/mayabatch_2020.toml deleted file mode 100644 index cd1e1e4474f..00000000000 --- a/pype/settings/defaults/launchers/mayabatch_2020.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2020x64" -schema = "avalon-core:application-1.0" -executable = "mayabatch2020" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/mayapy2016.toml b/pype/settings/defaults/launchers/mayapy2016.toml deleted file mode 100644 index ad1e3dee86c..00000000000 --- a/pype/settings/defaults/launchers/mayapy2016.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2016x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2016" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/mayapy2017.toml b/pype/settings/defaults/launchers/mayapy2017.toml deleted file mode 100644 index 8d2095ff478..00000000000 --- a/pype/settings/defaults/launchers/mayapy2017.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2017x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2017" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/mayapy2018.toml b/pype/settings/defaults/launchers/mayapy2018.toml deleted file mode 100644 index 597744fd85e..00000000000 --- a/pype/settings/defaults/launchers/mayapy2018.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2018x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2017" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/mayapy2019.toml b/pype/settings/defaults/launchers/mayapy2019.toml deleted file mode 100644 index 3c8a9860f99..00000000000 --- a/pype/settings/defaults/launchers/mayapy2019.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2019x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2019" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/mayapy2020.toml b/pype/settings/defaults/launchers/mayapy2020.toml deleted file mode 100644 index 8f2d2e4a677..00000000000 --- a/pype/settings/defaults/launchers/mayapy2020.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2020x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2020" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/launchers/myapp.toml b/pype/settings/defaults/launchers/myapp.toml deleted file mode 100644 index 21da0d52b24..00000000000 --- a/pype/settings/defaults/launchers/myapp.toml +++ /dev/null @@ -1,5 +0,0 @@ -executable = "python" -schema = "avalon-core:application-1.0" -application_dir = "myapp" -label = "My App" -arguments = [ "-c", "import sys; from Qt import QtWidgets; if __name__ == '__main__':;\n app = QtWidgets.QApplication(sys.argv);\n window = QtWidgets.QWidget();\n window.setWindowTitle(\"My App\");\n window.resize(400, 300);\n window.show();\n app.exec_();\n",] \ No newline at end of file diff --git a/pype/settings/defaults/launchers/nuke_10.0.toml b/pype/settings/defaults/launchers/nuke_10.0.toml deleted file mode 100644 index d4dd028942b..00000000000 --- a/pype/settings/defaults/launchers/nuke_10.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nuke10.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke" -label_variant = "10.0v4" -ftrack_label = "Nuke" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nuke_11.0.toml b/pype/settings/defaults/launchers/nuke_11.0.toml deleted file mode 100644 index 10ff6aca37f..00000000000 --- a/pype/settings/defaults/launchers/nuke_11.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nuke11.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke" -label_variant = "11.0" -ftrack_label = "Nuke" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nuke_11.2.toml b/pype/settings/defaults/launchers/nuke_11.2.toml deleted file mode 100644 index 530c7f610ee..00000000000 --- a/pype/settings/defaults/launchers/nuke_11.2.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nuke11.2" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke" -label_variant = "11.2" -ftrack_label = "Nuke" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nuke_11.3.toml b/pype/settings/defaults/launchers/nuke_11.3.toml deleted file mode 100644 index c9ff005feb8..00000000000 --- a/pype/settings/defaults/launchers/nuke_11.3.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nuke11.3" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke" -label_variant = "11.3" -ftrack_label = "Nuke" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nuke_12.0.toml b/pype/settings/defaults/launchers/nuke_12.0.toml deleted file mode 100644 index 9ac1084fbf2..00000000000 --- a/pype/settings/defaults/launchers/nuke_12.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nuke12.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke" -label_variant = "12.0" -ftrack_label = "Nuke" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nukestudio_10.0.toml b/pype/settings/defaults/launchers/nukestudio_10.0.toml deleted file mode 100644 index 6c554aff625..00000000000 --- a/pype/settings/defaults/launchers/nukestudio_10.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukestudio10.0" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio" -label_variant = "10.0" -ftrack_label = "NukeStudio" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nukestudio_11.0.toml b/pype/settings/defaults/launchers/nukestudio_11.0.toml deleted file mode 100644 index 482aa6587e1..00000000000 --- a/pype/settings/defaults/launchers/nukestudio_11.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukestudio11.0" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio" -label_variant = "11.0" -ftrack_label = "NukeStudio" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nukestudio_11.2.toml b/pype/settings/defaults/launchers/nukestudio_11.2.toml deleted file mode 100644 index 78d1de3d8b9..00000000000 --- a/pype/settings/defaults/launchers/nukestudio_11.2.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukestudio11.2" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio" -label_variant = "11.2" -ftrack_label = "NukeStudio" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nukestudio_11.3.toml b/pype/settings/defaults/launchers/nukestudio_11.3.toml deleted file mode 100644 index 35c6a08b2fa..00000000000 --- a/pype/settings/defaults/launchers/nukestudio_11.3.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukestudio11.3" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio" -label_variant = "11.3" -ftrack_label = "NukeStudio" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nukestudio_12.0.toml b/pype/settings/defaults/launchers/nukestudio_12.0.toml deleted file mode 100644 index 2754116aef1..00000000000 --- a/pype/settings/defaults/launchers/nukestudio_12.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukestudio12.0" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio" -label_variant = "12.0" -ftrack_label = "NukeStudio" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/launchers/nukex_10.0.toml b/pype/settings/defaults/launchers/nukex_10.0.toml deleted file mode 100644 index 48da30fe161..00000000000 --- a/pype/settings/defaults/launchers/nukex_10.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukex10.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX" -label_variant = "10.0" -ftrack_label = "NukeX" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/launchers/nukex_11.0.toml b/pype/settings/defaults/launchers/nukex_11.0.toml deleted file mode 100644 index 8f353e9e007..00000000000 --- a/pype/settings/defaults/launchers/nukex_11.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukex11.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX" -label_variant = "11.0" -ftrack_label = "NukeX" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/launchers/nukex_11.2.toml b/pype/settings/defaults/launchers/nukex_11.2.toml deleted file mode 100644 index 38e37fa4c91..00000000000 --- a/pype/settings/defaults/launchers/nukex_11.2.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukex11.2" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX" -label_variant = "11.2" -ftrack_label = "NukeX" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/launchers/nukex_11.3.toml b/pype/settings/defaults/launchers/nukex_11.3.toml deleted file mode 100644 index 42969c5e691..00000000000 --- a/pype/settings/defaults/launchers/nukex_11.3.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukex11.3" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX" -label_variant = "11.3" -ftrack_label = "NukeX" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/launchers/nukex_12.0.toml b/pype/settings/defaults/launchers/nukex_12.0.toml deleted file mode 100644 index 19d27a12d7a..00000000000 --- a/pype/settings/defaults/launchers/nukex_12.0.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "nukex12.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX" -label_variant = "12.0" -ftrack_label = "NukeX" -icon = "app_icons/nuke.png" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/launchers/photoshop_2020.toml b/pype/settings/defaults/launchers/photoshop_2020.toml deleted file mode 100644 index 8164af929f4..00000000000 --- a/pype/settings/defaults/launchers/photoshop_2020.toml +++ /dev/null @@ -1,9 +0,0 @@ -executable = "photoshop_2020" -schema = "avalon-core:application-1.0" -application_dir = "photoshop" -label = "Adobe Photoshop" -label_variant = "2020" -icon = "app_icons/photoshop.png" -ftrack_label = "Photoshop" -ftrack_icon = '{}/app_icons/photoshop.png' -launch_hook = "pype/hooks/photoshop/prelaunch.py/PhotoshopPrelaunch" diff --git a/pype/settings/defaults/launchers/premiere_2019.toml b/pype/settings/defaults/launchers/premiere_2019.toml deleted file mode 100644 index d03395e022b..00000000000 --- a/pype/settings/defaults/launchers/premiere_2019.toml +++ /dev/null @@ -1,9 +0,0 @@ -executable = "premiere_pro_2019" -schema = "avalon-core:application-1.0" -application_dir = "premiere" -label = "Adobe Premiere Pro CC" -label_variant = "2019" -icon = "app_icons/premiere.png" - -ftrack_label = "Premiere" -ftrack_icon = '{}/app_icons/premiere.png' diff --git a/pype/settings/defaults/launchers/premiere_2020.toml b/pype/settings/defaults/launchers/premiere_2020.toml deleted file mode 100644 index 01c7b5b745e..00000000000 --- a/pype/settings/defaults/launchers/premiere_2020.toml +++ /dev/null @@ -1,10 +0,0 @@ -executable = "premiere_pro_2020" -schema = "avalon-core:application-1.0" -application_dir = "premiere" -label = "Adobe Premiere Pro CC" -label_variant = "2020" -launch_hook = "pype/hooks/premiere/prelaunch.py/PremierePrelaunch" -icon = "app_icons/premiere.png" - -ftrack_label = "Premiere" -ftrack_icon = '{}/app_icons/premiere.png' diff --git a/pype/settings/defaults/launchers/python_2.toml b/pype/settings/defaults/launchers/python_2.toml deleted file mode 100644 index f1c1ca7e681..00000000000 --- a/pype/settings/defaults/launchers/python_2.toml +++ /dev/null @@ -1,12 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "python" -executable = "python" -label = "Python" -label_variant = "2" -icon = "app_icons/python.png" - -ftrack_label = "Python" -ftrack_icon = '{}/app_icons/python.png' - -[environment] -CREATE_NEW_CONSOLE = "Yes" diff --git a/pype/settings/defaults/launchers/python_3.toml b/pype/settings/defaults/launchers/python_3.toml deleted file mode 100644 index 90fb10eaeb9..00000000000 --- a/pype/settings/defaults/launchers/python_3.toml +++ /dev/null @@ -1,12 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "python" -executable = "python3" -label = "Python" -label_variant = "3" -icon = "app_icons/python.png" - -ftrack_label = "Python" -ftrack_icon = '{}/app_icons/python.png' - -[environment] -CREATE_NEW_CONSOLE = "Yes" diff --git a/pype/settings/defaults/launchers/resolve_16.toml b/pype/settings/defaults/launchers/resolve_16.toml deleted file mode 100644 index 47918a22a6a..00000000000 --- a/pype/settings/defaults/launchers/resolve_16.toml +++ /dev/null @@ -1,10 +0,0 @@ -executable = "resolve_16" -schema = "avalon-core:application-1.0" -application_dir = "resolve" -label = "BM DaVinci Resolve" -label_variant = "16" -launch_hook = "pype/hooks/resolve/prelaunch.py/ResolvePrelaunch" -icon = "app_icons/resolve.png" - -ftrack_label = "BM DaVinci Resolve" -ftrack_icon = '{}/app_icons/resolve.png' diff --git a/pype/settings/defaults/launchers/shell.toml b/pype/settings/defaults/launchers/shell.toml deleted file mode 100644 index 959ad392ea7..00000000000 --- a/pype/settings/defaults/launchers/shell.toml +++ /dev/null @@ -1,7 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "shell" -executable = "shell" -label = "Shell" - -[environment] -CREATE_NEW_CONSOLE = "Yes" \ No newline at end of file diff --git a/pype/settings/defaults/launchers/storyboardpro_7.toml b/pype/settings/defaults/launchers/storyboardpro_7.toml deleted file mode 100644 index 067f10a23af..00000000000 --- a/pype/settings/defaults/launchers/storyboardpro_7.toml +++ /dev/null @@ -1,9 +0,0 @@ -application_dir = "storyboardpro" -label = "Storyboard Pro" -label_variant = "7" -ftrack_label = "Storyboard Pro" -schema = "avalon-core:application-1.0" -executable = "storyboardpro_7" -description = "" -icon = "app_icons/storyboardpro.png" -ftrack_icon = '{}/app_icons/storyboardpro.png' diff --git a/pype/settings/defaults/launchers/unreal_4.24.toml b/pype/settings/defaults/launchers/unreal_4.24.toml deleted file mode 100644 index 10b14e7f592..00000000000 --- a/pype/settings/defaults/launchers/unreal_4.24.toml +++ /dev/null @@ -1,10 +0,0 @@ -executable = "unreal" -schema = "avalon-core:application-1.0" -application_dir = "unreal" -label = "Unreal Editor" -label_variant = "4.24" -icon = "app_icons/ue4.png" -launch_hook = "pype/hooks/unreal/unreal_prelaunch.py/UnrealPrelaunch" - -ftrack_label = "UnrealEditor" -ftrack_icon = '{}/app_icons/ue4.png' diff --git a/pype/settings/defaults/launchers/windows/blender_2.80.bat b/pype/settings/defaults/launchers/windows/blender_2.80.bat deleted file mode 100644 index 5b8a37356b5..00000000000 --- a/pype/settings/defaults/launchers/windows/blender_2.80.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.80\blender.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/blender_2.81.bat b/pype/settings/defaults/launchers/windows/blender_2.81.bat deleted file mode 100644 index a900b18edaf..00000000000 --- a/pype/settings/defaults/launchers/windows/blender_2.81.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.81\blender.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/blender_2.82.bat b/pype/settings/defaults/launchers/windows/blender_2.82.bat deleted file mode 100644 index 7105c1efe1c..00000000000 --- a/pype/settings/defaults/launchers/windows/blender_2.82.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.82\blender.exe" --python-use-system-env -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/blender_2.83.bat b/pype/settings/defaults/launchers/windows/blender_2.83.bat deleted file mode 100644 index 671952f0d79..00000000000 --- a/pype/settings/defaults/launchers/windows/blender_2.83.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.83\blender.exe" --python-use-system-env -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/celaction_local.bat b/pype/settings/defaults/launchers/windows/celaction_local.bat deleted file mode 100644 index 8f2171617ea..00000000000 --- a/pype/settings/defaults/launchers/windows/celaction_local.bat +++ /dev/null @@ -1,19 +0,0 @@ -set __app__="CelAction2D" -set __app_dir__="C:\Program Files (x86)\CelAction\" -set __exe__="C:\Program Files (x86)\CelAction\CelAction2D.exe" - -if not exist %__exe__% goto :missing_app - -pushd %__app_dir__% - -if "%PYPE_CELACTION_PROJECT_FILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% "%PYPE_CELACTION_PROJECT_FILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/celaction_publish.bat b/pype/settings/defaults/launchers/windows/celaction_publish.bat deleted file mode 100644 index 77ec2ac24e7..00000000000 --- a/pype/settings/defaults/launchers/windows/celaction_publish.bat +++ /dev/null @@ -1,3 +0,0 @@ -echo %* - -%PYPE_PYTHON_EXE% "%PYPE_MODULE_ROOT%\pype\hosts\celaction\cli.py" %* diff --git a/pype/settings/defaults/launchers/windows/harmony_17.bat b/pype/settings/defaults/launchers/windows/harmony_17.bat deleted file mode 100644 index 08226508755..00000000000 --- a/pype/settings/defaults/launchers/windows/harmony_17.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Harmony 17" -set __exe__="C:/Program Files (x86)/Toon Boom Animation/Toon Boom Harmony 17 Premium/win64/bin/HarmonyPremium.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% cmd.exe /k "python -c ^"import avalon.harmony;avalon.harmony.launch("%__exe__%")^"" - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/houdini_16.bat b/pype/settings/defaults/launchers/windows/houdini_16.bat deleted file mode 100644 index 018ba08b4c1..00000000000 --- a/pype/settings/defaults/launchers/windows/houdini_16.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Houdini 16.0" -set __exe__="C:\Program Files\Side Effects Software\Houdini 16.0.621\bin\houdini.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/houdini_17.bat b/pype/settings/defaults/launchers/windows/houdini_17.bat deleted file mode 100644 index 950a599623f..00000000000 --- a/pype/settings/defaults/launchers/windows/houdini_17.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Houdini 17.0" -set __exe__="C:\Program Files\Side Effects Software\Houdini 17.0.459\bin\houdini.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/houdini_18.bat b/pype/settings/defaults/launchers/windows/houdini_18.bat deleted file mode 100644 index 3d6b1ae258c..00000000000 --- a/pype/settings/defaults/launchers/windows/houdini_18.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Houdini 18.0" -set __exe__="C:\Program Files\Side Effects Software\Houdini 18.0.287\bin\houdini.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/maya2016.bat b/pype/settings/defaults/launchers/windows/maya2016.bat deleted file mode 100644 index 54f15cf269b..00000000000 --- a/pype/settings/defaults/launchers/windows/maya2016.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2016" -set __exe__="C:\Program Files\Autodesk\Maya2016\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/maya2017.bat b/pype/settings/defaults/launchers/windows/maya2017.bat deleted file mode 100644 index 5c2aeb495cd..00000000000 --- a/pype/settings/defaults/launchers/windows/maya2017.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2017" -set __exe__="C:\Program Files\Autodesk\Maya2017\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/maya2018.bat b/pype/settings/defaults/launchers/windows/maya2018.bat deleted file mode 100644 index 28cf776c779..00000000000 --- a/pype/settings/defaults/launchers/windows/maya2018.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2018" -set __exe__="C:\Program Files\Autodesk\Maya2018\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/maya2019.bat b/pype/settings/defaults/launchers/windows/maya2019.bat deleted file mode 100644 index 7e80dd25573..00000000000 --- a/pype/settings/defaults/launchers/windows/maya2019.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2019" -set __exe__="C:\Program Files\Autodesk\Maya2019\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/maya2020.bat b/pype/settings/defaults/launchers/windows/maya2020.bat deleted file mode 100644 index b2acb5df5aa..00000000000 --- a/pype/settings/defaults/launchers/windows/maya2020.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2020" -set __exe__="C:\Program Files\Autodesk\maya2020\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayabatch2019.bat b/pype/settings/defaults/launchers/windows/mayabatch2019.bat deleted file mode 100644 index ddd9b9b9564..00000000000 --- a/pype/settings/defaults/launchers/windows/mayabatch2019.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set __app__="Maya Batch 2019" -set __exe__="C:\Program Files\Autodesk\Maya2019\bin\mayabatch.exe" -if not exist %__exe__% goto :missing_app - -echo "running maya : %*" -%__exe__% %* -echo "done." -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayabatch2020.bat b/pype/settings/defaults/launchers/windows/mayabatch2020.bat deleted file mode 100644 index b1cbc6dbb6e..00000000000 --- a/pype/settings/defaults/launchers/windows/mayabatch2020.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set __app__="Maya Batch 2020" -set __exe__="C:\Program Files\Autodesk\Maya2020\bin\mayabatch.exe" -if not exist %__exe__% goto :missing_app - -echo "running maya : %*" -%__exe__% %* -echo "done." -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayapy2016.bat b/pype/settings/defaults/launchers/windows/mayapy2016.bat deleted file mode 100644 index 205991fd3d3..00000000000 --- a/pype/settings/defaults/launchers/windows/mayapy2016.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2016" -set __exe__="C:\Program Files\Autodesk\Maya2016\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayapy2017.bat b/pype/settings/defaults/launchers/windows/mayapy2017.bat deleted file mode 100644 index 14aacc5a7f9..00000000000 --- a/pype/settings/defaults/launchers/windows/mayapy2017.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2017" -set __exe__="C:\Program Files\Autodesk\Maya2017\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayapy2018.bat b/pype/settings/defaults/launchers/windows/mayapy2018.bat deleted file mode 100644 index c47c472f460..00000000000 --- a/pype/settings/defaults/launchers/windows/mayapy2018.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2018" -set __exe__="C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayapy2019.bat b/pype/settings/defaults/launchers/windows/mayapy2019.bat deleted file mode 100644 index 73ca5b2d408..00000000000 --- a/pype/settings/defaults/launchers/windows/mayapy2019.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2019" -set __exe__="C:\Program Files\Autodesk\Maya2019\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/mayapy2020.bat b/pype/settings/defaults/launchers/windows/mayapy2020.bat deleted file mode 100644 index 770a03dcf55..00000000000 --- a/pype/settings/defaults/launchers/windows/mayapy2020.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2020" -set __exe__="C:\Program Files\Autodesk\Maya2020\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eofS - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nuke10.0.bat b/pype/settings/defaults/launchers/windows/nuke10.0.bat deleted file mode 100644 index a47cbdfb207..00000000000 --- a/pype/settings/defaults/launchers/windows/nuke10.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke10.0v4" -set __exe__="C:\Program Files\Nuke10.0v4\Nuke10.0.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nuke11.0.bat b/pype/settings/defaults/launchers/windows/nuke11.0.bat deleted file mode 100644 index a374c5cf5bb..00000000000 --- a/pype/settings/defaults/launchers/windows/nuke11.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke11.0v4" -set __exe__="C:\Program Files\Nuke11.0v4\Nuke11.0.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nuke11.2.bat b/pype/settings/defaults/launchers/windows/nuke11.2.bat deleted file mode 100644 index 4c777ac28c4..00000000000 --- a/pype/settings/defaults/launchers/windows/nuke11.2.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke11.2v3" -set __exe__="C:\Program Files\Nuke11.2v3\Nuke11.2.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nuke11.3.bat b/pype/settings/defaults/launchers/windows/nuke11.3.bat deleted file mode 100644 index a023f5f46f9..00000000000 --- a/pype/settings/defaults/launchers/windows/nuke11.3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke11.3v1" -set __exe__="C:\Program Files\Nuke11.3v1\Nuke11.3.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nuke12.0.bat b/pype/settings/defaults/launchers/windows/nuke12.0.bat deleted file mode 100644 index d8fb5772bbb..00000000000 --- a/pype/settings/defaults/launchers/windows/nuke12.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke12.0v1" -set __exe__="C:\Program Files\Nuke12.0v1\Nuke12.0.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukestudio10.0.bat b/pype/settings/defaults/launchers/windows/nukestudio10.0.bat deleted file mode 100644 index 82f833667c9..00000000000 --- a/pype/settings/defaults/launchers/windows/nukestudio10.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio10.0v4" -set __exe__="C:\Program Files\Nuke10.0v4\Nuke10.0.exe" --studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukestudio11.0.bat b/pype/settings/defaults/launchers/windows/nukestudio11.0.bat deleted file mode 100644 index b66797727e8..00000000000 --- a/pype/settings/defaults/launchers/windows/nukestudio11.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio11.0v4" -set __exe__="C:\Program Files\Nuke11.0v4\Nuke11.0.exe" -studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukestudio11.2.bat b/pype/settings/defaults/launchers/windows/nukestudio11.2.bat deleted file mode 100644 index a653d816b49..00000000000 --- a/pype/settings/defaults/launchers/windows/nukestudio11.2.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio11.2v3" -set __exe__="C:\Program Files\Nuke11.2v3\Nuke11.2.exe" -studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukestudio11.3.bat b/pype/settings/defaults/launchers/windows/nukestudio11.3.bat deleted file mode 100644 index 62c87188739..00000000000 --- a/pype/settings/defaults/launchers/windows/nukestudio11.3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio11.3v1" -set __exe__="C:\Program Files\Nuke11.3v1\Nuke11.3.exe" --studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukestudio12.0.bat b/pype/settings/defaults/launchers/windows/nukestudio12.0.bat deleted file mode 100644 index 488232bcbfa..00000000000 --- a/pype/settings/defaults/launchers/windows/nukestudio12.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio12.0v1" -set __exe__="C:\Program Files\Nuke12.0v1\Nuke12.0.exe" --studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukex10.0.bat b/pype/settings/defaults/launchers/windows/nukex10.0.bat deleted file mode 100644 index 1759706a7b2..00000000000 --- a/pype/settings/defaults/launchers/windows/nukex10.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX10.0v4" -set __exe__="C:\Program Files\Nuke10.0v4\Nuke10.0.exe" -nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukex11.0.bat b/pype/settings/defaults/launchers/windows/nukex11.0.bat deleted file mode 100644 index b554a7b6fa7..00000000000 --- a/pype/settings/defaults/launchers/windows/nukex11.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX11.0v4" -set __exe__="C:\Program Files\Nuke11.0v4\Nuke11.0.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukex11.2.bat b/pype/settings/defaults/launchers/windows/nukex11.2.bat deleted file mode 100644 index a4cb5dec5c3..00000000000 --- a/pype/settings/defaults/launchers/windows/nukex11.2.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX11.2v3" -set __exe__="C:\Program Files\Nuke11.2v3\Nuke11.2.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukex11.3.bat b/pype/settings/defaults/launchers/windows/nukex11.3.bat deleted file mode 100644 index 490b55cf4c4..00000000000 --- a/pype/settings/defaults/launchers/windows/nukex11.3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX11.3v1" -set __exe__="C:\Program Files\Nuke11.3v1\Nuke11.3.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/nukex12.0.bat b/pype/settings/defaults/launchers/windows/nukex12.0.bat deleted file mode 100644 index 26adf0d3f15..00000000000 --- a/pype/settings/defaults/launchers/windows/nukex12.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX12.0v1" -set __exe__="C:\Program Files\Nuke12.0v1\Nuke12.0.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/photoshop_2020.bat b/pype/settings/defaults/launchers/windows/photoshop_2020.bat deleted file mode 100644 index 6b90922ef6e..00000000000 --- a/pype/settings/defaults/launchers/windows/photoshop_2020.bat +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -set __app__="Photoshop 2020" -set __exe__="C:\Program Files\Adobe\Adobe Photoshop 2020\Photoshop.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% cmd.exe /k "%PYPE_PYTHON_EXE% -c ^"import avalon.photoshop;avalon.photoshop.launch("%__exe__%")^"" - -goto :eof - -pause - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/premiere_pro_2019.bat b/pype/settings/defaults/launchers/windows/premiere_pro_2019.bat deleted file mode 100644 index 4886737d2f2..00000000000 --- a/pype/settings/defaults/launchers/windows/premiere_pro_2019.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set __app__="Adobe Premiere Pro" -set __exe__="C:\Program Files\Adobe\Adobe Premiere Pro CC 2019\Adobe Premiere Pro.exe" -if not exist %__exe__% goto :missing_app - -python -u %PREMIERA_PATH%\init.py -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/premiere_pro_2020.bat b/pype/settings/defaults/launchers/windows/premiere_pro_2020.bat deleted file mode 100644 index 14662d3be38..00000000000 --- a/pype/settings/defaults/launchers/windows/premiere_pro_2020.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Adobe Premiere Pro" -set __exe__="C:\Program Files\Adobe\Adobe Premiere Pro 2020\Adobe Premiere Pro.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/python3.bat b/pype/settings/defaults/launchers/windows/python3.bat deleted file mode 100644 index c7c116fe723..00000000000 --- a/pype/settings/defaults/launchers/windows/python3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Python36" -set __exe__="C:\Python36\python.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/resolve_16.bat b/pype/settings/defaults/launchers/windows/resolve_16.bat deleted file mode 100644 index 1a5d964e6b1..00000000000 --- a/pype/settings/defaults/launchers/windows/resolve_16.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Resolve" -set __appy__="Resolve Python Console" -set __exe__="C:/Program Files/Blackmagic Design/DaVinci Resolve/Resolve.exe" -set __py__="%PYTHON36_RESOLVE%/python.exe" - -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* -IF "%RESOLVE_DEV%"=="True" (start %__appy__% %__py__% -i %PRE_PYTHON_SCRIPT%) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/shell.bat b/pype/settings/defaults/launchers/windows/shell.bat deleted file mode 100644 index eb0895364f4..00000000000 --- a/pype/settings/defaults/launchers/windows/shell.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -start cmd diff --git a/pype/settings/defaults/launchers/windows/storyboardpro_7.bat b/pype/settings/defaults/launchers/windows/storyboardpro_7.bat deleted file mode 100644 index 122edac572a..00000000000 --- a/pype/settings/defaults/launchers/windows/storyboardpro_7.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Storyboard Pro 7" -set __exe__="C:/Program Files (x86)/Toon Boom Animation/Toon Boom Storyboard Pro 7/win64/bin/StoryboardPro.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% cmd.exe /k "python -c ^"import avalon.storyboardpro;avalon.storyboardpro.launch("%__exe__%")^"" - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/launchers/windows/unreal.bat b/pype/settings/defaults/launchers/windows/unreal.bat deleted file mode 100644 index 7771aaa5a56..00000000000 --- a/pype/settings/defaults/launchers/windows/unreal.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Unreal Editor" -set __exe__="%AVALON_CURRENT_UNREAL_ENGINE%\Engine\Binaries\Win64\UE4Editor.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %PYPE_UNREAL_PROJECT_FILE% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/global/applications.json b/pype/settings/defaults/system_settings/global/applications.json index e622ba67ca0..4bcea2fa30d 100644 --- a/pype/settings/defaults/system_settings/global/applications.json +++ b/pype/settings/defaults/system_settings/global/applications.json @@ -103,6 +103,104 @@ } } }, + "mayabatch": { + "enabled": true, + "label": "Autodesk MayaBatch", + "icon": "{}/app_icons/maya.png", + "is_host": false, + "environment": { + "__environment_keys__": { + "mayabatch": [ + "PYTHONPATH", + "MAYA_DISABLE_CLIC_IPM", + "MAYA_DISABLE_CIP", + "MAYA_DISABLE_CER", + "PYMEL_SKIP_MEL_INIT", + "LC_ALL", + "PYPE_LOG_NO_COLORS", + "MAYA_TEST" + ] + }, + "PYTHONPATH": [ + "{PYPE_SETUP_PATH}/repos/avalon-core/setup/maya", + "{PYPE_SETUP_PATH}/repos/maya-look-assigner", + "{PYTHON_ENV}/python2/Lib/site-packages", + "{PYTHONPATH}" + ], + "MAYA_DISABLE_CLIC_IPM": "Yes", + "MAYA_DISABLE_CIP": "Yes", + "MAYA_DISABLE_CER": "Yes", + "PYMEL_SKIP_MEL_INIT": "Yes", + "LC_ALL": "C", + "PYPE_LOG_NO_COLORS": "Yes", + "MAYA_TEST": "{MAYA_VERSION}" + }, + "variants": { + "mayabatch_2020": { + "enabled": true, + "label": "", + "variant_label": "2020", + "icon": "", + "executables": { + "windows": [ + "C:\\Program Files\\Autodesk\\Maya2020\\bin\\mayabatch.exe" + ], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "mayabatch_2020": [ + "MAYA_VERSION" + ] + }, + "MAYA_VERSION": "2020" + } + }, + "mayabatch_2019": { + "enabled": true, + "label": "", + "variant_label": "2019", + "icon": "", + "executables": { + "windows": [ + "C:\\Program Files\\Autodesk\\Maya2019\\bin\\mayabatch.exe" + ], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "mayabatch_2019": [ + "MAYA_VERSION" + ] + }, + "MAYA_VERSION": "2019" + } + }, + "mayabatch_2018": { + "enabled": true, + "label": "", + "variant_label": "2018", + "icon": "", + "executables": { + "windows": [ + "C:\\Program Files\\Autodesk\\Maya2018\\bin\\mayabatch.exe" + ], + "darwin": [], + "linux": [] + }, + "environment": { + "__environment_keys__": { + "mayabatch_2018": [ + "MAYA_VERSION" + ] + }, + "MAYA_VERSION": "2018" + } + } + } + }, "nuke": { "enabled": true, "label": "Nuke", diff --git a/pype/settings/defaults/system_settings/global/modules.json b/pype/settings/defaults/system_settings/global/modules.json index 9e5453011d1..a28c2f4a035 100644 --- a/pype/settings/defaults/system_settings/global/modules.json +++ b/pype/settings/defaults/system_settings/global/modules.json @@ -112,9 +112,6 @@ "Logging": { "enabled": true }, - "Adobe Communicator": { - "enabled": true - }, "User setting": { "enabled": true }, diff --git a/pype/settings/defaults/system_settings/launchers/blender_2.80.toml b/pype/settings/defaults/system_settings/launchers/blender_2.80.toml deleted file mode 100644 index 5fea78b7b0d..00000000000 --- a/pype/settings/defaults/system_settings/launchers/blender_2.80.toml +++ /dev/null @@ -1,7 +0,0 @@ -application_dir = "blender" -executable = "blender_2.80" -schema = "avalon-core:application-1.0" -label = "Blender 2.80" -ftrack_label = "Blender" -icon ="blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/system_settings/launchers/blender_2.81.toml b/pype/settings/defaults/system_settings/launchers/blender_2.81.toml deleted file mode 100644 index 4f85ee55584..00000000000 --- a/pype/settings/defaults/system_settings/launchers/blender_2.81.toml +++ /dev/null @@ -1,7 +0,0 @@ -application_dir = "blender" -executable = "blender_2.81" -schema = "avalon-core:application-1.0" -label = "Blender 2.81" -ftrack_label = "Blender" -icon ="blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/system_settings/launchers/blender_2.82.toml b/pype/settings/defaults/system_settings/launchers/blender_2.82.toml deleted file mode 100644 index 840001452e3..00000000000 --- a/pype/settings/defaults/system_settings/launchers/blender_2.82.toml +++ /dev/null @@ -1,7 +0,0 @@ -application_dir = "blender" -executable = "blender_2.82" -schema = "avalon-core:application-1.0" -label = "Blender 2.82" -ftrack_label = "Blender" -icon ="blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/system_settings/launchers/blender_2.83.toml b/pype/settings/defaults/system_settings/launchers/blender_2.83.toml deleted file mode 100644 index 7fc8bf87b9c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/blender_2.83.toml +++ /dev/null @@ -1,7 +0,0 @@ -application_dir = "blender" -executable = "blender_2.83" -schema = "avalon-core:application-1.0" -label = "Blender 2.83" -ftrack_label = "Blender" -icon ="blender" -ftrack_icon = '{}/app_icons/blender.png' diff --git a/pype/settings/defaults/system_settings/launchers/celaction_local.toml b/pype/settings/defaults/system_settings/launchers/celaction_local.toml deleted file mode 100644 index aef3548e084..00000000000 --- a/pype/settings/defaults/system_settings/launchers/celaction_local.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "celaction_local" -schema = "avalon-core:application-1.0" -application_dir = "celaction" -label = "CelAction2D" -ftrack_label = "CelAction2D" -icon ="celaction_local" -launch_hook = "pype/hooks/celaction/prelaunch.py/CelactionPrelaunchHook" -ftrack_icon = '{}/app_icons/celaction_local.png' diff --git a/pype/settings/defaults/system_settings/launchers/celaction_publish.toml b/pype/settings/defaults/system_settings/launchers/celaction_publish.toml deleted file mode 100644 index 86f4ae39e7d..00000000000 --- a/pype/settings/defaults/system_settings/launchers/celaction_publish.toml +++ /dev/null @@ -1,7 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "shell" -executable = "celaction_publish" -label = "Shell" - -[environment] -CREATE_NEW_CONSOLE = "Yes" diff --git a/pype/settings/defaults/system_settings/launchers/darwin/blender_2.82 b/pype/settings/defaults/system_settings/launchers/darwin/blender_2.82 deleted file mode 100644 index 8254411ea26..00000000000 --- a/pype/settings/defaults/system_settings/launchers/darwin/blender_2.82 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -open -a blender $@ diff --git a/pype/settings/defaults/system_settings/launchers/darwin/harmony_17 b/pype/settings/defaults/system_settings/launchers/darwin/harmony_17 deleted file mode 100644 index b7eba2c2d0c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/darwin/harmony_17 +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -DIRNAME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -set >~/environment.tmp -if [ $? -ne -0 ] ; then - echo "ERROR: cannot write to '~/environment.tmp'!" - read -n 1 -s -r -p "Press any key to exit" - return -fi -open -a Terminal.app "$DIRNAME/harmony_17_launch" diff --git a/pype/settings/defaults/system_settings/launchers/darwin/harmony_17_launch b/pype/settings/defaults/system_settings/launchers/darwin/harmony_17_launch deleted file mode 100644 index 5dcf5db57e3..00000000000 --- a/pype/settings/defaults/system_settings/launchers/darwin/harmony_17_launch +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -source ~/environment.tmp -export $(cut -d= -f1 ~/environment.tmp) -exe="/Applications/Toon Boom Harmony 17 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium" -$PYPE_PYTHON_EXE -c "import avalon.harmony;avalon.harmony.launch('$exe')" diff --git a/pype/settings/defaults/system_settings/launchers/darwin/python3 b/pype/settings/defaults/system_settings/launchers/darwin/python3 deleted file mode 100644 index c2b82c7638c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/darwin/python3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -open /usr/bin/python3 --args $@ diff --git a/pype/settings/defaults/system_settings/launchers/harmony_17.toml b/pype/settings/defaults/system_settings/launchers/harmony_17.toml deleted file mode 100644 index dbb76444a76..00000000000 --- a/pype/settings/defaults/system_settings/launchers/harmony_17.toml +++ /dev/null @@ -1,8 +0,0 @@ -application_dir = "harmony" -label = "Harmony 17" -ftrack_label = "Harmony" -schema = "avalon-core:application-1.0" -executable = "harmony_17" -description = "" -icon ="harmony_icon" -ftrack_icon = '{}/app_icons/harmony.png' diff --git a/pype/settings/defaults/system_settings/launchers/houdini_16.toml b/pype/settings/defaults/system_settings/launchers/houdini_16.toml deleted file mode 100644 index e29fa74cadd..00000000000 --- a/pype/settings/defaults/system_settings/launchers/houdini_16.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "houdini_16" -schema = "avalon-core:application-1.0" -application_dir = "houdini" -label = "Houdini 16" -ftrack_label = "Houdini" -icon = "houdini_icon" -ftrack_icon = '{}/app_icons/houdini.png' diff --git a/pype/settings/defaults/system_settings/launchers/houdini_17.toml b/pype/settings/defaults/system_settings/launchers/houdini_17.toml deleted file mode 100644 index 5d01364330a..00000000000 --- a/pype/settings/defaults/system_settings/launchers/houdini_17.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "houdini_17" -schema = "avalon-core:application-1.0" -application_dir = "houdini" -label = "Houdini 17.0" -ftrack_label = "Houdini" -icon = "houdini_icon" -ftrack_icon = '{}/app_icons/houdini.png' diff --git a/pype/settings/defaults/system_settings/launchers/houdini_18.toml b/pype/settings/defaults/system_settings/launchers/houdini_18.toml deleted file mode 100644 index 93b9a3334d9..00000000000 --- a/pype/settings/defaults/system_settings/launchers/houdini_18.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "houdini_18" -schema = "avalon-core:application-1.0" -application_dir = "houdini" -label = "Houdini 18" -ftrack_label = "Houdini" -icon = "houdini_icon" -ftrack_icon = '{}/app_icons/houdini.png' diff --git a/pype/settings/defaults/system_settings/launchers/linux/maya2016 b/pype/settings/defaults/system_settings/launchers/linux/maya2016 deleted file mode 100644 index 98424304b16..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/maya2016 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2016/bin/maya" - -if [[ -z $PYPE_LOG_NO_COLORS ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/system_settings/launchers/linux/maya2017 b/pype/settings/defaults/system_settings/launchers/linux/maya2017 deleted file mode 100644 index 7a2662a55ec..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/maya2017 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2017/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/system_settings/launchers/linux/maya2018 b/pype/settings/defaults/system_settings/launchers/linux/maya2018 deleted file mode 100644 index db832b3fe70..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/maya2018 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2018/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/system_settings/launchers/linux/maya2019 b/pype/settings/defaults/system_settings/launchers/linux/maya2019 deleted file mode 100644 index 8398734ab9f..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/maya2019 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2019/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/system_settings/launchers/linux/maya2020 b/pype/settings/defaults/system_settings/launchers/linux/maya2020 deleted file mode 100644 index 18a1edd5980..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/maya2020 +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -maya_path = "/usr/autodesk/maya2020/bin/maya" - -if [[ -z $AVALON_LAST_WORKFILE ]]; then - $maya_path -file "$AVALON_LAST_WORKFILE" $@ -else - $maya_path $@ diff --git a/pype/settings/defaults/system_settings/launchers/linux/nuke11.3 b/pype/settings/defaults/system_settings/launchers/linux/nuke11.3 deleted file mode 100644 index b1c9a90d74c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/nuke11.3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke11.3v5/Nuke11.3' diff --git a/pype/settings/defaults/system_settings/launchers/linux/nuke12.0 b/pype/settings/defaults/system_settings/launchers/linux/nuke12.0 deleted file mode 100644 index 99ea1a6b0c0..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/nuke12.0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke12.0v1/Nuke12.0' diff --git a/pype/settings/defaults/system_settings/launchers/linux/nukestudio11.3 b/pype/settings/defaults/system_settings/launchers/linux/nukestudio11.3 deleted file mode 100644 index 750d54a7d55..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/nukestudio11.3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke11.3v5/Nuke11.3 --studio' diff --git a/pype/settings/defaults/system_settings/launchers/linux/nukestudio12.0 b/pype/settings/defaults/system_settings/launchers/linux/nukestudio12.0 deleted file mode 100644 index ba5cf654a8d..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/nukestudio12.0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke12.0v1/Nuke12.0 --studio' diff --git a/pype/settings/defaults/system_settings/launchers/linux/nukex11.3 b/pype/settings/defaults/system_settings/launchers/linux/nukex11.3 deleted file mode 100644 index d913e4b9618..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/nukex11.3 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke11.3v5/Nuke11.3 -nukex' diff --git a/pype/settings/defaults/system_settings/launchers/linux/nukex12.0 b/pype/settings/defaults/system_settings/launchers/linux/nukex12.0 deleted file mode 100644 index da2721c48ba..00000000000 --- a/pype/settings/defaults/system_settings/launchers/linux/nukex12.0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -gnome-terminal -e '/usr/local/Nuke12.0v1/Nuke12.0 -nukex' diff --git a/pype/settings/defaults/system_settings/launchers/maya_2016.toml b/pype/settings/defaults/system_settings/launchers/maya_2016.toml deleted file mode 100644 index d69c4effaf4..00000000000 --- a/pype/settings/defaults/system_settings/launchers/maya_2016.toml +++ /dev/null @@ -1,26 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2016x64" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2016" -description = "" -icon ="maya_icon" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" - -[environment] -MAYA_DISABLE_CLIC_IPM = "Yes" # Disable the AdSSO process -MAYA_DISABLE_CIP = "Yes" # Shorten time to boot -MAYA_DISABLE_CER = "Yes" -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/maya_2017.toml b/pype/settings/defaults/system_settings/launchers/maya_2017.toml deleted file mode 100644 index 2d1c35b5302..00000000000 --- a/pype/settings/defaults/system_settings/launchers/maya_2017.toml +++ /dev/null @@ -1,28 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2017" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2017" -description = "" -icon ="maya_icon" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" - -[environment] -MAYA_DISABLE_CLIC_IPM = "Yes" # Disable the AdSSO process -MAYA_DISABLE_CIP = "Yes" # Shorten time to boot -MAYA_DISABLE_CER = "Yes" -PYMEL_SKIP_MEL_INIT = "Yes" -LC_ALL= "C" # Mute color management warnings -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/maya_2018.toml b/pype/settings/defaults/system_settings/launchers/maya_2018.toml deleted file mode 100644 index f180263fa2e..00000000000 --- a/pype/settings/defaults/system_settings/launchers/maya_2018.toml +++ /dev/null @@ -1,14 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "renders" -] -label = "Autodesk Maya 2018" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2018" -description = "" -icon ="maya_icon" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" diff --git a/pype/settings/defaults/system_settings/launchers/maya_2019.toml b/pype/settings/defaults/system_settings/launchers/maya_2019.toml deleted file mode 100644 index 7ec2cbcedd3..00000000000 --- a/pype/settings/defaults/system_settings/launchers/maya_2019.toml +++ /dev/null @@ -1,14 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "renders" -] -label = "Autodesk Maya 2019" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2019" -description = "" -icon ="maya_icon" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" diff --git a/pype/settings/defaults/system_settings/launchers/maya_2020.toml b/pype/settings/defaults/system_settings/launchers/maya_2020.toml deleted file mode 100644 index 49d84ef9a00..00000000000 --- a/pype/settings/defaults/system_settings/launchers/maya_2020.toml +++ /dev/null @@ -1,14 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "renders" -] -label = "Autodesk Maya 2020" -ftrack_label = "Maya" -schema = "avalon-core:application-1.0" -executable = "maya2020" -description = "" -icon ="maya_icon" -ftrack_icon = '{}/app_icons/maya.png' - -[copy] -"{PYPE_MODULE_ROOT}/pype/resources/maya/workspace.mel" = "workspace.mel" diff --git a/pype/settings/defaults/system_settings/launchers/mayabatch_2019.toml b/pype/settings/defaults/system_settings/launchers/mayabatch_2019.toml deleted file mode 100644 index a928618d2b7..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayabatch_2019.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2019x64" -schema = "avalon-core:application-1.0" -executable = "mayabatch2019" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/mayabatch_2020.toml b/pype/settings/defaults/system_settings/launchers/mayabatch_2020.toml deleted file mode 100644 index cd1e1e4474f..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayabatch_2020.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2020x64" -schema = "avalon-core:application-1.0" -executable = "mayabatch2020" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/mayapy2016.toml b/pype/settings/defaults/system_settings/launchers/mayapy2016.toml deleted file mode 100644 index ad1e3dee86c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayapy2016.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2016x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2016" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/mayapy2017.toml b/pype/settings/defaults/system_settings/launchers/mayapy2017.toml deleted file mode 100644 index 8d2095ff478..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayapy2017.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2017x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2017" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/mayapy2018.toml b/pype/settings/defaults/system_settings/launchers/mayapy2018.toml deleted file mode 100644 index 597744fd85e..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayapy2018.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2018x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2017" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/mayapy2019.toml b/pype/settings/defaults/system_settings/launchers/mayapy2019.toml deleted file mode 100644 index 3c8a9860f99..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayapy2019.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2019x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2019" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/mayapy2020.toml b/pype/settings/defaults/system_settings/launchers/mayapy2020.toml deleted file mode 100644 index 8f2d2e4a677..00000000000 --- a/pype/settings/defaults/system_settings/launchers/mayapy2020.toml +++ /dev/null @@ -1,17 +0,0 @@ -application_dir = "maya" -default_dirs = [ - "scenes", - "data", - "renderData/shaders", - "images" -] -label = "Autodesk Maya 2020x64" -schema = "avalon-core:application-1.0" -executable = "mayapy2020" -description = "" - -[environment] -PYTHONPATH = [ - "{AVALON_CORE}/setup/maya", - "{PYTHONPATH}" -] diff --git a/pype/settings/defaults/system_settings/launchers/myapp.toml b/pype/settings/defaults/system_settings/launchers/myapp.toml deleted file mode 100644 index 21da0d52b24..00000000000 --- a/pype/settings/defaults/system_settings/launchers/myapp.toml +++ /dev/null @@ -1,5 +0,0 @@ -executable = "python" -schema = "avalon-core:application-1.0" -application_dir = "myapp" -label = "My App" -arguments = [ "-c", "import sys; from Qt import QtWidgets; if __name__ == '__main__':;\n app = QtWidgets.QApplication(sys.argv);\n window = QtWidgets.QWidget();\n window.setWindowTitle(\"My App\");\n window.resize(400, 300);\n window.show();\n app.exec_();\n",] \ No newline at end of file diff --git a/pype/settings/defaults/system_settings/launchers/nuke_10.0.toml b/pype/settings/defaults/system_settings/launchers/nuke_10.0.toml deleted file mode 100644 index 2195fd3e82f..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nuke_10.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nuke10.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke 10.0v4" -ftrack_label = "Nuke" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nuke_11.0.toml b/pype/settings/defaults/system_settings/launchers/nuke_11.0.toml deleted file mode 100644 index 0c981b479af..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nuke_11.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nuke11.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke 11.0" -ftrack_label = "Nuke" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nuke_11.2.toml b/pype/settings/defaults/system_settings/launchers/nuke_11.2.toml deleted file mode 100644 index 57c962d126d..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nuke_11.2.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nuke11.2" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke 11.2" -ftrack_label = "Nuke" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nuke_11.3.toml b/pype/settings/defaults/system_settings/launchers/nuke_11.3.toml deleted file mode 100644 index 87f769c23b2..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nuke_11.3.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nuke11.3" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke 11.3" -ftrack_label = "Nuke" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nuke_12.0.toml b/pype/settings/defaults/system_settings/launchers/nuke_12.0.toml deleted file mode 100644 index 62936b4cdba..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nuke_12.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nuke12.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "Nuke 12.0" -ftrack_label = "Nuke" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukestudio_10.0.toml b/pype/settings/defaults/system_settings/launchers/nukestudio_10.0.toml deleted file mode 100644 index 41601e4d406..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukestudio_10.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukestudio10.0" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio 10.0" -ftrack_label = "NukeStudio" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukestudio_11.0.toml b/pype/settings/defaults/system_settings/launchers/nukestudio_11.0.toml deleted file mode 100644 index 7a9d84707a4..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukestudio_11.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukestudio11.0" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio 11.0" -ftrack_label = "NukeStudio" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukestudio_11.2.toml b/pype/settings/defaults/system_settings/launchers/nukestudio_11.2.toml deleted file mode 100644 index 21557033cac..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukestudio_11.2.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukestudio11.2" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio 11.2" -ftrack_label = "NukeStudio" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukestudio_11.3.toml b/pype/settings/defaults/system_settings/launchers/nukestudio_11.3.toml deleted file mode 100644 index 1946ad6c3b8..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukestudio_11.3.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukestudio11.3" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio 11.3" -ftrack_label = "NukeStudio" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukestudio_12.0.toml b/pype/settings/defaults/system_settings/launchers/nukestudio_12.0.toml deleted file mode 100644 index 4ce7f9b538d..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukestudio_12.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukestudio12.0" -schema = "avalon-core:application-1.0" -application_dir = "nukestudio" -label = "NukeStudio 12.0" -ftrack_label = "NukeStudio" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nuke.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukex_10.0.toml b/pype/settings/defaults/system_settings/launchers/nukex_10.0.toml deleted file mode 100644 index 7dee22996d1..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukex_10.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukex10.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX 10.0" -ftrack_label = "NukeX" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukex_11.0.toml b/pype/settings/defaults/system_settings/launchers/nukex_11.0.toml deleted file mode 100644 index c2b4970a269..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukex_11.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukex11.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX 11.2" -ftrack_label = "NukeX" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukex_11.2.toml b/pype/settings/defaults/system_settings/launchers/nukex_11.2.toml deleted file mode 100644 index 3857b9995c3..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukex_11.2.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukex11.2" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX 11.2" -ftrack_label = "NukeX" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukex_11.3.toml b/pype/settings/defaults/system_settings/launchers/nukex_11.3.toml deleted file mode 100644 index 56428470ebc..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukex_11.3.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukex11.3" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX 11.3" -ftrack_label = "NukeX" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/system_settings/launchers/nukex_12.0.toml b/pype/settings/defaults/system_settings/launchers/nukex_12.0.toml deleted file mode 100644 index 33d7fddb887..00000000000 --- a/pype/settings/defaults/system_settings/launchers/nukex_12.0.toml +++ /dev/null @@ -1,7 +0,0 @@ -executable = "nukex12.0" -schema = "avalon-core:application-1.0" -application_dir = "nuke" -label = "NukeX 12.0" -ftrack_label = "NukeX" -icon ="nuke_icon" -ftrack_icon = '{}/app_icons/nukex.png' diff --git a/pype/settings/defaults/system_settings/launchers/photoshop_2020.toml b/pype/settings/defaults/system_settings/launchers/photoshop_2020.toml deleted file mode 100644 index 117b668232c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/photoshop_2020.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "photoshop_2020" -schema = "avalon-core:application-1.0" -application_dir = "photoshop" -label = "Adobe Photoshop 2020" -icon ="photoshop_icon" -ftrack_label = "Photoshop" -ftrack_icon = '{}/app_icons/photoshop.png' -launch_hook = "pype/hooks/photoshop/prelaunch.py/PhotoshopPrelaunch" diff --git a/pype/settings/defaults/system_settings/launchers/premiere_2019.toml b/pype/settings/defaults/system_settings/launchers/premiere_2019.toml deleted file mode 100644 index f4c19c62cb6..00000000000 --- a/pype/settings/defaults/system_settings/launchers/premiere_2019.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "premiere_pro_2019" -schema = "avalon-core:application-1.0" -application_dir = "premiere" -label = "Adobe Premiere Pro CC 2019" -icon ="premiere_icon" - -ftrack_label = "Premiere" -ftrack_icon = '{}/app_icons/premiere.png' diff --git a/pype/settings/defaults/system_settings/launchers/premiere_2020.toml b/pype/settings/defaults/system_settings/launchers/premiere_2020.toml deleted file mode 100644 index 4d721c898f7..00000000000 --- a/pype/settings/defaults/system_settings/launchers/premiere_2020.toml +++ /dev/null @@ -1,9 +0,0 @@ -executable = "premiere_pro_2020" -schema = "avalon-core:application-1.0" -application_dir = "premiere" -label = "Adobe Premiere Pro CC 2020" -launch_hook = "pype/hooks/premiere/prelaunch.py/PremierePrelaunch" -icon ="premiere_icon" - -ftrack_label = "Premiere" -ftrack_icon = '{}/app_icons/premiere.png' diff --git a/pype/settings/defaults/system_settings/launchers/python_2.toml b/pype/settings/defaults/system_settings/launchers/python_2.toml deleted file mode 100644 index e9e8dd78995..00000000000 --- a/pype/settings/defaults/system_settings/launchers/python_2.toml +++ /dev/null @@ -1,10 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "python" -executable = "python" -label = "Python 2" -ftrack_label = "Python" -icon ="python_icon" -ftrack_icon = '{}/app_icons/python.png' - -[environment] -CREATE_NEW_CONSOLE = "Yes" diff --git a/pype/settings/defaults/system_settings/launchers/python_3.toml b/pype/settings/defaults/system_settings/launchers/python_3.toml deleted file mode 100644 index 5cbd8b29438..00000000000 --- a/pype/settings/defaults/system_settings/launchers/python_3.toml +++ /dev/null @@ -1,10 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "python" -executable = "python3" -label = "Python 3" -ftrack_label = "Python" -icon ="python_icon" -ftrack_icon = '{}/app_icons/python.png' - -[environment] -CREATE_NEW_CONSOLE = "Yes" diff --git a/pype/settings/defaults/system_settings/launchers/resolve_16.toml b/pype/settings/defaults/system_settings/launchers/resolve_16.toml deleted file mode 100644 index 430fd1a6385..00000000000 --- a/pype/settings/defaults/system_settings/launchers/resolve_16.toml +++ /dev/null @@ -1,9 +0,0 @@ -executable = "resolve_16" -schema = "avalon-core:application-1.0" -application_dir = "resolve" -label = "BM DaVinci Resolve 16" -launch_hook = "pype/hooks/resolve/prelaunch.py/ResolvePrelaunch" -icon ="resolve" - -ftrack_label = "BM DaVinci Resolve" -ftrack_icon = '{}/app_icons/resolve.png' diff --git a/pype/settings/defaults/system_settings/launchers/shell.toml b/pype/settings/defaults/system_settings/launchers/shell.toml deleted file mode 100644 index 959ad392ea7..00000000000 --- a/pype/settings/defaults/system_settings/launchers/shell.toml +++ /dev/null @@ -1,7 +0,0 @@ -schema = "avalon-core:application-1.0" -application_dir = "shell" -executable = "shell" -label = "Shell" - -[environment] -CREATE_NEW_CONSOLE = "Yes" \ No newline at end of file diff --git a/pype/settings/defaults/system_settings/launchers/storyboardpro_7.toml b/pype/settings/defaults/system_settings/launchers/storyboardpro_7.toml deleted file mode 100644 index ce8e96a49dc..00000000000 --- a/pype/settings/defaults/system_settings/launchers/storyboardpro_7.toml +++ /dev/null @@ -1,8 +0,0 @@ -application_dir = "storyboardpro" -label = "Storyboard Pro 7" -ftrack_label = "Storyboard Pro" -schema = "avalon-core:application-1.0" -executable = "storyboardpro_7" -description = "" -icon ="storyboardpro_icon" -ftrack_icon = '{}/app_icons/storyboardpro.png' diff --git a/pype/settings/defaults/system_settings/launchers/unreal_4.24.toml b/pype/settings/defaults/system_settings/launchers/unreal_4.24.toml deleted file mode 100644 index 0a799e5dcb4..00000000000 --- a/pype/settings/defaults/system_settings/launchers/unreal_4.24.toml +++ /dev/null @@ -1,8 +0,0 @@ -executable = "unreal" -schema = "avalon-core:application-1.0" -application_dir = "unreal" -label = "Unreal Editor 4.24" -ftrack_label = "UnrealEditor" -icon ="ue4_icon" -launch_hook = "pype/hooks/unreal/unreal_prelaunch.py/UnrealPrelaunch" -ftrack_icon = '{}/app_icons/ue4.png' diff --git a/pype/settings/defaults/system_settings/launchers/windows/blender_2.80.bat b/pype/settings/defaults/system_settings/launchers/windows/blender_2.80.bat deleted file mode 100644 index 5b8a37356b5..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/blender_2.80.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.80\blender.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/blender_2.81.bat b/pype/settings/defaults/system_settings/launchers/windows/blender_2.81.bat deleted file mode 100644 index a900b18edaf..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/blender_2.81.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.81\blender.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/blender_2.82.bat b/pype/settings/defaults/system_settings/launchers/windows/blender_2.82.bat deleted file mode 100644 index 7105c1efe1c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/blender_2.82.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.82\blender.exe" --python-use-system-env -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/blender_2.83.bat b/pype/settings/defaults/system_settings/launchers/windows/blender_2.83.bat deleted file mode 100644 index 671952f0d79..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/blender_2.83.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Blender" -set __exe__="C:\Program Files\Blender Foundation\Blender 2.83\blender.exe" --python-use-system-env -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/celaction_local.bat b/pype/settings/defaults/system_settings/launchers/windows/celaction_local.bat deleted file mode 100644 index 8f2171617ea..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/celaction_local.bat +++ /dev/null @@ -1,19 +0,0 @@ -set __app__="CelAction2D" -set __app_dir__="C:\Program Files (x86)\CelAction\" -set __exe__="C:\Program Files (x86)\CelAction\CelAction2D.exe" - -if not exist %__exe__% goto :missing_app - -pushd %__app_dir__% - -if "%PYPE_CELACTION_PROJECT_FILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% "%PYPE_CELACTION_PROJECT_FILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/celaction_publish.bat b/pype/settings/defaults/system_settings/launchers/windows/celaction_publish.bat deleted file mode 100644 index 77ec2ac24e7..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/celaction_publish.bat +++ /dev/null @@ -1,3 +0,0 @@ -echo %* - -%PYPE_PYTHON_EXE% "%PYPE_MODULE_ROOT%\pype\hosts\celaction\cli.py" %* diff --git a/pype/settings/defaults/system_settings/launchers/windows/harmony_17.bat b/pype/settings/defaults/system_settings/launchers/windows/harmony_17.bat deleted file mode 100644 index 08226508755..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/harmony_17.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Harmony 17" -set __exe__="C:/Program Files (x86)/Toon Boom Animation/Toon Boom Harmony 17 Premium/win64/bin/HarmonyPremium.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% cmd.exe /k "python -c ^"import avalon.harmony;avalon.harmony.launch("%__exe__%")^"" - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/houdini_16.bat b/pype/settings/defaults/system_settings/launchers/windows/houdini_16.bat deleted file mode 100644 index 018ba08b4c1..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/houdini_16.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Houdini 16.0" -set __exe__="C:\Program Files\Side Effects Software\Houdini 16.0.621\bin\houdini.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/houdini_17.bat b/pype/settings/defaults/system_settings/launchers/windows/houdini_17.bat deleted file mode 100644 index 950a599623f..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/houdini_17.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Houdini 17.0" -set __exe__="C:\Program Files\Side Effects Software\Houdini 17.0.459\bin\houdini.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/houdini_18.bat b/pype/settings/defaults/system_settings/launchers/windows/houdini_18.bat deleted file mode 100644 index 3d6b1ae258c..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/houdini_18.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Houdini 18.0" -set __exe__="C:\Program Files\Side Effects Software\Houdini 18.0.287\bin\houdini.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/maya2016.bat b/pype/settings/defaults/system_settings/launchers/windows/maya2016.bat deleted file mode 100644 index 54f15cf269b..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/maya2016.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2016" -set __exe__="C:\Program Files\Autodesk\Maya2016\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/maya2017.bat b/pype/settings/defaults/system_settings/launchers/windows/maya2017.bat deleted file mode 100644 index 5c2aeb495cd..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/maya2017.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2017" -set __exe__="C:\Program Files\Autodesk\Maya2017\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/maya2018.bat b/pype/settings/defaults/system_settings/launchers/windows/maya2018.bat deleted file mode 100644 index 28cf776c779..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/maya2018.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2018" -set __exe__="C:\Program Files\Autodesk\Maya2018\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/maya2019.bat b/pype/settings/defaults/system_settings/launchers/windows/maya2019.bat deleted file mode 100644 index 7e80dd25573..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/maya2019.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2019" -set __exe__="C:\Program Files\Autodesk\Maya2019\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/maya2020.bat b/pype/settings/defaults/system_settings/launchers/windows/maya2020.bat deleted file mode 100644 index b2acb5df5aa..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/maya2020.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Maya 2020" -set __exe__="C:\Program Files\Autodesk\maya2020\bin\maya.exe" -if not exist %__exe__% goto :missing_app - -if "%AVALON_LAST_WORKFILE%"=="" ( - start %__app__% %__exe__% %* -) else ( - start %__app__% %__exe__% -file "%AVALON_LAST_WORKFILE%" %* -) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayabatch2019.bat b/pype/settings/defaults/system_settings/launchers/windows/mayabatch2019.bat deleted file mode 100644 index ddd9b9b9564..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayabatch2019.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set __app__="Maya Batch 2019" -set __exe__="C:\Program Files\Autodesk\Maya2019\bin\mayabatch.exe" -if not exist %__exe__% goto :missing_app - -echo "running maya : %*" -%__exe__% %* -echo "done." -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayabatch2020.bat b/pype/settings/defaults/system_settings/launchers/windows/mayabatch2020.bat deleted file mode 100644 index b1cbc6dbb6e..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayabatch2020.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set __app__="Maya Batch 2020" -set __exe__="C:\Program Files\Autodesk\Maya2020\bin\mayabatch.exe" -if not exist %__exe__% goto :missing_app - -echo "running maya : %*" -%__exe__% %* -echo "done." -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayapy2016.bat b/pype/settings/defaults/system_settings/launchers/windows/mayapy2016.bat deleted file mode 100644 index 205991fd3d3..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayapy2016.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2016" -set __exe__="C:\Program Files\Autodesk\Maya2016\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayapy2017.bat b/pype/settings/defaults/system_settings/launchers/windows/mayapy2017.bat deleted file mode 100644 index 14aacc5a7f9..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayapy2017.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2017" -set __exe__="C:\Program Files\Autodesk\Maya2017\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayapy2018.bat b/pype/settings/defaults/system_settings/launchers/windows/mayapy2018.bat deleted file mode 100644 index c47c472f460..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayapy2018.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2018" -set __exe__="C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayapy2019.bat b/pype/settings/defaults/system_settings/launchers/windows/mayapy2019.bat deleted file mode 100644 index 73ca5b2d408..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayapy2019.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2019" -set __exe__="C:\Program Files\Autodesk\Maya2019\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/mayapy2020.bat b/pype/settings/defaults/system_settings/launchers/windows/mayapy2020.bat deleted file mode 100644 index 770a03dcf55..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/mayapy2020.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Mayapy 2020" -set __exe__="C:\Program Files\Autodesk\Maya2020\bin\mayapy.exe" -if not exist %__exe__% goto :missing_app - -call %__exe__% %* - -goto :eofS - -:missing_app - echo ERROR: %__app__% not found at %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nuke10.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nuke10.0.bat deleted file mode 100644 index a47cbdfb207..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nuke10.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke10.0v4" -set __exe__="C:\Program Files\Nuke10.0v4\Nuke10.0.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nuke11.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nuke11.0.bat deleted file mode 100644 index a374c5cf5bb..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nuke11.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke11.0v4" -set __exe__="C:\Program Files\Nuke11.0v4\Nuke11.0.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nuke11.2.bat b/pype/settings/defaults/system_settings/launchers/windows/nuke11.2.bat deleted file mode 100644 index 4c777ac28c4..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nuke11.2.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke11.2v3" -set __exe__="C:\Program Files\Nuke11.2v3\Nuke11.2.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nuke11.3.bat b/pype/settings/defaults/system_settings/launchers/windows/nuke11.3.bat deleted file mode 100644 index a023f5f46f9..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nuke11.3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke11.3v1" -set __exe__="C:\Program Files\Nuke11.3v1\Nuke11.3.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nuke12.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nuke12.0.bat deleted file mode 100644 index d8fb5772bbb..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nuke12.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Nuke12.0v1" -set __exe__="C:\Program Files\Nuke12.0v1\Nuke12.0.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukestudio10.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nukestudio10.0.bat deleted file mode 100644 index 82f833667c9..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukestudio10.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio10.0v4" -set __exe__="C:\Program Files\Nuke10.0v4\Nuke10.0.exe" --studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.0.bat deleted file mode 100644 index b66797727e8..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio11.0v4" -set __exe__="C:\Program Files\Nuke11.0v4\Nuke11.0.exe" -studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.2.bat b/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.2.bat deleted file mode 100644 index a653d816b49..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.2.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio11.2v3" -set __exe__="C:\Program Files\Nuke11.2v3\Nuke11.2.exe" -studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.3.bat b/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.3.bat deleted file mode 100644 index 62c87188739..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukestudio11.3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio11.3v1" -set __exe__="C:\Program Files\Nuke11.3v1\Nuke11.3.exe" --studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukestudio12.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nukestudio12.0.bat deleted file mode 100644 index 488232bcbfa..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukestudio12.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeStudio12.0v1" -set __exe__="C:\Program Files\Nuke12.0v1\Nuke12.0.exe" --studio -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukex10.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nukex10.0.bat deleted file mode 100644 index 1759706a7b2..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukex10.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX10.0v4" -set __exe__="C:\Program Files\Nuke10.0v4\Nuke10.0.exe" -nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukex11.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nukex11.0.bat deleted file mode 100644 index b554a7b6fa7..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukex11.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX11.0v4" -set __exe__="C:\Program Files\Nuke11.0v4\Nuke11.0.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukex11.2.bat b/pype/settings/defaults/system_settings/launchers/windows/nukex11.2.bat deleted file mode 100644 index a4cb5dec5c3..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukex11.2.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX11.2v3" -set __exe__="C:\Program Files\Nuke11.2v3\Nuke11.2.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukex11.3.bat b/pype/settings/defaults/system_settings/launchers/windows/nukex11.3.bat deleted file mode 100644 index 490b55cf4c4..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukex11.3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX11.3v1" -set __exe__="C:\Program Files\Nuke11.3v1\Nuke11.3.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/nukex12.0.bat b/pype/settings/defaults/system_settings/launchers/windows/nukex12.0.bat deleted file mode 100644 index 26adf0d3f15..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/nukex12.0.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="NukeX12.0v1" -set __exe__="C:\Program Files\Nuke12.0v1\Nuke12.0.exe" --nukex -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/photoshop_2020.bat b/pype/settings/defaults/system_settings/launchers/windows/photoshop_2020.bat deleted file mode 100644 index 6b90922ef6e..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/photoshop_2020.bat +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -set __app__="Photoshop 2020" -set __exe__="C:\Program Files\Adobe\Adobe Photoshop 2020\Photoshop.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% cmd.exe /k "%PYPE_PYTHON_EXE% -c ^"import avalon.photoshop;avalon.photoshop.launch("%__exe__%")^"" - -goto :eof - -pause - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2019.bat b/pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2019.bat deleted file mode 100644 index 4886737d2f2..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2019.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set __app__="Adobe Premiere Pro" -set __exe__="C:\Program Files\Adobe\Adobe Premiere Pro CC 2019\Adobe Premiere Pro.exe" -if not exist %__exe__% goto :missing_app - -python -u %PREMIERA_PATH%\init.py -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2020.bat b/pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2020.bat deleted file mode 100644 index 14662d3be38..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/premiere_pro_2020.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Adobe Premiere Pro" -set __exe__="C:\Program Files\Adobe\Adobe Premiere Pro 2020\Adobe Premiere Pro.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/python3.bat b/pype/settings/defaults/system_settings/launchers/windows/python3.bat deleted file mode 100644 index c7c116fe723..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/python3.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Python36" -set __exe__="C:\Python36\python.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/resolve_16.bat b/pype/settings/defaults/system_settings/launchers/windows/resolve_16.bat deleted file mode 100644 index 1a5d964e6b1..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/resolve_16.bat +++ /dev/null @@ -1,17 +0,0 @@ -@echo off - -set __app__="Resolve" -set __appy__="Resolve Python Console" -set __exe__="C:/Program Files/Blackmagic Design/DaVinci Resolve/Resolve.exe" -set __py__="%PYTHON36_RESOLVE%/python.exe" - -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %* -IF "%RESOLVE_DEV%"=="True" (start %__appy__% %__py__% -i %PRE_PYTHON_SCRIPT%) - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/shell.bat b/pype/settings/defaults/system_settings/launchers/windows/shell.bat deleted file mode 100644 index eb0895364f4..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/shell.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -start cmd diff --git a/pype/settings/defaults/system_settings/launchers/windows/storyboardpro_7.bat b/pype/settings/defaults/system_settings/launchers/windows/storyboardpro_7.bat deleted file mode 100644 index 122edac572a..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/storyboardpro_7.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -set __app__="Storyboard Pro 7" -set __exe__="C:/Program Files (x86)/Toon Boom Animation/Toon Boom Storyboard Pro 7/win64/bin/StoryboardPro.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% cmd.exe /k "python -c ^"import avalon.storyboardpro;avalon.storyboardpro.launch("%__exe__%")^"" - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 diff --git a/pype/settings/defaults/system_settings/launchers/windows/unreal.bat b/pype/settings/defaults/system_settings/launchers/windows/unreal.bat deleted file mode 100644 index 7771aaa5a56..00000000000 --- a/pype/settings/defaults/system_settings/launchers/windows/unreal.bat +++ /dev/null @@ -1,11 +0,0 @@ -set __app__="Unreal Editor" -set __exe__="%AVALON_CURRENT_UNREAL_ENGINE%\Engine\Binaries\Win64\UE4Editor.exe" -if not exist %__exe__% goto :missing_app - -start %__app__% %__exe__% %PYPE_UNREAL_PROJECT_FILE% %* - -goto :eof - -:missing_app - echo ERROR: %__app__% not found in %__exe__% - exit /B 1 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 new file mode 100644 index 00000000000..27d2ca68cdc --- /dev/null +++ b/pype/tools/settings/settings/gui_schemas/system_schema/host_settings/schema_mayabatch.json @@ -0,0 +1,46 @@ +{ + "type": "dict", + "key": "mayabatch", + "label": "Autodesk Maya Batch", + "collapsable": true, + "checkbox_key": "enabled", + "children": [ + { + "type": "boolean", + "key": "enabled", + "label": "Enabled" + }, + { + "type": "schema_template", + "name": "template_host_unchangables" + }, + { + "key": "environment", + "label": "Environment", + "type": "raw-json", + "env_group_key": "mayabatch" + }, + { + "type": "dict-invisible", + "key": "variants", + "children": [{ + "type": "schema_template", + "name": "template_host_variant", + "template_data": [ + { + "host_version": "2020", + "host_name": "mayabatch" + }, + { + "host_version": "2019", + "host_name": "mayabatch" + }, + { + "host_version": "2018", + "host_name": "mayabatch" + } + ] + }] + } + ] +} diff --git a/pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json b/pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json index fdb3257f5e8..ebfa4482bb3 100644 --- a/pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json +++ b/pype/tools/settings/settings/gui_schemas/system_schema/schema_applications.json @@ -4,10 +4,15 @@ "label": "Applications", "collapsable": true, "is_file": true, - "children": [{ + "children": [ + { "type": "schema", "name": "schema_maya" }, + { + "type": "schema", + "name": "schema_mayabatch" + }, { "type": "schema_template", "name": "template_nuke", From faf6d941a6151ae288092f03a75c2bf62529140a Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Mon, 23 Nov 2020 23:00:28 +0100 Subject: [PATCH 86/86] remove obsolete muster template mapping and fix forgotten test line :D --- .../system_settings/global/tools.json | 2 +- .../muster/templates_mapping.json | 19 ------------------- 2 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 pype/settings/defaults/system_settings/muster/templates_mapping.json diff --git a/pype/settings/defaults/system_settings/global/tools.json b/pype/settings/defaults/system_settings/global/tools.json index ae4e60b9858..314b66ad7e7 100644 --- a/pype/settings/defaults/system_settings/global/tools.json +++ b/pype/settings/defaults/system_settings/global/tools.json @@ -14,7 +14,7 @@ "PATH" ] }, - "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoaDDDDDDDDDD_{MAYA_VERSION}_{MTOA_VERSION}", + "MTOA": "{PYPE_STUDIO_SOFTWARE}/arnold/mtoa_{MAYA_VERSION}_{MTOA_VERSION}", "MAYA_RENDER_DESC_PATH": "{MTOA}", "MAYA_MODULE_PATH": "{MTOA}", "ARNOLD_PLUGIN_PATH": "{MTOA}/shaders", diff --git a/pype/settings/defaults/system_settings/muster/templates_mapping.json b/pype/settings/defaults/system_settings/muster/templates_mapping.json deleted file mode 100644 index 0c091135151..00000000000 --- a/pype/settings/defaults/system_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 -} \ No newline at end of file