| 38 |
|
|
| 39 |
#define MENU_SET_RESERVED_LENGTH (sizeof(int16_t) * 4) |
#define MENU_SET_RESERVED_LENGTH (sizeof(int16_t) * 4) |
| 40 |
|
|
| 41 |
MENU_SET *p_bbs_menu; |
MENU_SET bbs_menu; |
| 42 |
|
|
| 43 |
int load_menu(MENU_SET *p_menu_set, const char *conf_file) |
int load_menu(MENU_SET *p_menu_set, const char *conf_file) |
| 44 |
{ |
{ |
| 60 |
key_t key; |
key_t key; |
| 61 |
size_t size; |
size_t size; |
| 62 |
|
|
| 63 |
|
// Initialize the data structure |
| 64 |
|
memset(p_menu_set, 0, sizeof(*p_menu_set)); |
| 65 |
|
|
| 66 |
// Use trie_dict to search menu_id by menu name |
// Use trie_dict to search menu_id by menu name |
| 67 |
p_menu_set->p_menu_name_dict = trie_dict_create(); |
p_menu_set->p_menu_name_dict = trie_dict_create(); |
| 68 |
if (p_menu_set->p_menu_name_dict == NULL) |
if (p_menu_set->p_menu_name_dict == NULL) |
| 122 |
p_menu_set->menu_screen_count = 0; |
p_menu_set->menu_screen_count = 0; |
| 123 |
p_menu_set->choose_step = 0; |
p_menu_set->choose_step = 0; |
| 124 |
p_menu_set->menu_id_path[0] = 0; |
p_menu_set->menu_id_path[0] = 0; |
| 125 |
|
p_menu_set->menu_item_pos[0] = 0; |
| 126 |
p_menu_set->allow_exit = 0; |
p_menu_set->allow_exit = 0; |
| 127 |
|
|
| 128 |
while (fgets(buffer, sizeof(buffer), fin)) |
while (fgets(buffer, sizeof(buffer), fin)) |
| 988 |
return EXITMENU; |
return EXITMENU; |
| 989 |
} |
} |
| 990 |
|
|
| 991 |
|
if(p_menu->item_count <= 0) // empty menu |
| 992 |
|
{ |
| 993 |
|
moveto(p_menu->screen_row, p_menu->screen_col); |
| 994 |
|
clrtoeol(); |
| 995 |
|
prints("没有可选项"); |
| 996 |
|
press_any_key(); |
| 997 |
|
return -1; |
| 998 |
|
} |
| 999 |
|
|
| 1000 |
menu_item_pos = p_menu_set->menu_item_pos[p_menu_set->choose_step]; |
menu_item_pos = p_menu_set->menu_item_pos[p_menu_set->choose_step]; |
| 1001 |
menu_item_id = p_menu->items[menu_item_pos]; |
menu_item_id = p_menu->items[menu_item_pos]; |
| 1002 |
p_menu_item = get_menu_item_by_id(p_menu_set, menu_item_id); |
p_menu_item = get_menu_item_by_id(p_menu_set, menu_item_id); |
| 1068 |
{ |
{ |
| 1069 |
moveto(p_menu->screen_row, p_menu->screen_col); |
moveto(p_menu->screen_row, p_menu->screen_col); |
| 1070 |
clrtoeol(); |
clrtoeol(); |
| 1071 |
prints("ûпѡ"); |
prints("没有可选项"); |
| 1072 |
press_any_key(); |
press_any_key(); |
| 1073 |
return -1; |
return -1; |
| 1074 |
} |
} |
| 1408 |
p_menu_set->p_menu_screen_buf = p_menu_set->p_menu_screen_pool + sizeof(MENU_SCREEN) * MAX_MENUS; |
p_menu_set->p_menu_screen_buf = p_menu_set->p_menu_screen_pool + sizeof(MENU_SCREEN) * MAX_MENUS; |
| 1409 |
p_menu_set->p_menu_screen_buf_free = p_menu_set->p_menu_screen_buf; |
p_menu_set->p_menu_screen_buf_free = p_menu_set->p_menu_screen_buf; |
| 1410 |
|
|
| 1411 |
|
p_menu_set->choose_step = 0; |
| 1412 |
|
p_menu_set->menu_id_path[0] = 0; |
| 1413 |
|
p_menu_set->menu_item_pos[0] = 0; |
| 1414 |
|
|
| 1415 |
return 0; |
return 0; |
| 1416 |
} |
} |
| 1417 |
|
|