bsp
menu.h
00001 #ifndef _MENU_H_
00002 #define _MENU_H_
00003 
00004 //flags
00005 #define MENU_FLAG_SOFT                1                 //option visible in software mode only
00006 #define MENU_FLAG_GL                  2                 //option visible in gl mode only
00007 #define MENU_FLAG_BMP                             4                     //menu should draw assoc. bmp
00008 //                                                         0xF8 reserved for new rendering modes or stuff
00009 #define MENU_FLAG_SUBMENU             0x100                     //menuitem is submenu rather than ccmd_t
00010 #define MENU_FLAG_SEPARATOR           0x200                     //separator
00011 #define MENU_FLAG_RECENT                  0x400                 //evaluate to recent list
00012 #define MENU_FLAG_EXPORT                  0x800                 //evaluate to export list
00013 #define MENU_FLAG_GAME               0x1000                     //check game value
00014 #define MENU_FLAG_GAME_MASK  0xF0000000                 //upper 4 bits == set.game_mode
00015 #define MENU_MAKE_GAME_VAL(v) (((v)&0xF)<<28)   //convert game number to or'able value
00016 #define MENU_GET_GAME_VAL(v) ((int)(((v)>>28)&0xF))
00017 //tokens
00018 #define MENU_TOKEN_SOFT                 "SOFT"
00019 #define MENU_TOKEN_GL                   "GL"
00020 #define MENU_TOKEN_GAME                 "GAME"
00021 #define MENU_TOKEN_BMP                  "BMP"
00022 #define MENU_TOKEN_MENU                 "MENU"
00023 #define MENU_TOKEN_POPUP                "POPUP"
00024 #define MENU_TOKEN_SUBMENU              "SUBMENU"
00025 #define MENU_TOKEN_ENTER_SCOPE  "{"
00026 #define MENU_TOKEN_LEAVE_SCOPE  "}"
00027 #define MENU_TOKEN_SEPARATOR    "-"
00028 #define MENU_TOKEN_RECENT               "recent_files"
00029 #define MENU_TOKEN_EXPORT               "exporters"
00030 //menu_t types
00031 #define MENU_TYPE_MENU                  1
00032 #define MENU_TYPE_POPUP                 2
00033 //stuff
00034 #define MENU_MAX_SUBMENUS 8
00035 
00036 //built-in menus
00037 #define MENU_BSP_MAIN "bspmenu"
00038 
00039 typedef struct menuitem_s
00040 {
00041     ccmd_t *cmd;
00042     unsigned int flags;
00043     char *submenu_text;
00044     menuitem_s *submenu;
00045     menuitem_s *next;
00046     menuitem_s *prev;
00047 } menuitem_t;
00048 
00049 typedef struct menu_s
00050 {
00051     char name[30];
00052     HMENU hMenu;
00053     int type;
00054     menuitem_t *menu;
00055     menu_s *next;
00056 } menu_t;
00057 extern void Menu_Initialize();
00058 extern void Menu_Destroy();
00059 extern void Menu_DestroyMenus();
00060 extern void Menu_LoadConfig(char *file);
00061 
00062 extern bool Menu_Create(menu_t *menu);
00063 extern menu_t *Menu_Find(char *name);
00064 
00065 #endif //_MENU_H_
 All Classes Functions