Merge branch 'develop' of github.com:pypeclub/pype into feature/1121-site-sync-add-site-information-and-buttons-to-loader_op

This commit is contained in:
Petr Kalis 2021-04-07 16:34:33 +02:00
commit f2609f5f12
376 changed files with 21577 additions and 233 deletions

View file

@ -57,27 +57,12 @@ def _prepare_publish_environments():
project_name = os.getenv("AVALON_PROJECT")
asset_name = os.getenv("AVALON_ASSET")
io.install()
project_doc = io.find_one({
"type": "project"
})
av_asset = io.find_one({
"type": "asset",
"name": asset_name
})
parents = av_asset["data"]["parents"]
hierarchy = ""
if parents:
hierarchy = "/".join(parents)
env["AVALON_PROJECT"] = project_name
env["AVALON_ASSET"] = asset_name
env["AVALON_TASK"] = os.getenv("AVALON_TASK")
env["AVALON_WORKDIR"] = os.getenv("AVALON_WORKDIR")
env["AVALON_HIERARCHY"] = hierarchy
env["AVALON_PROJECTCODE"] = project_doc["data"].get("code", "")
env["AVALON_APP"] = f"hosts.{publish_host}"
env["AVALON_APP_NAME"] = "celaction_local"
env["AVALON_APP_NAME"] = "celaction/local"
env["PYBLISH_HOSTS"] = publish_host

View file

@ -1,18 +1,12 @@
import os
import sys
import nuke
from avalon import api as avalon
from openpype.tools import workfiles
from pyblish import api as pyblish
from openpype.api import Logger
import openpype.hosts.nuke
import avalon.api
import pyblish.api
import openpype
from . import lib, menu
self = sys.modules[__name__]
self.workfiles_launched = False
log = Logger().get_logger(__name__)
log = openpype.api.Logger().get_logger(__name__)
AVALON_CONFIG = os.getenv("AVALON_CONFIG", "pype")
HOST_DIR = os.path.dirname(os.path.abspath(openpype.hosts.nuke.__file__))
@ -25,7 +19,7 @@ INVENTORY_PATH = os.path.join(PLUGINS_DIR, "inventory")
# registering pyblish gui regarding settings in presets
if os.getenv("PYBLISH_GUI", None):
pyblish.register_gui(os.getenv("PYBLISH_GUI", None))
pyblish.api.register_gui(os.getenv("PYBLISH_GUI", None))
def reload_config():
@ -61,15 +55,16 @@ def install():
'''
log.info("Registering Nuke plug-ins..")
pyblish.register_plugin_path(PUBLISH_PATH)
avalon.register_plugin_path(avalon.Loader, LOAD_PATH)
avalon.register_plugin_path(avalon.Creator, CREATE_PATH)
avalon.register_plugin_path(avalon.InventoryAction, INVENTORY_PATH)
pyblish.api.register_plugin_path(PUBLISH_PATH)
avalon.api.register_plugin_path(avalon.api.Loader, LOAD_PATH)
avalon.api.register_plugin_path(avalon.api.Creator, CREATE_PATH)
avalon.api.register_plugin_path(avalon.api.InventoryAction, INVENTORY_PATH)
# Register Avalon event for workfiles loading.
avalon.on("workio.open_file", lib.check_inventory_versions)
avalon.api.on("workio.open_file", lib.check_inventory_versions)
pyblish.register_callback("instanceToggled", on_pyblish_instance_toggled)
pyblish.api.register_callback(
"instanceToggled", on_pyblish_instance_toggled)
workfile_settings = lib.WorkfileSettings()
# Disable all families except for the ones we explicitly want to see
family_states = [
@ -79,39 +74,27 @@ def install():
"gizmo"
]
avalon.data["familiesStateDefault"] = False
avalon.data["familiesStateToggled"] = family_states
# Workfiles.
launch_workfiles = os.environ.get("WORKFILES_STARTUP")
if launch_workfiles:
nuke.addOnCreate(launch_workfiles_app, nodeClass="Root")
avalon.api.data["familiesStateDefault"] = False
avalon.api.data["familiesStateToggled"] = family_states
# Set context settings.
nuke.addOnCreate(workfile_settings.set_context_settings, nodeClass="Root")
# nuke.addOnCreate(workfile_settings.set_favorites, nodeClass="Root")
nuke.addOnCreate(workfile_settings.set_favorites, nodeClass="Root")
nuke.addOnCreate(lib.open_last_workfile, nodeClass="Root")
nuke.addOnCreate(lib.launch_workfiles_app, nodeClass="Root")
menu.install()
def launch_workfiles_app():
'''Function letting start workfiles after start of host
'''
if not self.workfiles_launched:
self.workfiles_launched = True
workfiles.show(os.environ["AVALON_WORKDIR"])
def uninstall():
'''Uninstalling host's integration
'''
log.info("Deregistering Nuke plug-ins..")
pyblish.deregister_plugin_path(PUBLISH_PATH)
avalon.deregister_plugin_path(avalon.Loader, LOAD_PATH)
avalon.deregister_plugin_path(avalon.Creator, CREATE_PATH)
pyblish.api.deregister_plugin_path(PUBLISH_PATH)
avalon.api.deregister_plugin_path(avalon.api.Loader, LOAD_PATH)
avalon.api.deregister_plugin_path(avalon.api.Creator, CREATE_PATH)
pyblish.deregister_callback("instanceToggled", on_pyblish_instance_toggled)
pyblish.api.deregister_callback(
"instanceToggled", on_pyblish_instance_toggled)
reload_config()
menu.uninstall()
@ -123,7 +106,7 @@ def on_pyblish_instance_toggled(instance, old_value, new_value):
log.info("instance toggle: {}, old_value: {}, new_value:{} ".format(
instance, old_value, new_value))
from avalon.nuke import (
from avalon.api.nuke import (
viewer_update_and_undo_stop,
add_publish_knob
)

View file

@ -3,9 +3,14 @@ import re
import sys
from collections import OrderedDict
from avalon import api, io, lib
from avalon.tools import workfiles
import avalon.nuke
from avalon.nuke import lib as anlib
from avalon.nuke import (
save_file, open_file
)
from openpype.api import (
Logger,
Anatomy,
@ -13,6 +18,7 @@ from openpype.api import (
get_anatomy_settings,
get_hierarchy,
get_asset,
get_current_project_settings,
config,
ApplicationManager
)
@ -25,8 +31,10 @@ log = Logger().get_logger(__name__)
self = sys.modules[__name__]
self._project = None
self.workfiles_launched = False
self._node_tab_name = "{}".format(os.getenv("AVALON_LABEL") or "Avalon")
def get_node_imageio_setting(**kwarg):
''' Get preset data for dataflow (fileType, compression, bitDepth)
'''
@ -1616,3 +1624,41 @@ def find_free_space_to_paste_nodes(
xpos = min(group_xpos)
ypos = max(group_ypos) + abs(offset)
return xpos, ypos
def launch_workfiles_app():
'''Function letting start workfiles after start of host
'''
# get state from settings
open_at_start = get_current_project_settings()["nuke"].get(
"general", {}).get("open_workfile_at_start")
# return if none is defined
if not open_at_start:
return
if not self.workfiles_launched:
self.workfiles_launched = True
workfiles.show(os.environ["AVALON_WORKDIR"])
def open_last_workfile():
# get state from settings
open_last_version = get_current_project_settings()["nuke"].get(
"general", {}).get("create_initial_workfile")
log.info("Opening last workfile...")
last_workfile_path = os.environ.get("AVALON_LAST_WORKFILE")
if not os.path.exists(last_workfile_path):
# return if none is defined
if not open_last_version:
return
save_file(last_workfile_path)
else:
# to avoid looping of the callback, remove it!
nuke.removeOnCreate(open_last_workfile, nodeClass="Root")
# open workfile
open_file(last_workfile_path)

View file

@ -72,7 +72,7 @@ class ApplictionExecutableNotFound(Exception):
for executable in application.executables:
details += "\n- " + executable.executable_path
self.msg = msg.format(application.full_label, application.name)
self.msg = msg.format(application.full_label, application.full_name)
self.details = details
exc_mgs = str(self.msg)
@ -244,7 +244,7 @@ class Application:
Returns:
subprocess.Popen: Return executed process as Popen object.
"""
return self.manager.launch(self.name, *args, **kwargs)
return self.manager.launch(self.full_name, *args, **kwargs)
class ApplicationManager:
@ -273,7 +273,7 @@ class ApplicationManager:
self.app_groups[group_name] = group
for app in group:
# TODO This should be replaced with `full_name` in future
self.applications[app.name] = app
self.applications[app.full_name] = app
tools_definitions = settings["tools"]["tool_groups"]
for tool_group_name, tool_group_data in tools_definitions.items():
@ -502,7 +502,7 @@ class LaunchHook:
@property
def app_name(self):
return getattr(self.application, "name", None)
return getattr(self.application, "full_name", None)
def validate(self):
"""Optional validation of launch hook on initialization.
@ -939,7 +939,7 @@ def get_app_environments_for_context(
"project_name": project_name,
"asset_name": asset_name,
"task_name": task_name,
"app_name": app_name,
"app": app,
"dbcon": dbcon,
@ -1117,8 +1117,7 @@ def prepare_context_environments(data):
"AVALON_ASSET": asset_doc["name"],
"AVALON_TASK": task_name,
"AVALON_APP": app.host_name,
# TODO this hould be `app.full_name` in future PRs
"AVALON_APP_NAME": app.name,
"AVALON_APP_NAME": app.full_name,
"AVALON_WORKDIR": workdir
}
log.debug(

View file

@ -252,7 +252,7 @@ class HarmonySubmitDeadline(
def get_job_info(self):
job_info = DeadlineJobInfo("Harmony")
job_info.Name = self._instance.data["name"]
job_info.Plugin = "HarmonyPype"
job_info.Plugin = "HarmonyOpenPype"
job_info.Frames = "{}-{}".format(
self._instance.data["frameStartHandle"],
self._instance.data["frameEndHandle"]

View file

@ -42,7 +42,7 @@ class FtrackModule(
ftrack_settings = settings[self.name]
self.enabled = ftrack_settings["enabled"]
self.ftrack_url = ftrack_settings["ftrack_server"]
self.ftrack_url = ftrack_settings["ftrack_server"].strip("/ ")
current_dir = os.path.dirname(os.path.abspath(__file__))
server_event_handlers_paths = [

View file

@ -14,7 +14,7 @@
"priority": 50,
"primary_pool": "",
"secondary_pool": "",
"chunk_size": 0
"chunk_size": 1000000
}
}
}

View file

@ -6,7 +6,9 @@
"load": "ctrl+alt+l",
"manage": "ctrl+alt+m",
"build_workfile": "ctrl+alt+b"
}
},
"open_workfile_at_start": false,
"create_initial_workfile": true
},
"create": {
"CreateWriteRender": {

View file

@ -19,7 +19,7 @@
"OPENPYPE_LOG_NO_COLORS": "Yes"
},
"variants": {
"maya_2020": {
"2020": {
"enabled": true,
"variant_label": "2020",
"executables": {
@ -40,7 +40,7 @@
"MAYA_VERSION": "2020"
}
},
"maya_2019": {
"2019": {
"enabled": true,
"variant_label": "2019",
"executables": {
@ -61,7 +61,7 @@
"MAYA_VERSION": "2019"
}
},
"maya_2018": {
"2018": {
"enabled": true,
"variant_label": "2018",
"executables": {
@ -105,7 +105,7 @@
"MAYA_TEST": "{MAYA_VERSION}"
},
"variants": {
"mayabatch_2020": {
"2020": {
"enabled": true,
"variant_label": "2020",
"executables": {
@ -124,7 +124,7 @@
"MAYA_VERSION": "2020"
}
},
"mayabatch_2019": {
"2019": {
"enabled": true,
"variant_label": "2019",
"executables": {
@ -143,7 +143,7 @@
"MAYA_VERSION": "2019"
}
},
"mayabatch_2018": {
"2018": {
"enabled": true,
"variant_label": "2018",
"executables": {
@ -181,7 +181,7 @@
"LOGLEVEL": "DEBUG"
},
"variants": {
"nuke_12-2": {
"12-2": {
"enabled": true,
"variant_label": "12.2",
"executables": {
@ -200,7 +200,7 @@
},
"environment": {}
},
"nuke_12-0": {
"12-0": {
"enabled": true,
"variant_label": "12.0",
"executables": {
@ -219,7 +219,7 @@
},
"environment": {}
},
"nuke_11-3": {
"11-3": {
"enabled": true,
"variant_label": "11.3",
"executables": {
@ -238,7 +238,7 @@
},
"environment": {}
},
"nuke_11-2": {
"11-2": {
"enabled": true,
"variant_label": "11.2",
"executables": {
@ -274,7 +274,7 @@
"LOGLEVEL": "DEBUG"
},
"variants": {
"nukex_12-2": {
"12-2": {
"enabled": true,
"variant_label": "12.2",
"executables": {
@ -299,7 +299,7 @@
},
"environment": {}
},
"nukex_12-0": {
"12-0": {
"enabled": true,
"variant_label": "12.0",
"executables": {
@ -324,7 +324,7 @@
},
"environment": {}
},
"nukex_11-3": {
"11-3": {
"enabled": true,
"variant_label": "11.3",
"executables": {
@ -349,7 +349,7 @@
},
"environment": {}
},
"nukex_11-2": {
"11-2": {
"enabled": true,
"variant_label": "11.2",
"executables": {
@ -391,7 +391,7 @@
"LOGLEVEL": "DEBUG"
},
"variants": {
"nukestudio_12-2": {
"12-2": {
"enabled": true,
"variant_label": "12.2",
"executables": {
@ -416,7 +416,7 @@
},
"environment": {}
},
"nukestudio_12-0": {
"12-0": {
"enabled": true,
"variant_label": "12.0",
"executables": {
@ -441,7 +441,7 @@
},
"environment": {}
},
"nukestudio_11-3": {
"11-3": {
"enabled": true,
"variant_label": "11.3",
"executables": {
@ -466,7 +466,7 @@
},
"environment": {}
},
"nukestudio_11-2": {
"11-2": {
"enabled": true,
"variant_label": "11.2",
"executables": {
@ -506,7 +506,7 @@
"LOGLEVEL": "DEBUG"
},
"variants": {
"hiero_12-2": {
"12-2": {
"enabled": true,
"variant_label": "12.2",
"executables": {
@ -531,7 +531,7 @@
},
"environment": {}
},
"hiero_12-0": {
"12-0": {
"enabled": true,
"variant_label": "12.0",
"executables": {
@ -556,7 +556,7 @@
},
"environment": {}
},
"hiero_11-3": {
"11-3": {
"enabled": true,
"variant_label": "11.3",
"executables": {
@ -581,7 +581,7 @@
},
"environment": {}
},
"hiero_11-2": {
"11-2": {
"enabled": true,
"variant_label": "11.2",
"executables": {
@ -636,7 +636,7 @@
"OPENPYPE_LOG_NO_COLORS": "Yes"
},
"variants": {
"fusion_16": {
"16": {
"enabled": true,
"variant_label": "16",
"executables": {
@ -651,7 +651,7 @@
},
"environment": {}
},
"fusion_9": {
"9": {
"enabled": true,
"variant_label": "9",
"executables": {
@ -714,7 +714,7 @@
"RESOLVE_DEV": "True"
},
"variants": {
"resolve_16": {
"16": {
"enabled": true,
"variant_label": "16",
"executables": {
@ -751,7 +751,7 @@
}
},
"variants": {
"houdini_18-5": {
"18-5": {
"enabled": true,
"variant_label": "18.5",
"executables": {
@ -768,7 +768,7 @@
},
"environment": {}
},
"houdini_18": {
"18": {
"enabled": true,
"variant_label": "18",
"executables": {
@ -783,7 +783,7 @@
},
"environment": {}
},
"houdini_17": {
"17": {
"enabled": true,
"variant_label": "17",
"executables": {
@ -814,7 +814,7 @@
"CREATE_NEW_CONSOLE": "yes"
},
"variants": {
"blender_2-83": {
"2-83": {
"enabled": true,
"variant_label": "2.83",
"executables": {
@ -837,7 +837,7 @@
},
"environment": {}
},
"blender_2-90": {
"2-90": {
"enabled": true,
"variant_label": "2.90",
"executables": {
@ -872,7 +872,7 @@
"LIB_OPENHARMONY_PATH": "{OPENPYPE_ROOT}/pype/vendor/OpenHarmony"
},
"variants": {
"harmony_20": {
"20": {
"enabled": true,
"variant_label": "20",
"executables": {
@ -887,7 +887,7 @@
},
"environment": {}
},
"harmony_17": {
"17": {
"enabled": true,
"variant_label": "17",
"executables": {
@ -915,7 +915,7 @@
"OPENPYPE_LOG_NO_COLORS": "True"
},
"variants": {
"tvpaint_animation_11-64bits": {
"animation_11-64bits": {
"enabled": true,
"variant_label": "11 (64bits)",
"executables": {
@ -932,7 +932,7 @@
},
"environment": {}
},
"tvpaint_animation_11-32bits": {
"animation_11-32bits": {
"enabled": true,
"variant_label": "11 (32bits)",
"executables": {
@ -963,7 +963,7 @@
"WORKFILES_SAVE_AS": "Yes"
},
"variants": {
"photoshop_2020": {
"2020": {
"enabled": true,
"variant_label": "2020",
"executables": {
@ -980,7 +980,7 @@
},
"environment": {}
},
"photoshop_2021": {
"2021": {
"enabled": true,
"variant_label": "2021",
"executables": {
@ -1011,7 +1011,7 @@
"WORKFILES_SAVE_AS": "Yes"
},
"variants": {
"aftereffects_2020": {
"2020": {
"enabled": true,
"variant_label": "2020",
"executables": {
@ -1028,7 +1028,7 @@
},
"environment": {}
},
"aftereffects_2021": {
"2021": {
"enabled": true,
"variant_label": "2021",
"executables": {
@ -1056,10 +1056,14 @@
"CELACTION_TEMPLATE": "{OPENPYPE_ROOT}/openpype/hosts/celaction/celaction_template_scene.scn"
},
"variants": {
"celation_Local": {
"local": {
"enabled": true,
"variant_label": "Local",
"executables": "",
"executables": {
"windows": [],
"darwin": [],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
@ -1080,7 +1084,7 @@
"QT_PREFERRED_BINDING": "PySide"
},
"variants": {
"unreal_4-24": {
"4-24": {
"enabled": true,
"variant_label": "4.24",
"executables": {
@ -1101,7 +1105,7 @@
"enabled": true,
"environment": {},
"variants": {
"python_python_3-7": {
"python_3-7": {
"enabled": true,
"variant_label": "3.7",
"executables": {
@ -1116,7 +1120,7 @@
},
"environment": {}
},
"python_python_2-7": {
"python_2-7": {
"enabled": true,
"variant_label": "2.7",
"executables": {
@ -1131,7 +1135,7 @@
},
"environment": {}
},
"terminal_terminal": {
"terminal": {
"enabled": true,
"variant_label": "",
"executables": {
@ -1155,7 +1159,7 @@
"host_name": "",
"environment": {},
"variants": {
"djvview_1-1": {
"1-1": {
"enabled": true,
"variant_label": "1.1",
"executables": {

View file

@ -117,7 +117,8 @@ class AppsEnumEntity(BaseEnumEntity):
valid_keys = set()
enum_items = []
for app_group in system_settings_entity["applications"].values():
applications_entity = system_settings_entity["applications"]
for group_name, app_group in applications_entity.items():
enabled_entity = app_group.get("enabled")
if enabled_entity and not enabled_entity.value:
continue
@ -134,10 +135,14 @@ class AppsEnumEntity(BaseEnumEntity):
continue
variant_label = variant_entity["variant_label"].value
if group_label:
full_label = "{} {}".format(group_label, variant_label)
else:
full_label = variant_label
full_label = "{} {}".format(group_label, variant_label)
enum_items.append({variant_name: full_label})
valid_keys.add(variant_name)
full_name = "/".join((group_name, variant_name))
enum_items.append({full_name: full_label})
valid_keys.add(full_name)
return enum_items, valid_keys
def set_override_state(self, *args, **kwargs):

View file

@ -43,6 +43,16 @@
"label": "Build Workfile"
}
]
},
{
"type": "boolean",
"key": "open_workfile_at_start",
"label": "Open Workfile window at start of a Nuke session"
},
{
"type": "boolean",
"key": "create_initial_workfile",
"label": "Create initial workfile version if none available"
}
]
},
@ -87,7 +97,7 @@
"name": "schema_nuke_publish",
"template_data": []
},
{
{
"type": "schema",
"name": "schema_nuke_load",
"template_data": []
@ -101,4 +111,4 @@
"name": "schema_publish_gui_filter"
}
]
}
}

View file

@ -29,13 +29,11 @@
"template_data": [
{
"app_variant_label": "2020",
"app_variant": "2020",
"app_name": "aftereffects"
"app_variant": "2020"
},
{
"app_variant_label": "2021",
"app_variant": "2021",
"app_name": "aftereffects"
"app_variant": "2021"
}
]
}

View file

@ -29,13 +29,11 @@
"template_data": [
{
"app_variant_label": "2.83",
"app_variant": "2-83",
"app_name": "blender"
"app_variant": "2-83"
},
{
"app_variant_label": "2.90",
"app_variant": "2-90",
"app_name": "blender"
"app_variant": "2-90"
}
]
}

View file

@ -29,10 +29,7 @@
"template_data": [
{
"app_variant_label": "Local",
"app_variant": "Local",
"app_name": "celation",
"multiplatform": false,
"multipath_executables": false
"app_variant": "local"
}
]
}

View file

@ -28,8 +28,7 @@
"name": "template_host_variant",
"template_data": {
"app_variant_label": "1.1",
"app_variant": "1-1",
"app_name": "djvview"
"app_variant": "1-1"
}
}
]

View file

@ -29,13 +29,11 @@
"template_data": [
{
"app_variant_label": "16",
"app_variant": "16",
"app_name": "fusion"
"app_variant": "16"
},
{
"app_variant_label": "9",
"app_variant": "9",
"app_name": "fusion"
"app_variant": "9"
}
]
}

View file

@ -29,13 +29,11 @@
"template_data": [
{
"app_variant_label": "20",
"app_variant": "20",
"app_name": "harmony"
"app_variant": "20"
},
{
"app_variant_label": "17",
"app_variant": "17",
"app_name": "harmony"
"app_variant": "17"
}
]
}

View file

@ -29,18 +29,15 @@
"template_data": [
{
"app_variant_label": "18.5",
"app_variant": "18-5",
"app_name": "houdini"
"app_variant": "18-5"
},
{
"app_variant_label": "18",
"app_variant": "18",
"app_name": "houdini"
"app_variant": "18"
},
{
"app_variant_label": "17",
"app_variant": "17",
"app_name": "houdini"
"app_variant": "17"
}
]
}

View file

@ -29,18 +29,15 @@
"template_data": [
{
"app_variant_label": "2020",
"app_variant": "2020",
"app_name": "maya"
"app_variant": "2020"
},
{
"app_variant_label": "2019",
"app_variant": "2019",
"app_name": "maya"
"app_variant": "2019"
},
{
"app_variant_label": "2018",
"app_variant": "2018",
"app_name": "maya"
"app_variant": "2018"
}
]
}

View file

@ -29,18 +29,15 @@
"template_data": [
{
"app_variant_label": "2020",
"app_variant": "2020",
"app_name": "mayabatch"
"app_variant": "2020"
},
{
"app_variant_label": "2019",
"app_variant": "2019",
"app_name": "mayabatch"
"app_variant": "2019"
},
{
"app_variant_label": "2018",
"app_variant": "2018",
"app_name": "mayabatch"
"app_variant": "2018"
}
]
}

View file

@ -29,13 +29,11 @@
"template_data": [
{
"app_variant_label": "2020",
"app_variant": "2020",
"app_name": "photoshop"
"app_variant": "2020"
},
{
"app_variant_label": "2021",
"app_variant": "2021",
"app_name": "photoshop"
"app_variant": "2021"
}
]
}

View file

@ -29,8 +29,7 @@
"template_data": [
{
"app_variant_label": "16",
"app_variant": "16",
"app_name": "resolve"
"app_variant": "16"
}
]
}

View file

@ -25,18 +25,15 @@
"template_data": [
{
"app_variant": "python_3-7",
"app_variant_label": "Python 3.7",
"app_name": "python"
"app_variant_label": "Python 3.7"
},
{
"app_variant": "python_2-7",
"app_variant_label": "Python 2.7",
"app_name": "python"
"app_variant_label": "Python 2.7"
},
{
"app_variant": "terminal",
"app_variant_label": "Terminal",
"app_name": "terminal"
"app_variant_label": "Terminal"
}
]
}

View file

@ -29,13 +29,11 @@
"template_data": [
{
"app_variant_label": "Animation 11 (64bits)",
"app_variant": "animation_11-64bits",
"app_name": "tvpaint"
"app_variant": "animation_11-64bits"
},
{
"app_variant_label": "Animation 11 (32bits)",
"app_variant": "animation_11-32bits",
"app_name": "tvpaint"
"app_variant": "animation_11-32bits"
}
]
}

View file

@ -29,8 +29,7 @@
"template_data": [
{
"app_variant": "4-24",
"app_variant_label": "4.24",
"app_name": "unreal"
"app_variant_label": "4.24"
}
]
}

View file

@ -1,13 +1,7 @@
[
{
"__default_values__": {
"multipath_executables": true,
"multiplatform": true
}
},
{
"type": "dict",
"key": "{app_name}_{app_variant}",
"key": "{app_variant}",
"label": "{app_variant_label}",
"collapsible": true,
"checkbox_key": "enabled",
@ -21,15 +15,14 @@
"type": "text",
"key": "variant_label",
"label": "Variant label",
"placeholder": "Only \"Label\" is used if not filled.",
"roles": ["developer"]
"placeholder": "Only \"Label\" is used if not filled."
},
{
"type": "path",
"key": "executables",
"label": "Executables",
"multiplatform": "{multiplatform}",
"multipath": "{multipath_executables}"
"multiplatform": true,
"multipath": true
},
{
"type":"separator"

View file

@ -30,23 +30,19 @@
"template_data": [
{
"app_variant": "12-2",
"app_variant_label": "12.2",
"app_name": "{nuke_type}"
"app_variant_label": "12.2"
},
{
"app_variant": "12-0",
"app_variant_label": "12.0",
"app_name": "{nuke_type}"
"app_variant_label": "12.0"
},
{
"app_variant": "11-3",
"app_variant_label": "11.3",
"app_name": "{nuke_type}"
"app_variant_label": "11.3"
},
{
"app_variant": "11-2",
"app_variant_label": "11.2",
"app_name": "{nuke_type}"
"app_variant_label": "11.2"
}
]
}

View file

@ -11,6 +11,7 @@ from avalon.tools import lib as tools_lib
from avalon.tools.widgets import AssetWidget
from avalon.vendor import qtawesome
from .models import ProjectModel
from .lib import get_action_label
from .widgets import (
ProjectBar,
ActionBar,
@ -407,7 +408,7 @@ class LauncherWindow(QtWidgets.QDialog):
self.discover_actions()
def on_action_clicked(self, action):
self.echo("Running action: {}".format(action.name))
self.echo("Running action: {}".format(get_action_label(action)))
self.run_action(action)
def on_history_action(self, history_data):

View file

@ -550,7 +550,9 @@ class DictMutableKeysWidget(BaseWidget):
label = self.entity.label
body_widget = None
content_left_margin = 0
if label:
content_left_margin = CHILD_OFFSET
body_widget = ExpandingWidget(label, self)
main_layout.addWidget(body_widget)
label = None
@ -565,7 +567,9 @@ class DictMutableKeysWidget(BaseWidget):
content_widget.setObjectName("ContentWidget")
content_widget.setProperty("content_state", content_state)
content_layout = QtWidgets.QVBoxLayout(content_widget)
content_layout.setContentsMargins(CHILD_OFFSET, 5, 0, bottom_margin)
content_layout.setContentsMargins(
content_left_margin, 5, 0, bottom_margin
)
if body_widget is None:
main_layout.addWidget(content_widget)

View file

@ -160,32 +160,11 @@ def set_context(project, asset, task):
os.environ["AVALON_TASK"] = task
io.Session["AVALON_TASK"] = task
io.install()
av_project = io.find_one({'type': 'project'})
av_asset = io.find_one({
"type": 'asset',
"name": asset
})
parents = av_asset['data']['parents']
hierarchy = ''
if parents and len(parents) > 0:
hierarchy = os.path.sep.join(parents)
os.environ["AVALON_HIERARCHY"] = hierarchy
io.Session["AVALON_HIERARCHY"] = hierarchy
os.environ["AVALON_PROJECTCODE"] = av_project['data'].get('code', '')
io.Session["AVALON_PROJECTCODE"] = av_project['data'].get('code', '')
io.Session["current_dir"] = os.path.normpath(os.getcwd())
os.environ["AVALON_APP"] = HOST_NAME
io.Session["AVALON_APP"] = HOST_NAME
io.uninstall()
def cli_publish(data, publish_paths, gui=True):
PUBLISH_SCRIPT_PATH = os.path.join(