ELinks 0.18.0
menu.h File Reference
#include "config/kbdbind.h"
#include "util/box.h"
Include dependency graph for menu.h:
This graph shows which files directly or indirectly include this file:

Data Structures

struct  menu_item
struct  menu

Macros

#define FREE_ANY   (FREE_LIST|FREE_TEXT|FREE_RTEXT|FREE_DATA)
#define mi_is_selectable(mi)
#define mi_has_left_text(mi)
#define mi_has_right_text(mi)
#define mi_is_horizontal_bar(mi)
#define mi_is_submenu(mi)
#define mi_text_translate(mi)
#define mi_rtext_translate(mi)
#define mi_is_end_of_menu(mi)
#define foreach_menu_item(iterator, items)
#define INIT_MENU_ITEM(text, rtext, action_id, func, data, flags)
#define INIT_MENU_ACTION(text, action_id)
#define NULL_MENU_ITEM    INIT_MENU_ITEM(NULL, NULL, ACT_MAIN_NONE, NULL, NULL, 0)
#define BAR_MENU_ITEM    INIT_MENU_ITEM("", NULL, ACT_MAIN_NONE, NULL, NULL, NO_SELECT)
#define SET_MENU_ITEM(e_, text_, rtext_, action_id_, func_, data_, flags_, hotkey_state_, hotkey_pos_)
#define add_menu_separator(menu)
#define add_menu_action(menu, text, action_id)

Typedefs

typedef void(* menu_func_T) (struct terminal *, void *, void *)
typedef int menu_item_flags_T

Enumerations

enum  menu_item_flags {
  NO_FLAG = 0 , FREE_LIST = 1 , FREE_TEXT = 2 , FREE_RTEXT = 4 ,
  FREE_DATA = 8 , MENU_FULLNAME = 16 , SUBMENU = 32 , NO_INTL = 64 ,
  NO_SELECT = 128 , RIGHT_INTL = 256
}
enum  hotkey_state { HKS_SHOW = 0 , HKS_IGNORE , HKS_CACHED }

Functions

struct menu_itemnew_menu (menu_item_flags_T)
void add_to_menu (struct menu_item **mi, const char *text, const char *rtext, main_action_T action_id, menu_func_T func, void *data, menu_item_flags_T flags)
void do_menu (struct terminal *, struct menu_item *, void *, int)
void do_menu_selected (struct terminal *, struct menu_item *, void *, int, int)
void do_mainmenu (struct terminal *, struct menu_item *, void *, int)
void deselect_mainmenu (struct terminal *term, struct menu *menu)

Macro Definition Documentation

◆ add_menu_action

#define add_menu_action ( menu,
text,
action_id )
Value:
add_to_menu(menu, text, NULL, action_id, NULL, NULL, NO_FLAG)
void add_to_menu(struct menu_item **mi, const char *text, const char *rtext, main_action_T action_id, menu_func_T func, void *data, menu_item_flags_T flags)
Definition menu.c:1398
@ NO_FLAG
Definition menu.h:18
#define NULL
Definition explodename.c:35
Definition menu.h:146

◆ add_menu_separator

#define add_menu_separator ( menu)
Value:
@ NO_SELECT
Definition menu.h:29
@ ACT_MAIN_NONE
Definition kbdbind.h:76

◆ BAR_MENU_ITEM

#define BAR_MENU_ITEM    INIT_MENU_ITEM("", NULL, ACT_MAIN_NONE, NULL, NULL, NO_SELECT)

◆ foreach_menu_item

#define foreach_menu_item ( iterator,
items )
Value:
for (iterator = (struct menu_item *)(items); !mi_is_end_of_menu(iterator); (iterator)++)
#define mi_is_end_of_menu(mi)
Definition menu.h:71
Definition menu.h:86

◆ FREE_ANY

#define FREE_ANY   (FREE_LIST|FREE_TEXT|FREE_RTEXT|FREE_DATA)

◆ INIT_MENU_ACTION

#define INIT_MENU_ACTION ( text,
action_id )
Value:
INIT_MENU_ITEM(text, NULL, action_id, NULL, NULL, 0)
#define INIT_MENU_ITEM(text, rtext, action_id, func, data, flags)
Definition menu.h:111

◆ INIT_MENU_ITEM

#define INIT_MENU_ITEM ( text,
rtext,
action_id,
func,
data,
flags )
Value:
{ \
(char *) (text), \
(char *) (rtext), \
(action_id), \
(func), \
(void *) (data), \
(flags), \
0 \
}
@ HKS_SHOW
Definition menu.h:79

◆ mi_has_left_text

#define mi_has_left_text ( mi)
Value:
((mi)->text && *(mi)->text)

◆ mi_has_right_text

#define mi_has_right_text ( mi)
Value:
((mi)->rtext && *(mi)->rtext)

◆ mi_is_end_of_menu

#define mi_is_end_of_menu ( mi)
Value:
(!(mi)->text)

◆ mi_is_horizontal_bar

#define mi_is_horizontal_bar ( mi)
Value:
(!mi_is_selectable(mi) && (mi)->text && !(mi)->text[0])
#define mi_is_selectable(mi)
Definition menu.h:40

◆ mi_is_selectable

#define mi_is_selectable ( mi)
Value:
(!((mi)->flags & NO_SELECT))

◆ mi_is_submenu

#define mi_is_submenu ( mi)
Value:
((mi)->flags & SUBMENU)
@ SUBMENU
Definition menu.h:27

◆ mi_rtext_translate

#define mi_rtext_translate ( mi)
Value:
((mi)->flags & RIGHT_INTL)
@ RIGHT_INTL
Definition menu.h:30

◆ mi_text_translate

#define mi_text_translate ( mi)
Value:
(!((mi)->flags & NO_INTL))
@ NO_INTL
Definition menu.h:28

◆ NULL_MENU_ITEM

#define NULL_MENU_ITEM    INIT_MENU_ITEM(NULL, NULL, ACT_MAIN_NONE, NULL, NULL, 0)

◆ SET_MENU_ITEM

#define SET_MENU_ITEM ( e_,
text_,
rtext_,
action_id_,
func_,
data_,
flags_,
hotkey_state_,
hotkey_pos_ )
Value:
do { \
(e_)->text = (char *) (text_); \
(e_)->rtext = (char *) (rtext_); \
(e_)->action_id = (action_id_); \
(e_)->func = (func_); \
(e_)->data = (void *) (data_); \
(e_)->flags = (flags_); \
(e_)->hotkey_state = (hotkey_state_); \
(e_)->hotkey_pos = (hotkey_pos_); \
} while (0)
hotkey_state
Definition menu.h:78

Typedef Documentation

◆ menu_func_T

typedef void(* menu_func_T) (struct terminal *, void *, void *)

◆ menu_item_flags_T

typedef int menu_item_flags_T

Enumeration Type Documentation

◆ hotkey_state

Enumerator
HKS_SHOW 
HKS_IGNORE 
HKS_CACHED 

◆ menu_item_flags

Enumerator
NO_FLAG 
FREE_LIST 
FREE_TEXT 
FREE_RTEXT 
FREE_DATA 
MENU_FULLNAME 
SUBMENU 
NO_INTL 
NO_SELECT 
RIGHT_INTL 

Function Documentation

◆ add_to_menu()

void add_to_menu ( struct menu_item ** mi,
const char * text,
const char * rtext,
main_action_T action_id,
menu_func_T func,
void * data,
menu_item_flags_T flags )

◆ deselect_mainmenu()

void deselect_mainmenu ( struct terminal * term,
struct menu * menu )

◆ do_mainmenu()

void do_mainmenu ( struct terminal * term,
struct menu_item * items,
void * data,
int sel )

◆ do_menu()

void do_menu ( struct terminal * term,
struct menu_item * items,
void * data,
int hotkeys )

◆ do_menu_selected()

void do_menu_selected ( struct terminal * term,
struct menu_item * items,
void * data,
int selected,
int hotkeys )

◆ new_menu()

struct menu_item * new_menu ( menu_item_flags_T flags)