From b9dd3edbbdb75e47bef9b66a5146e2d9e301a82f Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 17 Mar 2021 16:25:19 +0100 Subject: [PATCH] feat(nuke): menu shortcut from settings --- pype/hosts/nuke/api/menu.py | 23 +++++++++- .../defaults/project_settings/nuke.json | 9 ++++ .../projects_schema/schema_project_nuke.json | 42 +++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/pype/hosts/nuke/api/menu.py b/pype/hosts/nuke/api/menu.py index 8161b9024c..9ff1dc251a 100644 --- a/pype/hosts/nuke/api/menu.py +++ b/pype/hosts/nuke/api/menu.py @@ -2,7 +2,7 @@ import nuke from avalon.api import Session from .lib import WorkfileSettings -from pype.api import Logger, BuildWorkfile +from pype.api import Logger, BuildWorkfile, get_current_project_settings log = Logger().get_logger(__name__) @@ -66,6 +66,9 @@ def install(): ) log.debug("Adding menu item: {}".format(name)) + # adding shortcuts + add_shortcuts_from_presets() + def uninstall(): @@ -75,3 +78,21 @@ def uninstall(): for item in menu.items(): log.info("Removing menu item: {}".format(item.name())) menu.removeItem(item.name()) + + +def add_shortcuts_from_presets(): + menubar = nuke.menu("Nuke") + nuke_presets = get_current_project_settings()["nuke"] + + if nuke_presets.get("menu"): + for menu_name, menuitems in nuke_presets.get("menu").items(): + menu = menubar.findItem(menu_name) + for mitem_name, shortcut in menuitems.items(): + log.info("Adding Shortcut `{}` to `{}`".format( + shortcut, mitem_name + )) + try: + menuitem = menu.findItem(mitem_name) + menuitem.setShortcut(shortcut) + except AttributeError as e: + log.error(e) diff --git a/pype/settings/defaults/project_settings/nuke.json b/pype/settings/defaults/project_settings/nuke.json index 5821584932..d209a67106 100644 --- a/pype/settings/defaults/project_settings/nuke.json +++ b/pype/settings/defaults/project_settings/nuke.json @@ -1,4 +1,13 @@ { + "menu": { + "Pype": { + "Create...": "ctrl+shift+alt+c", + "Publish...": "ctrl+alt+p", + "Load...": "ctrl+alt+l", + "Manage...": "ctrl+alt+m", + "Build Workfile": "ctrl+alt+b" + } + }, "create": { "CreateWriteRender": { "fpath_template": "{work}/renders/nuke/{subset}/{subset}.{frame}.{ext}" diff --git a/pype/settings/entities/schemas/projects_schema/schema_project_nuke.json b/pype/settings/entities/schemas/projects_schema/schema_project_nuke.json index 220d56a306..90e068ba33 100644 --- a/pype/settings/entities/schemas/projects_schema/schema_project_nuke.json +++ b/pype/settings/entities/schemas/projects_schema/schema_project_nuke.json @@ -5,6 +5,48 @@ "label": "Nuke", "is_file": true, "children": [ + { + "type": "dict", + "collapsible": true, + "key": "menu", + "label": "Menu shortcuts", + "children": [ + { + "type": "dict", + "collapsible": false, + "key": "Pype", + "label": "Pype", + "is_group": true, + "children": [ + { + "type": "text", + "key": "Create...", + "label": "Create..." + }, + { + "type": "text", + "key": "Publish...", + "label": "Publish..." + }, + { + "type": "text", + "key": "Load...", + "label": "Load..." + }, + { + "type": "text", + "key": "Manage...", + "label": "Manage..." + }, + { + "type": "text", + "key": "Build Workfile", + "label": "Build Workfile" + } + ] + } + ] + }, { "type": "dict", "collapsible": true,