nexusLIMS.tui.common.base_screens#
Base screen classes for NexusLIMS TUI applications.
Provides reusable screen patterns for common UI tasks like list views, forms, and confirmation dialogs.
Module Contents#
Classes#
Base screen for displaying data in a table. |
|
Base screen for add/edit forms. |
|
Modal confirmation dialog. |
API#
- class nexusLIMS.tui.common.base_screens.BaseListScreen(**kwargs)[source]#
Bases:
textual.screen.ScreenBase screen for displaying data in a table.
Subclasses must implement:
get_columns() -> list[str]: Column headers
get_data() -> list[dict]: Row data
on_row_selected(row_key, row_data): Handle row selection
Provides:
DataTable with navigation and sorting
Search/filter bar
Add/Edit/Delete/Quit keybindings
Header and footer
- CSS_PATH#
Type: typing.ClassVar
- BINDINGS#
[(‘a’, ‘add’, ‘Add’), (‘e’, ‘edit’, ‘Edit’), (‘d’, ‘delete’, ‘Delete’), (‘r’, ‘refresh’, ‘Refresh’),…
Type: typing.ClassVar
- on_header_selected(event: textual.widgets.DataTable.HeaderSelected) None[source]#
Handle column header click for sorting.
- action_cycle_sort() None[source]#
Cycle through sort columns (press ‘s’ repeatedly to change column).
- on_row_selected_event(event: textual.widgets.DataTable.RowSelected) None[source]#
Handle row selection from table.
- class nexusLIMS.tui.common.base_screens.BaseFormScreen(title: str = 'Form', **kwargs)[source]#
Bases:
textual.screen.ScreenBase screen for add/edit forms.
Subclasses must implement:
get_form_fields() -> ComposeResult: Yield form field widgets
validate_form() -> dict[str, str]: Validate and return errors
on_save(data: dict): Handle save action
Provides:
Form layout with save/cancel buttons
Validation on save
Header and footer
- BINDINGS#
[(‘ctrl+s’, ‘save’, ‘Save’), (‘escape’, ‘cancel’, ‘Cancel’), (‘?’, ‘help’, ‘Help’)]
Type: typing.ClassVar
- abstractmethod get_form_fields() textual.app.ComposeResult[source]#
Get form field widgets.
- Yields:
Widget – Form field widgets (typically FormField instances)
- class nexusLIMS.tui.common.base_screens.ConfirmDialog(message: str, title: str = 'Confirm', **kwargs)[source]#
Bases:
textual.screen.ModalScreen[bool]Modal confirmation dialog.
Displays a message and Yes/No buttons. Returns True if user confirms, False if they cancel.
- CSS_PATH#
Type: typing.ClassVar