Menu API: multi-level submenus (submenus of submenus of ...)
Created originally on Bitbucket by dmilligan (David Milligan)
Was already merged in Bitbucket before import, marked as merged by the import user
This is mainly for adv_int to clear up the menu issues (so it doesn't need it's own top level menu), but it may be useful for other modules or core functions. This needs more work b/c I'm not all that familiar with menu.c. Basically I'm posting this to get advice and feedback, there's a lot more that needs to be done.
Here's my basic test code:
#!C
#include <module.h>
#include <dryos.h>
#include <menu.h>
int test_val1 = 0;
int test_val2 = 0;
int test_val3 = 0;
int test_val4 = 0;
int test_val5 = 0;
struct menu_entry test_menu[] =
{
{
.name = "Menu Test",
.select = menu_open_submenu,
.children = (struct menu_entry[])
{
{
.name = "Test 1",
.select = menu_open_submenu,
.children = (struct menu_entry[])
{
{
.name = "Test 1.1",
.priv = &test_val1,
.max = 1,
.icon_type = IT_BOOL
},
{
.name = "Test 1.2",
.priv = &test_val2,
.max = 4,
.icon_type = IT_PERCENT
},
{
.name = "Test 1.3",
.select = menu_open_submenu,
.children = (struct menu_entry[])
{
{
.name = "Test 1.3.1",
.priv = &test_val3,
.max = 1,
.icon_type = IT_BOOL
},
{
.name = "Test 1.3.2",
.priv = &test_val4,
.max = 4
},
{
.name = "Test 1.3.3",
.priv = &test_val5,
.max = 4,
},
MENU_EOL
}
},
MENU_EOL
}
},
{
.name = "Test 2",
.select = menu_open_submenu,
.children = (struct menu_entry[])
{
{
.name = "Test 2.1"
},
{
.name = "Test 2.2"
},
{
.name = "Test 2.3"
},
MENU_EOL
}
},
{
.name = "Test 3"
},
MENU_EOL
}
}
};
unsigned int test_init()
{
menu_add("Debug", test_menu, COUNT(test_menu));
return 0;
}
unsigned int test_deinit()
{
return 0;
}
MODULE_INFO_START()
MODULE_INIT(test_init)
MODULE_DEINIT(test_deinit)
MODULE_INFO_END()