[Concept,00/22] expo: Expand docs, dump and textlines in non-popup expos

Message ID 20251207201628.2882382-1-sjg@u-boot.org
Headers
Series expo: Expand docs, dump and textlines in non-popup expos |

Message

Simon Glass Dec. 7, 2025, 8:15 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

So far textlines are mostly used in cedits as a way to enter textual
information.

For non-popup expos, textlines are not yet fully plumbed in.

This series adds a way to send keypresses to a highlighted textline,
adds a test for this case and fixes various minor issues to make this
all work.

One noteable change is renumbering the BKEY enum. At present the values
conflict with the control keys used by CLI processing, so for example,
expo is unable to distinguish an up-arrow from a backspace.

Tests which use textedits mostly need to run with the console active,
since a silent console suppresses output of the text in the textedit.
In fact, at present cedit_render_lineedit() does not work unless the
previous test ran first. A new UTF_NO_SILENT test flag is added to make
this problem easier to discover/debug.

This series also resolves an issue where the 'cedit dump' is never
enabled due to a typo in the Kconfig item. With that fixed, the dump
format is converted to use hex (U-Boot convention). The expo menu and
cedit implementations are updated to use better names for objects.

This series also includes some documentation updates, since much of the
debugging methods used are not explicitly described. This should make it
easier for others to make improvements.

With all of this complete, it is possible to have a password field in a
menu item and to enter text into it, even with a non-popup expo. It also
becomes easier to debug such issues in future.


Simon Glass (22):
  CLAUDE.md: Update build and coding conventions
  cmd: cedit: Fix CONFIG_CMD_EDIT_DUMP typo
  expo: Use textline consistently in tests
  video: Document the quirk in truetype_get_cursor_info()
  test: Add a flag for test which need console output
  doc: expo: Move test-mode docs up a little
  doc: test: Document assertion macros
  doc: expo: Add documentation for writing and debugging tests
  expo: Use hex format when dumping the expo
  expo: Add prompt_id to struct scene
  expo: Use better names for child objects in expo_build
  expo: Use better names for objects in bootflow_menu_add()
  expo: Fix textline edit text not updating in bootflow menu
  test: cedit: Use UTF_NO_SILENT
  test: cedit: Allow cedit_render_lineedit() to run alone
  expo: Refactor scene_send_key() to use a current object
  expo: Add scene_render_obj() to render by object ID
  expo: Correct rendering of textlines when open
  menu: Start bootmenu_key values at 0x100
  expo: Always send keys to highlighted textline
  expo: Consider an item selected when a password is entered
  test: expo: Add a test for textline rendering in an expo

 CLAUDE.md                        |   7 +-
 boot/bootflow_menu.c             |  44 +++++--
 boot/cedit.c                     |  11 +-
 boot/expo_build.c                |  52 +++++---
 boot/expo_dump.c                 |  51 ++++----
 boot/scene.c                     |  63 +++++----
 boot/scene_internal.h            |   9 ++
 boot/scene_textline.c            |  29 ++---
 cmd/cedit.c                      |   8 +-
 doc/arch/sandbox/sandbox.rst     |   5 +-
 doc/develop/expo.rst             | 211 +++++++++++++++++++++++++++++--
 doc/develop/tests_writing.rst    | 106 ++++++++++++++++
 drivers/video/console_truetype.c |   6 +-
 include/expo.h                   |   2 +
 include/menu.h                   |  10 +-
 include/test/test.h              |  17 +--
 test/boot/cedit.c                |  18 +--
 test/boot/expo.c                 | 120 +++++++++++++++++-
 test/test-main.c                 |   3 +-
 19 files changed, 630 insertions(+), 142 deletions(-)