summaryrefslogtreecommitdiff
path: root/menu.h
diff options
context:
space:
mode:
Diffstat (limited to 'menu.h')
-rw-r--r--menu.h531
1 files changed, 531 insertions, 0 deletions
diff --git a/menu.h b/menu.h
new file mode 100644
index 0000000..5f5ad95
--- /dev/null
+++ b/menu.h
@@ -0,0 +1,531 @@
+/* $XTermId: menu.h,v 1.126 2011/08/28 21:15:40 tom Exp $ */
+
+/*
+ * Copyright 1999-2010,2011 by Thomas E. Dickey
+ *
+ * All Rights Reserved
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above copyright
+ * holders shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization.
+ *
+ *
+ * Copyright 1989 The Open Group
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of The Open Group shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization
+ * from The Open Group.
+ *
+ */
+
+#ifndef included_menu_h
+#define included_menu_h
+/* *INDENT-OFF* */
+
+#include <xterm.h>
+
+typedef struct _MenuEntry {
+ const char *name;
+ void (*function) PROTO_XT_CALLBACK_ARGS;
+ Widget widget;
+} MenuEntry;
+
+extern MenuEntry mainMenuEntries[], vtMenuEntries[];
+extern MenuEntry fontMenuEntries[];
+#if OPT_TEK4014
+extern MenuEntry tekMenuEntries[];
+#endif
+
+extern void Handle8BitControl PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllow132 PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowBoldFonts PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowColorOps PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowFontOps PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowSends PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowTcapOps PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowTitleOps PROTO_XT_ACTIONS_ARGS;
+extern void HandleAllowWindowOps PROTO_XT_ACTIONS_ARGS;
+extern void HandleAltEsc PROTO_XT_ACTIONS_ARGS;
+extern void HandleAltScreen PROTO_XT_ACTIONS_ARGS;
+extern void HandleAppCursor PROTO_XT_ACTIONS_ARGS;
+extern void HandleAppKeypad PROTO_XT_ACTIONS_ARGS;
+extern void HandleAutoLineFeed PROTO_XT_ACTIONS_ARGS;
+extern void HandleAutoWrap PROTO_XT_ACTIONS_ARGS;
+extern void HandleBackarrow PROTO_XT_ACTIONS_ARGS;
+extern void HandleBellIsUrgent PROTO_XT_ACTIONS_ARGS;
+extern void HandleClearSavedLines PROTO_XT_ACTIONS_ARGS;
+extern void HandleCreateMenu PROTO_XT_ACTIONS_ARGS;
+extern void HandleCursesEmul PROTO_XT_ACTIONS_ARGS;
+extern void HandleCursorBlink PROTO_XT_ACTIONS_ARGS;
+extern void HandleDeleteIsDEL PROTO_XT_ACTIONS_ARGS;
+extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS;
+extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS;
+extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS;
+extern void HandleFontPacked PROTO_XT_ACTIONS_ARGS;
+extern void HandleFullscreen PROTO_XT_ACTIONS_ARGS;
+extern void HandleHardReset PROTO_XT_ACTIONS_ARGS;
+extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS;
+extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS;
+extern void HandleKeepSelection PROTO_XT_ACTIONS_ARGS;
+extern void HandleLogging PROTO_XT_ACTIONS_ARGS;
+extern void HandleMarginBell PROTO_XT_ACTIONS_ARGS;
+extern void HandleMetaEsc PROTO_XT_ACTIONS_ARGS;
+extern void HandleNumLock PROTO_XT_ACTIONS_ARGS;
+extern void HandleOldFunctionKeys PROTO_XT_ACTIONS_ARGS;
+extern void HandlePopupMenu PROTO_XT_ACTIONS_ARGS;
+extern void HandlePrintControlMode PROTO_XT_ACTIONS_ARGS;
+extern void HandlePrintEverything PROTO_XT_ACTIONS_ARGS;
+extern void HandlePrintScreen PROTO_XT_ACTIONS_ARGS;
+extern void HandleQuit PROTO_XT_ACTIONS_ARGS;
+extern void HandleRedraw PROTO_XT_ACTIONS_ARGS;
+extern void HandleRenderFont PROTO_XT_ACTIONS_ARGS;
+extern void HandleReverseVideo PROTO_XT_ACTIONS_ARGS;
+extern void HandleReverseWrap PROTO_XT_ACTIONS_ARGS;
+extern void HandleScoFunctionKeys PROTO_XT_ACTIONS_ARGS;
+extern void HandleScrollKey PROTO_XT_ACTIONS_ARGS;
+extern void HandleScrollTtyOutput PROTO_XT_ACTIONS_ARGS;
+extern void HandleScrollbar PROTO_XT_ACTIONS_ARGS;
+extern void HandleSecure PROTO_XT_ACTIONS_ARGS;
+extern void HandleSendSignal PROTO_XT_ACTIONS_ARGS;
+extern void HandleSetPopOnBell PROTO_XT_ACTIONS_ARGS;
+extern void HandleSetSelect PROTO_XT_ACTIONS_ARGS;
+extern void HandleSetTekText PROTO_XT_ACTIONS_ARGS;
+extern void HandleSetTerminalType PROTO_XT_ACTIONS_ARGS;
+extern void HandleSetVisualBell PROTO_XT_ACTIONS_ARGS;
+extern void HandleSoftReset PROTO_XT_ACTIONS_ARGS;
+extern void HandleSunFunctionKeys PROTO_XT_ACTIONS_ARGS;
+extern void HandleSunKeyboard PROTO_XT_ACTIONS_ARGS;
+extern void HandleTekCopy PROTO_XT_ACTIONS_ARGS;
+extern void HandleTekPage PROTO_XT_ACTIONS_ARGS;
+extern void HandleTekReset PROTO_XT_ACTIONS_ARGS;
+extern void HandleTiteInhibit PROTO_XT_ACTIONS_ARGS;
+extern void HandleToolbar PROTO_XT_ACTIONS_ARGS;
+extern void HandleUTF8Fonts PROTO_XT_ACTIONS_ARGS;
+extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS;
+extern void HandleUTF8Title PROTO_XT_ACTIONS_ARGS;
+extern void HandleVisibility PROTO_XT_ACTIONS_ARGS;
+extern void HandleWriteError PROTO_XT_ACTIONS_ARGS;
+extern void HandleWriteNow PROTO_XT_ACTIONS_ARGS;
+
+extern void SetupMenus (Widget /*shell*/, Widget */*forms*/, Widget */*menus*/, Dimension * /*menu_high*/);
+
+#if OPT_TOOLBAR
+extern void ShowToolbar(Bool);
+#endif
+
+/*
+ * The following definitions MUST match the order of entries given in
+ * the mainMenuEntries, vtMenuEntries, and tekMenuEntries arrays in menu.c.
+ */
+
+/*
+ * items in primary menu
+ */
+typedef enum {
+#if OPT_TOOLBAR
+ mainMenu_toolbar,
+#endif
+#if OPT_MAXIMIZE
+ mainMenu_fullscreen,
+#endif
+ mainMenu_securekbd,
+ mainMenu_allowsends,
+ mainMenu_redraw,
+ mainMenu_line1,
+#ifdef ALLOWLOGGING
+ mainMenu_logging,
+#endif
+#if OPT_PRINT_ON_EXIT
+ mainMenu_write_now,
+ mainMenu_write_error,
+#endif
+ mainMenu_print,
+ mainMenu_print_redir,
+ mainMenu_line2,
+ mainMenu_8bit_ctrl,
+ mainMenu_backarrow,
+#if OPT_NUM_LOCK
+ mainMenu_num_lock,
+ mainMenu_alt_esc,
+ mainMenu_meta_esc,
+#endif
+ mainMenu_delete_del,
+ mainMenu_old_fkeys,
+#if OPT_TCAP_FKEYS
+ mainMenu_tcap_fkeys,
+#endif
+#if OPT_HP_FUNC_KEYS
+ mainMenu_hp_fkeys,
+#endif
+#if OPT_SCO_FUNC_KEYS
+ mainMenu_sco_fkeys,
+#endif
+#if OPT_SUN_FUNC_KEYS
+ mainMenu_sun_fkeys,
+#endif
+#if OPT_SUNPC_KBD
+ mainMenu_sun_kbd,
+#endif
+ mainMenu_line3,
+ mainMenu_suspend,
+ mainMenu_continue,
+ mainMenu_interrupt,
+ mainMenu_hangup,
+ mainMenu_terminate,
+ mainMenu_kill,
+ mainMenu_line4,
+ mainMenu_quit,
+ mainMenu_LAST
+} mainMenuIndices;
+
+
+/*
+ * items in vt100 mode menu
+ */
+typedef enum {
+ vtMenu_scrollbar,
+ vtMenu_jumpscroll,
+ vtMenu_reversevideo,
+ vtMenu_autowrap,
+ vtMenu_reversewrap,
+ vtMenu_autolinefeed,
+ vtMenu_appcursor,
+ vtMenu_appkeypad,
+ vtMenu_scrollkey,
+ vtMenu_scrollttyoutput,
+ vtMenu_allow132,
+ vtMenu_keepSelection,
+ vtMenu_selectToClipboard,
+ vtMenu_visualbell,
+ vtMenu_bellIsUrgent,
+ vtMenu_poponbell,
+#if OPT_BLINK_CURS
+ vtMenu_cursorblink,
+#endif
+ vtMenu_titeInhibit,
+#ifndef NO_ACTIVE_ICON
+ vtMenu_activeicon,
+#endif /* NO_ACTIVE_ICON */
+ vtMenu_line1,
+ vtMenu_softreset,
+ vtMenu_hardreset,
+ vtMenu_clearsavedlines,
+ vtMenu_line2,
+#if OPT_TEK4014
+ vtMenu_tekshow,
+ vtMenu_tekmode,
+ vtMenu_vthide,
+#endif
+ vtMenu_altscreen,
+ vtMenu_LAST
+} vtMenuIndices;
+
+/*
+ * items in vt100 font menu
+ */
+typedef enum {
+ fontMenu_default,
+ fontMenu_font1,
+ fontMenu_font2,
+ fontMenu_font3,
+ fontMenu_font4,
+ fontMenu_font5,
+ fontMenu_font6,
+#define fontMenu_lastBuiltin fontMenu_font6
+ fontMenu_fontescape,
+ fontMenu_fontsel,
+/* number of non-line items down to here should match NMENUFONTS in ptyx.h */
+
+#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
+ fontMenu_line1,
+ fontMenu_allowBoldFonts,
+#if OPT_BOX_CHARS
+ fontMenu_font_boxchars,
+ fontMenu_font_packedfont,
+#endif
+#if OPT_DEC_CHRSET
+ fontMenu_font_doublesize,
+#endif
+#if OPT_DEC_SOFTFONT
+ fontMenu_font_loadable,
+#endif
+#endif
+
+#if OPT_RENDERFONT || OPT_WIDE_CHARS
+ fontMenu_line2,
+#if OPT_RENDERFONT
+ fontMenu_render_font,
+#endif
+#if OPT_WIDE_CHARS
+ fontMenu_utf8_mode,
+ fontMenu_utf8_fonts,
+ fontMenu_utf8_title,
+#endif
+#endif
+#if OPT_ALLOW_XXX_OPS
+ fontMenu_line3,
+ fontMenu_allowColorOps,
+ fontMenu_allowFontOps,
+ fontMenu_allowTcapOps,
+ fontMenu_allowTitleOps,
+ fontMenu_allowWindowOps,
+#endif
+
+ fontMenu_LAST
+} fontMenuIndices;
+
+/*
+ * items in tek4014 mode menu
+ */
+#if OPT_TEK4014
+typedef enum {
+ tekMenu_tektextlarge,
+ tekMenu_tektext2,
+ tekMenu_tektext3,
+ tekMenu_tektextsmall,
+ tekMenu_line1,
+ tekMenu_tekpage,
+ tekMenu_tekreset,
+ tekMenu_tekcopy,
+ tekMenu_line2,
+ tekMenu_vtshow,
+ tekMenu_vtmode,
+ tekMenu_tekhide,
+ tekMenu_LAST
+} tekMenuIndices;
+#endif
+
+
+/*
+ * functions for updating menus
+ */
+
+extern void SetItemSensitivity(Widget mi, Bool val);
+
+/*
+ * there should be one of each of the following for each checkable item
+ */
+#if OPT_TOOLBAR
+extern void update_toolbar(void);
+#else
+#define update_toolbar() /* nothing */
+#endif
+
+#if OPT_MAXIMIZE
+extern void update_fullscreen(void);
+#else
+#define update_fullscreen() /* nothing */
+#endif
+
+extern void update_securekbd(void);
+extern void update_allowsends(void);
+
+#ifdef ALLOWLOGGING
+extern void update_logging(void);
+#else
+#define update_logging() /*nothing*/
+#endif
+
+#if OPT_PRINT_ON_EXIT
+extern void update_write_error(void);
+#else
+#define update_write_error() /*nothing*/
+#endif
+
+extern void update_print_redir(void);
+extern void update_8bit_control(void);
+extern void update_decbkm(void);
+
+#if OPT_NUM_LOCK
+extern void update_num_lock(void);
+extern void update_alt_esc(void);
+extern void update_meta_esc(void);
+#else
+#define update_num_lock() /*nothing*/
+#define update_alt_esc() /*nothing*/
+#define update_meta_esc() /*nothing*/
+#endif
+
+extern void update_old_fkeys(void);
+extern void update_delete_del(void);
+
+#if OPT_SUNPC_KBD
+extern void update_sun_kbd(void);
+#endif
+
+#if OPT_HP_FUNC_KEYS
+extern void update_hp_fkeys(void);
+#else
+#define update_hp_fkeys() /*nothing*/
+#endif
+
+#if OPT_SCO_FUNC_KEYS
+extern void update_sco_fkeys(void);
+#else
+#define update_sco_fkeys() /*nothing*/
+#endif
+
+#if OPT_SUN_FUNC_KEYS
+extern void update_sun_fkeys(void);
+#else
+#define update_sun_fkeys() /*nothing*/
+#endif
+
+#if OPT_TCAP_FKEYS
+extern void update_tcap_fkeys(void);
+#else
+#define update_tcap_fkeys() /*nothing*/
+#endif
+
+extern void update_scrollbar(void);
+extern void update_jumpscroll(void);
+extern void update_reversevideo(void);
+extern void update_autowrap(void);
+extern void update_reversewrap(void);
+extern void update_autolinefeed(void);
+extern void update_appcursor(void);
+extern void update_appkeypad(void);
+extern void update_scrollkey(void);
+extern void update_keepSelection(void);
+extern void update_selectToClipboard(void);
+extern void update_scrollttyoutput(void);
+extern void update_allow132(void);
+extern void update_cursesemul(void);
+extern void update_visualbell(void);
+extern void update_bellIsUrgent(void);
+extern void update_poponbell(void);
+
+#define update_marginbell() /* nothing */
+
+#if OPT_ALLOW_XXX_OPS
+extern void update_menu_allowColorOps(void);
+extern void update_menu_allowFontOps(void);
+extern void update_menu_allowTcapOps(void);
+extern void update_menu_allowTitleOps(void);
+extern void update_menu_allowWindowOps(void);
+#endif
+
+#if OPT_BLINK_CURS
+extern void update_cursorblink(void);
+#else
+#define update_cursorblink() /* nothing */
+#endif
+
+extern void update_altscreen(void);
+extern void update_titeInhibit(void);
+
+#ifndef NO_ACTIVE_ICON
+extern void update_activeicon(void);
+#endif /* NO_ACTIVE_ICON */
+
+#if OPT_DEC_CHRSET
+extern void update_font_doublesize(void);
+#else
+#define update_font_doublesize() /* nothing */
+#endif
+
+#if OPT_BOX_CHARS
+extern void update_font_boxchars(void);
+extern void update_font_packed(void);
+#else
+#define update_font_boxchars() /* nothing */
+#define update_font_packed() /* nothing */
+#endif
+
+#if OPT_DEC_SOFTFONT
+extern void update_font_loadable(void);
+#else
+#define update_font_loadable() /* nothing */
+#endif
+
+#if OPT_RENDERFONT
+extern void update_font_renderfont(void);
+#else
+#define update_font_renderfont() /* nothing */
+#endif
+
+#if OPT_WIDE_CHARS
+extern void update_font_utf8_mode(void);
+extern void update_font_utf8_fonts(void);
+extern void update_font_utf8_title(void);
+#else
+#define update_font_utf8_mode() /* nothing */
+#define update_font_utf8_fonts() /* nothing */
+#define update_font_utf8_title() /* nothing */
+#endif
+
+#if OPT_TEK4014
+extern void update_tekshow(void);
+extern void update_vttekmode(void);
+extern void update_vtshow(void);
+extern void set_vthide_sensitivity(void);
+extern void set_tekhide_sensitivity(void);
+#else
+#define update_tekshow() /*nothing*/
+#define update_vttekmode() /*nothing*/
+#define update_vtshow() /*nothing*/
+#define set_vthide_sensitivity() /*nothing*/
+#define set_tekhide_sensitivity() /*nothing*/
+#endif
+
+#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
+extern void update_menu_allowBoldFonts(void);
+#else
+#define update_menu_allowBoldFonts() /*nothing*/
+#endif
+
+/*
+ * macros for mapping font size to tekMenu placement
+ */
+#define FS2MI(n) (n) /* font_size_to_menu_item */
+#define MI2FS(n) (n) /* menu_item_to_font_size */
+
+#if OPT_TEK4014
+extern void set_tekfont_menu_item(int n,int val);
+#else
+#define set_tekfont_menu_item(n,val) /*nothing*/
+#endif
+
+extern void set_menu_font(int val);
+
+/* *INDENT-ON* */
+
+#endif /* included_menu_h */