1 #ifndef LIST_WINDOW_H
2 #define LIST_WINDOW_H
4 #include "../config.h"
5 #include "command.h"
7 #include <ncurses.h>
8 #include <glib.h>
10 #define LW_HIDE_CURSOR 0x01
12 typedef const char *(*list_window_callback_fn_t)(unsigned index,
13 int *highlight,
14 void *data);
16 typedef struct list_window {
17 WINDOW *w;
18 unsigned rows, cols;
20 unsigned start;
21 unsigned selected;
22 unsigned xoffset;
23 int flags;
24 } list_window_t;
27 /* create a new list window */
28 struct list_window *list_window_init(WINDOW *w,
29 unsigned width, unsigned height);
31 /* destroy a list window (returns NULL) */
32 void list_window_free(struct list_window *lw);
34 /* reset a list window (selected=0, start=0) */
35 void list_window_reset(struct list_window *lw);
37 /* paint a list window */
38 void list_window_paint(struct list_window *lw,
39 list_window_callback_fn_t callback,
40 void *callback_data);
42 /* perform basic list window commands (movement) */
43 int list_window_cmd(struct list_window *lw, unsigned rows, command_t cmd);
45 /**
46 * Scroll the window. Returns non-zero if the command has been
47 * consumed.
48 */
49 int
50 list_window_scroll_cmd(struct list_window *lw, unsigned rows, command_t cmd);
52 #ifdef HAVE_GETMOUSE
53 /**
54 * The mouse was clicked. Check if the list should be scrolled
55 * Returns non-zero if the mouse event has been handled.
56 */
57 int
58 list_window_mouse(struct list_window *lw, unsigned rows,
59 unsigned long bstate, int y);
60 #endif
62 void
63 list_window_center(struct list_window *lw, unsigned rows, unsigned n);
65 /* select functions */
66 void list_window_set_selected(struct list_window *lw, unsigned n);
67 void list_window_check_selected(struct list_window *lw, unsigned length);
69 /* find a string in a list window */
70 int list_window_find(struct list_window *lw,
71 list_window_callback_fn_t callback,
72 void *callback_data,
73 const char *str,
74 int wrap);
76 /* find a string in a list window (reversed) */
77 int
78 list_window_rfind(struct list_window *lw,
79 list_window_callback_fn_t callback,
80 void *callback_data,
81 const char *str,
82 int wrap,
83 unsigned rows);
85 #endif