Skip to content

state.menu

state.menu

Menu open/close state decisions.

Contain pure functions that decide menu visibility based on triggers and keyboard actions.

compute_menu_open_state(*, trigger, menu_open, key_action, menu_screens, menu_commands)

Compute next menu open state, or return None for no update.

Source code in state/menu.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def compute_menu_open_state(
    *,
    trigger: Any,
    menu_open: Any,
    key_action: Any,
    menu_screens: set[str],
    menu_commands: set[str],
) -> bool | None:
    """Compute next menu open state, or return None for no update."""
    if trigger == "btn_menu":
        return not bool(menu_open)

    if trigger == "menu_overlay":
        return False

    if (
        trigger == "key_action"
        and isinstance(key_action, dict)
        and key_action.get("action") == "escape"
        and bool(menu_open)
    ):
        return False

    if trigger in (menu_screens | menu_commands):
        return False

    return None