initial commit
[profile/ivi/xterm.git] / menu.h
1 /* $XTermId: menu.h,v 1.122 2011/01/20 09:42:50 tom Exp $ */
2
3 /*
4  * Copyright 1999-2010,2011 by Thomas E. Dickey
5  *
6  *                         All Rights Reserved
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the
10  * "Software"), to deal in the Software without restriction, including
11  * without limitation the rights to use, copy, modify, merge, publish,
12  * distribute, sublicense, and/or sell copies of the Software, and to
13  * permit persons to whom the Software is furnished to do so, subject to
14  * the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be included
17  * in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22  * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
23  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26  *
27  * Except as contained in this notice, the name(s) of the above copyright
28  * holders shall not be used in advertising or otherwise to promote the
29  * sale, use or other dealings in this Software without prior written
30  * authorization.
31  *
32  *
33  * Copyright 1989  The Open Group
34  *
35  * Permission to use, copy, modify, distribute, and sell this software and its
36  * documentation for any purpose is hereby granted without fee, provided that
37  * the above copyright notice appear in all copies and that both that
38  * copyright notice and this permission notice appear in supporting
39  * documentation.
40  *
41  * The above copyright notice and this permission notice shall be included
42  * in all copies or substantial portions of the Software.
43  *
44  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
45  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
46  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
47  * IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
48  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
49  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
50  * OTHER DEALINGS IN THE SOFTWARE.
51  *
52  * Except as contained in this notice, the name of The Open Group shall
53  * not be used in advertising or otherwise to promote the sale, use or
54  * other dealings in this Software without prior written authorization
55  * from The Open Group.
56  *
57  */
58
59 #ifndef included_menu_h
60 #define included_menu_h
61 /* *INDENT-OFF* */
62
63 #include <xterm.h>
64
65 typedef struct _MenuEntry {
66     const char *name;
67     void (*function) PROTO_XT_CALLBACK_ARGS;
68     Widget widget;
69 } MenuEntry;
70
71 extern MenuEntry mainMenuEntries[], vtMenuEntries[];
72 extern MenuEntry fontMenuEntries[];
73 #if OPT_TEK4014
74 extern MenuEntry tekMenuEntries[];
75 #endif
76
77 extern void Handle8BitControl      PROTO_XT_ACTIONS_ARGS;
78 extern void HandleAllow132         PROTO_XT_ACTIONS_ARGS;
79 extern void HandleAllowColorOps    PROTO_XT_ACTIONS_ARGS;
80 extern void HandleAllowFontOps     PROTO_XT_ACTIONS_ARGS;
81 extern void HandleAllowSends       PROTO_XT_ACTIONS_ARGS;
82 extern void HandleAllowTcapOps     PROTO_XT_ACTIONS_ARGS;
83 extern void HandleAllowTitleOps    PROTO_XT_ACTIONS_ARGS;
84 extern void HandleAllowWindowOps   PROTO_XT_ACTIONS_ARGS;
85 extern void HandleAltEsc           PROTO_XT_ACTIONS_ARGS;
86 extern void HandleAltScreen        PROTO_XT_ACTIONS_ARGS;
87 extern void HandleAppCursor        PROTO_XT_ACTIONS_ARGS;
88 extern void HandleAppKeypad        PROTO_XT_ACTIONS_ARGS;
89 extern void HandleAutoLineFeed     PROTO_XT_ACTIONS_ARGS;
90 extern void HandleAutoWrap         PROTO_XT_ACTIONS_ARGS;
91 extern void HandleBackarrow        PROTO_XT_ACTIONS_ARGS;
92 extern void HandleBellIsUrgent     PROTO_XT_ACTIONS_ARGS;
93 extern void HandleClearSavedLines  PROTO_XT_ACTIONS_ARGS;
94 extern void HandleCreateMenu       PROTO_XT_ACTIONS_ARGS;
95 extern void HandleCursesEmul       PROTO_XT_ACTIONS_ARGS;
96 extern void HandleCursorBlink      PROTO_XT_ACTIONS_ARGS;
97 extern void HandleDeleteIsDEL      PROTO_XT_ACTIONS_ARGS;
98 extern void HandleFontBoxChars     PROTO_XT_ACTIONS_ARGS;
99 extern void HandleFontDoublesize   PROTO_XT_ACTIONS_ARGS;
100 extern void HandleFontLoading      PROTO_XT_ACTIONS_ARGS;
101 extern void HandleFontPacked       PROTO_XT_ACTIONS_ARGS;
102 extern void HandleFullscreen       PROTO_XT_ACTIONS_ARGS;
103 extern void HandleHardReset        PROTO_XT_ACTIONS_ARGS;
104 extern void HandleHpFunctionKeys   PROTO_XT_ACTIONS_ARGS;
105 extern void HandleJumpscroll       PROTO_XT_ACTIONS_ARGS;
106 extern void HandleKeepSelection    PROTO_XT_ACTIONS_ARGS;
107 extern void HandleLogging          PROTO_XT_ACTIONS_ARGS;
108 extern void HandleMarginBell       PROTO_XT_ACTIONS_ARGS;
109 extern void HandleMetaEsc          PROTO_XT_ACTIONS_ARGS;
110 extern void HandleNumLock          PROTO_XT_ACTIONS_ARGS;
111 extern void HandleOldFunctionKeys  PROTO_XT_ACTIONS_ARGS;
112 extern void HandlePopupMenu        PROTO_XT_ACTIONS_ARGS;
113 extern void HandlePrintControlMode PROTO_XT_ACTIONS_ARGS;
114 extern void HandlePrintEverything  PROTO_XT_ACTIONS_ARGS;
115 extern void HandlePrintScreen      PROTO_XT_ACTIONS_ARGS;
116 extern void HandleQuit             PROTO_XT_ACTIONS_ARGS;
117 extern void HandleRedraw           PROTO_XT_ACTIONS_ARGS;
118 extern void HandleRenderFont       PROTO_XT_ACTIONS_ARGS;
119 extern void HandleReverseVideo     PROTO_XT_ACTIONS_ARGS;
120 extern void HandleReverseWrap      PROTO_XT_ACTIONS_ARGS;
121 extern void HandleScoFunctionKeys  PROTO_XT_ACTIONS_ARGS;
122 extern void HandleScrollKey        PROTO_XT_ACTIONS_ARGS;
123 extern void HandleScrollTtyOutput  PROTO_XT_ACTIONS_ARGS;
124 extern void HandleScrollbar        PROTO_XT_ACTIONS_ARGS;
125 extern void HandleSecure           PROTO_XT_ACTIONS_ARGS;
126 extern void HandleSendSignal       PROTO_XT_ACTIONS_ARGS;
127 extern void HandleSetPopOnBell     PROTO_XT_ACTIONS_ARGS;
128 extern void HandleSetSelect        PROTO_XT_ACTIONS_ARGS;
129 extern void HandleSetTekText       PROTO_XT_ACTIONS_ARGS;
130 extern void HandleSetTerminalType  PROTO_XT_ACTIONS_ARGS;
131 extern void HandleSetVisualBell    PROTO_XT_ACTIONS_ARGS;
132 extern void HandleSoftReset        PROTO_XT_ACTIONS_ARGS;
133 extern void HandleSunFunctionKeys  PROTO_XT_ACTIONS_ARGS;
134 extern void HandleSunKeyboard      PROTO_XT_ACTIONS_ARGS;
135 extern void HandleTekCopy          PROTO_XT_ACTIONS_ARGS;
136 extern void HandleTekPage          PROTO_XT_ACTIONS_ARGS;
137 extern void HandleTekReset         PROTO_XT_ACTIONS_ARGS;
138 extern void HandleTiteInhibit      PROTO_XT_ACTIONS_ARGS;
139 extern void HandleToolbar          PROTO_XT_ACTIONS_ARGS;
140 extern void HandleUTF8Mode         PROTO_XT_ACTIONS_ARGS;
141 extern void HandleUTF8Title        PROTO_XT_ACTIONS_ARGS;
142 extern void HandleVisibility       PROTO_XT_ACTIONS_ARGS;
143
144 extern void SetupMenus (Widget /*shell*/, Widget */*forms*/, Widget */*menus*/, Dimension * /*menu_high*/);
145
146 #if OPT_TOOLBAR
147 extern void ShowToolbar(Bool);
148 #endif
149
150 /*
151  * The following definitions MUST match the order of entries given in
152  * the mainMenuEntries, vtMenuEntries, and tekMenuEntries arrays in menu.c.
153  */
154
155 /*
156  * items in primary menu
157  */
158 typedef enum {
159 #if OPT_TOOLBAR
160     mainMenu_toolbar,
161 #endif
162 #if OPT_MAXIMIZE
163     mainMenu_fullscreen,
164 #endif
165     mainMenu_securekbd,
166     mainMenu_allowsends,
167     mainMenu_redraw,
168     mainMenu_line1,
169 #ifdef ALLOWLOGGING
170     mainMenu_logging,
171 #endif
172     mainMenu_print,
173     mainMenu_print_redir,
174     mainMenu_line2,
175     mainMenu_8bit_ctrl,
176     mainMenu_backarrow,
177 #if OPT_NUM_LOCK
178     mainMenu_num_lock,
179     mainMenu_alt_esc,
180     mainMenu_meta_esc,
181 #endif
182     mainMenu_delete_del,
183     mainMenu_old_fkeys,
184 #if OPT_TCAP_FKEYS
185     mainMenu_tcap_fkeys,
186 #endif
187 #if OPT_HP_FUNC_KEYS
188     mainMenu_hp_fkeys,
189 #endif
190 #if OPT_SCO_FUNC_KEYS
191     mainMenu_sco_fkeys,
192 #endif
193 #if OPT_SUN_FUNC_KEYS
194     mainMenu_sun_fkeys,
195 #endif
196 #if OPT_SUNPC_KBD
197     mainMenu_sun_kbd,
198 #endif
199     mainMenu_line3,
200     mainMenu_suspend,
201     mainMenu_continue,
202     mainMenu_interrupt,
203     mainMenu_hangup,
204     mainMenu_terminate,
205     mainMenu_kill,
206     mainMenu_line4,
207     mainMenu_quit,
208     mainMenu_LAST
209 } mainMenuIndices;
210
211
212 /*
213  * items in vt100 mode menu
214  */
215 typedef enum {
216     vtMenu_scrollbar,
217     vtMenu_jumpscroll,
218     vtMenu_reversevideo,
219     vtMenu_autowrap,
220     vtMenu_reversewrap,
221     vtMenu_autolinefeed,
222     vtMenu_appcursor,
223     vtMenu_appkeypad,
224     vtMenu_scrollkey,
225     vtMenu_scrollttyoutput,
226     vtMenu_allow132,
227     vtMenu_keepSelection,
228     vtMenu_selectToClipboard,
229     vtMenu_visualbell,
230     vtMenu_bellIsUrgent,
231     vtMenu_poponbell,
232 #if OPT_BLINK_CURS
233     vtMenu_cursorblink,
234 #endif
235     vtMenu_titeInhibit,
236 #ifndef NO_ACTIVE_ICON
237     vtMenu_activeicon,
238 #endif /* NO_ACTIVE_ICON */
239     vtMenu_line1,
240     vtMenu_softreset,
241     vtMenu_hardreset,
242     vtMenu_clearsavedlines,
243     vtMenu_line2,
244 #if OPT_TEK4014
245     vtMenu_tekshow,
246     vtMenu_tekmode,
247     vtMenu_vthide,
248 #endif
249     vtMenu_altscreen,
250     vtMenu_LAST
251 } vtMenuIndices;
252
253 /*
254  * items in vt100 font menu
255  */
256 typedef enum {
257     fontMenu_default,
258     fontMenu_font1,
259     fontMenu_font2,
260     fontMenu_font3,
261     fontMenu_font4,
262     fontMenu_font5,
263     fontMenu_font6,
264 #define fontMenu_lastBuiltin fontMenu_font6
265     fontMenu_fontescape,
266     fontMenu_fontsel,
267 /* number of non-line items down to here should match NMENUFONTS in ptyx.h */
268
269 #if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
270     fontMenu_line1,
271 #if OPT_BOX_CHARS
272     fontMenu_font_boxchars,
273     fontMenu_font_packedfont,
274 #endif
275 #if OPT_DEC_CHRSET
276     fontMenu_font_doublesize,
277 #endif
278 #if OPT_DEC_SOFTFONT
279     fontMenu_font_loadable,
280 #endif
281 #endif
282
283 #if OPT_RENDERFONT || OPT_WIDE_CHARS
284     fontMenu_line2,
285 #if OPT_RENDERFONT
286     fontMenu_render_font,
287 #endif
288 #if OPT_WIDE_CHARS
289     fontMenu_wide_chars,
290     fontMenu_wide_title,
291 #endif
292 #endif
293 #if OPT_ALLOW_XXX_OPS
294     fontMenu_line3,
295     fontMenu_allowColorOps,
296     fontMenu_allowFontOps,
297     fontMenu_allowTcapOps,
298     fontMenu_allowTitleOps,
299     fontMenu_allowWindowOps,
300 #endif
301
302     fontMenu_LAST
303 } fontMenuIndices;
304
305 /*
306  * items in tek4014 mode menu
307  */
308 #if OPT_TEK4014
309 typedef enum {
310     tekMenu_tektextlarge,
311     tekMenu_tektext2,
312     tekMenu_tektext3,
313     tekMenu_tektextsmall,
314     tekMenu_line1,
315     tekMenu_tekpage,
316     tekMenu_tekreset,
317     tekMenu_tekcopy,
318     tekMenu_line2,
319     tekMenu_vtshow,
320     tekMenu_vtmode,
321     tekMenu_tekhide,
322     tekMenu_LAST
323 } tekMenuIndices;
324 #endif
325
326
327 /*
328  * functions for updating menus
329  */
330
331 extern void SetItemSensitivity(Widget mi, Bool val);
332
333 /*
334  * there should be one of each of the following for each checkable item
335  */
336 #if OPT_TOOLBAR
337 extern void update_toolbar(void);
338 #else
339 #define update_toolbar() /* nothing */
340 #endif
341
342 #if OPT_MAXIMIZE
343 extern void update_fullscreen(void);
344 #else
345 #define update_fullscreen() /* nothing */
346 #endif
347
348 extern void update_securekbd(void);
349 extern void update_allowsends(void);
350
351 #ifdef ALLOWLOGGING
352 extern void update_logging(void);
353 #else
354 #define update_logging() /*nothing*/
355 #endif
356
357 extern void update_print_redir(void);
358 extern void update_8bit_control(void);
359 extern void update_decbkm(void);
360
361 #if OPT_NUM_LOCK
362 extern void update_num_lock(void);
363 extern void update_alt_esc(void);
364 extern void update_meta_esc(void);
365 #else
366 #define update_num_lock() /*nothing*/
367 #define update_alt_esc()  /*nothing*/
368 #define update_meta_esc() /*nothing*/
369 #endif
370
371 extern void update_old_fkeys(void);
372 extern void update_delete_del(void);
373
374 #if OPT_SUNPC_KBD
375 extern void update_sun_kbd(void);
376 #endif
377
378 #if OPT_HP_FUNC_KEYS
379 extern void update_hp_fkeys(void);
380 #else
381 #define update_hp_fkeys() /*nothing*/
382 #endif
383
384 #if OPT_SCO_FUNC_KEYS
385 extern void update_sco_fkeys(void);
386 #else
387 #define update_sco_fkeys() /*nothing*/
388 #endif
389
390 #if OPT_SUN_FUNC_KEYS
391 extern void update_sun_fkeys(void);
392 #else
393 #define update_sun_fkeys() /*nothing*/
394 #endif
395
396 #if OPT_TCAP_FKEYS
397 extern void update_tcap_fkeys(void);
398 #else
399 #define update_tcap_fkeys() /*nothing*/
400 #endif
401
402 extern void update_scrollbar(void);
403 extern void update_jumpscroll(void);
404 extern void update_reversevideo(void);
405 extern void update_autowrap(void);
406 extern void update_reversewrap(void);
407 extern void update_autolinefeed(void);
408 extern void update_appcursor(void);
409 extern void update_appkeypad(void);
410 extern void update_scrollkey(void);
411 extern void update_keepSelection(void);
412 extern void update_selectToClipboard(void);
413 extern void update_scrollttyoutput(void);
414 extern void update_allow132(void);
415 extern void update_cursesemul(void);
416 extern void update_visualbell(void);
417 extern void update_bellIsUrgent(void);
418 extern void update_poponbell(void);
419
420 #define update_marginbell() /* nothing */
421
422 #if OPT_ALLOW_XXX_OPS
423 extern void update_menu_allowColorOps(void);
424 extern void update_menu_allowFontOps(void);
425 extern void update_menu_allowTcapOps(void);
426 extern void update_menu_allowTitleOps(void);
427 extern void update_menu_allowWindowOps(void);
428 #endif
429
430 #if OPT_BLINK_CURS
431 extern void update_cursorblink(void);
432 #else
433 #define update_cursorblink() /* nothing */
434 #endif
435
436 extern void update_altscreen(void);
437 extern void update_titeInhibit(void);
438
439 #ifndef NO_ACTIVE_ICON
440 extern void update_activeicon(void);
441 #endif /* NO_ACTIVE_ICON */
442
443 #if OPT_DEC_CHRSET
444 extern void update_font_doublesize(void);
445 #else
446 #define update_font_doublesize() /* nothing */
447 #endif
448
449 #if OPT_BOX_CHARS
450 extern void update_font_boxchars(void);
451 extern void update_font_packed(void);
452 #else
453 #define update_font_boxchars() /* nothing */
454 #define update_font_packed() /* nothing */
455 #endif
456
457 #if OPT_DEC_SOFTFONT
458 extern void update_font_loadable(void);
459 #else
460 #define update_font_loadable() /* nothing */
461 #endif
462
463 #if OPT_RENDERFONT
464 extern void update_font_renderfont(void);
465 #else
466 #define update_font_renderfont() /* nothing */
467 #endif
468
469 #if OPT_WIDE_CHARS
470 extern void update_font_utf8_mode(void);
471 extern void update_font_utf8_title(void);
472 #else
473 #define update_font_utf8_mode() /* nothing */
474 #define update_font_utf8_title() /* nothing */
475 #endif
476
477 #if OPT_TEK4014
478 extern void update_tekshow(void);
479 extern void update_vttekmode(void);
480 extern void update_vtshow(void);
481 extern void set_vthide_sensitivity(void);
482 extern void set_tekhide_sensitivity(void);
483 #else
484 #define update_tekshow() /*nothing*/
485 #define update_vttekmode() /*nothing*/
486 #define update_vtshow() /*nothing*/
487 #define set_vthide_sensitivity() /*nothing*/
488 #define set_tekhide_sensitivity() /*nothing*/
489 #endif
490
491 /*
492  * macros for mapping font size to tekMenu placement
493  */
494 #define FS2MI(n) (n)                    /* font_size_to_menu_item */
495 #define MI2FS(n) (n)                    /* menu_item_to_font_size */
496
497 #if OPT_TEK4014
498 extern void set_tekfont_menu_item(int n,int val);
499 #else
500 #define set_tekfont_menu_item(n,val) /*nothing*/
501 #endif
502
503 extern void set_menu_font(int val);
504
505 /* *INDENT-ON* */
506
507 #endif /* included_menu_h */