Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3abb4f8
implement activity stream panel into the rv menu
moonyuet Oct 9, 2025
27f487e
remove unused import
moonyuet Oct 9, 2025
e799490
improve the message of debug
moonyuet Oct 10, 2025
14903fb
remove the unrelated url
moonyuet Oct 10, 2025
eaec048
ruff fix
moonyuet Oct 14, 2025
6e77b43
change the import desktop review function
moonyuet Oct 15, 2025
6664bb0
add context project name into container and make sure the host name a…
moonyuet Oct 16, 2025
fc4899d
make sure it is string value
moonyuet Oct 16, 2025
3c686aa
improve importerror debug message
moonyuet Oct 21, 2025
24cc39d
improve importerror debug message
moonyuet Oct 21, 2025
b227eb7
use load_activity_data() instead
moonyuet Oct 21, 2025
7661a00
integrate activity stream in different ways
moonyuet Oct 21, 2025
617ce07
remove exec_()
moonyuet Oct 21, 2025
9c3c674
add detail_panel, activity_panel and improve the logic of the widget …
moonyuet Oct 24, 2025
7336482
set the controller into docker widget
moonyuet Oct 24, 2025
3b31718
comment out the activity and detail stream
moonyuet Oct 28, 2025
fc90072
use ayon stylesheet for the dialog
moonyuet Oct 28, 2025
10175ef
refactor(ayon_menus): consolidate review desktop panel handling
philippe-ynput Oct 28, 2025
24d09b6
use the set_dockeer_widget from the controller
moonyuet Oct 28, 2025
e3406c6
imprinting the missing project_name data back to the container if it …
moonyuet Oct 29, 2025
15a54df
add set project to set the current project
moonyuet Oct 30, 2025
f88d35f
update to use load_ayon_data function
moonyuet Nov 4, 2025
cc52a80
remove extra set_docker_widget from ayon_menus
moonyuet Nov 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions client/ayon_openrv/api/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
register_inventory_action_path,
register_creator_plugin_path,
AYON_CONTAINER_ID,
get_current_project_name,
)

PLUGINS_DIR = os.path.join(OPENRV_ROOT_DIR, "plugins")
Expand Down Expand Up @@ -190,7 +191,8 @@ def imprint_container(node, name, namespace, context, loader):
"name": str(name),
"namespace": str(namespace),
"loader": str(loader),
"representation": str(context["representation"]["id"])
"representation": str(context["representation"]["id"]),
"project_name": str(context["project"]["name"]),
}

imprint(node, data, prefix=AYON_ATTR_PREFIX)
Expand All @@ -204,7 +206,8 @@ def parse_container(node):
"""
# If not all required data return None
required = ['id', 'schema', 'name',
'namespace', 'loader', 'representation']
'namespace', 'loader', 'representation',
'project_name']

data = {}
for key in required:
Expand All @@ -213,7 +216,14 @@ def parse_container(node):
# backward compatibility
prop = f"{node}.openpype.{key}"
if not rv.commands.propertyExists(prop):
return
if key != "project_name":
return
else:
imprint(
node,
{"project_name": get_current_project_name()},
prefix=AYON_ATTR_PREFIX
)

value = rv.commands.getStringProperty(prop)[0]
data[key] = value
Expand Down
61 changes: 52 additions & 9 deletions client/ayon_openrv/startup/pkgs_source/ayon_menus/ayon_menus.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import json
import sys
import importlib
import traceback
from functools import partial

import rv.qtutils
from rv.rvtypes import MinorMode
Expand All @@ -16,6 +18,7 @@
load_container,
get_current_project_name,
)
from ayon_core.settings import get_project_settings
from ayon_openrv.api import OpenRVHost
from ayon_openrv.networking import LoadContainerHandler

Expand Down Expand Up @@ -58,15 +61,7 @@ def __init__(self):
# Menu name
# NOTE: If it already exists it will merge with existing
# and add submenus / menuitems to the existing one
("AYON", [
# Menuitem name, actionHook (event), key, stateHook
("Load...", self.load, None, None),
("Publish...", self.publish, None, None),
("Manage...", self.scene_inventory, None, None),
("Library...", self.library, None, None),
("_", None), # separator
("Work Files...", self.workfiles, None, None),
])
("AYON", self.menu_item()),
],
# initialization order
sortKey="source_setup",
Expand All @@ -93,6 +88,54 @@ def scene_inventory(self, event):
def library(self, event):
host_tools.show_library_loader(parent=self._parent)

def open_desktop_review_panel(self, panel_name: str, event):
panel = self.review_controller.get_panel(panel_name)
self.review_controller.set_project(get_current_project_name())
self.review_controller.load_ayon_data()
label = panel_name.replace("_", " ").capitalize()
self.review_controller.set_docker_widget(self._parent, panel, label)

def add_desktop_review_menu_items(self, menu):
# Check if addon is enabled
project_settings = get_project_settings(get_current_project_name())
review_desktop = project_settings.get("review_desktop", {})
if not review_desktop.get("enabled", False):
return
# import review desktop controler
try:
from ayon_review_desktop import ReviewController
except ImportError:
print("Failed to import 'ayon_review_desktop':")
traceback.print_exc()
return
# instance controler and return the menu items.
self.review_controller = ReviewController(host="rv")
menu.append(("_", None)) # separator
for panel_name in self.review_controller.get_available_panels():
label = panel_name.replace("_", " ").capitalize()
menu.append(
(
f"{label}...",
partial(self.open_desktop_review_panel, panel_name),
None,
None,
)
)

def menu_item(self):
menu = [
# Menuitem name, actionHook (event), key, stateHook
("Load...", self.load, None, None),
("Publish...", self.publish, None, None),
("Manage...", self.scene_inventory, None, None),
("Library...", self.library, None, None),
("_", None), # separator
("Work Files...", self.workfiles, None, None),
]
# Add Activity Stream menu item if enabled in project settings
self.add_desktop_review_menu_items(menu)
return menu


def data_loader():
incoming_data_file = os.environ.get(
Expand Down