|
|
1.1 root 1: /*
2: * $Source: /u1/X/xterm/RCS/menu.h,v $
3: * $Header: menu.h,v 10.100 86/12/01 14:40:05 jg Rel $
4: */
5:
6: /* @(#)menu.h X10/6.6B 12/26/86 */
7: /*
8: * Menu items are constructed as follows, starting from the left side:
9: *
10: * menuItemPad
11: * space for check mark
12: * menuItemPad
13: * text + padding
14: * menuItemPad
15: *
16: * The padding for the text is that amount that this text is narrower than the
17: * widest text.
18: */
19:
20: typedef struct _menuItem {
21: int itemHeight; /* total height of this item */
22: int itemFlags; /* flags of item */
23:
24: #define itemDisabled 0x0001 /* item is disabled */
25: #define itemChecked 0x0002 /* item has check mark */
26: #define itemStateMask 0x0003 /* mask for current state */
27: #define itemSetDisabled 0x0004 /* item wants to be disabled */
28: #define itemSetChecked 0x0008 /* item wants check mark */
29: #define itemSetMask 0x000c /* mask for desired state */
30: #define itemSetMaskShift 2 /* for comparison with actual */
31: #define itemChanged 0x0010 /* item desires change */
32:
33: char *itemText; /* text of item */
34: int itemTextWidth; /* width of text */
35: int itemTextLength; /* length of text */
36: struct _menuItem *nextItem; /* next item in chain */
37: } MenuItem;
38:
39: typedef struct _menu {
40: int menuWidth; /* full width of menu */
41: int menuHeight; /* full height of menu */
42: int menuFlags; /* flags of this menu */
43:
44: # define menuChanged 0x0001 /* menu changed, must redraw */
45: # define menuItemChanged 0x0002 /* item changed, must redraw */
46: # define menuMapped 0x0004 /* menu is now mapped */
47: # define menuFreeze 0x0008 /* freeze when doing menu */
48: # define menuSaveMenu 0x0010 /* save copy of menu */
49:
50: int menuMaxTextWidth; /* width of widest text */
51: int menuInitialItem; /* < 0 none, >= 0 initial item */
52: int menuBorderWidth; /* width of border */
53: int menuBgColor; /* background color */
54: int menuFgColor; /* foreground color */
55: Pixmap menuBgTile; /* backgroud tile */
56: FontInfo *menuFontInfo; /* fontinfo for menu font */
57: int menuItemPad; /* pad amount */
58: Window menuWindow; /* window of menu */
59: int (*menuEventHandler)(); /* external event handler */
60: Cursor menuCursor; /* cursor used in menu */
61: Pixmap menuSaved; /* copy of menu */
62: Pixmap menuSavedImage; /* copy of image under menu */
63: int menuSavedImageX; /* X coordinate of the saved image */
64: int menuSavedImageY; /* Y coordinate of the saved image */
65: MenuItem *menuItems; /* head of menu item chain */
66: char *menuTitle; /* title of menu */
67: int menuTitleWidth; /* width of title */
68: int menuTitleLength; /* length of title */
69: int menuItemTop; /* position of top of first item */
70: } Menu;
71:
72: #define checkMarkWidth 9
73: #define checkMarkHeight 8
74: #define defaultCursorWidth 16
75: #define defaultCursorHeight 16
76: #define defaultCursorX 1
77: #define defaultCursorY 1
78: #define grayHeight 16
79: #define grayWidth 16
80: #define lineSeparatorHeight 9
81:
82: #define CheckItem(menu,item) SetItemCheck(menu,item,1)
83: #define DisableItem(menu,item) SetItemDisable(menu,item,1)
84: #define EnableItem(menu,item) SetItemDisable(menu,item,0)
85: #define SetMenuEventHandler(menu,f) menu->menuEventHandler = f
86: #define UncheckItem(menu,item) SetItemCheck(menu,item,0)
87:
88: extern Menu *NewMenu();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.