"Fossies" - the Fresh Open Source Software Archive 
Member "xterm-379/menu.h" (21 Mar 2021, 17149 Bytes) of package /linux/misc/xterm-379.tgz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "menu.h" see the
Fossies "Dox" file reference documentation.
1 /* $XTermId: menu.h,v 1.146 2021/03/21 20:03:03 tom Exp $ */
2
3 /*
4 * Copyright 1999-2020,2021 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 X Consortium
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 X Consortium 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 X Consortium.
56 */
57
58 #ifndef included_menu_h
59 #define included_menu_h
60 /* *INDENT-OFF* */
61
62 #include <xterm.h>
63
64 #ifndef OPT_MENU_KEEPCLIPBOARD
65 #define OPT_MENU_KEEPCLIPBOARD 0 /* useful for debugging */
66 #endif
67
68 typedef struct _MenuEntry {
69 const char *name;
70 void (*function) PROTO_XT_CALLBACK_ARGS;
71 Widget widget;
72 } MenuEntry;
73
74 extern MenuEntry mainMenuEntries[], vtMenuEntries[];
75 extern MenuEntry fontMenuEntries[];
76 #if OPT_TEK4014
77 extern MenuEntry tekMenuEntries[];
78 #endif
79
80 extern void Handle8BitControl PROTO_XT_ACTIONS_ARGS;
81 extern void HandleAllow132 PROTO_XT_ACTIONS_ARGS;
82 extern void HandleAllowBoldFonts PROTO_XT_ACTIONS_ARGS;
83 extern void HandleAllowColorOps PROTO_XT_ACTIONS_ARGS;
84 extern void HandleAllowFontOps PROTO_XT_ACTIONS_ARGS;
85 extern void HandleAllowMouseOps PROTO_XT_ACTIONS_ARGS;
86 extern void HandleAllowSends PROTO_XT_ACTIONS_ARGS;
87 extern void HandleAllowTcapOps PROTO_XT_ACTIONS_ARGS;
88 extern void HandleAllowTitleOps PROTO_XT_ACTIONS_ARGS;
89 extern void HandleAllowWindowOps PROTO_XT_ACTIONS_ARGS;
90 extern void HandleAltEsc PROTO_XT_ACTIONS_ARGS;
91 extern void HandleAltScreen PROTO_XT_ACTIONS_ARGS;
92 extern void HandleAppCursor PROTO_XT_ACTIONS_ARGS;
93 extern void HandleAppKeypad PROTO_XT_ACTIONS_ARGS;
94 extern void HandleAutoLineFeed PROTO_XT_ACTIONS_ARGS;
95 extern void HandleAutoWrap PROTO_XT_ACTIONS_ARGS;
96 extern void HandleBackarrow PROTO_XT_ACTIONS_ARGS;
97 extern void HandleBellIsUrgent PROTO_XT_ACTIONS_ARGS;
98 extern void HandleCreateMenu PROTO_XT_ACTIONS_ARGS;
99 extern void HandleCursesEmul PROTO_XT_ACTIONS_ARGS;
100 extern void HandleCursorBlink PROTO_XT_ACTIONS_ARGS;
101 extern void HandleDeleteIsDEL PROTO_XT_ACTIONS_ARGS;
102 extern void HandleDumpHtml PROTO_XT_ACTIONS_ARGS;
103 extern void HandleDumpSvg PROTO_XT_ACTIONS_ARGS;
104 extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS;
105 extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS;
106 extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS;
107 extern void HandleFontPacked PROTO_XT_ACTIONS_ARGS;
108 extern void HandleFullscreen PROTO_XT_ACTIONS_ARGS;
109 extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS;
110 extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS;
111 extern void HandleKeepClipboard PROTO_XT_ACTIONS_ARGS;
112 extern void HandleKeepSelection PROTO_XT_ACTIONS_ARGS;
113 extern void HandleLogging PROTO_XT_ACTIONS_ARGS;
114 extern void HandleMarginBell PROTO_XT_ACTIONS_ARGS;
115 extern void HandleMetaEsc PROTO_XT_ACTIONS_ARGS;
116 extern void HandleNumLock PROTO_XT_ACTIONS_ARGS;
117 extern void HandleOldFunctionKeys PROTO_XT_ACTIONS_ARGS;
118 extern void HandlePopupMenu PROTO_XT_ACTIONS_ARGS;
119 extern void HandlePrintControlMode PROTO_XT_ACTIONS_ARGS;
120 extern void HandlePrintEverything PROTO_XT_ACTIONS_ARGS;
121 extern void HandlePrintImmediate PROTO_XT_ACTIONS_ARGS;
122 extern void HandlePrintOnError PROTO_XT_ACTIONS_ARGS;
123 extern void HandlePrintScreen PROTO_XT_ACTIONS_ARGS;
124 extern void HandleRedraw PROTO_XT_ACTIONS_ARGS;
125 extern void HandleRenderFont PROTO_XT_ACTIONS_ARGS;
126 extern void HandleReverseVideo PROTO_XT_ACTIONS_ARGS;
127 extern void HandleReverseWrap PROTO_XT_ACTIONS_ARGS;
128 extern void HandleScoFunctionKeys PROTO_XT_ACTIONS_ARGS;
129 extern void HandleScrollKey PROTO_XT_ACTIONS_ARGS;
130 extern void HandleScrollTtyOutput PROTO_XT_ACTIONS_ARGS;
131 extern void HandleScrollbar PROTO_XT_ACTIONS_ARGS;
132 extern void HandleSecure PROTO_XT_ACTIONS_ARGS;
133 extern void HandleSendSignal PROTO_XT_ACTIONS_ARGS;
134 extern void HandleSetPopOnBell PROTO_XT_ACTIONS_ARGS;
135 extern void HandleSetPrivateColorRegisters PROTO_XT_ACTIONS_ARGS;
136 extern void HandleSetSelect PROTO_XT_ACTIONS_ARGS;
137 extern void HandleSetTekText PROTO_XT_ACTIONS_ARGS;
138 extern void HandleSetTerminalType PROTO_XT_ACTIONS_ARGS;
139 extern void HandleSetVisualBell PROTO_XT_ACTIONS_ARGS;
140 extern void HandleSixelScrolling PROTO_XT_ACTIONS_ARGS;
141 extern void HandleSunFunctionKeys PROTO_XT_ACTIONS_ARGS;
142 extern void HandleSunKeyboard PROTO_XT_ACTIONS_ARGS;
143 extern void HandleTekCopy PROTO_XT_ACTIONS_ARGS;
144 extern void HandleTekPage PROTO_XT_ACTIONS_ARGS;
145 extern void HandleTekReset PROTO_XT_ACTIONS_ARGS;
146 extern void HandleTiteInhibit PROTO_XT_ACTIONS_ARGS;
147 extern void HandleToolbar PROTO_XT_ACTIONS_ARGS;
148 extern void HandleUTF8Fonts PROTO_XT_ACTIONS_ARGS;
149 extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS;
150 extern void HandleUTF8Title PROTO_XT_ACTIONS_ARGS;
151 extern void HandleVisibility PROTO_XT_ACTIONS_ARGS;
152 extern void HandleWriteError PROTO_XT_ACTIONS_ARGS;
153 extern void HandleWriteNow PROTO_XT_ACTIONS_ARGS;
154
155 extern GCC_NORETURN void HandleClearSavedLines PROTO_XT_ACTIONS_ARGS;
156 extern GCC_NORETURN void HandleHardReset PROTO_XT_ACTIONS_ARGS;
157 extern GCC_NORETURN void HandleQuit PROTO_XT_ACTIONS_ARGS;
158 extern GCC_NORETURN void HandleSoftReset PROTO_XT_ACTIONS_ARGS;
159
160 extern void SetupMenus (Widget /*shell*/, Widget */*forms*/, Widget */*menus*/, Dimension * /*menu_high*/);
161
162 #if OPT_TOOLBAR
163 extern void ShowToolbar(Bool);
164 #endif
165
166 /*
167 * The following definitions MUST match the order of entries given in
168 * the mainMenuEntries, vtMenuEntries, and tekMenuEntries arrays in menu.c.
169 */
170
171 /*
172 * items in primary menu
173 */
174 typedef enum {
175 #if OPT_TOOLBAR
176 mainMenu_toolbar,
177 #endif
178 #if OPT_MAXIMIZE
179 mainMenu_fullscreen,
180 #endif
181 mainMenu_securekbd,
182 mainMenu_allowsends,
183 mainMenu_redraw,
184 mainMenu_line1,
185 #ifdef ALLOWLOGGING
186 mainMenu_logging,
187 #endif
188 #if OPT_PRINT_ON_EXIT
189 mainMenu_write_now,
190 mainMenu_write_error,
191 #endif
192 mainMenu_print,
193 mainMenu_print_redir,
194 #if OPT_SCREEN_DUMPS
195 mainMenu_dump_html,
196 mainMenu_dump_svg,
197 #endif
198 mainMenu_line2,
199 mainMenu_8bit_ctrl,
200 mainMenu_backarrow,
201 #if OPT_NUM_LOCK
202 mainMenu_num_lock,
203 mainMenu_alt_esc,
204 mainMenu_meta_esc,
205 #endif
206 mainMenu_delete_del,
207 mainMenu_old_fkeys,
208 #if OPT_TCAP_FKEYS
209 mainMenu_tcap_fkeys,
210 #endif
211 #if OPT_HP_FUNC_KEYS
212 mainMenu_hp_fkeys,
213 #endif
214 #if OPT_SCO_FUNC_KEYS
215 mainMenu_sco_fkeys,
216 #endif
217 #if OPT_SUN_FUNC_KEYS
218 mainMenu_sun_fkeys,
219 #endif
220 #if OPT_SUNPC_KBD
221 mainMenu_sun_kbd,
222 #endif
223 mainMenu_line3,
224 mainMenu_suspend,
225 mainMenu_continue,
226 mainMenu_interrupt,
227 mainMenu_hangup,
228 mainMenu_terminate,
229 mainMenu_kill,
230 mainMenu_line4,
231 mainMenu_quit,
232 mainMenu_LAST
233 } mainMenuIndices;
234
235
236 /*
237 * items in vt100 mode menu
238 */
239 typedef enum {
240 vtMenu_scrollbar,
241 vtMenu_jumpscroll,
242 vtMenu_reversevideo,
243 vtMenu_autowrap,
244 vtMenu_reversewrap,
245 vtMenu_autolinefeed,
246 vtMenu_appcursor,
247 vtMenu_appkeypad,
248 vtMenu_scrollkey,
249 vtMenu_scrollttyoutput,
250 vtMenu_allow132,
251 vtMenu_keepSelection,
252 #if OPT_MENU_KEEPCLIPBOARD
253 vtMenu_keepClipboard,
254 #endif
255 vtMenu_selectToClipboard,
256 vtMenu_visualbell,
257 vtMenu_bellIsUrgent,
258 vtMenu_poponbell,
259 #if OPT_BLINK_CURS
260 vtMenu_cursorblink,
261 #endif
262 vtMenu_titeInhibit,
263 #ifndef NO_ACTIVE_ICON
264 vtMenu_activeicon,
265 #endif /* NO_ACTIVE_ICON */
266 vtMenu_line1,
267 vtMenu_softreset,
268 vtMenu_hardreset,
269 vtMenu_clearsavedlines,
270 vtMenu_line2,
271 #if OPT_TEK4014
272 vtMenu_tekshow,
273 vtMenu_tekmode,
274 vtMenu_vthide,
275 #endif
276 vtMenu_altscreen,
277 #if OPT_SIXEL_GRAPHICS
278 vtMenu_sixelscrolling,
279 #endif
280 #if OPT_GRAPHICS
281 vtMenu_privatecolorregisters,
282 #endif
283 vtMenu_LAST
284 } vtMenuIndices;
285
286 /*
287 * items in vt100 font menu
288 */
289 typedef enum {
290 fontMenu_default,
291 fontMenu_font1,
292 fontMenu_font2,
293 fontMenu_font3,
294 fontMenu_font4,
295 fontMenu_font5,
296 fontMenu_font6,
297 fontMenu_font7,
298 #define fontMenu_lastBuiltin fontMenu_font7
299 fontMenu_fontescape,
300 fontMenu_fontsel,
301 /* number of non-line items down to here should match NMENUFONTS in ptyx.h */
302
303 #if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
304 fontMenu_line1,
305 fontMenu_allowBoldFonts,
306 #if OPT_BOX_CHARS
307 fontMenu_font_boxchars,
308 fontMenu_font_packedfont,
309 #endif
310 #if OPT_DEC_CHRSET
311 fontMenu_font_doublesize,
312 #endif
313 #if OPT_DEC_SOFTFONT
314 fontMenu_font_loadable,
315 #endif
316 #endif
317
318 #if OPT_RENDERFONT || OPT_WIDE_CHARS
319 fontMenu_line2,
320 #if OPT_RENDERFONT
321 fontMenu_render_font,
322 #endif
323 #if OPT_WIDE_CHARS
324 fontMenu_utf8_mode,
325 fontMenu_utf8_fonts,
326 fontMenu_utf8_title,
327 #endif
328 #endif
329 #if OPT_ALLOW_XXX_OPS
330 fontMenu_line3,
331 fontMenu_allowColorOps,
332 fontMenu_allowFontOps,
333 fontMenu_allowMouseOps,
334 fontMenu_allowTcapOps,
335 fontMenu_allowTitleOps,
336 fontMenu_allowWindowOps,
337 #endif
338
339 fontMenu_LAST
340 } fontMenuIndices;
341
342 /*
343 * items in tek4014 mode menu
344 */
345 #if OPT_TEK4014
346 typedef enum {
347 tekMenu_tektextlarge,
348 tekMenu_tektext2,
349 tekMenu_tektext3,
350 tekMenu_tektextsmall,
351 tekMenu_line1,
352 tekMenu_tekpage,
353 tekMenu_tekreset,
354 tekMenu_tekcopy,
355 tekMenu_line2,
356 tekMenu_vtshow,
357 tekMenu_vtmode,
358 tekMenu_tekhide,
359 tekMenu_LAST
360 } tekMenuIndices;
361 #endif
362
363
364 /*
365 * functions for updating menus
366 */
367
368 extern void SetItemSensitivity(Widget mi, Bool val);
369
370 typedef enum {
371 toggleErr = -2,
372 toggleAll = -1,
373 toggleOff = 0,
374 toggleOn = 1
375 } ToggleEnum;
376
377 extern int decodeToggle(XtermWidget /* xw */, String * /* params */, Cardinal /* nparams */);
378
379 /*
380 * there should be one of each of the following for each checkable item
381 */
382 #if OPT_TOOLBAR
383 extern void update_toolbar(void);
384 #else
385 #define update_toolbar() /* nothing */
386 #endif
387
388 #if OPT_MAXIMIZE
389 extern void update_fullscreen(void);
390 #else
391 #define update_fullscreen() /* nothing */
392 #endif
393
394 extern void update_securekbd(void);
395 extern void update_allowsends(void);
396
397 #ifdef ALLOWLOGGING
398 extern void update_logging(void);
399 #else
400 #define update_logging() /*nothing*/
401 #endif
402
403 #if OPT_PRINT_ON_EXIT
404 extern void update_write_error(void);
405 #else
406 #define update_write_error() /*nothing*/
407 #endif
408
409 extern void update_print_redir(void);
410 extern void update_8bit_control(void);
411 extern void update_decbkm(void);
412
413 #if OPT_NUM_LOCK
414 extern void update_num_lock(void);
415 extern void update_alt_esc(void);
416 extern void update_meta_esc(void);
417 #else
418 #define update_num_lock() /*nothing*/
419 #define update_alt_esc() /*nothing*/
420 #define update_meta_esc() /*nothing*/
421 #endif
422
423 extern void update_old_fkeys(void);
424 extern void update_delete_del(void);
425
426 #if OPT_SUNPC_KBD
427 extern void update_sun_kbd(void);
428 #endif
429
430 #if OPT_HP_FUNC_KEYS
431 extern void update_hp_fkeys(void);
432 #else
433 #define update_hp_fkeys() /*nothing*/
434 #endif
435
436 #if OPT_SCO_FUNC_KEYS
437 extern void update_sco_fkeys(void);
438 #else
439 #define update_sco_fkeys() /*nothing*/
440 #endif
441
442 #if OPT_SUN_FUNC_KEYS
443 extern void update_sun_fkeys(void);
444 #else
445 #define update_sun_fkeys() /*nothing*/
446 #endif
447
448 #if OPT_TCAP_FKEYS
449 extern void update_tcap_fkeys(void);
450 #else
451 #define update_tcap_fkeys() /*nothing*/
452 #endif
453
454 extern void update_scrollbar(void);
455 extern void update_jumpscroll(void);
456 extern void update_reversevideo(void);
457 extern void update_autowrap(void);
458 extern void update_reversewrap(void);
459 extern void update_autolinefeed(void);
460 extern void update_appcursor(void);
461 extern void update_appkeypad(void);
462 extern void update_scrollkey(void);
463 extern void update_keepSelection(void);
464 extern void update_selectToClipboard(void);
465 extern void update_scrollttyoutput(void);
466 extern void update_allow132(void);
467 extern void update_cursesemul(void);
468 extern void update_visualbell(void);
469 extern void update_bellIsUrgent(void);
470 extern void update_poponbell(void);
471
472 #if OPT_MENU_KEEPCLIPBOARD
473 extern void update_keepClipboard(void);
474 #else
475 #define update_keepClipboard() /* nothing */
476 #endif
477
478 #define update_marginbell() /* nothing */
479
480 #if OPT_LOAD_VTFONTS
481 extern void update_font_escape(void);
482 #else
483 #define update_font_escape() /* nothing */
484 #endif
485
486 #if OPT_ALLOW_XXX_OPS
487 extern void update_menu_allowColorOps(void);
488 extern void update_menu_allowFontOps(void);
489 extern void update_menu_allowMouseOps(void);
490 extern void update_menu_allowTcapOps(void);
491 extern void update_menu_allowTitleOps(void);
492 extern void update_menu_allowWindowOps(void);
493 #endif
494
495 #if OPT_BLINK_CURS
496 extern void update_cursorblink(void);
497 #else
498 #define update_cursorblink() /* nothing */
499 #endif
500
501 extern void update_altscreen(void);
502 extern void update_titeInhibit(void);
503
504 #ifndef NO_ACTIVE_ICON
505 extern void update_activeicon(void);
506 #endif /* NO_ACTIVE_ICON */
507
508 #if OPT_DEC_CHRSET
509 extern void update_font_doublesize(void);
510 #else
511 #define update_font_doublesize() /* nothing */
512 #endif
513
514 #if OPT_BOX_CHARS
515 extern void update_font_boxchars(void);
516 extern void update_font_packed(void);
517 #else
518 #define update_font_boxchars() /* nothing */
519 #define update_font_packed() /* nothing */
520 #endif
521
522 #if OPT_SIXEL_GRAPHICS
523 extern void update_decsdm(void);
524 #else
525 #define update_decsdm() /* nothing */
526 #endif
527
528 #if OPT_GRAPHICS
529 extern void update_privatecolorregisters(void);
530 #else
531 #define update_privatecolorregisters() /* nothing */
532 #endif
533
534 #if OPT_DEC_SOFTFONT
535 extern void update_font_loadable(void);
536 #else
537 #define update_font_loadable() /* nothing */
538 #endif
539
540 #if OPT_RENDERFONT
541 extern void update_font_renderfont(void);
542 #else
543 #define update_font_renderfont() /* nothing */
544 #endif
545
546 #if OPT_WIDE_CHARS
547 extern void update_font_utf8_mode(void);
548 extern void update_font_utf8_fonts(void);
549 extern void update_font_utf8_title(void);
550 #else
551 #define update_font_utf8_mode() /* nothing */
552 #define update_font_utf8_fonts() /* nothing */
553 #define update_font_utf8_title() /* nothing */
554 #endif
555
556 #if OPT_TEK4014
557 extern void update_tekshow(void);
558 extern void update_vttekmode(void);
559 extern void update_vtshow(void);
560 extern void set_vthide_sensitivity(void);
561 extern void set_tekhide_sensitivity(void);
562 #else
563 #define update_tekshow() /*nothing*/
564 #define update_vttekmode() /*nothing*/
565 #define update_vtshow() /*nothing*/
566 #define set_vthide_sensitivity() /*nothing*/
567 #define set_tekhide_sensitivity() /*nothing*/
568 #endif
569
570 #if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
571 extern void update_menu_allowBoldFonts(void);
572 #else
573 #define update_menu_allowBoldFonts() /*nothing*/
574 #endif
575
576 /*
577 * macros for mapping font size to tekMenu placement
578 */
579 #define FS2MI(n) (n) /* font_size_to_menu_item */
580 #define MI2FS(n) (n) /* menu_item_to_font_size */
581
582 #if OPT_TEK4014
583 extern void set_tekfont_menu_item(int n,int val);
584 #else
585 #define set_tekfont_menu_item(n,val) /*nothing*/
586 #endif
587
588 extern void set_menu_font(int val);
589
590 /* *INDENT-ON* */
591
592 #endif /* included_menu_h */