9 #include "img_format.h"
14 #include "asxparser.h"
16 #include "menu_list.h"
18 #include "libvo/font_load.h"
20 #include "input/input.h"
36 static struct menu_priv_s cfg_dflt
= {
40 static m_option_t cfg_fields
[] = {
41 MENU_LIST_PRIV_FIELDS
,
42 { "title",M_ST_OFF(struct menu_priv_s
,p
.title
), CONF_TYPE_STRING
, 0, 0, 0, NULL
},
43 { NULL
, NULL
, NULL
, 0,0,0,NULL
}
46 #define mpriv (menu->priv)
48 static void read_cmd(menu_t
* menu
,int cmd
) {
51 if(mpriv
->p
.current
->ok
) {
52 mp_cmd_t
* c
= mp_input_parse_cmd(mpriv
->p
.current
->ok
);
54 mp_input_queue_cmd(c
);
58 if(mpriv
->p
.current
->cancel
) {
59 mp_cmd_t
* c
= mp_input_parse_cmd(mpriv
->p
.current
->cancel
);
61 mp_input_queue_cmd(c
);
65 menu_list_read_cmd(menu
,cmd
);
69 static void read_key(menu_t
* menu
,int c
){
70 menu_list_read_key(menu
,c
,0);
73 static void free_entry(list_entry_t
* entry
) {
82 static void close(menu_t
* menu
) {
83 menu_list_uninit(menu
,free_entry
);
86 static int parse_args(menu_t
* menu
,char* args
) {
87 char *element
,*body
, **attribs
, *name
, *ok
, *cancel
;
88 list_entry_t
* m
= NULL
;
90 ASX_Parser_t
* parser
= asx_parser_new();
93 r
= asx_get_element(parser
,&args
,&element
,&body
,&attribs
);
95 printf("Syntax error at line %d\n",parser
->line
);
96 asx_parser_free(parser
);
99 asx_parser_free(parser
);
101 printf("No entry found in the menu definition\n");
105 name
= asx_get_attrib("name",attribs
);
107 printf("List menu entry definitions need a name (line %d)\n",parser
->line
);
110 asx_free_attribs(attribs
);
113 ok
= asx_get_attrib("ok",attribs
);
114 cancel
= asx_get_attrib("cancel",attribs
);
115 m
= calloc(1,sizeof(struct list_entry_s
));
119 menu_list_add_entry(menu
,m
);
123 asx_free_attribs(attribs
);
127 static int open(menu_t
* menu
, char* args
) {
128 menu
->draw
= menu_list_draw
;
129 menu
->read_cmd
= read_cmd
;
130 menu
->read_key
= read_key
;
134 printf("List menu need an argument\n");
138 menu_list_init(menu
);
139 if(!parse_args(menu
,args
))
144 const menu_info_t menu_info_cmdlist
= {
151 sizeof(struct menu_priv_s
),