iPXE
|
Option configuration console. More...
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <curses.h>
#include <ipxe/console.h>
#include <ipxe/settings.h>
#include <ipxe/editbox.h>
#include <ipxe/keys.h>
#include <ipxe/ansicol.h>
#include <ipxe/jumpscroll.h>
#include <ipxe/message.h>
#include <ipxe/settings_ui.h>
#include <config/branding.h>
Go to the source code of this file.
Data Structures | |
struct | settings_ui_row |
A settings user interface row. More... | |
struct | settings_ui |
A settings user interface. More... | |
Macros | |
#define | TITLE_ROW 1U |
#define | SETTINGS_LIST_ROW 3U |
#define | SETTINGS_LIST_COL 1U |
#define | SETTINGS_LIST_ROWS ( LINES - 6U - SETTINGS_LIST_ROW ) |
#define | INFO_ROW ( LINES - 5U ) |
#define | ALERT_ROW ( LINES - 2U ) |
#define | INSTRUCTION_ROW ( LINES - 2U ) |
#define | INSTRUCTION_PAD " " |
#define | SETTING_ROW_TEXT(cols) |
Layout of text within a setting row. More... | |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static unsigned int | select_setting_row (struct settings_ui *ui, unsigned int index) |
Select a setting. More... | |
static size_t | string_copy (char *dest, const char *src, size_t len) |
Copy string without NUL termination. More... | |
static void | draw_setting_row (struct settings_ui *ui) |
Draw setting row. More... | |
static int | edit_setting (struct settings_ui *ui, int key) |
Edit setting ui. More... | |
static int | save_setting (struct settings_ui *ui) |
Save setting ui value back to configuration settings. More... | |
static void | draw_title_row (struct settings_ui *ui) |
Draw title row. More... | |
static void | draw_info_row (struct settings_ui *ui) |
Draw information row. More... | |
static void | draw_instruction_row (struct settings_ui *ui) |
Draw instruction row. More... | |
static void | draw_setting_rows (struct settings_ui *ui) |
Draw the current block of setting rows. More... | |
static void | select_settings (struct settings_ui *ui, struct settings *settings) |
Select settings block. More... | |
static int | main_loop (struct settings *settings) |
int | settings_ui (struct settings *settings) |
Option configuration console.
Definition in file settings_ui.c.
#define TITLE_ROW 1U |
Definition at line 49 of file settings_ui.c.
#define SETTINGS_LIST_ROW 3U |
Definition at line 50 of file settings_ui.c.
#define SETTINGS_LIST_COL 1U |
Definition at line 51 of file settings_ui.c.
#define SETTINGS_LIST_ROWS ( LINES - 6U - SETTINGS_LIST_ROW ) |
Definition at line 52 of file settings_ui.c.
#define INFO_ROW ( LINES - 5U ) |
Definition at line 53 of file settings_ui.c.
#define ALERT_ROW ( LINES - 2U ) |
Definition at line 54 of file settings_ui.c.
#define INSTRUCTION_ROW ( LINES - 2U ) |
Definition at line 55 of file settings_ui.c.
#define INSTRUCTION_PAD " " |
Definition at line 56 of file settings_ui.c.
#define SETTING_ROW_TEXT | ( | cols | ) |
Layout of text within a setting row.
Definition at line 59 of file settings_ui.c.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
static |
Select a setting.
ui | Settings user interface |
index | Index of setting row |
count | Number of setting rows |
Definition at line 121 of file settings_ui.c.
References settings_ui_row::buf, settings::children, COLS, count, settings_ui_row::editbox, fetchf_setting_copy(), jump_scroller::first, for_each_table_entry, free, index, init_editbox(), list_for_each_entry, memset(), NULL, offsetof, settings_ui_row::origin, settings::parent, settings_ui_row::row, settings_ui::row, settings_ui::scroll, settings_ui_row::setting, setting_applies(), setting_cmp(), SETTING_ROW_TEXT, SETTINGS, settings_ui_row::settings, settings_ui::settings, SETTINGS_LIST_COL, SETTINGS_LIST_ROW, typeof(), and u.
Referenced by draw_setting_rows(), main_loop(), and select_settings().
Copy string without NUL termination.
dest | Destination |
src | Source |
len | Maximum length of destination |
len | Length of (unterminated) string |
Definition at line 185 of file settings_ui.c.
References dest, len, memcpy(), src, and strlen().
Referenced by draw_setting_row().
|
static |
Draw setting row.
ui | Settings UI |
Definition at line 200 of file settings_ui.c.
References A_BOLD, attroff(), attron(), settings_ui_row::buf, COLS, memset(), move(), mvprintw, setting::name, settings::name, NULL, offsetof, settings_ui_row::origin, settings::parent, settings_ui_row::row, settings_ui::row, settings_ui_row::setting, SETTING_ROW_TEXT, settings_ui_row::settings, settings_ui::settings, SETTINGS_LIST_COL, string_copy(), typeof(), u, and value.
Referenced by draw_setting_rows(), and main_loop().
|
static |
Edit setting ui.
ui | Settings UI |
key | Key pressed by user |
key | Key returned to application, or zero |
Definition at line 252 of file settings_ui.c.
References assert(), edit_widget(), settings_ui_row::editbox, settings_ui_row::editing, key, setting::name, NULL, settings_ui::row, settings_ui_row::setting, and edit_box::widget.
Referenced by main_loop().
|
static |
Save setting ui value back to configuration settings.
ui | Settings UI |
Definition at line 263 of file settings_ui.c.
References assert(), settings_ui_row::buf, setting::name, NULL, settings_ui::row, settings_ui_row::setting, settings_ui::settings, and storef_setting().
Referenced by main_loop().
|
static |
Draw title row.
ui | Settings UI |
Definition at line 273 of file settings_ui.c.
References A_BOLD, attroff(), attron(), clearmsg(), msg(), name, PRODUCT_SHORT_NAME, settings_ui::settings, settings_name(), and TITLE_ROW.
Referenced by select_settings().
|
static |
Draw information row.
ui | Settings UI |
Definition at line 289 of file settings_ui.c.
References A_BOLD, attroff(), attron(), clearmsg(), color_set, CPAIR_NORMAL, CPAIR_URL, setting::description, INFO_ROW, msg(), setting::name, NULL, settings_ui_row::origin, PRODUCT_SETTING_URI, settings_ui::row, settings_ui_row::setting, setting_name(), and settings_ui::settings.
Referenced by main_loop().
|
static |
Draw instruction row.
ui | Settings UI |
Definition at line 317 of file settings_ui.c.
References clearmsg(), settings_ui_row::editing, INSTRUCTION_PAD, INSTRUCTION_ROW, msg(), settings_ui_row::origin, settings_ui::row, and settings_ui::settings.
Referenced by main_loop().
|
static |
Draw the current block of setting rows.
ui | Settings UI |
Definition at line 337 of file settings_ui.c.
References clearmsg(), color_set, jump_scroller::count, CPAIR_NORMAL, CPAIR_SEPARATOR, draw_setting_row(), jump_scroller::first, jump_scroll_is_first(), jump_scroll_is_last(), mvaddstr(), NULL, settings_ui::scroll, select_setting_row(), SETTINGS_LIST_COL, SETTINGS_LIST_ROW, and SETTINGS_LIST_ROWS.
Referenced by main_loop(), and select_settings().
|
static |
Select settings block.
ui | Settings UI |
settings | Settings block |
Definition at line 366 of file settings_ui.c.
References jump_scroller::count, jump_scroller::current, draw_setting_rows(), draw_title_row(), jump_scroller::first, jump_scroller::rows, settings_ui::scroll, select_setting_row(), settings_ui::settings, SETTINGS_LIST_ROWS, and settings_target().
Referenced by main_loop().
|
static |
Definition at line 379 of file settings_ui.c.
References alert(), ALERT_ROW, assert(), color_set, CPAIR_EDIT, CPAIR_NORMAL, CPAIR_SELECT, CR, CTRL_C, CTRL_D, CTRL_X, jump_scroller::current, curs_set(), delete_setting(), draw_info_row(), draw_instruction_row(), draw_setting_row(), draw_setting_rows(), draw_widget(), edit_setting(), settings_ui_row::editbox, settings_ui_row::editing, getkey(), jump_scroll(), jump_scroll_key(), jump_scroll_move(), key, LF, memset(), move(), setting::name, NULL, rc, settings_ui::row, save_setting(), settings_ui::scroll, select_setting_row(), select_settings(), settings_ui_row::setting, settings_ui_row::settings, settings_ui::settings, strerror(), and edit_box::widget.
Referenced by settings_ui().
int settings_ui | ( | struct settings * | settings | ) |
Definition at line 485 of file settings_ui.c.
References color_set, CPAIR_NORMAL, curs_set(), endwin(), erase(), initscr(), main_loop(), NULL, rc, and start_color.