|
|
1.1 root 1: #include <X11/copyright.h>
2:
3: /* $Header: XMenu.h,v 1.4 87/08/03 19:46:38 swick Exp $ */
4: /* Copyright Massachusetts Institute of Technology 1985 */
5:
6: /*
7: * XMenu: MIT Project Athena, X Window system menu package
8: *
9: * XMenu.h - Include file for the MIT Project Athena
10: * XMenu X window system menu package.
11: *
12: * Author: Tony Della Fera, DEC
13: * August, 1984
14: */
15:
16: #ifndef _XMenu_h_
17: #define _XMenu_h_
18:
19: #include <X11/Xutil.h>
20:
21: #define FAILURE -1
22: #define SUCCESS 1
23: #define POST_ERROR -1
24: #define NO_SELECTION -1
25:
26: #define XM_FAILURE -1
27: #define XM_SUCCESS 1
28: #define XM_NO_SELECT 2
29: #define XM_IA_SELECT 3
30:
31: #define XME_CODE_COUNT 17
32:
33: #define XME_NO_ERROR 0
34: #define XME_NOT_INIT 1
35: #define XME_ARG_BOUNDS 2
36: #define XME_P_NOT_FOUND 3
37: #define XME_S_NOT_FOUND 4
38: #define XME_STYLE_PARAM 5
39: #define XME_GRAB_MOUSE 6
40: #define XME_INTERP_LOC 7
41: #define XME_CALLOC 8
42: #define XME_CREATE_ASSOC 9
43: #define XME_STORE_BITMAP 10
44: #define XME_MAKE_TILES 11
45: #define XME_MAKE_PIXMAP 12
46: #define XME_CREATE_CURSOR 13
47: #define XME_OPEN_FONT 14
48: #define XME_CREATE_WINDOW 15
49: #define XME_CREATE_TRANSP 16
50:
51: /*
52: * XMenu error code and error list definitions.
53: */
54: extern int _XMErrorCode;
55: extern char *_XMErrorList[];
56:
57: /*
58: * Define the XMWindow datatypes.
59: *
60: * An XMWindow is either an XMPane or an XMSelect.
61: *
62: * XMWindow is wrapper used to identify the constant window
63: * information that makes up XMPane and XMSelect objects.
64: *
65: * An XMPane is a menu pane made up of one or more XMSelect and a label.
66: *
67: * An XMSelect is a menu selection object with a label and a data pointer.
68: */
69: typedef enum _xmwintype {PANE, SELECTION, PL_HEADER, SL_HEADER} XMWType;
70:
71: typedef struct _xmwindow {
72: struct _xmwindow *next; /* Next obj pointer (for insque). */
73: struct _xmwindow *prev; /* Prev obj pointer (for insque). */
74: XMWType type; /* Type of window. */
75: Window window; /* X Window Id. */
76: int window_x; /* Window upper left X coordinate. */
77: int window_y; /* Window upper left y coordinate. */
78: int window_w; /* Window width. */
79: int window_h; /* Window height. */
80: int active; /* Window active? */
81: int activated; /* Window activated? */
82: int pad_l1; /* ---- */
83: char *pad_l2; /* ---- */
84: int pad_l3; /* ---- */
85: int pad_l4; /* ---- */
86: int pad_l5; /* ---- */
87: int pad_l6; /* ---- */
88: int pad_l7; /* ---- */
89: int pad_l8; /* ---- */
90: struct _xmwindow *pad_l9; /* ---- */
91: char *pad_l10; /* ---- */
92: struct _xmwindow *pad_l11; /* ---- */
93: } XMWindow;
94:
95: typedef struct _xmpane {
96: struct _xmpane *next; /* Next obj pointer (for insque). */
97: struct _xmpane *prev; /* Prev obj pointer (for insque). */
98: XMWType type; /* Type of window. */
99: Window window; /* X Window Id. */
100: int window_x; /* Window upper left X coordinate. */
101: int window_y; /* Window upper left y coordinate. */
102: int window_w; /* Window width. */
103: int window_h; /* Window height. */
104: int active; /* Window active? */
105: int activated; /* Window activated? */
106: int serial; /* -- Pane serial number. */
107: char *label; /* -- Pane label. */
108: int label_width; /* -- Pane label width in pixels. */
109: int label_length; /* -- Pane label length in chars. */
110: int label_x; /* -- Pane label X offset. */
111: int label_uy; /* -- Pane label upper Y offset. */
112: int label_ly; /* -- Pane label lower Y offset. */
113: int s_count; /* -- Selections in this pane. */
114: struct _xmselect *s_list; /* -- Selection window list. */
115: char *pad_l10; /* ---- */
116: struct _xmwindow *pad_l11; /* ---- */
117: } XMPane;
118:
119: typedef struct _xmselect {
120: struct _xmselect *next; /* Next obj pointer (for insque). */
121: struct _xmselect *prev; /* Prev obj pointer (for insque). */
122: XMWType type; /* Type of window. */
123: Window window; /* X Window Id. */
124: Window parent; /* X Window id of parent window. */
125: int window_x; /* Window upper left X coordinate. */
126: int window_y; /* Window upper left y coordinate. */
127: int window_w; /* Window width. */
128: int window_h; /* Window height. */
129: int active; /* Window active? */
130: int activated; /* Window activated? */
131: int serial; /* -- Selection serial number. */
132: char *label; /* -- Selection label. */
133: int label_width; /* -- Selection label width in pixels. */
134: int label_length; /* -- Selection label length in chars. */
135: int label_x; /* -- Selection label X offset. */
136: int label_y; /* -- Selection label Y offset. */
137: int pad_l7; /* ---- */
138: int pad_l8; /* ---- */
139: struct _xmwindow *pad_l9; /* ---- */
140: char *data; /* -- Selection data pointer. */
141: struct _xmpane *parent_p; /* -- Selection parent pane structure. */
142: } XMSelect;
143:
144:
145: /*
146: * Define the XMStyle datatype.
147: *
148: * Menu presentation style information.
149: *
150: */
151: typedef enum _xmstyle {
152: LEFT, /* Left oriented obejct. */
153: RIGHT, /* Right oriented obejct. */
154: CENTER /* Center oriented object. */
155: } XMStyle;
156:
157:
158: /*
159: * Define the XMMode datatype.
160: *
161: * Menu presentation mode information.
162: *
163: */
164: typedef enum _xmmode {
165: BOX, /* BOXed graphic rendition. */
166: INVERT, /* INVERTed graphic rendition. */
167: } XMMode;
168:
169:
170: /*
171: * Define the XMenu datatype.
172: *
173: * All dimensions are in pixels unless otherwise noted.
174: */
175: typedef struct _xmenu {
176: /* -------------------- Menu data -------------------- */
177: XMStyle menu_style; /* Menu display style. */
178: XMMode menu_mode; /* Menu display mode. */
179: int freeze; /* Freeze server mode? */
180: int aeq; /* Asynchronous Event Queueing mode? */
181: int recompute; /* Recompute menu dependecies? */
182: Window parent; /* Menu's parent window. */
183: int width; /* Overall menu width. */
184: int height; /* Overall menu height. */
185: int x_pos; /* Oveall menu origin. */
186: int y_pos; /* Overall menu origin. */
187: Cursor mouse_cursor; /* Mouse cursor raster. */
188: XAssocTable *assoc_tab; /* XMWindow association table. */
189: XMPane *p_list; /* List of XMPanes. */
190: /* -------------------- Pane window data -------------------- */
191: XMStyle p_style; /* Pane display style. */
192: int p_events; /* Pane window X events. */
193: XFontStruct *p_fnt_info; /* Flag font info structure. */
194: GC pane_GC; /* Pane graphics context. */
195: int p_fnt_pad; /* Fixed flag font padding in pixels. */
196: double p_spread; /* Pane spread in flag height fractions. */
197: int p_bdr_width; /* Pane border width. */
198: int flag_height; /* Flag height. */
199: int p_width; /* Menu pane width. */
200: int p_height; /* Menu pane height. */
201: int p_x_off; /* Pane window X offset. */
202: int p_y_off; /* Pane window Y offset. */
203: int p_count; /* Number of panes per menu. */
204: /* -------------------- Selection window data -------------------- */
205: XMStyle s_style; /* Selection display style. */
206: int s_events; /* Selection window X events. */
207: XFontStruct *s_fnt_info; /* Body font info structure. */
208: int s_fnt_pad; /* Fixed body font padding in pixels. */
209: double s_spread; /* Select spread in line height fractions. */
210: int s_bdr_width; /* Select border width. */
211: int s_width; /* Selection window width. */
212: int s_height; /* Selection window height. */
213: int s_x_off; /* Selection window X offset. */
214: int s_y_off; /* Selection window Y offset. */
215: int s_count; /* Maximum number of selections per pane. */
216: GC normal_select_GC; /* GC used for inactive selections. */
217: GC inverse_select_GC; /* GC used for active (current) selection. */
218: GC inact_GC; /* GC used for inactive selections and */
219: /* panes headers. */
220: /* -------------------- Color data -------------------- */
221: int p_bdr_color; /* Color of pane border pixmap. */
222: int s_bdr_color; /* Color of selection border pixmap. */
223: int p_frg_color; /* Color of pane foreground pixmap. */
224: int s_frg_color; /* Color of selection pixmap. */
225: int bkgnd_color; /* Color of menu background pixmap. */
226: /* -------------------- Pixmap data -------------------- */
227: Pixmap p_bdr_pixmap; /* Pane border pixmap. */
228: Pixmap s_bdr_pixmap; /* Selection border pixmap. */
229: Pixmap p_frg_pixmap; /* Pane foreground pixmap. */
230: Pixmap s_frg_pixmap; /* Selection foreground pixmap. */
231: Pixmap bkgnd_pixmap; /* Menu background pixmap. */
232: Pixmap inact_pixmap; /* Menu inactive pixmap. */
233: } XMenu;
234:
235: /*
236: * XMenu library routine declarations.
237: */
238: XMenu *XMenuCreate();
239: int XMenuAddPane();
240: int XMenuAddSelection();
241: int XMenuInsertPane();
242: int XMenuInsertSelection();
243: int XMenuFindPane();
244: int XMenuFindSelection();
245: int XMenuChangePane();
246: int XMenuChangeSelection();
247: int XMenuSetPane();
248: int XMenuSetSelection();
249: int XMenuRecompute();
250: int XMenuEventHandler(); /* No value actually returned. */
251: int XMenuLocate();
252: int XMenuSetFreeze(); /* No value actually returned. */
253: int XMenuActivate();
254: char *XMenuPost();
255: int XMenuDeletePane();
256: int XMenuDeleteSelection();
257: int XMenuDestroy(); /* No value actually returned. */
258: char *XMenuError();
259:
260: #endif
261: /* Don't add after this point. */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.