blob: 9dbb7bcf54614f40d631289a036efbcc95c9074f (
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#ifndef __CUIX_API_H
#define __CUIX_API_H
#include "term-curses.h"
#define MAX_FIELD_SIZE 64
WINDOW *cuix_win;
PANEL *p_main;
PANEL *p_cuix;
enum objtype {
/* For objects */
CUIX_MENU,
CUIX_FORM,
CUIX_LIST,
/* For entries */
/* NB: LABEL must stay the first entry, as it is used to test if we have
* an object or an entry */
CUIX_LABEL,
CUIX_FIELD,
CUIX_MENUENTRY
};
/* This is the type of the action to be executed when the entry has been
* successfully selected (in case of a menuentry) or filled (in case of a
* field). */
typedef int(*action_fn_type)(char *);
typedef struct entry {
int type;
char *data; /* contains label or submenu title */
action_fn_type action;
} entry;
typedef struct object {
int type;
char *title;
void **entries;
int alloced; /* defines the current size of entries */
int last; /* index of the first non-alloced entry */
} object;
/* Object definitions */
object *create_menu (char *title);
object *create_form (char *title);
/* entries must be NULL terminated */
object *create_list (char *title, entry **entries);
entry *create_menuentry (char *label, action_fn_type action);
entry *create_label (char *label);
entry *create_field (char *label, action_fn_type action);
void attach_submenu (object *father, object *child);
void attach_entry (object *father, void *child);
void display_object (object *obj);
void my_menu(void);
#endif /* __CUIX_API_H */
|