Skip to content

scriptsmenu

ScriptsmenuModel

Bases: BaseSettingsModel

Add a custom scripts menu to Maya

Source code in server/settings/scriptsmenu.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class ScriptsmenuModel(BaseSettingsModel):
    """Add a custom scripts menu to Maya"""
    _isGroup = True

    name: str = SettingsField(title="Menu Name")

    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="Menu Definition JSON", widget="textarea",
        description=(
            "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
        )
    )

    @validator("definition_json")
    def validate_json(cls, value):
        if not value.strip():
            return "[]"
        try:
            converted_value = json.loads(value)
            success = isinstance(converted_value, list)
        except json.JSONDecodeError:
            success = False

        if not success:
            raise BadRequestException(
                "The definition can't be parsed as json list object"
            )
        return value

ScriptsmenuSubmodel

Bases: BaseSettingsModel

Item Definition

Source code in server/settings/scriptsmenu.py
 8
 9
10
11
12
13
14
15
16
17
18
class ScriptsmenuSubmodel(BaseSettingsModel):
    """Item Definition"""
    _isGroup = True
    type: str = SettingsField(title="Type")
    command: str = SettingsField(title="Command")
    sourcetype: str = SettingsField(title="Source Type")
    title: str = SettingsField(title="Title")
    tooltip: str = SettingsField(title="Tooltip")
    tags: list[str] = SettingsField(
        default_factory=list, title="A list of tags"
    )