ELinks 0.18.0
Macros | Functions | Variables
menu.c File Reference
#include <stdlib.h>
#include <string.h>
#include "elinks.h"
#include "bfu/hotkey.h"
#include "bfu/inpfield.h"
#include "bfu/menu.h"
#include "config/kbdbind.h"
#include "intl/libintl.h"
#include "session/session.h"
#include "terminal/draw.h"
#include "terminal/event.h"
#include "terminal/kbd.h"
#include "terminal/mouse.h"
#include "terminal/tab.h"
#include "terminal/terminal.h"
#include "terminal/window.h"
#include "util/color.h"
#include "util/conv.h"
#include "util/memory.h"
#include "viewer/action.h"
Include dependency graph for menu.c:

Macros

#define _GNU_SOURCE   /* XXX: we _WANT_ strcasestr() ! */
 
#define L_MAINMENU_SPACE   2
 
#define R_MAINMENU_SPACE   2
 
#define L_MAINTEXT_SPACE   1
 
#define R_MAINTEXT_SPACE   1
 
#define L_RTEXT_SPACE   1
 
#define R_RTEXT_SPACE   1
 
#define L_TEXT_SPACE   1
 
#define R_TEXT_SPACE   1
 
#define MENU_BORDER_SIZE   1
 
#define DIST   5
 
#define realloc_menu_items(mi_, size)    mem_align_alloc(mi_, size, (size) + 2, 0xF)
 

Functions

static void display_mainmenu (struct terminal *term, struct menu *menu)
 
static void set_menu_selection (struct menu *menu, int pos)
 
void deselect_mainmenu (struct terminal *term, struct menu *menu)
 
static int count_items (struct menu_item *items)
 
static void free_menu_items (struct menu_item *items)
 
void do_menu_selected (struct terminal *term, struct menu_item *items, void *data, int selected, int hotkeys)
 
void do_menu (struct terminal *term, struct menu_item *items, void *data, int hotkeys)
 
static void select_menu_item (struct terminal *term, struct menu_item *it, void *data)
 
static void select_menu (struct terminal *term, struct menu *menu)
 
static int get_menuitem_text_width (struct terminal *term, struct menu_item *mi)
 
static int get_menuitem_rtext_width (struct terminal *term, struct menu_item *mi)
 
static int get_menuitem_width (struct terminal *term, struct menu_item *mi, int max_width)
 
static void count_menu_size (struct terminal *term, struct menu *menu)
 
static void scroll_menu (struct menu *menu, int steps, int wrap)
 
static void draw_menu_left_text (struct terminal *term, char *text, int len, int x, int y, int width, struct color_pair *color)
 
static void draw_menu_left_text_hk (struct terminal *term, char *text, int hotkey_pos, int x, int y, int width, struct color_pair *color, int selected)
 
static void draw_menu_right_text (struct terminal *term, char *text, int len, int x, int y, int width, struct color_pair *color)
 
static void display_menu (struct terminal *term, struct menu *menu)
 
static void menu_page_up (struct menu *menu)
 
static void menu_page_down (struct menu *menu)
 
static int search_menu_item (struct menu_item *item, char *buffer, struct terminal *term)
 
static enum input_line_code menu_search_handler (struct input_line *line, int action_id)
 
static void search_menu (struct menu *menu)
 
static void menu_kbd_handler (struct menu *menu, struct term_event *ev)
 
static void menu_handler (struct window *win, struct term_event *ev)
 
void do_mainmenu (struct terminal *term, struct menu_item *items, void *data, int sel)
 
static void mainmenu_kbd_handler (struct menu *menu, struct term_event *ev)
 
static void mainmenu_handler (struct window *win, struct term_event *ev)
 
struct menu_item * new_menu (menu_item_flags_T flags)
 
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)
 

Variables

static char m_submenu [] = ">>"
 
static int m_submenu_len = sizeof(m_submenu) - 1
 
static window_handler_T menu_handler
 
static window_handler_T mainmenu_handler
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE   /* XXX: we _WANT_ strcasestr() ! */

◆ DIST

#define DIST   5

◆ L_MAINMENU_SPACE

#define L_MAINMENU_SPACE   2

◆ L_MAINTEXT_SPACE

#define L_MAINTEXT_SPACE   1

◆ L_RTEXT_SPACE

#define L_RTEXT_SPACE   1

◆ L_TEXT_SPACE

#define L_TEXT_SPACE   1

◆ MENU_BORDER_SIZE

#define MENU_BORDER_SIZE   1

◆ R_MAINMENU_SPACE

#define R_MAINMENU_SPACE   2

◆ R_MAINTEXT_SPACE

#define R_MAINTEXT_SPACE   1

◆ R_RTEXT_SPACE

#define R_RTEXT_SPACE   1

◆ R_TEXT_SPACE

#define R_TEXT_SPACE   1

◆ realloc_menu_items

#define realloc_menu_items (   mi_,
  size 
)     mem_align_alloc(mi_, size, (size) + 2, 0xF)

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 
)

◆ count_items()

static int count_items ( struct menu_item *  items)
inlinestatic

◆ count_menu_size()

static void count_menu_size ( struct terminal *  term,
struct menu *  menu 
)
static

◆ deselect_mainmenu()

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

◆ display_mainmenu()

static void display_mainmenu ( struct terminal *  term,
struct menu *  menu 
)
static

◆ display_menu()

static void display_menu ( struct terminal *  term,
struct menu *  menu 
)
static

◆ 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 
)

◆ draw_menu_left_text()

static void draw_menu_left_text ( struct terminal *  term,
char *  text,
int  len,
int  x,
int  y,
int  width,
struct color_pair *  color 
)
inlinestatic

◆ draw_menu_left_text_hk()

static void draw_menu_left_text_hk ( struct terminal *  term,
char *  text,
int  hotkey_pos,
int  x,
int  y,
int  width,
struct color_pair *  color,
int  selected 
)
inlinestatic

◆ draw_menu_right_text()

static void draw_menu_right_text ( struct terminal *  term,
char *  text,
int  len,
int  x,
int  y,
int  width,
struct color_pair *  color 
)
inlinestatic

◆ free_menu_items()

static void free_menu_items ( struct menu_item *  items)
static

◆ get_menuitem_rtext_width()

static int get_menuitem_rtext_width ( struct terminal *  term,
struct menu_item *  mi 
)
static

◆ get_menuitem_text_width()

static int get_menuitem_text_width ( struct terminal *  term,
struct menu_item *  mi 
)
static

◆ get_menuitem_width()

static int get_menuitem_width ( struct terminal *  term,
struct menu_item *  mi,
int  max_width 
)
static

◆ mainmenu_handler()

static void mainmenu_handler ( struct window *  win,
struct term_event *  ev 
)
static

◆ mainmenu_kbd_handler()

static void mainmenu_kbd_handler ( struct menu *  menu,
struct term_event *  ev 
)
static

◆ menu_handler()

static void menu_handler ( struct window *  win,
struct term_event *  ev 
)
static

◆ menu_kbd_handler()

static void menu_kbd_handler ( struct menu *  menu,
struct term_event *  ev 
)
static

◆ menu_page_down()

static void menu_page_down ( struct menu *  menu)
static

◆ menu_page_up()

static void menu_page_up ( struct menu *  menu)
static

◆ menu_search_handler()

static enum input_line_code menu_search_handler ( struct input_line *  line,
int  action_id 
)
static

◆ new_menu()

struct menu_item * new_menu ( menu_item_flags_T  flags)

◆ scroll_menu()

static void scroll_menu ( struct menu *  menu,
int  steps,
int  wrap 
)
static

◆ search_menu()

static void search_menu ( struct menu *  menu)
static

◆ search_menu_item()

static int search_menu_item ( struct menu_item *  item,
char *  buffer,
struct terminal *  term 
)
inlinestatic

◆ select_menu()

static void select_menu ( struct terminal *  term,
struct menu *  menu 
)
inlinestatic

◆ select_menu_item()

static void select_menu_item ( struct terminal *  term,
struct menu_item *  it,
void *  data 
)
static

◆ set_menu_selection()

static void set_menu_selection ( struct menu *  menu,
int  pos 
)
static

Variable Documentation

◆ m_submenu

char m_submenu[] = ">>"
static

◆ m_submenu_len

int m_submenu_len = sizeof(m_submenu) - 1
static

◆ mainmenu_handler

window_handler_T mainmenu_handler
static

◆ menu_handler

window_handler_T menu_handler
static