C-Menu 0.2.9
A User Interface Toolkit
Loading...
Searching...
No Matches
menu.h
Go to the documentation of this file.
1/** @file menu.h
2 * @brief Menu data structures, enums, types, end external declarations
3 * @author Bill Waller
4 * Copyright (c) 2025
5 * MIT License
6 * billxwaller@gmail.com
7 * @date 2026-02-09
8 */
9
10#ifndef _MENU_H
11#define _MENU_H 1
12
13#include <cm.h>
14
15#ifndef _COMMON_H
16typedef struct Init Init;
17#endif
18
19#define MAX_MENU_LINES 256 /** Maximum number of menu lines in a menu */
20
21/**< Menu line types */
22typedef enum { MT_NULL = 0x320,
24 MT_CHOICE } MenuLineType;
25
26/**< Menu Actions */
27typedef enum {
28 MA_NEW = 350,
33} MenuAction;
34
35/**< Menu command types */
36typedef enum {
37 CT_NULL = 0x396,
53} MenuCommandType;
54
55/** @struct Line
56 @brief The Line strutures are attached to the Menu main structure */
57typedef struct {
58
59 void *ui_runtime; /**< A pointer to the UI runtime structure, which may be used to
60 access information about the current state of the UI,
61 such as variables, settings, or other data that may be
62 needed for processing the menu line or executing its
63 command, used to provide context and information for
64 processing the menu line and executing its associated
65 command */
66 void *ui_surface; /**< A pointer to the UI surface structure, which may be used to
67 access information about the current state of the UI
68 surface, such as dimensions, colors, or other properties
69 that may be needed for processing the menu line or
70 executing its command, used to provide context and
71 information for processing the menu line and executing
72 its associated command */
73
74 unsigned int type; /**< The type of menu line, e.g. MT_TEXT for a text line,
75 MT_CHOICE for a choice line */
76 char *raw_text; /**< The raw text of the menu line, as read from the menu
77 description file, before processing any variables or
78 formatting */
79 char *choice_text; /**< The formatted text of the menu line, after
80 processing any variables and formatting, used for
81 display purposes */
82 char choice_letter; /**< The letter that the user can press to select this
83 menu line, if it is a choice line, used for selection
84 purposes */
85 int letter_pos; /**< The position of the choice letter in the text, for
86 highlighting purposes, used to determine where to
87 highlight the choice letter in the menu display */
88 unsigned int
89 command_type; /**< The type of command associated with this menu line,
90 e.g. CT_RETURNMAIN for a command that returns to the
91 main menu, CT_EXEC for a command that executes a
92 program, CT_HELP for a command that displays help
93 information, etc., used to determine what action to
94 take when this menu line is selected */
95 char *command_str; /**< The command string associated with this menu line,
96 which may be a command to execute, a menu to display,
97 a form to show, etc., depending on the command type,
98 used to determine the specific action to take when
99 this menu line is selected */
100} Line;
101
102/** @struct Menu
103 @brief The Menu structure is the main data structure for the menu
104 application, containing all the information about the menu, its lines, and
105 its display properties */
106typedef struct {
107 int fg_clr_idx; /**< The foreground color for the menu display, used to
108 determine the color of the text and other elements in the
109 menu display */
110 int bg_clr_idx; /** <The background color for the menu display, used to
111 determine the color of the background in the menu display
112 */
113 int bo_clr_idx; /**< The color for the box around the menu, used to
114 determine the color of the box in the menu display */
115 int lines; /**< The number of lines for the menu window size, used to
116 determine the height of the menu display */
117 int cols; /**< The number of columns for the menu window size, used to
118 determine the width of the menu display */
119 int begy; /**< The screen line for the upper left corner of the menu window,
120 used to determine the vertical position of the menu display on
121 the screen */
122 int begx; /**< The screen column for the upper left corner of the menu
123 window, used to determine the horizontal position of the menu
124 display on the screen */
125 WINDOW *win; /**< The ncurses window structure for the menu display, used to
126 manage the display of the menu on the screen and handle user
127 input */
128 WINDOW *box; /**< The ncurses window structure for the box around the menu,
129 used to manage the display of the box around the menu on the
130 screen */
131 char title[MAXLEN]; /**< The title to display on the top line of the box
132 window, used to provide a title or header for the
133 menu display */
134 int argc; /**< The number of arguments on the command line, used to
135 determine how many arguments were passed to the menu
136 application when it was executed */
137 char **argv; /**< The argument vector from the command line, used to access
138 the specific arguments passed to the menu application when
139 it was executed */
140 char mapp_spec[MAXLEN]; /**< The menu application description file spec,
141 which may be a file name or a fully qualified
142 path to a file, used to specify the location of
143 the menu description file that contains the
144 information about the menu lines and their
145 properties */
146 char help_spec[MAXLEN]; /**< The menu application help file spec, which may
147 be a file name or a fully qualified path to a
148 file, used to specify the location of the help
149 file that contains the information about the menu
150 application and how to use it */
151 char provider_cmd[MAXLEN]; /**< The provider command, which can be executed
152 in the background to provide dynamic content
153 for a program called by the menu application,
154 used to specify a command that can be run in
155 the background to generate dynamic content for
156 the menu display or for a program that is
157 called by the menu application */
159 [MAXLEN]; /**< The receiver command, which can be executed in the
160 background to process the output of a program called by the
161 menu application, used to specify a command that can be run
162 in the background to process the output of a program that
163 is called by the menu application, such as parsing the
164 output and updating the menu display or performing some
165 other action based on the output */
166 char cmd[MAXLEN]; /**< A command that can be executed in the foreground,
167 possibly taking control of the screen, by the menu
168 application, such as an editor or other program that is
169 called by the menu application, used to specify a
170 command that can be run in the foreground when selected
171 from the menu, which may take control of the screen and
172 require user interaction */
173 bool f_mapp_spec; /**< A flag to indicate whether the menu application
174 description file has been verified, used to indicate
175 whether the menu description file specified by
176 mapp_spec has been successfully verified and can be
177 used to populate the menu lines and their properties */
178 bool f_help_spec; /**< A flag to indicate whether the menu application help
179 file has been verified, used to indicate whether the
180 help file specified by help_spec has been successfully
181 verified and can be used to provide help information
182 for the menu application */
183 bool f_provider_cmd; /**< A flag to indicate whether the provider command
184 has been verified, used to indicate whether the
185 provider command specified by provider_cmd has been
186 successfully verified and can be executed in the
187 background to provide dynamic content for the menu
188 display or for a program called by the menu
189 application */
190 bool f_receiver_cmd; /**< A flag to indicate whether the receiver command
191 has been verified, used to indicate whether the
192 receiver command specified by receiver_cmd has been
193 successfully verified and can be executed in the
194 background to process the output of a program called
195 by the menu application */
196 bool f_cmd; /**< A flag to indicate whether the foreground command has been
197 verified, used to indicate whether the command specified by
198 cmd has been successfully verified and can be executed in the
199 foreground when selected from the menu */
200 int choice_max_len; /**< The longest choice text string of all menu lines,
201 used to determine the width of the menu window,
202 calculated based on the length of the choice_text for
203 all menu lines and used to ensure that the menu
204 window is wide enough to accommodate the longest
205 choice text without truncation or wrapping */
206 int text_max_len; /**< The longest text string of all menu lines, used to
207 determine the width of the menu window, calculated
208 based on the length of the raw_text for all menu lines
209 and used to ensure that the menu window is wide enough
210 to accommodate the longest text without truncation or
211 wrapping */
212 int item_count; /**< The number of menu lines in this menu, used to
213 determine how many lines are currently defined in the
214 menu and to manage the array of menu lines */
215 int line_idx; /**< The index of the currently selected menu line, used for
216 highlighting and selection purposes, updated based on user
217 input to indicate which menu line is currently selected and
218 should be highlighted in the menu display */
219 Line *line[MAX_MENU_LINES]; /**< An array of pointers to the menu line
220 structures in this menu, used to store the
221 information about each menu line, including
222 its type, text, choice letter, command type,
223 and command string, and to manage the menu
224 lines in the menu display */
225} Menu;
226// extern Menu *menu;
227
228extern unsigned int get_command_type(char *);
229extern void free_menu_line(Line *);
230#endif
void form_help(char *)
int form_yx_to_fidx(Form *, int, int)
#define FIELD_MAXLEN
Definition form.h:18
@ FF_DECIMAL_INT
Definition form.h:50
@ FF_STRING
Definition form.h:48
@ FF_HEX_INT
Definition form.h:52
@ FF_YYYYMMDD
Definition form.h:61
@ FF_HHMMSS
Definition form.h:63
@ FF_CURRENCY
Definition form.h:58
@ FF_FLOAT
Definition form.h:54
@ FF_INVALID
Definition form.h:68
@ FF_DOUBLE
Definition form.h:56
@ FF_APR
Definition form.h:65
@ FA_END
Definition form.h:42
@ FA_ACCEPT
Definition form.h:29
@ FA_EDIT
Definition form.h:40
@ FA_CALC
Definition form.h:37
@ FA_HELP
Definition form.h:31
@ FA_REFUSE
Definition form.h:35
@ FA_CANCEL
Definition form.h:33
@ FA_CONTINUE
Definition form.h:27
char ff_tbl[][26]
Definition fields.c:26
int form_read_description(Form *)
void display_field(Form *, cchar_t *, int, int)
Definition fields.c:369
void form_display_chyron(Form *)
#define FIELD_MAXCNT
Definition form.h:19
int cmd_processor(Init *)
@ OT_INT
Definition common.h:85
@ OT_BOOL
Definition common.h:86
@ OT_HEX
Definition common.h:87
@ OT_STRING
Definition common.h:84
int popup_ckeys()
Display Curses Keys Responds to curses keys and mouse events, displaying the key code and description...
Definition curskeys.c:23
int process_config_file(char *, Init *)
Definition init.c:631
@ FORM
Definition common.h:77
@ MENU
Definition common.h:79
@ VIEW
Definition common.h:76
@ PICK
Definition common.h:78
int popup_form(Init *, int, char **, int, int)
instantiate a form popup window
Definition popups.c:112
@ OG_FILES
Definition common.h:92
@ OG_DIRS
Definition common.h:93
@ OG_SPECS
Definition common.h:94
@ OG_MISC
Definition common.h:95
@ OG_FLAGS
Definition common.h:97
@ OG_PARMS
Definition common.h:96
@ OG_COL
Definition common.h:98
void destroy_view_win(Init *)
Definition init_view.c:318
int popup_menu(Init *, int, char **, int, int)
instantiate a menu popup window
Definition popups.c:53
ViewStack view_stack
Definition init_view.c:34
int popup_view(Init *, int, char **, int, int, int, int)
instantiate a view popup window
Definition popups.c:144
int popup_pick(Init *, int, char **, int, int)
instantiate a pick popup window
Definition popups.c:83
char minitrc[MAXLEN]
int init_cnt
Definition mem.c:44
void destroy_line_table(View *)
cchar_t CC_YELLOW
Definition dwin.c:216
volatile sig_atomic_t sig_received
Definition sig.c:31
size_t rtrim(char *)
Trims trailing spaces from string s in place.
Definition futil.c:338
const wchar_t bw_chk
Definition dwin.c:152
bool handle_signal(sig_atomic_t)
int cp_box
Definition dwin.c:179
void win_Toggle_Attrs()
#define MAXWIN
Definition cm.h:37
const wchar_t bw_rt
Definition dwin.c:145
int cp_brackets
Definition dwin.c:190
const wchar_t bw_ho
Definition dwin.c:138
int cp_nt
Definition dwin.c:183
int n_cols
int mbegx
int cp_nt_hl
Definition dwin.c:185
int cp_ind
Definition dwin.c:180
cchar_t CC_DATA2
void curskeys(WINDOW *)
int clr_pair_cnt
Definition dwin.c:197
void sig_shell_mode()
WINDOW * win_win[MAXWIN]
Definition dwin.c:52
int cmenu_log_fd
Definition futil.c:54
cchar_t tl
Definition cm.h:501
void get_rfc3339_s(char *, size_t)
bool f_have_shell_tioctl
Definition scriou.c:24
void init_stdscr()
cchar_t chk
Definition cm.h:631
cchar_t CC_DATA1
cchar_t la
Definition cm.h:631
const wchar_t bw_tl
Definition dwin.c:140
const wchar_t bw_ua
Definition dwin.c:149
cchar_t CC_FILL_CHAR
Definition dwin.c:211
char em1[MAXLEN]
Definition dwin.c:176
PANEL * panel_win2[MAXWIN]
Definition dwin.c:55
cchar_t ua
Definition cm.h:631
int dbgfd
void mouse_getch(int *, int *, int *, int *)
int display_ok_message(char *)
int cp_title
Definition dwin.c:182
@ F_REG
Definition cm.h:239
@ F_BLK
Definition cm.h:237
@ F_FIFO
Definition cm.h:232
@ F_F0
Definition cm.h:231
@ F_F3
Definition cm.h:238
@ F_SOCK
Definition cm.h:243
@ F_CHR
Definition cm.h:233
@ F_F5
Definition cm.h:242
@ F_F1
Definition cm.h:234
@ F_DIR
Definition cm.h:235
@ F_UNKNOWN
Definition cm.h:245
@ F_F2
Definition cm.h:236
@ F_F4
Definition cm.h:240
@ F_LNK
Definition cm.h:241
@ F_F6
Definition cm.h:244
int tty_fd
Definition dwin.c:219
int cp_yellow
Definition dwin.c:193
#define KEY_ALTF0
Definition cm.h:502
int cp_default
WINDOW * win_win2[MAXWIN]
Definition dwin.c:51
cchar_t CC_DATA3
int clr_cnt
Definition dwin.c:195
void destroy_win(WINDOW *)
bool f_curses_open
Definition sig.c:33
cchar_t CC_BLUE
Definition dwin.c:217
int enter_option()
cchar_t da
Definition cm.h:631
void resize_panel(PANEL *, int, int, int, int)
#define CHYRON_KEYS
Definition cm.h:333
struct termios shell_tioctl curses_tioctl
Definition scriou.c:34
void dump_opts()
cchar_t br
Definition cm.h:501
WINDOW * mouse_win
Definition dwin.c:118
const wchar_t bw_tr
Definition dwin.c:141
int mg_line
cchar_t CC_NT
Definition dwin.c:204
cchar_t rs
Definition cm.h:501
char * stdio_names(char *, char *)
Definition futil.c:1064
const wchar_t bw_tt
void write_log(char *)
cchar_t lt
Definition cm.h:631
unsigned char uchar
Definition cm.h:648
int clr_pair_idx
Definition dwin.c:196
int cp_bold
cchar_t CC_GREEN
Definition dwin.c:215
cchar_t ran
Definition cm.h:631
bool verify_dir_q(char *, int)
const wchar_t bw_ran
Definition dwin.c:151
int cp_blue
Definition dwin.c:194
cchar_t CC_IND
Definition dwin.c:200
cchar_t CC_BRKTL
Definition cm.h:494
const wchar_t bw_sp
Definition dwin.c:146
String mk_string(size_t)
Create a String struct with a dynamically allocated string.
Definition futil.c:1543
int border_draw(WINDOW *)
Definition dwin.c:1236
const wchar_t bw_ra
Definition dwin.c:147
bool construct_file_spec(char *, char *, char *, char *, char *, int)
cchar_t CC_BOX
Definition dwin.c:199
int mcols
const wchar_t bw_cr
bool strnfill(char *, char, int)
const wchar_t bw_da
Definition dwin.c:150
cchar_t sp
Definition cm.h:631
cchar_t CC_TITLE
Definition dwin.c:203
int cp_red
Definition dwin.c:191
int mg_action
FILE * cmenu_log_fp
const wchar_t bw_lt
Definition dwin.c:144
#define XTERM_256COLOR
Definition cm.h:504
SCREEN * screen
Definition dwin.c:42
cchar_t bl
Definition cm.h:501
const wchar_t bw_la
Definition dwin.c:148
const wchar_t bw_bt
int click_x
Definition dwin.c:81
int cp_nt_hl_rev
Definition dwin.c:186
#define CHYRON_KEY_MAXLEN
Definition cm.h:330
bool verify_file_q(char *, int)
int src_line
Definition dwin.c:172
bool f_debug
cchar_t CC_RED
Definition dwin.c:214
char * src_name
Definition dwin.c:173
int box2_new(int, int, int, int, char *)
#define SCR_COLS
Definition cm.h:49
int cp_highlight
void dump_opts_by_use(char *, char *)
int open_log(char *)
int cp_cmdln_bg
int wait_timeout
Definition futil.c:152
PANEL * panel_win[MAXWIN]
Definition dwin.c:56
int win_attr_even
const wchar_t bw_bl
Definition dwin.c:142
char stdio_names_str[MAXLEN]
Definition futil.c:134
char errmsg[]
Definition futil.c:138
int win_ptr
Definition dwin.c:164
@ LF_EXC_REGEX
Definition cm.h:205
@ LF_HIDE
Definition cm.h:203
@ LF_ISUID
Definition cm.h:215
@ LF_IRUSR
Definition cm.h:213
@ LF_ICASE
Definition cm.h:204
@ LF_ISGID
Definition cm.h:214
@ LF_EXEC
Definition cm.h:207
@ LF_REGEX
Definition cm.h:206
@ LF_USER
Definition cm.h:208
@ LF_IXUSR
Definition cm.h:211
@ LF_IWUSR
Definition cm.h:212
int mlines
@ CLR_CMDLN_BG
Definition cm.h:187
@ CLR_FILL_CHAR_BG
Definition cm.h:183
@ CLR_BOX_BG
Definition cm.h:177
@ CLR_FILL_CHAR_FG
Definition cm.h:182
@ CLR_FG
Definition cm.h:174
@ CLR_RED
Definition cm.h:158
@ CLR_NT_FG
Definition cm.h:188
@ CLR_BRACKETS_FG
Definition cm.h:180
@ CLR_YELLOW
Definition cm.h:160
@ CLR_IND_FG
Definition cm.h:178
@ CLR_BCYAN
Definition cm.h:171
@ CLR_TITLE_FG
Definition cm.h:196
@ CLR_WHITE
Definition cm.h:164
@ CLR_MAGENTA
Definition cm.h:162
@ CLR_BRACKETS_BG
Definition cm.h:181
@ CLR_NT_REV_BG
Definition cm.h:191
@ CLR_BLACK
Definition cm.h:157
@ CLR_BWHITE
Definition cm.h:172
@ CLR_LN_BG
Definition cm.h:185
@ CLR_NT_HL_REV_BG
Definition cm.h:195
@ CLR_BBLACK
Definition cm.h:165
@ CLR_LN_FG
Definition cm.h:184
@ CLR_NT_HL_FG
Definition cm.h:192
@ CLR_BBLUE
Definition cm.h:169
@ CLR_BGREEN
Definition cm.h:167
@ CLR_BYELLOW
Definition cm.h:168
@ CLR_BMAGENTA
Definition cm.h:170
@ CLR_BORANGE
Definition cm.h:173
@ CLR_NT_HL_BG
Definition cm.h:193
@ CLR_NT_HL_REV_FG
Definition cm.h:194
@ CLR_BG
Definition cm.h:175
@ CLR_BOX_FG
Definition cm.h:176
@ CLR_NT_BG
Definition cm.h:189
@ CLR_TITLE_BG
Definition cm.h:197
@ CLR_BRED
Definition cm.h:166
@ CLR_NCOLORS
Definition cm.h:198
@ CLR_BLUE
Definition cm.h:161
@ CLR_IND_BG
Definition cm.h:179
@ CLR_GREEN
Definition cm.h:159
@ CLR_CMDLN_FG
Definition cm.h:186
@ CLR_NT_REV_FG
Definition cm.h:190
@ CLR_CYAN
Definition cm.h:163
void destroy_box(WINDOW *)
bool f_restore_screen
@ LF_FIFO
Definition cm.h:220
@ LF_DIR
Definition cm.h:222
@ LF_UNKNOWN
Definition cm.h:227
@ LF_SOCK
Definition cm.h:226
@ LF_BLK
Definition cm.h:223
@ LF_LNK
Definition cm.h:225
@ LF_REG
Definition cm.h:224
@ LF_CHR
Definition cm.h:221
int exit_code
Definition dwin.c:159
FILE * tty_fp
Definition dwin.c:43
#define COLOR_LEN
Definition cm.h:283
int cp_green
Definition dwin.c:192
int click_y
Definition dwin.c:80
int win_attr_odd
#define min(x, y)
min macro evaluates two expressions, returning least result
Definition cm.h:89
int n_lines
cchar_t CC_REVERSE
char em0[MAXLEN]
Definition dwin.c:175
cchar_t CC_NT_HL
Definition dwin.c:207
cchar_t ts
Definition cm.h:501
int mg_col
bool f_have_curses_tioctl
Definition scriou.c:25
char em3[MAXLEN]
Definition dwin.c:178
cchar_t CC_CMDLN
Definition dwin.c:202
PANEL * panel_box[MAXWIN]
Definition dwin.c:57
void w_mouse_getch(WINDOW *, int *, int *, int *, int *)
char const colors_text[][10]
Color names for .minitrc overrides.
Definition dwin.c:133
int mbegy
bool str_to_bool(const char *)
Converts String to boolean true or false.
Definition futil.c:941
int rgb_clr_to_cube(int)
#define __atexit
This macro registers the end_pgm function to be called when the program exits.
Definition cm.h:297
int cp_ln_fg
const wchar_t bw_ve
Definition dwin.c:139
cchar_t CC_NT_REV
Definition dwin.c:205
int cp_nt_rev
Definition dwin.c:184
struct termios shell_out_tioctl curses_out_tioctl
Definition scriou.c:36
char * stdio_fdnames(char *, char *)
Definition futil.c:1089
int cp_cmdln_fg
cchar_t tr
Definition cm.h:501
void user_end()
int display_curses_keys()
cchar_t ra
Definition cm.h:631
cchar_t ls
Definition cm.h:631
int win_attr
Definition dwin.c:162
cchar_t rt
Definition cm.h:631
WINDOW * win_box[MAXWIN]
Definition dwin.c:53
int cp_fill_char
Definition dwin.c:189
#define Ctrl(c)
Definition cm.h:52
char fn[MAXLEN]
Definition dwin.c:174
char em2[MAXLEN]
Definition dwin.c:177
char * fill_field(char *, char *, char, int)
Definition futil.c:1748
const wchar_t bw_br
Definition dwin.c:143
void display_argv_error_msg(char *, char **)
struct termios shell_in_tioctl curses_in_tioctl
Definition scriou.c:35
int cp_ln_bg
cchar_t bs
Definition cm.h:501
cchar_t CC_BRKTR
Definition cm.h:495
cchar_t CC_LN
Definition dwin.c:201
struct termios shell_err_tioctl curses_err_tioctl
Definition scriou.c:37
cchar_t CC_NT_HL_REV
Definition dwin.c:206
int clr_idx
@ MT_TEXT
Definition menu.h:23
@ MT_CHOICE
Definition menu.h:24
@ MT_NULL
Definition menu.h:22
@ CT_PICK
Definition menu.h:46
@ CT_FORM
Definition menu.h:42
@ CT_DEXE
Definition menu.h:38
@ CT_UNDEFINED
Definition menu.h:52
@ CT_MENU
Definition menu.h:45
@ CT_RETURN
Definition menu.h:49
@ CT_TOGGLE
Definition menu.h:50
@ CT_HELP
Definition menu.h:40
@ CT_WRITE_CONFIG
Definition menu.h:51
@ CT_FORM_WRITE
Definition menu.h:44
@ CT_EXEC
Definition menu.h:39
@ CT_VIEW
Definition menu.h:47
@ CT_NULL
Definition menu.h:37
@ CT_ABOUT
Definition menu.h:41
@ CT_FORM_EXEC
Definition menu.h:43
@ CT_CKEYS
Definition menu.h:48
void free_menu_line(Line *)
@ MA_RETURN
Definition menu.h:29
@ MA_DISPLAY_MENU
Definition menu.h:30
@ MA_RESET_MENU
Definition menu.h:31
@ MA_NEW
Definition menu.h:28
@ MA_CONTINUE
Definition menu.h:32
#define MAX_MENU_LINES
Definition menu.h:19
UiSurface * ui_surface_win[MAXWIN]
Definition ui_ncurses.c:27
UiSurface * ui_surface_box[MAXWIN]
Definition ui_ncurses.c:26
UiSurface * ui_surface_win2[MAXWIN]
Definition ui_ncurses.c:28
int ui_bkgrnd(UiSurface *, const UiStyle *, const char *)
Definition ui_ncurses.c:330
int ui_bkgd_set(UiSurface *, const UiStyle *, const char *)
@ UI_KEY_F8
Definition ui_backend.h:85
@ UI_KEY_BACKSPACE
Definition ui_backend.h:63
@ UI_KEY_F9
Definition ui_backend.h:86
@ UI_KEY_TAB
Definition ui_backend.h:64
@ UI_KEY_F2
Definition ui_backend.h:79
@ UI_KEY_F7
Definition ui_backend.h:84
@ UI_KEY_DELETE
Definition ui_backend.h:75
@ UI_KEY_CHAR
Definition ui_backend.h:60
@ UI_KEY_MOUSE
Definition ui_backend.h:77
@ UI_KEY_F11
Definition ui_backend.h:88
@ UI_KEY_DOWN
Definition ui_backend.h:67
@ UI_KEY_F4
Definition ui_backend.h:81
@ UI_KEY_F3
Definition ui_backend.h:80
@ UI_KEY_HOME
Definition ui_backend.h:70
@ UI_KEY_F6
Definition ui_backend.h:83
@ UI_KEY_PGDN
Definition ui_backend.h:73
@ UI_KEY_PGUP
Definition ui_backend.h:72
@ UI_KEY_NONE
Definition ui_backend.h:59
@ UI_KEY_BTAB
Definition ui_backend.h:65
@ UI_KEY_END
Definition ui_backend.h:71
@ UI_KEY_F5
Definition ui_backend.h:82
@ UI_KEY_ESCAPE
Definition ui_backend.h:62
@ UI_KEY_LEFT
Definition ui_backend.h:68
@ UI_KEY_F1
Definition ui_backend.h:78
@ UI_KEY_ENTER
Definition ui_backend.h:61
@ UI_KEY_UP
Definition ui_backend.h:66
@ UI_KEY_F12
Definition ui_backend.h:89
@ UI_KEY_RESIZE
Definition ui_backend.h:76
@ UI_KEY_INSERT
Definition ui_backend.h:74
@ UI_KEY_RIGHT
Definition ui_backend.h:69
@ UI_KEY_F10
Definition ui_backend.h:87
@ UI_MOUSE_SCROLL_DOWN
Definition ui_backend.h:105
@ UI_MOUSE_PRESS
Definition ui_backend.h:101
@ UI_MOUSE_SCROLL_UP
Definition ui_backend.h:104
@ UI_MOUSE_NONE
Definition ui_backend.h:100
@ UI_MOUSE_DRAG
Definition ui_backend.h:103
@ UI_MOUSE_RELEASE
Definition ui_backend.h:102
@ UI_BORDER_ROUNDED
Definition ui_backend.h:119
@ UI_BORDER_ASCII
Definition ui_backend.h:117
@ UI_BORDER_LIGHT
Definition ui_backend.h:118
@ UI_BORDER_NONE
Definition ui_backend.h:116
#define TRUE
Definition iloan.c:19
#define FALSE
Definition iloan.c:18
#define MAXLEN
Definition curskeys.c:15
int cf_accept(WINDOW *win, char *accept_s, int flin, int fcol, int flen)
Accepts input for a field in a C-Menu window.
Definition cm_fields.c:51
bool f_erase_remainder
Definition cm_fields.c:39
struct termios shell_tioctl
Definition scriou.c:22
bool open_curses(SIO *)
Initialize NCurses and color settings.
Definition dwin.c:244
int border_title(WINDOW *, char *)
Draw a box with a title around the specified window.
Definition dwin.c:1327
int dxwgetch(WINDOW *, WINDOW *, WINDOW *, WINDOW *, WINDOW *, Chyron *, int)
Wrapper for wgetch that handles signals, mouse events, checks for clicks on the chyron line,...
Definition dwin.c:2180
int xwgetch(WINDOW *, Chyron *, int)
Wrapper for wgetch that handles signals, mouse events, checks for clicks on the chyron line,...
Definition dwin.c:2094
void restore_wins()
Restore all windows after a screen resize.
Definition dwin.c:1225
void win_del()
Delete the current window and its associated box window.
Definition dwin.c:1179
void check_panels(int)
Check and display the panels for a given window index.
Definition dwin.c:1090
void view_full_screen_resize(Init *)
Resize the full screen view and its components.
Definition init_view.c:140
void view_boxwin_resize(Init *)
Resize the current window and its box.
Definition init_view.c:346
int border_hsplit_text(WINDOW *, char *, int)
Draw a box with a separator line and text around the specified window.
Definition dwin.c:1289
int bare_box_new(int, int, int, int, char *)
Create a new window with optional box and title.
Definition dwin.c:981
int win_new(int, int)
Create a new window with specified dimensions and position.
Definition dwin.c:1037
int border_hsplit(WINDOW *, int)
Draw a box with a separator line around the specified window.
Definition dwin.c:1269
void win_init_attrs()
Initialize window attributes.
Definition dwin.c:226
void mvwaddstr_fill(WINDOW *, int, int, char *, int)
For lines shorter than their display area, fill the rest with spaces.
Definition dwin.c:1941
int box_new(int, int, int, int, char *)
Create a new window with optional box and title.
Definition dwin.c:967
int box_hsplit_new(int, int, int, int, int, char *)
Create a new window with optional box and title, and a second window inside it, split horizontally.
Definition dwin.c:925
int win2_new(int, int, int, int)
Create a new subwindow (win2) with specified dimensions and position.
Definition dwin.c:1066
int vgetch(WINDOW *, int)
Wrapper for wgetch that handles signals and mouse events, and accepts a single character answer.
Definition dwin.c:2258
void win_resize(int, int, char *)
Resize the current window and its box, and update the title.
Definition dwin.c:1128
void destroy_curses()
Gracefully shut down NCurses and restore terminal settings.
Definition dwin.c:670
void win_redraw(WINDOW *)
Redraw the specified window.
Definition dwin.c:1168
int win2_box_new(int, int, int, int, char *)
Create a new window with optional box and title, and a second window inside it.
Definition dwin.c:952
void initialize_local_colors(SIO *)
Initialize local color variables and color pairs based on SIO settings.
Definition dwin.c:320
void display_cmplx_str(WINDOW *, cchar_t *, int, int)
Display a complex character string on a window.
Definition dwin.c:857
RGB xterm256_idx_to_rgb(int)
Convert XTerm 256 color index to RGB.
Definition dwin.c:483
size_t str_to_cc(cchar_t *, const char *, attr_t, int, size_t)
Convert a multibyte string to an array of cchar_t complex characters.
Definition dwin.c:786
int clr_name_to_idx(char *)
Get color index from color name.
Definition dwin.c:1966
int rgb_to_curses_clr(RGB *)
Get color index for RGB color.
Definition dwin.c:432
size_t mk_cmplx_str(cchar_t *, char *, attr_t, int)
Convert a multibyte string to an array of cchar_t complex characters.
Definition dwin.c:828
bool init_clr_palette(SIO *)
Initialize color palette based on SIO settings.
Definition dwin.c:546
void apply_gamma(RGB *)
Apply gamma correction to RGB color.
Definition dwin.c:518
int rgb_to_xterm256_idx(RGB *)
Convert RGB color to XTerm 256 color index.
Definition dwin.c:461
cchar_t mkcc(int, attr_t, const char *)
Create a cchar_t with the specified color pair index.
Definition dwin.c:748
int get_clr_pair(int, int)
Get color pair index for foreground and background colors.
Definition dwin.c:401
WINDOW * message_win(char *)
Display a message in a window or print to stderr if curses is not available.
Definition dwin.c:1377
bool wait_destroy(Chyron *)
Destroy the waiting message window and chyron.
Definition dwin.c:1621
bool waitpid_with_timeout(pid_t, int)
Wait for a process to finish with a timeout and optional user cancellation.
Definition dwin.c:2033
bool action_disposition(char *eitle, char *action_str)
Display a simple action disposition message window or print to stderr.
Definition dwin.c:1651
int answer_yn(char *, char *, char *, char *)
Accept a single letter answer.
Definition dwin.c:1406
int wait_continue(WINDOW *, Chyron *, int)
Update the waiting message with remaining time and check for user input.
Definition dwin.c:1636
WINDOW * wait_mk_win(Chyron *, char *)
Display a popup waiting message.
Definition dwin.c:1589
int Perror(char *)
Display a simple error message window or print to stderr.
Definition dwin.c:1526
void abend(int, char *)
Abnormal program termination.
Definition dwin.c:2018
Chyron * wait_mk_chyron()
Create a Chyron struct for the waiting message.
Definition dwin.c:1576
int display_error(char *, char *, char *, char *)
Display an error message window or print to stderr.
Definition dwin.c:1467
bool is_set_chyron_key(Chyron *, int)
Check if function key label is set.
Definition dwin.c:1743
void set_chyron_key(Chyron *, int, char *, int)
Set chyron key with default color pair (cp_nt_rev).
Definition dwin.c:1783
void display_chyron(WINDOW *, Chyron *, int, int)
Display chyron on window.
Definition dwin.c:1892
Chyron * destroy_chyron(Chyron *chyron)
Destroy Chyron structure.
Definition dwin.c:1722
void activate_chyron_key(Chyron *, int)
Activate chyron key.
Definition dwin.c:1807
int get_chyron_key(Chyron *, int)
Get keycode from chyron.
Definition dwin.c:1917
void set_chyron_key_cp(Chyron *, int, char *, int, int)
Set chyron key with color pair (cp).
Definition dwin.c:1759
void compile_chyron(Chyron *)
construct the chyron string from the chyron structure
Definition dwin.c:1848
void activate_all_chyron_keys(Chyron *)
Deactivate chyron key.
Definition dwin.c:1816
void unset_chyron_key(Chyron *, int)
Unset chyron key.
Definition dwin.c:1798
void deactivate_all_chyron_keys(Chyron *)
Deactivate all chyron keys.
Definition dwin.c:1834
void deactivate_chyron_key(Chyron *, int)
Deactivate chyron key.
Definition dwin.c:1826
Chyron * new_chyron()
Create and initialize Chyron structure.
Definition dwin.c:1701
int fork_exec(char **)
Fork and exec a command.
Definition exec.c:126
int shell(char *)
Execute a shell command.
Definition exec.c:78
int full_screen_fork_exec(char **)
Execute a command in full screen mode.
Definition exec.c:46
int full_screen_shell(char *)
Execute a shell command in full screen mode.
Definition exec.c:62
int fork_detach_execvp(char **)
Fork, set new session ID, close files, and execute detached command.
Definition detach.c:29
int form_fmt_field(Form *, char *s)
Format field according to its format type.
Definition fields.c:444
int field_editor(Form *)
Accept input for a field.
Definition fields.c:55
void numeric(char *d, char *s)
Extract numeric characters from source string to destination string.
Definition fields.c:644
bool is_valid_date(int yyyy, int mm, int dd)
Check if a given date is valid, including leap years.
Definition fields.c:607
void left_justify(char *s)
Left justify string by removing leading spaces.
Definition fields.c:568
bool is_valid_time(int hh, int mm, int ss)
Check if a given time is valid.
Definition fields.c:628
int form_display_field_n(Form *, int)
Display field n.
Definition fields.c:362
void right_justify(char *, int)
Right justify string by removing trailing spaces and adding leadingspaces.
Definition fields.c:581
int form_display_field(Form *)
Display current field.
Definition fields.c:384
int form_desc_error(Form *, int, char *, char *)
Handle errors encountered while parsing the form description file, providing detailed error messages ...
int init_form(Init *, int, char **, int, int)
Initialize form data structure and parse description file.
Definition form_engine.c:61
int field_navigator(Form *)
Handle user input for field entry, allowing navigation between fields and looping until an exit actio...
bool locate_file_in_path(char *, char *)
Locates a file in the system PATH.
Definition futil.c:1287
size_t canonicalize_file_spec(char *)
Removes quotes and trims at first space.
Definition futil.c:1341
size_t strnz__cpy(char *, const char *, size_t)
safer alternative to strncpy
Definition futil.c:544
int destroy_argv(int argc, char **argv)
Deallocates memory allocated for argument strings in argv.
Definition futil.c:494
bool parse_local_timestamp(const char *, time_t *)
Parses an ISO 8601 timestamp string in local time and converts it to time_t.
Definition futil.c:280
bool trim_ext(char *, char *)
trims the file extension from "filename" and copies the result to "buf"
Definition futil.c:1016
bool stripz_quotes(char *)
removes leading and trailing double quotes if present
Definition futil.c:733
void write_cmenu_log(char *)
Write message to C-Menu log file with timestamp.
Definition futil.c:1685
size_t trim(char *)
Trims leading and trailing spaces from string s in place.
Definition futil.c:391
char * get_local_timestamp()
Returns the current local time as an ISO 8601 formatted string.
Definition futil.c:314
bool is_directory(const char *)
Checks if the given path is a directory.
Definition futil.c:1372
bool file_spec_path(char *, char *)
extracts the path component of a file specification
Definition futil.c:870
bool str_to_upper(char *)
Converts a string to uppercase.
Definition futil.c:522
bool dir_name(char *, char *)
Returns the directory name of a file specification.
Definition futil.c:1149
double str_to_double(char *)
converts string to double
Definition futil.c:929
bool str_to_lower(char *)
Converts a string to lowercase.
Definition futil.c:508
size_t strnz(char *, size_t)
terminates string at New Line, Carriage Return, or max_len
Definition futil.c:615
size_t ssnprintf(char *, size_t, const char *,...)
ssnprintf was designed to be a safer alternative to snprintf.
Definition futil.c:420
bool expand_tilde(char *, int)
Replaces "~/" in string with the user's home directory.
Definition futil.c:970
bool strip_quotes(char *)
removes leading and trailing double quotes if present
Definition futil.c:718
bool is_valid_regex(const char *)
Checks if the given regular expression pattern is valid.
Definition futil.c:1400
void open_cmenu_log()
Open new C-Menu log file.
Definition futil.c:1667
char * strnz_dup(char *, size_t)
Allocates memory for and duplicates string s up to length l or until line feed or carriage return.
Definition futil.c:654
bool file_spec_name(char *, char *)
extracts the file name component of a file specification
Definition futil.c:897
size_t strip_ansi(char *, char *)
Strips ANSI SGR escape sequences (ending in 'm') from string s to d.
Definition futil.c:829
bool mk_dir(char *dir)
If directory doesn't exist, make it.
Definition futil.c:1320
int wccp_to_str(wchar_t, uint8_t *)
Converts a Unicode code point to a UTF-8 encoded string.
Definition dwin.c:871
size_t strnz__cat(char *, const char *, size_t)
safer alternative to strncat
Definition futil.c:573
bool str_subc(char *, char *, char, char *, int)
Replaces "ReplaceChr" in "s" with "Withstr" in "d" won't copy more than "l" bytes to "d" Replaces all...
Definition futil.c:690
bool get_argp_doc_by_name(char *comment, const struct argp_option *, const char *)
Retrieves the documentation string for a given key name from an argp options array.
Definition futil.c:176
bool verify_file(char *, int)
Verifies that the file specified by "in_spec" exists and is accessible with the permissions specified...
Definition futil.c:1240
char * rep_substring(const char *, const char *, const char *)
Replace all occurrences of "tgt_s" in "org_s" with "rep_s".
Definition futil.c:1440
bool is_symlink_to_dir(const char *)
Checks if the given path is a symbolic link to a directory.
Definition futil.c:1385
size_t strnlf(char *, size_t)
terminates string with line feed
Definition futil.c:633
int a_toi(char *, bool *)
a safer alternative to atoi() for converting ASCII strings to integers.
Definition futil.c:769
bool is_hex_str(char *, int)
Validates that a string consists of exactly len hexadecimal digits.
Definition futil.c:209
void write_cmenu_log_nt(char *)
Write message to C-Menu log file without timestamp.
Definition futil.c:1701
bool verify_dir(char *, int)
Verifies that the directory specified by "spec" exists and is accessible with the permissions specifi...
Definition futil.c:1189
bool chrep(char *, char, char)
Replaces all occurrences of old_chr in s with new_chr in place.
Definition futil.c:750
bool base_name(char *, char *)
Returns the base name of a file specification.
Definition futil.c:1123
char * get_ip_addresses(char *, int)
Retrieves the IP addresses of the local machine and formats them into a string.
Definition futil.c:354
bool normalize_file_spec(char *)
replace backslashes with forward lashes
Definition futil.c:853
char * format_local_timestamp(time_t, char *, size_t)
Formats a time_t as an ISO 8601 string in local time.
Definition futil.c:303
bool is_newer(char *, char *)
Checks if the file specified by "fut" is newer than the file specified by "control".
Definition futil.c:160
char * fdname(int, char *)
Retrieves the file path associated with a given file descriptor.
Definition futil.c:1054
int str_to_args(char **, char *, int)
Converts a string into an array of argument strings.
Definition futil.c:440
char * get_user_str(char *, size_t)
Retrieves the current user's name and UID, and formats it into a string.
Definition futil.c:327
bool trim_path(char *)
Trims trailing spaces and slashes from directory path in place.
Definition futil.c:988
unsigned long a_to_ul(const char *)
Converts a string to an unsigned long long integer, with support for suffixes K, M,...
Definition futil.c:793
bool unstr_hex_clr(char *, char *)
Validates that a string is a hex color code in the format "#RRGGBB".
Definition futil.c:232
char * iso8601_time(char *, int, time_t *, bool)
Formats a struct tm as an ISO 8601 string.
Definition futil.c:264
size_t string_cpy(String *, const String *)
Copy src String to dest String, allocating additional memory for dest String if necessary.
Definition futil.c:1577
String to_string(const char *)
String functions provide a simple string library to facilitate string manipulation in C,...
Definition futil.c:1523
size_t string_ncpy(String *, const String *, size_t)
copies up to n characters from src String to dest String, allocating additional memory for dest Strin...
Definition futil.c:1634
size_t string_cat(String *, const String *)
Concatenates src String to dest String, allocating additional memory for dest String if necessary.
Definition futil.c:1594
String free_string(String)
Free the dynamically allocated String.
Definition futil.c:1562
size_t string_ncat(String *, const String *, size_t)
Concatenates up to n characters from src String to dest String, allocating additional memory for dest...
Definition futil.c:1613
int segmentation_fault()
Function to intentionally cause a segmentation fault for testing purposes.
Definition futil.c:1659
int parse_opt_args(Init *, int, char **)
Parse command-line options and set Init struct values accordingly.
Definition init.c:559
bool derive_file_spec(char *, char *, char *)
Derive full file specification from directory and file name.
Definition init.c:1306
int write_config(Init *)
Write the current configuration to a file specified in init->minitrc.
Definition init.c:1049
void mapp_initialization(Init *, int, char **)
Main initialization function for MAPP - Menu Application.
Definition init.c:441
void zero_opt_args(Init *)
Initialize optional arguments in the Init struct to default values.
Definition init.c:574
void view_calc_boxwin_dimensions(Init *)
Calculate the dimensions and position of the box window for C-Menu View.
Definition init_view.c:362
int init_view_full_screen(Init *)
Initialize C-Menu View in full screen mode.
Definition init_view.c:49
int init_view_boxwin(Init *)
Initialize the C-Menu View in box window mode.
Definition init_view.c:194
void view_calc_full_screen_dimensions(Init *)
Calculate the dimensions for full screen mode.
Definition init_view.c:159
int view_init_input(Init *, char *)
Initialize the input for the C-Menu View.
Definition init_view.c:447
View * destroy_view(Init *init)
Destroy View structure.
Definition mem.c:356
Form * new_form(Init *, int, char **, int, int)
Create and initialize Form structure.
Definition mem.c:263
bool init_menu_files(Init *, int, char **)
Initialize Menu file specifications.
Definition mem.c:502
bool verify_spec_arg(char *, char *, char *, char *, int)
Verify file specification argument.
Definition mem.c:380
Init * new_init(int, char **)
Create and initialize Init structure.
Definition mem.c:71
Menu * new_menu(Init *, int, char **, int, int)
Create and initialize Menu structure.
Definition mem.c:145
Menu * destroy_menu(Init *init)
Destroy Menu structure.
Definition mem.c:166
Form * destroy_form(Init *init)
Destroy Form structure.
Definition mem.c:286
View * new_view(Init *)
Create and initialize View structure.
Definition mem.c:310
Pick * new_pick(Init *, int, char **, int, int)
Create and initialize Pick structure.
Definition mem.c:197
Init * destroy_init(Init *init)
Destroy Init structure.
Definition mem.c:106
Pick * destroy_pick(Init *init)
Destroy Pick structure.
Definition mem.c:236
unsigned int menu_engine(Init *)
The main loop of the menu system.
Definition menu_engine.c:38
unsigned int get_command_type(char *)
Get command type from command string.
unsigned int parse_menu_description(Init *)
Parse menu description file and create Menu.
int init_pick(Init *, int, char **, int, int)
Initializes pick structure and opens pick input file or pipe.
Definition pick_engine.c:66
int pick_engine(Init *)
Initializes pick interface, calculates window size and position, and enters picker loop.
int open_pick_win(Init *)
Initializes the pick window based on the parameters specified in the Pick structure.
bool capture_shell_tioctl()
capture_shell_tioctl() - capture shell terminal settings
Definition scriou.c:43
char di_getch()
get single character from terminal in raw mode
Definition scriou.c:148
bool restore_curses_tioctl()
restore_curses_tioctl() - restore curses terminal settings
Definition scriou.c:81
bool capture_curses_tioctl()
capture_curses_tioctl() - capture curses terminal settings
Definition scriou.c:68
bool mk_raw_tioctl(struct termios *)
mk_raw_tioctl() - set terminal to raw mode
Definition scriou.c:126
bool set_sane_tioctl(struct termios *)
set_sane_tioctl() - set terminal to sane settings for C-MENU
Definition scriou.c:95
bool restore_shell_tioctl()
restore_shell_tioctl() - restore shell terminal settings
Definition scriou.c:56
void sig_dfl_mode()
Set signal handlers to default behavior.
Definition sig.c:42
void signal_handler(int)
Signal handler for interrupt signals.
Definition sig.c:95
void sig_prog_mode()
Set up signal handlers for interrupt signals.
Definition sig.c:62
int view_file(Init *)
Start view.
bool view_stack_pop(ViewStack *, View *)
Pop Item from View Stack.
bool view_stack_peek(const ViewStack *, View *)
Peek at Top Item of View Stack.
void view_stack_free(ViewStack *)
Free View Stack.
int view_cmd_processor(Init *)
Main Command Processing Loop for View.
bool view_stack_init(ViewStack *, size_t)
Initialize View Stack.
void build_prompt(View *)
Build Prompt String.
bool view_stack_push(ViewStack *, View)
Push Item onto View Stack.
void initialize_line_table(View *)
Initialize Line Table.
void next_page(View *)
Advance to Next Page.
int pad_refresh(View *)
Refresh Pad and Line Number Window.
int display_prompt(View *, char *)
Display Command Line Prompt.
int ui_draw_vline(UiSurface *s, int y, int x, int len, const UiStyle *style)
Draw a vertical line on a UiSurface.This function uses the ncurses mvwvline function to draw a vertic...
UiSurface * ui_surface_new(UiRuntime *ui, UiSurface *parent, UiRect rect)
Create a new UI surface.
Definition ui_ncurses.c:37
int ui_surface_hide(UiSurface *s)
Hide a UI surface.
Definition ui_ncurses.c:155
int ui_surface_clear(UiSurface *s)
Clear the contents of a UI surface.
Definition ui_ncurses.c:119
int ui_draw_border(UiSurface *s, UiBorderKind kind, const UiStyle *style)
Draw a border around a UiSurface.This function draws a border around the UiSurface's window based on ...
void ui_get_screen_size(UiRuntime *ui, int *rows, int *cols)
Get the current screen size.
Definition ui_ncurses.c:257
int ui_render(UiRuntime *ui)
Render the UI by updating panels and refreshing the screen.
Definition ui_ncurses.c:272
void ui_surface_destroy(UiSurface *s)
Destroy a UI surface and free its resources.
Definition ui_ncurses.c:74
int ui_surface_show(UiSurface *s)
Show a UI surface.
Definition ui_ncurses.c:143
void ui_shutdown(UiRuntime *ui)
Shutdown the UI runtime and free its resources.
Definition ui_ncurses.c:240
int ui_clear_screen(UiRuntime *ui)
Clear the entire screen.
Definition ui_ncurses.c:284
int ui_surface_erase(UiSurface *s)
Erase the contents of a UI surface.
Definition ui_ncurses.c:131
UiRuntime * ui_init(const UiConfig *cfg)
Initialize NCUrses.
Definition ui_ncurses.c:180
int ui_surface_set_base(UiSurface *s, const UiStyle *style, uint32_t fill_ch)
Set the base fill character and style for a UiSurface.This function sets the background fill characte...
int ui_cursor_move(UiSurface *s, int y, int x)
Move the cursor within a UI surface.
Definition ui_ncurses.c:170
int ui_suspend(UiRuntime *ui)
Suspend the UI, restoring the terminal to its normal state.
Definition ui_ncurses.c:295
int ui_draw_box_title(UiSurface *s, int x, const UiStyle *style, const char *title)
Draw a title on the top border of a UiSurface.This function draws the provided title string at the sp...
int ui_draw_text_n(UiSurface *s, int y, int x, const UiStyle *style, const char *text, size_t n)
Draw a specified number of characters from a string on a UiSurface.This function is similar to ui_dra...
int ui_draw_text(UiSurface *s, int y, int x, const UiStyle *style, const char *text)
Draw text on a UiSurface at a specified position with a given style.This function uses the ncurses mv...
int ui_surface_set_style(UiSurface *s, const UiStyle *style)
Set the style for a UiSurface.This function applies the given UiStyle to the ncurses window associate...
int ui_resume(UiRuntime *ui)
Resume the UI after being suspended, reinitializing the screen.
Definition ui_ncurses.c:307
int ui_surface_move(UiSurface *s, int y, int x)
Move a UI surface to a new position.
Definition ui_ncurses.c:91
int ui_surface_resize(UiSurface *s, int rows, int cols)
Resize a UI surface to new dimensions.
Definition ui_ncurses.c:106
int ui_get_event(UiRuntime *ui, UiSurface *target, UiEvent *ev, int timeout_ms)
Retrieves an input event from the specified UI surface.
int ui_draw_hline(UiSurface *s, int y, int x, int len, const UiStyle *style)
Draw a horizontal line on a UiSurface.This function uses the ncurses mvwhline function to draw a hori...
int ui_cursor_enable(UiRuntime *ui, bool visible)
Enable or disable the cursor visibility.
Definition ui_ncurses.c:322
char title[MAXLEN]
Definition common.h:129
char mapp_data[MAXLEN]
Definition common.h:147
char minitrc[MAXLEN]
Definition common.h:173
bool f_out_spec
Definition common.h:170
char mapp_help[MAXLEN]
Definition common.h:148
int begx
Definition common.h:118
bool f_title
Definition common.h:165
char chyron_s[MAXLEN]
Definition common.h:128
SIO * sio
Definition common.h:114
int pick_cnt
Definition common.h:187
bool f_cmd_all
Definition common.h:164
Form * form
Definition common.h:184
char in_spec[MAXLEN]
Definition common.h:167
char cmd_all[MAXLEN]
Definition common.h:123
bool f_mapp_help
Definition common.h:156
bool f_mapp_msrc
Definition common.h:157
int argc
Definition common.h:130
bool f_cmd
Definition common.h:163
int prompt_type
Definition common.h:126
char about_fn[MAXLEN]
Definition common.h:174
char mapp_msrc[MAXLEN]
Definition common.h:149
int cols
Definition common.h:116
int menu_cnt
Definition common.h:183
int tab_stop
Definition common.h:180
bool f_mapp_home
Definition common.h:153
bool f_erase_remainder
Definition common.h:141
bool f_mapp_data
Definition common.h:154
bool f_read_theme
Definition common.h:142
bool f_mapp_desc
Definition common.h:160
char mapp_home[MAXLEN]
Definition common.h:146
bool f_mapp_user
Definition common.h:158
char prompt_str[MAXLEN]
Definition common.h:125
char fill_char[4]
Definition common.h:145
bool f_squeeze
Definition common.h:137
int begy
Definition common.h:117
char parent_cmd[MAXLEN]
Definition common.h:124
char mapp_spec[MAXLEN]
Definition common.h:175
char receiver_cmd[MAXLEN]
Definition common.h:121
int h_shift
Definition common.h:181
bool f_multiple_cmd_args
Definition common.h:139
int select_max
Definition common.h:178
bool f_ln
Definition common.h:143
bool f_mapp_spec
Definition common.h:155
char provider_cmd[MAXLEN]
Definition common.h:120
char out_spec[MAXLEN]
Definition common.h:168
bool f_strip_ansi
Definition common.h:136
View * view
Definition common.h:188
bool p_view_files
Definition common.h:134
Menu * menu
Definition common.h:182
bool f_at_end_remove
Definition common.h:135
int view_cnt
Definition common.h:189
char brackets[3]
Definition common.h:144
bool f_ignore_case
Definition common.h:133
char ** argv
Definition common.h:131
int lines
Definition common.h:115
char mapp_user[MAXLEN]
Definition common.h:150
char cmd[MAXLEN]
Definition common.h:122
char mapp_theme[MAXLEN]
Definition common.h:151
int optind
Definition common.h:132
bool f_help_spec
Definition common.h:166
bool f_receiver_cmd
Definition common.h:162
bool f_provider_cmd
Definition common.h:161
int form_cnt
Definition common.h:185
char help_spec[MAXLEN]
Definition common.h:176
char editor[MAXLEN]
Definition common.h:171
Pick * pick
Definition common.h:186
bool f_in_spec
Definition common.h:169
char menuapp[MAXLEN]
Definition common.h:172
int dd
Definition cm.h:58
int yyyy
Definition cm.h:56
int mm
Definition cm.h:57
int ss
Definition cm.h:64
int mm
Definition cm.h:63
int hh
Definition cm.h:62
char text[CHYRON_KEY_MAXLEN]
Definition cm.h:337
int end_pos
Definition cm.h:340
int cp
Definition cm.h:341
int keycode
Definition cm.h:339
bool active
Definition cm.h:336
int l
Definition cm.h:348
cchar_t cmplx_buf[MAXLEN]
Definition cm.h:347
char s[MAXLEN]
Definition cm.h:346
ChyronKey * key[CHYRON_KEYS]
Definition cm.h:345
int r
Definition cm.h:382
int b
Definition cm.h:382
int g
Definition cm.h:382
int pair_id
Definition cm.h:428
int fg
Definition cm.h:426
int bg
Definition cm.h:427
char * s
Definition cm.h:748
size_t l
Definition cm.h:749
Arg ** v
Definition cm.h:755
size_t n
Definition cm.h:757
size_t l
Definition cm.h:764
char * s
Definition cm.h:763
size_t l
allocated length
Definition cm.h:773
wchar_t * s
Definition cm.h:772
size_t l
Definition cm.h:785
cchar_t * s
Definition cm.h:784
char nt_hl_rev_bg[COLOR_LEN]
Definition cm.h:852
double green_gamma
Definition cm.h:807
char nt_rev_bg[COLOR_LEN]
Definition cm.h:846
char ln_fg[COLOR_LEN]
Definition cm.h:839
int cp_nt_hl_rev
Definition cm.h:873
char black[COLOR_LEN]
Definition cm.h:810
FILE * stdout_fp
Definition cm.h:857
char title_bg[COLOR_LEN]
Definition cm.h:854
double blue_gamma
Definition cm.h:808
int clr_idx
Definition cm.h:866
char bred[COLOR_LEN]
Definition cm.h:820
char yellow[COLOR_LEN]
Definition cm.h:813
int clr_cnt
Definition cm.h:864
char nt_hl_bg[COLOR_LEN]
Definition cm.h:848
int stdout_fd
Definition cm.h:861
char nt_hl_fg[COLOR_LEN]
Definition cm.h:847
char cmdln_bg[COLOR_LEN]
Definition cm.h:842
char abg[COLOR_LEN]
Definition cm.h:828
int stderr_fd
Definition cm.h:862
int cp_ln
Definition cm.h:879
int cp_box
Definition cm.h:874
FILE * stdin_fp
Definition cm.h:856
char ind_fg[COLOR_LEN]
Definition cm.h:833
char bcyan[COLOR_LEN]
Definition cm.h:825
char borange[COLOR_LEN]
Definition cm.h:827
double red_gamma
Definition cm.h:806
char red[COLOR_LEN]
Definition cm.h:811
char nt_fg[COLOR_LEN]
Definition cm.h:843
FILE * tty_fp
Definition cm.h:859
char magenta[COLOR_LEN]
Definition cm.h:815
char ln_bg[COLOR_LEN]
Definition cm.h:840
char bgreen[COLOR_LEN]
Definition cm.h:821
char nt_rev_fg[COLOR_LEN]
Definition cm.h:845
char brackets_fg[COLOR_LEN]
Definition cm.h:835
char fill_char_fg[COLOR_LEN]
Definition cm.h:837
int cp_bold
Definition cm.h:876
char byellow[COLOR_LEN]
Definition cm.h:822
char bwhite[COLOR_LEN]
Definition cm.h:826
char box_bg[COLOR_LEN]
Definition cm.h:832
char fg[COLOR_LEN]
Definition cm.h:829
char cyan[COLOR_LEN]
Definition cm.h:816
int cp_ind
Definition cm.h:875
int cp_default
Definition cm.h:868
char brackets_bg[COLOR_LEN]
Definition cm.h:836
FILE * stderr_fp
Definition cm.h:858
char box_fg[COLOR_LEN]
Definition cm.h:831
char tty_name[MAXLEN]
Definition cm.h:855
int cp_highlight
Definition cm.h:878
int cp_cmdln
Definition cm.h:880
int cp_title
Definition cm.h:877
char orange[COLOR_LEN]
Definition cm.h:818
int clr_pair_cnt
Definition cm.h:865
char fill_char_bg[COLOR_LEN]
Definition cm.h:838
char green[COLOR_LEN]
Definition cm.h:812
char white[COLOR_LEN]
Definition cm.h:817
char bg[COLOR_LEN]
Definition cm.h:830
char bblue[COLOR_LEN]
Definition cm.h:823
int tty_fd
Definition cm.h:863
char title_fg[COLOR_LEN]
Definition cm.h:853
char cmdln_fg[COLOR_LEN]
Definition cm.h:841
int cp_norm
Definition cm.h:869
char bmagenta[COLOR_LEN]
Definition cm.h:824
char blue[COLOR_LEN]
Definition cm.h:814
int cp_win
Definition cm.h:870
int cp_nt_rev
Definition cm.h:871
char nt_hl_rev_fg[COLOR_LEN]
Definition cm.h:850
int stdin_fd
Definition cm.h:860
double gray_gamma
Definition cm.h:809
char bblack[COLOR_LEN]
Definition cm.h:819
int clr_pair_idx
Definition cm.h:867
int cp_nt_hl
Definition cm.h:872
char ind_bg[COLOR_LEN]
Definition cm.h:834
char nt_bg[COLOR_LEN]
Definition cm.h:844
int len
Definition form.h:106
int col
Definition form.h:102
char str[SCR_COLS]
Definition form.h:104
int line
Definition form.h:100
int line
Definition form.h:113
char display_s[FIELD_MAXLEN]
Definition form.h:130
char accept_s[FIELD_MAXLEN]
Definition form.h:126
int ff
Definition form.h:119
int col
Definition form.h:115
char input_s[FIELD_MAXLEN]
Definition form.h:123
cchar_t filler_cc[FIELD_MAXLEN]
Definition form.h:141
cchar_t display_cc[FIELD_MAXLEN]
Definition form.h:135
int len
Definition form.h:117
char filler_s[FIELD_MAXLEN]
Definition form.h:136
cchar_t brktr
Definition form.h:294
FILE * out_fp
Definition form.h:161
Text * text[FIELD_MAXCNT]
Definition form.h:338
bool f_in_pipe
Definition form.h:221
bool f_mapp_spec
Definition form.h:192
bool f_erase_remainder
Definition form.h:235
WINDOW * box
Definition form.h:156
Field * field[FIELD_MAXCNT]
Definition form.h:351
char receiver_cmd[MAXLEN]
Definition form.h:178
bool f_process
Definition form.h:246
int didx
Definition form.h:323
int begy
Definition form.h:151
char provider_cmd[MAXLEN]
Definition form.h:170
bool f_query
Definition form.h:248
int out_fd
Definition form.h:165
int cols
Definition form.h:150
int lines
Definition form.h:149
int fcnt
Definition form.h:316
int begx
Definition form.h:153
bool f_out_pipe
Definition form.h:226
int fidx
Definition form.h:308
bool f_provider_cmd
Definition form.h:256
bool f_calculate
Definition form.h:244
int bg_clr_idx
Definition form.h:147
char fill_char[4]
Definition form.h:297
bool help
Definition form.h:250
bool f_cmd
Definition form.h:271
cchar_t brktl
Definition form.h:291
bool f_help_spec
Definition form.h:231
FILE * in_fp
Definition form.h:159
char out_spec[MAXLEN]
Definition form.h:208
Chyron * chyron
Definition form.h:363
int bo_clr_idx
Definition form.h:148
bool f_receiver_cmd
Definition form.h:263
bool f_multiple_cmd_args
Definition form.h:243
char in_spec[MAXLEN]
Definition form.h:201
char mapp_spec[FIELD_MAXLEN]
Definition form.h:167
char cmd[MAXLEN]
Definition form.h:185
char title[MAXLEN]
Definition form.h:157
char brackets[3]
Definition form.h:279
int dcnt
Definition form.h:330
int fg_clr_idx
Definition form.h:146
bool f_out_spec
Definition form.h:218
WINDOW * win
Definition form.h:155
bool f_in_spec
Definition form.h:215
int in_fd
Definition form.h:163
char help_spec[MAXLEN]
Definition form.h:194
char * choice_text
Definition menu.h:79
void * ui_surface
Definition menu.h:66
void * ui_runtime
Definition menu.h:59
char * raw_text
Definition menu.h:76
char * command_str
Definition menu.h:95
unsigned int type
Definition menu.h:74
int letter_pos
Definition menu.h:85
unsigned int command_type
Definition menu.h:89
char choice_letter
Definition menu.h:82
char provider_cmd[MAXLEN]
Definition menu.h:151
int cols
Definition menu.h:117
char mapp_spec[MAXLEN]
Definition menu.h:140
int argc
Definition menu.h:134
Line * line[MAX_MENU_LINES]
Definition menu.h:219
bool f_help_spec
Definition menu.h:178
WINDOW * win
Definition menu.h:125
WINDOW * box
Definition menu.h:128
char cmd[MAXLEN]
Definition menu.h:166
bool f_provider_cmd
Definition menu.h:183
int bo_clr_idx
Definition menu.h:113
int fg_clr_idx
Definition menu.h:107
int begy
Definition menu.h:119
int text_max_len
Definition menu.h:206
bool f_mapp_spec
Definition menu.h:173
char receiver_cmd[MAXLEN]
Definition menu.h:159
int item_count
Definition menu.h:212
bool f_receiver_cmd
Definition menu.h:190
int choice_max_len
Definition menu.h:200
int bg_clr_idx
Definition menu.h:110
bool f_cmd
Definition menu.h:196
int line_idx
Definition menu.h:215
char help_spec[MAXLEN]
Definition menu.h:146
int lines
Definition menu.h:115
char ** argv
Definition menu.h:137
char title[MAXLEN]
Definition menu.h:131
int begx
Definition menu.h:122
uint32_t rgba
Definition ui_backend.h:138
bool use_rgb
Definition ui_backend.h:141
uint8_t g
Definition ui_backend.h:134
uint8_t r
Definition ui_backend.h:135
uint8_t b
Definition ui_backend.h:133
uint32_t index
Definition ui_backend.h:142
uint8_t a
Definition ui_backend.h:132
UiColor bg
Definition ui_backend.h:147
uint32_t idx
Definition ui_backend.h:148
UiColor fg
Definition ui_backend.h:146
bool dim
Definition ui_backend.h:162
UiColor bg
Definition ui_backend.h:160
bool underline
Definition ui_backend.h:164
bool blink
Definition ui_backend.h:165
UiColor fg
Definition ui_backend.h:159
bool invis
Definition ui_backend.h:167
bool italic
Definition ui_backend.h:163
bool reverse
Definition ui_backend.h:166
bool bold
Definition ui_backend.h:161
uint32_t ch
Definition ui_backend.h:180
UiMouseAction mouse_action
Definition ui_backend.h:186
bool shift
Definition ui_backend.h:183
bool ctrl
Definition ui_backend.h:182
UiKey key
Definition ui_backend.h:179
bool alt
Definition ui_backend.h:181
int cols
Definition ui_backend.h:200
int rows
Definition ui_backend.h:199
bool cursor_visible
Definition ui_backend.h:214
bool enable_mouse
Definition ui_backend.h:212
bool enable_alt_screen
Definition ui_backend.h:213
Opaque structure representing the UI runtime environment.
Opaque structure representing a drawable surface in the UI.