root/trunk/oldXMenu/XMenu.h

Revision 4196, 9.1 kB (checked in by miyoshi, 2 years ago)

Sync up with Emacs CVS HEAD.

  • Property svn:eol-style set to native
Line 
1 /* Copyright    Massachusetts Institute of Technology    1985   */
2
3 #include "copyright.h"
4
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 "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, SEPARATOR} XMWType;
71
72 typedef struct _xmwindow {
73     struct _xmwindow *next;     /* Next obj pointer (for emacs_insque). */
74     struct _xmwindow *prev;     /* Prev obj pointer (for emacs_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 emacs_insque). */
98     struct _xmpane *prev;       /* Prev obj pointer (for emacs_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 emacs_insque). */
122     struct _xmselect *prev;     /* Prev obj pointer (for emacs_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     char *help_string;          /* Help string or null.  */
144 } XMSelect;
145
146
147 /*
148  * Define the XMStyle datatype.
149  *
150  * Menu presentation style information.
151  *
152  */
153 typedef enum _xmstyle {
154     LEFT,                       /* Left oriented obejct. */
155     RIGHT,                      /* Right oriented obejct. */
156     CENTER                      /* Center oriented object. */
157 } XMStyle;
158
159
160 /*
161  * Define the XMMode datatype.
162  *
163  * Menu presentation mode information.
164  *
165  */
166 typedef enum _xmmode {
167     BOX,                        /* BOXed graphic rendition. */
168     INVERT                      /* INVERTed graphic rendition. */
169 } XMMode;
170
171
172 /*
173  * Define the XMenu datatype.
174  *
175  * All dimensions are in pixels unless otherwise noted.
176  */
177 typedef struct _xmenu {
178     /* -------------------- Menu data -------------------- */
179     XMStyle menu_style;         /* Menu display style. */
180     XMMode menu_mode;           /* Menu display mode. */
181     int freeze;                 /* Freeze server mode? */
182     int aeq;                    /* Asynchronous Event Queuing mode? */
183     int recompute;              /* Recompute menu dependencies? */
184     Window parent;              /* Menu's parent window. */
185     int width;                  /* Overall menu width. */
186     int height;                 /* Overall menu height. */
187     int x_pos;                  /* Oveall menu origin. */
188     int y_pos;                  /* Overall menu origin. */
189     Cursor mouse_cursor;        /* Mouse cursor raster. */
190     XAssocTable *assoc_tab;     /* XMWindow association table. */
191     XMPane *p_list;             /* List of XMPanes. */
192     /* -------------------- Pane window data -------------------- */
193     XMStyle p_style;            /* Pane display style. */
194     int p_events;               /* Pane window X events. */
195     XFontStruct *p_fnt_info;    /* Flag font info structure. */
196     GC pane_GC;                 /* Pane graphics context. */
197     int p_fnt_pad;              /* Fixed flag font padding in pixels. */
198     double p_spread;            /* Pane spread in flag height fractions. */
199     int p_bdr_width;            /* Pane border width. */
200     int flag_height;            /* Flag height. */
201     int p_width;                /* Menu pane width. */
202     int p_height;               /* Menu pane height. */
203     int p_x_off;                /* Pane window X offset. */
204     int p_y_off;                /* Pane window Y offset. */
205     int p_count;                /* Number of panes per menu. */
206     /* -------------------- Selection window data -------------------- */
207     XMStyle s_style;            /* Selection display style. */
208     int s_events;               /* Selection window X events. */
209     XFontStruct *s_fnt_info;    /* Body font info structure. */
210     int s_fnt_pad;              /* Fixed body font padding in pixels. */
211     double s_spread;            /* Select spread in line height fractions. */
212     int s_bdr_width;            /* Select border width. */
213     int s_width;                /* Selection window width. */
214     int s_height;               /* Selection window height. */
215     int s_x_off;                /* Selection window X offset. */
216     int s_y_off;                /* Selection window Y offset. */
217     int s_count;                /* Maximum number of selections per pane. */
218     GC normal_select_GC;        /* GC used for inactive selections. */
219     GC inverse_select_GC;       /* GC used for active (current) selection. */
220     GC inact_GC;                /* GC used for inactive selections and */
221                                 /* panes headers. */
222     /* -------------------- Color data -------------------- */
223     unsigned long p_bdr_color;  /* Color of pane border pixmap. */
224     unsigned long s_bdr_color;  /* Color of selection border pixmap. */
225     unsigned long p_frg_color;  /* Color of pane foreground pixmap. */
226     unsigned long s_frg_color;  /* Color of selection pixmap. */
227     unsigned long bkgnd_color;  /* Color of menu background pixmap. */
228     /* -------------------- Pixmap data -------------------- */
229     Pixmap p_bdr_pixmap;        /* Pane border pixmap. */
230     Pixmap s_bdr_pixmap;        /* Selection border pixmap. */
231     Pixmap p_frg_pixmap;        /* Pane foreground pixmap. */
232     Pixmap s_frg_pixmap;        /* Selection foreground pixmap. */
233     Pixmap bkgnd_pixmap;        /* Menu background pixmap. */
234     Pixmap inact_pixmap;        /* Menu inactive pixmap. */
235 } XMenu;
236
237 /*
238  * XMenu library routine declarations.
239  */
240 XMenu *XMenuCreate();
241 int XMenuAddPane();
242 int XMenuAddSelection();
243 int XMenuInsertPane();
244 int XMenuInsertSelection();
245 int XMenuFindPane();
246 int XMenuFindSelection();
247 int XMenuChangePane();
248 int XMenuChangeSelection();
249 int XMenuSetPane();
250 int XMenuSetSelection();
251 int XMenuRecompute();
252 int XMenuEventHandler();        /* No value actually returned. */
253 int XMenuLocate();
254 int XMenuSetFreeze();           /* No value actually returned. */
255 void XMenuActivateSetWaitFunction();
256 int XMenuActivate();
257 char *XMenuPost();
258 int XMenuDeletePane();
259 int XMenuDeleteSelection();
260 int XMenuDestroy();             /* No value actually returned. */
261 char *XMenuError();
262
263 #endif
264 /* Don't add after this point. */
265
266 /* arch-tag: 7e57b5ac-9355-4057-9385-afbe6912d60f
267    (do not change this comment) */
Note: See TracBrowser for help on using the browser.