mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
169 lines
5 KiB
Python
169 lines
5 KiB
Python
import os
|
|
import sys
|
|
|
|
import hiero.core
|
|
from hiero.ui import findMenuAction
|
|
|
|
from openpype.lib import Logger
|
|
from openpype.pipeline import legacy_io
|
|
from openpype.tools.utils import host_tools
|
|
|
|
from . import tags
|
|
from openpype.settings import get_project_settings
|
|
|
|
log = Logger.get_logger(__name__)
|
|
|
|
self = sys.modules[__name__]
|
|
self._change_context_menu = None
|
|
|
|
|
|
def update_menu_task_label():
|
|
"""Update the task label in Avalon menu to current session"""
|
|
|
|
object_name = self._change_context_menu
|
|
found_menu = findMenuAction(object_name)
|
|
|
|
if not found_menu:
|
|
log.warning("Can't find menuItem: {}".format(object_name))
|
|
return
|
|
|
|
label = "{}, {}".format(
|
|
legacy_io.Session["AVALON_ASSET"],
|
|
legacy_io.Session["AVALON_TASK"]
|
|
)
|
|
|
|
menu = found_menu.menu()
|
|
self._change_context_menu = label
|
|
menu.setTitle(label)
|
|
|
|
|
|
def menu_install():
|
|
"""
|
|
Installing menu into Hiero
|
|
|
|
"""
|
|
|
|
from qtpy import QtGui
|
|
from . import (
|
|
publish, launch_workfiles_app, reload_config,
|
|
apply_colorspace_project, apply_colorspace_clips
|
|
)
|
|
from .lib import get_main_window
|
|
|
|
main_window = get_main_window()
|
|
|
|
# here is the best place to add menu
|
|
|
|
menu_name = os.environ['AVALON_LABEL']
|
|
|
|
context_label = "{0}, {1}".format(
|
|
legacy_io.Session["AVALON_ASSET"],
|
|
legacy_io.Session["AVALON_TASK"]
|
|
)
|
|
|
|
self._change_context_menu = context_label
|
|
|
|
try:
|
|
check_made_menu = findMenuAction(menu_name)
|
|
except Exception:
|
|
check_made_menu = None
|
|
|
|
if not check_made_menu:
|
|
# Grab Hiero's MenuBar
|
|
menu = hiero.ui.menuBar().addMenu(menu_name)
|
|
else:
|
|
menu = check_made_menu.menu()
|
|
|
|
context_label_action = menu.addAction(context_label)
|
|
context_label_action.setEnabled(False)
|
|
|
|
menu.addSeparator()
|
|
|
|
workfiles_action = menu.addAction("Work Files...")
|
|
workfiles_action.setIcon(QtGui.QIcon("icons:Position.png"))
|
|
workfiles_action.triggered.connect(launch_workfiles_app)
|
|
|
|
default_tags_action = menu.addAction("Create Default Tags")
|
|
default_tags_action.setIcon(QtGui.QIcon("icons:Position.png"))
|
|
default_tags_action.triggered.connect(tags.add_tags_to_workfile)
|
|
|
|
menu.addSeparator()
|
|
|
|
publish_action = menu.addAction("Publish...")
|
|
publish_action.setIcon(QtGui.QIcon("icons:Output.png"))
|
|
publish_action.triggered.connect(
|
|
lambda *args: publish(hiero.ui.mainWindow())
|
|
)
|
|
|
|
creator_action = menu.addAction("Create...")
|
|
creator_action.setIcon(QtGui.QIcon("icons:CopyRectangle.png"))
|
|
creator_action.triggered.connect(
|
|
lambda: host_tools.show_creator(parent=main_window)
|
|
)
|
|
|
|
loader_action = menu.addAction("Load...")
|
|
loader_action.setIcon(QtGui.QIcon("icons:CopyRectangle.png"))
|
|
loader_action.triggered.connect(
|
|
lambda: host_tools.show_loader(parent=main_window)
|
|
)
|
|
|
|
sceneinventory_action = menu.addAction("Manage...")
|
|
sceneinventory_action.setIcon(QtGui.QIcon("icons:CopyRectangle.png"))
|
|
sceneinventory_action.triggered.connect(
|
|
lambda: host_tools.show_scene_inventory(parent=main_window)
|
|
)
|
|
|
|
library_action = menu.addAction("Library...")
|
|
library_action.setIcon(QtGui.QIcon("icons:CopyRectangle.png"))
|
|
library_action.triggered.connect(
|
|
lambda: host_tools.show_library_loader(parent=main_window)
|
|
)
|
|
|
|
if os.getenv("OPENPYPE_DEVELOP"):
|
|
menu.addSeparator()
|
|
reload_action = menu.addAction("Reload pipeline")
|
|
reload_action.setIcon(QtGui.QIcon("icons:ColorAdd.png"))
|
|
reload_action.triggered.connect(reload_config)
|
|
|
|
menu.addSeparator()
|
|
apply_colorspace_p_action = menu.addAction("Apply Colorspace Project")
|
|
apply_colorspace_p_action.setIcon(QtGui.QIcon("icons:ColorAdd.png"))
|
|
apply_colorspace_p_action.triggered.connect(apply_colorspace_project)
|
|
|
|
apply_colorspace_c_action = menu.addAction("Apply Colorspace Clips")
|
|
apply_colorspace_c_action.setIcon(QtGui.QIcon("icons:ColorAdd.png"))
|
|
apply_colorspace_c_action.triggered.connect(apply_colorspace_clips)
|
|
|
|
menu.addSeparator()
|
|
|
|
exeprimental_action = menu.addAction("Experimental tools...")
|
|
exeprimental_action.triggered.connect(
|
|
lambda: host_tools.show_experimental_tools_dialog(parent=main_window)
|
|
)
|
|
|
|
|
|
def add_scripts_menu():
|
|
try:
|
|
from . import launchforhiero
|
|
except ImportError:
|
|
|
|
log.warning(
|
|
"Skipping studio.menu install, because "
|
|
"'scriptsmenu' module seems unavailable."
|
|
)
|
|
return
|
|
|
|
# load configuration of custom menu
|
|
project_settings = get_project_settings(os.getenv("AVALON_PROJECT"))
|
|
config = project_settings["hiero"]["scriptsmenu"]["definition"]
|
|
_menu = project_settings["hiero"]["scriptsmenu"]["name"]
|
|
|
|
if not config:
|
|
log.warning("Skipping studio menu, no definition found.")
|
|
return
|
|
|
|
# run the launcher for Hiero menu
|
|
studio_menu = launchforhiero.main(title=_menu.title())
|
|
|
|
# apply configuration
|
|
studio_menu.build_from_configuration(studio_menu, config)
|