1 /* $Id: menu.h,v 1.17 2005/03/20 20:15:32 demailly Exp $ */ 2 3 typedef void (*PaintMenuCallback) (Widget, Widget); 4 5 typedef struct PaintMenuItem_s { 6 Widget widget; 7 char *name; 8 PaintMenuCallback callback; 9 void *data; 10 int flags; 11 int nright; 12 struct PaintMenuItem_s *right; 13 Widget rightShell; 14 } PaintMenuItem; 15 16 #define MF_NONE 0x00 17 #define MF_CHECK 0x01 18 #define MF_CHECKON (0x01|0x02) 19 20 #define MF_GROUP1 0x10 21 #define MF_GROUP2 0x20 22 #define MF_GROUP3 0x40 23 #define MF_GROUP4 0x80 24 #define MF_GROUP5 0x100 25 26 typedef struct { 27 Widget widget; 28 char *name; 29 int nitems; 30 PaintMenuItem *items; 31 } PaintMenuBar; 32 33 extern Widget MenuBarCreate(Widget, int, PaintMenuBar[]); 34 extern Widget MenuPopupCreate(Widget, char *, int, PaintMenuItem[]); 35 extern void MenuCheckItem(Widget, Boolean); 36 extern Boolean IsItemChecked(Widget); 37 extern void PopdownMenusGlobal(); 38 39 #define MI_NEW(name, flag, cb, cbdata, nright, right) \ 40 { None, name, (PaintMenuCallback)cb, (void*)cbdata, flag, nright, right, None } 41 #define MI_RIGHT(name, nright, right) \ 42 MI_NEW(name, MF_NONE, NULL, NULL, nright, right) 43 #define MI_FLAGCB(name, flag, cb, cbdata) \ 44 MI_NEW(name, flag, cb, cbdata, 0, NULL) 45 #define MI_FLAG(name, flag) \ 46 MI_FLAGCB(name, flag, NULL, NULL) 47 #define MI_SIMPLECB(name, cb, cbdata) \ 48 MI_FLAGCB(name, MF_NONE, cb, cbdata) 49 #define MI_SIMPLE(name) \ 50 MI_SIMPLECB(name, NULL, NULL) 51 #define MI_SEPARATOR() MI_SIMPLE("") 52