diff options
Diffstat (limited to 'mutt_menu.h')
-rw-r--r-- | mutt_menu.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/mutt_menu.h b/mutt_menu.h new file mode 100644 index 00000000..e30da697 --- /dev/null +++ b/mutt_menu.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This file is named mutt_menu.h so it doesn't collide with ncurses menu.h + */ + +#include "keymap.h" +#include "mutt_regex.h" + +#define REDRAW_INDEX (1) +#define REDRAW_MOTION (1<<1) +#define REDRAW_MOTION_RESYNCH (1<<2) +#define REDRAW_CURRENT (1<<3) +#define REDRAW_STATUS (1<<4) +#define REDRAW_FULL (1<<5) +#define REDRAW_BODY (1<<6) + +typedef struct menu_t +{ + char *title; /* the title of this menu */ + char *help; /* quickref for the current menu */ + void *data; /* extra data for the current menu */ + int current; /* current entry */ + int max; /* the number of entries in the menu */ + int redraw; /* when to redraw the screen */ + int menu; /* menu definition for keymap entries. */ + int offset; /* which screen row to start the index */ + int pagelen; /* number of entries per screen */ + int tagprefix; + + /* callback to generate an index line for the requested element */ + void (*make_entry) (char *, size_t, struct menu_t *, int); + + /* how to search the menu */ + int (*search) (struct menu_t *, regex_t *re, int n); + + int (*tag) (struct menu_t *, int i); + + /* color pair to be used for the requested element + * (default function returns ColorDefs[MT_COLOR_NORMAL]) + */ + int (*color) (int i); + + /* the following are used only by mutt_menuLoop() */ + int top; /* entry that is the top of the current page */ + int oldcurrent; /* for driver use only. */ + char *searchBuf; /* last search pattern */ + int searchDir; /* direction of search */ + int tagged; /* number of tagged entries */ +} MUTTMENU; + +void menu_jump (MUTTMENU *); +void menu_redraw_full (MUTTMENU *); +void menu_redraw_index (MUTTMENU *); +void menu_redraw_motion (MUTTMENU *); +void menu_redraw_current (MUTTMENU *); +void menu_first_entry (MUTTMENU *); +void menu_last_entry (MUTTMENU *); +void menu_top_page (MUTTMENU *); +void menu_bottom_page (MUTTMENU *); +void menu_middle_page (MUTTMENU *); +void menu_next_page (MUTTMENU *); +void menu_prev_page (MUTTMENU *); +void menu_next_line (MUTTMENU *); +void menu_prev_line (MUTTMENU *); +void menu_half_up (MUTTMENU *); +void menu_half_down (MUTTMENU *); +void menu_current_top (MUTTMENU *); +void menu_current_middle (MUTTMENU *); +void menu_current_bottom (MUTTMENU *); +void menu_check_recenter (MUTTMENU *); +void menu_status_line (char *, size_t, MUTTMENU *, const char *); + +MUTTMENU *mutt_new_menu (void); +void mutt_menuDestroy (MUTTMENU **); +int mutt_menuLoop (MUTTMENU *); + +/* used in both the index and pager index to make an entry. */ +void index_make_entry (char *, size_t, struct menu_t *, int); +int index_color (int); |