diff --git a/server/commands/menu_commands.c b/server/commands/menu_commands.c index b287e99..006a542 100644 --- a/server/commands/menu_commands.c +++ b/server/commands/menu_commands.c @@ -36,10 +36,13 @@ #include "menu.h" #include "menuitem.h" #include "menuscreens.h" +#include "menu_commands.h" #include "client.h" /* Local functions */ MenuEventFunc(menu_commands_handler); +int set_parent(Menu *menu, char *parentid, Client *client); +MenuItem * search_item(char *menu_id); /************************************************************************* @@ -73,7 +76,10 @@ menu_add_item_func (Client * c, int argc, char **argv) Menu * menu = NULL; MenuItem * item; MenuItemType itemtype; + char** argv_set = NULL; + debug (RPT_DEBUG, "%s( Client [%d], %s, %s )", + __FUNCTION__, c->sock, argv[1], argv[2]); if (!c->ack) return 1; @@ -123,8 +129,8 @@ menu_add_item_func (Client * c, int argc, char **argv) return 0; } - /* Is a text given ? */ - if (argc >= 5) { + /* Is a text given (options don't count)? */ + if (argc >= 5 && argv[4][0] != '-') { text = argv[4]; } else { @@ -137,31 +143,31 @@ menu_add_item_func (Client * c, int argc, char **argv) item = menu_create (item_id, menu_commands_handler, text, c); break; case MENUITEM_ACTION: - item = menuitem_create_action (item_id, menu_commands_handler, text, + item = menuitem_create_action (item_id, menu_commands_handler, text, c, MENURESULT_NONE); break; case MENUITEM_CHECKBOX: - item = menuitem_create_checkbox (item_id, menu_commands_handler, text, + item = menuitem_create_checkbox (item_id, menu_commands_handler, text, c, false, false); break; case MENUITEM_RING: - item = menuitem_create_ring (item_id, menu_commands_handler, text, + item = menuitem_create_ring (item_id, menu_commands_handler, text, c, "", 0); break; case MENUITEM_SLIDER: - item = menuitem_create_slider (item_id, menu_commands_handler, text, + item = menuitem_create_slider (item_id, menu_commands_handler, text, c, "", "", 0, 100, 1, 25); break; case MENUITEM_NUMERIC: - item = menuitem_create_numeric (item_id, menu_commands_handler, text, + item = menuitem_create_numeric (item_id, menu_commands_handler, text, c, 0, 100, 0); break; case MENUITEM_ALPHA: - item = menuitem_create_alpha (item_id, menu_commands_handler, text, + item = menuitem_create_alpha (item_id, menu_commands_handler, text, c, 0, 0, 10, true, false, true, "-./", ""); break; case MENUITEM_IP: - item = menuitem_create_ip (item_id, menu_commands_handler, text, + item = menuitem_create_ip (item_id, menu_commands_handler, text, c, 0, "192.168.1.245"); break; default: @@ -170,6 +176,30 @@ menu_add_item_func (Client * c, int argc, char **argv) menu_add_item (menu, item); menuscreen_inform_item_modified (menu); sock_send_string(c->sock, "success\n"); + + /* are there any options (starting with '-')? + * - create a temporary argv for menu_set_item() call */ + if (argc > 5 || argv[4][0] == '-') { + // menu_add_item [] + // menu_set_item {