From 65c6f737f1545ef225768af897acd20f163a4fb4 Mon Sep 17 00:00:00 2001 From: historia Date: Wed, 26 Aug 2026 20:43:05 -0400 Subject: fix: settings menu only prompts to save after change --- app/ui/tui.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'app/ui/tui.py') diff --git a/app/ui/tui.py b/app/ui/tui.py index f1c5419..319c123 100644 --- a/app/ui/tui.py +++ b/app/ui/tui.py @@ -920,7 +920,11 @@ def form(scr, title: str, fields: Sequence[dict], An optional ``note`` string on a field renders as a dim, non-selectable line in a blank-line frame above that field's row — a - section divider with a short explanation. Up/Down (or k/j) move the + section divider with a short explanation. An optional ``help`` list + of strings is shown as dim lines inside the field's edit dialog + (line editor / choice menu / directory browser title screens), + letting a field explain itself at edit time; like ``label`` it may + be a callable of the field list. Up/Down (or k/j) move the cursor; Enter edits or toggles the highlighted field. Tab, Left/Right, j or k at the ends of the list move focus to the BUTTONS — Down from the last field and Up from the first field both land on the first @@ -952,6 +956,13 @@ def form(scr, title: str, fields: Sequence[dict], label = field["label"] return str(label(fields)) if callable(label) else str(label) + def field_help(field: dict) -> Optional[List[str]]: + """Resolve FIELD's optional help lines (static or computed).""" + help_lines = field.get("help") + if callable(help_lines): + help_lines = help_lines(fields) + return list(help_lines) if help_lines else None + def shown_fields() -> List[dict]: result: List[dict] = [] for field in fields: @@ -1126,6 +1137,7 @@ def form(scr, title: str, fields: Sequence[dict], edited = line_edit(scr, field_label(field), field["value"], validate=field.get("validate"), + help_lines=field_help(field), back_value=edit_cancel) if edited is not edit_cancel: field["value"] = edited -- cgit v1.2.3