Files
wtd-libreflow-addon/core/contexts.py
T

57 lines
1.4 KiB
Python

"""Production contexts a file can be checked against.
To add a context, append a ``Context`` to ``CONTEXTS`` and list its id in the
``contexts`` attribute of the checks that apply to it.
"""
from dataclasses import dataclass
GENERAL = "GENERAL"
CHAR_MOD = "CHAR_MOD"
CHAR_LINEART = "CHAR_LINEART"
LAYOUT = "LAYOUT"
ANIMATION = "ANIMATION"
# Every asset context gets the general asset checks.
ASSET = frozenset({GENERAL, CHAR_MOD, CHAR_LINEART})
CHARACTER = frozenset({CHAR_MOD, CHAR_LINEART})
ALL = frozenset({GENERAL, CHAR_MOD, CHAR_LINEART, LAYOUT})
@dataclass(frozen=True)
class Context:
id: str
label: str
description: str
icon: str = "NONE"
CONTEXTS = [
Context(
GENERAL,
"Asset: General",
"Props, sets and generic assets (modeling and lineart)",
"MESH_CUBE",
),
Context(CHAR_MOD, "Character: Modeling", "Character modeling file", "USER"),
Context(
CHAR_LINEART,
"Character: Lineart / Shading",
"Character lineart and shading file",
"OUTLINER_OB_GREASEPENCIL",
),
Context(LAYOUT, "Shot: Layout", "Shot layout file", "SEQUENCE"),
Context(ANIMATION, "Shot: Animation", "Shot animation file", "SEQUENCE"),
]
def get_context(context_id):
for context in CONTEXTS:
if context.id == context_id:
return context
return None
def enum_items():
return [(c.id, c.label, c.description, c.icon, i) for i, c in enumerate(CONTEXTS)]