summaryrefslogtreecommitdiffstats
path: root/libmenu/menu_cmdlist.c
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-25 17:32:10 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-25 17:32:10 +0000
commit0e38597ae87839d87024edb5000f497a9e0eaf66 (patch)
tree6d3128f7bb486e0037a4ec94ed52ad91f9e3a4fd /libmenu/menu_cmdlist.c
parent09ae9c2ef94f5a697ce7d07d6dc0019d0583fc8b (diff)
downloadmpv-0e38597ae87839d87024edb5000f497a9e0eaf66.tar.bz2
mpv-0e38597ae87839d87024edb5000f497a9e0eaf66.tar.xz
Allow 6 ways (up/down/left/right/ok/cancel) navigation.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17946 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmenu/menu_cmdlist.c')
-rw-r--r--libmenu/menu_cmdlist.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/libmenu/menu_cmdlist.c b/libmenu/menu_cmdlist.c
index 0e4730f61a..cd0c8ff763 100644
--- a/libmenu/menu_cmdlist.c
+++ b/libmenu/menu_cmdlist.c
@@ -27,6 +27,8 @@ struct list_entry_s {
char* ok;
char* cancel;
+ char* left;
+ char* right;
};
struct menu_priv_s {
@@ -47,6 +49,12 @@ static m_option_t cfg_fields[] = {
static void read_cmd(menu_t* menu,int cmd) {
switch(cmd) {
+ case MENU_CMD_RIGHT:
+ if(mpriv->p.current->right) {
+ mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->right);
+ if(c) mp_input_queue_cmd(c);
+ break;
+ } // fallback on ok if right is not defined
case MENU_CMD_OK: {
if(mpriv->p.current->ok) {
mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->ok);
@@ -54,6 +62,12 @@ static void read_cmd(menu_t* menu,int cmd) {
mp_input_queue_cmd(c);
}
} break;
+ case MENU_CMD_LEFT:
+ if(mpriv->p.current->left) {
+ mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->left);
+ if(c) mp_input_queue_cmd(c);
+ break;
+ } // fallback on cancel if left is not defined
case MENU_CMD_CANCEL:
if(mpriv->p.current->cancel) {
mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->cancel);
@@ -84,7 +98,7 @@ static void close(menu_t* menu) {
}
static int parse_args(menu_t* menu,char* args) {
- char *element,*body, **attribs, *name, *ok, *cancel;
+ char *element,*body, **attribs, *name;
list_entry_t* m = NULL;
int r;
ASX_Parser_t* parser = asx_parser_new();
@@ -110,12 +124,12 @@ static int parse_args(menu_t* menu,char* args) {
asx_free_attribs(attribs);
continue;
}
- ok = asx_get_attrib("ok",attribs);
- cancel = asx_get_attrib("cancel",attribs);
m = calloc(1,sizeof(struct list_entry_s));
m->p.txt = name;
- m->ok = ok;
- m->cancel = cancel;
+ m->ok = asx_get_attrib("ok",attribs);
+ m->cancel = asx_get_attrib("cancel",attribs);
+ m->left = asx_get_attrib("left",attribs);
+ m->right = asx_get_attrib("right",attribs);
menu_list_add_entry(menu,m);
free(element);