mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
Use enum in settings to toggle between the two menu build options
This commit is contained in:
parent
e80c400e5d
commit
0b16bfc42c
2 changed files with 26 additions and 18 deletions
|
|
@ -215,11 +215,12 @@ def install(project_settings):
|
|||
)
|
||||
return
|
||||
|
||||
_menu = project_settings["maya"]["scriptsmenu"]["name"]
|
||||
menu_settings = project_settings["maya"]["scriptsmenu"]
|
||||
menu_name = menu_settings["name"]
|
||||
config = menu_settings["definition"]
|
||||
|
||||
config = project_settings["maya"]["scriptsmenu"]["definition"]
|
||||
if project_settings["maya"]["scriptsmenu"].get("use_json_definition"):
|
||||
data = project_settings["maya"]["scriptsmenu"]["definition_json"]
|
||||
if menu_settings.get("definition_type") == "definition_json":
|
||||
data = menu_settings["definition_json"]
|
||||
try:
|
||||
config = json.loads(data)
|
||||
except json.JSONDecodeError as exc:
|
||||
|
|
@ -233,8 +234,8 @@ def install(project_settings):
|
|||
|
||||
# run the launcher for Maya menu
|
||||
studio_menu = launchformaya.main(
|
||||
title=_menu.title(),
|
||||
objectName=_menu.title().lower().replace(" ", "_")
|
||||
title=menu_name.title(),
|
||||
objectName=menu_name.title().lower().replace(" ", "_")
|
||||
)
|
||||
|
||||
# apply configuration
|
||||
|
|
|
|||
|
|
@ -18,29 +18,36 @@ class ScriptsmenuSubmodel(BaseSettingsModel):
|
|||
)
|
||||
|
||||
|
||||
_definition_mode_type = [
|
||||
{"value": "definition", "label": "Menu Builder"},
|
||||
{"value": "definition_json", "label": "Raw JSON (advanced)"}
|
||||
]
|
||||
|
||||
|
||||
class ScriptsmenuModel(BaseSettingsModel):
|
||||
"""Add a custom scripts menu to Maya"""
|
||||
_isGroup = True
|
||||
|
||||
name: str = SettingsField(title="Menu Name")
|
||||
use_json_definition: bool = SettingsField(
|
||||
title="Use Raw JSON Definition",
|
||||
description="When enabled, the definition field will be ignored. "
|
||||
"Instead the menu will be build from the raw JSON "
|
||||
"definition below it."
|
||||
|
||||
definition_type: str = SettingsField(
|
||||
title="Define menu using",
|
||||
description="Choose the way to define the custom scripts menu "
|
||||
"via settings",
|
||||
enum_resolver=lambda: _definition_mode_type,
|
||||
conditionalEnum=True,
|
||||
default="definition"
|
||||
)
|
||||
definition: list[ScriptsmenuSubmodel] = SettingsField(
|
||||
default_factory=list,
|
||||
title="Menu Definition",
|
||||
description="Scriptmenu Items Definition"
|
||||
)
|
||||
|
||||
definition_json: str = SettingsField(
|
||||
"[]", title="Definition JSON", widget="textarea",
|
||||
"[]", title="Menu Definition JSON", widget="textarea",
|
||||
description=(
|
||||
"When Use Raw JSON definition is enabled this field will be used "
|
||||
"to put the direct JSON content instead of using the definition "
|
||||
"menu builder UI above. For more details on the JSON format, see "
|
||||
"Define the custom tools menu using a JSON list. "
|
||||
"For more details on the JSON format, see "
|
||||
"[here](https://github.com/Colorbleed/scriptsmenu?tab=readme-ov-file#configuration)." # noqa: E501
|
||||
)
|
||||
)
|
||||
|
|
@ -64,7 +71,7 @@ class ScriptsmenuModel(BaseSettingsModel):
|
|||
|
||||
DEFAULT_SCRIPTSMENU_SETTINGS = {
|
||||
"name": "Custom Tools",
|
||||
"use_json_definition": False,
|
||||
"definition_type": "definition",
|
||||
"definition": [
|
||||
{
|
||||
"type": "action",
|
||||
|
|
@ -78,5 +85,5 @@ DEFAULT_SCRIPTSMENU_SETTINGS = {
|
|||
]
|
||||
}
|
||||
],
|
||||
"definition_raw": ""
|
||||
"definition_json": "[]"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue