menu.c revision 956cc18d
1956cc18dSsnj/* $XTermId: menu.c,v 1.252 2009/07/03 15:01:14 tom Exp $ */ 2d522f475Smrg 3d522f475Smrg/* 4d522f475Smrg 5956cc18dSsnjCopyright 1999-2008,2009 by Thomas E. Dickey 6d522f475Smrg 7d522f475Smrg All Rights Reserved 8d522f475Smrg 9d522f475SmrgPermission to use, copy, modify, and distribute this software and its 10d522f475Smrgdocumentation for any purpose and without fee is hereby granted, 11d522f475Smrgprovided that the above copyright notice appear in all copies and that 12d522f475Smrgboth that copyright notice and this permission notice appear in 13d522f475Smrgsupporting documentation, and that the name of the above listed 14d522f475Smrgcopyright holder(s) not be used in advertising or publicity pertaining 15d522f475Smrgto distribution of the software without specific, written prior 16d522f475Smrgpermission. 17d522f475Smrg 18d522f475SmrgTHE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD 19d522f475SmrgTO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 20d522f475SmrgAND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE 21d522f475SmrgLIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 22d522f475SmrgWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 23d522f475SmrgACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 24d522f475SmrgOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 25d522f475Smrg 26d522f475SmrgCopyright 1989 The Open Group 27d522f475Smrg 28d522f475SmrgPermission to use, copy, modify, distribute, and sell this software and its 29d522f475Smrgdocumentation for any purpose is hereby granted without fee, provided that 30d522f475Smrgthe above copyright notice appear in all copies and that both that 31d522f475Smrgcopyright notice and this permission notice appear in supporting 32d522f475Smrgdocumentation. 33d522f475Smrg 34d522f475SmrgThe above copyright notice and this permission notice shall be included in 35d522f475Smrgall copies or substantial portions of the Software. 36d522f475Smrg 37d522f475SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 38d522f475SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 39d522f475SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 40d522f475SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 41d522f475SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 42d522f475SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 43d522f475Smrg 44d522f475SmrgExcept as contained in this notice, the name of The Open Group shall not be 45d522f475Smrgused in advertising or otherwise to promote the sale, use or other dealings 46d522f475Smrgin this Software without prior written authorization from The Open Group. 47d522f475Smrg 48d522f475Smrg*/ 49d522f475Smrg 50d522f475Smrg#include <xterm.h> 51d522f475Smrg#include <data.h> 52d522f475Smrg#include <menu.h> 53d522f475Smrg#include <fontutils.h> 54d522f475Smrg#include <xstrings.h> 55d522f475Smrg 56d522f475Smrg#include <locale.h> 57d522f475Smrg 58d522f475Smrg#include <X11/Xmu/CharSet.h> 59d522f475Smrg 60d522f475Smrg#define app_con Xaw_app_con /* quiet a warning from SimpleMenu.h */ 61d522f475Smrg 62d522f475Smrg#if defined(HAVE_LIB_XAW) 63d522f475Smrg 64d522f475Smrg#include <X11/Xaw/SimpleMenu.h> 65d522f475Smrg#include <X11/Xaw/Box.h> 66d522f475Smrg#include <X11/Xaw/SmeBSB.h> 67d522f475Smrg#include <X11/Xaw/SmeLine.h> 68d522f475Smrg 69d522f475Smrg#if OPT_TOOLBAR 70d522f475Smrg#include <X11/Xaw/MenuButton.h> 71d522f475Smrg#include <X11/Xaw/Form.h> 72d522f475Smrg#endif 73d522f475Smrg 74d522f475Smrg#elif defined(HAVE_LIB_XAW3D) 75d522f475Smrg 76d522f475Smrg#include <X11/Xaw3d/SimpleMenu.h> 77d522f475Smrg#include <X11/Xaw3d/Box.h> 78d522f475Smrg#include <X11/Xaw3d/SmeBSB.h> 79d522f475Smrg#include <X11/Xaw3d/SmeLine.h> 80d522f475Smrg 81d522f475Smrg#if OPT_TOOLBAR 82d522f475Smrg#include <X11/Xaw3d/MenuButton.h> 83d522f475Smrg#include <X11/Xaw3d/Form.h> 84d522f475Smrg#endif 85d522f475Smrg 86d522f475Smrg#elif defined(HAVE_LIB_NEXTAW) 87d522f475Smrg 88d522f475Smrg#include <X11/neXtaw/SimpleMenu.h> 89d522f475Smrg#include <X11/neXtaw/Box.h> 90d522f475Smrg#include <X11/neXtaw/SmeBSB.h> 91d522f475Smrg#include <X11/neXtaw/SmeLine.h> 92d522f475Smrg 93d522f475Smrg#if OPT_TOOLBAR 94d522f475Smrg#include <X11/neXtaw/MenuButton.h> 95d522f475Smrg#include <X11/neXtaw/Form.h> 96d522f475Smrg#endif 97d522f475Smrg 98d522f475Smrg#elif defined(HAVE_LIB_XAWPLUS) 99d522f475Smrg 100d522f475Smrg#include <X11/XawPlus/SimpleMenu.h> 101d522f475Smrg#include <X11/XawPlus/Box.h> 102d522f475Smrg#include <X11/XawPlus/SmeBSB.h> 103d522f475Smrg#include <X11/XawPlus/SmeLine.h> 104d522f475Smrg 105d522f475Smrg#if OPT_TOOLBAR 106d522f475Smrg#include <X11/XawPlus/MenuButton.h> 107d522f475Smrg#include <X11/XawPlus/Form.h> 108d522f475Smrg#endif 109d522f475Smrg 110d522f475Smrg#endif 111d522f475Smrg 112d522f475Smrg#undef app_con 113d522f475Smrg 114d522f475Smrg#include <stdio.h> 115d522f475Smrg#include <signal.h> 116956cc18dSsnj 117956cc18dSsnj#define ToggleFlag(flag) flag = (Boolean) !flag 118d522f475Smrg/* *INDENT-OFF* */ 119d522f475Smrgstatic void do_8bit_control PROTO_XT_CALLBACK_ARGS; 120d522f475Smrgstatic void do_allow132 PROTO_XT_CALLBACK_ARGS; 121d522f475Smrgstatic void do_allowsends PROTO_XT_CALLBACK_ARGS; 122d522f475Smrgstatic void do_altscreen PROTO_XT_CALLBACK_ARGS; 123d522f475Smrgstatic void do_appcursor PROTO_XT_CALLBACK_ARGS; 124d522f475Smrgstatic void do_appkeypad PROTO_XT_CALLBACK_ARGS; 125d522f475Smrgstatic void do_autolinefeed PROTO_XT_CALLBACK_ARGS; 126d522f475Smrgstatic void do_autowrap PROTO_XT_CALLBACK_ARGS; 127d522f475Smrgstatic void do_backarrow PROTO_XT_CALLBACK_ARGS; 128d522f475Smrgstatic void do_bellIsUrgent PROTO_XT_CALLBACK_ARGS; 129d522f475Smrgstatic void do_clearsavedlines PROTO_XT_CALLBACK_ARGS; 130d522f475Smrgstatic void do_continue PROTO_XT_CALLBACK_ARGS; 131d522f475Smrgstatic void do_delete_del PROTO_XT_CALLBACK_ARGS; 132d522f475Smrgstatic void do_hardreset PROTO_XT_CALLBACK_ARGS; 133d522f475Smrgstatic void do_interrupt PROTO_XT_CALLBACK_ARGS; 134d522f475Smrgstatic void do_jumpscroll PROTO_XT_CALLBACK_ARGS; 135d522f475Smrgstatic void do_kill PROTO_XT_CALLBACK_ARGS; 136d522f475Smrgstatic void do_old_fkeys PROTO_XT_CALLBACK_ARGS; 137d522f475Smrgstatic void do_poponbell PROTO_XT_CALLBACK_ARGS; 138d522f475Smrgstatic void do_print PROTO_XT_CALLBACK_ARGS; 139956cc18dSsnjstatic void do_print_everything PROTO_XT_CALLBACK_ARGS; 140d522f475Smrgstatic void do_print_redir PROTO_XT_CALLBACK_ARGS; 141d522f475Smrgstatic void do_quit PROTO_XT_CALLBACK_ARGS; 142d522f475Smrgstatic void do_redraw PROTO_XT_CALLBACK_ARGS; 143d522f475Smrgstatic void do_reversevideo PROTO_XT_CALLBACK_ARGS; 144d522f475Smrgstatic void do_reversewrap PROTO_XT_CALLBACK_ARGS; 145d522f475Smrgstatic void do_scrollbar PROTO_XT_CALLBACK_ARGS; 146d522f475Smrgstatic void do_scrollkey PROTO_XT_CALLBACK_ARGS; 147d522f475Smrgstatic void do_scrollttyoutput PROTO_XT_CALLBACK_ARGS; 148d522f475Smrgstatic void do_securekbd PROTO_XT_CALLBACK_ARGS; 149d522f475Smrgstatic void do_keepSelection PROTO_XT_CALLBACK_ARGS; 150d522f475Smrgstatic void do_selectClipboard PROTO_XT_CALLBACK_ARGS; 151d522f475Smrgstatic void do_softreset PROTO_XT_CALLBACK_ARGS; 152d522f475Smrgstatic void do_suspend PROTO_XT_CALLBACK_ARGS; 153d522f475Smrgstatic void do_terminate PROTO_XT_CALLBACK_ARGS; 154d522f475Smrgstatic void do_titeInhibit PROTO_XT_CALLBACK_ARGS; 155d522f475Smrgstatic void do_visualbell PROTO_XT_CALLBACK_ARGS; 156d522f475Smrgstatic void do_vtfont PROTO_XT_CALLBACK_ARGS; 157d522f475Smrg 158d522f475Smrg#ifdef ALLOWLOGGING 159d522f475Smrgstatic void do_logging PROTO_XT_CALLBACK_ARGS; 160d522f475Smrg#endif 161d522f475Smrg 162d522f475Smrg#ifndef NO_ACTIVE_ICON 163d522f475Smrgstatic void do_activeicon PROTO_XT_CALLBACK_ARGS; 164d522f475Smrg#endif /* NO_ACTIVE_ICON */ 165d522f475Smrg 166956cc18dSsnj#if OPT_ALLOW_XXX_OPS 167956cc18dSsnjstatic void enable_allow_xxx_ops (Bool); 168956cc18dSsnjstatic void do_allowTcapOps PROTO_XT_CALLBACK_ARGS; 169956cc18dSsnjstatic void do_allowFontOps PROTO_XT_CALLBACK_ARGS; 170956cc18dSsnjstatic void do_allowTitleOps PROTO_XT_CALLBACK_ARGS; 171956cc18dSsnjstatic void do_allowWindowOps PROTO_XT_CALLBACK_ARGS; 172956cc18dSsnj#endif 173956cc18dSsnj 174d522f475Smrg#if OPT_BLINK_CURS 175d522f475Smrgstatic void do_cursorblink PROTO_XT_CALLBACK_ARGS; 176d522f475Smrg#endif 177d522f475Smrg 178d522f475Smrg#if OPT_BOX_CHARS 179d522f475Smrgstatic void do_font_boxchars PROTO_XT_CALLBACK_ARGS; 180d522f475Smrg#endif 181d522f475Smrg 182d522f475Smrg#if OPT_DEC_CHRSET 183d522f475Smrgstatic void do_font_doublesize PROTO_XT_CALLBACK_ARGS; 184d522f475Smrg#endif 185d522f475Smrg 186d522f475Smrg#if OPT_DEC_SOFTFONT 187d522f475Smrgstatic void do_font_loadable PROTO_XT_CALLBACK_ARGS; 188d522f475Smrg#endif 189d522f475Smrg 190d522f475Smrg#if OPT_HP_FUNC_KEYS 191d522f475Smrgstatic void do_hp_fkeys PROTO_XT_CALLBACK_ARGS; 192d522f475Smrg#endif 193d522f475Smrg 194d522f475Smrg#if OPT_NUM_LOCK 195d522f475Smrgstatic void do_alt_esc PROTO_XT_CALLBACK_ARGS; 196d522f475Smrgstatic void do_num_lock PROTO_XT_CALLBACK_ARGS; 197d522f475Smrgstatic void do_meta_esc PROTO_XT_CALLBACK_ARGS; 198d522f475Smrg#endif 199d522f475Smrg 200d522f475Smrg#if OPT_RENDERFONT 201d522f475Smrgstatic void do_font_renderfont PROTO_XT_CALLBACK_ARGS; 202d522f475Smrg#endif 203d522f475Smrg 204d522f475Smrg#if OPT_SCO_FUNC_KEYS 205d522f475Smrgstatic void do_sco_fkeys PROTO_XT_CALLBACK_ARGS; 206d522f475Smrg#endif 207d522f475Smrg 208d522f475Smrg#if OPT_SUN_FUNC_KEYS 209d522f475Smrgstatic void do_sun_fkeys PROTO_XT_CALLBACK_ARGS; 210d522f475Smrg#endif 211d522f475Smrg 212d522f475Smrg#if OPT_SUNPC_KBD 213d522f475Smrgstatic void do_sun_kbd PROTO_XT_CALLBACK_ARGS; 214d522f475Smrg#endif 215d522f475Smrg 216d522f475Smrg#if OPT_TCAP_FKEYS 217d522f475Smrgstatic void do_tcap_fkeys PROTO_XT_CALLBACK_ARGS; 218d522f475Smrg#endif 219d522f475Smrg 220d522f475Smrg#if OPT_TEK4014 221d522f475Smrgstatic void do_tekcopy PROTO_XT_CALLBACK_ARGS; 222d522f475Smrgstatic void do_tekhide PROTO_XT_CALLBACK_ARGS; 223d522f475Smrgstatic void do_tekmode PROTO_XT_CALLBACK_ARGS; 224d522f475Smrgstatic void do_tekonoff PROTO_XT_CALLBACK_ARGS; 225d522f475Smrgstatic void do_tekpage PROTO_XT_CALLBACK_ARGS; 226d522f475Smrgstatic void do_tekreset PROTO_XT_CALLBACK_ARGS; 227d522f475Smrgstatic void do_tekshow PROTO_XT_CALLBACK_ARGS; 228d522f475Smrgstatic void do_tektext2 PROTO_XT_CALLBACK_ARGS; 229d522f475Smrgstatic void do_tektext3 PROTO_XT_CALLBACK_ARGS; 230d522f475Smrgstatic void do_tektextlarge PROTO_XT_CALLBACK_ARGS; 231d522f475Smrgstatic void do_tektextsmall PROTO_XT_CALLBACK_ARGS; 232d522f475Smrgstatic void do_vthide PROTO_XT_CALLBACK_ARGS; 233d522f475Smrgstatic void do_vtmode PROTO_XT_CALLBACK_ARGS; 234d522f475Smrgstatic void do_vtonoff PROTO_XT_CALLBACK_ARGS; 235d522f475Smrgstatic void do_vtshow PROTO_XT_CALLBACK_ARGS; 236d522f475Smrgstatic void handle_tekshow (Widget gw, Bool allowswitch); 237d522f475Smrgstatic void handle_vtshow (Widget gw, Bool allowswitch); 238d522f475Smrg#endif 239d522f475Smrg 240d522f475Smrg#if OPT_TOOLBAR 241d522f475Smrgstatic void do_toolbar PROTO_XT_CALLBACK_ARGS; 242d522f475Smrg#endif 243d522f475Smrg 244d522f475Smrg#if OPT_WIDE_CHARS 245d522f475Smrgstatic void do_font_utf8_mode PROTO_XT_CALLBACK_ARGS; 246d522f475Smrgstatic void do_font_utf8_title PROTO_XT_CALLBACK_ARGS; 247d522f475Smrg#endif 248d522f475Smrg 249d522f475Smrg/* 250d522f475Smrg * The order of entries MUST match the values given in menu.h 251d522f475Smrg */ 252d522f475SmrgMenuEntry mainMenuEntries[] = { 253d522f475Smrg#if OPT_TOOLBAR 254d522f475Smrg { "toolbar", do_toolbar, NULL }, 255d522f475Smrg#endif 256d522f475Smrg { "securekbd", do_securekbd, NULL }, 257d522f475Smrg { "allowsends", do_allowsends, NULL }, 258d522f475Smrg { "redraw", do_redraw, NULL }, 259d522f475Smrg { "line1", NULL, NULL }, 260d522f475Smrg#ifdef ALLOWLOGGING 261d522f475Smrg { "logging", do_logging, NULL }, 262d522f475Smrg#endif 263d522f475Smrg { "print", do_print, NULL }, 264d522f475Smrg { "print-redir", do_print_redir, NULL }, 265d522f475Smrg { "line2", NULL, NULL }, 266d522f475Smrg { "8-bit control", do_8bit_control,NULL }, 267d522f475Smrg { "backarrow key", do_backarrow, NULL }, 268d522f475Smrg#if OPT_NUM_LOCK 269d522f475Smrg { "num-lock", do_num_lock, NULL }, 270d522f475Smrg { "alt-esc", do_alt_esc, NULL }, 271d522f475Smrg { "meta-esc", do_meta_esc, NULL }, 272d522f475Smrg#endif 273d522f475Smrg { "delete-is-del", do_delete_del, NULL }, 274d522f475Smrg { "oldFunctionKeys",do_old_fkeys, NULL }, 275d522f475Smrg#if OPT_TCAP_FKEYS 276d522f475Smrg { "tcapFunctionKeys",do_tcap_fkeys, NULL }, 277d522f475Smrg#endif 278d522f475Smrg#if OPT_HP_FUNC_KEYS 279d522f475Smrg { "hpFunctionKeys", do_hp_fkeys, NULL }, 280d522f475Smrg#endif 281d522f475Smrg#if OPT_SCO_FUNC_KEYS 282d522f475Smrg { "scoFunctionKeys",do_sco_fkeys, NULL }, 283d522f475Smrg#endif 284d522f475Smrg#if OPT_SUN_FUNC_KEYS 285d522f475Smrg { "sunFunctionKeys",do_sun_fkeys, NULL }, 286d522f475Smrg#endif 287d522f475Smrg#if OPT_SUNPC_KBD 288d522f475Smrg { "sunKeyboard", do_sun_kbd, NULL }, 289d522f475Smrg#endif 290d522f475Smrg { "line3", NULL, NULL }, 291d522f475Smrg { "suspend", do_suspend, NULL }, 292d522f475Smrg { "continue", do_continue, NULL }, 293d522f475Smrg { "interrupt", do_interrupt, NULL }, 294d522f475Smrg { "hangup", do_hangup, NULL }, 295d522f475Smrg { "terminate", do_terminate, NULL }, 296d522f475Smrg { "kill", do_kill, NULL }, 297d522f475Smrg { "line4", NULL, NULL }, 298d522f475Smrg { "quit", do_quit, NULL }}; 299d522f475Smrg 300d522f475SmrgMenuEntry vtMenuEntries[] = { 301d522f475Smrg { "scrollbar", do_scrollbar, NULL }, 302d522f475Smrg { "jumpscroll", do_jumpscroll, NULL }, 303d522f475Smrg { "reversevideo", do_reversevideo, NULL }, 304d522f475Smrg { "autowrap", do_autowrap, NULL }, 305d522f475Smrg { "reversewrap", do_reversewrap, NULL }, 306d522f475Smrg { "autolinefeed", do_autolinefeed, NULL }, 307d522f475Smrg { "appcursor", do_appcursor, NULL }, 308d522f475Smrg { "appkeypad", do_appkeypad, NULL }, 309d522f475Smrg { "scrollkey", do_scrollkey, NULL }, 310d522f475Smrg { "scrollttyoutput",do_scrollttyoutput, NULL }, 311d522f475Smrg { "allow132", do_allow132, NULL }, 312d522f475Smrg { "keepSelection", do_keepSelection, NULL }, 313d522f475Smrg { "selectToClipboard",do_selectClipboard, NULL }, 314d522f475Smrg { "visualbell", do_visualbell, NULL }, 315d522f475Smrg { "bellIsUrgent", do_bellIsUrgent, NULL }, 316d522f475Smrg { "poponbell", do_poponbell, NULL }, 317d522f475Smrg#if OPT_BLINK_CURS 318d522f475Smrg { "cursorblink", do_cursorblink, NULL }, 319d522f475Smrg#endif 320d522f475Smrg { "titeInhibit", do_titeInhibit, NULL }, 321d522f475Smrg#ifndef NO_ACTIVE_ICON 322d522f475Smrg { "activeicon", do_activeicon, NULL }, 323d522f475Smrg#endif /* NO_ACTIVE_ICON */ 324d522f475Smrg { "line1", NULL, NULL }, 325d522f475Smrg { "softreset", do_softreset, NULL }, 326d522f475Smrg { "hardreset", do_hardreset, NULL }, 327d522f475Smrg { "clearsavedlines",do_clearsavedlines, NULL }, 328d522f475Smrg { "line2", NULL, NULL }, 329d522f475Smrg#if OPT_TEK4014 330d522f475Smrg { "tekshow", do_tekshow, NULL }, 331d522f475Smrg { "tekmode", do_tekmode, NULL }, 332d522f475Smrg { "vthide", do_vthide, NULL }, 333d522f475Smrg#endif 334d522f475Smrg { "altscreen", do_altscreen, NULL }, 335d522f475Smrg }; 336d522f475Smrg 337d522f475SmrgMenuEntry fontMenuEntries[] = { 338d522f475Smrg { "fontdefault", do_vtfont, NULL }, 339d522f475Smrg { "font1", do_vtfont, NULL }, 340d522f475Smrg { "font2", do_vtfont, NULL }, 341d522f475Smrg { "font3", do_vtfont, NULL }, 342d522f475Smrg { "font4", do_vtfont, NULL }, 343d522f475Smrg { "font5", do_vtfont, NULL }, 344d522f475Smrg { "font6", do_vtfont, NULL }, 345d522f475Smrg /* this is after the last builtin font; the other entries are special */ 346d522f475Smrg { "fontescape", do_vtfont, NULL }, 347d522f475Smrg { "fontsel", do_vtfont, NULL }, 348d522f475Smrg /* down to here should match NMENUFONTS in ptyx.h */ 349d522f475Smrg 350d522f475Smrg#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 351d522f475Smrg { "line1", NULL, NULL }, 352d522f475Smrg#if OPT_BOX_CHARS 353d522f475Smrg { "font-linedrawing",do_font_boxchars,NULL }, 354d522f475Smrg#endif 355d522f475Smrg#if OPT_DEC_CHRSET 356d522f475Smrg { "font-doublesize",do_font_doublesize,NULL }, 357d522f475Smrg#endif 358d522f475Smrg#if OPT_DEC_SOFTFONT 359d522f475Smrg { "font-loadable", do_font_loadable,NULL }, 360d522f475Smrg#endif 361d522f475Smrg#endif /* toggles for DEC font extensions */ 362d522f475Smrg 363d522f475Smrg#if OPT_RENDERFONT || OPT_WIDE_CHARS 364d522f475Smrg { "line2", NULL, NULL }, 365d522f475Smrg#if OPT_RENDERFONT 366d522f475Smrg { "render-font", do_font_renderfont,NULL }, 367d522f475Smrg#endif 368d522f475Smrg#if OPT_WIDE_CHARS 369d522f475Smrg { "utf8-mode", do_font_utf8_mode,NULL }, 370d522f475Smrg { "utf8-title", do_font_utf8_title,NULL }, 371d522f475Smrg#endif 372d522f475Smrg#endif /* toggles for other font extensions */ 373d522f475Smrg 374956cc18dSsnj#if OPT_ALLOW_XXX_OPS 375956cc18dSsnj { "line3", NULL, NULL }, 376956cc18dSsnj { "allow-tcap-ops", do_allowTcapOps,NULL }, 377956cc18dSsnj { "allow-font-ops", do_allowFontOps,NULL }, 378956cc18dSsnj { "allow-title-ops",do_allowTitleOps,NULL }, 379956cc18dSsnj { "allow-window-ops",do_allowWindowOps,NULL }, 380956cc18dSsnj#endif 381956cc18dSsnj 382d522f475Smrg }; 383d522f475Smrg 384d522f475Smrg#if OPT_TEK4014 385d522f475SmrgMenuEntry tekMenuEntries[] = { 386d522f475Smrg { "tektextlarge", do_tektextlarge, NULL }, 387d522f475Smrg { "tektext2", do_tektext2, NULL }, 388d522f475Smrg { "tektext3", do_tektext3, NULL }, 389d522f475Smrg { "tektextsmall", do_tektextsmall, NULL }, 390d522f475Smrg { "line1", NULL, NULL }, 391d522f475Smrg { "tekpage", do_tekpage, NULL }, 392d522f475Smrg { "tekreset", do_tekreset, NULL }, 393d522f475Smrg { "tekcopy", do_tekcopy, NULL }, 394d522f475Smrg { "line2", NULL, NULL }, 395d522f475Smrg { "vtshow", do_vtshow, NULL }, 396d522f475Smrg { "vtmode", do_vtmode, NULL }, 397d522f475Smrg { "tekhide", do_tekhide, NULL }}; 398d522f475Smrg#endif 399d522f475Smrg 400d522f475Smrgtypedef struct { 401d522f475Smrg char *internal_name; 402d522f475Smrg MenuEntry *entry_list; 403d522f475Smrg Cardinal entry_len; 404d522f475Smrg} MenuHeader; 405d522f475Smrg 406d522f475Smrg /* This table is ordered to correspond with MenuIndex */ 407d522f475Smrgstatic MenuHeader menu_names[] = { 408d522f475Smrg { "mainMenu", mainMenuEntries, XtNumber(mainMenuEntries) }, 409d522f475Smrg { "vtMenu", vtMenuEntries, XtNumber(vtMenuEntries) }, 410d522f475Smrg { "fontMenu", fontMenuEntries, XtNumber(fontMenuEntries) }, 411d522f475Smrg#if OPT_TEK4014 412d522f475Smrg { "tekMenu", tekMenuEntries, XtNumber(tekMenuEntries) }, 413d522f475Smrg#endif 414d522f475Smrg { 0, 0, 0 }, 415d522f475Smrg}; 416d522f475Smrg/* *INDENT-ON* */ 417d522f475Smrg 418d522f475Smrg/* 419d522f475Smrg * FIXME: These are global data rather than in the xterm widget because they 420d522f475Smrg * are initialized before the widget is created. 421d522f475Smrg */ 422d522f475Smrgtypedef struct { 423d522f475Smrg Widget b; /* the toolbar's buttons */ 424d522f475Smrg Widget w; /* the popup shell activated by the button */ 425d522f475Smrg Cardinal entries; 426d522f475Smrg} MenuList; 427d522f475Smrg 428d522f475Smrgstatic MenuList vt_shell[NUM_POPUP_MENUS]; 429d522f475Smrg 430d522f475Smrg#if OPT_TEK4014 && OPT_TOOLBAR 431d522f475Smrgstatic MenuList tek_shell[NUM_POPUP_MENUS]; 432d522f475Smrg#endif 433d522f475Smrg 434d522f475Smrgstatic String 435d522f475SmrgsetMenuLocale(Bool before, String substitute) 436d522f475Smrg{ 437d522f475Smrg String result; 438d522f475Smrg 439d522f475Smrg result = setlocale(LC_CTYPE, substitute); 440d522f475Smrg if (before) { 441d522f475Smrg result = x_strdup(result); 442d522f475Smrg } else { 443d522f475Smrg result = 0; 444d522f475Smrg } 445d522f475Smrg return result; 446d522f475Smrg} 447d522f475Smrg 448d522f475Smrg/* 449d522f475Smrg * Returns a pointer to the MenuList entry that matches the popup menu. 450d522f475Smrg */ 451d522f475Smrgstatic MenuList * 452d522f475Smrgselect_menu(Widget w GCC_UNUSED, MenuIndex num) 453d522f475Smrg{ 454d522f475Smrg#if OPT_TEK4014 && OPT_TOOLBAR 455d522f475Smrg while (w != 0) { 456d522f475Smrg if (w == tekshellwidget) { 457d522f475Smrg return &tek_shell[num]; 458d522f475Smrg } 459d522f475Smrg w = XtParent(w); 460d522f475Smrg } 461d522f475Smrg#endif 462d522f475Smrg return &vt_shell[num]; 463d522f475Smrg} 464d522f475Smrg 465d522f475Smrg/* 466d522f475Smrg * Returns a pointer to the given popup menu shell 467d522f475Smrg */ 468d522f475Smrgstatic Widget 469d522f475Smrgobtain_menu(Widget w, MenuIndex num) 470d522f475Smrg{ 471d522f475Smrg return select_menu(w, num)->w; 472d522f475Smrg} 473d522f475Smrg 474d522f475Smrg/* 475d522f475Smrg * Returns the number of entries in the given popup menu shell 476d522f475Smrg */ 477d522f475Smrgstatic Cardinal 478d522f475Smrgsizeof_menu(Widget w, MenuIndex num) 479d522f475Smrg{ 480d522f475Smrg return select_menu(w, num)->entries; 481d522f475Smrg} 482d522f475Smrg 483d522f475Smrg/* 484d522f475Smrg * create_menu - create a popup shell and stuff the menu into it. 485d522f475Smrg */ 486d522f475Smrg 487d522f475Smrgstatic Widget 488d522f475Smrgcreate_menu(Widget w, XtermWidget xtw, MenuIndex num) 489d522f475Smrg{ 490d522f475Smrg static XtCallbackRec cb[2] = 491d522f475Smrg { 492d522f475Smrg {NULL, NULL}, 493d522f475Smrg {NULL, NULL}}; 494d522f475Smrg static Arg arg = 495d522f475Smrg {XtNcallback, (XtArgVal) cb}; 496d522f475Smrg 497d522f475Smrg TScreen *screen = &xtw->screen; 498d522f475Smrg MenuHeader *data = &menu_names[num]; 499d522f475Smrg MenuList *list = select_menu(w, num); 500d522f475Smrg struct _MenuEntry *entries = data->entry_list; 501956cc18dSsnj Cardinal nentries = data->entry_len; 502d522f475Smrg#if !OPT_TOOLBAR 503d522f475Smrg String saveLocale; 504d522f475Smrg#endif 505d522f475Smrg 506d522f475Smrg if (screen->menu_item_bitmap == None) { 507d522f475Smrg /* 508d522f475Smrg * we really want to do these dynamically 509d522f475Smrg */ 510d522f475Smrg#define check_width 9 511d522f475Smrg#define check_height 8 512d522f475Smrg static unsigned char check_bits[] = 513d522f475Smrg { 514d522f475Smrg 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0x60, 0x00, 515d522f475Smrg 0x31, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x04, 0x00 516d522f475Smrg }; 517d522f475Smrg 518d522f475Smrg screen->menu_item_bitmap = 519d522f475Smrg XCreateBitmapFromData(XtDisplay(xtw), 520d522f475Smrg RootWindowOfScreen(XtScreen(xtw)), 521d522f475Smrg (char *) check_bits, check_width, check_height); 522d522f475Smrg } 523d522f475Smrg#if !OPT_TOOLBAR 524d522f475Smrg saveLocale = setMenuLocale(True, resource.menuLocale); 525d522f475Smrg list->w = XtCreatePopupShell(data->internal_name, 526d522f475Smrg simpleMenuWidgetClass, 527d522f475Smrg toplevel, 528d522f475Smrg NULL, 0); 529d522f475Smrg#endif 530d522f475Smrg if (list->w != 0) { 531d522f475Smrg list->entries = nentries; 532d522f475Smrg 533d522f475Smrg for (; nentries > 0; nentries--, entries++) { 534d522f475Smrg cb[0].callback = (XtCallbackProc) entries->function; 535d522f475Smrg cb[0].closure = (caddr_t) entries->name; 536d522f475Smrg entries->widget = XtCreateManagedWidget(entries->name, 537d522f475Smrg (entries->function 538d522f475Smrg ? smeBSBObjectClass 539d522f475Smrg : smeLineObjectClass), 540d522f475Smrg list->w, 541d522f475Smrg &arg, (Cardinal) 1); 542d522f475Smrg } 543d522f475Smrg } 544d522f475Smrg#if !OPT_TOOLBAR 545d522f475Smrg (void) setMenuLocale(False, saveLocale); 546d522f475Smrg#endif 547d522f475Smrg 548d522f475Smrg /* do not realize at this point */ 549d522f475Smrg return list->w; 550d522f475Smrg} 551d522f475Smrg 552d522f475Smrgstatic MenuIndex 553d522f475SmrgindexOfMenu(String menuName) 554d522f475Smrg{ 555d522f475Smrg MenuIndex me; 556d522f475Smrg switch (*menuName) { 557d522f475Smrg case 'm': 558d522f475Smrg me = mainMenu; 559d522f475Smrg break; 560d522f475Smrg case 'v': 561d522f475Smrg me = vtMenu; 562d522f475Smrg break; 563d522f475Smrg case 'f': 564d522f475Smrg me = fontMenu; 565d522f475Smrg break; 566d522f475Smrg#if OPT_TEK4014 567d522f475Smrg case 't': 568d522f475Smrg me = tekMenu; 569d522f475Smrg break; 570d522f475Smrg#endif 571d522f475Smrg default: 572d522f475Smrg me = noMenu; 573d522f475Smrg } 574d522f475Smrg return (me); 575d522f475Smrg} 576d522f475Smrg 577d522f475Smrg/* ARGSUSED */ 578d522f475Smrgstatic Bool 579d522f475Smrgdomenu(Widget w, 580d522f475Smrg XEvent * event GCC_UNUSED, 581d522f475Smrg String * params, /* mainMenu, vtMenu, or tekMenu */ 582d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 583d522f475Smrg{ 584d522f475Smrg TScreen *screen = TScreenOf(term); 585d522f475Smrg MenuIndex me; 586d522f475Smrg Bool created = False; 587d522f475Smrg Widget mw; 588d522f475Smrg 589d522f475Smrg if (*param_count != 1) { 590d522f475Smrg Bell(XkbBI_MinorError, 0); 591d522f475Smrg return False; 592d522f475Smrg } 593d522f475Smrg 594d522f475Smrg if ((me = indexOfMenu(params[0])) == noMenu) { 595d522f475Smrg Bell(XkbBI_MinorError, 0); 596d522f475Smrg return False; 597d522f475Smrg } 598d522f475Smrg 599d522f475Smrg if ((mw = obtain_menu(w, me)) == 0 600d522f475Smrg || sizeof_menu(w, me) == 0) { 601d522f475Smrg mw = create_menu(w, term, me); 602d522f475Smrg created = (mw != 0); 603d522f475Smrg } 604d522f475Smrg if (mw == 0) 605d522f475Smrg return False; 606d522f475Smrg 607d522f475Smrg TRACE(("domenu(%s) %s\n", params[0], created ? "create" : "update")); 608d522f475Smrg switch (me) { 609d522f475Smrg case mainMenu: 610d522f475Smrg if (created) { 611d522f475Smrg update_toolbar(); 612d522f475Smrg update_securekbd(); 613d522f475Smrg update_allowsends(); 614d522f475Smrg update_logging(); 615d522f475Smrg update_print_redir(); 616d522f475Smrg update_8bit_control(); 617d522f475Smrg update_decbkm(); 618d522f475Smrg update_num_lock(); 619d522f475Smrg update_alt_esc(); 620d522f475Smrg update_meta_esc(); 621d522f475Smrg update_delete_del(); 622d522f475Smrg update_keyboard_type(); 623d522f475Smrg#if OPT_NUM_LOCK 624d522f475Smrg if (!screen->alt_is_not_meta) { 625d522f475Smrg SetItemSensitivity(mainMenuEntries[mainMenu_alt_esc].widget, 626d522f475Smrg False); 627d522f475Smrg } 628d522f475Smrg#endif 629956cc18dSsnj if (!xtermHasPrinter(term)) { 630d522f475Smrg SetItemSensitivity(mainMenuEntries[mainMenu_print].widget, 631d522f475Smrg False); 632d522f475Smrg SetItemSensitivity(mainMenuEntries[mainMenu_print_redir].widget, 633d522f475Smrg False); 634d522f475Smrg } 635d522f475Smrg if (screen->terminal_id < 200) { 636d522f475Smrg SetItemSensitivity( 637d522f475Smrg mainMenuEntries[mainMenu_8bit_ctrl].widget, 638d522f475Smrg False); 639d522f475Smrg } 640d522f475Smrg#if !defined(SIGTSTP) 641d522f475Smrg SetItemSensitivity( 642d522f475Smrg mainMenuEntries[mainMenu_suspend].widget, False); 643d522f475Smrg#endif 644d522f475Smrg#if !defined(SIGCONT) 645d522f475Smrg SetItemSensitivity( 646d522f475Smrg mainMenuEntries[mainMenu_continue].widget, False); 647d522f475Smrg#endif 648d522f475Smrg#ifdef ALLOWLOGGING 649d522f475Smrg if (screen->inhibit & I_LOG) { 650d522f475Smrg SetItemSensitivity( 651d522f475Smrg mainMenuEntries[mainMenu_logging].widget, False); 652d522f475Smrg } 653d522f475Smrg#endif 654d522f475Smrg if (screen->inhibit & I_SIGNAL) { 655d522f475Smrg int n; 656d522f475Smrg for (n = (int) mainMenu_suspend; n <= (int) mainMenu_quit; ++n) { 657d522f475Smrg SetItemSensitivity(mainMenuEntries[n].widget, False); 658d522f475Smrg } 659d522f475Smrg } 660d522f475Smrg } 661d522f475Smrg break; 662d522f475Smrg 663d522f475Smrg case vtMenu: 664d522f475Smrg if (created) { 665d522f475Smrg update_scrollbar(); 666d522f475Smrg update_jumpscroll(); 667d522f475Smrg update_reversevideo(); 668d522f475Smrg update_autowrap(); 669d522f475Smrg update_reversewrap(); 670d522f475Smrg update_autolinefeed(); 671d522f475Smrg update_appcursor(); 672d522f475Smrg update_appkeypad(); 673d522f475Smrg update_scrollkey(); 674d522f475Smrg update_scrollttyoutput(); 675d522f475Smrg update_allow132(); 676d522f475Smrg update_cursesemul(); 677d522f475Smrg update_keepSelection(); 678d522f475Smrg update_selectToClipboard(); 679d522f475Smrg update_visualbell(); 680d522f475Smrg update_poponbell(); 681d522f475Smrg update_bellIsUrgent(); 682d522f475Smrg update_cursorblink(); 683d522f475Smrg update_altscreen(); 684d522f475Smrg update_titeInhibit(); 685d522f475Smrg#ifndef NO_ACTIVE_ICON 686d522f475Smrg if (!screen->fnt_icon.fs || !screen->iconVwin.window) { 687d522f475Smrg SetItemSensitivity( 688d522f475Smrg vtMenuEntries[vtMenu_activeicon].widget, 689d522f475Smrg False); 690d522f475Smrg } else 691d522f475Smrg update_activeicon(); 692d522f475Smrg#endif /* NO_ACTIVE_ICON */ 693d522f475Smrg#if OPT_TEK4014 694d522f475Smrg if (screen->inhibit & I_TEK) { 695d522f475Smrg int n; 696d522f475Smrg for (n = (int) vtMenu_tekshow; n <= (int) vtMenu_vthide; ++n) { 697d522f475Smrg SetItemSensitivity(vtMenuEntries[n].widget, False); 698d522f475Smrg } 699d522f475Smrg } 700d522f475Smrg#endif 701d522f475Smrg } 702d522f475Smrg break; 703d522f475Smrg 704d522f475Smrg case fontMenu: 705d522f475Smrg if (created) { 706d522f475Smrg set_menu_font(True); 707d522f475Smrg SetItemSensitivity( 708d522f475Smrg fontMenuEntries[fontMenu_fontescape].widget, 709d522f475Smrg (screen->menu_font_names[fontMenu_fontescape][fNorm] 710d522f475Smrg ? True : False)); 711d522f475Smrg#if OPT_BOX_CHARS 712d522f475Smrg update_font_boxchars(); 713d522f475Smrg SetItemSensitivity( 714d522f475Smrg fontMenuEntries[fontMenu_font_boxchars].widget, 715d522f475Smrg True); 716d522f475Smrg#endif 717d522f475Smrg#if OPT_DEC_SOFTFONT /* FIXME: not implemented */ 718d522f475Smrg update_font_loadable(); 719d522f475Smrg SetItemSensitivity( 720d522f475Smrg fontMenuEntries[fontMenu_font_loadable].widget, 721d522f475Smrg False); 722d522f475Smrg#endif 723d522f475Smrg#if OPT_DEC_CHRSET 724d522f475Smrg update_font_doublesize(); 725d522f475Smrg if (term->screen.cache_doublesize == 0) 726d522f475Smrg SetItemSensitivity( 727d522f475Smrg fontMenuEntries[fontMenu_font_doublesize].widget, 728d522f475Smrg False); 729d522f475Smrg#endif 730d522f475Smrg#if OPT_RENDERFONT 731d522f475Smrg update_font_renderfont(); 732d522f475Smrg if (term->misc.face_name == 0) { 733d522f475Smrg SetItemSensitivity( 734d522f475Smrg fontMenuEntries[fontMenu_render_font].widget, 735d522f475Smrg False); 736d522f475Smrg } 737d522f475Smrg#endif 738d522f475Smrg#if OPT_WIDE_CHARS 739d522f475Smrg update_font_utf8_mode(); 740d522f475Smrg update_font_utf8_title(); 741956cc18dSsnj#endif 742956cc18dSsnj#if OPT_ALLOW_XXX_OPS 743956cc18dSsnj update_menu_allowTcapOps(); 744956cc18dSsnj update_menu_allowFontOps(); 745956cc18dSsnj update_menu_allowTitleOps(); 746956cc18dSsnj update_menu_allowWindowOps(); 747956cc18dSsnj enable_allow_xxx_ops(!(screen->allowSendEvents)); 748d522f475Smrg#endif 749d522f475Smrg } 750d522f475Smrg FindFontSelection(term, NULL, True); 751d522f475Smrg SetItemSensitivity( 752d522f475Smrg fontMenuEntries[fontMenu_fontsel].widget, 753d522f475Smrg (screen->menu_font_names[fontMenu_fontsel] 754d522f475Smrg ? True : False)); 755d522f475Smrg break; 756d522f475Smrg 757d522f475Smrg#if OPT_TEK4014 758d522f475Smrg case tekMenu: 759d522f475Smrg if (created && tekWidget) { 760d522f475Smrg set_tekfont_menu_item(tekWidget->screen.cur.fontsize, True); 761d522f475Smrg update_vtshow(); 762d522f475Smrg } 763d522f475Smrg break; 764d522f475Smrg#endif 765d522f475Smrg case noMenu: 766d522f475Smrg default: 767d522f475Smrg break; 768d522f475Smrg } 769d522f475Smrg 770d522f475Smrg return True; 771d522f475Smrg} 772d522f475Smrg 773d522f475Smrg/* 774d522f475Smrg * public interfaces 775d522f475Smrg */ 776d522f475Smrg 777d522f475Smrgvoid 778d522f475SmrgHandleCreateMenu(Widget w, 779d522f475Smrg XEvent * event, 780d522f475Smrg String * params, /* mainMenu, vtMenu, or tekMenu */ 781d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 782d522f475Smrg{ 783d522f475Smrg TRACE(("HandleCreateMenu\n")); 784d522f475Smrg (void) domenu(w, event, params, param_count); 785d522f475Smrg} 786d522f475Smrg 787d522f475Smrgvoid 788d522f475SmrgHandlePopupMenu(Widget w, 789d522f475Smrg XEvent * event, 790d522f475Smrg String * params, /* mainMenu, vtMenu, or tekMenu */ 791d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 792d522f475Smrg{ 793d522f475Smrg TRACE(("HandlePopupMenu\n")); 794d522f475Smrg if (domenu(w, event, params, param_count)) { 795d522f475Smrg#if OPT_TOOLBAR 796d522f475Smrg w = select_menu(w, mainMenu)->w; 797d522f475Smrg#endif 798d522f475Smrg XtCallActionProc(w, "XawPositionSimpleMenu", event, params, 1); 799d522f475Smrg XtCallActionProc(w, "MenuPopup", event, params, 1); 800d522f475Smrg } 801d522f475Smrg} 802d522f475Smrg 803d522f475Smrg/* 804d522f475Smrg * private interfaces - keep out! 805d522f475Smrg */ 806d522f475Smrg 807d522f475Smrg/* ARGSUSED */ 808d522f475Smrgstatic void 809d522f475Smrghandle_send_signal(Widget gw GCC_UNUSED, int sig) 810d522f475Smrg{ 811d522f475Smrg#ifndef VMS 812d522f475Smrg TScreen *screen = TScreenOf(term); 813d522f475Smrg 814d522f475Smrg if (hold_screen > 1) 815d522f475Smrg hold_screen = 0; 816d522f475Smrg if (screen->pid > 1) 817d522f475Smrg kill_process_group(screen->pid, sig); 818d522f475Smrg#endif 819d522f475Smrg} 820d522f475Smrg 821d522f475Smrg/* 822d522f475Smrg * action routines 823d522f475Smrg */ 824d522f475Smrg 825d522f475Smrgstatic void 826d522f475Smrgdo_securekbd(Widget gw GCC_UNUSED, 827d522f475Smrg XtPointer closure GCC_UNUSED, 828d522f475Smrg XtPointer data GCC_UNUSED) 829d522f475Smrg{ 830d522f475Smrg TScreen *screen = TScreenOf(term); 831d522f475Smrg Time now = CurrentTime; /* XXX - wrong */ 832d522f475Smrg 833d522f475Smrg if (screen->grabbedKbd) { 834d522f475Smrg XUngrabKeyboard(screen->display, now); 835d522f475Smrg ReverseVideo(term); 836d522f475Smrg screen->grabbedKbd = False; 837d522f475Smrg } else { 838d522f475Smrg if (XGrabKeyboard(screen->display, XtWindow(CURRENT_EMU()), 839d522f475Smrg True, GrabModeAsync, GrabModeAsync, now) 840d522f475Smrg != GrabSuccess) { 841d522f475Smrg Bell(XkbBI_MinorError, 100); 842d522f475Smrg } else { 843d522f475Smrg ReverseVideo(term); 844d522f475Smrg screen->grabbedKbd = True; 845d522f475Smrg } 846d522f475Smrg } 847d522f475Smrg update_securekbd(); 848d522f475Smrg} 849d522f475Smrg 850d522f475Smrg/* ARGSUSED */ 851d522f475Smrgvoid 852d522f475SmrgHandleSecure(Widget w GCC_UNUSED, 853d522f475Smrg XEvent * event GCC_UNUSED, /* unused */ 854d522f475Smrg String * params GCC_UNUSED, /* [0] = volume */ 855d522f475Smrg Cardinal *param_count GCC_UNUSED) /* 0 or 1 */ 856d522f475Smrg{ 857d522f475Smrg#if 0 858d522f475Smrg Time ev_time = CurrentTime; 859d522f475Smrg 860d522f475Smrg if ((event->xany.type == KeyPress) || 861d522f475Smrg (event->xany.type == KeyRelease)) 862d522f475Smrg ev_time = event->xkey.time; 863d522f475Smrg else if ((event->xany.type == ButtonPress) || 864d522f475Smrg (event->xany.type == ButtonRelease)) 865d522f475Smrg ev_time = event->xbutton.time; 866d522f475Smrg#endif 867d522f475Smrg do_securekbd(vt_shell[mainMenu].w, (XtPointer) 0, (XtPointer) 0); 868d522f475Smrg} 869d522f475Smrg 870d522f475Smrgstatic void 871d522f475Smrgdo_allowsends(Widget gw GCC_UNUSED, 872d522f475Smrg XtPointer closure GCC_UNUSED, 873d522f475Smrg XtPointer data GCC_UNUSED) 874d522f475Smrg{ 875d522f475Smrg TScreen *screen = TScreenOf(term); 876d522f475Smrg 877956cc18dSsnj ToggleFlag(screen->allowSendEvents); 878d522f475Smrg update_allowsends(); 879956cc18dSsnj#if OPT_ALLOW_XXX_OPS 880956cc18dSsnj enable_allow_xxx_ops(!(screen->allowSendEvents)); 881956cc18dSsnj#endif 882d522f475Smrg} 883d522f475Smrg 884d522f475Smrgstatic void 885d522f475Smrgdo_visualbell(Widget gw GCC_UNUSED, 886d522f475Smrg XtPointer closure GCC_UNUSED, 887d522f475Smrg XtPointer data GCC_UNUSED) 888d522f475Smrg{ 889d522f475Smrg TScreen *screen = TScreenOf(term); 890d522f475Smrg 891956cc18dSsnj ToggleFlag(screen->visualbell); 892d522f475Smrg update_visualbell(); 893d522f475Smrg} 894d522f475Smrg 895d522f475Smrgstatic void 896d522f475Smrgdo_bellIsUrgent(Widget gw GCC_UNUSED, 897d522f475Smrg XtPointer closure GCC_UNUSED, 898d522f475Smrg XtPointer data GCC_UNUSED) 899d522f475Smrg{ 900d522f475Smrg TScreen *screen = TScreenOf(term); 901d522f475Smrg 902956cc18dSsnj ToggleFlag(screen->bellIsUrgent); 903d522f475Smrg update_bellIsUrgent(); 904d522f475Smrg} 905d522f475Smrg 906d522f475Smrgstatic void 907d522f475Smrgdo_poponbell(Widget gw GCC_UNUSED, 908d522f475Smrg XtPointer closure GCC_UNUSED, 909d522f475Smrg XtPointer data GCC_UNUSED) 910d522f475Smrg{ 911d522f475Smrg TScreen *screen = TScreenOf(term); 912d522f475Smrg 913956cc18dSsnj ToggleFlag(screen->poponbell); 914d522f475Smrg update_poponbell(); 915d522f475Smrg} 916d522f475Smrg 917d522f475Smrg#ifdef ALLOWLOGGING 918d522f475Smrgstatic void 919d522f475Smrgdo_logging(Widget gw GCC_UNUSED, 920d522f475Smrg XtPointer closure GCC_UNUSED, 921d522f475Smrg XtPointer data GCC_UNUSED) 922d522f475Smrg{ 923d522f475Smrg TScreen *screen = TScreenOf(term); 924d522f475Smrg 925d522f475Smrg if (screen->logging) { 926d522f475Smrg CloseLog(screen); 927d522f475Smrg } else { 928d522f475Smrg StartLog(screen); 929d522f475Smrg } 930d522f475Smrg /* update_logging done by CloseLog and StartLog */ 931d522f475Smrg} 932d522f475Smrg#endif 933d522f475Smrg 934d522f475Smrgstatic void 935d522f475Smrgdo_print(Widget gw GCC_UNUSED, 936d522f475Smrg XtPointer closure GCC_UNUSED, 937d522f475Smrg XtPointer data GCC_UNUSED) 938d522f475Smrg{ 939956cc18dSsnj xtermPrintScreen(term, True); 940956cc18dSsnj} 941956cc18dSsnj 942956cc18dSsnjstatic void 943956cc18dSsnjdo_print_everything(Widget gw GCC_UNUSED, 944956cc18dSsnj XtPointer closure GCC_UNUSED, 945956cc18dSsnj XtPointer data GCC_UNUSED) 946956cc18dSsnj{ 947956cc18dSsnj xtermPrintEverything(term); 948d522f475Smrg} 949d522f475Smrg 950d522f475Smrgstatic void 951d522f475Smrgdo_print_redir(Widget gw GCC_UNUSED, 952d522f475Smrg XtPointer closure GCC_UNUSED, 953d522f475Smrg XtPointer data GCC_UNUSED) 954d522f475Smrg{ 955956cc18dSsnj setPrinterControlMode(term, term->screen.printer_controlmode ? 0 : 2); 956d522f475Smrg} 957d522f475Smrg 958d522f475Smrgstatic void 959d522f475Smrgdo_redraw(Widget gw GCC_UNUSED, 960d522f475Smrg XtPointer closure GCC_UNUSED, 961d522f475Smrg XtPointer data GCC_UNUSED) 962d522f475Smrg{ 963d522f475Smrg Redraw(); 964d522f475Smrg} 965d522f475Smrg 966d522f475Smrgvoid 967d522f475Smrgshow_8bit_control(Bool value) 968d522f475Smrg{ 969d522f475Smrg if (term->screen.control_eight_bits != value) { 970956cc18dSsnj term->screen.control_eight_bits = (Boolean) value; 971d522f475Smrg update_8bit_control(); 972d522f475Smrg } 973d522f475Smrg} 974d522f475Smrg 975d522f475Smrgstatic void 976d522f475Smrgdo_8bit_control(Widget gw GCC_UNUSED, 977d522f475Smrg XtPointer closure GCC_UNUSED, 978d522f475Smrg XtPointer data GCC_UNUSED) 979d522f475Smrg{ 980d522f475Smrg show_8bit_control(!term->screen.control_eight_bits); 981d522f475Smrg} 982d522f475Smrg 983d522f475Smrgstatic void 984d522f475Smrgdo_backarrow(Widget gw GCC_UNUSED, 985d522f475Smrg XtPointer closure GCC_UNUSED, 986d522f475Smrg XtPointer data GCC_UNUSED) 987d522f475Smrg{ 988d522f475Smrg term->keyboard.flags ^= MODE_DECBKM; 989d522f475Smrg update_decbkm(); 990d522f475Smrg} 991d522f475Smrg 992d522f475Smrg#if OPT_NUM_LOCK 993d522f475Smrgstatic void 994d522f475Smrgdo_num_lock(Widget gw GCC_UNUSED, 995d522f475Smrg XtPointer closure GCC_UNUSED, 996d522f475Smrg XtPointer data GCC_UNUSED) 997d522f475Smrg{ 998956cc18dSsnj ToggleFlag(term->misc.real_NumLock); 999d522f475Smrg update_num_lock(); 1000d522f475Smrg} 1001d522f475Smrg 1002d522f475Smrgstatic void 1003d522f475Smrgdo_alt_esc(Widget gw GCC_UNUSED, 1004d522f475Smrg XtPointer closure GCC_UNUSED, 1005d522f475Smrg XtPointer data GCC_UNUSED) 1006d522f475Smrg{ 1007956cc18dSsnj ToggleFlag(term->screen.alt_sends_esc); 1008d522f475Smrg update_alt_esc(); 1009d522f475Smrg} 1010d522f475Smrg 1011d522f475Smrgstatic void 1012d522f475Smrgdo_meta_esc(Widget gw GCC_UNUSED, 1013d522f475Smrg XtPointer closure GCC_UNUSED, 1014d522f475Smrg XtPointer data GCC_UNUSED) 1015d522f475Smrg{ 1016956cc18dSsnj ToggleFlag(term->screen.meta_sends_esc); 1017d522f475Smrg update_meta_esc(); 1018d522f475Smrg} 1019d522f475Smrg#endif 1020d522f475Smrg 1021d522f475Smrgstatic void 1022d522f475Smrgdo_delete_del(Widget gw GCC_UNUSED, 1023d522f475Smrg XtPointer closure GCC_UNUSED, 1024d522f475Smrg XtPointer data GCC_UNUSED) 1025d522f475Smrg{ 1026d522f475Smrg if (xtermDeleteIsDEL(term)) 1027d522f475Smrg term->screen.delete_is_del = False; 1028d522f475Smrg else 1029d522f475Smrg term->screen.delete_is_del = True; 1030d522f475Smrg update_delete_del(); 1031d522f475Smrg} 1032d522f475Smrg 1033d522f475Smrgstatic void 1034d522f475Smrgdo_old_fkeys(Widget gw GCC_UNUSED, 1035d522f475Smrg XtPointer closure GCC_UNUSED, 1036d522f475Smrg XtPointer data GCC_UNUSED) 1037d522f475Smrg{ 1038d522f475Smrg toggle_keyboard_type(term, keyboardIsLegacy); 1039d522f475Smrg} 1040d522f475Smrg 1041d522f475Smrg#if OPT_HP_FUNC_KEYS 1042d522f475Smrgstatic void 1043d522f475Smrgdo_hp_fkeys(Widget gw GCC_UNUSED, 1044d522f475Smrg XtPointer closure GCC_UNUSED, 1045d522f475Smrg XtPointer data GCC_UNUSED) 1046d522f475Smrg{ 1047d522f475Smrg toggle_keyboard_type(term, keyboardIsHP); 1048d522f475Smrg} 1049d522f475Smrg#endif 1050d522f475Smrg 1051d522f475Smrg#if OPT_SCO_FUNC_KEYS 1052d522f475Smrgstatic void 1053d522f475Smrgdo_sco_fkeys(Widget gw GCC_UNUSED, 1054d522f475Smrg XtPointer closure GCC_UNUSED, 1055d522f475Smrg XtPointer data GCC_UNUSED) 1056d522f475Smrg{ 1057d522f475Smrg toggle_keyboard_type(term, keyboardIsSCO); 1058d522f475Smrg} 1059d522f475Smrg#endif 1060d522f475Smrg 1061d522f475Smrg#if OPT_SUN_FUNC_KEYS 1062d522f475Smrgstatic void 1063d522f475Smrgdo_sun_fkeys(Widget gw GCC_UNUSED, 1064d522f475Smrg XtPointer closure GCC_UNUSED, 1065d522f475Smrg XtPointer data GCC_UNUSED) 1066d522f475Smrg{ 1067d522f475Smrg toggle_keyboard_type(term, keyboardIsSun); 1068d522f475Smrg} 1069d522f475Smrg#endif 1070d522f475Smrg 1071d522f475Smrg#if OPT_SUNPC_KBD 1072d522f475Smrg/* 1073d522f475Smrg * This really means "Sun/PC keyboard emulating VT220". 1074d522f475Smrg */ 1075d522f475Smrgstatic void 1076d522f475Smrgdo_sun_kbd(Widget gw GCC_UNUSED, 1077d522f475Smrg XtPointer closure GCC_UNUSED, 1078d522f475Smrg XtPointer data GCC_UNUSED) 1079d522f475Smrg{ 1080d522f475Smrg toggle_keyboard_type(term, keyboardIsVT220); 1081d522f475Smrg} 1082d522f475Smrg#endif 1083d522f475Smrg 1084d522f475Smrg#if OPT_TCAP_FKEYS 1085d522f475Smrgstatic void 1086d522f475Smrgdo_tcap_fkeys(Widget gw GCC_UNUSED, 1087d522f475Smrg XtPointer closure GCC_UNUSED, 1088d522f475Smrg XtPointer data GCC_UNUSED) 1089d522f475Smrg{ 1090d522f475Smrg toggle_keyboard_type(term, keyboardIsTermcap); 1091d522f475Smrg} 1092d522f475Smrg#endif 1093d522f475Smrg 1094d522f475Smrg/* 1095d522f475Smrg * The following cases use the pid instead of the process group so that we 1096d522f475Smrg * don't get hosed by programs that change their process group 1097d522f475Smrg */ 1098d522f475Smrg 1099d522f475Smrg/* ARGSUSED */ 1100d522f475Smrgstatic void 1101d522f475Smrgdo_suspend(Widget gw, 1102d522f475Smrg XtPointer closure GCC_UNUSED, 1103d522f475Smrg XtPointer data GCC_UNUSED) 1104d522f475Smrg{ 1105d522f475Smrg#if defined(SIGTSTP) 1106d522f475Smrg handle_send_signal(gw, SIGTSTP); 1107d522f475Smrg#endif 1108d522f475Smrg} 1109d522f475Smrg 1110d522f475Smrg/* ARGSUSED */ 1111d522f475Smrgstatic void 1112d522f475Smrgdo_continue(Widget gw, 1113d522f475Smrg XtPointer closure GCC_UNUSED, 1114d522f475Smrg XtPointer data GCC_UNUSED) 1115d522f475Smrg{ 1116d522f475Smrg#if defined(SIGCONT) 1117d522f475Smrg handle_send_signal(gw, SIGCONT); 1118d522f475Smrg#endif 1119d522f475Smrg} 1120d522f475Smrg 1121d522f475Smrg/* ARGSUSED */ 1122d522f475Smrgstatic void 1123d522f475Smrgdo_interrupt(Widget gw, 1124d522f475Smrg XtPointer closure GCC_UNUSED, 1125d522f475Smrg XtPointer data GCC_UNUSED) 1126d522f475Smrg{ 1127d522f475Smrg handle_send_signal(gw, SIGINT); 1128d522f475Smrg} 1129d522f475Smrg 1130d522f475Smrg/* ARGSUSED */ 1131d522f475Smrgvoid 1132d522f475Smrgdo_hangup(Widget gw, 1133d522f475Smrg XtPointer closure GCC_UNUSED, 1134d522f475Smrg XtPointer data GCC_UNUSED) 1135d522f475Smrg{ 1136d522f475Smrg handle_send_signal(gw, SIGHUP); 1137d522f475Smrg} 1138d522f475Smrg 1139d522f475Smrg/* ARGSUSED */ 1140d522f475Smrgstatic void 1141d522f475Smrgdo_terminate(Widget gw, 1142d522f475Smrg XtPointer closure GCC_UNUSED, 1143d522f475Smrg XtPointer data GCC_UNUSED) 1144d522f475Smrg{ 1145d522f475Smrg handle_send_signal(gw, SIGTERM); 1146d522f475Smrg} 1147d522f475Smrg 1148d522f475Smrg/* ARGSUSED */ 1149d522f475Smrgstatic void 1150d522f475Smrgdo_kill(Widget gw, 1151d522f475Smrg XtPointer closure GCC_UNUSED, 1152d522f475Smrg XtPointer data GCC_UNUSED) 1153d522f475Smrg{ 1154d522f475Smrg handle_send_signal(gw, SIGKILL); 1155d522f475Smrg} 1156d522f475Smrg 1157d522f475Smrgstatic void 1158d522f475Smrgdo_quit(Widget gw GCC_UNUSED, 1159d522f475Smrg XtPointer closure GCC_UNUSED, 1160d522f475Smrg XtPointer data GCC_UNUSED) 1161d522f475Smrg{ 1162d522f475Smrg Cleanup(SIGHUP); 1163d522f475Smrg} 1164d522f475Smrg 1165d522f475Smrg/* 1166d522f475Smrg * vt menu callbacks 1167d522f475Smrg */ 1168d522f475Smrg 1169d522f475Smrgstatic void 1170d522f475Smrgdo_scrollbar(Widget gw GCC_UNUSED, 1171d522f475Smrg XtPointer closure GCC_UNUSED, 1172d522f475Smrg XtPointer data GCC_UNUSED) 1173d522f475Smrg{ 1174d522f475Smrg ToggleScrollBar(term); 1175d522f475Smrg} 1176d522f475Smrg 1177d522f475Smrgstatic void 1178d522f475Smrgdo_jumpscroll(Widget gw GCC_UNUSED, 1179d522f475Smrg XtPointer closure GCC_UNUSED, 1180d522f475Smrg XtPointer data GCC_UNUSED) 1181d522f475Smrg{ 1182d522f475Smrg TScreen *screen = TScreenOf(term); 1183d522f475Smrg 1184d522f475Smrg term->flags ^= SMOOTHSCROLL; 1185d522f475Smrg if (term->flags & SMOOTHSCROLL) { 1186d522f475Smrg screen->jumpscroll = False; 1187d522f475Smrg if (screen->scroll_amt) 1188d522f475Smrg FlushScroll(term); 1189d522f475Smrg } else { 1190d522f475Smrg screen->jumpscroll = True; 1191d522f475Smrg } 1192d522f475Smrg update_jumpscroll(); 1193d522f475Smrg} 1194d522f475Smrg 1195d522f475Smrgstatic void 1196d522f475Smrgdo_reversevideo(Widget gw GCC_UNUSED, 1197d522f475Smrg XtPointer closure GCC_UNUSED, 1198d522f475Smrg XtPointer data GCC_UNUSED) 1199d522f475Smrg{ 1200d522f475Smrg ReverseVideo(term); 1201d522f475Smrg} 1202d522f475Smrg 1203d522f475Smrgstatic void 1204d522f475Smrgdo_autowrap(Widget gw GCC_UNUSED, 1205d522f475Smrg XtPointer closure GCC_UNUSED, 1206d522f475Smrg XtPointer data GCC_UNUSED) 1207d522f475Smrg{ 1208d522f475Smrg term->flags ^= WRAPAROUND; 1209d522f475Smrg update_autowrap(); 1210d522f475Smrg} 1211d522f475Smrg 1212d522f475Smrgstatic void 1213d522f475Smrgdo_reversewrap(Widget gw GCC_UNUSED, 1214d522f475Smrg XtPointer closure GCC_UNUSED, 1215d522f475Smrg XtPointer data GCC_UNUSED) 1216d522f475Smrg{ 1217d522f475Smrg term->flags ^= REVERSEWRAP; 1218d522f475Smrg update_reversewrap(); 1219d522f475Smrg} 1220d522f475Smrg 1221d522f475Smrgstatic void 1222d522f475Smrgdo_autolinefeed(Widget gw GCC_UNUSED, 1223d522f475Smrg XtPointer closure GCC_UNUSED, 1224d522f475Smrg XtPointer data GCC_UNUSED) 1225d522f475Smrg{ 1226d522f475Smrg term->flags ^= LINEFEED; 1227d522f475Smrg update_autolinefeed(); 1228d522f475Smrg} 1229d522f475Smrg 1230d522f475Smrgstatic void 1231d522f475Smrgdo_appcursor(Widget gw GCC_UNUSED, 1232d522f475Smrg XtPointer closure GCC_UNUSED, 1233d522f475Smrg XtPointer data GCC_UNUSED) 1234d522f475Smrg{ 1235d522f475Smrg term->keyboard.flags ^= MODE_DECCKM; 1236d522f475Smrg update_appcursor(); 1237d522f475Smrg} 1238d522f475Smrg 1239d522f475Smrgstatic void 1240d522f475Smrgdo_appkeypad(Widget gw GCC_UNUSED, 1241d522f475Smrg XtPointer closure GCC_UNUSED, 1242d522f475Smrg XtPointer data GCC_UNUSED) 1243d522f475Smrg{ 1244d522f475Smrg term->keyboard.flags ^= MODE_DECKPAM; 1245d522f475Smrg update_appkeypad(); 1246d522f475Smrg} 1247d522f475Smrg 1248d522f475Smrgstatic void 1249d522f475Smrgdo_scrollkey(Widget gw GCC_UNUSED, 1250d522f475Smrg XtPointer closure GCC_UNUSED, 1251d522f475Smrg XtPointer data GCC_UNUSED) 1252d522f475Smrg{ 1253d522f475Smrg TScreen *screen = TScreenOf(term); 1254d522f475Smrg 1255956cc18dSsnj ToggleFlag(screen->scrollkey); 1256d522f475Smrg update_scrollkey(); 1257d522f475Smrg} 1258d522f475Smrg 1259d522f475Smrgstatic void 1260d522f475Smrgdo_scrollttyoutput(Widget gw GCC_UNUSED, 1261d522f475Smrg XtPointer closure GCC_UNUSED, 1262d522f475Smrg XtPointer data GCC_UNUSED) 1263d522f475Smrg{ 1264d522f475Smrg TScreen *screen = TScreenOf(term); 1265d522f475Smrg 1266956cc18dSsnj ToggleFlag(screen->scrollttyoutput); 1267d522f475Smrg update_scrollttyoutput(); 1268d522f475Smrg} 1269d522f475Smrg 1270d522f475Smrgstatic void 1271d522f475Smrgdo_keepSelection(Widget gw GCC_UNUSED, 1272d522f475Smrg XtPointer closure GCC_UNUSED, 1273d522f475Smrg XtPointer data GCC_UNUSED) 1274d522f475Smrg{ 1275d522f475Smrg TScreen *screen = TScreenOf(term); 1276d522f475Smrg 1277956cc18dSsnj ToggleFlag(screen->keepSelection); 1278d522f475Smrg update_keepSelection(); 1279d522f475Smrg} 1280d522f475Smrg 1281d522f475Smrgstatic void 1282d522f475Smrgdo_selectClipboard(Widget gw GCC_UNUSED, 1283d522f475Smrg XtPointer closure GCC_UNUSED, 1284d522f475Smrg XtPointer data GCC_UNUSED) 1285d522f475Smrg{ 1286d522f475Smrg TScreen *screen = TScreenOf(term); 1287d522f475Smrg 1288956cc18dSsnj ToggleFlag(screen->selectToClipboard); 1289d522f475Smrg update_selectToClipboard(); 1290d522f475Smrg} 1291d522f475Smrg 1292d522f475Smrgstatic void 1293d522f475Smrgdo_allow132(Widget gw GCC_UNUSED, 1294d522f475Smrg XtPointer closure GCC_UNUSED, 1295d522f475Smrg XtPointer data GCC_UNUSED) 1296d522f475Smrg{ 1297d522f475Smrg TScreen *screen = TScreenOf(term); 1298d522f475Smrg 1299956cc18dSsnj ToggleFlag(screen->c132); 1300d522f475Smrg update_allow132(); 1301d522f475Smrg} 1302d522f475Smrg 1303d522f475Smrgstatic void 1304d522f475Smrgdo_cursesemul(Widget gw GCC_UNUSED, 1305d522f475Smrg XtPointer closure GCC_UNUSED, 1306d522f475Smrg XtPointer data GCC_UNUSED) 1307d522f475Smrg{ 1308d522f475Smrg TScreen *screen = TScreenOf(term); 1309d522f475Smrg 1310956cc18dSsnj ToggleFlag(screen->curses); 1311d522f475Smrg update_cursesemul(); 1312d522f475Smrg} 1313d522f475Smrg 1314d522f475Smrgstatic void 1315d522f475Smrgdo_marginbell(Widget gw GCC_UNUSED, 1316d522f475Smrg XtPointer closure GCC_UNUSED, 1317d522f475Smrg XtPointer data GCC_UNUSED) 1318d522f475Smrg{ 1319d522f475Smrg TScreen *screen = TScreenOf(term); 1320d522f475Smrg 1321956cc18dSsnj if (!(ToggleFlag(screen->marginbell))) 1322d522f475Smrg screen->bellarmed = -1; 1323d522f475Smrg update_marginbell(); 1324d522f475Smrg} 1325d522f475Smrg 1326d522f475Smrg#if OPT_TEK4014 1327d522f475Smrgstatic void 1328d522f475Smrghandle_tekshow(Widget gw GCC_UNUSED, Bool allowswitch) 1329d522f475Smrg{ 1330d522f475Smrg TScreen *screen = TScreenOf(term); 1331d522f475Smrg 1332d522f475Smrg TRACE(("Show tek-window\n")); 1333d522f475Smrg if (!TEK4014_SHOWN(term)) { /* not showing, turn on */ 1334d522f475Smrg set_tek_visibility(True); 1335d522f475Smrg } else if (screen->Vshow || allowswitch) { /* is showing, turn off */ 1336d522f475Smrg set_tek_visibility(False); 1337d522f475Smrg end_tek_mode(); /* WARNING: this does a longjmp */ 1338d522f475Smrg } else 1339d522f475Smrg Bell(XkbBI_MinorError, 0); 1340d522f475Smrg} 1341d522f475Smrg 1342d522f475Smrg/* ARGSUSED */ 1343d522f475Smrgstatic void 1344d522f475Smrgdo_tekshow(Widget gw, 1345d522f475Smrg XtPointer closure GCC_UNUSED, 1346d522f475Smrg XtPointer data GCC_UNUSED) 1347d522f475Smrg{ 1348d522f475Smrg handle_tekshow(gw, True); 1349d522f475Smrg} 1350d522f475Smrg 1351d522f475Smrg/* ARGSUSED */ 1352d522f475Smrgstatic void 1353d522f475Smrgdo_tekonoff(Widget gw, 1354d522f475Smrg XtPointer closure GCC_UNUSED, 1355d522f475Smrg XtPointer data GCC_UNUSED) 1356d522f475Smrg{ 1357d522f475Smrg handle_tekshow(gw, False); 1358d522f475Smrg} 1359d522f475Smrg#endif /* OPT_TEK4014 */ 1360d522f475Smrg 1361d522f475Smrg#if OPT_BLINK_CURS 1362d522f475Smrg/* ARGSUSED */ 1363d522f475Smrgstatic void 1364d522f475Smrgdo_cursorblink(Widget gw GCC_UNUSED, 1365d522f475Smrg XtPointer closure GCC_UNUSED, 1366d522f475Smrg XtPointer data GCC_UNUSED) 1367d522f475Smrg{ 1368d522f475Smrg TScreen *screen = TScreenOf(term); 1369d522f475Smrg ToggleCursorBlink(screen); 1370d522f475Smrg} 1371d522f475Smrg#endif 1372d522f475Smrg 1373d522f475Smrg/* ARGSUSED */ 1374d522f475Smrgstatic void 1375d522f475Smrgdo_altscreen(Widget gw GCC_UNUSED, 1376d522f475Smrg XtPointer closure GCC_UNUSED, 1377d522f475Smrg XtPointer data GCC_UNUSED) 1378d522f475Smrg{ 1379d522f475Smrg ToggleAlternate(term); 1380d522f475Smrg} 1381d522f475Smrg 1382d522f475Smrg/* ARGSUSED */ 1383d522f475Smrgstatic void 1384d522f475Smrgdo_titeInhibit(Widget gw GCC_UNUSED, 1385d522f475Smrg XtPointer closure GCC_UNUSED, 1386d522f475Smrg XtPointer data GCC_UNUSED) 1387d522f475Smrg{ 1388956cc18dSsnj ToggleFlag(term->misc.titeInhibit); 1389d522f475Smrg update_titeInhibit(); 1390d522f475Smrg} 1391d522f475Smrg 1392d522f475Smrg#ifndef NO_ACTIVE_ICON 1393d522f475Smrg/* ARGSUSED */ 1394d522f475Smrgstatic void 1395d522f475Smrgdo_activeicon(Widget gw GCC_UNUSED, 1396d522f475Smrg XtPointer closure GCC_UNUSED, 1397d522f475Smrg XtPointer data GCC_UNUSED) 1398d522f475Smrg{ 1399d522f475Smrg TScreen *screen = TScreenOf(term); 1400d522f475Smrg 1401d522f475Smrg if (screen->iconVwin.window) { 1402d522f475Smrg Widget shell = XtParent(term); 1403956cc18dSsnj ToggleFlag(term->misc.active_icon); 1404d522f475Smrg XtVaSetValues(shell, XtNiconWindow, 1405d522f475Smrg term->misc.active_icon ? screen->iconVwin.window : None, 1406d522f475Smrg (XtPointer) 0); 1407d522f475Smrg update_activeicon(); 1408d522f475Smrg } 1409d522f475Smrg} 1410d522f475Smrg#endif /* NO_ACTIVE_ICON */ 1411d522f475Smrg 1412d522f475Smrgstatic void 1413d522f475Smrgdo_softreset(Widget gw GCC_UNUSED, 1414d522f475Smrg XtPointer closure GCC_UNUSED, 1415d522f475Smrg XtPointer data GCC_UNUSED) 1416d522f475Smrg{ 1417d522f475Smrg VTReset(term, False, False); 1418d522f475Smrg} 1419d522f475Smrg 1420d522f475Smrgstatic void 1421d522f475Smrgdo_hardreset(Widget gw GCC_UNUSED, 1422d522f475Smrg XtPointer closure GCC_UNUSED, 1423d522f475Smrg XtPointer data GCC_UNUSED) 1424d522f475Smrg{ 1425d522f475Smrg VTReset(term, True, False); 1426d522f475Smrg} 1427d522f475Smrg 1428d522f475Smrgstatic void 1429d522f475Smrgdo_clearsavedlines(Widget gw GCC_UNUSED, 1430d522f475Smrg XtPointer closure GCC_UNUSED, 1431d522f475Smrg XtPointer data GCC_UNUSED) 1432d522f475Smrg{ 1433d522f475Smrg VTReset(term, True, True); 1434d522f475Smrg} 1435d522f475Smrg 1436d522f475Smrg#if OPT_TEK4014 1437d522f475Smrgstatic void 1438d522f475Smrgdo_tekmode(Widget gw GCC_UNUSED, 1439d522f475Smrg XtPointer closure GCC_UNUSED, 1440d522f475Smrg XtPointer data GCC_UNUSED) 1441d522f475Smrg{ 1442d522f475Smrg switch_modes(TEK4014_ACTIVE(term)); /* switch to tek mode */ 1443d522f475Smrg} 1444d522f475Smrg 1445d522f475Smrg/* ARGSUSED */ 1446d522f475Smrgstatic void 1447d522f475Smrgdo_vthide(Widget gw GCC_UNUSED, 1448d522f475Smrg XtPointer closure GCC_UNUSED, 1449d522f475Smrg XtPointer data GCC_UNUSED) 1450d522f475Smrg{ 1451d522f475Smrg hide_vt_window(); 1452d522f475Smrg} 1453d522f475Smrg#endif /* OPT_TEK4014 */ 1454d522f475Smrg 1455d522f475Smrg/* 1456d522f475Smrg * vtfont menu 1457d522f475Smrg */ 1458d522f475Smrg 1459d522f475Smrgstatic void 1460d522f475Smrgdo_vtfont(Widget gw GCC_UNUSED, 1461d522f475Smrg XtPointer closure, 1462d522f475Smrg XtPointer data GCC_UNUSED) 1463d522f475Smrg{ 1464d522f475Smrg char *entryname = (char *) closure; 1465d522f475Smrg int i; 1466d522f475Smrg 1467d522f475Smrg for (i = 0; i < NMENUFONTS; i++) { 1468d522f475Smrg if (strcmp(entryname, fontMenuEntries[i].name) == 0) { 1469d522f475Smrg SetVTFont(term, i, True, NULL); 1470d522f475Smrg return; 1471d522f475Smrg } 1472d522f475Smrg } 1473d522f475Smrg Bell(XkbBI_MinorError, 0); 1474d522f475Smrg} 1475d522f475Smrg 1476d522f475Smrg#if OPT_DEC_CHRSET 1477d522f475Smrgstatic void 1478d522f475Smrgdo_font_doublesize(Widget gw GCC_UNUSED, 1479d522f475Smrg XtPointer closure GCC_UNUSED, 1480d522f475Smrg XtPointer data GCC_UNUSED) 1481d522f475Smrg{ 1482d522f475Smrg if (term->screen.cache_doublesize != 0) 1483956cc18dSsnj ToggleFlag(term->screen.font_doublesize); 1484d522f475Smrg update_font_doublesize(); 1485d522f475Smrg Redraw(); 1486d522f475Smrg} 1487d522f475Smrg#endif 1488d522f475Smrg 1489d522f475Smrg#if OPT_BOX_CHARS 1490d522f475Smrgstatic void 1491d522f475Smrgdo_font_boxchars(Widget gw GCC_UNUSED, 1492d522f475Smrg XtPointer closure GCC_UNUSED, 1493d522f475Smrg XtPointer data GCC_UNUSED) 1494d522f475Smrg{ 1495956cc18dSsnj ToggleFlag(term->screen.force_box_chars); 1496d522f475Smrg update_font_boxchars(); 1497d522f475Smrg Redraw(); 1498d522f475Smrg} 1499d522f475Smrg#endif 1500d522f475Smrg 1501d522f475Smrg#if OPT_DEC_SOFTFONT 1502d522f475Smrgstatic void 1503d522f475Smrgdo_font_loadable(Widget gw GCC_UNUSED, 1504d522f475Smrg XtPointer closure GCC_UNUSED, 1505d522f475Smrg XtPointer data GCC_UNUSED) 1506d522f475Smrg{ 1507956cc18dSsnj ToggleFlag(term->misc.font_loadable); 1508d522f475Smrg update_font_loadable(); 1509d522f475Smrg} 1510d522f475Smrg#endif 1511d522f475Smrg 1512d522f475Smrg#if OPT_RENDERFONT 1513d522f475Smrgstatic void 1514d522f475Smrgdo_font_renderfont(Widget gw GCC_UNUSED, 1515d522f475Smrg XtPointer closure GCC_UNUSED, 1516d522f475Smrg XtPointer data GCC_UNUSED) 1517d522f475Smrg{ 1518d522f475Smrg TScreen *screen = TScreenOf(term); 1519d522f475Smrg int fontnum = screen->menu_font_number; 1520d522f475Smrg String name = term->screen.MenuFontName(fontnum); 1521d522f475Smrg 1522956cc18dSsnj ToggleFlag(term->misc.render_font); 1523d522f475Smrg update_font_renderfont(); 1524d522f475Smrg xtermLoadFont(term, xtermFontName(name), True, fontnum); 1525d522f475Smrg ScrnRefresh(term, 0, 0, 1526d522f475Smrg MaxRows(screen), 1527d522f475Smrg MaxCols(screen), True); 1528d522f475Smrg} 1529d522f475Smrg#endif 1530d522f475Smrg 1531d522f475Smrg#if OPT_WIDE_CHARS 1532d522f475Smrgstatic void 1533d522f475Smrgdo_font_utf8_mode(Widget gw GCC_UNUSED, 1534d522f475Smrg XtPointer closure GCC_UNUSED, 1535d522f475Smrg XtPointer data GCC_UNUSED) 1536d522f475Smrg{ 1537d522f475Smrg TScreen *screen = TScreenOf(term); 1538d522f475Smrg 1539d522f475Smrg /* 1540d522f475Smrg * If xterm was started with -wc option, it might not have the wide fonts. 1541d522f475Smrg * If xterm was not started with -wc, it might not have wide cells. 1542d522f475Smrg */ 1543d522f475Smrg if (!screen->utf8_mode) { 1544d522f475Smrg if (screen->wide_chars) { 1545d522f475Smrg if (xtermLoadWideFonts(term, True)) { 1546d522f475Smrg SetVTFont(term, screen->menu_font_number, True, NULL); 1547d522f475Smrg } 1548d522f475Smrg } else { 1549d522f475Smrg ChangeToWide(term); 1550d522f475Smrg } 1551d522f475Smrg } 1552d522f475Smrg switchPtyData(screen, !screen->utf8_mode); 1553d522f475Smrg /* 1554d522f475Smrg * We don't repaint the screen when switching UTF-8 on/off. When switching 1555d522f475Smrg * on - the Latin-1 codes should paint as-is. When switching off, that's 1556d522f475Smrg * hard to do properly. 1557d522f475Smrg */ 1558d522f475Smrg} 1559d522f475Smrg 1560d522f475Smrgstatic void 1561d522f475Smrgdo_font_utf8_title(Widget gw GCC_UNUSED, 1562d522f475Smrg XtPointer closure GCC_UNUSED, 1563d522f475Smrg XtPointer data GCC_UNUSED) 1564d522f475Smrg{ 1565d522f475Smrg TScreen *screen = TScreenOf(term); 1566d522f475Smrg 1567956cc18dSsnj ToggleFlag(screen->utf8_title); 1568d522f475Smrg update_font_utf8_title(); 1569d522f475Smrg} 1570d522f475Smrg#endif 1571d522f475Smrg 1572d522f475Smrg/* 1573d522f475Smrg * tek menu 1574d522f475Smrg */ 1575d522f475Smrg 1576d522f475Smrg#if OPT_TEK4014 1577d522f475Smrgstatic void 1578956cc18dSsnjdo_tektextlarge(Widget gw, 1579d522f475Smrg XtPointer closure GCC_UNUSED, 1580d522f475Smrg XtPointer data GCC_UNUSED) 1581d522f475Smrg{ 1582956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektextlarge); 1583d522f475Smrg} 1584d522f475Smrg 1585d522f475Smrgstatic void 1586956cc18dSsnjdo_tektext2(Widget gw, 1587d522f475Smrg XtPointer closure GCC_UNUSED, 1588d522f475Smrg XtPointer data GCC_UNUSED) 1589d522f475Smrg{ 1590956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektext2); 1591d522f475Smrg} 1592d522f475Smrg 1593d522f475Smrgstatic void 1594956cc18dSsnjdo_tektext3(Widget gw, 1595d522f475Smrg XtPointer closure GCC_UNUSED, 1596d522f475Smrg XtPointer data GCC_UNUSED) 1597d522f475Smrg{ 1598956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektext3); 1599d522f475Smrg} 1600d522f475Smrg 1601d522f475Smrgstatic void 1602956cc18dSsnjdo_tektextsmall(Widget gw, 1603d522f475Smrg XtPointer closure GCC_UNUSED, 1604d522f475Smrg XtPointer data GCC_UNUSED) 1605d522f475Smrg{ 1606956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektextsmall); 1607d522f475Smrg} 1608d522f475Smrg 1609d522f475Smrgstatic void 1610956cc18dSsnjdo_tekpage(Widget gw, 1611d522f475Smrg XtPointer closure GCC_UNUSED, 1612d522f475Smrg XtPointer data GCC_UNUSED) 1613d522f475Smrg{ 1614956cc18dSsnj TekSimulatePageButton(getTekWidget(gw), False); 1615d522f475Smrg} 1616d522f475Smrg 1617d522f475Smrgstatic void 1618956cc18dSsnjdo_tekreset(Widget gw, 1619d522f475Smrg XtPointer closure GCC_UNUSED, 1620d522f475Smrg XtPointer data GCC_UNUSED) 1621d522f475Smrg{ 1622956cc18dSsnj TekSimulatePageButton(getTekWidget(gw), True); 1623d522f475Smrg} 1624d522f475Smrg 1625d522f475Smrgstatic void 1626956cc18dSsnjdo_tekcopy(Widget gw, 1627d522f475Smrg XtPointer closure GCC_UNUSED, 1628d522f475Smrg XtPointer data GCC_UNUSED) 1629d522f475Smrg{ 1630956cc18dSsnj TekCopy(getTekWidget(gw)); 1631d522f475Smrg} 1632d522f475Smrg 1633d522f475Smrgstatic void 1634d522f475Smrghandle_vtshow(Widget gw GCC_UNUSED, Bool allowswitch) 1635d522f475Smrg{ 1636d522f475Smrg TScreen *screen = TScreenOf(term); 1637d522f475Smrg 1638d522f475Smrg TRACE(("Show vt-window\n")); 1639d522f475Smrg if (!screen->Vshow) { /* not showing, turn on */ 1640d522f475Smrg set_vt_visibility(True); 1641d522f475Smrg } else if (TEK4014_SHOWN(term) || allowswitch) { /* is showing, turn off */ 1642d522f475Smrg set_vt_visibility(False); 1643d522f475Smrg if (!TEK4014_ACTIVE(term) && tekRefreshList) 1644d522f475Smrg TekRefresh(tekWidget); 1645d522f475Smrg end_vt_mode(); /* WARNING: this does a longjmp... */ 1646d522f475Smrg } else 1647d522f475Smrg Bell(XkbBI_MinorError, 0); 1648d522f475Smrg} 1649d522f475Smrg 1650d522f475Smrgstatic void 1651d522f475Smrgdo_vtshow(Widget gw, 1652d522f475Smrg XtPointer closure GCC_UNUSED, 1653d522f475Smrg XtPointer data GCC_UNUSED) 1654d522f475Smrg{ 1655d522f475Smrg handle_vtshow(gw, True); 1656d522f475Smrg} 1657d522f475Smrg 1658d522f475Smrgstatic void 1659d522f475Smrgdo_vtonoff(Widget gw, 1660d522f475Smrg XtPointer closure GCC_UNUSED, 1661d522f475Smrg XtPointer data GCC_UNUSED) 1662d522f475Smrg{ 1663d522f475Smrg handle_vtshow(gw, False); 1664d522f475Smrg} 1665d522f475Smrg 1666d522f475Smrgstatic void 1667d522f475Smrgdo_vtmode(Widget gw GCC_UNUSED, 1668d522f475Smrg XtPointer closure GCC_UNUSED, 1669d522f475Smrg XtPointer data GCC_UNUSED) 1670d522f475Smrg{ 1671d522f475Smrg switch_modes(TEK4014_ACTIVE(term)); /* switch to vt, or from */ 1672d522f475Smrg} 1673d522f475Smrg 1674d522f475Smrg/* ARGSUSED */ 1675d522f475Smrgstatic void 1676d522f475Smrgdo_tekhide(Widget gw GCC_UNUSED, 1677d522f475Smrg XtPointer closure GCC_UNUSED, 1678d522f475Smrg XtPointer data GCC_UNUSED) 1679d522f475Smrg{ 1680d522f475Smrg hide_tek_window(); 1681d522f475Smrg} 1682d522f475Smrg#endif /* OPT_TEK4014 */ 1683d522f475Smrg 1684d522f475Smrg/* 1685d522f475Smrg * public handler routines 1686d522f475Smrg */ 1687d522f475Smrg 1688d522f475Smrgstatic void 1689d522f475Smrghandle_toggle(void (*proc) PROTO_XT_CALLBACK_ARGS, 1690d522f475Smrg int var, 1691d522f475Smrg String * params, 1692d522f475Smrg Cardinal nparams, 1693d522f475Smrg Widget w, 1694d522f475Smrg XtPointer closure, 1695d522f475Smrg XtPointer data) 1696d522f475Smrg{ 1697d522f475Smrg int dir = -2; 1698d522f475Smrg 1699d522f475Smrg switch (nparams) { 1700d522f475Smrg case 0: 1701d522f475Smrg dir = -1; 1702d522f475Smrg break; 1703d522f475Smrg case 1: 1704d522f475Smrg if (XmuCompareISOLatin1(params[0], "on") == 0) 1705d522f475Smrg dir = 1; 1706d522f475Smrg else if (XmuCompareISOLatin1(params[0], "off") == 0) 1707d522f475Smrg dir = 0; 1708d522f475Smrg else if (XmuCompareISOLatin1(params[0], "toggle") == 0) 1709d522f475Smrg dir = -1; 1710d522f475Smrg break; 1711d522f475Smrg } 1712d522f475Smrg 1713d522f475Smrg switch (dir) { 1714d522f475Smrg case -2: 1715d522f475Smrg Bell(XkbBI_MinorError, 0); 1716d522f475Smrg break; 1717d522f475Smrg 1718d522f475Smrg case -1: 1719d522f475Smrg (*proc) (w, closure, data); 1720d522f475Smrg break; 1721d522f475Smrg 1722d522f475Smrg case 0: 1723d522f475Smrg if (var) 1724d522f475Smrg (*proc) (w, closure, data); 1725d522f475Smrg else 1726d522f475Smrg Bell(XkbBI_MinorError, 0); 1727d522f475Smrg break; 1728d522f475Smrg 1729d522f475Smrg case 1: 1730d522f475Smrg if (!var) 1731d522f475Smrg (*proc) (w, closure, data); 1732d522f475Smrg else 1733d522f475Smrg Bell(XkbBI_MinorError, 0); 1734d522f475Smrg break; 1735d522f475Smrg } 1736d522f475Smrg return; 1737d522f475Smrg} 1738d522f475Smrg 1739d522f475Smrg#define handle_vt_toggle(proc, var, params, nparams, w) \ 1740d522f475Smrg handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0) 1741d522f475Smrg 1742d522f475Smrg#define handle_tek_toggle(proc, var, params, nparams, w) \ 1743d522f475Smrg handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0) 1744d522f475Smrg 1745d522f475Smrgvoid 1746d522f475SmrgHandleAllowSends(Widget w, 1747d522f475Smrg XEvent * event GCC_UNUSED, 1748d522f475Smrg String * params, 1749d522f475Smrg Cardinal *param_count) 1750d522f475Smrg{ 1751d522f475Smrg handle_vt_toggle(do_allowsends, term->screen.allowSendEvents, 1752d522f475Smrg params, *param_count, w); 1753d522f475Smrg} 1754d522f475Smrg 1755d522f475Smrgvoid 1756d522f475SmrgHandleSetVisualBell(Widget w, 1757d522f475Smrg XEvent * event GCC_UNUSED, 1758d522f475Smrg String * params, 1759d522f475Smrg Cardinal *param_count) 1760d522f475Smrg{ 1761d522f475Smrg handle_vt_toggle(do_visualbell, term->screen.visualbell, 1762d522f475Smrg params, *param_count, w); 1763d522f475Smrg} 1764d522f475Smrg 1765d522f475Smrgvoid 1766d522f475SmrgHandleSetPopOnBell(Widget w, 1767d522f475Smrg XEvent * event GCC_UNUSED, 1768d522f475Smrg String * params, 1769d522f475Smrg Cardinal *param_count) 1770d522f475Smrg{ 1771d522f475Smrg handle_vt_toggle(do_poponbell, term->screen.poponbell, 1772d522f475Smrg params, *param_count, w); 1773d522f475Smrg} 1774d522f475Smrg 1775d522f475Smrg#ifdef ALLOWLOGGING 1776d522f475Smrgvoid 1777d522f475SmrgHandleLogging(Widget w, 1778d522f475Smrg XEvent * event GCC_UNUSED, 1779d522f475Smrg String * params, 1780d522f475Smrg Cardinal *param_count) 1781d522f475Smrg{ 1782d522f475Smrg handle_vt_toggle(do_logging, term->screen.logging, 1783d522f475Smrg params, *param_count, w); 1784d522f475Smrg} 1785d522f475Smrg#endif 1786d522f475Smrg 1787d522f475Smrg/* ARGSUSED */ 1788d522f475Smrgvoid 1789d522f475SmrgHandlePrintScreen(Widget w, 1790d522f475Smrg XEvent * event GCC_UNUSED, 1791d522f475Smrg String * params GCC_UNUSED, 1792d522f475Smrg Cardinal *param_count GCC_UNUSED) 1793d522f475Smrg{ 1794d522f475Smrg do_print(w, (XtPointer) 0, (XtPointer) 0); 1795d522f475Smrg} 1796d522f475Smrg 1797956cc18dSsnj/* ARGSUSED */ 1798956cc18dSsnjvoid 1799956cc18dSsnjHandlePrintEverything(Widget w, 1800956cc18dSsnj XEvent * event GCC_UNUSED, 1801956cc18dSsnj String * params GCC_UNUSED, 1802956cc18dSsnj Cardinal *param_count GCC_UNUSED) 1803956cc18dSsnj{ 1804956cc18dSsnj do_print_everything(w, (XtPointer) 0, (XtPointer) 0); 1805956cc18dSsnj} 1806956cc18dSsnj 1807d522f475Smrg/* ARGSUSED */ 1808d522f475Smrgvoid 1809d522f475SmrgHandlePrintControlMode(Widget w, 1810d522f475Smrg XEvent * event GCC_UNUSED, 1811d522f475Smrg String * params GCC_UNUSED, 1812d522f475Smrg Cardinal *param_count GCC_UNUSED) 1813d522f475Smrg{ 1814d522f475Smrg do_print_redir(w, (XtPointer) 0, (XtPointer) 0); 1815d522f475Smrg} 1816d522f475Smrg 1817d522f475Smrg/* ARGSUSED */ 1818d522f475Smrgvoid 1819d522f475SmrgHandleRedraw(Widget w, 1820d522f475Smrg XEvent * event GCC_UNUSED, 1821d522f475Smrg String * params GCC_UNUSED, 1822d522f475Smrg Cardinal *param_count GCC_UNUSED) 1823d522f475Smrg{ 1824d522f475Smrg do_redraw(w, (XtPointer) 0, (XtPointer) 0); 1825d522f475Smrg} 1826d522f475Smrg 1827d522f475Smrg/* ARGSUSED */ 1828d522f475Smrgvoid 1829d522f475SmrgHandleSendSignal(Widget w, 1830d522f475Smrg XEvent * event GCC_UNUSED, 1831d522f475Smrg String * params, 1832d522f475Smrg Cardinal *param_count) 1833d522f475Smrg{ 1834d522f475Smrg /* *INDENT-OFF* */ 1835d522f475Smrg static struct sigtab { 1836d522f475Smrg char *name; 1837d522f475Smrg int sig; 1838d522f475Smrg } signals[] = { 1839d522f475Smrg#ifdef SIGTSTP 1840d522f475Smrg { "suspend", SIGTSTP }, 1841d522f475Smrg { "tstp", SIGTSTP }, 1842d522f475Smrg#endif 1843d522f475Smrg#ifdef SIGCONT 1844d522f475Smrg { "cont", SIGCONT }, 1845d522f475Smrg#endif 1846d522f475Smrg { "int", SIGINT }, 1847d522f475Smrg { "hup", SIGHUP }, 1848d522f475Smrg { "quit", SIGQUIT }, 1849d522f475Smrg { "alrm", SIGALRM }, 1850d522f475Smrg { "alarm", SIGALRM }, 1851d522f475Smrg { "term", SIGTERM }, 1852d522f475Smrg { "kill", SIGKILL }, 1853d522f475Smrg { NULL, 0 }, 1854d522f475Smrg }; 1855d522f475Smrg /* *INDENT-ON* */ 1856d522f475Smrg 1857d522f475Smrg if (*param_count == 1) { 1858d522f475Smrg struct sigtab *st; 1859d522f475Smrg 1860d522f475Smrg for (st = signals; st->name; st++) { 1861d522f475Smrg if (XmuCompareISOLatin1(st->name, params[0]) == 0) { 1862d522f475Smrg handle_send_signal(w, st->sig); 1863d522f475Smrg return; 1864d522f475Smrg } 1865d522f475Smrg } 1866d522f475Smrg /* one could allow numeric values, but that would be a security hole */ 1867d522f475Smrg } 1868d522f475Smrg 1869d522f475Smrg Bell(XkbBI_MinorError, 0); 1870d522f475Smrg} 1871d522f475Smrg 1872d522f475Smrg/* ARGSUSED */ 1873d522f475Smrgvoid 1874d522f475SmrgHandleQuit(Widget w, 1875d522f475Smrg XEvent * event GCC_UNUSED, 1876d522f475Smrg String * params GCC_UNUSED, 1877d522f475Smrg Cardinal *param_count GCC_UNUSED) 1878d522f475Smrg{ 1879d522f475Smrg do_quit(w, (XtPointer) 0, (XtPointer) 0); 1880d522f475Smrg} 1881d522f475Smrg 1882d522f475Smrgvoid 1883d522f475SmrgHandle8BitControl(Widget w, 1884d522f475Smrg XEvent * event GCC_UNUSED, 1885d522f475Smrg String * params, 1886d522f475Smrg Cardinal *param_count) 1887d522f475Smrg{ 1888d522f475Smrg handle_vt_toggle(do_8bit_control, term->screen.control_eight_bits, 1889d522f475Smrg params, *param_count, w); 1890d522f475Smrg} 1891d522f475Smrg 1892d522f475Smrgvoid 1893d522f475SmrgHandleBackarrow(Widget w, 1894d522f475Smrg XEvent * event GCC_UNUSED, 1895d522f475Smrg String * params, 1896d522f475Smrg Cardinal *param_count) 1897d522f475Smrg{ 1898d522f475Smrg handle_vt_toggle(do_backarrow, term->keyboard.flags & MODE_DECBKM, 1899d522f475Smrg params, *param_count, w); 1900d522f475Smrg} 1901d522f475Smrg 1902d522f475Smrg#if OPT_SUN_FUNC_KEYS 1903d522f475Smrgvoid 1904d522f475SmrgHandleSunFunctionKeys(Widget w, 1905d522f475Smrg XEvent * event GCC_UNUSED, 1906d522f475Smrg String * params, 1907d522f475Smrg Cardinal *param_count) 1908d522f475Smrg{ 1909d522f475Smrg handle_vt_toggle(do_sun_fkeys, term->keyboard.type == keyboardIsSun, 1910d522f475Smrg params, *param_count, w); 1911d522f475Smrg} 1912d522f475Smrg#endif 1913d522f475Smrg 1914d522f475Smrg#if OPT_NUM_LOCK 1915d522f475Smrgvoid 1916d522f475SmrgHandleNumLock(Widget w, 1917d522f475Smrg XEvent * event GCC_UNUSED, 1918d522f475Smrg String * params, 1919d522f475Smrg Cardinal *param_count) 1920d522f475Smrg{ 1921d522f475Smrg handle_vt_toggle(do_num_lock, term->misc.real_NumLock, 1922d522f475Smrg params, *param_count, w); 1923d522f475Smrg} 1924d522f475Smrg 1925d522f475Smrgvoid 1926d522f475SmrgHandleAltEsc(Widget w, 1927d522f475Smrg XEvent * event GCC_UNUSED, 1928d522f475Smrg String * params, 1929d522f475Smrg Cardinal *param_count) 1930d522f475Smrg{ 1931d522f475Smrg handle_vt_toggle(do_alt_esc, !term->screen.input_eight_bits, 1932d522f475Smrg params, *param_count, w); 1933d522f475Smrg} 1934d522f475Smrg 1935d522f475Smrgvoid 1936d522f475SmrgHandleMetaEsc(Widget w, 1937d522f475Smrg XEvent * event GCC_UNUSED, 1938d522f475Smrg String * params, 1939d522f475Smrg Cardinal *param_count) 1940d522f475Smrg{ 1941d522f475Smrg handle_vt_toggle(do_meta_esc, term->screen.meta_sends_esc, 1942d522f475Smrg params, *param_count, w); 1943d522f475Smrg} 1944d522f475Smrg#endif 1945d522f475Smrg 1946d522f475Smrgvoid 1947d522f475SmrgHandleDeleteIsDEL(Widget w, 1948d522f475Smrg XEvent * event GCC_UNUSED, 1949d522f475Smrg String * params, 1950d522f475Smrg Cardinal *param_count) 1951d522f475Smrg{ 1952d522f475Smrg handle_vt_toggle(do_delete_del, term->screen.delete_is_del, 1953d522f475Smrg params, *param_count, w); 1954d522f475Smrg} 1955d522f475Smrg 1956d522f475Smrgvoid 1957d522f475SmrgHandleOldFunctionKeys(Widget w, 1958d522f475Smrg XEvent * event GCC_UNUSED, 1959d522f475Smrg String * params, 1960d522f475Smrg Cardinal *param_count) 1961d522f475Smrg{ 1962d522f475Smrg handle_vt_toggle(do_old_fkeys, term->keyboard.type == keyboardIsLegacy, 1963d522f475Smrg params, *param_count, w); 1964d522f475Smrg} 1965d522f475Smrg 1966d522f475Smrg#if OPT_SUNPC_KBD 1967d522f475Smrgvoid 1968d522f475SmrgHandleSunKeyboard(Widget w, 1969d522f475Smrg XEvent * event GCC_UNUSED, 1970d522f475Smrg String * params, 1971d522f475Smrg Cardinal *param_count) 1972d522f475Smrg{ 1973d522f475Smrg handle_vt_toggle(do_sun_kbd, term->keyboard.type == keyboardIsVT220, 1974d522f475Smrg params, *param_count, w); 1975d522f475Smrg} 1976d522f475Smrg#endif 1977d522f475Smrg 1978d522f475Smrg#if OPT_HP_FUNC_KEYS 1979d522f475Smrgvoid 1980d522f475SmrgHandleHpFunctionKeys(Widget w, 1981d522f475Smrg XEvent * event GCC_UNUSED, 1982d522f475Smrg String * params, 1983d522f475Smrg Cardinal *param_count) 1984d522f475Smrg{ 1985d522f475Smrg handle_vt_toggle(do_hp_fkeys, term->keyboard.type == keyboardIsHP, 1986d522f475Smrg params, *param_count, w); 1987d522f475Smrg} 1988d522f475Smrg#endif 1989d522f475Smrg 1990d522f475Smrg#if OPT_SCO_FUNC_KEYS 1991d522f475Smrgvoid 1992d522f475SmrgHandleScoFunctionKeys(Widget w, 1993d522f475Smrg XEvent * event GCC_UNUSED, 1994d522f475Smrg String * params, 1995d522f475Smrg Cardinal *param_count) 1996d522f475Smrg{ 1997d522f475Smrg handle_vt_toggle(do_sco_fkeys, term->keyboard.type == keyboardIsSCO, 1998d522f475Smrg params, *param_count, w); 1999d522f475Smrg} 2000d522f475Smrg#endif 2001d522f475Smrg 2002d522f475Smrgvoid 2003d522f475SmrgHandleScrollbar(Widget w, 2004d522f475Smrg XEvent * event GCC_UNUSED, 2005d522f475Smrg String * params, 2006d522f475Smrg Cardinal *param_count) 2007d522f475Smrg{ 2008d522f475Smrg if (IsIcon(&(term->screen))) { 2009d522f475Smrg Bell(XkbBI_MinorError, 0); 2010d522f475Smrg } else { 2011d522f475Smrg handle_vt_toggle(do_scrollbar, term->screen.fullVwin.sb_info.width, 2012d522f475Smrg params, *param_count, w); 2013d522f475Smrg } 2014d522f475Smrg} 2015d522f475Smrg 2016d522f475Smrgvoid 2017d522f475SmrgHandleJumpscroll(Widget w, 2018d522f475Smrg XEvent * event GCC_UNUSED, 2019d522f475Smrg String * params, 2020d522f475Smrg Cardinal *param_count) 2021d522f475Smrg{ 2022d522f475Smrg handle_vt_toggle(do_jumpscroll, term->screen.jumpscroll, 2023d522f475Smrg params, *param_count, w); 2024d522f475Smrg} 2025d522f475Smrg 2026d522f475Smrgvoid 2027d522f475SmrgHandleKeepSelection(Widget w, 2028d522f475Smrg XEvent * event GCC_UNUSED, 2029d522f475Smrg String * params, 2030d522f475Smrg Cardinal *param_count) 2031d522f475Smrg{ 2032d522f475Smrg handle_vt_toggle(do_keepSelection, term->screen.keepSelection, 2033d522f475Smrg params, *param_count, w); 2034d522f475Smrg} 2035d522f475Smrg 2036d522f475Smrgvoid 2037d522f475SmrgHandleSetSelect(Widget w, 2038d522f475Smrg XEvent * event GCC_UNUSED, 2039d522f475Smrg String * params, 2040d522f475Smrg Cardinal *param_count) 2041d522f475Smrg{ 2042d522f475Smrg handle_vt_toggle(do_selectClipboard, term->screen.selectToClipboard, 2043d522f475Smrg params, *param_count, w); 2044d522f475Smrg} 2045d522f475Smrg 2046d522f475Smrgvoid 2047d522f475SmrgHandleReverseVideo(Widget w, 2048d522f475Smrg XEvent * event GCC_UNUSED, 2049d522f475Smrg String * params, 2050d522f475Smrg Cardinal *param_count) 2051d522f475Smrg{ 2052d522f475Smrg handle_vt_toggle(do_reversevideo, (term->misc.re_verse0), 2053d522f475Smrg params, *param_count, w); 2054d522f475Smrg} 2055d522f475Smrg 2056d522f475Smrgvoid 2057d522f475SmrgHandleAutoWrap(Widget w, 2058d522f475Smrg XEvent * event GCC_UNUSED, 2059d522f475Smrg String * params, 2060d522f475Smrg Cardinal *param_count) 2061d522f475Smrg{ 2062d522f475Smrg handle_vt_toggle(do_autowrap, (term->flags & WRAPAROUND), 2063d522f475Smrg params, *param_count, w); 2064d522f475Smrg} 2065d522f475Smrg 2066d522f475Smrgvoid 2067d522f475SmrgHandleReverseWrap(Widget w, 2068d522f475Smrg XEvent * event GCC_UNUSED, 2069d522f475Smrg String * params, 2070d522f475Smrg Cardinal *param_count) 2071d522f475Smrg{ 2072d522f475Smrg handle_vt_toggle(do_reversewrap, (term->flags & REVERSEWRAP), 2073d522f475Smrg params, *param_count, w); 2074d522f475Smrg} 2075d522f475Smrg 2076d522f475Smrgvoid 2077d522f475SmrgHandleAutoLineFeed(Widget w, 2078d522f475Smrg XEvent * event GCC_UNUSED, 2079d522f475Smrg String * params, 2080d522f475Smrg Cardinal *param_count) 2081d522f475Smrg{ 2082d522f475Smrg handle_vt_toggle(do_autolinefeed, (term->flags & LINEFEED), 2083d522f475Smrg params, *param_count, w); 2084d522f475Smrg} 2085d522f475Smrg 2086d522f475Smrgvoid 2087d522f475SmrgHandleAppCursor(Widget w, 2088d522f475Smrg XEvent * event GCC_UNUSED, 2089d522f475Smrg String * params, 2090d522f475Smrg Cardinal *param_count) 2091d522f475Smrg{ 2092d522f475Smrg handle_vt_toggle(do_appcursor, (term->keyboard.flags & MODE_DECCKM), 2093d522f475Smrg params, *param_count, w); 2094d522f475Smrg} 2095d522f475Smrg 2096d522f475Smrgvoid 2097d522f475SmrgHandleAppKeypad(Widget w, 2098d522f475Smrg XEvent * event GCC_UNUSED, 2099d522f475Smrg String * params, 2100d522f475Smrg Cardinal *param_count) 2101d522f475Smrg{ 2102d522f475Smrg handle_vt_toggle(do_appkeypad, (term->keyboard.flags & MODE_DECKPAM), 2103d522f475Smrg params, *param_count, w); 2104d522f475Smrg} 2105d522f475Smrg 2106d522f475Smrgvoid 2107d522f475SmrgHandleScrollKey(Widget w, 2108d522f475Smrg XEvent * event GCC_UNUSED, 2109d522f475Smrg String * params, 2110d522f475Smrg Cardinal *param_count) 2111d522f475Smrg{ 2112d522f475Smrg handle_vt_toggle(do_scrollkey, term->screen.scrollkey, 2113d522f475Smrg params, *param_count, w); 2114d522f475Smrg} 2115d522f475Smrg 2116d522f475Smrgvoid 2117d522f475SmrgHandleScrollTtyOutput(Widget w, 2118d522f475Smrg XEvent * event GCC_UNUSED, 2119d522f475Smrg String * params, 2120d522f475Smrg Cardinal *param_count) 2121d522f475Smrg{ 2122d522f475Smrg handle_vt_toggle(do_scrollttyoutput, term->screen.scrollttyoutput, 2123d522f475Smrg params, *param_count, w); 2124d522f475Smrg} 2125d522f475Smrg 2126d522f475Smrgvoid 2127d522f475SmrgHandleAllow132(Widget w, 2128d522f475Smrg XEvent * event GCC_UNUSED, 2129d522f475Smrg String * params, 2130d522f475Smrg Cardinal *param_count) 2131d522f475Smrg{ 2132d522f475Smrg handle_vt_toggle(do_allow132, term->screen.c132, 2133d522f475Smrg params, *param_count, w); 2134d522f475Smrg} 2135d522f475Smrg 2136d522f475Smrgvoid 2137d522f475SmrgHandleCursesEmul(Widget w, 2138d522f475Smrg XEvent * event GCC_UNUSED, 2139d522f475Smrg String * params, 2140d522f475Smrg Cardinal *param_count) 2141d522f475Smrg{ 2142d522f475Smrg handle_vt_toggle(do_cursesemul, term->screen.curses, 2143d522f475Smrg params, *param_count, w); 2144d522f475Smrg} 2145d522f475Smrg 2146d522f475Smrgvoid 2147d522f475SmrgHandleBellIsUrgent(Widget w, 2148d522f475Smrg XEvent * event GCC_UNUSED, 2149d522f475Smrg String * params, 2150d522f475Smrg Cardinal *param_count) 2151d522f475Smrg{ 2152d522f475Smrg handle_vt_toggle(do_bellIsUrgent, term->screen.bellIsUrgent, 2153d522f475Smrg params, *param_count, w); 2154d522f475Smrg} 2155d522f475Smrg 2156d522f475Smrgvoid 2157d522f475SmrgHandleMarginBell(Widget w, 2158d522f475Smrg XEvent * event GCC_UNUSED, 2159d522f475Smrg String * params, 2160d522f475Smrg Cardinal *param_count) 2161d522f475Smrg{ 2162d522f475Smrg handle_vt_toggle(do_marginbell, term->screen.marginbell, 2163d522f475Smrg params, *param_count, w); 2164d522f475Smrg} 2165d522f475Smrg 2166d522f475Smrg#if OPT_BLINK_CURS 2167d522f475Smrgvoid 2168d522f475SmrgHandleCursorBlink(Widget w, 2169d522f475Smrg XEvent * event GCC_UNUSED, 2170d522f475Smrg String * params, 2171d522f475Smrg Cardinal *param_count) 2172d522f475Smrg{ 2173d522f475Smrg /* eventually want to see if sensitive or not */ 2174d522f475Smrg handle_vt_toggle(do_cursorblink, term->screen.cursor_blink, 2175d522f475Smrg params, *param_count, w); 2176d522f475Smrg} 2177d522f475Smrg#endif 2178d522f475Smrg 2179d522f475Smrgvoid 2180d522f475SmrgHandleAltScreen(Widget w, 2181d522f475Smrg XEvent * event GCC_UNUSED, 2182d522f475Smrg String * params, 2183d522f475Smrg Cardinal *param_count) 2184d522f475Smrg{ 2185d522f475Smrg /* eventually want to see if sensitive or not */ 2186956cc18dSsnj handle_vt_toggle(do_altscreen, term->screen.whichBuf, 2187d522f475Smrg params, *param_count, w); 2188d522f475Smrg} 2189d522f475Smrg 2190d522f475Smrgvoid 2191d522f475SmrgHandleTiteInhibit(Widget w, 2192d522f475Smrg XEvent * event GCC_UNUSED, 2193d522f475Smrg String * params, 2194d522f475Smrg Cardinal *param_count) 2195d522f475Smrg{ 2196d522f475Smrg /* eventually want to see if sensitive or not */ 2197d522f475Smrg handle_vt_toggle(do_titeInhibit, !(term->misc.titeInhibit), 2198d522f475Smrg params, *param_count, w); 2199d522f475Smrg} 2200d522f475Smrg 2201d522f475Smrg/* ARGSUSED */ 2202d522f475Smrgvoid 2203d522f475SmrgHandleSoftReset(Widget w, 2204d522f475Smrg XEvent * event GCC_UNUSED, 2205d522f475Smrg String * params GCC_UNUSED, 2206d522f475Smrg Cardinal *param_count GCC_UNUSED) 2207d522f475Smrg{ 2208d522f475Smrg do_softreset(w, (XtPointer) 0, (XtPointer) 0); 2209d522f475Smrg} 2210d522f475Smrg 2211d522f475Smrg/* ARGSUSED */ 2212d522f475Smrgvoid 2213d522f475SmrgHandleHardReset(Widget w, 2214d522f475Smrg XEvent * event GCC_UNUSED, 2215d522f475Smrg String * params GCC_UNUSED, 2216d522f475Smrg Cardinal *param_count GCC_UNUSED) 2217d522f475Smrg{ 2218d522f475Smrg do_hardreset(w, (XtPointer) 0, (XtPointer) 0); 2219d522f475Smrg} 2220d522f475Smrg 2221d522f475Smrg/* ARGSUSED */ 2222d522f475Smrgvoid 2223d522f475SmrgHandleClearSavedLines(Widget w, 2224d522f475Smrg XEvent * event GCC_UNUSED, 2225d522f475Smrg String * params GCC_UNUSED, 2226d522f475Smrg Cardinal *param_count GCC_UNUSED) 2227d522f475Smrg{ 2228d522f475Smrg do_clearsavedlines(w, (XtPointer) 0, (XtPointer) 0); 2229d522f475Smrg} 2230d522f475Smrg 2231d522f475Smrg#if OPT_DEC_CHRSET 2232d522f475Smrgvoid 2233d522f475SmrgHandleFontDoublesize(Widget w, 2234d522f475Smrg XEvent * event GCC_UNUSED, 2235d522f475Smrg String * params, 2236d522f475Smrg Cardinal *param_count) 2237d522f475Smrg{ 2238d522f475Smrg handle_vt_toggle(do_font_doublesize, term->screen.font_doublesize, 2239d522f475Smrg params, *param_count, w); 2240d522f475Smrg} 2241d522f475Smrg#endif 2242d522f475Smrg 2243d522f475Smrg#if OPT_BOX_CHARS 2244d522f475Smrgvoid 2245d522f475SmrgHandleFontBoxChars(Widget w, 2246d522f475Smrg XEvent * event GCC_UNUSED, 2247d522f475Smrg String * params, 2248d522f475Smrg Cardinal *param_count) 2249d522f475Smrg{ 2250d522f475Smrg handle_vt_toggle(do_font_boxchars, term->screen.force_box_chars, 2251d522f475Smrg params, *param_count, w); 2252d522f475Smrg} 2253d522f475Smrg#endif 2254d522f475Smrg 2255d522f475Smrg#if OPT_DEC_SOFTFONT 2256d522f475Smrgvoid 2257d522f475SmrgHandleFontLoading(Widget w, 2258d522f475Smrg XEvent * event GCC_UNUSED, 2259d522f475Smrg String * params, 2260d522f475Smrg Cardinal *param_count) 2261d522f475Smrg{ 2262d522f475Smrg handle_vt_toggle(do_font_loadable, term->misc.font_loadable, 2263d522f475Smrg params, *param_count, w); 2264d522f475Smrg} 2265d522f475Smrg#endif 2266d522f475Smrg 2267d522f475Smrg#if OPT_RENDERFONT 2268d522f475Smrgvoid 2269d522f475SmrgHandleRenderFont(Widget w, 2270d522f475Smrg XEvent * event GCC_UNUSED, 2271d522f475Smrg String * params, 2272d522f475Smrg Cardinal *param_count) 2273d522f475Smrg{ 2274d522f475Smrg handle_vt_toggle(do_font_renderfont, term->misc.render_font, 2275d522f475Smrg params, *param_count, w); 2276d522f475Smrg} 2277d522f475Smrg#endif 2278d522f475Smrg 2279d522f475Smrg#if OPT_WIDE_CHARS 2280d522f475Smrgvoid 2281d522f475SmrgHandleUTF8Mode(Widget w, 2282d522f475Smrg XEvent * event GCC_UNUSED, 2283d522f475Smrg String * params, 2284d522f475Smrg Cardinal *param_count) 2285d522f475Smrg{ 2286d522f475Smrg handle_vt_toggle(do_font_utf8_mode, term->screen.utf8_mode, 2287d522f475Smrg params, *param_count, w); 2288d522f475Smrg} 2289d522f475Smrg 2290d522f475Smrgvoid 2291d522f475SmrgHandleUTF8Title(Widget w, 2292d522f475Smrg XEvent * event GCC_UNUSED, 2293d522f475Smrg String * params, 2294d522f475Smrg Cardinal *param_count) 2295d522f475Smrg{ 2296d522f475Smrg handle_vt_toggle(do_font_utf8_title, term->screen.utf8_title, 2297d522f475Smrg params, *param_count, w); 2298d522f475Smrg} 2299d522f475Smrg#endif 2300d522f475Smrg 2301d522f475Smrg#if OPT_TEK4014 2302d522f475Smrgvoid 2303d522f475SmrgHandleSetTerminalType(Widget w, 2304d522f475Smrg XEvent * event GCC_UNUSED, 2305d522f475Smrg String * params, 2306d522f475Smrg Cardinal *param_count) 2307d522f475Smrg{ 2308d522f475Smrg if (*param_count == 1) { 2309d522f475Smrg switch (params[0][0]) { 2310d522f475Smrg case 'v': 2311d522f475Smrg case 'V': 2312d522f475Smrg if (TEK4014_ACTIVE(term)) 2313d522f475Smrg do_vtmode(w, (XtPointer) 0, (XtPointer) 0); 2314d522f475Smrg break; 2315d522f475Smrg case 't': 2316d522f475Smrg case 'T': 2317d522f475Smrg if (!TEK4014_ACTIVE(term)) 2318d522f475Smrg do_tekmode(w, (XtPointer) 0, (XtPointer) 0); 2319d522f475Smrg break; 2320d522f475Smrg default: 2321d522f475Smrg Bell(XkbBI_MinorError, 0); 2322d522f475Smrg } 2323d522f475Smrg } else { 2324d522f475Smrg Bell(XkbBI_MinorError, 0); 2325d522f475Smrg } 2326d522f475Smrg} 2327d522f475Smrg 2328d522f475Smrgvoid 2329d522f475SmrgHandleVisibility(Widget w, 2330d522f475Smrg XEvent * event GCC_UNUSED, 2331d522f475Smrg String * params, 2332d522f475Smrg Cardinal *param_count) 2333d522f475Smrg{ 2334d522f475Smrg if (*param_count == 2) { 2335d522f475Smrg switch (params[0][0]) { 2336d522f475Smrg case 'v': 2337d522f475Smrg case 'V': 2338d522f475Smrg handle_tek_toggle(do_vtonoff, (int) term->screen.Vshow, 2339d522f475Smrg params + 1, (*param_count) - 1, w); 2340d522f475Smrg break; 2341d522f475Smrg case 't': 2342d522f475Smrg case 'T': 2343d522f475Smrg handle_tek_toggle(do_tekonoff, (int) TEK4014_SHOWN(term), 2344d522f475Smrg params + 1, (*param_count) - 1, w); 2345d522f475Smrg break; 2346d522f475Smrg default: 2347d522f475Smrg Bell(XkbBI_MinorError, 0); 2348d522f475Smrg } 2349d522f475Smrg } else { 2350d522f475Smrg Bell(XkbBI_MinorError, 0); 2351d522f475Smrg } 2352d522f475Smrg} 2353d522f475Smrg 2354d522f475Smrg/* ARGSUSED */ 2355d522f475Smrgvoid 2356d522f475SmrgHandleSetTekText(Widget w, 2357d522f475Smrg XEvent * event GCC_UNUSED, 2358d522f475Smrg String * params, 2359d522f475Smrg Cardinal *param_count) 2360d522f475Smrg{ 2361d522f475Smrg void (*proc) PROTO_XT_CALLBACK_ARGS = 0; 2362d522f475Smrg 2363d522f475Smrg switch (*param_count) { 2364d522f475Smrg case 0: 2365d522f475Smrg proc = do_tektextlarge; 2366d522f475Smrg break; 2367d522f475Smrg case 1: 2368d522f475Smrg switch (TekGetFontSize(params[0])) { 2369d522f475Smrg case TEK_FONT_LARGE: 2370d522f475Smrg proc = do_tektextlarge; 2371d522f475Smrg break; 2372d522f475Smrg case TEK_FONT_2: 2373d522f475Smrg proc = do_tektext2; 2374d522f475Smrg break; 2375d522f475Smrg case TEK_FONT_3: 2376d522f475Smrg proc = do_tektext3; 2377d522f475Smrg break; 2378d522f475Smrg case TEK_FONT_SMALL: 2379d522f475Smrg proc = do_tektextsmall; 2380d522f475Smrg break; 2381d522f475Smrg } 2382d522f475Smrg break; 2383d522f475Smrg } 2384d522f475Smrg if (proc) 2385d522f475Smrg (*proc) (w, (XtPointer) 0, (XtPointer) 0); 2386d522f475Smrg else 2387d522f475Smrg Bell(XkbBI_MinorError, 0); 2388d522f475Smrg} 2389d522f475Smrg 2390d522f475Smrg/* ARGSUSED */ 2391d522f475Smrgvoid 2392d522f475SmrgHandleTekPage(Widget w, 2393d522f475Smrg XEvent * event GCC_UNUSED, 2394d522f475Smrg String * params GCC_UNUSED, 2395d522f475Smrg Cardinal *param_count GCC_UNUSED) 2396d522f475Smrg{ 2397d522f475Smrg do_tekpage(w, (XtPointer) 0, (XtPointer) 0); 2398d522f475Smrg} 2399d522f475Smrg 2400d522f475Smrg/* ARGSUSED */ 2401d522f475Smrgvoid 2402d522f475SmrgHandleTekReset(Widget w, 2403d522f475Smrg XEvent * event GCC_UNUSED, 2404d522f475Smrg String * params GCC_UNUSED, 2405d522f475Smrg Cardinal *param_count GCC_UNUSED) 2406d522f475Smrg{ 2407d522f475Smrg do_tekreset(w, (XtPointer) 0, (XtPointer) 0); 2408d522f475Smrg} 2409d522f475Smrg 2410d522f475Smrg/* ARGSUSED */ 2411d522f475Smrgvoid 2412d522f475SmrgHandleTekCopy(Widget w, 2413d522f475Smrg XEvent * event GCC_UNUSED, 2414d522f475Smrg String * params GCC_UNUSED, 2415d522f475Smrg Cardinal *param_count GCC_UNUSED) 2416d522f475Smrg{ 2417d522f475Smrg do_tekcopy(w, (XtPointer) 0, (XtPointer) 0); 2418d522f475Smrg} 2419d522f475Smrg#endif /* OPT_TEK4014 */ 2420d522f475Smrg 2421d522f475Smrgstatic void 2422d522f475SmrgUpdateMenuItem( 2423d522f475Smrg#if OPT_TRACE 2424d522f475Smrg const char *func, 2425d522f475Smrg#endif 2426d522f475Smrg MenuEntry * menu, 2427d522f475Smrg int which, 2428956cc18dSsnj Bool val) 2429d522f475Smrg{ 2430d522f475Smrg static Arg menuArgs = 2431d522f475Smrg {XtNleftBitmap, (XtArgVal) 0}; 2432d522f475Smrg Widget mi = menu[which].widget; 2433d522f475Smrg 2434d522f475Smrg if (mi) { 2435d522f475Smrg menuArgs.value = (XtArgVal) ((val) 2436d522f475Smrg ? term->screen.menu_item_bitmap 2437d522f475Smrg : None); 2438d522f475Smrg XtSetValues(mi, &menuArgs, (Cardinal) 1); 2439d522f475Smrg } 2440d522f475Smrg TRACE(("%s(%d): %s\n", func, which, BtoS(val))); 2441d522f475Smrg} 2442d522f475Smrg 2443d522f475Smrg#if OPT_TRACE 2444d522f475Smrg#define UpdateCheckbox(func, mn, mi, val) UpdateMenuItem(func, mn, mi, val) 2445d522f475Smrg#else 2446d522f475Smrg#define UpdateCheckbox(func, mn, mi, val) UpdateMenuItem(mn, mi, val) 2447d522f475Smrg#endif 2448d522f475Smrg 2449d522f475Smrgvoid 2450956cc18dSsnjSetItemSensitivity(Widget mi, Bool val) 2451d522f475Smrg{ 2452d522f475Smrg static Arg menuArgs = 2453d522f475Smrg {XtNsensitive, (XtArgVal) 0}; 2454d522f475Smrg 2455d522f475Smrg if (mi) { 2456d522f475Smrg menuArgs.value = (XtArgVal) (val); 2457d522f475Smrg XtSetValues(mi, &menuArgs, (Cardinal) 1); 2458d522f475Smrg } 2459d522f475Smrg} 2460d522f475Smrg 2461d522f475Smrg#if OPT_TOOLBAR 2462d522f475Smrg/* 2463d522f475Smrg * The normal style of xterm popup menu delays initialization until the menu is 2464d522f475Smrg * first requested. When using a toolbar, we can use the same initialization, 2465d522f475Smrg * though on the first popup there will be a little geometry layout jitter, 2466d522f475Smrg * since the menu is already managed when this callback is invoked. 2467d522f475Smrg */ 2468d522f475Smrgstatic void 2469d522f475SmrgInitPopup(Widget gw, 2470d522f475Smrg XtPointer closure, 2471d522f475Smrg XtPointer data GCC_UNUSED) 2472d522f475Smrg{ 2473d522f475Smrg String params[2]; 2474d522f475Smrg Cardinal count = 1; 2475d522f475Smrg 2476d522f475Smrg params[0] = (char *) closure; 2477d522f475Smrg params[1] = 0; 2478d522f475Smrg TRACE(("InitPopup(%s)\n", params[0])); 2479d522f475Smrg 2480d522f475Smrg domenu(gw, (XEvent *) 0, params, &count); 2481d522f475Smrg 2482d522f475Smrg if (gw) 2483d522f475Smrg XtRemoveCallback(gw, XtNpopupCallback, InitPopup, closure); 2484d522f475Smrg} 2485d522f475Smrg 2486d522f475Smrgstatic Dimension 2487d522f475SmrgSetupShell(Widget *menus, MenuList * shell, int n, int m) 2488d522f475Smrg{ 2489d522f475Smrg char temp[80]; 2490d522f475Smrg char *external_name = 0; 2491d522f475Smrg Dimension button_height; 2492d522f475Smrg Dimension button_border; 2493d522f475Smrg String saveLocale = setMenuLocale(True, resource.menuLocale); 2494d522f475Smrg 2495d522f475Smrg shell[n].w = XtVaCreatePopupShell(menu_names[n].internal_name, 2496d522f475Smrg simpleMenuWidgetClass, 2497d522f475Smrg *menus, 2498d522f475Smrg XtNgeometry, NULL, 2499d522f475Smrg (XtPointer) 0); 2500d522f475Smrg 2501d522f475Smrg XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name); 2502d522f475Smrg XtVaGetValues(shell[n].w, 2503d522f475Smrg XtNlabel, &external_name, 2504d522f475Smrg (XtPointer) 0); 2505d522f475Smrg 2506d522f475Smrg TRACE(("...SetupShell(%s) -> %s -> %#lx\n", 2507d522f475Smrg menu_names[n].internal_name, 2508d522f475Smrg external_name, 2509d522f475Smrg (long) shell[n].w)); 2510d522f475Smrg 2511d522f475Smrg sprintf(temp, "%sButton", menu_names[n].internal_name); 2512d522f475Smrg shell[n].b = XtVaCreateManagedWidget(temp, 2513d522f475Smrg menuButtonWidgetClass, 2514d522f475Smrg *menus, 2515d522f475Smrg XtNfromHoriz, ((m >= 0) 2516d522f475Smrg ? shell[m].b 2517d522f475Smrg : 0), 2518d522f475Smrg XtNmenuName, menu_names[n].internal_name, 2519d522f475Smrg XtNlabel, external_name, 2520d522f475Smrg (XtPointer) 0); 2521d522f475Smrg XtVaGetValues(shell[n].b, 2522d522f475Smrg XtNheight, &button_height, 2523d522f475Smrg XtNborderWidth, &button_border, 2524d522f475Smrg (XtPointer) 0); 2525d522f475Smrg 2526956cc18dSsnj (void) setMenuLocale(False, saveLocale); 2527956cc18dSsnj return (Dimension) (button_height + (button_border * 2)); 2528d522f475Smrg} 2529d522f475Smrg#endif /* OPT_TOOLBAR */ 2530d522f475Smrg 2531d522f475Smrgvoid 2532d522f475SmrgSetupMenus(Widget shell, Widget *forms, Widget *menus, Dimension * menu_high) 2533d522f475Smrg{ 2534d522f475Smrg#if OPT_TOOLBAR 2535d522f475Smrg Dimension button_height = 0; 2536d522f475Smrg Dimension toolbar_hSpace; 2537d522f475Smrg Arg args[10]; 2538d522f475Smrg#endif 2539d522f475Smrg 2540d522f475Smrg TRACE(("SetupMenus(%s)\n", shell == toplevel ? "vt100" : "tek4014")); 2541d522f475Smrg 2542d522f475Smrg *menu_high = 0; 2543d522f475Smrg 2544d522f475Smrg if (shell == toplevel) { 2545d522f475Smrg XawSimpleMenuAddGlobalActions(app_con); 2546d522f475Smrg XtRegisterGrabAction(HandlePopupMenu, True, 2547d522f475Smrg (ButtonPressMask | ButtonReleaseMask), 2548d522f475Smrg GrabModeAsync, GrabModeAsync); 2549d522f475Smrg } 2550d522f475Smrg#if OPT_TOOLBAR 2551d522f475Smrg *forms = XtVaCreateManagedWidget("form", 2552d522f475Smrg formWidgetClass, shell, 2553d522f475Smrg (XtPointer) 0); 2554d522f475Smrg xtermAddInput(*forms); 2555d522f475Smrg 2556d522f475Smrg /* 2557d522f475Smrg * Set a nominal value for the preferred pane size, which lets the 2558d522f475Smrg * buttons determine the actual height of the menu bar. We don't show 2559d522f475Smrg * the grip, because it's too easy to make the toolbar look bad that 2560d522f475Smrg * way. 2561d522f475Smrg */ 2562d522f475Smrg XtSetArg(args[0], XtNorientation, XtorientHorizontal); 2563d522f475Smrg XtSetArg(args[1], XtNtop, XawChainTop); 2564d522f475Smrg XtSetArg(args[2], XtNbottom, XawChainTop); 2565d522f475Smrg XtSetArg(args[3], XtNleft, XawChainLeft); 2566d522f475Smrg XtSetArg(args[4], XtNright, XawChainLeft); 2567d522f475Smrg 2568d522f475Smrg if (resource.toolBar) { 2569d522f475Smrg *menus = XtCreateManagedWidget("menubar", boxWidgetClass, *forms, 2570d522f475Smrg args, 5); 2571d522f475Smrg } else { 2572d522f475Smrg *menus = XtCreateWidget("menubar", boxWidgetClass, *forms, args, 5); 2573d522f475Smrg } 2574d522f475Smrg 2575d522f475Smrg /* 2576d522f475Smrg * The toolbar widget's height is not necessarily known yet. If the 2577d522f475Smrg * toolbar is not created as a managed widget, we can still make a good 2578d522f475Smrg * guess about its height by collecting the widget's other resource values. 2579d522f475Smrg */ 2580d522f475Smrg XtVaGetValues(*menus, 2581d522f475Smrg XtNhSpace, &toolbar_hSpace, 2582d522f475Smrg (XtPointer) 0); 2583d522f475Smrg 2584d522f475Smrg if (shell == toplevel) { /* vt100 */ 2585d522f475Smrg int j; 2586d522f475Smrg for (j = mainMenu; j <= fontMenu; j++) { 2587d522f475Smrg button_height = SetupShell(menus, vt_shell, j, j - 1); 2588d522f475Smrg } 2589d522f475Smrg } 2590d522f475Smrg#if OPT_TEK4014 2591d522f475Smrg else { /* tek4014 */ 2592d522f475Smrg button_height = SetupShell(menus, tek_shell, mainMenu, -1); 2593d522f475Smrg button_height = SetupShell(menus, tek_shell, tekMenu, mainMenu); 2594d522f475Smrg } 2595d522f475Smrg#endif 2596d522f475Smrg 2597d522f475Smrg /* 2598d522f475Smrg * Tell the main program how high the toolbar is, to help with the initial 2599d522f475Smrg * layout. 2600d522f475Smrg */ 2601956cc18dSsnj *menu_high = (Dimension) (button_height + 2 * (toolbar_hSpace)); 26022eaa94a1Schristos TRACE(("...menuHeight:%d = (%d + 2 * %d)\n", 26032eaa94a1Schristos *menu_high, button_height, toolbar_hSpace)); 2604d522f475Smrg 2605d522f475Smrg#else /* !OPT_TOOLBAR */ 2606d522f475Smrg *forms = shell; 2607d522f475Smrg *menus = shell; 2608d522f475Smrg#endif 2609d522f475Smrg 2610d522f475Smrg TRACE(("...shell=%#lx\n", (long) shell)); 2611d522f475Smrg TRACE(("...forms=%#lx\n", (long) *forms)); 2612d522f475Smrg TRACE(("...menus=%#lx\n", (long) *menus)); 2613d522f475Smrg} 2614d522f475Smrg 2615d522f475Smrgvoid 2616d522f475SmrgrepairSizeHints(void) 2617d522f475Smrg{ 2618d522f475Smrg TScreen *screen = TScreenOf(term); 2619d522f475Smrg 2620d522f475Smrg if (XtIsRealized((Widget) term)) { 2621d522f475Smrg getXtermSizeHints(term); 2622d522f475Smrg xtermSizeHints(term, ScrollbarWidth(screen)); 2623d522f475Smrg 2624d522f475Smrg XSetWMNormalHints(screen->display, XtWindow(SHELL_OF(term)), &term->hints); 2625d522f475Smrg } 2626d522f475Smrg} 2627d522f475Smrg 2628d522f475Smrg#if OPT_TOOLBAR 2629d522f475Smrg#define INIT_POPUP(s, n) InitPopup(s[n].w, menu_names[n].internal_name, 0) 2630d522f475Smrg 2631d522f475Smrgstatic Bool 2632d522f475SmrgInitWidgetMenu(Widget shell) 2633d522f475Smrg{ 2634d522f475Smrg Bool result = False; 2635d522f475Smrg 2636d522f475Smrg TRACE(("InitWidgetMenu(%p)\n", shell)); 2637d522f475Smrg if (term != 0) { 2638d522f475Smrg if (shell == toplevel) { /* vt100 */ 2639d522f475Smrg if (!term->init_menu) { 2640d522f475Smrg INIT_POPUP(vt_shell, mainMenu); 2641d522f475Smrg INIT_POPUP(vt_shell, vtMenu); 2642d522f475Smrg INIT_POPUP(vt_shell, fontMenu); 2643d522f475Smrg term->init_menu = True; 2644d522f475Smrg TRACE(("...InitWidgetMenu(vt)\n")); 2645d522f475Smrg } 2646d522f475Smrg result = term->init_menu; 2647d522f475Smrg } 2648d522f475Smrg#if OPT_TEK4014 2649d522f475Smrg else if (tekWidget) { /* tek4014 */ 2650d522f475Smrg if (!tekWidget->init_menu) { 2651d522f475Smrg INIT_POPUP(tek_shell, mainMenu); 2652d522f475Smrg INIT_POPUP(tek_shell, tekMenu); 2653d522f475Smrg tekWidget->init_menu = True; 2654d522f475Smrg TRACE(("...InitWidgetMenu(tek)\n")); 2655d522f475Smrg } 2656d522f475Smrg result = tekWidget->init_menu; 2657d522f475Smrg } 2658d522f475Smrg#endif 2659d522f475Smrg } 2660d522f475Smrg TRACE(("...InitWidgetMenu ->%d\n", result)); 2661d522f475Smrg return result; 2662d522f475Smrg} 2663d522f475Smrg 2664d522f475Smrgstatic TbInfo * 2665d522f475Smrgtoolbar_info(Widget w) 2666d522f475Smrg{ 2667d522f475Smrg TRACE(("...getting toolbar_info\n")); 2668d522f475Smrg#if OPT_TEK4014 2669d522f475Smrg if (w != (Widget) term) 2670d522f475Smrg return &(tekWidget->tek.tb_info); 2671d522f475Smrg#else 2672d522f475Smrg (void) w; 2673d522f475Smrg#endif 2674d522f475Smrg return &(WhichVWin(&(term->screen))->tb_info); 2675d522f475Smrg} 2676d522f475Smrg 2677d522f475Smrgstatic void 2678d522f475Smrghide_toolbar(Widget w) 2679d522f475Smrg{ 2680d522f475Smrg if (w != 0) { 2681d522f475Smrg TbInfo *info = toolbar_info(w); 2682d522f475Smrg 2683d522f475Smrg TRACE(("hiding toolbar\n")); 2684d522f475Smrg XtVaSetValues(w, 2685d522f475Smrg XtNfromVert, (Widget) 0, 2686d522f475Smrg (XtPointer) 0); 2687d522f475Smrg 2688d522f475Smrg if (info->menu_bar != 0) { 2689d522f475Smrg repairSizeHints(); 2690d522f475Smrg XtUnmanageChild(info->menu_bar); 2691d522f475Smrg if (XtIsRealized(info->menu_bar)) { 2692d522f475Smrg XtUnmapWidget(info->menu_bar); 2693d522f475Smrg } 2694d522f475Smrg } 2695d522f475Smrg TRACE(("...hiding toolbar (done)\n")); 2696d522f475Smrg } 2697d522f475Smrg} 2698d522f475Smrg 2699d522f475Smrgstatic void 2700d522f475Smrgshow_toolbar(Widget w) 2701d522f475Smrg{ 2702d522f475Smrg if (w != 0) { 2703d522f475Smrg TbInfo *info = toolbar_info(w); 2704d522f475Smrg 2705d522f475Smrg TRACE(("showing toolbar\n")); 2706d522f475Smrg if (info->menu_bar != 0) { 2707d522f475Smrg XtVaSetValues(w, 2708d522f475Smrg XtNfromVert, info->menu_bar, 2709d522f475Smrg (XtPointer) 0); 2710d522f475Smrg if (XtIsRealized(info->menu_bar)) 2711d522f475Smrg repairSizeHints(); 2712d522f475Smrg XtManageChild(info->menu_bar); 2713d522f475Smrg if (XtIsRealized(info->menu_bar)) { 2714d522f475Smrg XtMapWidget(info->menu_bar); 2715d522f475Smrg } 2716d522f475Smrg } 2717d522f475Smrg /* 2718d522f475Smrg * This is needed to make the terminal widget move down below the 2719d522f475Smrg * toolbar. 2720d522f475Smrg */ 2721d522f475Smrg XawFormDoLayout(XtParent(w), True); 2722d522f475Smrg TRACE(("...showing toolbar (done)\n")); 2723d522f475Smrg } 2724d522f475Smrg} 2725d522f475Smrg 2726d522f475Smrg/* 2727d522f475Smrg * Make the toolbar visible or invisible in the current window(s). 2728d522f475Smrg */ 2729d522f475Smrgvoid 2730d522f475SmrgShowToolbar(Bool enable) 2731d522f475Smrg{ 2732d522f475Smrg TRACE(("ShowToolbar(%d)\n", enable)); 2733d522f475Smrg 2734d522f475Smrg if (IsIcon(&(term->screen))) { 2735d522f475Smrg Bell(XkbBI_MinorError, 0); 2736d522f475Smrg } else { 2737d522f475Smrg if (enable) { 2738d522f475Smrg if (InitWidgetMenu(toplevel)) 2739d522f475Smrg show_toolbar((Widget) term); 2740d522f475Smrg#if OPT_TEK4014 2741d522f475Smrg if (InitWidgetMenu(tekshellwidget)) 2742d522f475Smrg show_toolbar((Widget) tekWidget); 2743d522f475Smrg#endif 2744d522f475Smrg } else { 2745d522f475Smrg hide_toolbar((Widget) term); 2746d522f475Smrg#if OPT_TEK4014 2747d522f475Smrg hide_toolbar((Widget) tekWidget); 2748d522f475Smrg#endif 2749d522f475Smrg } 2750956cc18dSsnj resource.toolBar = (Boolean) enable; 2751d522f475Smrg update_toolbar(); 2752d522f475Smrg } 2753d522f475Smrg} 2754d522f475Smrg 2755d522f475Smrgvoid 2756d522f475SmrgHandleToolbar(Widget w, 2757d522f475Smrg XEvent * event GCC_UNUSED, 2758d522f475Smrg String * params GCC_UNUSED, 2759d522f475Smrg Cardinal *param_count GCC_UNUSED) 2760d522f475Smrg{ 2761d522f475Smrg if (IsIcon(&(term->screen))) { 2762d522f475Smrg Bell(XkbBI_MinorError, 0); 2763d522f475Smrg } else { 2764d522f475Smrg handle_vt_toggle(do_toolbar, resource.toolBar, 2765d522f475Smrg params, *param_count, w); 2766d522f475Smrg } 2767d522f475Smrg} 2768d522f475Smrg 2769d522f475Smrg/* ARGSUSED */ 2770d522f475Smrgstatic void 2771d522f475Smrgdo_toolbar(Widget gw GCC_UNUSED, 2772d522f475Smrg XtPointer closure GCC_UNUSED, 2773d522f475Smrg XtPointer data GCC_UNUSED) 2774d522f475Smrg{ 2775d522f475Smrg /* 2776d522f475Smrg * Toggle toolbars for both vt100 and tek windows, since they share the 2777d522f475Smrg * menu which contains the checkbox indicating whether the toolbar is 2778d522f475Smrg * active. 2779d522f475Smrg */ 2780d522f475Smrg if (IsIcon(&(term->screen))) { 2781d522f475Smrg Bell(XkbBI_MinorError, 0); 2782d522f475Smrg } else { 2783956cc18dSsnj ShowToolbar(ToggleFlag(resource.toolBar)); 2784d522f475Smrg } 2785d522f475Smrg} 2786d522f475Smrg 2787d522f475Smrgvoid 2788d522f475Smrgupdate_toolbar(void) 2789d522f475Smrg{ 2790d522f475Smrg UpdateCheckbox("update_toolbar", 2791d522f475Smrg mainMenuEntries, 2792d522f475Smrg mainMenu_toolbar, 2793d522f475Smrg resource.toolBar); 2794d522f475Smrg} 2795d522f475Smrg#endif /* OPT_TOOLBAR */ 2796d522f475Smrg 2797d522f475Smrgvoid 2798d522f475Smrgupdate_securekbd(void) 2799d522f475Smrg{ 2800d522f475Smrg UpdateCheckbox("update_securekbd", 2801d522f475Smrg mainMenuEntries, 2802d522f475Smrg mainMenu_securekbd, 2803d522f475Smrg term->screen.grabbedKbd); 2804d522f475Smrg} 2805d522f475Smrg 2806d522f475Smrgvoid 2807d522f475Smrgupdate_allowsends(void) 2808d522f475Smrg{ 2809d522f475Smrg UpdateCheckbox("update_allowsends", 2810d522f475Smrg mainMenuEntries, 2811d522f475Smrg mainMenu_allowsends, 2812d522f475Smrg term->screen.allowSendEvents); 2813d522f475Smrg} 2814d522f475Smrg 2815d522f475Smrg#ifdef ALLOWLOGGING 2816d522f475Smrgvoid 2817d522f475Smrgupdate_logging(void) 2818d522f475Smrg{ 2819d522f475Smrg UpdateCheckbox("update_logging", 2820d522f475Smrg mainMenuEntries, 2821d522f475Smrg mainMenu_logging, 2822d522f475Smrg term->screen.logging); 2823d522f475Smrg} 2824d522f475Smrg#endif 2825d522f475Smrg 2826d522f475Smrgvoid 2827d522f475Smrgupdate_print_redir(void) 2828d522f475Smrg{ 2829d522f475Smrg UpdateCheckbox("update_print_redir", 2830d522f475Smrg mainMenuEntries, 2831d522f475Smrg mainMenu_print_redir, 2832d522f475Smrg term->screen.printer_controlmode); 2833d522f475Smrg} 2834d522f475Smrg 2835d522f475Smrgvoid 2836d522f475Smrgupdate_8bit_control(void) 2837d522f475Smrg{ 2838d522f475Smrg UpdateCheckbox("update_8bit_control", 2839d522f475Smrg mainMenuEntries, 2840d522f475Smrg mainMenu_8bit_ctrl, 2841d522f475Smrg term->screen.control_eight_bits); 2842d522f475Smrg} 2843d522f475Smrg 2844d522f475Smrgvoid 2845d522f475Smrgupdate_decbkm(void) 2846d522f475Smrg{ 2847d522f475Smrg UpdateCheckbox("update_decbkm", 2848d522f475Smrg mainMenuEntries, 2849d522f475Smrg mainMenu_backarrow, 2850d522f475Smrg (term->keyboard.flags & MODE_DECBKM) != 0); 2851d522f475Smrg} 2852d522f475Smrg 2853d522f475Smrg#if OPT_NUM_LOCK 2854d522f475Smrgvoid 2855d522f475Smrgupdate_num_lock(void) 2856d522f475Smrg{ 2857d522f475Smrg UpdateCheckbox("update_num_lock", 2858d522f475Smrg mainMenuEntries, 2859d522f475Smrg mainMenu_num_lock, 2860d522f475Smrg term->misc.real_NumLock); 2861d522f475Smrg} 2862d522f475Smrg 2863d522f475Smrgvoid 2864d522f475Smrgupdate_alt_esc(void) 2865d522f475Smrg{ 2866d522f475Smrg UpdateCheckbox("update_alt_esc", 2867d522f475Smrg mainMenuEntries, 2868d522f475Smrg mainMenu_alt_esc, 2869d522f475Smrg term->screen.alt_sends_esc); 2870d522f475Smrg} 2871d522f475Smrg 2872d522f475Smrgvoid 2873d522f475Smrgupdate_meta_esc(void) 2874d522f475Smrg{ 2875d522f475Smrg UpdateCheckbox("update_meta_esc", 2876d522f475Smrg mainMenuEntries, 2877d522f475Smrg mainMenu_meta_esc, 2878d522f475Smrg term->screen.meta_sends_esc); 2879d522f475Smrg} 2880d522f475Smrg#endif 2881d522f475Smrg 2882d522f475Smrg#if OPT_SUN_FUNC_KEYS 2883d522f475Smrgvoid 2884d522f475Smrgupdate_sun_fkeys(void) 2885d522f475Smrg{ 2886d522f475Smrg UpdateCheckbox("update_sun_fkeys", 2887d522f475Smrg mainMenuEntries, 2888d522f475Smrg mainMenu_sun_fkeys, 2889d522f475Smrg term->keyboard.type == keyboardIsSun); 2890d522f475Smrg} 2891d522f475Smrg#endif 2892d522f475Smrg 2893d522f475Smrg#if OPT_TCAP_FKEYS 2894d522f475Smrgvoid 2895d522f475Smrgupdate_tcap_fkeys(void) 2896d522f475Smrg{ 2897d522f475Smrg UpdateCheckbox("update_tcap_fkeys", 2898d522f475Smrg mainMenuEntries, 2899d522f475Smrg mainMenu_tcap_fkeys, 2900d522f475Smrg term->keyboard.type == keyboardIsTermcap); 2901d522f475Smrg} 2902d522f475Smrg#endif 2903d522f475Smrg 2904d522f475Smrgvoid 2905d522f475Smrgupdate_old_fkeys(void) 2906d522f475Smrg{ 2907d522f475Smrg UpdateCheckbox("update_old_fkeys", 2908d522f475Smrg mainMenuEntries, 2909d522f475Smrg mainMenu_old_fkeys, 2910d522f475Smrg term->keyboard.type == keyboardIsLegacy); 2911d522f475Smrg} 2912d522f475Smrg 2913d522f475Smrgvoid 2914d522f475Smrgupdate_delete_del(void) 2915d522f475Smrg{ 2916d522f475Smrg UpdateCheckbox("update_delete_del", 2917d522f475Smrg mainMenuEntries, 2918d522f475Smrg mainMenu_delete_del, 2919d522f475Smrg xtermDeleteIsDEL(term)); 2920d522f475Smrg} 2921d522f475Smrg 2922d522f475Smrg#if OPT_SUNPC_KBD 2923d522f475Smrgvoid 2924d522f475Smrgupdate_sun_kbd(void) 2925d522f475Smrg{ 2926d522f475Smrg UpdateCheckbox("update_sun_kbd", 2927d522f475Smrg mainMenuEntries, 2928d522f475Smrg mainMenu_sun_kbd, 2929d522f475Smrg term->keyboard.type == keyboardIsVT220); 2930d522f475Smrg} 2931d522f475Smrg#endif 2932d522f475Smrg 2933d522f475Smrg#if OPT_HP_FUNC_KEYS 2934d522f475Smrgvoid 2935d522f475Smrgupdate_hp_fkeys(void) 2936d522f475Smrg{ 2937d522f475Smrg UpdateCheckbox("update_hp_fkeys", 2938d522f475Smrg mainMenuEntries, 2939d522f475Smrg mainMenu_hp_fkeys, 2940d522f475Smrg term->keyboard.type == keyboardIsHP); 2941d522f475Smrg} 2942d522f475Smrg#endif 2943d522f475Smrg 2944d522f475Smrg#if OPT_SCO_FUNC_KEYS 2945d522f475Smrgvoid 2946d522f475Smrgupdate_sco_fkeys(void) 2947d522f475Smrg{ 2948d522f475Smrg UpdateCheckbox("update_sco_fkeys", 2949d522f475Smrg mainMenuEntries, 2950d522f475Smrg mainMenu_sco_fkeys, 2951d522f475Smrg term->keyboard.type == keyboardIsSCO); 2952d522f475Smrg} 2953d522f475Smrg#endif 2954d522f475Smrg 2955d522f475Smrgvoid 2956d522f475Smrgupdate_scrollbar(void) 2957d522f475Smrg{ 2958d522f475Smrg UpdateCheckbox("update_scrollbar", 2959d522f475Smrg vtMenuEntries, 2960d522f475Smrg vtMenu_scrollbar, 2961d522f475Smrg ScrollbarWidth(TScreenOf(term))); 2962d522f475Smrg} 2963d522f475Smrg 2964d522f475Smrgvoid 2965d522f475Smrgupdate_jumpscroll(void) 2966d522f475Smrg{ 2967d522f475Smrg UpdateCheckbox("update_jumpscroll", 2968d522f475Smrg vtMenuEntries, 2969d522f475Smrg vtMenu_jumpscroll, 2970d522f475Smrg term->screen.jumpscroll); 2971d522f475Smrg} 2972d522f475Smrg 2973d522f475Smrgvoid 2974d522f475Smrgupdate_reversevideo(void) 2975d522f475Smrg{ 2976d522f475Smrg UpdateCheckbox("update_reversevideo", 2977d522f475Smrg vtMenuEntries, 2978d522f475Smrg vtMenu_reversevideo, 2979d522f475Smrg (term->misc.re_verse)); 2980d522f475Smrg} 2981d522f475Smrg 2982d522f475Smrgvoid 2983d522f475Smrgupdate_autowrap(void) 2984d522f475Smrg{ 2985d522f475Smrg UpdateCheckbox("update_autowrap", 2986d522f475Smrg vtMenuEntries, 2987d522f475Smrg vtMenu_autowrap, 2988d522f475Smrg (term->flags & WRAPAROUND) != 0); 2989d522f475Smrg} 2990d522f475Smrg 2991d522f475Smrgvoid 2992d522f475Smrgupdate_reversewrap(void) 2993d522f475Smrg{ 2994d522f475Smrg UpdateCheckbox("update_reversewrap", 2995d522f475Smrg vtMenuEntries, 2996d522f475Smrg vtMenu_reversewrap, 2997d522f475Smrg (term->flags & REVERSEWRAP) != 0); 2998d522f475Smrg} 2999d522f475Smrg 3000d522f475Smrgvoid 3001d522f475Smrgupdate_autolinefeed(void) 3002d522f475Smrg{ 3003d522f475Smrg UpdateCheckbox("update_autolinefeed", 3004d522f475Smrg vtMenuEntries, 3005d522f475Smrg vtMenu_autolinefeed, 3006d522f475Smrg (term->flags & LINEFEED) != 0); 3007d522f475Smrg} 3008d522f475Smrg 3009d522f475Smrgvoid 3010d522f475Smrgupdate_appcursor(void) 3011d522f475Smrg{ 3012d522f475Smrg UpdateCheckbox("update_appcursor", 3013d522f475Smrg vtMenuEntries, 3014d522f475Smrg vtMenu_appcursor, 3015d522f475Smrg (term->keyboard.flags & MODE_DECCKM) != 0); 3016d522f475Smrg} 3017d522f475Smrg 3018d522f475Smrgvoid 3019d522f475Smrgupdate_appkeypad(void) 3020d522f475Smrg{ 3021d522f475Smrg UpdateCheckbox("update_appkeypad", 3022d522f475Smrg vtMenuEntries, 3023d522f475Smrg vtMenu_appkeypad, 3024d522f475Smrg (term->keyboard.flags & MODE_DECKPAM) != 0); 3025d522f475Smrg} 3026d522f475Smrg 3027d522f475Smrgvoid 3028d522f475Smrgupdate_scrollkey(void) 3029d522f475Smrg{ 3030d522f475Smrg UpdateCheckbox("update_scrollkey", 3031d522f475Smrg vtMenuEntries, 3032d522f475Smrg vtMenu_scrollkey, 3033d522f475Smrg term->screen.scrollkey); 3034d522f475Smrg} 3035d522f475Smrg 3036d522f475Smrgvoid 3037d522f475Smrgupdate_scrollttyoutput(void) 3038d522f475Smrg{ 3039d522f475Smrg UpdateCheckbox("update_scrollttyoutput", 3040d522f475Smrg vtMenuEntries, 3041d522f475Smrg vtMenu_scrollttyoutput, 3042d522f475Smrg term->screen.scrollttyoutput); 3043d522f475Smrg} 3044d522f475Smrg 3045d522f475Smrgvoid 3046d522f475Smrgupdate_keepSelection(void) 3047d522f475Smrg{ 3048d522f475Smrg UpdateCheckbox("update_keepSelection", 3049d522f475Smrg vtMenuEntries, 3050d522f475Smrg vtMenu_keepSelection, 3051d522f475Smrg term->screen.keepSelection); 3052d522f475Smrg} 3053d522f475Smrg 3054d522f475Smrgvoid 3055d522f475Smrgupdate_selectToClipboard(void) 3056d522f475Smrg{ 3057d522f475Smrg UpdateCheckbox("update_selectToClipboard", 3058d522f475Smrg vtMenuEntries, 3059d522f475Smrg vtMenu_selectToClipboard, 3060d522f475Smrg term->screen.selectToClipboard); 3061d522f475Smrg} 3062d522f475Smrg 3063d522f475Smrgvoid 3064d522f475Smrgupdate_allow132(void) 3065d522f475Smrg{ 3066d522f475Smrg UpdateCheckbox("update_allow132", 3067d522f475Smrg vtMenuEntries, 3068d522f475Smrg vtMenu_allow132, 3069d522f475Smrg term->screen.c132); 3070d522f475Smrg} 3071d522f475Smrg 3072d522f475Smrgvoid 3073d522f475Smrgupdate_cursesemul(void) 3074d522f475Smrg{ 3075d522f475Smrg#if 0 /* 2006-2-12: no longer menu entry */ 3076d522f475Smrg UpdateMenuItem("update_cursesemul", vtMenuEntries, vtMenu_cursesemul, 3077d522f475Smrg term->screen.curses); 3078d522f475Smrg#endif 3079d522f475Smrg} 3080d522f475Smrg 3081d522f475Smrgvoid 3082d522f475Smrgupdate_visualbell(void) 3083d522f475Smrg{ 3084d522f475Smrg UpdateCheckbox("update_visualbell", 3085d522f475Smrg vtMenuEntries, 3086d522f475Smrg vtMenu_visualbell, 3087d522f475Smrg term->screen.visualbell); 3088d522f475Smrg} 3089d522f475Smrg 3090d522f475Smrgvoid 3091d522f475Smrgupdate_bellIsUrgent(void) 3092d522f475Smrg{ 3093d522f475Smrg UpdateCheckbox("update_bellIsUrgent", 3094d522f475Smrg vtMenuEntries, 3095d522f475Smrg vtMenu_bellIsUrgent, 3096d522f475Smrg term->screen.bellIsUrgent); 3097d522f475Smrg} 3098d522f475Smrg 3099d522f475Smrgvoid 3100d522f475Smrgupdate_poponbell(void) 3101d522f475Smrg{ 3102d522f475Smrg UpdateCheckbox("update_poponbell", 3103d522f475Smrg vtMenuEntries, 3104d522f475Smrg vtMenu_poponbell, 3105d522f475Smrg term->screen.poponbell); 3106d522f475Smrg} 3107d522f475Smrg 3108d522f475Smrg#ifndef update_marginbell /* 2007-3-7: no longer menu entry */ 3109d522f475Smrgvoid 3110d522f475Smrgupdate_marginbell(void) 3111d522f475Smrg{ 3112d522f475Smrg UpdateCheckbox("update_marginbell", 3113d522f475Smrg vtMenuEntries, 3114d522f475Smrg vtMenu_marginbell, 3115d522f475Smrg term->screen.marginbell); 3116d522f475Smrg} 3117d522f475Smrg#endif 3118d522f475Smrg 3119d522f475Smrg#if OPT_BLINK_CURS 3120d522f475Smrgvoid 3121d522f475Smrgupdate_cursorblink(void) 3122d522f475Smrg{ 3123d522f475Smrg UpdateCheckbox("update_cursorblink", 3124d522f475Smrg vtMenuEntries, 3125d522f475Smrg vtMenu_cursorblink, 3126d522f475Smrg term->screen.cursor_blink); 3127d522f475Smrg} 3128d522f475Smrg#endif 3129d522f475Smrg 3130d522f475Smrgvoid 3131d522f475Smrgupdate_altscreen(void) 3132d522f475Smrg{ 3133d522f475Smrg UpdateCheckbox("update_altscreen", 3134d522f475Smrg vtMenuEntries, 3135d522f475Smrg vtMenu_altscreen, 3136956cc18dSsnj term->screen.whichBuf); 3137d522f475Smrg} 3138d522f475Smrg 3139d522f475Smrgvoid 3140d522f475Smrgupdate_titeInhibit(void) 3141d522f475Smrg{ 3142d522f475Smrg UpdateCheckbox("update_titeInhibit", 3143d522f475Smrg vtMenuEntries, 3144d522f475Smrg vtMenu_titeInhibit, 3145d522f475Smrg !(term->misc.titeInhibit)); 3146d522f475Smrg} 3147d522f475Smrg 3148d522f475Smrg#ifndef NO_ACTIVE_ICON 3149d522f475Smrgvoid 3150d522f475Smrgupdate_activeicon(void) 3151d522f475Smrg{ 3152d522f475Smrg UpdateCheckbox("update_activeicon", 3153d522f475Smrg vtMenuEntries, 3154d522f475Smrg vtMenu_activeicon, 3155d522f475Smrg term->misc.active_icon); 3156d522f475Smrg} 3157d522f475Smrg#endif /* NO_ACTIVE_ICON */ 3158d522f475Smrg 3159d522f475Smrg#if OPT_DEC_CHRSET 3160d522f475Smrgvoid 3161d522f475Smrgupdate_font_doublesize(void) 3162d522f475Smrg{ 3163d522f475Smrg UpdateCheckbox("update_font_doublesize", 3164d522f475Smrg fontMenuEntries, 3165d522f475Smrg fontMenu_font_doublesize, 3166d522f475Smrg term->screen.font_doublesize); 3167d522f475Smrg} 3168d522f475Smrg#endif 3169d522f475Smrg 3170d522f475Smrg#if OPT_BOX_CHARS 3171d522f475Smrgvoid 3172d522f475Smrgupdate_font_boxchars(void) 3173d522f475Smrg{ 3174d522f475Smrg UpdateCheckbox("update_font_boxchars", 3175d522f475Smrg fontMenuEntries, 3176d522f475Smrg fontMenu_font_boxchars, 3177d522f475Smrg term->screen.force_box_chars); 3178d522f475Smrg} 3179d522f475Smrg#endif 3180d522f475Smrg 3181d522f475Smrg#if OPT_DEC_SOFTFONT 3182d522f475Smrgvoid 3183d522f475Smrgupdate_font_loadable(void) 3184d522f475Smrg{ 3185d522f475Smrg UpdateCheckbox("update_font_loadable", 3186d522f475Smrg fontMenuEntries, 3187d522f475Smrg fontMenu_font_loadable, 3188d522f475Smrg term->misc.font_loadable); 3189d522f475Smrg} 3190d522f475Smrg#endif 3191d522f475Smrg 3192d522f475Smrg#if OPT_RENDERFONT 3193d522f475Smrgvoid 3194d522f475Smrgupdate_font_renderfont(void) 3195d522f475Smrg{ 3196d522f475Smrg UpdateCheckbox("update_font_renderfont", 3197d522f475Smrg fontMenuEntries, 3198d522f475Smrg fontMenu_render_font, 3199d522f475Smrg term->misc.render_font); 3200d522f475Smrg} 3201d522f475Smrg#endif 3202d522f475Smrg 3203d522f475Smrg#if OPT_WIDE_CHARS 3204d522f475Smrgvoid 3205d522f475Smrgupdate_font_utf8_mode(void) 3206d522f475Smrg{ 3207d522f475Smrg Bool active = (term->screen.utf8_mode != uAlways); 3208d522f475Smrg Bool enable = (term->screen.utf8_mode != uFalse); 3209d522f475Smrg 3210d522f475Smrg TRACE(("update_font_utf8_mode active %d, enable %d\n", active, enable)); 3211d522f475Smrg SetItemSensitivity(fontMenuEntries[fontMenu_wide_chars].widget, active); 3212d522f475Smrg UpdateCheckbox("update_font_utf8_mode", 3213d522f475Smrg fontMenuEntries, 3214d522f475Smrg fontMenu_wide_chars, 3215d522f475Smrg enable); 3216d522f475Smrg} 3217d522f475Smrg 3218d522f475Smrgvoid 3219d522f475Smrgupdate_font_utf8_title(void) 3220d522f475Smrg{ 3221d522f475Smrg Bool active = (term->screen.utf8_mode != uFalse); 3222d522f475Smrg Bool enable = (term->screen.utf8_title); 3223d522f475Smrg 3224d522f475Smrg TRACE(("update_font_utf8_title active %d, enable %d\n", active, enable)); 3225d522f475Smrg SetItemSensitivity(fontMenuEntries[fontMenu_wide_title].widget, active); 3226d522f475Smrg UpdateCheckbox("update_font_utf8_title", 3227d522f475Smrg fontMenuEntries, 3228d522f475Smrg fontMenu_wide_title, 3229d522f475Smrg enable); 3230d522f475Smrg} 3231d522f475Smrg#endif 3232d522f475Smrg 3233956cc18dSsnj#if OPT_ALLOW_XXX_OPS 3234956cc18dSsnjstatic void 3235956cc18dSsnjenable_allow_xxx_ops(Bool enable) 3236956cc18dSsnj{ 3237956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowFontOps].widget, enable); 3238956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowTcapOps].widget, enable); 3239956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowTitleOps].widget, enable); 3240956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowWindowOps].widget, enable); 3241956cc18dSsnj} 3242956cc18dSsnj 3243956cc18dSsnjstatic void 3244956cc18dSsnjdo_allowFontOps(Widget w, 3245956cc18dSsnj XtPointer closure GCC_UNUSED, 3246956cc18dSsnj XtPointer data GCC_UNUSED) 3247956cc18dSsnj{ 3248956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3249956cc18dSsnj if (xw != 0) { 3250956cc18dSsnj ToggleFlag(xw->screen.allowFontOps); 3251956cc18dSsnj update_menu_allowFontOps(); 3252956cc18dSsnj } 3253956cc18dSsnj} 3254956cc18dSsnj 3255956cc18dSsnjstatic void 3256956cc18dSsnjdo_allowTcapOps(Widget w, 3257956cc18dSsnj XtPointer closure GCC_UNUSED, 3258956cc18dSsnj XtPointer data GCC_UNUSED) 3259956cc18dSsnj{ 3260956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3261956cc18dSsnj if (xw != 0) { 3262956cc18dSsnj ToggleFlag(xw->screen.allowTcapOps); 3263956cc18dSsnj update_menu_allowTcapOps(); 3264956cc18dSsnj } 3265956cc18dSsnj} 3266956cc18dSsnj 3267956cc18dSsnjstatic void 3268956cc18dSsnjdo_allowTitleOps(Widget w, 3269956cc18dSsnj XtPointer closure GCC_UNUSED, 3270956cc18dSsnj XtPointer data GCC_UNUSED) 3271956cc18dSsnj{ 3272956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3273956cc18dSsnj if (xw != 0) { 3274956cc18dSsnj ToggleFlag(xw->screen.allowTitleOps); 3275956cc18dSsnj update_menu_allowTitleOps(); 3276956cc18dSsnj } 3277956cc18dSsnj} 3278956cc18dSsnj 3279956cc18dSsnjstatic void 3280956cc18dSsnjdo_allowWindowOps(Widget w, 3281956cc18dSsnj XtPointer closure GCC_UNUSED, 3282956cc18dSsnj XtPointer data GCC_UNUSED) 3283956cc18dSsnj{ 3284956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3285956cc18dSsnj if (xw != 0) { 3286956cc18dSsnj ToggleFlag(xw->screen.allowWindowOps); 3287956cc18dSsnj update_menu_allowWindowOps(); 3288956cc18dSsnj } 3289956cc18dSsnj} 3290956cc18dSsnj 3291956cc18dSsnjvoid 3292956cc18dSsnjHandleAllowFontOps(Widget w, 3293956cc18dSsnj XEvent * event GCC_UNUSED, 3294956cc18dSsnj String * params, 3295956cc18dSsnj Cardinal *param_count) 3296956cc18dSsnj{ 3297956cc18dSsnj handle_vt_toggle(do_allowFontOps, term->screen.allowFontOps, 3298956cc18dSsnj params, *param_count, w); 3299956cc18dSsnj} 3300956cc18dSsnj 3301956cc18dSsnjvoid 3302956cc18dSsnjHandleAllowTcapOps(Widget w, 3303956cc18dSsnj XEvent * event GCC_UNUSED, 3304956cc18dSsnj String * params, 3305956cc18dSsnj Cardinal *param_count) 3306956cc18dSsnj{ 3307956cc18dSsnj handle_vt_toggle(do_allowTcapOps, term->screen.allowTcapOps, 3308956cc18dSsnj params, *param_count, w); 3309956cc18dSsnj} 3310956cc18dSsnj 3311956cc18dSsnjvoid 3312956cc18dSsnjHandleAllowTitleOps(Widget w, 3313956cc18dSsnj XEvent * event GCC_UNUSED, 3314956cc18dSsnj String * params, 3315956cc18dSsnj Cardinal *param_count) 3316956cc18dSsnj{ 3317956cc18dSsnj handle_vt_toggle(do_allowTitleOps, term->screen.allowTitleOps, 3318956cc18dSsnj params, *param_count, w); 3319956cc18dSsnj} 3320956cc18dSsnj 3321956cc18dSsnjvoid 3322956cc18dSsnjHandleAllowWindowOps(Widget w, 3323956cc18dSsnj XEvent * event GCC_UNUSED, 3324956cc18dSsnj String * params, 3325956cc18dSsnj Cardinal *param_count) 3326956cc18dSsnj{ 3327956cc18dSsnj handle_vt_toggle(do_allowWindowOps, term->screen.allowWindowOps, 3328956cc18dSsnj params, *param_count, w); 3329956cc18dSsnj} 3330956cc18dSsnj 3331956cc18dSsnjvoid 3332956cc18dSsnjupdate_menu_allowTcapOps(void) 3333956cc18dSsnj{ 3334956cc18dSsnj UpdateCheckbox("update_menu_allowTcapOps", 3335956cc18dSsnj fontMenuEntries, 3336956cc18dSsnj fontMenu_allowTcapOps, 3337956cc18dSsnj term->screen.allowTcapOps); 3338956cc18dSsnj} 3339956cc18dSsnj 3340956cc18dSsnjvoid 3341956cc18dSsnjupdate_menu_allowFontOps(void) 3342956cc18dSsnj{ 3343956cc18dSsnj UpdateCheckbox("update_menu_allowFontOps", 3344956cc18dSsnj fontMenuEntries, 3345956cc18dSsnj fontMenu_allowFontOps, 3346956cc18dSsnj term->screen.allowFontOps); 3347956cc18dSsnj} 3348956cc18dSsnj 3349956cc18dSsnjvoid 3350956cc18dSsnjupdate_menu_allowTitleOps(void) 3351956cc18dSsnj{ 3352956cc18dSsnj UpdateCheckbox("update_menu_allowTitleOps", 3353956cc18dSsnj fontMenuEntries, 3354956cc18dSsnj fontMenu_allowTitleOps, 3355956cc18dSsnj term->screen.allowTitleOps); 3356956cc18dSsnj} 3357956cc18dSsnj 3358956cc18dSsnjvoid 3359956cc18dSsnjupdate_menu_allowWindowOps(void) 3360956cc18dSsnj{ 3361956cc18dSsnj UpdateCheckbox("update_menu_allowWindowOps", 3362956cc18dSsnj fontMenuEntries, 3363956cc18dSsnj fontMenu_allowWindowOps, 3364956cc18dSsnj term->screen.allowWindowOps); 3365956cc18dSsnj} 3366956cc18dSsnj#endif 3367956cc18dSsnj 3368d522f475Smrg#if OPT_TEK4014 3369d522f475Smrgvoid 3370d522f475Smrgupdate_tekshow(void) 3371d522f475Smrg{ 3372d522f475Smrg if (!(term->screen.inhibit & I_TEK)) { 3373d522f475Smrg UpdateCheckbox("update_tekshow", 3374d522f475Smrg vtMenuEntries, 3375d522f475Smrg vtMenu_tekshow, 3376d522f475Smrg TEK4014_SHOWN(term)); 3377d522f475Smrg } 3378d522f475Smrg} 3379d522f475Smrg 3380d522f475Smrgvoid 3381d522f475Smrgupdate_vttekmode(void) 3382d522f475Smrg{ 3383d522f475Smrg if (!(term->screen.inhibit & I_TEK)) { 3384d522f475Smrg UpdateCheckbox("update_vtmode", 3385d522f475Smrg vtMenuEntries, 3386d522f475Smrg vtMenu_tekmode, 3387d522f475Smrg TEK4014_ACTIVE(term)); 3388d522f475Smrg UpdateCheckbox("update_tekmode", 3389d522f475Smrg tekMenuEntries, 3390d522f475Smrg tekMenu_vtmode, 3391d522f475Smrg !TEK4014_ACTIVE(term)); 3392d522f475Smrg } 3393d522f475Smrg} 3394d522f475Smrg 3395d522f475Smrgvoid 3396d522f475Smrgupdate_vtshow(void) 3397d522f475Smrg{ 3398d522f475Smrg if (!(term->screen.inhibit & I_TEK)) { 3399d522f475Smrg UpdateCheckbox("update_vtshow", 3400d522f475Smrg tekMenuEntries, 3401d522f475Smrg tekMenu_vtshow, 3402d522f475Smrg term->screen.Vshow); 3403d522f475Smrg } 3404d522f475Smrg} 3405d522f475Smrg 3406d522f475Smrgvoid 3407d522f475Smrgset_vthide_sensitivity(void) 3408d522f475Smrg{ 3409d522f475Smrg if (!(term->screen.inhibit & I_TEK)) { 3410d522f475Smrg SetItemSensitivity( 3411d522f475Smrg vtMenuEntries[vtMenu_vthide].widget, 3412d522f475Smrg TEK4014_SHOWN(term)); 3413d522f475Smrg } 3414d522f475Smrg} 3415d522f475Smrg 3416d522f475Smrgvoid 3417d522f475Smrgset_tekhide_sensitivity(void) 3418d522f475Smrg{ 3419d522f475Smrg if (!(term->screen.inhibit & I_TEK)) { 3420d522f475Smrg SetItemSensitivity( 3421d522f475Smrg tekMenuEntries[tekMenu_tekhide].widget, 3422d522f475Smrg term->screen.Vshow); 3423d522f475Smrg } 3424d522f475Smrg} 3425d522f475Smrg 3426d522f475Smrgvoid 3427d522f475Smrgset_tekfont_menu_item(int n, int val) 3428d522f475Smrg{ 3429d522f475Smrg if (!(term->screen.inhibit & I_TEK)) { 3430d522f475Smrg UpdateCheckbox("set_tekfont_menu_item", tekMenuEntries, FS2MI(n), 3431d522f475Smrg (val)); 3432d522f475Smrg } 3433d522f475Smrg} 3434d522f475Smrg#endif /* OPT_TEK4014 */ 3435d522f475Smrg 3436d522f475Smrgvoid 3437d522f475Smrgset_menu_font(int val) 3438d522f475Smrg{ 3439d522f475Smrg UpdateCheckbox("set_menu_font", 3440d522f475Smrg fontMenuEntries, 3441d522f475Smrg term->screen.menu_font_number, 3442d522f475Smrg (val)); 3443d522f475Smrg} 3444