From 481c928770136e6cc789ffa6dce2edc90d32a22a Mon Sep 17 00:00:00 2001
From: Roy Nieterau <roy_nieterau@hotmail.com>
Date: Fri, 5 Jul 2024 23:01:31 +0200
Subject: [PATCH 1/5] Load Asset LOP allow to pick product type, make sure
 filtered product names are sorted

---
 client/ayon_houdini/api/hda_utils.py                      | 7 +++++--
 .../ayon_8_8Lop_1lop__import_8_81.0/DialogScript          | 8 +++++++-
 .../ayon_8_8Lop_1lop__import_8_81.0/OnCreated             | 1 -
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/client/ayon_houdini/api/hda_utils.py b/client/ayon_houdini/api/hda_utils.py
index 412364bc04..2023825f39 100644
--- a/client/ayon_houdini/api/hda_utils.py
+++ b/client/ayon_houdini/api/hda_utils.py
@@ -569,13 +569,16 @@ def get_available_products(node):
     if not folder_entity:
         return []
 
+    # Apply filter only if any value is set
+    product_types = [product_type] if product_type else None
+
     products = ayon_api.get_products(
         project_name,
         folder_ids=[folder_entity["id"]],
-        product_types=[product_type]
+        product_types=product_types
     )
 
-    return [product["name"] for product in products]
+    return list(sorted(product["name"] for product in products))
 
 
 def set_to_latest_version(node):
diff --git a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
index 3c97d10f35..00875fb462 100644
--- a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
+++ b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
@@ -3,7 +3,7 @@
 {
     name	ayon::lop_import::1.0
     script	load_asset::1.0
-    label	"Load Asset"
+    label	"AYON Load Asset"
 
     help {
 	""
@@ -52,6 +52,12 @@
             label   "Product Type"
             type    string
             default { "usd" }
+            menu {
+                "usd"           "usd"
+                "pointcache"    "pointcache"
+                "model"         "model"
+                ""              "*"
+            }
         }
         parm {
             name    "product_name"
diff --git a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/OnCreated b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/OnCreated
index 06ccdaa653..bd09a7838b 100644
--- a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/OnCreated
+++ b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/OnCreated
@@ -2,5 +2,4 @@ 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)

From b4b03c6232967f6d5c98b1ca4498700f554a3665 Mon Sep 17 00:00:00 2001
From: Roy Nieterau <roy_nieterau@hotmail.com>
Date: Fri, 5 Jul 2024 23:14:08 +0200
Subject: [PATCH 2/5] Sort product types alphabetically, add camera product
 type

---
 .../ayon_8_8Lop_1lop__import_8_81.0/DialogScript           | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
index 00875fb462..fa9e3b7099 100644
--- a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
+++ b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
@@ -53,10 +53,11 @@
             type    string
             default { "usd" }
             menu {
-                "usd"           "usd"
-                "pointcache"    "pointcache"
-                "model"         "model"
                 ""              "*"
+                "camera"        "camera"
+                "model"         "model"
+                "pointcache"    "pointcache"
+                "usd"           "usd"
             }
         }
         parm {

From ba5c8a77df6ab3b874b77688d62aeb57ab3d264c Mon Sep 17 00:00:00 2001
From: Roy Nieterau <roy_nieterau@hotmail.com>
Date: Fri, 5 Jul 2024 23:34:43 +0200
Subject: [PATCH 3/5] Update product type parm to the loaded product if it
 mismatches

---
 client/ayon_houdini/api/hda_utils.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/client/ayon_houdini/api/hda_utils.py b/client/ayon_houdini/api/hda_utils.py
index 2023825f39..bb66f2242f 100644
--- a/client/ayon_houdini/api/hda_utils.py
+++ b/client/ayon_houdini/api/hda_utils.py
@@ -129,6 +129,14 @@ def update_info(node, context):
              if node.evalParm(key) != value}
     parms["load_message"] = ""  # clear any warnings/errors
 
+    # Update the product type filter to match the type
+    current = node.evalParm("product_type")
+    product_type = context["product"]["productType"]
+    if current or current != product_type:
+        # If current is empty we consider no filtering applied and we allow
+        # that to be a state that needs no switching
+        parms["product_type"] = product_type
+
     # Note that these never trigger any parm callbacks since we do not
     # trigger the `parm.pressButton` and programmatically setting values
     # in Houdini does not trigger callbacks automatically

From bcfd46a14713b22dc9f79f9f3823dccae6c5debb Mon Sep 17 00:00:00 2001
From: Roy Nieterau <roy_nieterau@hotmail.com>
Date: Fri, 5 Jul 2024 23:35:43 +0200
Subject: [PATCH 4/5] Fix if statement

---
 client/ayon_houdini/api/hda_utils.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/ayon_houdini/api/hda_utils.py b/client/ayon_houdini/api/hda_utils.py
index bb66f2242f..8b8b0a323b 100644
--- a/client/ayon_houdini/api/hda_utils.py
+++ b/client/ayon_houdini/api/hda_utils.py
@@ -132,7 +132,7 @@ def update_info(node, context):
     # Update the product type filter to match the type
     current = node.evalParm("product_type")
     product_type = context["product"]["productType"]
-    if current or current != product_type:
+    if current and current != product_type:
         # If current is empty we consider no filtering applied and we allow
         # that to be a state that needs no switching
         parms["product_type"] = product_type

From 6dc4ece3db6992b70cd52fa3da14b906ab2b84c5 Mon Sep 17 00:00:00 2001
From: Roy Nieterau <roy_nieterau@hotmail.com>
Date: Thu, 11 Jul 2024 14:08:39 +0200
Subject: [PATCH 5/5] Update
 client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript

---
 .../ayon_8_8Lop_1lop__import_8_81.0/DialogScript                 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
index fa9e3b7099..dee8fa4c8f 100644
--- a/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
+++ b/client/ayon_houdini/startup/otls/ayon_lop_import.hda/ayon_8_8Lop_1lop__import_8_81.0/DialogScript
@@ -54,6 +54,7 @@
             default { "usd" }
             menu {
                 ""              "*"
+                "animation"     "animation"
                 "camera"        "camera"
                 "model"         "model"
                 "pointcache"    "pointcache"