summaryrefslogtreecommitdiffstats
path: root/lib/widget/history.h
blob: 03f764ffd17533df1e2d1a2b9ce1cd69da00c59f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/** \file lib/widget/history.h
 *  \brief Header: show history
 */

#ifndef MC__WIDGET_HISTORY_H
#define MC__WIDGET_HISTORY_H

/*** typedefs(not structures) and defined constants **********************************************/

/* forward declarations */
struct history_descriptor_t;
struct WLEntry;
struct WListbox;

typedef void (*history_create_item_func) (struct history_descriptor_t * hd, void *data);
typedef void *(*history_release_item_func) (struct history_descriptor_t * hd, struct WLEntry * le);

/*** enums ***************************************************************************************/

/*** structures declarations (and typedefs of structures)*****************************************/

typedef struct history_descriptor_t
{
    GList *list;                /**< list with history items */
    int y;                      /**< y-coordinate to place history window */
    int x;                      /**< x-coordinate to place history window */
    int current;                /**< initially selected item in the history */
    int action;                 /**< return action in the history */
    char *text;                 /**< return text of selected item */

    size_t max_width;           /**< maximum width of string in history */
    struct WListbox *listbox;   /**< listbox widget to draw history */

    history_create_item_func create;    /**< function to create item of @list */
    history_release_item_func release;  /**< function to release item of @list */
    GDestroyNotify free;        /**< function to destroy element of @list */
} history_descriptor_t;

/*** global variables defined in .c file *********************************************************/

/*** declarations of public functions ************************************************************/

void history_descriptor_init (history_descriptor_t * hd, int y, int x, GList * history,
                              int current);

void history_show (history_descriptor_t * hd);

/*** inline functions ****************************************************************************/

#endif /* MC__WIDGET_HISTORY_H */