aboutsummaryrefslogtreecommitdiff
path: root/app/ui/tui.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/ui/tui.py')
-rw-r--r--app/ui/tui.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/app/ui/tui.py b/app/ui/tui.py
index a4854b0..1e95353 100644
--- a/app/ui/tui.py
+++ b/app/ui/tui.py
@@ -1035,6 +1035,11 @@ def form(scr, title: str, fields: Sequence[dict],
keep their value across hide/show. A field may set ``on_change`` to
a callable of the field list, invoked whenever its value changes so
dependent fields (choices, visibility, defaults) can be recomputed.
+ A ``choice`` field may set ``compact_label`` to show its picked
+ label on the form row with runs of spaces collapsed back to the
+ two-space gutter — the pick menu always shows the full label, so a
+ padded table (aligned capability columns) reads aligned there and
+ compact on the row.
A choice field whose resolved list is empty cannot be opened: Enter
is a no-op, or flashes the field's optional ``on_empty_choices``
message (string or callable of the field list) — an explanation the
@@ -1130,6 +1135,13 @@ def form(scr, title: str, fields: Sequence[dict],
and len(choices[0]) == 2:
for label, value in choices:
if value == field["value"]:
+ if field.get("compact_label"):
+ # The pick menu keeps the full padded label
+ # (e.g. the model picker's aligned capability
+ # table); the form row collapses its runs of
+ # column padding back to the two-space gutter
+ # so a short pick reads without a far gap.
+ return re.sub(" {2,}", " ", label)
return label
return str(field["value"])