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