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