diff options
author | albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-03-25 17:32:10 +0000 |
---|---|---|
committer | albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-03-25 17:32:10 +0000 |
commit | 0e38597ae87839d87024edb5000f497a9e0eaf66 (patch) | |
tree | 6d3128f7bb486e0037a4ec94ed52ad91f9e3a4fd /libmenu/menu_cmdlist.c | |
parent | 09ae9c2ef94f5a697ce7d07d6dc0019d0583fc8b (diff) | |
download | mpv-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.c | 24 |
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); |