NeoMutt  2024-03-23-147-g885fbc
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
Menu Function API

Prototype for a Menu Function. More...

+ Collaboration diagram for Menu Function API:

Functions

static int menu_movement (struct Menu *menu, int op)
 Handle all the common Menu movements - Implements menu_function_t -.
 
static int menu_search (struct Menu *menu, int op)
 Handle Menu searching - Implements menu_function_t -.
 
static int op_help (struct Menu *menu, int op)
 Show the help screen - Implements menu_function_t -.
 
static int op_jump (struct Menu *menu, int op)
 Jump to an index number - Implements menu_function_t -.
 

Detailed Description

Prototype for a Menu Function.

Parameters
menuMenu
opOperation to perform, e.g. OP_NEXT_PAGE
Return values
enumFunctionRetval

Function Documentation

◆ menu_movement()

static int menu_movement ( struct Menu menu,
int  op 
)
static

Handle all the common Menu movements - Implements menu_function_t -.

Definition at line 140 of file functions.c.

141{
142 switch (op)
143 {
144 case OP_BOTTOM_PAGE:
145 menu_bottom_page(menu);
146 return FR_SUCCESS;
147
148 case OP_CURRENT_BOTTOM:
150 return FR_SUCCESS;
151
152 case OP_CURRENT_MIDDLE:
154 return FR_SUCCESS;
155
156 case OP_CURRENT_TOP:
157 menu_current_top(menu);
158 return FR_SUCCESS;
159
160 case OP_FIRST_ENTRY:
161 menu_first_entry(menu);
162 return FR_SUCCESS;
163
164 case OP_HALF_DOWN:
165 menu_half_down(menu);
166 return FR_SUCCESS;
167
168 case OP_HALF_UP:
169 menu_half_up(menu);
170 return FR_SUCCESS;
171
172 case OP_LAST_ENTRY:
173 menu_last_entry(menu);
174 return FR_SUCCESS;
175
176 case OP_MIDDLE_PAGE:
177 menu_middle_page(menu);
178 return FR_SUCCESS;
179
180 case OP_NEXT_ENTRY:
181 menu_next_entry(menu);
182 return FR_SUCCESS;
183
184 case OP_NEXT_LINE:
185 menu_next_line(menu);
186 return FR_SUCCESS;
187
188 case OP_NEXT_PAGE:
189 menu_next_page(menu);
190 return FR_SUCCESS;
191
192 case OP_PREV_ENTRY:
193 menu_prev_entry(menu);
194 return FR_SUCCESS;
195
196 case OP_PREV_LINE:
197 menu_prev_line(menu);
198 return FR_SUCCESS;
199
200 case OP_PREV_PAGE:
201 menu_prev_page(menu);
202 return FR_SUCCESS;
203
204 case OP_TOP_PAGE:
205 menu_top_page(menu);
206 return FR_SUCCESS;
207
208 default:
209 return FR_UNKNOWN;
210 }
211}
@ FR_SUCCESS
Valid function - successfully performed.
Definition: dispatcher.h:39
@ FR_UNKNOWN
Unknown function.
Definition: dispatcher.h:33
MenuRedrawFlags menu_next_page(struct Menu *menu)
Move the focus to the next page in the menu.
Definition: move.c:562
MenuRedrawFlags menu_bottom_page(struct Menu *menu)
Move the focus to the bottom of the page.
Definition: move.c:363
MenuRedrawFlags menu_half_up(struct Menu *menu)
Move the focus up half a page in the menu.
Definition: move.c:506
MenuRedrawFlags menu_prev_line(struct Menu *menu)
Move the view up one line, keeping the selection the same.
Definition: move.c:526
MenuRedrawFlags menu_current_bottom(struct Menu *menu)
Move the current selection to the bottom of the window.
Definition: move.c:484
MenuRedrawFlags menu_current_middle(struct Menu *menu)
Move the current selection to the centre of the window.
Definition: move.c:464
MenuRedrawFlags menu_middle_page(struct Menu *menu)
Move the focus to the centre of the page.
Definition: move.c:343
MenuRedrawFlags menu_first_entry(struct Menu *menu)
Move the focus to the first entry in the menu.
Definition: move.c:410
MenuRedrawFlags menu_half_down(struct Menu *menu)
Move the focus down half a page in the menu.
Definition: move.c:516
MenuRedrawFlags menu_top_page(struct Menu *menu)
Move the focus to the top of the page.
Definition: move.c:333
MenuRedrawFlags menu_last_entry(struct Menu *menu)
Move the focus to the last entry in the menu.
Definition: move.c:426
MenuRedrawFlags menu_prev_page(struct Menu *menu)
Move the focus to the previous page in the menu.
Definition: move.c:552
MenuRedrawFlags menu_next_line(struct Menu *menu)
Move the view down one line, keeping the selection the same.
Definition: move.c:539
MenuRedrawFlags menu_prev_entry(struct Menu *menu)
Move the focus to the previous item in the menu.
Definition: move.c:382
MenuRedrawFlags menu_current_top(struct Menu *menu)
Move the current selection to the top of the window.
Definition: move.c:443
MenuRedrawFlags menu_next_entry(struct Menu *menu)
Move the focus to the next item in the menu.
Definition: move.c:396
+ Here is the call graph for this function:

◆ menu_search()

static int menu_search ( struct Menu menu,
int  op 
)
static

Handle Menu searching - Implements menu_function_t -.

Definition at line 216 of file functions.c.

217{
218 if (menu->search)
219 {
220 int index = search(menu, op);
221 if (index != -1)
222 menu_set_index(menu, index);
223 }
224 return FR_SUCCESS;
225}
static int search(struct Menu *menu, int op)
Search a menu.
Definition: functions.c:58
MenuRedrawFlags menu_set_index(struct Menu *menu, int index)
Set the current selection in the Menu.
Definition: menu.c:174
int(* search)(struct Menu *menu, regex_t *rx, int line)
Definition: lib.h:119
+ Here is the call graph for this function:

◆ op_help()

static int op_help ( struct Menu menu,
int  op 
)
static

Show the help screen - Implements menu_function_t -.

Definition at line 230 of file functions.c.

231{
232 mutt_help(menu->type);
233 menu->redraw = MENU_REDRAW_FULL;
234 return FR_SUCCESS;
235}
void mutt_help(enum MenuType menu)
Display the help menu.
Definition: help.c:467
#define MENU_REDRAW_FULL
Redraw everything.
Definition: lib.h:59
MenuRedrawFlags redraw
When to redraw the screen.
Definition: lib.h:82
enum MenuType type
Menu definition for keymap entries.
Definition: lib.h:83
+ Here is the call graph for this function:

◆ op_jump()

static int op_jump ( struct Menu menu,
int  op 
)
static

Jump to an index number - Implements menu_function_t -.

Definition at line 240 of file functions.c.

241{
242 if (menu->max == 0)
243 {
244 mutt_error(_("No entries"));
245 return FR_SUCCESS;
246 }
247
248 const int digit = op - OP_JUMP;
249 if ((digit > 0) && (digit < 10))
250 {
251 mutt_unget_ch('0' + digit);
252 }
253
254 struct Buffer *buf = buf_pool_get();
255 if ((mw_get_field(_("Jump to: "), buf, MUTT_COMP_NO_FLAGS, HC_OTHER, NULL, NULL) == 0) &&
256 !buf_is_empty(buf))
257 {
258 int n = 0;
259 if (mutt_str_atoi_full(buf_string(buf), &n) && (n > 0) && (n < (menu->max + 1)))
260 {
261 menu_set_index(menu, n - 1); // msg numbers are 0-based
262 }
263 else
264 {
265 mutt_error(_("Invalid index number"));
266 }
267 }
268
269 buf_pool_release(&buf);
270 return FR_SUCCESS;
271}
bool buf_is_empty(const struct Buffer *buf)
Is the Buffer empty?
Definition: buffer.c:290
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition: buffer.h:96
int digit(const char *s)
void mutt_unget_ch(int ch)
Return a keystroke to the input buffer.
Definition: get.c:114
int mw_get_field(const char *prompt, struct Buffer *buf, CompletionFlags complete, enum HistoryClass hclass, const struct CompleteOps *comp_api, void *cdata)
Ask the user for a string -.
Definition: window.c:274
#define mutt_error(...)
Definition: logging2.h:92
@ HC_OTHER
Miscellaneous strings.
Definition: lib.h:56
#define _(a)
Definition: message.h:28
#define MUTT_COMP_NO_FLAGS
No flags are set.
Definition: mutt.h:56
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
Definition: pool.c:81
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Definition: pool.c:94
String manipulation buffer.
Definition: buffer.h:36
int max
Number of entries in the menu.
Definition: lib.h:81
+ Here is the call graph for this function: