Merge pull request #11 from ynput/enhancement/houdini_load_asset_lop_add_product_selection

Houdini: Asset LOP HDA: Add products drop down menu
This commit is contained in:
Roy Nieterau 2024-06-28 00:48:10 +02:00 committed by GitHub
commit e5d684af08
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 62 additions and 2 deletions

View file

@ -542,3 +542,43 @@ def select_folder_path(node):
folder_parm = node.parm("folder_path")
folder_parm.set(selected_folder_path)
folder_parm.pressButton() # allow any callbacks to trigger
def get_available_products(node):
"""Return products menu items
It gets a list of available products of the specified product types
within the specified folder path with in the specified project.
Users can specify those in the HDA parameters.
Returns:
List[str]: Product options for Products menu.
"""
project_name = node.evalParm("project_name")
folder_path = node.evalParm("folder_path")
product_type = node.evalParm("product_type")
folder_entity = ayon_api.get_folder_by_path(project_name,
folder_path,
fields={"id"})
if not folder_entity:
return []
products = ayon_api.get_products(
project_name,
folder_ids=[folder_entity["id"]],
product_types=[product_type]
)
return([
product["name"] for product in products
])
def refresh_version(node):
"""Callback on product name change
Refresh version parameter value by setting its value to
the latest version of the selected product.
"""
versions = get_available_versions(node)
node.parm("version").set(str(versions[0]))

View file

@ -47,12 +47,29 @@
parmtag { "script_callback" "hou.phm().on_representation_parms_changed(kwargs['node'])" }
parmtag { "script_callback_language" "python" }
}
parm {
name "product_type"
label "Product Type"
type string
default { "usd" }
}
parm {
name "product_name"
label "Product"
type string
default { "usdAsset" }
parmtag { "script_callback" "hou.phm().on_representation_parms_changed(kwargs['node'])" }
menureplace {
[ "products = hou.phm().get_available_products(kwargs['node'])" ]
[ "" ]
[ "result = []" ]
[ "for product in products:" ]
[ " result.append(product)" ]
[ " result.append(product)" ]
[ " " ]
[ "return result" ]
language python
}
parmtag { "script_callback" "hou.phm().refresh_version(kwargs['node'])\nhou.phm().on_representation_parms_changed(kwargs['node'])" }
parmtag { "script_callback_language" "python" }
}
parm {

View file

@ -2,4 +2,5 @@ node = kwargs["node"]
hda_module = node.hdaModule()
hda_module.setup_flag_changed_callback(node)
node.parm("product_type").lock(True)
node.parm("file").lock(True)

View file

@ -4,5 +4,7 @@ from ayon_houdini.api.hda_utils import (
on_representation_id_changed,
on_representation_parms_changed,
setup_flag_changed_callback,
get_available_versions
get_available_versions,
get_available_products,
refresh_version
)