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