--- lbbs/include/menu.h 2005/03/18 16:05:57 1.1 +++ lbbs/include/menu.h 2005/03/19 14:44:21 1.4 @@ -15,20 +15,61 @@ * * ***************************************************************************/ -#define MAX_MENUITEM_LENGTH 50 -#define MAX_MENUITEMS 30 +#define MAX_MENUITEM_LENGTH 50 +#define MAX_MENUITEMS 30 +#define MAX_MENUNAME_LENGTH 20 +#define MAX_MENUACTION_LENGTH 20 +#define MAX_MENUTITLE_LENGTH 50 +#define MAX_MENUS 256 +#define MAX_MENU_DEPTH 50 -struct _menuitem { - int col, row; - char key; +struct _menu_item { + int row, col, r_row, r_col; + char action[MAX_MENUACTION_LENGTH]; + int submenu; + int priv, display; + char name[MAX_MENUNAME_LENGTH]; char text[MAX_MENUITEM_LENGTH]; }; -typedef struct _menuitem MENUITEM; +typedef struct _menu_item MENU_ITEM; + +struct _menu_title { + int row, col; + char text[MAX_MENUTITLE_LENGTH]; +}; +typedef struct _menu_title MENU_TITLE; + +struct _menu_screen { + int row, col; + char filename[256]; +}; +typedef struct _menu_screen MENU_SCREEN; struct _menu { - MENUITEM items[MAX_MENUITEMS]; + char name[MAX_MENUNAME_LENGTH]; + MENU_TITLE title; + MENU_SCREEN screen; + MENU_ITEM *items[MAX_MENUITEMS]; int item_count, item_cur_pos; }; typedef struct _menu MENU; -extern MENU bbs_main_menu; +struct _menu_set { + MENU *p_menu[MAX_MENUS]; + MENU *p_menu_select[MAX_MENU_DEPTH]; + int menu_count; + int menu_select_depth; +}; +typedef struct _menu_set MENU_SET; + +extern MENU_SET bbs_menu; + +const char * +menu_control (MENU_SET * p_menu_set, int key); + +int +display_menu (MENU * p_menu); + +MENU * +get_menu (MENU_SET * p_menu_set, const char * menu_name); +