menu.c revision 0bd37d32
10bd37d32Smrg/* $XTermId: menu.c,v 1.313 2013/02/03 21:53:58 tom Exp $ */ 2d522f475Smrg 3d522f475Smrg/* 40bd37d32Smrg * Copyright 1999-2012,2013 by Thomas E. Dickey 520d2c4d2Smrg * 620d2c4d2Smrg * All Rights Reserved 720d2c4d2Smrg * 820d2c4d2Smrg * Permission is hereby granted, free of charge, to any person obtaining a 920d2c4d2Smrg * copy of this software and associated documentation files (the 1020d2c4d2Smrg * "Software"), to deal in the Software without restriction, including 1120d2c4d2Smrg * without limitation the rights to use, copy, modify, merge, publish, 1220d2c4d2Smrg * distribute, sublicense, and/or sell copies of the Software, and to 1320d2c4d2Smrg * permit persons to whom the Software is furnished to do so, subject to 1420d2c4d2Smrg * the following conditions: 1520d2c4d2Smrg * 1620d2c4d2Smrg * The above copyright notice and this permission notice shall be included 1720d2c4d2Smrg * in all copies or substantial portions of the Software. 1820d2c4d2Smrg * 1920d2c4d2Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 2020d2c4d2Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2120d2c4d2Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2220d2c4d2Smrg * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 2320d2c4d2Smrg * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2420d2c4d2Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2520d2c4d2Smrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2620d2c4d2Smrg * 2720d2c4d2Smrg * Except as contained in this notice, the name(s) of the above copyright 2820d2c4d2Smrg * holders shall not be used in advertising or otherwise to promote the 2920d2c4d2Smrg * sale, use or other dealings in this Software without prior written 3020d2c4d2Smrg * authorization. 3120d2c4d2Smrg * 32a1f3da82Smrg * 3320d2c4d2Smrg * Copyright 1989 The Open Group 3420d2c4d2Smrg * 3520d2c4d2Smrg * Permission to use, copy, modify, distribute, and sell this software and its 3620d2c4d2Smrg * documentation for any purpose is hereby granted without fee, provided that 3720d2c4d2Smrg * the above copyright notice appear in all copies and that both that 3820d2c4d2Smrg * copyright notice and this permission notice appear in supporting 3920d2c4d2Smrg * documentation. 4020d2c4d2Smrg * 4120d2c4d2Smrg * The above copyright notice and this permission notice shall be included in 4220d2c4d2Smrg * all copies or substantial portions of the Software. 4320d2c4d2Smrg * 4420d2c4d2Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 4520d2c4d2Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 4620d2c4d2Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 4720d2c4d2Smrg * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 4820d2c4d2Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 4920d2c4d2Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 5020d2c4d2Smrg * 5120d2c4d2Smrg * Except as contained in this notice, the name of The Open Group shall not be 5220d2c4d2Smrg * used in advertising or otherwise to promote the sale, use or other dealings 5320d2c4d2Smrg * in this Software without prior written authorization from The Open Group. 5420d2c4d2Smrg */ 55d522f475Smrg 56d522f475Smrg#include <xterm.h> 57d522f475Smrg#include <data.h> 58d522f475Smrg#include <menu.h> 59d522f475Smrg#include <fontutils.h> 60d522f475Smrg#include <xstrings.h> 61d522f475Smrg 62d522f475Smrg#include <locale.h> 63d522f475Smrg 64d522f475Smrg#include <X11/Xmu/CharSet.h> 65d522f475Smrg 66d522f475Smrg#define app_con Xaw_app_con /* quiet a warning from SimpleMenu.h */ 67d522f475Smrg 68d522f475Smrg#if defined(HAVE_LIB_XAW) 69d522f475Smrg 70d522f475Smrg#include <X11/Xaw/SimpleMenu.h> 71d522f475Smrg#include <X11/Xaw/Box.h> 72d522f475Smrg#include <X11/Xaw/SmeBSB.h> 73d522f475Smrg#include <X11/Xaw/SmeLine.h> 74d522f475Smrg 75d522f475Smrg#if OPT_TOOLBAR 76d522f475Smrg#include <X11/Xaw/MenuButton.h> 77d522f475Smrg#include <X11/Xaw/Form.h> 78d522f475Smrg#endif 79d522f475Smrg 80d522f475Smrg#elif defined(HAVE_LIB_XAW3D) 81d522f475Smrg 82d522f475Smrg#include <X11/Xaw3d/SimpleMenu.h> 83d522f475Smrg#include <X11/Xaw3d/Box.h> 84d522f475Smrg#include <X11/Xaw3d/SmeBSB.h> 85d522f475Smrg#include <X11/Xaw3d/SmeLine.h> 86d522f475Smrg 87d522f475Smrg#if OPT_TOOLBAR 88d522f475Smrg#include <X11/Xaw3d/MenuButton.h> 89d522f475Smrg#include <X11/Xaw3d/Form.h> 90d522f475Smrg#endif 91d522f475Smrg 92d522f475Smrg#elif defined(HAVE_LIB_NEXTAW) 93d522f475Smrg 94d522f475Smrg#include <X11/neXtaw/SimpleMenu.h> 95d522f475Smrg#include <X11/neXtaw/Box.h> 96d522f475Smrg#include <X11/neXtaw/SmeBSB.h> 97d522f475Smrg#include <X11/neXtaw/SmeLine.h> 98d522f475Smrg 99d522f475Smrg#if OPT_TOOLBAR 100d522f475Smrg#include <X11/neXtaw/MenuButton.h> 101d522f475Smrg#include <X11/neXtaw/Form.h> 102d522f475Smrg#endif 103d522f475Smrg 104d522f475Smrg#elif defined(HAVE_LIB_XAWPLUS) 105d522f475Smrg 106d522f475Smrg#include <X11/XawPlus/SimpleMenu.h> 107d522f475Smrg#include <X11/XawPlus/Box.h> 108d522f475Smrg#include <X11/XawPlus/SmeBSB.h> 109d522f475Smrg#include <X11/XawPlus/SmeLine.h> 110d522f475Smrg 111d522f475Smrg#if OPT_TOOLBAR 112d522f475Smrg#include <X11/XawPlus/MenuButton.h> 113d522f475Smrg#include <X11/XawPlus/Form.h> 114d522f475Smrg#endif 115d522f475Smrg 116d522f475Smrg#endif 117d522f475Smrg 118d522f475Smrg#undef app_con 119d522f475Smrg 120d522f475Smrg#include <stdio.h> 121d522f475Smrg#include <signal.h> 122956cc18dSsnj 123a1f3da82Smrg#if OPT_TRACE 124a1f3da82Smrg#define UpdateCheckbox(func, mn, mi, val) UpdateMenuItem(func, mn, mi, val) 125a1f3da82Smrg#else 126a1f3da82Smrg#define UpdateCheckbox(func, mn, mi, val) UpdateMenuItem(mn, mi, val) 127a1f3da82Smrg#endif 128a1f3da82Smrg 129956cc18dSsnj#define ToggleFlag(flag) flag = (Boolean) !flag 130d522f475Smrg/* *INDENT-OFF* */ 131d522f475Smrgstatic void do_8bit_control PROTO_XT_CALLBACK_ARGS; 132d522f475Smrgstatic void do_allow132 PROTO_XT_CALLBACK_ARGS; 133e39b573cSmrgstatic void do_allowBoldFonts PROTO_XT_CALLBACK_ARGS; 134d522f475Smrgstatic void do_allowsends PROTO_XT_CALLBACK_ARGS; 135d522f475Smrgstatic void do_altscreen PROTO_XT_CALLBACK_ARGS; 136d522f475Smrgstatic void do_appcursor PROTO_XT_CALLBACK_ARGS; 137d522f475Smrgstatic void do_appkeypad PROTO_XT_CALLBACK_ARGS; 138d522f475Smrgstatic void do_autolinefeed PROTO_XT_CALLBACK_ARGS; 139d522f475Smrgstatic void do_autowrap PROTO_XT_CALLBACK_ARGS; 140d522f475Smrgstatic void do_backarrow PROTO_XT_CALLBACK_ARGS; 141d522f475Smrgstatic void do_bellIsUrgent PROTO_XT_CALLBACK_ARGS; 142d522f475Smrgstatic void do_clearsavedlines PROTO_XT_CALLBACK_ARGS; 143d522f475Smrgstatic void do_continue PROTO_XT_CALLBACK_ARGS; 144d522f475Smrgstatic void do_delete_del PROTO_XT_CALLBACK_ARGS; 145d522f475Smrgstatic void do_hardreset PROTO_XT_CALLBACK_ARGS; 146d522f475Smrgstatic void do_interrupt PROTO_XT_CALLBACK_ARGS; 147d522f475Smrgstatic void do_jumpscroll PROTO_XT_CALLBACK_ARGS; 148e39b573cSmrgstatic void do_keepSelection PROTO_XT_CALLBACK_ARGS; 149d522f475Smrgstatic void do_kill PROTO_XT_CALLBACK_ARGS; 150d522f475Smrgstatic void do_old_fkeys PROTO_XT_CALLBACK_ARGS; 151d522f475Smrgstatic void do_poponbell PROTO_XT_CALLBACK_ARGS; 152d522f475Smrgstatic void do_print PROTO_XT_CALLBACK_ARGS; 153d522f475Smrgstatic void do_print_redir PROTO_XT_CALLBACK_ARGS; 154d522f475Smrgstatic void do_quit PROTO_XT_CALLBACK_ARGS; 155d522f475Smrgstatic void do_redraw PROTO_XT_CALLBACK_ARGS; 156d522f475Smrgstatic void do_reversevideo PROTO_XT_CALLBACK_ARGS; 157d522f475Smrgstatic void do_reversewrap PROTO_XT_CALLBACK_ARGS; 158d522f475Smrgstatic void do_scrollbar PROTO_XT_CALLBACK_ARGS; 159d522f475Smrgstatic void do_scrollkey PROTO_XT_CALLBACK_ARGS; 160d522f475Smrgstatic void do_scrollttyoutput PROTO_XT_CALLBACK_ARGS; 161d522f475Smrgstatic void do_securekbd PROTO_XT_CALLBACK_ARGS; 162d522f475Smrgstatic void do_selectClipboard PROTO_XT_CALLBACK_ARGS; 163d522f475Smrgstatic void do_softreset PROTO_XT_CALLBACK_ARGS; 164d522f475Smrgstatic void do_suspend PROTO_XT_CALLBACK_ARGS; 165d522f475Smrgstatic void do_terminate PROTO_XT_CALLBACK_ARGS; 166d522f475Smrgstatic void do_titeInhibit PROTO_XT_CALLBACK_ARGS; 167d522f475Smrgstatic void do_visualbell PROTO_XT_CALLBACK_ARGS; 168d522f475Smrgstatic void do_vtfont PROTO_XT_CALLBACK_ARGS; 169d522f475Smrg 170d522f475Smrg#ifdef ALLOWLOGGING 171d522f475Smrgstatic void do_logging PROTO_XT_CALLBACK_ARGS; 172d522f475Smrg#endif 173d522f475Smrg 174d522f475Smrg#ifndef NO_ACTIVE_ICON 175d522f475Smrgstatic void do_activeicon PROTO_XT_CALLBACK_ARGS; 176d522f475Smrg#endif /* NO_ACTIVE_ICON */ 177d522f475Smrg 178956cc18dSsnj#if OPT_ALLOW_XXX_OPS 179956cc18dSsnjstatic void enable_allow_xxx_ops (Bool); 18020d2c4d2Smrgstatic void do_allowColorOps PROTO_XT_CALLBACK_ARGS; 181956cc18dSsnjstatic void do_allowFontOps PROTO_XT_CALLBACK_ARGS; 18220d2c4d2Smrgstatic void do_allowTcapOps PROTO_XT_CALLBACK_ARGS; 183956cc18dSsnjstatic void do_allowTitleOps PROTO_XT_CALLBACK_ARGS; 184956cc18dSsnjstatic void do_allowWindowOps PROTO_XT_CALLBACK_ARGS; 185956cc18dSsnj#endif 186956cc18dSsnj 187d522f475Smrg#if OPT_BLINK_CURS 188d522f475Smrgstatic void do_cursorblink PROTO_XT_CALLBACK_ARGS; 189d522f475Smrg#endif 190d522f475Smrg 191d522f475Smrg#if OPT_BOX_CHARS 192d522f475Smrgstatic void do_font_boxchars PROTO_XT_CALLBACK_ARGS; 19320d2c4d2Smrgstatic void do_font_packed PROTO_XT_CALLBACK_ARGS; 194d522f475Smrg#endif 195d522f475Smrg 196d522f475Smrg#if OPT_DEC_CHRSET 197d522f475Smrgstatic void do_font_doublesize PROTO_XT_CALLBACK_ARGS; 198d522f475Smrg#endif 199d522f475Smrg 200d522f475Smrg#if OPT_DEC_SOFTFONT 201d522f475Smrgstatic void do_font_loadable PROTO_XT_CALLBACK_ARGS; 202d522f475Smrg#endif 203d522f475Smrg 204d522f475Smrg#if OPT_HP_FUNC_KEYS 205d522f475Smrgstatic void do_hp_fkeys PROTO_XT_CALLBACK_ARGS; 206d522f475Smrg#endif 207d522f475Smrg 208a1f3da82Smrg#if OPT_MAXIMIZE 209a1f3da82Smrgstatic void do_fullscreen PROTO_XT_CALLBACK_ARGS; 210a1f3da82Smrg#endif 211a1f3da82Smrg 212d522f475Smrg#if OPT_NUM_LOCK 213d522f475Smrgstatic void do_alt_esc PROTO_XT_CALLBACK_ARGS; 214d522f475Smrgstatic void do_num_lock PROTO_XT_CALLBACK_ARGS; 215d522f475Smrgstatic void do_meta_esc PROTO_XT_CALLBACK_ARGS; 216d522f475Smrg#endif 217d522f475Smrg 218e39b573cSmrg#if OPT_PRINT_ON_EXIT 219e39b573cSmrgstatic void do_write_now PROTO_XT_CALLBACK_ARGS; 220e39b573cSmrgstatic void do_write_error PROTO_XT_CALLBACK_ARGS; 221e39b573cSmrg#endif 222e39b573cSmrg 223d522f475Smrg#if OPT_RENDERFONT 224d522f475Smrgstatic void do_font_renderfont PROTO_XT_CALLBACK_ARGS; 225d522f475Smrg#endif 226d522f475Smrg 227d522f475Smrg#if OPT_SCO_FUNC_KEYS 228d522f475Smrgstatic void do_sco_fkeys PROTO_XT_CALLBACK_ARGS; 229d522f475Smrg#endif 230d522f475Smrg 231d522f475Smrg#if OPT_SUN_FUNC_KEYS 232d522f475Smrgstatic void do_sun_fkeys PROTO_XT_CALLBACK_ARGS; 233d522f475Smrg#endif 234d522f475Smrg 235d522f475Smrg#if OPT_SUNPC_KBD 236d522f475Smrgstatic void do_sun_kbd PROTO_XT_CALLBACK_ARGS; 237d522f475Smrg#endif 238d522f475Smrg 239d522f475Smrg#if OPT_TCAP_FKEYS 240d522f475Smrgstatic void do_tcap_fkeys PROTO_XT_CALLBACK_ARGS; 241d522f475Smrg#endif 242d522f475Smrg 243d522f475Smrg#if OPT_TEK4014 244d522f475Smrgstatic void do_tekcopy PROTO_XT_CALLBACK_ARGS; 245d522f475Smrgstatic void do_tekhide PROTO_XT_CALLBACK_ARGS; 246d522f475Smrgstatic void do_tekmode PROTO_XT_CALLBACK_ARGS; 247d522f475Smrgstatic void do_tekonoff PROTO_XT_CALLBACK_ARGS; 248d522f475Smrgstatic void do_tekpage PROTO_XT_CALLBACK_ARGS; 249d522f475Smrgstatic void do_tekreset PROTO_XT_CALLBACK_ARGS; 250d522f475Smrgstatic void do_tekshow PROTO_XT_CALLBACK_ARGS; 251d522f475Smrgstatic void do_tektext2 PROTO_XT_CALLBACK_ARGS; 252d522f475Smrgstatic void do_tektext3 PROTO_XT_CALLBACK_ARGS; 253d522f475Smrgstatic void do_tektextlarge PROTO_XT_CALLBACK_ARGS; 254d522f475Smrgstatic void do_tektextsmall PROTO_XT_CALLBACK_ARGS; 255d522f475Smrgstatic void do_vthide PROTO_XT_CALLBACK_ARGS; 256d522f475Smrgstatic void do_vtmode PROTO_XT_CALLBACK_ARGS; 257d522f475Smrgstatic void do_vtonoff PROTO_XT_CALLBACK_ARGS; 258d522f475Smrgstatic void do_vtshow PROTO_XT_CALLBACK_ARGS; 259d522f475Smrgstatic void handle_tekshow (Widget gw, Bool allowswitch); 260d522f475Smrgstatic void handle_vtshow (Widget gw, Bool allowswitch); 261d522f475Smrg#endif 262d522f475Smrg 263d522f475Smrg#if OPT_TOOLBAR 264d522f475Smrgstatic void do_toolbar PROTO_XT_CALLBACK_ARGS; 265d522f475Smrg#endif 266d522f475Smrg 267d522f475Smrg#if OPT_WIDE_CHARS 268d522f475Smrgstatic void do_font_utf8_mode PROTO_XT_CALLBACK_ARGS; 269e39b573cSmrgstatic void do_font_utf8_fonts PROTO_XT_CALLBACK_ARGS; 270d522f475Smrgstatic void do_font_utf8_title PROTO_XT_CALLBACK_ARGS; 271d522f475Smrg#endif 272d522f475Smrg 273d522f475Smrg/* 274d522f475Smrg * The order of entries MUST match the values given in menu.h 275d522f475Smrg */ 276d522f475SmrgMenuEntry mainMenuEntries[] = { 277d522f475Smrg#if OPT_TOOLBAR 278d522f475Smrg { "toolbar", do_toolbar, NULL }, 279a1f3da82Smrg#endif 280a1f3da82Smrg#if OPT_MAXIMIZE 281a1f3da82Smrg { "fullscreen", do_fullscreen, NULL }, 282d522f475Smrg#endif 283d522f475Smrg { "securekbd", do_securekbd, NULL }, 284d522f475Smrg { "allowsends", do_allowsends, NULL }, 285d522f475Smrg { "redraw", do_redraw, NULL }, 286d522f475Smrg { "line1", NULL, NULL }, 287d522f475Smrg#ifdef ALLOWLOGGING 288d522f475Smrg { "logging", do_logging, NULL }, 289e39b573cSmrg#endif 290e39b573cSmrg#ifdef OPT_PRINT_ON_EXIT 291e39b573cSmrg { "print-immediate", do_write_now, NULL }, 292e39b573cSmrg { "print-on-error", do_write_error, NULL }, 293d522f475Smrg#endif 294d522f475Smrg { "print", do_print, NULL }, 295d522f475Smrg { "print-redir", do_print_redir, NULL }, 296d522f475Smrg { "line2", NULL, NULL }, 297d522f475Smrg { "8-bit control", do_8bit_control,NULL }, 298d522f475Smrg { "backarrow key", do_backarrow, NULL }, 299d522f475Smrg#if OPT_NUM_LOCK 300d522f475Smrg { "num-lock", do_num_lock, NULL }, 301d522f475Smrg { "alt-esc", do_alt_esc, NULL }, 302d522f475Smrg { "meta-esc", do_meta_esc, NULL }, 303d522f475Smrg#endif 304d522f475Smrg { "delete-is-del", do_delete_del, NULL }, 305d522f475Smrg { "oldFunctionKeys",do_old_fkeys, NULL }, 306d522f475Smrg#if OPT_TCAP_FKEYS 307d522f475Smrg { "tcapFunctionKeys",do_tcap_fkeys, NULL }, 308d522f475Smrg#endif 309d522f475Smrg#if OPT_HP_FUNC_KEYS 310d522f475Smrg { "hpFunctionKeys", do_hp_fkeys, NULL }, 311d522f475Smrg#endif 312d522f475Smrg#if OPT_SCO_FUNC_KEYS 313d522f475Smrg { "scoFunctionKeys",do_sco_fkeys, NULL }, 314d522f475Smrg#endif 315d522f475Smrg#if OPT_SUN_FUNC_KEYS 316d522f475Smrg { "sunFunctionKeys",do_sun_fkeys, NULL }, 317d522f475Smrg#endif 318d522f475Smrg#if OPT_SUNPC_KBD 319d522f475Smrg { "sunKeyboard", do_sun_kbd, NULL }, 320d522f475Smrg#endif 321d522f475Smrg { "line3", NULL, NULL }, 322d522f475Smrg { "suspend", do_suspend, NULL }, 323d522f475Smrg { "continue", do_continue, NULL }, 324d522f475Smrg { "interrupt", do_interrupt, NULL }, 325d522f475Smrg { "hangup", do_hangup, NULL }, 326d522f475Smrg { "terminate", do_terminate, NULL }, 327d522f475Smrg { "kill", do_kill, NULL }, 328d522f475Smrg { "line4", NULL, NULL }, 329d522f475Smrg { "quit", do_quit, NULL }}; 330d522f475Smrg 331d522f475SmrgMenuEntry vtMenuEntries[] = { 332d522f475Smrg { "scrollbar", do_scrollbar, NULL }, 333d522f475Smrg { "jumpscroll", do_jumpscroll, NULL }, 334d522f475Smrg { "reversevideo", do_reversevideo, NULL }, 335d522f475Smrg { "autowrap", do_autowrap, NULL }, 336d522f475Smrg { "reversewrap", do_reversewrap, NULL }, 337d522f475Smrg { "autolinefeed", do_autolinefeed, NULL }, 338d522f475Smrg { "appcursor", do_appcursor, NULL }, 339d522f475Smrg { "appkeypad", do_appkeypad, NULL }, 340d522f475Smrg { "scrollkey", do_scrollkey, NULL }, 341d522f475Smrg { "scrollttyoutput",do_scrollttyoutput, NULL }, 342d522f475Smrg { "allow132", do_allow132, NULL }, 343d522f475Smrg { "keepSelection", do_keepSelection, NULL }, 344d522f475Smrg { "selectToClipboard",do_selectClipboard, NULL }, 345d522f475Smrg { "visualbell", do_visualbell, NULL }, 346d522f475Smrg { "bellIsUrgent", do_bellIsUrgent, NULL }, 347d522f475Smrg { "poponbell", do_poponbell, NULL }, 348d522f475Smrg#if OPT_BLINK_CURS 349d522f475Smrg { "cursorblink", do_cursorblink, NULL }, 350d522f475Smrg#endif 351d522f475Smrg { "titeInhibit", do_titeInhibit, NULL }, 352d522f475Smrg#ifndef NO_ACTIVE_ICON 353d522f475Smrg { "activeicon", do_activeicon, NULL }, 354d522f475Smrg#endif /* NO_ACTIVE_ICON */ 355d522f475Smrg { "line1", NULL, NULL }, 356d522f475Smrg { "softreset", do_softreset, NULL }, 357d522f475Smrg { "hardreset", do_hardreset, NULL }, 358d522f475Smrg { "clearsavedlines",do_clearsavedlines, NULL }, 359d522f475Smrg { "line2", NULL, NULL }, 360d522f475Smrg#if OPT_TEK4014 361d522f475Smrg { "tekshow", do_tekshow, NULL }, 362d522f475Smrg { "tekmode", do_tekmode, NULL }, 363d522f475Smrg { "vthide", do_vthide, NULL }, 364d522f475Smrg#endif 365d522f475Smrg { "altscreen", do_altscreen, NULL }, 366d522f475Smrg }; 367d522f475Smrg 368d522f475SmrgMenuEntry fontMenuEntries[] = { 369d522f475Smrg { "fontdefault", do_vtfont, NULL }, 370d522f475Smrg { "font1", do_vtfont, NULL }, 371d522f475Smrg { "font2", do_vtfont, NULL }, 372d522f475Smrg { "font3", do_vtfont, NULL }, 373d522f475Smrg { "font4", do_vtfont, NULL }, 374d522f475Smrg { "font5", do_vtfont, NULL }, 375d522f475Smrg { "font6", do_vtfont, NULL }, 376d522f475Smrg /* this is after the last builtin font; the other entries are special */ 377d522f475Smrg { "fontescape", do_vtfont, NULL }, 378d522f475Smrg { "fontsel", do_vtfont, NULL }, 379d522f475Smrg /* down to here should match NMENUFONTS in ptyx.h */ 380d522f475Smrg 381d522f475Smrg#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 382d522f475Smrg { "line1", NULL, NULL }, 383e39b573cSmrg { "allow-bold-fonts", do_allowBoldFonts, NULL }, 384d522f475Smrg#if OPT_BOX_CHARS 385d522f475Smrg { "font-linedrawing",do_font_boxchars,NULL }, 38620d2c4d2Smrg { "font-packed", do_font_packed,NULL }, 387d522f475Smrg#endif 388d522f475Smrg#if OPT_DEC_CHRSET 389d522f475Smrg { "font-doublesize",do_font_doublesize,NULL }, 390d522f475Smrg#endif 391d522f475Smrg#if OPT_DEC_SOFTFONT 392d522f475Smrg { "font-loadable", do_font_loadable,NULL }, 393d522f475Smrg#endif 394d522f475Smrg#endif /* toggles for DEC font extensions */ 395d522f475Smrg 396d522f475Smrg#if OPT_RENDERFONT || OPT_WIDE_CHARS 397d522f475Smrg { "line2", NULL, NULL }, 398d522f475Smrg#if OPT_RENDERFONT 399d522f475Smrg { "render-font", do_font_renderfont,NULL }, 400d522f475Smrg#endif 401d522f475Smrg#if OPT_WIDE_CHARS 402d522f475Smrg { "utf8-mode", do_font_utf8_mode,NULL }, 403e39b573cSmrg { "utf8-fonts", do_font_utf8_fonts,NULL }, 404d522f475Smrg { "utf8-title", do_font_utf8_title,NULL }, 405d522f475Smrg#endif 406d522f475Smrg#endif /* toggles for other font extensions */ 407d522f475Smrg 408956cc18dSsnj#if OPT_ALLOW_XXX_OPS 409956cc18dSsnj { "line3", NULL, NULL }, 41020d2c4d2Smrg { "allow-color-ops",do_allowColorOps,NULL }, 411956cc18dSsnj { "allow-font-ops", do_allowFontOps,NULL }, 41220d2c4d2Smrg { "allow-tcap-ops", do_allowTcapOps,NULL }, 413956cc18dSsnj { "allow-title-ops",do_allowTitleOps,NULL }, 414956cc18dSsnj { "allow-window-ops",do_allowWindowOps,NULL }, 415956cc18dSsnj#endif 416956cc18dSsnj 417d522f475Smrg }; 418d522f475Smrg 419d522f475Smrg#if OPT_TEK4014 420d522f475SmrgMenuEntry tekMenuEntries[] = { 421d522f475Smrg { "tektextlarge", do_tektextlarge, NULL }, 422d522f475Smrg { "tektext2", do_tektext2, NULL }, 423d522f475Smrg { "tektext3", do_tektext3, NULL }, 424d522f475Smrg { "tektextsmall", do_tektextsmall, NULL }, 425d522f475Smrg { "line1", NULL, NULL }, 426d522f475Smrg { "tekpage", do_tekpage, NULL }, 427d522f475Smrg { "tekreset", do_tekreset, NULL }, 428d522f475Smrg { "tekcopy", do_tekcopy, NULL }, 429d522f475Smrg { "line2", NULL, NULL }, 430d522f475Smrg { "vtshow", do_vtshow, NULL }, 431d522f475Smrg { "vtmode", do_vtmode, NULL }, 432d522f475Smrg { "tekhide", do_tekhide, NULL }}; 433d522f475Smrg#endif 434d522f475Smrg 435d522f475Smrgtypedef struct { 436d522f475Smrg char *internal_name; 437d522f475Smrg MenuEntry *entry_list; 438d522f475Smrg Cardinal entry_len; 439d522f475Smrg} MenuHeader; 440d522f475Smrg 441d522f475Smrg /* This table is ordered to correspond with MenuIndex */ 442d522f475Smrgstatic MenuHeader menu_names[] = { 443d522f475Smrg { "mainMenu", mainMenuEntries, XtNumber(mainMenuEntries) }, 444d522f475Smrg { "vtMenu", vtMenuEntries, XtNumber(vtMenuEntries) }, 445d522f475Smrg { "fontMenu", fontMenuEntries, XtNumber(fontMenuEntries) }, 446d522f475Smrg#if OPT_TEK4014 447d522f475Smrg { "tekMenu", tekMenuEntries, XtNumber(tekMenuEntries) }, 448d522f475Smrg#endif 449d522f475Smrg { 0, 0, 0 }, 450d522f475Smrg}; 451d522f475Smrg/* *INDENT-ON* */ 452d522f475Smrg 453d522f475Smrg/* 454d522f475Smrg * FIXME: These are global data rather than in the xterm widget because they 455d522f475Smrg * are initialized before the widget is created. 456d522f475Smrg */ 457d522f475Smrgtypedef struct { 458d522f475Smrg Widget b; /* the toolbar's buttons */ 459d522f475Smrg Widget w; /* the popup shell activated by the button */ 460d522f475Smrg Cardinal entries; 461d522f475Smrg} MenuList; 462d522f475Smrg 463d522f475Smrgstatic MenuList vt_shell[NUM_POPUP_MENUS]; 464d522f475Smrg 465d522f475Smrg#if OPT_TEK4014 && OPT_TOOLBAR 466d522f475Smrgstatic MenuList tek_shell[NUM_POPUP_MENUS]; 467d522f475Smrg#endif 468d522f475Smrg 469d522f475Smrgstatic String 470d522f475SmrgsetMenuLocale(Bool before, String substitute) 471d522f475Smrg{ 47220d2c4d2Smrg String result = setlocale(LC_CTYPE, 0); 473d522f475Smrg 474d522f475Smrg if (before) { 475d522f475Smrg result = x_strdup(result); 47620d2c4d2Smrg } 47720d2c4d2Smrg (void) setlocale(LC_CTYPE, substitute); 47820d2c4d2Smrg TRACE(("setMenuLocale %s:%s\n", 47920d2c4d2Smrg (before 48020d2c4d2Smrg ? "before" 48120d2c4d2Smrg : "after"), 48220d2c4d2Smrg NonNull(result))); 48320d2c4d2Smrg if (!before) { 48420d2c4d2Smrg free((void *) substitute); 485d522f475Smrg } 486d522f475Smrg return result; 487d522f475Smrg} 488d522f475Smrg 489d522f475Smrg/* 490d522f475Smrg * Returns a pointer to the MenuList entry that matches the popup menu. 491d522f475Smrg */ 492d522f475Smrgstatic MenuList * 493d522f475Smrgselect_menu(Widget w GCC_UNUSED, MenuIndex num) 494d522f475Smrg{ 495d522f475Smrg#if OPT_TEK4014 && OPT_TOOLBAR 496d522f475Smrg while (w != 0) { 497d522f475Smrg if (w == tekshellwidget) { 498d522f475Smrg return &tek_shell[num]; 499d522f475Smrg } 500d522f475Smrg w = XtParent(w); 501d522f475Smrg } 502d522f475Smrg#endif 503d522f475Smrg return &vt_shell[num]; 504d522f475Smrg} 505d522f475Smrg 506d522f475Smrg/* 507d522f475Smrg * Returns a pointer to the given popup menu shell 508d522f475Smrg */ 509d522f475Smrgstatic Widget 510d522f475Smrgobtain_menu(Widget w, MenuIndex num) 511d522f475Smrg{ 512d522f475Smrg return select_menu(w, num)->w; 513d522f475Smrg} 514d522f475Smrg 515d522f475Smrg/* 516d522f475Smrg * Returns the number of entries in the given popup menu shell 517d522f475Smrg */ 518d522f475Smrgstatic Cardinal 519d522f475Smrgsizeof_menu(Widget w, MenuIndex num) 520d522f475Smrg{ 521d522f475Smrg return select_menu(w, num)->entries; 522d522f475Smrg} 523d522f475Smrg 524d522f475Smrg/* 525e39b573cSmrg * Return an array of flags telling if a given menu item is never going to 526e39b573cSmrg * be used, so we can reduce the size of menus. 527d522f475Smrg */ 528e39b573cSmrgstatic Boolean * 529e39b573cSmrgunusedEntries(XtermWidget xw, MenuIndex num) 530e39b573cSmrg{ 531e39b573cSmrg static Boolean result[XtNumber(mainMenuEntries) 532e39b573cSmrg + XtNumber(vtMenuEntries) 533e39b573cSmrg + XtNumber(fontMenuEntries) 534e39b573cSmrg#if OPT_TEK4014 535e39b573cSmrg + XtNumber(tekMenuEntries) 536e39b573cSmrg#endif 537e39b573cSmrg ]; 538e39b573cSmrg TScreen *screen = TScreenOf(xw); 539d522f475Smrg 540e39b573cSmrg memset(result, 0, sizeof(result)); 541e39b573cSmrg switch (num) { 542e39b573cSmrg case mainMenu: 5430bd37d32Smrg#if OPT_MAXIMIZE 544e39b573cSmrg if (resource.fullscreen > 1) { 545e39b573cSmrg result[mainMenu_fullscreen] = True; 546e39b573cSmrg } 5470bd37d32Smrg#endif 548e39b573cSmrg#if OPT_NUM_LOCK 549e39b573cSmrg if (!screen->alt_is_not_meta) { 550e39b573cSmrg result[mainMenu_alt_esc] = True; 551e39b573cSmrg } 552e39b573cSmrg#endif 553e39b573cSmrg if (!xtermHasPrinter(xw)) { 554e39b573cSmrg result[mainMenu_print] = True; 555e39b573cSmrg result[mainMenu_print_redir] = True; 556e39b573cSmrg } 557e39b573cSmrg if (screen->terminal_id < 200) { 558e39b573cSmrg result[mainMenu_8bit_ctrl] = True; 559e39b573cSmrg } 560e39b573cSmrg#if !defined(SIGTSTP) 561e39b573cSmrg result[mainMenu_suspend] = True; 562e39b573cSmrg#endif 563e39b573cSmrg#if !defined(SIGCONT) 564e39b573cSmrg result[mainMenu_continue] = True; 565e39b573cSmrg#endif 566e39b573cSmrg#ifdef ALLOWLOGGING 567e39b573cSmrg if (screen->inhibit & I_LOG) { 568e39b573cSmrg result[mainMenu_logging] = True; 569e39b573cSmrg } 570e39b573cSmrg#endif 571e39b573cSmrg if (screen->inhibit & I_SIGNAL) { 572e39b573cSmrg int n; 573e39b573cSmrg for (n = (int) mainMenu_suspend; n <= (int) mainMenu_quit; ++n) { 574e39b573cSmrg result[n] = True; 575e39b573cSmrg } 576e39b573cSmrg } 577e39b573cSmrg break; 578e39b573cSmrg case vtMenu: 579e39b573cSmrg#ifndef NO_ACTIVE_ICON 580e39b573cSmrg if (!screen->fnt_icon.fs || !screen->iconVwin.window) { 581e39b573cSmrg result[vtMenu_activeicon] = True; 582e39b573cSmrg } 583e39b573cSmrg#endif /* NO_ACTIVE_ICON */ 584e39b573cSmrg#if OPT_TEK4014 585e39b573cSmrg if (screen->inhibit & I_TEK) { 586e39b573cSmrg int n; 587e39b573cSmrg for (n = (int) vtMenu_tekshow; n <= (int) vtMenu_vthide; ++n) { 588e39b573cSmrg result[n] = True; 589e39b573cSmrg } 590e39b573cSmrg } 591e39b573cSmrg#endif 592e39b573cSmrg break; 593e39b573cSmrg case fontMenu: 594e39b573cSmrg break; 595e39b573cSmrg#if OPT_TEK4014 596e39b573cSmrg case tekMenu: 597e39b573cSmrg break; 598e39b573cSmrg#endif 599e39b573cSmrg case noMenu: 600e39b573cSmrg break; 601e39b573cSmrg } 602e39b573cSmrg return result; 603e39b573cSmrg} 604e39b573cSmrg 605e39b573cSmrg/* 606e39b573cSmrg * create_menu - create a popup shell and stuff the menu into it. 607e39b573cSmrg */ 608d522f475Smrgstatic Widget 609e39b573cSmrgcreate_menu(Widget w, XtermWidget xw, MenuIndex num) 610d522f475Smrg{ 611d522f475Smrg static XtCallbackRec cb[2] = 612d522f475Smrg { 613d522f475Smrg {NULL, NULL}, 614d522f475Smrg {NULL, NULL}}; 615d522f475Smrg static Arg arg = 616d522f475Smrg {XtNcallback, (XtArgVal) cb}; 617d522f475Smrg 618e39b573cSmrg TScreen *screen = TScreenOf(xw); 619d522f475Smrg MenuHeader *data = &menu_names[num]; 620d522f475Smrg MenuList *list = select_menu(w, num); 621d522f475Smrg struct _MenuEntry *entries = data->entry_list; 622956cc18dSsnj Cardinal nentries = data->entry_len; 623d522f475Smrg#if !OPT_TOOLBAR 624d522f475Smrg String saveLocale; 625d522f475Smrg#endif 626d522f475Smrg 627d522f475Smrg if (screen->menu_item_bitmap == None) { 628d522f475Smrg /* 629d522f475Smrg * we really want to do these dynamically 630d522f475Smrg */ 631d522f475Smrg#define check_width 9 632d522f475Smrg#define check_height 8 633d522f475Smrg static unsigned char check_bits[] = 634d522f475Smrg { 635d522f475Smrg 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0x60, 0x00, 636d522f475Smrg 0x31, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x04, 0x00 637d522f475Smrg }; 638d522f475Smrg 639d522f475Smrg screen->menu_item_bitmap = 640e39b573cSmrg XCreateBitmapFromData(XtDisplay(xw), 641e39b573cSmrg RootWindowOfScreen(XtScreen(xw)), 642d522f475Smrg (char *) check_bits, check_width, check_height); 643d522f475Smrg } 644d522f475Smrg#if !OPT_TOOLBAR 645d522f475Smrg saveLocale = setMenuLocale(True, resource.menuLocale); 646d522f475Smrg list->w = XtCreatePopupShell(data->internal_name, 647d522f475Smrg simpleMenuWidgetClass, 648d522f475Smrg toplevel, 649d522f475Smrg NULL, 0); 650d522f475Smrg#endif 651d522f475Smrg if (list->w != 0) { 652e39b573cSmrg Boolean *unused = unusedEntries(xw, num); 653e39b573cSmrg Cardinal n; 654e39b573cSmrg 655e39b573cSmrg list->entries = 0; 656e39b573cSmrg 657e39b573cSmrg for (n = 0; n < nentries; ++n) { 658e39b573cSmrg if (!unused[n]) { 659e39b573cSmrg cb[0].callback = (XtCallbackProc) entries[n].function; 6600bd37d32Smrg cb[0].closure = (XtPointer) entries[n].name; 661e39b573cSmrg entries[n].widget = XtCreateManagedWidget(entries[n].name, 662e39b573cSmrg (entries[n].function 663e39b573cSmrg ? smeBSBObjectClass 664e39b573cSmrg : smeLineObjectClass), 665e39b573cSmrg list->w, 666e39b573cSmrg &arg, (Cardinal) 1); 667e39b573cSmrg list->entries++; 668e39b573cSmrg } 669d522f475Smrg } 670d522f475Smrg } 671d522f475Smrg#if !OPT_TOOLBAR 672d522f475Smrg (void) setMenuLocale(False, saveLocale); 673d522f475Smrg#endif 674d522f475Smrg 675d522f475Smrg /* do not realize at this point */ 676d522f475Smrg return list->w; 677d522f475Smrg} 678d522f475Smrg 679d522f475Smrgstatic MenuIndex 680d522f475SmrgindexOfMenu(String menuName) 681d522f475Smrg{ 682d522f475Smrg MenuIndex me; 683d522f475Smrg switch (*menuName) { 684d522f475Smrg case 'm': 685d522f475Smrg me = mainMenu; 686d522f475Smrg break; 687d522f475Smrg case 'v': 688d522f475Smrg me = vtMenu; 689d522f475Smrg break; 690d522f475Smrg case 'f': 691d522f475Smrg me = fontMenu; 692d522f475Smrg break; 693d522f475Smrg#if OPT_TEK4014 694d522f475Smrg case 't': 695d522f475Smrg me = tekMenu; 696d522f475Smrg break; 697d522f475Smrg#endif 698d522f475Smrg default: 699d522f475Smrg me = noMenu; 700d522f475Smrg } 701d522f475Smrg return (me); 702d522f475Smrg} 703d522f475Smrg 704d522f475Smrg/* ARGSUSED */ 705d522f475Smrgstatic Bool 706d522f475Smrgdomenu(Widget w, 707d522f475Smrg XEvent * event GCC_UNUSED, 708d522f475Smrg String * params, /* mainMenu, vtMenu, or tekMenu */ 709d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 710d522f475Smrg{ 71120d2c4d2Smrg XtermWidget xw = term; 71220d2c4d2Smrg TScreen *screen = TScreenOf(xw); 713d522f475Smrg MenuIndex me; 714d522f475Smrg Bool created = False; 715d522f475Smrg Widget mw; 716d522f475Smrg 717d522f475Smrg if (*param_count != 1) { 71820d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 719d522f475Smrg return False; 720d522f475Smrg } 721d522f475Smrg 722d522f475Smrg if ((me = indexOfMenu(params[0])) == noMenu) { 72320d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 724d522f475Smrg return False; 725d522f475Smrg } 726d522f475Smrg 727d522f475Smrg if ((mw = obtain_menu(w, me)) == 0 728d522f475Smrg || sizeof_menu(w, me) == 0) { 72920d2c4d2Smrg mw = create_menu(w, xw, me); 730d522f475Smrg created = (mw != 0); 731d522f475Smrg } 732d522f475Smrg if (mw == 0) 733d522f475Smrg return False; 734d522f475Smrg 735d522f475Smrg TRACE(("domenu(%s) %s\n", params[0], created ? "create" : "update")); 736d522f475Smrg switch (me) { 737d522f475Smrg case mainMenu: 738d522f475Smrg if (created) { 739d522f475Smrg update_toolbar(); 740a1f3da82Smrg update_fullscreen(); 741d522f475Smrg update_securekbd(); 742d522f475Smrg update_allowsends(); 743d522f475Smrg update_logging(); 744d522f475Smrg update_print_redir(); 745d522f475Smrg update_8bit_control(); 746d522f475Smrg update_decbkm(); 747d522f475Smrg update_num_lock(); 748d522f475Smrg update_alt_esc(); 749d522f475Smrg update_meta_esc(); 750d522f475Smrg update_delete_del(); 751d522f475Smrg update_keyboard_type(); 752e39b573cSmrg#ifdef PRINT_ON_EXIT 753e39b573cSmrg screen->write_error = !IsEmpty(resource.printOnXError); 754e39b573cSmrg SetItemSensitivity(mainMenuEntries[mainMenu_write_now].widget, False); 755e39b573cSmrg SetItemSensitivity(mainMenuEntries[mainMenu_write_error].widget, screen->write_error); 756d522f475Smrg#endif 757d522f475Smrg } 758d522f475Smrg break; 759d522f475Smrg 760d522f475Smrg case vtMenu: 761d522f475Smrg if (created) { 762d522f475Smrg update_scrollbar(); 763d522f475Smrg update_jumpscroll(); 764d522f475Smrg update_reversevideo(); 765d522f475Smrg update_autowrap(); 766d522f475Smrg update_reversewrap(); 767d522f475Smrg update_autolinefeed(); 768d522f475Smrg update_appcursor(); 769d522f475Smrg update_appkeypad(); 770d522f475Smrg update_scrollkey(); 771d522f475Smrg update_scrollttyoutput(); 772d522f475Smrg update_allow132(); 773d522f475Smrg update_cursesemul(); 774d522f475Smrg update_keepSelection(); 775d522f475Smrg update_selectToClipboard(); 776d522f475Smrg update_visualbell(); 777d522f475Smrg update_poponbell(); 778d522f475Smrg update_bellIsUrgent(); 779d522f475Smrg update_cursorblink(); 780d522f475Smrg update_altscreen(); 781d522f475Smrg update_titeInhibit(); 782d522f475Smrg#ifndef NO_ACTIVE_ICON 783e39b573cSmrg update_activeicon(); 784d522f475Smrg#endif /* NO_ACTIVE_ICON */ 785d522f475Smrg } 786d522f475Smrg break; 787d522f475Smrg 788d522f475Smrg case fontMenu: 789d522f475Smrg if (created) { 790e39b573cSmrg int n; 791e39b573cSmrg 792d522f475Smrg set_menu_font(True); 793e39b573cSmrg for (n = fontMenu_font1; n <= fontMenu_font6; ++n) { 794e39b573cSmrg if (IsEmpty(screen->menu_font_names[n][fNorm])) 795e39b573cSmrg SetItemSensitivity(fontMenuEntries[n].widget, False); 796e39b573cSmrg } 797d522f475Smrg SetItemSensitivity( 798d522f475Smrg fontMenuEntries[fontMenu_fontescape].widget, 799d522f475Smrg (screen->menu_font_names[fontMenu_fontescape][fNorm] 800d522f475Smrg ? True : False)); 801e39b573cSmrg update_menu_allowBoldFonts(); 802d522f475Smrg#if OPT_BOX_CHARS 803d522f475Smrg update_font_boxchars(); 804d522f475Smrg SetItemSensitivity( 805d522f475Smrg fontMenuEntries[fontMenu_font_boxchars].widget, 806d522f475Smrg True); 80720d2c4d2Smrg update_font_packed(); 80820d2c4d2Smrg SetItemSensitivity( 80920d2c4d2Smrg fontMenuEntries[fontMenu_font_packedfont].widget, 81020d2c4d2Smrg True); 811d522f475Smrg#endif 812d522f475Smrg#if OPT_DEC_SOFTFONT /* FIXME: not implemented */ 813d522f475Smrg update_font_loadable(); 814d522f475Smrg SetItemSensitivity( 815d522f475Smrg fontMenuEntries[fontMenu_font_loadable].widget, 816d522f475Smrg False); 817d522f475Smrg#endif 818d522f475Smrg#if OPT_DEC_CHRSET 819d522f475Smrg update_font_doublesize(); 82020d2c4d2Smrg if (TScreenOf(xw)->cache_doublesize == 0) 821d522f475Smrg SetItemSensitivity( 822d522f475Smrg fontMenuEntries[fontMenu_font_doublesize].widget, 823d522f475Smrg False); 824d522f475Smrg#endif 825d522f475Smrg#if OPT_RENDERFONT 826d522f475Smrg update_font_renderfont(); 827d522f475Smrg#endif 828d522f475Smrg#if OPT_WIDE_CHARS 829d522f475Smrg update_font_utf8_mode(); 830e39b573cSmrg update_font_utf8_fonts(); 831d522f475Smrg update_font_utf8_title(); 832956cc18dSsnj#endif 833956cc18dSsnj#if OPT_ALLOW_XXX_OPS 83420d2c4d2Smrg update_menu_allowColorOps(); 835956cc18dSsnj update_menu_allowFontOps(); 83620d2c4d2Smrg update_menu_allowTcapOps(); 837956cc18dSsnj update_menu_allowTitleOps(); 838956cc18dSsnj update_menu_allowWindowOps(); 839956cc18dSsnj enable_allow_xxx_ops(!(screen->allowSendEvents)); 840d522f475Smrg#endif 841d522f475Smrg } 84220d2c4d2Smrg FindFontSelection(xw, NULL, True); 843d522f475Smrg SetItemSensitivity( 844d522f475Smrg fontMenuEntries[fontMenu_fontsel].widget, 8450bd37d32Smrg (screen->menu_font_names[fontMenu_fontsel][fNorm] 846d522f475Smrg ? True : False)); 847d522f475Smrg break; 848d522f475Smrg 849d522f475Smrg#if OPT_TEK4014 850d522f475Smrg case tekMenu: 851d522f475Smrg if (created && tekWidget) { 85220d2c4d2Smrg set_tekfont_menu_item(TekScreenOf(tekWidget)->cur.fontsize, True); 853d522f475Smrg update_vtshow(); 854d522f475Smrg } 855d522f475Smrg break; 856d522f475Smrg#endif 857d522f475Smrg case noMenu: 858d522f475Smrg default: 859d522f475Smrg break; 860d522f475Smrg } 861d522f475Smrg 862d522f475Smrg return True; 863d522f475Smrg} 864d522f475Smrg 865d522f475Smrg/* 866d522f475Smrg * public interfaces 867d522f475Smrg */ 868d522f475Smrg 869d522f475Smrgvoid 870d522f475SmrgHandleCreateMenu(Widget w, 871d522f475Smrg XEvent * event, 872d522f475Smrg String * params, /* mainMenu, vtMenu, or tekMenu */ 873d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 874d522f475Smrg{ 875d522f475Smrg TRACE(("HandleCreateMenu\n")); 876d522f475Smrg (void) domenu(w, event, params, param_count); 877d522f475Smrg} 878d522f475Smrg 879d522f475Smrgvoid 880d522f475SmrgHandlePopupMenu(Widget w, 881d522f475Smrg XEvent * event, 882d522f475Smrg String * params, /* mainMenu, vtMenu, or tekMenu */ 883d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 884d522f475Smrg{ 885d522f475Smrg TRACE(("HandlePopupMenu\n")); 886d522f475Smrg if (domenu(w, event, params, param_count)) { 887e39b573cSmrg XtermWidget xw = term; 888e39b573cSmrg TScreen *screen = TScreenOf(xw); 889e39b573cSmrg 890d522f475Smrg#if OPT_TOOLBAR 891d522f475Smrg w = select_menu(w, mainMenu)->w; 892d522f475Smrg#endif 893e39b573cSmrg /* 894e39b573cSmrg * The action procedure in SimpleMenu.c, PositionMenu does not expect a 895e39b573cSmrg * key translation event when we are popping up a menu. In particular, 896e39b573cSmrg * if the pointer is outside the menu, then the action procedure will 897e39b573cSmrg * fail in its attempt to determine the location of the pointer within 898e39b573cSmrg * the menu. Anticipate that by warping the pointer into the menu when 899e39b573cSmrg * a key event is detected. 900e39b573cSmrg */ 901e39b573cSmrg switch (event->type) { 902e39b573cSmrg case KeyPress: 903e39b573cSmrg case KeyRelease: 904e39b573cSmrg XWarpPointer(screen->display, None, XtWindow(w), 0, 0, 0, 0, 0, 0); 905e39b573cSmrg break; 906e39b573cSmrg default: 907e39b573cSmrg XtCallActionProc(w, "XawPositionSimpleMenu", event, params, 1); 908e39b573cSmrg break; 909e39b573cSmrg } 910d522f475Smrg XtCallActionProc(w, "MenuPopup", event, params, 1); 911d522f475Smrg } 912d522f475Smrg} 913d522f475Smrg 914d522f475Smrg/* 915d522f475Smrg * private interfaces - keep out! 916d522f475Smrg */ 917d522f475Smrg 918d522f475Smrg/* ARGSUSED */ 919d522f475Smrgstatic void 920d522f475Smrghandle_send_signal(Widget gw GCC_UNUSED, int sig) 921d522f475Smrg{ 922d522f475Smrg#ifndef VMS 923d522f475Smrg TScreen *screen = TScreenOf(term); 924d522f475Smrg 925d522f475Smrg if (hold_screen > 1) 926d522f475Smrg hold_screen = 0; 927d522f475Smrg if (screen->pid > 1) 928d522f475Smrg kill_process_group(screen->pid, sig); 929d522f475Smrg#endif 930d522f475Smrg} 931d522f475Smrg 932a1f3da82Smrgstatic void 933a1f3da82SmrgUpdateMenuItem( 934a1f3da82Smrg#if OPT_TRACE 935a1f3da82Smrg const char *func, 936a1f3da82Smrg#endif 937a1f3da82Smrg MenuEntry * menu, 938a1f3da82Smrg int which, 939a1f3da82Smrg Bool val) 940a1f3da82Smrg{ 941a1f3da82Smrg static Arg menuArgs = 942a1f3da82Smrg {XtNleftBitmap, (XtArgVal) 0}; 943a1f3da82Smrg Widget mi = menu[which].widget; 944a1f3da82Smrg 945a1f3da82Smrg if (mi) { 946a1f3da82Smrg menuArgs.value = (XtArgVal) ((val) 947a1f3da82Smrg ? TScreenOf(term)->menu_item_bitmap 948a1f3da82Smrg : None); 949a1f3da82Smrg XtSetValues(mi, &menuArgs, (Cardinal) 1); 950a1f3da82Smrg } 951a1f3da82Smrg TRACE(("%s(%d): %s\n", func, which, BtoS(val))); 952a1f3da82Smrg} 953a1f3da82Smrg 954a1f3da82Smrgvoid 955a1f3da82SmrgSetItemSensitivity(Widget mi, Bool val) 956a1f3da82Smrg{ 957a1f3da82Smrg static Arg menuArgs = 958a1f3da82Smrg {XtNsensitive, (XtArgVal) 0}; 959a1f3da82Smrg 960a1f3da82Smrg if (mi) { 961a1f3da82Smrg menuArgs.value = (XtArgVal) (val); 962a1f3da82Smrg XtSetValues(mi, &menuArgs, (Cardinal) 1); 963a1f3da82Smrg } 964a1f3da82Smrg} 965a1f3da82Smrg 966d522f475Smrg/* 967d522f475Smrg * action routines 968d522f475Smrg */ 969d522f475Smrg 970d522f475Smrgstatic void 971d522f475Smrgdo_securekbd(Widget gw GCC_UNUSED, 972d522f475Smrg XtPointer closure GCC_UNUSED, 973d522f475Smrg XtPointer data GCC_UNUSED) 974d522f475Smrg{ 97520d2c4d2Smrg XtermWidget xw = term; 97620d2c4d2Smrg TScreen *screen = TScreenOf(xw); 977d522f475Smrg Time now = CurrentTime; /* XXX - wrong */ 978d522f475Smrg 979d522f475Smrg if (screen->grabbedKbd) { 980d522f475Smrg XUngrabKeyboard(screen->display, now); 98120d2c4d2Smrg ReverseVideo(xw); 982d522f475Smrg screen->grabbedKbd = False; 983d522f475Smrg } else { 984d522f475Smrg if (XGrabKeyboard(screen->display, XtWindow(CURRENT_EMU()), 985d522f475Smrg True, GrabModeAsync, GrabModeAsync, now) 986d522f475Smrg != GrabSuccess) { 98720d2c4d2Smrg Bell(xw, XkbBI_MinorError, 100); 988d522f475Smrg } else { 98920d2c4d2Smrg ReverseVideo(xw); 990d522f475Smrg screen->grabbedKbd = True; 991d522f475Smrg } 992d522f475Smrg } 993d522f475Smrg update_securekbd(); 994d522f475Smrg} 995d522f475Smrg 996d522f475Smrg/* ARGSUSED */ 997d522f475Smrgvoid 998d522f475SmrgHandleSecure(Widget w GCC_UNUSED, 999d522f475Smrg XEvent * event GCC_UNUSED, /* unused */ 1000d522f475Smrg String * params GCC_UNUSED, /* [0] = volume */ 1001d522f475Smrg Cardinal *param_count GCC_UNUSED) /* 0 or 1 */ 1002d522f475Smrg{ 1003d522f475Smrg#if 0 1004d522f475Smrg Time ev_time = CurrentTime; 1005d522f475Smrg 1006d522f475Smrg if ((event->xany.type == KeyPress) || 1007d522f475Smrg (event->xany.type == KeyRelease)) 1008d522f475Smrg ev_time = event->xkey.time; 1009d522f475Smrg else if ((event->xany.type == ButtonPress) || 1010d522f475Smrg (event->xany.type == ButtonRelease)) 1011d522f475Smrg ev_time = event->xbutton.time; 1012d522f475Smrg#endif 1013d522f475Smrg do_securekbd(vt_shell[mainMenu].w, (XtPointer) 0, (XtPointer) 0); 1014d522f475Smrg} 1015d522f475Smrg 1016d522f475Smrgstatic void 1017d522f475Smrgdo_allowsends(Widget gw GCC_UNUSED, 1018d522f475Smrg XtPointer closure GCC_UNUSED, 1019d522f475Smrg XtPointer data GCC_UNUSED) 1020d522f475Smrg{ 1021d522f475Smrg TScreen *screen = TScreenOf(term); 1022d522f475Smrg 1023956cc18dSsnj ToggleFlag(screen->allowSendEvents); 1024d522f475Smrg update_allowsends(); 1025956cc18dSsnj#if OPT_ALLOW_XXX_OPS 1026956cc18dSsnj enable_allow_xxx_ops(!(screen->allowSendEvents)); 1027956cc18dSsnj#endif 1028d522f475Smrg} 1029d522f475Smrg 1030d522f475Smrgstatic void 1031d522f475Smrgdo_visualbell(Widget gw GCC_UNUSED, 1032d522f475Smrg XtPointer closure GCC_UNUSED, 1033d522f475Smrg XtPointer data GCC_UNUSED) 1034d522f475Smrg{ 1035d522f475Smrg TScreen *screen = TScreenOf(term); 1036d522f475Smrg 1037956cc18dSsnj ToggleFlag(screen->visualbell); 1038d522f475Smrg update_visualbell(); 1039d522f475Smrg} 1040d522f475Smrg 1041d522f475Smrgstatic void 1042d522f475Smrgdo_bellIsUrgent(Widget gw GCC_UNUSED, 1043d522f475Smrg XtPointer closure GCC_UNUSED, 1044d522f475Smrg XtPointer data GCC_UNUSED) 1045d522f475Smrg{ 1046d522f475Smrg TScreen *screen = TScreenOf(term); 1047d522f475Smrg 1048956cc18dSsnj ToggleFlag(screen->bellIsUrgent); 1049d522f475Smrg update_bellIsUrgent(); 1050d522f475Smrg} 1051d522f475Smrg 1052d522f475Smrgstatic void 1053d522f475Smrgdo_poponbell(Widget gw GCC_UNUSED, 1054d522f475Smrg XtPointer closure GCC_UNUSED, 1055d522f475Smrg XtPointer data GCC_UNUSED) 1056d522f475Smrg{ 1057d522f475Smrg TScreen *screen = TScreenOf(term); 1058d522f475Smrg 1059956cc18dSsnj ToggleFlag(screen->poponbell); 1060d522f475Smrg update_poponbell(); 1061d522f475Smrg} 1062d522f475Smrg 1063d522f475Smrg#ifdef ALLOWLOGGING 1064d522f475Smrgstatic void 1065d522f475Smrgdo_logging(Widget gw GCC_UNUSED, 1066d522f475Smrg XtPointer closure GCC_UNUSED, 1067d522f475Smrg XtPointer data GCC_UNUSED) 1068d522f475Smrg{ 106920d2c4d2Smrg XtermWidget xw = term; 107020d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1071d522f475Smrg 1072d522f475Smrg if (screen->logging) { 107320d2c4d2Smrg CloseLog(xw); 1074d522f475Smrg } else { 107520d2c4d2Smrg StartLog(xw); 1076d522f475Smrg } 1077d522f475Smrg /* update_logging done by CloseLog and StartLog */ 1078d522f475Smrg} 1079d522f475Smrg#endif 1080d522f475Smrg 1081e39b573cSmrg#ifdef OPT_PRINT_ON_EXIT 1082e39b573cSmrgstatic void 1083e39b573cSmrgdo_write_now(Widget gw GCC_UNUSED, 1084e39b573cSmrg XtPointer closure GCC_UNUSED, 1085e39b573cSmrg XtPointer data GCC_UNUSED) 1086e39b573cSmrg{ 1087e39b573cSmrg XtermWidget xw = term; 1088e39b573cSmrg 1089e39b573cSmrg xtermPrintImmediately(xw, 1090e39b573cSmrg (IsEmpty(resource.printFileNow) 1091e39b573cSmrg ? "XTerm" 1092e39b573cSmrg : resource.printFileNow), 1093e39b573cSmrg resource.printOptsNow, 1094e39b573cSmrg resource.printModeNow); 1095e39b573cSmrg} 1096e39b573cSmrg 1097e39b573cSmrgstatic void 1098e39b573cSmrgdo_write_error(Widget gw GCC_UNUSED, 1099e39b573cSmrg XtPointer closure GCC_UNUSED, 1100e39b573cSmrg XtPointer data GCC_UNUSED) 1101e39b573cSmrg{ 1102e39b573cSmrg XtermWidget xw = term; 1103e39b573cSmrg 1104e39b573cSmrg if (IsEmpty(resource.printFileOnXError)) { 1105e39b573cSmrg resource.printFileOnXError = "XTermError"; 1106e39b573cSmrg } 1107e39b573cSmrg TScreenOf(xw)->write_error = (Boolean) (!TScreenOf(xw)->write_error); 1108e39b573cSmrg update_write_error(); 1109e39b573cSmrg} 1110e39b573cSmrg#endif 1111e39b573cSmrg 1112d522f475Smrgstatic void 1113d522f475Smrgdo_print(Widget gw GCC_UNUSED, 1114d522f475Smrg XtPointer closure GCC_UNUSED, 1115d522f475Smrg XtPointer data GCC_UNUSED) 1116d522f475Smrg{ 111720d2c4d2Smrg xtermPrintScreen(term, True, getPrinterFlags(term, NULL, 0)); 1118d522f475Smrg} 1119d522f475Smrg 1120d522f475Smrgstatic void 1121d522f475Smrgdo_print_redir(Widget gw GCC_UNUSED, 1122d522f475Smrg XtPointer closure GCC_UNUSED, 1123d522f475Smrg XtPointer data GCC_UNUSED) 1124d522f475Smrg{ 1125e39b573cSmrg setPrinterControlMode(term, 1126e39b573cSmrg (PrinterOf(TScreenOf(term)).printer_controlmode 1127e39b573cSmrg ? 0 1128e39b573cSmrg : 2)); 1129d522f475Smrg} 1130d522f475Smrg 1131d522f475Smrgstatic void 1132d522f475Smrgdo_redraw(Widget gw GCC_UNUSED, 1133d522f475Smrg XtPointer closure GCC_UNUSED, 1134d522f475Smrg XtPointer data GCC_UNUSED) 1135d522f475Smrg{ 1136d522f475Smrg Redraw(); 1137d522f475Smrg} 1138d522f475Smrg 1139d522f475Smrgvoid 1140d522f475Smrgshow_8bit_control(Bool value) 1141d522f475Smrg{ 114220d2c4d2Smrg if (TScreenOf(term)->control_eight_bits != value) { 114320d2c4d2Smrg TScreenOf(term)->control_eight_bits = (Boolean) value; 1144d522f475Smrg update_8bit_control(); 1145d522f475Smrg } 1146d522f475Smrg} 1147d522f475Smrg 1148d522f475Smrgstatic void 1149d522f475Smrgdo_8bit_control(Widget gw GCC_UNUSED, 1150d522f475Smrg XtPointer closure GCC_UNUSED, 1151d522f475Smrg XtPointer data GCC_UNUSED) 1152d522f475Smrg{ 115320d2c4d2Smrg show_8bit_control(!TScreenOf(term)->control_eight_bits); 1154d522f475Smrg} 1155d522f475Smrg 1156d522f475Smrgstatic void 1157d522f475Smrgdo_backarrow(Widget gw GCC_UNUSED, 1158d522f475Smrg XtPointer closure GCC_UNUSED, 1159d522f475Smrg XtPointer data GCC_UNUSED) 1160d522f475Smrg{ 1161d522f475Smrg term->keyboard.flags ^= MODE_DECBKM; 1162d522f475Smrg update_decbkm(); 1163d522f475Smrg} 1164d522f475Smrg 1165d522f475Smrg#if OPT_NUM_LOCK 1166d522f475Smrgstatic void 1167d522f475Smrgdo_num_lock(Widget gw GCC_UNUSED, 1168d522f475Smrg XtPointer closure GCC_UNUSED, 1169d522f475Smrg XtPointer data GCC_UNUSED) 1170d522f475Smrg{ 1171956cc18dSsnj ToggleFlag(term->misc.real_NumLock); 1172d522f475Smrg update_num_lock(); 1173d522f475Smrg} 1174d522f475Smrg 1175d522f475Smrgstatic void 1176d522f475Smrgdo_alt_esc(Widget gw GCC_UNUSED, 1177d522f475Smrg XtPointer closure GCC_UNUSED, 1178d522f475Smrg XtPointer data GCC_UNUSED) 1179d522f475Smrg{ 118020d2c4d2Smrg ToggleFlag(TScreenOf(term)->alt_sends_esc); 1181d522f475Smrg update_alt_esc(); 1182d522f475Smrg} 1183d522f475Smrg 1184d522f475Smrgstatic void 1185d522f475Smrgdo_meta_esc(Widget gw GCC_UNUSED, 1186d522f475Smrg XtPointer closure GCC_UNUSED, 1187d522f475Smrg XtPointer data GCC_UNUSED) 1188d522f475Smrg{ 118920d2c4d2Smrg ToggleFlag(TScreenOf(term)->meta_sends_esc); 1190d522f475Smrg update_meta_esc(); 1191d522f475Smrg} 1192d522f475Smrg#endif 1193d522f475Smrg 1194d522f475Smrgstatic void 1195d522f475Smrgdo_delete_del(Widget gw GCC_UNUSED, 1196d522f475Smrg XtPointer closure GCC_UNUSED, 1197d522f475Smrg XtPointer data GCC_UNUSED) 1198d522f475Smrg{ 1199d522f475Smrg if (xtermDeleteIsDEL(term)) 120020d2c4d2Smrg TScreenOf(term)->delete_is_del = False; 1201d522f475Smrg else 120220d2c4d2Smrg TScreenOf(term)->delete_is_del = True; 1203d522f475Smrg update_delete_del(); 1204d522f475Smrg} 1205d522f475Smrg 1206d522f475Smrgstatic void 1207d522f475Smrgdo_old_fkeys(Widget gw GCC_UNUSED, 1208d522f475Smrg XtPointer closure GCC_UNUSED, 1209d522f475Smrg XtPointer data GCC_UNUSED) 1210d522f475Smrg{ 1211d522f475Smrg toggle_keyboard_type(term, keyboardIsLegacy); 1212d522f475Smrg} 1213d522f475Smrg 1214d522f475Smrg#if OPT_HP_FUNC_KEYS 1215d522f475Smrgstatic void 1216d522f475Smrgdo_hp_fkeys(Widget gw GCC_UNUSED, 1217d522f475Smrg XtPointer closure GCC_UNUSED, 1218d522f475Smrg XtPointer data GCC_UNUSED) 1219d522f475Smrg{ 1220d522f475Smrg toggle_keyboard_type(term, keyboardIsHP); 1221d522f475Smrg} 1222d522f475Smrg#endif 1223d522f475Smrg 1224d522f475Smrg#if OPT_SCO_FUNC_KEYS 1225d522f475Smrgstatic void 1226d522f475Smrgdo_sco_fkeys(Widget gw GCC_UNUSED, 1227d522f475Smrg XtPointer closure GCC_UNUSED, 1228d522f475Smrg XtPointer data GCC_UNUSED) 1229d522f475Smrg{ 1230d522f475Smrg toggle_keyboard_type(term, keyboardIsSCO); 1231d522f475Smrg} 1232d522f475Smrg#endif 1233d522f475Smrg 1234d522f475Smrg#if OPT_SUN_FUNC_KEYS 1235d522f475Smrgstatic void 1236d522f475Smrgdo_sun_fkeys(Widget gw GCC_UNUSED, 1237d522f475Smrg XtPointer closure GCC_UNUSED, 1238d522f475Smrg XtPointer data GCC_UNUSED) 1239d522f475Smrg{ 1240d522f475Smrg toggle_keyboard_type(term, keyboardIsSun); 1241d522f475Smrg} 1242d522f475Smrg#endif 1243d522f475Smrg 1244d522f475Smrg#if OPT_SUNPC_KBD 1245d522f475Smrg/* 1246d522f475Smrg * This really means "Sun/PC keyboard emulating VT220". 1247d522f475Smrg */ 1248d522f475Smrgstatic void 1249d522f475Smrgdo_sun_kbd(Widget gw GCC_UNUSED, 1250d522f475Smrg XtPointer closure GCC_UNUSED, 1251d522f475Smrg XtPointer data GCC_UNUSED) 1252d522f475Smrg{ 1253d522f475Smrg toggle_keyboard_type(term, keyboardIsVT220); 1254d522f475Smrg} 1255d522f475Smrg#endif 1256d522f475Smrg 1257d522f475Smrg#if OPT_TCAP_FKEYS 1258d522f475Smrgstatic void 1259d522f475Smrgdo_tcap_fkeys(Widget gw GCC_UNUSED, 1260d522f475Smrg XtPointer closure GCC_UNUSED, 1261d522f475Smrg XtPointer data GCC_UNUSED) 1262d522f475Smrg{ 1263d522f475Smrg toggle_keyboard_type(term, keyboardIsTermcap); 1264d522f475Smrg} 1265d522f475Smrg#endif 1266d522f475Smrg 1267d522f475Smrg/* 1268d522f475Smrg * The following cases use the pid instead of the process group so that we 1269d522f475Smrg * don't get hosed by programs that change their process group 1270d522f475Smrg */ 1271d522f475Smrg 1272d522f475Smrg/* ARGSUSED */ 1273d522f475Smrgstatic void 1274d522f475Smrgdo_suspend(Widget gw, 1275d522f475Smrg XtPointer closure GCC_UNUSED, 1276d522f475Smrg XtPointer data GCC_UNUSED) 1277d522f475Smrg{ 1278d522f475Smrg#if defined(SIGTSTP) 1279d522f475Smrg handle_send_signal(gw, SIGTSTP); 1280d522f475Smrg#endif 1281d522f475Smrg} 1282d522f475Smrg 1283d522f475Smrg/* ARGSUSED */ 1284d522f475Smrgstatic void 1285d522f475Smrgdo_continue(Widget gw, 1286d522f475Smrg XtPointer closure GCC_UNUSED, 1287d522f475Smrg XtPointer data GCC_UNUSED) 1288d522f475Smrg{ 1289d522f475Smrg#if defined(SIGCONT) 1290d522f475Smrg handle_send_signal(gw, SIGCONT); 1291d522f475Smrg#endif 1292d522f475Smrg} 1293d522f475Smrg 1294d522f475Smrg/* ARGSUSED */ 1295d522f475Smrgstatic void 1296d522f475Smrgdo_interrupt(Widget gw, 1297d522f475Smrg XtPointer closure GCC_UNUSED, 1298d522f475Smrg XtPointer data GCC_UNUSED) 1299d522f475Smrg{ 1300d522f475Smrg handle_send_signal(gw, SIGINT); 1301d522f475Smrg} 1302d522f475Smrg 1303d522f475Smrg/* ARGSUSED */ 1304d522f475Smrgvoid 1305d522f475Smrgdo_hangup(Widget gw, 1306d522f475Smrg XtPointer closure GCC_UNUSED, 1307d522f475Smrg XtPointer data GCC_UNUSED) 1308d522f475Smrg{ 1309d522f475Smrg handle_send_signal(gw, SIGHUP); 1310d522f475Smrg} 1311d522f475Smrg 1312d522f475Smrg/* ARGSUSED */ 1313d522f475Smrgstatic void 1314d522f475Smrgdo_terminate(Widget gw, 1315d522f475Smrg XtPointer closure GCC_UNUSED, 1316d522f475Smrg XtPointer data GCC_UNUSED) 1317d522f475Smrg{ 1318d522f475Smrg handle_send_signal(gw, SIGTERM); 1319d522f475Smrg} 1320d522f475Smrg 1321d522f475Smrg/* ARGSUSED */ 1322d522f475Smrgstatic void 1323d522f475Smrgdo_kill(Widget gw, 1324d522f475Smrg XtPointer closure GCC_UNUSED, 1325d522f475Smrg XtPointer data GCC_UNUSED) 1326d522f475Smrg{ 1327d522f475Smrg handle_send_signal(gw, SIGKILL); 1328d522f475Smrg} 1329d522f475Smrg 1330d522f475Smrgstatic void 1331d522f475Smrgdo_quit(Widget gw GCC_UNUSED, 1332d522f475Smrg XtPointer closure GCC_UNUSED, 1333d522f475Smrg XtPointer data GCC_UNUSED) 1334d522f475Smrg{ 1335d522f475Smrg Cleanup(SIGHUP); 1336d522f475Smrg} 1337d522f475Smrg 1338d522f475Smrg/* 1339d522f475Smrg * vt menu callbacks 1340d522f475Smrg */ 1341d522f475Smrg 1342d522f475Smrgstatic void 1343d522f475Smrgdo_scrollbar(Widget gw GCC_UNUSED, 1344d522f475Smrg XtPointer closure GCC_UNUSED, 1345d522f475Smrg XtPointer data GCC_UNUSED) 1346d522f475Smrg{ 1347d522f475Smrg ToggleScrollBar(term); 1348d522f475Smrg} 1349d522f475Smrg 1350d522f475Smrgstatic void 1351d522f475Smrgdo_jumpscroll(Widget gw GCC_UNUSED, 1352d522f475Smrg XtPointer closure GCC_UNUSED, 1353d522f475Smrg XtPointer data GCC_UNUSED) 1354d522f475Smrg{ 1355d522f475Smrg TScreen *screen = TScreenOf(term); 1356d522f475Smrg 1357d522f475Smrg term->flags ^= SMOOTHSCROLL; 1358d522f475Smrg if (term->flags & SMOOTHSCROLL) { 1359d522f475Smrg screen->jumpscroll = False; 1360d522f475Smrg if (screen->scroll_amt) 1361d522f475Smrg FlushScroll(term); 1362d522f475Smrg } else { 1363d522f475Smrg screen->jumpscroll = True; 1364d522f475Smrg } 1365d522f475Smrg update_jumpscroll(); 1366d522f475Smrg} 1367d522f475Smrg 1368d522f475Smrgstatic void 1369d522f475Smrgdo_reversevideo(Widget gw GCC_UNUSED, 1370d522f475Smrg XtPointer closure GCC_UNUSED, 1371d522f475Smrg XtPointer data GCC_UNUSED) 1372d522f475Smrg{ 1373d522f475Smrg ReverseVideo(term); 1374d522f475Smrg} 1375d522f475Smrg 1376d522f475Smrgstatic void 1377d522f475Smrgdo_autowrap(Widget gw GCC_UNUSED, 1378d522f475Smrg XtPointer closure GCC_UNUSED, 1379d522f475Smrg XtPointer data GCC_UNUSED) 1380d522f475Smrg{ 1381d522f475Smrg term->flags ^= WRAPAROUND; 1382d522f475Smrg update_autowrap(); 1383d522f475Smrg} 1384d522f475Smrg 1385d522f475Smrgstatic void 1386d522f475Smrgdo_reversewrap(Widget gw GCC_UNUSED, 1387d522f475Smrg XtPointer closure GCC_UNUSED, 1388d522f475Smrg XtPointer data GCC_UNUSED) 1389d522f475Smrg{ 1390d522f475Smrg term->flags ^= REVERSEWRAP; 1391d522f475Smrg update_reversewrap(); 1392d522f475Smrg} 1393d522f475Smrg 1394d522f475Smrgstatic void 1395d522f475Smrgdo_autolinefeed(Widget gw GCC_UNUSED, 1396d522f475Smrg XtPointer closure GCC_UNUSED, 1397d522f475Smrg XtPointer data GCC_UNUSED) 1398d522f475Smrg{ 1399d522f475Smrg term->flags ^= LINEFEED; 1400d522f475Smrg update_autolinefeed(); 1401d522f475Smrg} 1402d522f475Smrg 1403d522f475Smrgstatic void 1404d522f475Smrgdo_appcursor(Widget gw GCC_UNUSED, 1405d522f475Smrg XtPointer closure GCC_UNUSED, 1406d522f475Smrg XtPointer data GCC_UNUSED) 1407d522f475Smrg{ 1408d522f475Smrg term->keyboard.flags ^= MODE_DECCKM; 1409d522f475Smrg update_appcursor(); 1410d522f475Smrg} 1411d522f475Smrg 1412d522f475Smrgstatic void 1413d522f475Smrgdo_appkeypad(Widget gw GCC_UNUSED, 1414d522f475Smrg XtPointer closure GCC_UNUSED, 1415d522f475Smrg XtPointer data GCC_UNUSED) 1416d522f475Smrg{ 1417d522f475Smrg term->keyboard.flags ^= MODE_DECKPAM; 1418d522f475Smrg update_appkeypad(); 1419d522f475Smrg} 1420d522f475Smrg 1421d522f475Smrgstatic void 1422d522f475Smrgdo_scrollkey(Widget gw GCC_UNUSED, 1423d522f475Smrg XtPointer closure GCC_UNUSED, 1424d522f475Smrg XtPointer data GCC_UNUSED) 1425d522f475Smrg{ 1426d522f475Smrg TScreen *screen = TScreenOf(term); 1427d522f475Smrg 1428956cc18dSsnj ToggleFlag(screen->scrollkey); 1429d522f475Smrg update_scrollkey(); 1430d522f475Smrg} 1431d522f475Smrg 1432d522f475Smrgstatic void 1433d522f475Smrgdo_scrollttyoutput(Widget gw GCC_UNUSED, 1434d522f475Smrg XtPointer closure GCC_UNUSED, 1435d522f475Smrg XtPointer data GCC_UNUSED) 1436d522f475Smrg{ 1437d522f475Smrg TScreen *screen = TScreenOf(term); 1438d522f475Smrg 1439956cc18dSsnj ToggleFlag(screen->scrollttyoutput); 1440d522f475Smrg update_scrollttyoutput(); 1441d522f475Smrg} 1442d522f475Smrg 1443d522f475Smrgstatic void 1444d522f475Smrgdo_keepSelection(Widget gw GCC_UNUSED, 1445d522f475Smrg XtPointer closure GCC_UNUSED, 1446d522f475Smrg XtPointer data GCC_UNUSED) 1447d522f475Smrg{ 1448d522f475Smrg TScreen *screen = TScreenOf(term); 1449d522f475Smrg 1450956cc18dSsnj ToggleFlag(screen->keepSelection); 1451d522f475Smrg update_keepSelection(); 1452d522f475Smrg} 1453d522f475Smrg 1454d522f475Smrgstatic void 1455d522f475Smrgdo_selectClipboard(Widget gw GCC_UNUSED, 1456d522f475Smrg XtPointer closure GCC_UNUSED, 1457d522f475Smrg XtPointer data GCC_UNUSED) 1458d522f475Smrg{ 1459d522f475Smrg TScreen *screen = TScreenOf(term); 1460d522f475Smrg 1461956cc18dSsnj ToggleFlag(screen->selectToClipboard); 1462d522f475Smrg update_selectToClipboard(); 1463d522f475Smrg} 1464d522f475Smrg 1465d522f475Smrgstatic void 1466d522f475Smrgdo_allow132(Widget gw GCC_UNUSED, 1467d522f475Smrg XtPointer closure GCC_UNUSED, 1468d522f475Smrg XtPointer data GCC_UNUSED) 1469d522f475Smrg{ 1470d522f475Smrg TScreen *screen = TScreenOf(term); 1471d522f475Smrg 1472956cc18dSsnj ToggleFlag(screen->c132); 1473d522f475Smrg update_allow132(); 1474d522f475Smrg} 1475d522f475Smrg 1476d522f475Smrgstatic void 1477d522f475Smrgdo_cursesemul(Widget gw GCC_UNUSED, 1478d522f475Smrg XtPointer closure GCC_UNUSED, 1479d522f475Smrg XtPointer data GCC_UNUSED) 1480d522f475Smrg{ 1481d522f475Smrg TScreen *screen = TScreenOf(term); 1482d522f475Smrg 1483956cc18dSsnj ToggleFlag(screen->curses); 1484d522f475Smrg update_cursesemul(); 1485d522f475Smrg} 1486d522f475Smrg 1487d522f475Smrgstatic void 1488d522f475Smrgdo_marginbell(Widget gw GCC_UNUSED, 1489d522f475Smrg XtPointer closure GCC_UNUSED, 1490d522f475Smrg XtPointer data GCC_UNUSED) 1491d522f475Smrg{ 1492d522f475Smrg TScreen *screen = TScreenOf(term); 1493d522f475Smrg 1494a1f3da82Smrg if ((ToggleFlag(screen->marginbell)) == 0) 149520d2c4d2Smrg screen->bellArmed = -1; 1496d522f475Smrg update_marginbell(); 1497d522f475Smrg} 1498d522f475Smrg 1499d522f475Smrg#if OPT_TEK4014 1500d522f475Smrgstatic void 1501d522f475Smrghandle_tekshow(Widget gw GCC_UNUSED, Bool allowswitch) 1502d522f475Smrg{ 150320d2c4d2Smrg XtermWidget xw = term; 150420d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1505d522f475Smrg 1506d522f475Smrg TRACE(("Show tek-window\n")); 150720d2c4d2Smrg if (!TEK4014_SHOWN(xw)) { /* not showing, turn on */ 1508d522f475Smrg set_tek_visibility(True); 1509d522f475Smrg } else if (screen->Vshow || allowswitch) { /* is showing, turn off */ 1510d522f475Smrg set_tek_visibility(False); 1511d522f475Smrg end_tek_mode(); /* WARNING: this does a longjmp */ 1512d522f475Smrg } else 151320d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1514d522f475Smrg} 1515d522f475Smrg 1516d522f475Smrg/* ARGSUSED */ 1517d522f475Smrgstatic void 1518d522f475Smrgdo_tekshow(Widget gw, 1519d522f475Smrg XtPointer closure GCC_UNUSED, 1520d522f475Smrg XtPointer data GCC_UNUSED) 1521d522f475Smrg{ 1522d522f475Smrg handle_tekshow(gw, True); 1523d522f475Smrg} 1524d522f475Smrg 1525d522f475Smrg/* ARGSUSED */ 1526d522f475Smrgstatic void 1527d522f475Smrgdo_tekonoff(Widget gw, 1528d522f475Smrg XtPointer closure GCC_UNUSED, 1529d522f475Smrg XtPointer data GCC_UNUSED) 1530d522f475Smrg{ 1531d522f475Smrg handle_tekshow(gw, False); 1532d522f475Smrg} 1533d522f475Smrg#endif /* OPT_TEK4014 */ 1534d522f475Smrg 1535d522f475Smrg#if OPT_BLINK_CURS 1536d522f475Smrg/* ARGSUSED */ 1537d522f475Smrgstatic void 1538d522f475Smrgdo_cursorblink(Widget gw GCC_UNUSED, 1539d522f475Smrg XtPointer closure GCC_UNUSED, 1540d522f475Smrg XtPointer data GCC_UNUSED) 1541d522f475Smrg{ 1542d522f475Smrg TScreen *screen = TScreenOf(term); 1543d522f475Smrg ToggleCursorBlink(screen); 1544d522f475Smrg} 1545d522f475Smrg#endif 1546d522f475Smrg 1547d522f475Smrg/* ARGSUSED */ 1548d522f475Smrgstatic void 1549d522f475Smrgdo_altscreen(Widget gw GCC_UNUSED, 1550d522f475Smrg XtPointer closure GCC_UNUSED, 1551d522f475Smrg XtPointer data GCC_UNUSED) 1552d522f475Smrg{ 1553d522f475Smrg ToggleAlternate(term); 1554d522f475Smrg} 1555d522f475Smrg 1556d522f475Smrg/* ARGSUSED */ 1557d522f475Smrgstatic void 1558d522f475Smrgdo_titeInhibit(Widget gw GCC_UNUSED, 1559d522f475Smrg XtPointer closure GCC_UNUSED, 1560d522f475Smrg XtPointer data GCC_UNUSED) 1561d522f475Smrg{ 1562956cc18dSsnj ToggleFlag(term->misc.titeInhibit); 1563d522f475Smrg update_titeInhibit(); 1564d522f475Smrg} 1565d522f475Smrg 1566d522f475Smrg#ifndef NO_ACTIVE_ICON 1567d522f475Smrg/* ARGSUSED */ 1568d522f475Smrgstatic void 1569d522f475Smrgdo_activeicon(Widget gw GCC_UNUSED, 1570d522f475Smrg XtPointer closure GCC_UNUSED, 1571d522f475Smrg XtPointer data GCC_UNUSED) 1572d522f475Smrg{ 1573d522f475Smrg TScreen *screen = TScreenOf(term); 1574d522f475Smrg 1575d522f475Smrg if (screen->iconVwin.window) { 1576d522f475Smrg Widget shell = XtParent(term); 15770bd37d32Smrg ToggleFlag(term->work.active_icon); 1578d522f475Smrg XtVaSetValues(shell, XtNiconWindow, 15790bd37d32Smrg term->work.active_icon ? screen->iconVwin.window : None, 1580d522f475Smrg (XtPointer) 0); 1581d522f475Smrg update_activeicon(); 1582d522f475Smrg } 1583d522f475Smrg} 1584d522f475Smrg#endif /* NO_ACTIVE_ICON */ 1585d522f475Smrg 1586d522f475Smrgstatic void 1587d522f475Smrgdo_softreset(Widget gw GCC_UNUSED, 1588d522f475Smrg XtPointer closure GCC_UNUSED, 1589d522f475Smrg XtPointer data GCC_UNUSED) 1590d522f475Smrg{ 1591d522f475Smrg VTReset(term, False, False); 1592d522f475Smrg} 1593d522f475Smrg 1594d522f475Smrgstatic void 1595d522f475Smrgdo_hardreset(Widget gw GCC_UNUSED, 1596d522f475Smrg XtPointer closure GCC_UNUSED, 1597d522f475Smrg XtPointer data GCC_UNUSED) 1598d522f475Smrg{ 1599d522f475Smrg VTReset(term, True, False); 1600d522f475Smrg} 1601d522f475Smrg 1602d522f475Smrgstatic void 1603d522f475Smrgdo_clearsavedlines(Widget gw GCC_UNUSED, 1604d522f475Smrg XtPointer closure GCC_UNUSED, 1605d522f475Smrg XtPointer data GCC_UNUSED) 1606d522f475Smrg{ 1607d522f475Smrg VTReset(term, True, True); 1608d522f475Smrg} 1609d522f475Smrg 1610d522f475Smrg#if OPT_TEK4014 1611d522f475Smrgstatic void 1612d522f475Smrgdo_tekmode(Widget gw GCC_UNUSED, 1613d522f475Smrg XtPointer closure GCC_UNUSED, 1614d522f475Smrg XtPointer data GCC_UNUSED) 1615d522f475Smrg{ 1616d522f475Smrg switch_modes(TEK4014_ACTIVE(term)); /* switch to tek mode */ 1617d522f475Smrg} 1618d522f475Smrg 1619d522f475Smrg/* ARGSUSED */ 1620d522f475Smrgstatic void 1621d522f475Smrgdo_vthide(Widget gw GCC_UNUSED, 1622d522f475Smrg XtPointer closure GCC_UNUSED, 1623d522f475Smrg XtPointer data GCC_UNUSED) 1624d522f475Smrg{ 1625d522f475Smrg hide_vt_window(); 1626d522f475Smrg} 1627d522f475Smrg#endif /* OPT_TEK4014 */ 1628d522f475Smrg 1629d522f475Smrg/* 1630d522f475Smrg * vtfont menu 1631d522f475Smrg */ 1632d522f475Smrg 1633d522f475Smrgstatic void 1634d522f475Smrgdo_vtfont(Widget gw GCC_UNUSED, 1635d522f475Smrg XtPointer closure, 1636d522f475Smrg XtPointer data GCC_UNUSED) 1637d522f475Smrg{ 163820d2c4d2Smrg XtermWidget xw = term; 1639d522f475Smrg char *entryname = (char *) closure; 1640d522f475Smrg int i; 1641d522f475Smrg 16420bd37d32Smrg TRACE(("do_vtfont(%s)\n", entryname)); 1643d522f475Smrg for (i = 0; i < NMENUFONTS; i++) { 1644d522f475Smrg if (strcmp(entryname, fontMenuEntries[i].name) == 0) { 164520d2c4d2Smrg SetVTFont(xw, i, True, NULL); 1646d522f475Smrg return; 1647d522f475Smrg } 1648d522f475Smrg } 164920d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1650d522f475Smrg} 1651d522f475Smrg 1652d522f475Smrg#if OPT_DEC_CHRSET 1653d522f475Smrgstatic void 1654d522f475Smrgdo_font_doublesize(Widget gw GCC_UNUSED, 1655d522f475Smrg XtPointer closure GCC_UNUSED, 1656d522f475Smrg XtPointer data GCC_UNUSED) 1657d522f475Smrg{ 165820d2c4d2Smrg XtermWidget xw = term; 165920d2c4d2Smrg 166020d2c4d2Smrg if (TScreenOf(xw)->cache_doublesize != 0) 166120d2c4d2Smrg ToggleFlag(TScreenOf(xw)->font_doublesize); 1662d522f475Smrg update_font_doublesize(); 1663d522f475Smrg Redraw(); 1664d522f475Smrg} 1665d522f475Smrg#endif 1666d522f475Smrg 1667d522f475Smrg#if OPT_BOX_CHARS 1668d522f475Smrgstatic void 1669d522f475Smrgdo_font_boxchars(Widget gw GCC_UNUSED, 1670d522f475Smrg XtPointer closure GCC_UNUSED, 1671d522f475Smrg XtPointer data GCC_UNUSED) 1672d522f475Smrg{ 167320d2c4d2Smrg ToggleFlag(TScreenOf(term)->force_box_chars); 1674d522f475Smrg update_font_boxchars(); 1675d522f475Smrg Redraw(); 1676d522f475Smrg} 167720d2c4d2Smrg 167820d2c4d2Smrgstatic void 167920d2c4d2Smrgdo_font_packed(Widget gw GCC_UNUSED, 168020d2c4d2Smrg XtPointer closure GCC_UNUSED, 168120d2c4d2Smrg XtPointer data GCC_UNUSED) 168220d2c4d2Smrg{ 168320d2c4d2Smrg ToggleFlag(TScreenOf(term)->force_packed); 168420d2c4d2Smrg update_font_packed(); 168520d2c4d2Smrg SetVTFont(term, TScreenOf(term)->menu_font_number, True, NULL); 168620d2c4d2Smrg} 1687d522f475Smrg#endif 1688d522f475Smrg 1689d522f475Smrg#if OPT_DEC_SOFTFONT 1690d522f475Smrgstatic void 1691d522f475Smrgdo_font_loadable(Widget gw GCC_UNUSED, 1692d522f475Smrg XtPointer closure GCC_UNUSED, 1693d522f475Smrg XtPointer data GCC_UNUSED) 1694d522f475Smrg{ 1695956cc18dSsnj ToggleFlag(term->misc.font_loadable); 1696d522f475Smrg update_font_loadable(); 1697d522f475Smrg} 1698d522f475Smrg#endif 1699d522f475Smrg 1700d522f475Smrg#if OPT_RENDERFONT 1701d522f475Smrgstatic void 1702d522f475Smrgdo_font_renderfont(Widget gw GCC_UNUSED, 1703d522f475Smrg XtPointer closure GCC_UNUSED, 1704d522f475Smrg XtPointer data GCC_UNUSED) 1705d522f475Smrg{ 170620d2c4d2Smrg XtermWidget xw = (XtermWidget) term; 170720d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1708d522f475Smrg int fontnum = screen->menu_font_number; 170920d2c4d2Smrg String name = TScreenOf(xw)->MenuFontName(fontnum); 1710d522f475Smrg 171120d2c4d2Smrg DefaultRenderFont(xw); 17120bd37d32Smrg ToggleFlag(xw->work.render_font); 1713d522f475Smrg update_font_renderfont(); 171420d2c4d2Smrg xtermLoadFont(xw, xtermFontName(name), True, fontnum); 1715d522f475Smrg ScrnRefresh(term, 0, 0, 1716d522f475Smrg MaxRows(screen), 1717d522f475Smrg MaxCols(screen), True); 1718d522f475Smrg} 1719d522f475Smrg#endif 1720d522f475Smrg 1721d522f475Smrg#if OPT_WIDE_CHARS 1722e39b573cSmrgstatic void 1723e39b573cSmrgsetup_wide_fonts(XtermWidget xw) 1724e39b573cSmrg{ 1725e39b573cSmrg TScreen *screen = TScreenOf(xw); 1726e39b573cSmrg 1727e39b573cSmrg if (screen->wide_chars) { 1728e39b573cSmrg if (xtermLoadWideFonts(xw, True)) { 1729e39b573cSmrg SetVTFont(xw, screen->menu_font_number, True, NULL); 1730e39b573cSmrg } 1731e39b573cSmrg } else { 1732e39b573cSmrg ChangeToWide(xw); 1733e39b573cSmrg } 1734e39b573cSmrg} 1735e39b573cSmrg 1736e39b573cSmrgstatic void 1737e39b573cSmrgsetup_narrow_fonts(XtermWidget xw) 1738e39b573cSmrg{ 1739e39b573cSmrg TScreen *screen = TScreenOf(xw); 1740e39b573cSmrg 1741e39b573cSmrg if (xtermLoadDefaultFonts(xw)) { 1742e39b573cSmrg SetVTFont(xw, screen->menu_font_number, True, NULL); 1743e39b573cSmrg } 1744e39b573cSmrg} 1745e39b573cSmrg 1746d522f475Smrgstatic void 1747d522f475Smrgdo_font_utf8_mode(Widget gw GCC_UNUSED, 1748d522f475Smrg XtPointer closure GCC_UNUSED, 1749d522f475Smrg XtPointer data GCC_UNUSED) 1750d522f475Smrg{ 1751e39b573cSmrg XtermWidget xw = term; 1752e39b573cSmrg TScreen *screen = TScreenOf(xw); 1753d522f475Smrg 1754d522f475Smrg /* 1755d522f475Smrg * If xterm was started with -wc option, it might not have the wide fonts. 1756d522f475Smrg * If xterm was not started with -wc, it might not have wide cells. 1757d522f475Smrg */ 1758d522f475Smrg if (!screen->utf8_mode) { 1759e39b573cSmrg setup_wide_fonts(xw); 1760d522f475Smrg } 1761d522f475Smrg switchPtyData(screen, !screen->utf8_mode); 1762d522f475Smrg /* 1763d522f475Smrg * We don't repaint the screen when switching UTF-8 on/off. When switching 1764d522f475Smrg * on - the Latin-1 codes should paint as-is. When switching off, that's 1765d522f475Smrg * hard to do properly. 1766d522f475Smrg */ 1767d522f475Smrg} 1768d522f475Smrg 1769e39b573cSmrgstatic void 1770e39b573cSmrgdo_font_utf8_fonts(Widget gw GCC_UNUSED, 1771e39b573cSmrg XtPointer closure GCC_UNUSED, 1772e39b573cSmrg XtPointer data GCC_UNUSED) 1773e39b573cSmrg{ 1774e39b573cSmrg XtermWidget xw = term; 1775e39b573cSmrg TScreen *screen = TScreenOf(xw); 1776e39b573cSmrg 1777e39b573cSmrg ToggleFlag(screen->utf8_fonts); 1778e39b573cSmrg update_font_utf8_fonts(); 1779e39b573cSmrg 1780e39b573cSmrg if (screen->utf8_fonts) { 1781e39b573cSmrg setup_wide_fonts(xw); 1782e39b573cSmrg } else { 1783e39b573cSmrg setup_narrow_fonts(xw); 1784e39b573cSmrg } 1785e39b573cSmrg} 1786e39b573cSmrg 1787d522f475Smrgstatic void 1788d522f475Smrgdo_font_utf8_title(Widget gw GCC_UNUSED, 1789d522f475Smrg XtPointer closure GCC_UNUSED, 1790d522f475Smrg XtPointer data GCC_UNUSED) 1791d522f475Smrg{ 1792d522f475Smrg TScreen *screen = TScreenOf(term); 1793d522f475Smrg 1794956cc18dSsnj ToggleFlag(screen->utf8_title); 1795d522f475Smrg update_font_utf8_title(); 1796d522f475Smrg} 1797d522f475Smrg#endif 1798d522f475Smrg 1799d522f475Smrg/* 1800d522f475Smrg * tek menu 1801d522f475Smrg */ 1802d522f475Smrg 1803d522f475Smrg#if OPT_TEK4014 1804d522f475Smrgstatic void 1805956cc18dSsnjdo_tektextlarge(Widget gw, 1806d522f475Smrg XtPointer closure GCC_UNUSED, 1807d522f475Smrg XtPointer data GCC_UNUSED) 1808d522f475Smrg{ 1809956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektextlarge); 1810d522f475Smrg} 1811d522f475Smrg 1812d522f475Smrgstatic void 1813956cc18dSsnjdo_tektext2(Widget gw, 1814d522f475Smrg XtPointer closure GCC_UNUSED, 1815d522f475Smrg XtPointer data GCC_UNUSED) 1816d522f475Smrg{ 1817956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektext2); 1818d522f475Smrg} 1819d522f475Smrg 1820d522f475Smrgstatic void 1821956cc18dSsnjdo_tektext3(Widget gw, 1822d522f475Smrg XtPointer closure GCC_UNUSED, 1823d522f475Smrg XtPointer data GCC_UNUSED) 1824d522f475Smrg{ 1825956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektext3); 1826d522f475Smrg} 1827d522f475Smrg 1828d522f475Smrgstatic void 1829956cc18dSsnjdo_tektextsmall(Widget gw, 1830d522f475Smrg XtPointer closure GCC_UNUSED, 1831d522f475Smrg XtPointer data GCC_UNUSED) 1832d522f475Smrg{ 1833956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektextsmall); 1834d522f475Smrg} 1835d522f475Smrg 1836d522f475Smrgstatic void 1837956cc18dSsnjdo_tekpage(Widget gw, 1838d522f475Smrg XtPointer closure GCC_UNUSED, 1839d522f475Smrg XtPointer data GCC_UNUSED) 1840d522f475Smrg{ 1841956cc18dSsnj TekSimulatePageButton(getTekWidget(gw), False); 1842d522f475Smrg} 1843d522f475Smrg 1844d522f475Smrgstatic void 1845956cc18dSsnjdo_tekreset(Widget gw, 1846d522f475Smrg XtPointer closure GCC_UNUSED, 1847d522f475Smrg XtPointer data GCC_UNUSED) 1848d522f475Smrg{ 1849956cc18dSsnj TekSimulatePageButton(getTekWidget(gw), True); 1850d522f475Smrg} 1851d522f475Smrg 1852d522f475Smrgstatic void 1853956cc18dSsnjdo_tekcopy(Widget gw, 1854d522f475Smrg XtPointer closure GCC_UNUSED, 1855d522f475Smrg XtPointer data GCC_UNUSED) 1856d522f475Smrg{ 1857956cc18dSsnj TekCopy(getTekWidget(gw)); 1858d522f475Smrg} 1859d522f475Smrg 1860d522f475Smrgstatic void 1861d522f475Smrghandle_vtshow(Widget gw GCC_UNUSED, Bool allowswitch) 1862d522f475Smrg{ 186320d2c4d2Smrg XtermWidget xw = term; 186420d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1865d522f475Smrg 1866d522f475Smrg TRACE(("Show vt-window\n")); 1867d522f475Smrg if (!screen->Vshow) { /* not showing, turn on */ 1868d522f475Smrg set_vt_visibility(True); 186920d2c4d2Smrg } else if (TEK4014_SHOWN(xw) || allowswitch) { /* is showing, turn off */ 1870d522f475Smrg set_vt_visibility(False); 187120d2c4d2Smrg if (!TEK4014_ACTIVE(xw) && tekRefreshList) 1872d522f475Smrg TekRefresh(tekWidget); 1873d522f475Smrg end_vt_mode(); /* WARNING: this does a longjmp... */ 1874d522f475Smrg } else 187520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1876d522f475Smrg} 1877d522f475Smrg 1878d522f475Smrgstatic void 1879d522f475Smrgdo_vtshow(Widget gw, 1880d522f475Smrg XtPointer closure GCC_UNUSED, 1881d522f475Smrg XtPointer data GCC_UNUSED) 1882d522f475Smrg{ 1883d522f475Smrg handle_vtshow(gw, True); 1884d522f475Smrg} 1885d522f475Smrg 1886d522f475Smrgstatic void 1887d522f475Smrgdo_vtonoff(Widget gw, 1888d522f475Smrg XtPointer closure GCC_UNUSED, 1889d522f475Smrg XtPointer data GCC_UNUSED) 1890d522f475Smrg{ 1891d522f475Smrg handle_vtshow(gw, False); 1892d522f475Smrg} 1893d522f475Smrg 1894d522f475Smrgstatic void 1895d522f475Smrgdo_vtmode(Widget gw GCC_UNUSED, 1896d522f475Smrg XtPointer closure GCC_UNUSED, 1897d522f475Smrg XtPointer data GCC_UNUSED) 1898d522f475Smrg{ 1899d522f475Smrg switch_modes(TEK4014_ACTIVE(term)); /* switch to vt, or from */ 1900d522f475Smrg} 1901d522f475Smrg 1902d522f475Smrg/* ARGSUSED */ 1903d522f475Smrgstatic void 1904d522f475Smrgdo_tekhide(Widget gw GCC_UNUSED, 1905d522f475Smrg XtPointer closure GCC_UNUSED, 1906d522f475Smrg XtPointer data GCC_UNUSED) 1907d522f475Smrg{ 1908d522f475Smrg hide_tek_window(); 1909d522f475Smrg} 1910d522f475Smrg#endif /* OPT_TEK4014 */ 1911d522f475Smrg 1912d522f475Smrg/* 1913d522f475Smrg * public handler routines 1914d522f475Smrg */ 19150bd37d32Smrgint 19160bd37d32SmrgdecodeToggle(XtermWidget xw, String * params, Cardinal nparams) 1917d522f475Smrg{ 19180bd37d32Smrg int dir = toggleErr; 1919d522f475Smrg 1920d522f475Smrg switch (nparams) { 1921d522f475Smrg case 0: 19220bd37d32Smrg dir = toggleAll; 1923d522f475Smrg break; 1924d522f475Smrg case 1: 1925d522f475Smrg if (XmuCompareISOLatin1(params[0], "on") == 0) 19260bd37d32Smrg dir = toggleOn; 1927d522f475Smrg else if (XmuCompareISOLatin1(params[0], "off") == 0) 19280bd37d32Smrg dir = toggleOff; 1929d522f475Smrg else if (XmuCompareISOLatin1(params[0], "toggle") == 0) 19300bd37d32Smrg dir = toggleAll; 1931d522f475Smrg break; 1932d522f475Smrg } 1933d522f475Smrg 19340bd37d32Smrg if (dir == toggleErr) { 193520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 19360bd37d32Smrg } 19370bd37d32Smrg 19380bd37d32Smrg return dir; 19390bd37d32Smrg} 1940d522f475Smrg 19410bd37d32Smrgstatic void 19420bd37d32Smrghandle_toggle(void (*proc) PROTO_XT_CALLBACK_ARGS, 19430bd37d32Smrg int var, 19440bd37d32Smrg String * params, 19450bd37d32Smrg Cardinal nparams, 19460bd37d32Smrg Widget w, 19470bd37d32Smrg XtPointer closure, 19480bd37d32Smrg XtPointer data) 19490bd37d32Smrg{ 19500bd37d32Smrg XtermWidget xw = term; 19510bd37d32Smrg 19520bd37d32Smrg switch (decodeToggle(xw, params, nparams)) { 19530bd37d32Smrg 19540bd37d32Smrg case toggleAll: 1955d522f475Smrg (*proc) (w, closure, data); 1956d522f475Smrg break; 1957d522f475Smrg 19580bd37d32Smrg case toggleOff: 1959d522f475Smrg if (var) 1960d522f475Smrg (*proc) (w, closure, data); 1961d522f475Smrg else 196220d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1963d522f475Smrg break; 1964d522f475Smrg 19650bd37d32Smrg case toggleOn: 1966d522f475Smrg if (!var) 1967d522f475Smrg (*proc) (w, closure, data); 1968d522f475Smrg else 196920d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1970d522f475Smrg break; 1971d522f475Smrg } 1972d522f475Smrg return; 1973d522f475Smrg} 1974d522f475Smrg 1975d522f475Smrg#define handle_vt_toggle(proc, var, params, nparams, w) \ 1976d522f475Smrg handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0) 1977d522f475Smrg 197820d2c4d2Smrg#define HANDLE_VT_TOGGLE(name) \ 197920d2c4d2Smrg handle_vt_toggle(do_##name, TScreenOf(term)->name, params, *param_count, w) 198020d2c4d2Smrg 1981d522f475Smrg#define handle_tek_toggle(proc, var, params, nparams, w) \ 1982d522f475Smrg handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0) 1983d522f475Smrg 1984d522f475Smrgvoid 1985d522f475SmrgHandleAllowSends(Widget w, 1986d522f475Smrg XEvent * event GCC_UNUSED, 1987d522f475Smrg String * params, 1988d522f475Smrg Cardinal *param_count) 1989d522f475Smrg{ 199020d2c4d2Smrg handle_vt_toggle(do_allowsends, TScreenOf(term)->allowSendEvents, 1991d522f475Smrg params, *param_count, w); 1992d522f475Smrg} 1993d522f475Smrg 1994d522f475Smrgvoid 1995d522f475SmrgHandleSetVisualBell(Widget w, 1996d522f475Smrg XEvent * event GCC_UNUSED, 1997d522f475Smrg String * params, 1998d522f475Smrg Cardinal *param_count) 1999d522f475Smrg{ 200020d2c4d2Smrg HANDLE_VT_TOGGLE(visualbell); 2001d522f475Smrg} 2002d522f475Smrg 2003d522f475Smrgvoid 2004d522f475SmrgHandleSetPopOnBell(Widget w, 2005d522f475Smrg XEvent * event GCC_UNUSED, 2006d522f475Smrg String * params, 2007d522f475Smrg Cardinal *param_count) 2008d522f475Smrg{ 200920d2c4d2Smrg HANDLE_VT_TOGGLE(poponbell); 2010d522f475Smrg} 2011d522f475Smrg 2012d522f475Smrg#ifdef ALLOWLOGGING 2013d522f475Smrgvoid 2014d522f475SmrgHandleLogging(Widget w, 2015d522f475Smrg XEvent * event GCC_UNUSED, 2016d522f475Smrg String * params, 2017d522f475Smrg Cardinal *param_count) 2018d522f475Smrg{ 201920d2c4d2Smrg HANDLE_VT_TOGGLE(logging); 2020d522f475Smrg} 2021d522f475Smrg#endif 2022d522f475Smrg 2023e39b573cSmrg#if OPT_PRINT_ON_EXIT 2024e39b573cSmrgvoid 2025e39b573cSmrgHandleWriteNow(Widget w, 2026e39b573cSmrg XEvent * event GCC_UNUSED, 2027e39b573cSmrg String * params GCC_UNUSED, 2028e39b573cSmrg Cardinal *param_count GCC_UNUSED) 2029e39b573cSmrg{ 2030e39b573cSmrg do_write_now(w, 0, 0); 2031e39b573cSmrg} 2032e39b573cSmrg 2033e39b573cSmrgvoid 2034e39b573cSmrgHandleWriteError(Widget w, 2035e39b573cSmrg XEvent * event GCC_UNUSED, 2036e39b573cSmrg String * params, 2037e39b573cSmrg Cardinal *param_count) 2038e39b573cSmrg{ 2039e39b573cSmrg HANDLE_VT_TOGGLE(write_error); 2040e39b573cSmrg} 2041e39b573cSmrg#endif 2042e39b573cSmrg 2043d522f475Smrg/* ARGSUSED */ 2044d522f475Smrgvoid 204520d2c4d2SmrgHandlePrintScreen(Widget w GCC_UNUSED, 2046d522f475Smrg XEvent * event GCC_UNUSED, 2047d522f475Smrg String * params GCC_UNUSED, 2048d522f475Smrg Cardinal *param_count GCC_UNUSED) 2049d522f475Smrg{ 205020d2c4d2Smrg xtermPrintScreen(term, True, getPrinterFlags(term, params, param_count)); 2051d522f475Smrg} 2052d522f475Smrg 2053956cc18dSsnj/* ARGSUSED */ 2054956cc18dSsnjvoid 205520d2c4d2SmrgHandlePrintEverything(Widget w GCC_UNUSED, 2056956cc18dSsnj XEvent * event GCC_UNUSED, 205720d2c4d2Smrg String * params, 205820d2c4d2Smrg Cardinal *param_count) 2059956cc18dSsnj{ 206020d2c4d2Smrg xtermPrintEverything(term, getPrinterFlags(term, params, param_count)); 2061956cc18dSsnj} 2062956cc18dSsnj 2063d522f475Smrg/* ARGSUSED */ 2064d522f475Smrgvoid 2065d522f475SmrgHandlePrintControlMode(Widget w, 2066d522f475Smrg XEvent * event GCC_UNUSED, 2067d522f475Smrg String * params GCC_UNUSED, 2068d522f475Smrg Cardinal *param_count GCC_UNUSED) 2069d522f475Smrg{ 2070d522f475Smrg do_print_redir(w, (XtPointer) 0, (XtPointer) 0); 2071d522f475Smrg} 2072d522f475Smrg 2073d522f475Smrg/* ARGSUSED */ 2074d522f475Smrgvoid 2075d522f475SmrgHandleRedraw(Widget w, 2076d522f475Smrg XEvent * event GCC_UNUSED, 2077d522f475Smrg String * params GCC_UNUSED, 2078d522f475Smrg Cardinal *param_count GCC_UNUSED) 2079d522f475Smrg{ 2080d522f475Smrg do_redraw(w, (XtPointer) 0, (XtPointer) 0); 2081d522f475Smrg} 2082d522f475Smrg 2083d522f475Smrg/* ARGSUSED */ 2084d522f475Smrgvoid 2085d522f475SmrgHandleSendSignal(Widget w, 2086d522f475Smrg XEvent * event GCC_UNUSED, 2087d522f475Smrg String * params, 2088d522f475Smrg Cardinal *param_count) 2089d522f475Smrg{ 2090d522f475Smrg /* *INDENT-OFF* */ 2091d522f475Smrg static struct sigtab { 209220d2c4d2Smrg const char *name; 2093d522f475Smrg int sig; 2094d522f475Smrg } signals[] = { 2095d522f475Smrg#ifdef SIGTSTP 2096d522f475Smrg { "suspend", SIGTSTP }, 2097d522f475Smrg { "tstp", SIGTSTP }, 2098d522f475Smrg#endif 2099d522f475Smrg#ifdef SIGCONT 2100d522f475Smrg { "cont", SIGCONT }, 2101d522f475Smrg#endif 2102d522f475Smrg { "int", SIGINT }, 2103d522f475Smrg { "hup", SIGHUP }, 2104d522f475Smrg { "quit", SIGQUIT }, 2105d522f475Smrg { "alrm", SIGALRM }, 2106d522f475Smrg { "alarm", SIGALRM }, 2107d522f475Smrg { "term", SIGTERM }, 2108d522f475Smrg { "kill", SIGKILL }, 2109d522f475Smrg { NULL, 0 }, 2110d522f475Smrg }; 2111d522f475Smrg /* *INDENT-ON* */ 2112d522f475Smrg 2113d522f475Smrg if (*param_count == 1) { 2114d522f475Smrg struct sigtab *st; 2115d522f475Smrg 2116d522f475Smrg for (st = signals; st->name; st++) { 2117d522f475Smrg if (XmuCompareISOLatin1(st->name, params[0]) == 0) { 2118d522f475Smrg handle_send_signal(w, st->sig); 2119d522f475Smrg return; 2120d522f475Smrg } 2121d522f475Smrg } 2122d522f475Smrg /* one could allow numeric values, but that would be a security hole */ 2123d522f475Smrg } 2124d522f475Smrg 212520d2c4d2Smrg Bell(term, XkbBI_MinorError, 0); 2126d522f475Smrg} 2127d522f475Smrg 2128d522f475Smrg/* ARGSUSED */ 2129d522f475Smrgvoid 2130d522f475SmrgHandleQuit(Widget w, 2131d522f475Smrg XEvent * event GCC_UNUSED, 2132d522f475Smrg String * params GCC_UNUSED, 2133d522f475Smrg Cardinal *param_count GCC_UNUSED) 2134d522f475Smrg{ 2135d522f475Smrg do_quit(w, (XtPointer) 0, (XtPointer) 0); 2136d522f475Smrg} 2137d522f475Smrg 2138d522f475Smrgvoid 2139d522f475SmrgHandle8BitControl(Widget w, 2140d522f475Smrg XEvent * event GCC_UNUSED, 2141d522f475Smrg String * params, 2142d522f475Smrg Cardinal *param_count) 2143d522f475Smrg{ 214420d2c4d2Smrg handle_vt_toggle(do_8bit_control, TScreenOf(term)->control_eight_bits, 2145d522f475Smrg params, *param_count, w); 2146d522f475Smrg} 2147d522f475Smrg 2148d522f475Smrgvoid 2149d522f475SmrgHandleBackarrow(Widget w, 2150d522f475Smrg XEvent * event GCC_UNUSED, 2151d522f475Smrg String * params, 2152d522f475Smrg Cardinal *param_count) 2153d522f475Smrg{ 2154d522f475Smrg handle_vt_toggle(do_backarrow, term->keyboard.flags & MODE_DECBKM, 2155d522f475Smrg params, *param_count, w); 2156d522f475Smrg} 2157d522f475Smrg 21580bd37d32Smrg#if OPT_MAXIMIZE 21590bd37d32Smrg#if OPT_TEK4014 21600bd37d32Smrg#define WhichEWMH (TEK4014_ACTIVE(xw) != 0) 21610bd37d32Smrg#else 21620bd37d32Smrg#define WhichEWMH 0 21630bd37d32Smrg#endif 21640bd37d32Smrgstatic void 21650bd37d32Smrgdo_fullscreen(Widget gw GCC_UNUSED, 21660bd37d32Smrg XtPointer closure GCC_UNUSED, 21670bd37d32Smrg XtPointer data GCC_UNUSED) 21680bd37d32Smrg{ 21690bd37d32Smrg XtermWidget xw = term; 21700bd37d32Smrg 21710bd37d32Smrg if (resource.fullscreen != esNever) 21720bd37d32Smrg FullScreen(xw, !xw->work.ewmh[WhichEWMH].mode); 21730bd37d32Smrg} 21740bd37d32Smrg 21750bd37d32Smrg/* ARGSUSED */ 21760bd37d32Smrgvoid 21770bd37d32SmrgHandleFullscreen(Widget w, 21780bd37d32Smrg XEvent * event GCC_UNUSED, 21790bd37d32Smrg String * params GCC_UNUSED, 21800bd37d32Smrg Cardinal *param_count GCC_UNUSED) 21810bd37d32Smrg{ 21820bd37d32Smrg XtermWidget xw = term; 21830bd37d32Smrg 21840bd37d32Smrg if (resource.fullscreen != esNever) { 21850bd37d32Smrg handle_vt_toggle(do_fullscreen, xw->work.ewmh[WhichEWMH].mode, 21860bd37d32Smrg params, *param_count, w); 21870bd37d32Smrg } 21880bd37d32Smrg} 21890bd37d32Smrg 21900bd37d32Smrgvoid 21910bd37d32Smrgupdate_fullscreen(void) 21920bd37d32Smrg{ 21930bd37d32Smrg XtermWidget xw = term; 21940bd37d32Smrg 21950bd37d32Smrg if (resource.fullscreen <= 1) { 21960bd37d32Smrg UpdateCheckbox("update_fullscreen", 21970bd37d32Smrg mainMenuEntries, 21980bd37d32Smrg mainMenu_fullscreen, 21990bd37d32Smrg xw->work.ewmh[WhichEWMH].mode); 22000bd37d32Smrg } else { 22010bd37d32Smrg SetItemSensitivity(mainMenuEntries[mainMenu_fullscreen].widget, 22020bd37d32Smrg False); 22030bd37d32Smrg } 22040bd37d32Smrg} 22050bd37d32Smrg 22060bd37d32Smrg#endif /* OPT_MAXIMIZE */ 22070bd37d32Smrg 2208d522f475Smrg#if OPT_SUN_FUNC_KEYS 2209d522f475Smrgvoid 2210d522f475SmrgHandleSunFunctionKeys(Widget w, 2211d522f475Smrg XEvent * event GCC_UNUSED, 2212d522f475Smrg String * params, 2213d522f475Smrg Cardinal *param_count) 2214d522f475Smrg{ 2215d522f475Smrg handle_vt_toggle(do_sun_fkeys, term->keyboard.type == keyboardIsSun, 2216d522f475Smrg params, *param_count, w); 2217d522f475Smrg} 2218d522f475Smrg#endif 2219d522f475Smrg 2220d522f475Smrg#if OPT_NUM_LOCK 2221d522f475Smrgvoid 2222d522f475SmrgHandleNumLock(Widget w, 2223d522f475Smrg XEvent * event GCC_UNUSED, 2224d522f475Smrg String * params, 2225d522f475Smrg Cardinal *param_count) 2226d522f475Smrg{ 2227d522f475Smrg handle_vt_toggle(do_num_lock, term->misc.real_NumLock, 2228d522f475Smrg params, *param_count, w); 2229d522f475Smrg} 2230d522f475Smrg 2231d522f475Smrgvoid 2232d522f475SmrgHandleAltEsc(Widget w, 2233d522f475Smrg XEvent * event GCC_UNUSED, 2234d522f475Smrg String * params, 2235d522f475Smrg Cardinal *param_count) 2236d522f475Smrg{ 22370bd37d32Smrg handle_vt_toggle(do_alt_esc, !TScreenOf(term)->alt_sends_esc, 2238d522f475Smrg params, *param_count, w); 2239d522f475Smrg} 2240d522f475Smrg 2241d522f475Smrgvoid 2242d522f475SmrgHandleMetaEsc(Widget w, 2243d522f475Smrg XEvent * event GCC_UNUSED, 2244d522f475Smrg String * params, 2245d522f475Smrg Cardinal *param_count) 2246d522f475Smrg{ 224720d2c4d2Smrg handle_vt_toggle(do_meta_esc, TScreenOf(term)->meta_sends_esc, 2248d522f475Smrg params, *param_count, w); 2249d522f475Smrg} 2250d522f475Smrg#endif 2251d522f475Smrg 2252d522f475Smrgvoid 2253d522f475SmrgHandleDeleteIsDEL(Widget w, 2254d522f475Smrg XEvent * event GCC_UNUSED, 2255d522f475Smrg String * params, 2256d522f475Smrg Cardinal *param_count) 2257d522f475Smrg{ 225820d2c4d2Smrg handle_vt_toggle(do_delete_del, TScreenOf(term)->delete_is_del, 2259d522f475Smrg params, *param_count, w); 2260d522f475Smrg} 2261d522f475Smrg 2262d522f475Smrgvoid 2263d522f475SmrgHandleOldFunctionKeys(Widget w, 2264d522f475Smrg XEvent * event GCC_UNUSED, 2265d522f475Smrg String * params, 2266d522f475Smrg Cardinal *param_count) 2267d522f475Smrg{ 2268d522f475Smrg handle_vt_toggle(do_old_fkeys, term->keyboard.type == keyboardIsLegacy, 2269d522f475Smrg params, *param_count, w); 2270d522f475Smrg} 2271d522f475Smrg 2272d522f475Smrg#if OPT_SUNPC_KBD 2273d522f475Smrgvoid 2274d522f475SmrgHandleSunKeyboard(Widget w, 2275d522f475Smrg XEvent * event GCC_UNUSED, 2276d522f475Smrg String * params, 2277d522f475Smrg Cardinal *param_count) 2278d522f475Smrg{ 2279d522f475Smrg handle_vt_toggle(do_sun_kbd, term->keyboard.type == keyboardIsVT220, 2280d522f475Smrg params, *param_count, w); 2281d522f475Smrg} 2282d522f475Smrg#endif 2283d522f475Smrg 2284d522f475Smrg#if OPT_HP_FUNC_KEYS 2285d522f475Smrgvoid 2286d522f475SmrgHandleHpFunctionKeys(Widget w, 2287d522f475Smrg XEvent * event GCC_UNUSED, 2288d522f475Smrg String * params, 2289d522f475Smrg Cardinal *param_count) 2290d522f475Smrg{ 2291d522f475Smrg handle_vt_toggle(do_hp_fkeys, term->keyboard.type == keyboardIsHP, 2292d522f475Smrg params, *param_count, w); 2293d522f475Smrg} 2294d522f475Smrg#endif 2295d522f475Smrg 2296d522f475Smrg#if OPT_SCO_FUNC_KEYS 2297d522f475Smrgvoid 2298d522f475SmrgHandleScoFunctionKeys(Widget w, 2299d522f475Smrg XEvent * event GCC_UNUSED, 2300d522f475Smrg String * params, 2301d522f475Smrg Cardinal *param_count) 2302d522f475Smrg{ 2303d522f475Smrg handle_vt_toggle(do_sco_fkeys, term->keyboard.type == keyboardIsSCO, 2304d522f475Smrg params, *param_count, w); 2305d522f475Smrg} 2306d522f475Smrg#endif 2307d522f475Smrg 2308d522f475Smrgvoid 2309d522f475SmrgHandleScrollbar(Widget w, 2310d522f475Smrg XEvent * event GCC_UNUSED, 2311d522f475Smrg String * params, 2312d522f475Smrg Cardinal *param_count) 2313d522f475Smrg{ 231420d2c4d2Smrg XtermWidget xw = term; 231520d2c4d2Smrg 231620d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 231720d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2318d522f475Smrg } else { 231920d2c4d2Smrg handle_vt_toggle(do_scrollbar, TScreenOf(xw)->fullVwin.sb_info.width, 2320d522f475Smrg params, *param_count, w); 2321d522f475Smrg } 2322d522f475Smrg} 2323d522f475Smrg 2324d522f475Smrgvoid 2325d522f475SmrgHandleJumpscroll(Widget w, 2326d522f475Smrg XEvent * event GCC_UNUSED, 2327d522f475Smrg String * params, 2328d522f475Smrg Cardinal *param_count) 2329d522f475Smrg{ 233020d2c4d2Smrg HANDLE_VT_TOGGLE(jumpscroll); 2331d522f475Smrg} 2332d522f475Smrg 2333d522f475Smrgvoid 2334d522f475SmrgHandleKeepSelection(Widget w, 2335d522f475Smrg XEvent * event GCC_UNUSED, 2336d522f475Smrg String * params, 2337d522f475Smrg Cardinal *param_count) 2338d522f475Smrg{ 233920d2c4d2Smrg HANDLE_VT_TOGGLE(keepSelection); 2340d522f475Smrg} 2341d522f475Smrg 2342d522f475Smrgvoid 2343d522f475SmrgHandleSetSelect(Widget w, 2344d522f475Smrg XEvent * event GCC_UNUSED, 2345d522f475Smrg String * params, 2346d522f475Smrg Cardinal *param_count) 2347d522f475Smrg{ 234820d2c4d2Smrg handle_vt_toggle(do_selectClipboard, TScreenOf(term)->selectToClipboard, 2349d522f475Smrg params, *param_count, w); 2350d522f475Smrg} 2351d522f475Smrg 2352d522f475Smrgvoid 2353d522f475SmrgHandleReverseVideo(Widget w, 2354d522f475Smrg XEvent * event GCC_UNUSED, 2355d522f475Smrg String * params, 2356d522f475Smrg Cardinal *param_count) 2357d522f475Smrg{ 2358d522f475Smrg handle_vt_toggle(do_reversevideo, (term->misc.re_verse0), 2359d522f475Smrg params, *param_count, w); 2360d522f475Smrg} 2361d522f475Smrg 2362d522f475Smrgvoid 2363d522f475SmrgHandleAutoWrap(Widget w, 2364d522f475Smrg XEvent * event GCC_UNUSED, 2365d522f475Smrg String * params, 2366d522f475Smrg Cardinal *param_count) 2367d522f475Smrg{ 2368d522f475Smrg handle_vt_toggle(do_autowrap, (term->flags & WRAPAROUND), 2369d522f475Smrg params, *param_count, w); 2370d522f475Smrg} 2371d522f475Smrg 2372d522f475Smrgvoid 2373d522f475SmrgHandleReverseWrap(Widget w, 2374d522f475Smrg XEvent * event GCC_UNUSED, 2375d522f475Smrg String * params, 2376d522f475Smrg Cardinal *param_count) 2377d522f475Smrg{ 2378d522f475Smrg handle_vt_toggle(do_reversewrap, (term->flags & REVERSEWRAP), 2379d522f475Smrg params, *param_count, w); 2380d522f475Smrg} 2381d522f475Smrg 2382d522f475Smrgvoid 2383d522f475SmrgHandleAutoLineFeed(Widget w, 2384d522f475Smrg XEvent * event GCC_UNUSED, 2385d522f475Smrg String * params, 2386d522f475Smrg Cardinal *param_count) 2387d522f475Smrg{ 2388d522f475Smrg handle_vt_toggle(do_autolinefeed, (term->flags & LINEFEED), 2389d522f475Smrg params, *param_count, w); 2390d522f475Smrg} 2391d522f475Smrg 2392d522f475Smrgvoid 2393d522f475SmrgHandleAppCursor(Widget w, 2394d522f475Smrg XEvent * event GCC_UNUSED, 2395d522f475Smrg String * params, 2396d522f475Smrg Cardinal *param_count) 2397d522f475Smrg{ 2398d522f475Smrg handle_vt_toggle(do_appcursor, (term->keyboard.flags & MODE_DECCKM), 2399d522f475Smrg params, *param_count, w); 2400d522f475Smrg} 2401d522f475Smrg 2402d522f475Smrgvoid 2403d522f475SmrgHandleAppKeypad(Widget w, 2404d522f475Smrg XEvent * event GCC_UNUSED, 2405d522f475Smrg String * params, 2406d522f475Smrg Cardinal *param_count) 2407d522f475Smrg{ 2408d522f475Smrg handle_vt_toggle(do_appkeypad, (term->keyboard.flags & MODE_DECKPAM), 2409d522f475Smrg params, *param_count, w); 2410d522f475Smrg} 2411d522f475Smrg 2412d522f475Smrgvoid 2413d522f475SmrgHandleScrollKey(Widget w, 2414d522f475Smrg XEvent * event GCC_UNUSED, 2415d522f475Smrg String * params, 2416d522f475Smrg Cardinal *param_count) 2417d522f475Smrg{ 241820d2c4d2Smrg HANDLE_VT_TOGGLE(scrollkey); 2419d522f475Smrg} 2420d522f475Smrg 2421d522f475Smrgvoid 2422d522f475SmrgHandleScrollTtyOutput(Widget w, 2423d522f475Smrg XEvent * event GCC_UNUSED, 2424d522f475Smrg String * params, 2425d522f475Smrg Cardinal *param_count) 2426d522f475Smrg{ 242720d2c4d2Smrg HANDLE_VT_TOGGLE(scrollttyoutput); 2428d522f475Smrg} 2429d522f475Smrg 2430d522f475Smrgvoid 2431d522f475SmrgHandleAllow132(Widget w, 2432d522f475Smrg XEvent * event GCC_UNUSED, 2433d522f475Smrg String * params, 2434d522f475Smrg Cardinal *param_count) 2435d522f475Smrg{ 243620d2c4d2Smrg handle_vt_toggle(do_allow132, TScreenOf(term)->c132, 2437d522f475Smrg params, *param_count, w); 2438d522f475Smrg} 2439d522f475Smrg 2440d522f475Smrgvoid 2441d522f475SmrgHandleCursesEmul(Widget w, 2442d522f475Smrg XEvent * event GCC_UNUSED, 2443d522f475Smrg String * params, 2444d522f475Smrg Cardinal *param_count) 2445d522f475Smrg{ 244620d2c4d2Smrg handle_vt_toggle(do_cursesemul, TScreenOf(term)->curses, 2447d522f475Smrg params, *param_count, w); 2448d522f475Smrg} 2449d522f475Smrg 2450d522f475Smrgvoid 2451d522f475SmrgHandleBellIsUrgent(Widget w, 2452d522f475Smrg XEvent * event GCC_UNUSED, 2453d522f475Smrg String * params, 2454d522f475Smrg Cardinal *param_count) 2455d522f475Smrg{ 245620d2c4d2Smrg HANDLE_VT_TOGGLE(bellIsUrgent); 2457d522f475Smrg} 2458d522f475Smrg 2459d522f475Smrgvoid 2460d522f475SmrgHandleMarginBell(Widget w, 2461d522f475Smrg XEvent * event GCC_UNUSED, 2462d522f475Smrg String * params, 2463d522f475Smrg Cardinal *param_count) 2464d522f475Smrg{ 246520d2c4d2Smrg HANDLE_VT_TOGGLE(marginbell); 2466d522f475Smrg} 2467d522f475Smrg 2468d522f475Smrg#if OPT_BLINK_CURS 2469d522f475Smrgvoid 2470d522f475SmrgHandleCursorBlink(Widget w, 2471d522f475Smrg XEvent * event GCC_UNUSED, 2472d522f475Smrg String * params, 2473d522f475Smrg Cardinal *param_count) 2474d522f475Smrg{ 2475d522f475Smrg /* eventually want to see if sensitive or not */ 247620d2c4d2Smrg handle_vt_toggle(do_cursorblink, TScreenOf(term)->cursor_blink, 2477d522f475Smrg params, *param_count, w); 2478d522f475Smrg} 2479d522f475Smrg#endif 2480d522f475Smrg 2481d522f475Smrgvoid 2482d522f475SmrgHandleAltScreen(Widget w, 2483d522f475Smrg XEvent * event GCC_UNUSED, 2484d522f475Smrg String * params, 2485d522f475Smrg Cardinal *param_count) 2486d522f475Smrg{ 2487d522f475Smrg /* eventually want to see if sensitive or not */ 248820d2c4d2Smrg handle_vt_toggle(do_altscreen, TScreenOf(term)->whichBuf, 2489d522f475Smrg params, *param_count, w); 2490d522f475Smrg} 2491d522f475Smrg 2492d522f475Smrgvoid 2493d522f475SmrgHandleTiteInhibit(Widget w, 2494d522f475Smrg XEvent * event GCC_UNUSED, 2495d522f475Smrg String * params, 2496d522f475Smrg Cardinal *param_count) 2497d522f475Smrg{ 2498d522f475Smrg /* eventually want to see if sensitive or not */ 2499d522f475Smrg handle_vt_toggle(do_titeInhibit, !(term->misc.titeInhibit), 2500d522f475Smrg params, *param_count, w); 2501d522f475Smrg} 2502d522f475Smrg 2503d522f475Smrg/* ARGSUSED */ 2504d522f475Smrgvoid 2505d522f475SmrgHandleSoftReset(Widget w, 2506d522f475Smrg XEvent * event GCC_UNUSED, 2507d522f475Smrg String * params GCC_UNUSED, 2508d522f475Smrg Cardinal *param_count GCC_UNUSED) 2509d522f475Smrg{ 2510d522f475Smrg do_softreset(w, (XtPointer) 0, (XtPointer) 0); 2511d522f475Smrg} 2512d522f475Smrg 2513d522f475Smrg/* ARGSUSED */ 2514d522f475Smrgvoid 2515d522f475SmrgHandleHardReset(Widget w, 2516d522f475Smrg XEvent * event GCC_UNUSED, 2517d522f475Smrg String * params GCC_UNUSED, 2518d522f475Smrg Cardinal *param_count GCC_UNUSED) 2519d522f475Smrg{ 2520d522f475Smrg do_hardreset(w, (XtPointer) 0, (XtPointer) 0); 2521d522f475Smrg} 2522d522f475Smrg 2523d522f475Smrg/* ARGSUSED */ 2524d522f475Smrgvoid 2525d522f475SmrgHandleClearSavedLines(Widget w, 2526d522f475Smrg XEvent * event GCC_UNUSED, 2527d522f475Smrg String * params GCC_UNUSED, 2528d522f475Smrg Cardinal *param_count GCC_UNUSED) 2529d522f475Smrg{ 2530d522f475Smrg do_clearsavedlines(w, (XtPointer) 0, (XtPointer) 0); 2531d522f475Smrg} 2532d522f475Smrg 2533e39b573cSmrgvoid 2534e39b573cSmrgHandleAllowBoldFonts(Widget w, 2535e39b573cSmrg XEvent * event GCC_UNUSED, 2536e39b573cSmrg String * params, 2537e39b573cSmrg Cardinal *param_count) 2538e39b573cSmrg{ 2539e39b573cSmrg HANDLE_VT_TOGGLE(allowBoldFonts); 2540e39b573cSmrg} 2541e39b573cSmrg 2542d522f475Smrg#if OPT_DEC_CHRSET 2543d522f475Smrgvoid 2544d522f475SmrgHandleFontDoublesize(Widget w, 2545d522f475Smrg XEvent * event GCC_UNUSED, 2546d522f475Smrg String * params, 2547d522f475Smrg Cardinal *param_count) 2548d522f475Smrg{ 254920d2c4d2Smrg HANDLE_VT_TOGGLE(font_doublesize); 2550d522f475Smrg} 2551d522f475Smrg#endif 2552d522f475Smrg 2553d522f475Smrg#if OPT_BOX_CHARS 2554d522f475Smrgvoid 2555d522f475SmrgHandleFontBoxChars(Widget w, 2556d522f475Smrg XEvent * event GCC_UNUSED, 2557d522f475Smrg String * params, 2558d522f475Smrg Cardinal *param_count) 2559d522f475Smrg{ 256020d2c4d2Smrg handle_vt_toggle(do_font_boxchars, TScreenOf(term)->force_box_chars, 256120d2c4d2Smrg params, *param_count, w); 256220d2c4d2Smrg} 256320d2c4d2Smrg 256420d2c4d2Smrgvoid 256520d2c4d2SmrgHandleFontPacked(Widget w, 256620d2c4d2Smrg XEvent * event GCC_UNUSED, 256720d2c4d2Smrg String * params, 256820d2c4d2Smrg Cardinal *param_count) 256920d2c4d2Smrg{ 257020d2c4d2Smrg handle_vt_toggle(do_font_packed, TScreenOf(term)->force_packed, 2571d522f475Smrg params, *param_count, w); 2572d522f475Smrg} 2573d522f475Smrg#endif 2574d522f475Smrg 2575d522f475Smrg#if OPT_DEC_SOFTFONT 2576d522f475Smrgvoid 2577d522f475SmrgHandleFontLoading(Widget w, 2578d522f475Smrg XEvent * event GCC_UNUSED, 2579d522f475Smrg String * params, 2580d522f475Smrg Cardinal *param_count) 2581d522f475Smrg{ 2582d522f475Smrg handle_vt_toggle(do_font_loadable, term->misc.font_loadable, 2583d522f475Smrg params, *param_count, w); 2584d522f475Smrg} 2585d522f475Smrg#endif 2586d522f475Smrg 2587d522f475Smrg#if OPT_RENDERFONT 25880bd37d32Smrgstatic void 25890bd37d32Smrgupdate_fontmenu(XtermWidget xw) 25900bd37d32Smrg{ 25910bd37d32Smrg TScreen *screen = TScreenOf(xw); 25920bd37d32Smrg int n; 25930bd37d32Smrg 25940bd37d32Smrg for (n = 0; n <= fontMenu_lastBuiltin; ++n) { 25950bd37d32Smrg Boolean active = (Boolean) (xw->work.render_font || 25960bd37d32Smrg (screen->menu_font_sizes[n] >= 0)); 25970bd37d32Smrg SetItemSensitivity(fontMenuEntries[n].widget, active); 25980bd37d32Smrg } 25990bd37d32Smrg} 26000bd37d32Smrg 2601d522f475Smrgvoid 2602d522f475SmrgHandleRenderFont(Widget w, 2603d522f475Smrg XEvent * event GCC_UNUSED, 2604d522f475Smrg String * params, 2605d522f475Smrg Cardinal *param_count) 2606d522f475Smrg{ 260720d2c4d2Smrg XtermWidget xw = (XtermWidget) term; 260820d2c4d2Smrg 260920d2c4d2Smrg DefaultRenderFont(xw); 261020d2c4d2Smrg 26110bd37d32Smrg handle_vt_toggle(do_font_renderfont, xw->work.render_font, 2612d522f475Smrg params, *param_count, w); 26130bd37d32Smrg 26140bd37d32Smrg update_fontmenu(xw); 2615d522f475Smrg} 2616d522f475Smrg#endif 2617d522f475Smrg 2618d522f475Smrg#if OPT_WIDE_CHARS 2619d522f475Smrgvoid 2620d522f475SmrgHandleUTF8Mode(Widget w, 2621d522f475Smrg XEvent * event GCC_UNUSED, 2622d522f475Smrg String * params, 2623d522f475Smrg Cardinal *param_count) 2624d522f475Smrg{ 262520d2c4d2Smrg handle_vt_toggle(do_font_utf8_mode, TScreenOf(term)->utf8_mode, 2626d522f475Smrg params, *param_count, w); 2627d522f475Smrg} 2628d522f475Smrg 2629e39b573cSmrgvoid 2630e39b573cSmrgHandleUTF8Fonts(Widget w, 2631e39b573cSmrg XEvent * event GCC_UNUSED, 2632e39b573cSmrg String * params, 2633e39b573cSmrg Cardinal *param_count) 2634e39b573cSmrg{ 2635e39b573cSmrg handle_vt_toggle(do_font_utf8_fonts, TScreenOf(term)->utf8_fonts, 2636e39b573cSmrg params, *param_count, w); 2637e39b573cSmrg} 2638e39b573cSmrg 2639d522f475Smrgvoid 2640d522f475SmrgHandleUTF8Title(Widget w, 2641d522f475Smrg XEvent * event GCC_UNUSED, 2642d522f475Smrg String * params, 2643d522f475Smrg Cardinal *param_count) 2644d522f475Smrg{ 264520d2c4d2Smrg handle_vt_toggle(do_font_utf8_title, TScreenOf(term)->utf8_title, 2646d522f475Smrg params, *param_count, w); 2647d522f475Smrg} 2648d522f475Smrg#endif 2649d522f475Smrg 2650d522f475Smrg#if OPT_TEK4014 2651d522f475Smrgvoid 2652d522f475SmrgHandleSetTerminalType(Widget w, 2653d522f475Smrg XEvent * event GCC_UNUSED, 2654d522f475Smrg String * params, 2655d522f475Smrg Cardinal *param_count) 2656d522f475Smrg{ 265720d2c4d2Smrg XtermWidget xw = term; 265820d2c4d2Smrg 2659d522f475Smrg if (*param_count == 1) { 2660d522f475Smrg switch (params[0][0]) { 2661d522f475Smrg case 'v': 2662d522f475Smrg case 'V': 266320d2c4d2Smrg if (TEK4014_ACTIVE(xw)) 2664d522f475Smrg do_vtmode(w, (XtPointer) 0, (XtPointer) 0); 2665d522f475Smrg break; 2666d522f475Smrg case 't': 2667d522f475Smrg case 'T': 266820d2c4d2Smrg if (!TEK4014_ACTIVE(xw)) 2669d522f475Smrg do_tekmode(w, (XtPointer) 0, (XtPointer) 0); 2670d522f475Smrg break; 2671d522f475Smrg default: 267220d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2673d522f475Smrg } 2674d522f475Smrg } else { 267520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2676d522f475Smrg } 2677d522f475Smrg} 2678d522f475Smrg 2679d522f475Smrgvoid 2680d522f475SmrgHandleVisibility(Widget w, 2681d522f475Smrg XEvent * event GCC_UNUSED, 2682d522f475Smrg String * params, 2683d522f475Smrg Cardinal *param_count) 2684d522f475Smrg{ 268520d2c4d2Smrg XtermWidget xw = term; 268620d2c4d2Smrg 2687d522f475Smrg if (*param_count == 2) { 2688d522f475Smrg switch (params[0][0]) { 2689d522f475Smrg case 'v': 2690d522f475Smrg case 'V': 269120d2c4d2Smrg handle_tek_toggle(do_vtonoff, (int) TScreenOf(xw)->Vshow, 2692d522f475Smrg params + 1, (*param_count) - 1, w); 2693d522f475Smrg break; 2694d522f475Smrg case 't': 2695d522f475Smrg case 'T': 269620d2c4d2Smrg handle_tek_toggle(do_tekonoff, (int) TEK4014_SHOWN(xw), 2697d522f475Smrg params + 1, (*param_count) - 1, w); 2698d522f475Smrg break; 2699d522f475Smrg default: 270020d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2701d522f475Smrg } 2702d522f475Smrg } else { 270320d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2704d522f475Smrg } 2705d522f475Smrg} 2706d522f475Smrg 2707d522f475Smrg/* ARGSUSED */ 2708d522f475Smrgvoid 2709d522f475SmrgHandleSetTekText(Widget w, 2710d522f475Smrg XEvent * event GCC_UNUSED, 2711d522f475Smrg String * params, 2712d522f475Smrg Cardinal *param_count) 2713d522f475Smrg{ 271420d2c4d2Smrg XtermWidget xw = term; 2715d522f475Smrg void (*proc) PROTO_XT_CALLBACK_ARGS = 0; 2716d522f475Smrg 2717d522f475Smrg switch (*param_count) { 2718d522f475Smrg case 0: 2719d522f475Smrg proc = do_tektextlarge; 2720d522f475Smrg break; 2721d522f475Smrg case 1: 2722d522f475Smrg switch (TekGetFontSize(params[0])) { 2723d522f475Smrg case TEK_FONT_LARGE: 2724d522f475Smrg proc = do_tektextlarge; 2725d522f475Smrg break; 2726d522f475Smrg case TEK_FONT_2: 2727d522f475Smrg proc = do_tektext2; 2728d522f475Smrg break; 2729d522f475Smrg case TEK_FONT_3: 2730d522f475Smrg proc = do_tektext3; 2731d522f475Smrg break; 2732d522f475Smrg case TEK_FONT_SMALL: 2733d522f475Smrg proc = do_tektextsmall; 2734d522f475Smrg break; 2735d522f475Smrg } 2736d522f475Smrg break; 2737d522f475Smrg } 2738d522f475Smrg if (proc) 2739d522f475Smrg (*proc) (w, (XtPointer) 0, (XtPointer) 0); 2740d522f475Smrg else 274120d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2742d522f475Smrg} 2743d522f475Smrg 2744d522f475Smrg/* ARGSUSED */ 2745d522f475Smrgvoid 2746d522f475SmrgHandleTekPage(Widget w, 2747d522f475Smrg XEvent * event GCC_UNUSED, 2748d522f475Smrg String * params GCC_UNUSED, 2749d522f475Smrg Cardinal *param_count GCC_UNUSED) 2750d522f475Smrg{ 2751d522f475Smrg do_tekpage(w, (XtPointer) 0, (XtPointer) 0); 2752d522f475Smrg} 2753d522f475Smrg 2754d522f475Smrg/* ARGSUSED */ 2755d522f475Smrgvoid 2756d522f475SmrgHandleTekReset(Widget w, 2757d522f475Smrg XEvent * event GCC_UNUSED, 2758d522f475Smrg String * params GCC_UNUSED, 2759d522f475Smrg Cardinal *param_count GCC_UNUSED) 2760d522f475Smrg{ 2761d522f475Smrg do_tekreset(w, (XtPointer) 0, (XtPointer) 0); 2762d522f475Smrg} 2763d522f475Smrg 2764d522f475Smrg/* ARGSUSED */ 2765d522f475Smrgvoid 2766d522f475SmrgHandleTekCopy(Widget w, 2767d522f475Smrg XEvent * event GCC_UNUSED, 2768d522f475Smrg String * params GCC_UNUSED, 2769d522f475Smrg Cardinal *param_count GCC_UNUSED) 2770d522f475Smrg{ 2771d522f475Smrg do_tekcopy(w, (XtPointer) 0, (XtPointer) 0); 2772d522f475Smrg} 2773d522f475Smrg#endif /* OPT_TEK4014 */ 2774d522f475Smrg 2775d522f475Smrg#if OPT_TOOLBAR 2776d522f475Smrg/* 2777d522f475Smrg * The normal style of xterm popup menu delays initialization until the menu is 2778d522f475Smrg * first requested. When using a toolbar, we can use the same initialization, 2779d522f475Smrg * though on the first popup there will be a little geometry layout jitter, 2780d522f475Smrg * since the menu is already managed when this callback is invoked. 2781d522f475Smrg */ 2782d522f475Smrgstatic void 2783d522f475SmrgInitPopup(Widget gw, 2784d522f475Smrg XtPointer closure, 2785d522f475Smrg XtPointer data GCC_UNUSED) 2786d522f475Smrg{ 2787d522f475Smrg String params[2]; 2788d522f475Smrg Cardinal count = 1; 2789d522f475Smrg 2790d522f475Smrg params[0] = (char *) closure; 2791d522f475Smrg params[1] = 0; 2792d522f475Smrg TRACE(("InitPopup(%s)\n", params[0])); 2793d522f475Smrg 2794d522f475Smrg domenu(gw, (XEvent *) 0, params, &count); 2795d522f475Smrg 2796d522f475Smrg if (gw) 2797d522f475Smrg XtRemoveCallback(gw, XtNpopupCallback, InitPopup, closure); 2798d522f475Smrg} 2799d522f475Smrg 2800d522f475Smrgstatic Dimension 2801d522f475SmrgSetupShell(Widget *menus, MenuList * shell, int n, int m) 2802d522f475Smrg{ 2803d522f475Smrg char temp[80]; 2804d522f475Smrg char *external_name = 0; 2805d522f475Smrg Dimension button_height; 2806d522f475Smrg Dimension button_border; 2807d522f475Smrg String saveLocale = setMenuLocale(True, resource.menuLocale); 2808d522f475Smrg 2809d522f475Smrg shell[n].w = XtVaCreatePopupShell(menu_names[n].internal_name, 2810d522f475Smrg simpleMenuWidgetClass, 2811d522f475Smrg *menus, 2812d522f475Smrg XtNgeometry, NULL, 2813d522f475Smrg (XtPointer) 0); 2814d522f475Smrg 2815d522f475Smrg XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name); 2816d522f475Smrg XtVaGetValues(shell[n].w, 2817d522f475Smrg XtNlabel, &external_name, 2818d522f475Smrg (XtPointer) 0); 2819d522f475Smrg 2820d522f475Smrg TRACE(("...SetupShell(%s) -> %s -> %#lx\n", 2821d522f475Smrg menu_names[n].internal_name, 2822d522f475Smrg external_name, 2823d522f475Smrg (long) shell[n].w)); 2824d522f475Smrg 2825d522f475Smrg sprintf(temp, "%sButton", menu_names[n].internal_name); 2826d522f475Smrg shell[n].b = XtVaCreateManagedWidget(temp, 2827d522f475Smrg menuButtonWidgetClass, 2828d522f475Smrg *menus, 2829d522f475Smrg XtNfromHoriz, ((m >= 0) 2830d522f475Smrg ? shell[m].b 2831d522f475Smrg : 0), 2832d522f475Smrg XtNmenuName, menu_names[n].internal_name, 2833d522f475Smrg XtNlabel, external_name, 2834d522f475Smrg (XtPointer) 0); 2835d522f475Smrg XtVaGetValues(shell[n].b, 2836d522f475Smrg XtNheight, &button_height, 2837d522f475Smrg XtNborderWidth, &button_border, 2838d522f475Smrg (XtPointer) 0); 2839d522f475Smrg 2840956cc18dSsnj (void) setMenuLocale(False, saveLocale); 2841956cc18dSsnj return (Dimension) (button_height + (button_border * 2)); 2842d522f475Smrg} 2843d522f475Smrg#endif /* OPT_TOOLBAR */ 2844d522f475Smrg 2845d522f475Smrgvoid 2846d522f475SmrgSetupMenus(Widget shell, Widget *forms, Widget *menus, Dimension * menu_high) 2847d522f475Smrg{ 2848d522f475Smrg#if OPT_TOOLBAR 2849d522f475Smrg Dimension button_height = 0; 2850d522f475Smrg Dimension toolbar_hSpace; 2851d522f475Smrg Arg args[10]; 2852d522f475Smrg#endif 2853d522f475Smrg 2854d522f475Smrg TRACE(("SetupMenus(%s)\n", shell == toplevel ? "vt100" : "tek4014")); 2855d522f475Smrg 2856d522f475Smrg *menu_high = 0; 2857d522f475Smrg 2858d522f475Smrg if (shell == toplevel) { 2859d522f475Smrg XawSimpleMenuAddGlobalActions(app_con); 2860d522f475Smrg XtRegisterGrabAction(HandlePopupMenu, True, 28610bd37d32Smrg (unsigned) (ButtonPressMask | ButtonReleaseMask), 2862d522f475Smrg GrabModeAsync, GrabModeAsync); 2863d522f475Smrg } 2864d522f475Smrg#if OPT_TOOLBAR 2865d522f475Smrg *forms = XtVaCreateManagedWidget("form", 2866d522f475Smrg formWidgetClass, shell, 2867d522f475Smrg (XtPointer) 0); 2868d522f475Smrg xtermAddInput(*forms); 2869d522f475Smrg 2870d522f475Smrg /* 2871d522f475Smrg * Set a nominal value for the preferred pane size, which lets the 2872d522f475Smrg * buttons determine the actual height of the menu bar. We don't show 2873d522f475Smrg * the grip, because it's too easy to make the toolbar look bad that 2874d522f475Smrg * way. 2875d522f475Smrg */ 2876d522f475Smrg XtSetArg(args[0], XtNorientation, XtorientHorizontal); 2877d522f475Smrg XtSetArg(args[1], XtNtop, XawChainTop); 2878d522f475Smrg XtSetArg(args[2], XtNbottom, XawChainTop); 2879d522f475Smrg XtSetArg(args[3], XtNleft, XawChainLeft); 2880d522f475Smrg XtSetArg(args[4], XtNright, XawChainLeft); 2881d522f475Smrg 2882d522f475Smrg if (resource.toolBar) { 2883d522f475Smrg *menus = XtCreateManagedWidget("menubar", boxWidgetClass, *forms, 2884d522f475Smrg args, 5); 2885d522f475Smrg } else { 2886d522f475Smrg *menus = XtCreateWidget("menubar", boxWidgetClass, *forms, args, 5); 2887d522f475Smrg } 2888d522f475Smrg 2889d522f475Smrg /* 2890d522f475Smrg * The toolbar widget's height is not necessarily known yet. If the 2891d522f475Smrg * toolbar is not created as a managed widget, we can still make a good 2892d522f475Smrg * guess about its height by collecting the widget's other resource values. 2893d522f475Smrg */ 2894d522f475Smrg XtVaGetValues(*menus, 2895d522f475Smrg XtNhSpace, &toolbar_hSpace, 2896d522f475Smrg (XtPointer) 0); 2897d522f475Smrg 2898d522f475Smrg if (shell == toplevel) { /* vt100 */ 2899d522f475Smrg int j; 2900d522f475Smrg for (j = mainMenu; j <= fontMenu; j++) { 2901d522f475Smrg button_height = SetupShell(menus, vt_shell, j, j - 1); 2902d522f475Smrg } 2903d522f475Smrg } 2904d522f475Smrg#if OPT_TEK4014 2905d522f475Smrg else { /* tek4014 */ 290620d2c4d2Smrg (void) SetupShell(menus, tek_shell, mainMenu, -1); 2907d522f475Smrg button_height = SetupShell(menus, tek_shell, tekMenu, mainMenu); 2908d522f475Smrg } 2909d522f475Smrg#endif 2910d522f475Smrg 2911d522f475Smrg /* 2912d522f475Smrg * Tell the main program how high the toolbar is, to help with the initial 2913d522f475Smrg * layout. 2914d522f475Smrg */ 2915956cc18dSsnj *menu_high = (Dimension) (button_height + 2 * (toolbar_hSpace)); 29162eaa94a1Schristos TRACE(("...menuHeight:%d = (%d + 2 * %d)\n", 29172eaa94a1Schristos *menu_high, button_height, toolbar_hSpace)); 2918d522f475Smrg 2919d522f475Smrg#else /* !OPT_TOOLBAR */ 2920d522f475Smrg *forms = shell; 2921d522f475Smrg *menus = shell; 2922d522f475Smrg#endif 2923d522f475Smrg 2924d522f475Smrg TRACE(("...shell=%#lx\n", (long) shell)); 2925d522f475Smrg TRACE(("...forms=%#lx\n", (long) *forms)); 2926d522f475Smrg TRACE(("...menus=%#lx\n", (long) *menus)); 2927d522f475Smrg} 2928d522f475Smrg 2929d522f475Smrgvoid 2930d522f475SmrgrepairSizeHints(void) 2931d522f475Smrg{ 2932a1f3da82Smrg XtermWidget xw = term; 2933a1f3da82Smrg TScreen *screen = TScreenOf(xw); 2934d522f475Smrg 2935a1f3da82Smrg if (XtIsRealized((Widget) xw)) { 2936a1f3da82Smrg getXtermSizeHints(xw); 2937a1f3da82Smrg xtermSizeHints(xw, ScrollbarWidth(screen)); 2938d522f475Smrg 2939a1f3da82Smrg XSetWMNormalHints(screen->display, VShellWindow(xw), &xw->hints); 2940d522f475Smrg } 2941d522f475Smrg} 2942d522f475Smrg 2943d522f475Smrg#if OPT_TOOLBAR 2944d522f475Smrg#define INIT_POPUP(s, n) InitPopup(s[n].w, menu_names[n].internal_name, 0) 2945d522f475Smrg 2946d522f475Smrgstatic Bool 2947d522f475SmrgInitWidgetMenu(Widget shell) 2948d522f475Smrg{ 2949d522f475Smrg Bool result = False; 2950d522f475Smrg 295120d2c4d2Smrg TRACE(("InitWidgetMenu(%p)\n", (void *) shell)); 2952d522f475Smrg if (term != 0) { 2953d522f475Smrg if (shell == toplevel) { /* vt100 */ 2954d522f475Smrg if (!term->init_menu) { 2955d522f475Smrg INIT_POPUP(vt_shell, mainMenu); 2956d522f475Smrg INIT_POPUP(vt_shell, vtMenu); 2957d522f475Smrg INIT_POPUP(vt_shell, fontMenu); 2958d522f475Smrg term->init_menu = True; 2959d522f475Smrg TRACE(("...InitWidgetMenu(vt)\n")); 2960d522f475Smrg } 2961d522f475Smrg result = term->init_menu; 2962d522f475Smrg } 2963d522f475Smrg#if OPT_TEK4014 2964d522f475Smrg else if (tekWidget) { /* tek4014 */ 2965d522f475Smrg if (!tekWidget->init_menu) { 2966d522f475Smrg INIT_POPUP(tek_shell, mainMenu); 2967d522f475Smrg INIT_POPUP(tek_shell, tekMenu); 2968d522f475Smrg tekWidget->init_menu = True; 2969d522f475Smrg TRACE(("...InitWidgetMenu(tek)\n")); 2970d522f475Smrg } 2971d522f475Smrg result = tekWidget->init_menu; 2972d522f475Smrg } 2973d522f475Smrg#endif 2974d522f475Smrg } 2975d522f475Smrg TRACE(("...InitWidgetMenu ->%d\n", result)); 2976d522f475Smrg return result; 2977d522f475Smrg} 2978d522f475Smrg 2979d522f475Smrgstatic TbInfo * 2980d522f475Smrgtoolbar_info(Widget w) 2981d522f475Smrg{ 2982d522f475Smrg TRACE(("...getting toolbar_info\n")); 2983d522f475Smrg#if OPT_TEK4014 2984d522f475Smrg if (w != (Widget) term) 2985d522f475Smrg return &(tekWidget->tek.tb_info); 2986d522f475Smrg#else 2987d522f475Smrg (void) w; 2988d522f475Smrg#endif 298920d2c4d2Smrg return &(WhichVWin(TScreenOf(term))->tb_info); 2990d522f475Smrg} 2991d522f475Smrg 2992d522f475Smrgstatic void 2993d522f475Smrghide_toolbar(Widget w) 2994d522f475Smrg{ 2995d522f475Smrg if (w != 0) { 2996d522f475Smrg TbInfo *info = toolbar_info(w); 2997d522f475Smrg 2998d522f475Smrg TRACE(("hiding toolbar\n")); 2999d522f475Smrg XtVaSetValues(w, 3000d522f475Smrg XtNfromVert, (Widget) 0, 3001d522f475Smrg (XtPointer) 0); 3002d522f475Smrg 3003d522f475Smrg if (info->menu_bar != 0) { 3004d522f475Smrg repairSizeHints(); 3005d522f475Smrg XtUnmanageChild(info->menu_bar); 3006d522f475Smrg if (XtIsRealized(info->menu_bar)) { 3007d522f475Smrg XtUnmapWidget(info->menu_bar); 3008d522f475Smrg } 3009d522f475Smrg } 3010d522f475Smrg TRACE(("...hiding toolbar (done)\n")); 3011d522f475Smrg } 3012d522f475Smrg} 3013d522f475Smrg 3014d522f475Smrgstatic void 3015d522f475Smrgshow_toolbar(Widget w) 3016d522f475Smrg{ 3017d522f475Smrg if (w != 0) { 3018d522f475Smrg TbInfo *info = toolbar_info(w); 3019d522f475Smrg 3020d522f475Smrg TRACE(("showing toolbar\n")); 3021d522f475Smrg if (info->menu_bar != 0) { 3022d522f475Smrg XtVaSetValues(w, 3023d522f475Smrg XtNfromVert, info->menu_bar, 3024d522f475Smrg (XtPointer) 0); 3025d522f475Smrg if (XtIsRealized(info->menu_bar)) 3026d522f475Smrg repairSizeHints(); 3027d522f475Smrg XtManageChild(info->menu_bar); 3028d522f475Smrg if (XtIsRealized(info->menu_bar)) { 3029d522f475Smrg XtMapWidget(info->menu_bar); 3030d522f475Smrg } 3031d522f475Smrg } 3032d522f475Smrg /* 3033d522f475Smrg * This is needed to make the terminal widget move down below the 3034d522f475Smrg * toolbar. 3035d522f475Smrg */ 3036d522f475Smrg XawFormDoLayout(XtParent(w), True); 3037d522f475Smrg TRACE(("...showing toolbar (done)\n")); 3038d522f475Smrg } 3039d522f475Smrg} 3040d522f475Smrg 3041d522f475Smrg/* 3042d522f475Smrg * Make the toolbar visible or invisible in the current window(s). 3043d522f475Smrg */ 3044d522f475Smrgvoid 3045d522f475SmrgShowToolbar(Bool enable) 3046d522f475Smrg{ 304720d2c4d2Smrg XtermWidget xw = term; 304820d2c4d2Smrg 3049d522f475Smrg TRACE(("ShowToolbar(%d)\n", enable)); 3050d522f475Smrg 305120d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 305220d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 3053d522f475Smrg } else { 3054d522f475Smrg if (enable) { 3055d522f475Smrg if (InitWidgetMenu(toplevel)) 305620d2c4d2Smrg show_toolbar((Widget) xw); 3057d522f475Smrg#if OPT_TEK4014 3058d522f475Smrg if (InitWidgetMenu(tekshellwidget)) 3059d522f475Smrg show_toolbar((Widget) tekWidget); 3060d522f475Smrg#endif 3061d522f475Smrg } else { 306220d2c4d2Smrg hide_toolbar((Widget) xw); 3063d522f475Smrg#if OPT_TEK4014 3064d522f475Smrg hide_toolbar((Widget) tekWidget); 3065d522f475Smrg#endif 3066d522f475Smrg } 3067956cc18dSsnj resource.toolBar = (Boolean) enable; 3068d522f475Smrg update_toolbar(); 3069d522f475Smrg } 3070d522f475Smrg} 3071d522f475Smrg 3072d522f475Smrgvoid 3073d522f475SmrgHandleToolbar(Widget w, 3074d522f475Smrg XEvent * event GCC_UNUSED, 3075d522f475Smrg String * params GCC_UNUSED, 3076d522f475Smrg Cardinal *param_count GCC_UNUSED) 3077d522f475Smrg{ 307820d2c4d2Smrg XtermWidget xw = term; 307920d2c4d2Smrg 308020d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 308120d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 3082d522f475Smrg } else { 3083d522f475Smrg handle_vt_toggle(do_toolbar, resource.toolBar, 3084d522f475Smrg params, *param_count, w); 3085d522f475Smrg } 3086d522f475Smrg} 3087d522f475Smrg 3088d522f475Smrg/* ARGSUSED */ 3089d522f475Smrgstatic void 3090d522f475Smrgdo_toolbar(Widget gw GCC_UNUSED, 3091d522f475Smrg XtPointer closure GCC_UNUSED, 3092d522f475Smrg XtPointer data GCC_UNUSED) 3093d522f475Smrg{ 309420d2c4d2Smrg XtermWidget xw = term; 309520d2c4d2Smrg 3096d522f475Smrg /* 3097d522f475Smrg * Toggle toolbars for both vt100 and tek windows, since they share the 3098d522f475Smrg * menu which contains the checkbox indicating whether the toolbar is 3099d522f475Smrg * active. 3100d522f475Smrg */ 310120d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 310220d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 3103d522f475Smrg } else { 3104956cc18dSsnj ShowToolbar(ToggleFlag(resource.toolBar)); 3105d522f475Smrg } 3106d522f475Smrg} 3107d522f475Smrg 3108d522f475Smrgvoid 3109d522f475Smrgupdate_toolbar(void) 3110d522f475Smrg{ 3111d522f475Smrg UpdateCheckbox("update_toolbar", 3112d522f475Smrg mainMenuEntries, 3113d522f475Smrg mainMenu_toolbar, 3114d522f475Smrg resource.toolBar); 3115d522f475Smrg} 3116d522f475Smrg#endif /* OPT_TOOLBAR */ 3117d522f475Smrg 3118d522f475Smrgvoid 3119d522f475Smrgupdate_securekbd(void) 3120d522f475Smrg{ 3121d522f475Smrg UpdateCheckbox("update_securekbd", 3122d522f475Smrg mainMenuEntries, 3123d522f475Smrg mainMenu_securekbd, 312420d2c4d2Smrg TScreenOf(term)->grabbedKbd); 3125d522f475Smrg} 3126d522f475Smrg 3127d522f475Smrgvoid 3128d522f475Smrgupdate_allowsends(void) 3129d522f475Smrg{ 3130d522f475Smrg UpdateCheckbox("update_allowsends", 3131d522f475Smrg mainMenuEntries, 3132d522f475Smrg mainMenu_allowsends, 313320d2c4d2Smrg TScreenOf(term)->allowSendEvents); 3134d522f475Smrg} 3135d522f475Smrg 3136d522f475Smrg#ifdef ALLOWLOGGING 3137d522f475Smrgvoid 3138d522f475Smrgupdate_logging(void) 3139d522f475Smrg{ 3140d522f475Smrg UpdateCheckbox("update_logging", 3141d522f475Smrg mainMenuEntries, 3142d522f475Smrg mainMenu_logging, 314320d2c4d2Smrg TScreenOf(term)->logging); 3144d522f475Smrg} 3145d522f475Smrg#endif 3146d522f475Smrg 3147e39b573cSmrg#if OPT_PRINT_ON_EXIT 3148e39b573cSmrgvoid 3149e39b573cSmrgupdate_write_error(void) 3150e39b573cSmrg{ 3151e39b573cSmrg UpdateCheckbox("update_write_error", 3152e39b573cSmrg mainMenuEntries, 3153e39b573cSmrg mainMenu_write_error, 3154e39b573cSmrg TScreenOf(term)->write_error); 3155e39b573cSmrg} 3156e39b573cSmrg#endif 3157e39b573cSmrg 3158d522f475Smrgvoid 3159d522f475Smrgupdate_print_redir(void) 3160d522f475Smrg{ 3161d522f475Smrg UpdateCheckbox("update_print_redir", 3162d522f475Smrg mainMenuEntries, 3163d522f475Smrg mainMenu_print_redir, 3164e39b573cSmrg PrinterOf(TScreenOf(term)).printer_controlmode); 3165d522f475Smrg} 3166d522f475Smrg 3167d522f475Smrgvoid 3168d522f475Smrgupdate_8bit_control(void) 3169d522f475Smrg{ 3170d522f475Smrg UpdateCheckbox("update_8bit_control", 3171d522f475Smrg mainMenuEntries, 3172d522f475Smrg mainMenu_8bit_ctrl, 317320d2c4d2Smrg TScreenOf(term)->control_eight_bits); 3174d522f475Smrg} 3175d522f475Smrg 3176d522f475Smrgvoid 3177d522f475Smrgupdate_decbkm(void) 3178d522f475Smrg{ 3179d522f475Smrg UpdateCheckbox("update_decbkm", 3180d522f475Smrg mainMenuEntries, 3181d522f475Smrg mainMenu_backarrow, 3182d522f475Smrg (term->keyboard.flags & MODE_DECBKM) != 0); 3183d522f475Smrg} 3184d522f475Smrg 3185d522f475Smrg#if OPT_NUM_LOCK 3186d522f475Smrgvoid 3187d522f475Smrgupdate_num_lock(void) 3188d522f475Smrg{ 3189d522f475Smrg UpdateCheckbox("update_num_lock", 3190d522f475Smrg mainMenuEntries, 3191d522f475Smrg mainMenu_num_lock, 3192d522f475Smrg term->misc.real_NumLock); 3193d522f475Smrg} 3194d522f475Smrg 3195d522f475Smrgvoid 3196d522f475Smrgupdate_alt_esc(void) 3197d522f475Smrg{ 3198d522f475Smrg UpdateCheckbox("update_alt_esc", 3199d522f475Smrg mainMenuEntries, 3200d522f475Smrg mainMenu_alt_esc, 320120d2c4d2Smrg TScreenOf(term)->alt_sends_esc); 3202d522f475Smrg} 3203d522f475Smrg 3204d522f475Smrgvoid 3205d522f475Smrgupdate_meta_esc(void) 3206d522f475Smrg{ 3207d522f475Smrg UpdateCheckbox("update_meta_esc", 3208d522f475Smrg mainMenuEntries, 3209d522f475Smrg mainMenu_meta_esc, 321020d2c4d2Smrg TScreenOf(term)->meta_sends_esc); 3211d522f475Smrg} 3212d522f475Smrg#endif 3213d522f475Smrg 3214d522f475Smrg#if OPT_SUN_FUNC_KEYS 3215d522f475Smrgvoid 3216d522f475Smrgupdate_sun_fkeys(void) 3217d522f475Smrg{ 3218d522f475Smrg UpdateCheckbox("update_sun_fkeys", 3219d522f475Smrg mainMenuEntries, 3220d522f475Smrg mainMenu_sun_fkeys, 3221d522f475Smrg term->keyboard.type == keyboardIsSun); 3222d522f475Smrg} 3223d522f475Smrg#endif 3224d522f475Smrg 3225d522f475Smrg#if OPT_TCAP_FKEYS 3226d522f475Smrgvoid 3227d522f475Smrgupdate_tcap_fkeys(void) 3228d522f475Smrg{ 3229d522f475Smrg UpdateCheckbox("update_tcap_fkeys", 3230d522f475Smrg mainMenuEntries, 3231d522f475Smrg mainMenu_tcap_fkeys, 3232d522f475Smrg term->keyboard.type == keyboardIsTermcap); 3233d522f475Smrg} 3234d522f475Smrg#endif 3235d522f475Smrg 3236d522f475Smrgvoid 3237d522f475Smrgupdate_old_fkeys(void) 3238d522f475Smrg{ 3239d522f475Smrg UpdateCheckbox("update_old_fkeys", 3240d522f475Smrg mainMenuEntries, 3241d522f475Smrg mainMenu_old_fkeys, 3242d522f475Smrg term->keyboard.type == keyboardIsLegacy); 3243d522f475Smrg} 3244d522f475Smrg 3245d522f475Smrgvoid 3246d522f475Smrgupdate_delete_del(void) 3247d522f475Smrg{ 3248d522f475Smrg UpdateCheckbox("update_delete_del", 3249d522f475Smrg mainMenuEntries, 3250d522f475Smrg mainMenu_delete_del, 3251d522f475Smrg xtermDeleteIsDEL(term)); 3252d522f475Smrg} 3253d522f475Smrg 3254d522f475Smrg#if OPT_SUNPC_KBD 3255d522f475Smrgvoid 3256d522f475Smrgupdate_sun_kbd(void) 3257d522f475Smrg{ 3258d522f475Smrg UpdateCheckbox("update_sun_kbd", 3259d522f475Smrg mainMenuEntries, 3260d522f475Smrg mainMenu_sun_kbd, 3261d522f475Smrg term->keyboard.type == keyboardIsVT220); 3262d522f475Smrg} 3263d522f475Smrg#endif 3264d522f475Smrg 3265d522f475Smrg#if OPT_HP_FUNC_KEYS 3266d522f475Smrgvoid 3267d522f475Smrgupdate_hp_fkeys(void) 3268d522f475Smrg{ 3269d522f475Smrg UpdateCheckbox("update_hp_fkeys", 3270d522f475Smrg mainMenuEntries, 3271d522f475Smrg mainMenu_hp_fkeys, 3272d522f475Smrg term->keyboard.type == keyboardIsHP); 3273d522f475Smrg} 3274d522f475Smrg#endif 3275d522f475Smrg 3276d522f475Smrg#if OPT_SCO_FUNC_KEYS 3277d522f475Smrgvoid 3278d522f475Smrgupdate_sco_fkeys(void) 3279d522f475Smrg{ 3280d522f475Smrg UpdateCheckbox("update_sco_fkeys", 3281d522f475Smrg mainMenuEntries, 3282d522f475Smrg mainMenu_sco_fkeys, 3283d522f475Smrg term->keyboard.type == keyboardIsSCO); 3284d522f475Smrg} 3285d522f475Smrg#endif 3286d522f475Smrg 3287d522f475Smrgvoid 3288d522f475Smrgupdate_scrollbar(void) 3289d522f475Smrg{ 3290d522f475Smrg UpdateCheckbox("update_scrollbar", 3291d522f475Smrg vtMenuEntries, 3292d522f475Smrg vtMenu_scrollbar, 3293d522f475Smrg ScrollbarWidth(TScreenOf(term))); 3294d522f475Smrg} 3295d522f475Smrg 3296d522f475Smrgvoid 3297d522f475Smrgupdate_jumpscroll(void) 3298d522f475Smrg{ 3299d522f475Smrg UpdateCheckbox("update_jumpscroll", 3300d522f475Smrg vtMenuEntries, 3301d522f475Smrg vtMenu_jumpscroll, 330220d2c4d2Smrg TScreenOf(term)->jumpscroll); 3303d522f475Smrg} 3304d522f475Smrg 3305d522f475Smrgvoid 3306d522f475Smrgupdate_reversevideo(void) 3307d522f475Smrg{ 3308d522f475Smrg UpdateCheckbox("update_reversevideo", 3309d522f475Smrg vtMenuEntries, 3310d522f475Smrg vtMenu_reversevideo, 3311d522f475Smrg (term->misc.re_verse)); 3312d522f475Smrg} 3313d522f475Smrg 3314d522f475Smrgvoid 3315d522f475Smrgupdate_autowrap(void) 3316d522f475Smrg{ 3317d522f475Smrg UpdateCheckbox("update_autowrap", 3318d522f475Smrg vtMenuEntries, 3319d522f475Smrg vtMenu_autowrap, 3320d522f475Smrg (term->flags & WRAPAROUND) != 0); 3321d522f475Smrg} 3322d522f475Smrg 3323d522f475Smrgvoid 3324d522f475Smrgupdate_reversewrap(void) 3325d522f475Smrg{ 3326d522f475Smrg UpdateCheckbox("update_reversewrap", 3327d522f475Smrg vtMenuEntries, 3328d522f475Smrg vtMenu_reversewrap, 3329d522f475Smrg (term->flags & REVERSEWRAP) != 0); 3330d522f475Smrg} 3331d522f475Smrg 3332d522f475Smrgvoid 3333d522f475Smrgupdate_autolinefeed(void) 3334d522f475Smrg{ 3335d522f475Smrg UpdateCheckbox("update_autolinefeed", 3336d522f475Smrg vtMenuEntries, 3337d522f475Smrg vtMenu_autolinefeed, 3338d522f475Smrg (term->flags & LINEFEED) != 0); 3339d522f475Smrg} 3340d522f475Smrg 3341d522f475Smrgvoid 3342d522f475Smrgupdate_appcursor(void) 3343d522f475Smrg{ 3344d522f475Smrg UpdateCheckbox("update_appcursor", 3345d522f475Smrg vtMenuEntries, 3346d522f475Smrg vtMenu_appcursor, 3347d522f475Smrg (term->keyboard.flags & MODE_DECCKM) != 0); 3348d522f475Smrg} 3349d522f475Smrg 3350d522f475Smrgvoid 3351d522f475Smrgupdate_appkeypad(void) 3352d522f475Smrg{ 3353d522f475Smrg UpdateCheckbox("update_appkeypad", 3354d522f475Smrg vtMenuEntries, 3355d522f475Smrg vtMenu_appkeypad, 3356d522f475Smrg (term->keyboard.flags & MODE_DECKPAM) != 0); 3357d522f475Smrg} 3358d522f475Smrg 3359d522f475Smrgvoid 3360d522f475Smrgupdate_scrollkey(void) 3361d522f475Smrg{ 3362d522f475Smrg UpdateCheckbox("update_scrollkey", 3363d522f475Smrg vtMenuEntries, 3364d522f475Smrg vtMenu_scrollkey, 336520d2c4d2Smrg TScreenOf(term)->scrollkey); 3366d522f475Smrg} 3367d522f475Smrg 3368d522f475Smrgvoid 3369d522f475Smrgupdate_scrollttyoutput(void) 3370d522f475Smrg{ 3371d522f475Smrg UpdateCheckbox("update_scrollttyoutput", 3372d522f475Smrg vtMenuEntries, 3373d522f475Smrg vtMenu_scrollttyoutput, 337420d2c4d2Smrg TScreenOf(term)->scrollttyoutput); 3375d522f475Smrg} 3376d522f475Smrg 3377d522f475Smrgvoid 3378d522f475Smrgupdate_keepSelection(void) 3379d522f475Smrg{ 3380d522f475Smrg UpdateCheckbox("update_keepSelection", 3381d522f475Smrg vtMenuEntries, 3382d522f475Smrg vtMenu_keepSelection, 338320d2c4d2Smrg TScreenOf(term)->keepSelection); 3384d522f475Smrg} 3385d522f475Smrg 3386d522f475Smrgvoid 3387d522f475Smrgupdate_selectToClipboard(void) 3388d522f475Smrg{ 3389d522f475Smrg UpdateCheckbox("update_selectToClipboard", 3390d522f475Smrg vtMenuEntries, 3391d522f475Smrg vtMenu_selectToClipboard, 339220d2c4d2Smrg TScreenOf(term)->selectToClipboard); 3393d522f475Smrg} 3394d522f475Smrg 3395d522f475Smrgvoid 3396d522f475Smrgupdate_allow132(void) 3397d522f475Smrg{ 3398d522f475Smrg UpdateCheckbox("update_allow132", 3399d522f475Smrg vtMenuEntries, 3400d522f475Smrg vtMenu_allow132, 340120d2c4d2Smrg TScreenOf(term)->c132); 3402d522f475Smrg} 3403d522f475Smrg 3404d522f475Smrgvoid 3405d522f475Smrgupdate_cursesemul(void) 3406d522f475Smrg{ 3407d522f475Smrg#if 0 /* 2006-2-12: no longer menu entry */ 3408d522f475Smrg UpdateMenuItem("update_cursesemul", vtMenuEntries, vtMenu_cursesemul, 340920d2c4d2Smrg TScreenOf(term)->curses); 3410d522f475Smrg#endif 3411d522f475Smrg} 3412d522f475Smrg 3413d522f475Smrgvoid 3414d522f475Smrgupdate_visualbell(void) 3415d522f475Smrg{ 3416d522f475Smrg UpdateCheckbox("update_visualbell", 3417d522f475Smrg vtMenuEntries, 3418d522f475Smrg vtMenu_visualbell, 341920d2c4d2Smrg TScreenOf(term)->visualbell); 3420d522f475Smrg} 3421d522f475Smrg 3422d522f475Smrgvoid 3423d522f475Smrgupdate_bellIsUrgent(void) 3424d522f475Smrg{ 3425d522f475Smrg UpdateCheckbox("update_bellIsUrgent", 3426d522f475Smrg vtMenuEntries, 3427d522f475Smrg vtMenu_bellIsUrgent, 342820d2c4d2Smrg TScreenOf(term)->bellIsUrgent); 3429d522f475Smrg} 3430d522f475Smrg 3431d522f475Smrgvoid 3432d522f475Smrgupdate_poponbell(void) 3433d522f475Smrg{ 3434d522f475Smrg UpdateCheckbox("update_poponbell", 3435d522f475Smrg vtMenuEntries, 3436d522f475Smrg vtMenu_poponbell, 343720d2c4d2Smrg TScreenOf(term)->poponbell); 3438d522f475Smrg} 3439d522f475Smrg 3440d522f475Smrg#ifndef update_marginbell /* 2007-3-7: no longer menu entry */ 3441d522f475Smrgvoid 3442d522f475Smrgupdate_marginbell(void) 3443d522f475Smrg{ 3444d522f475Smrg UpdateCheckbox("update_marginbell", 3445d522f475Smrg vtMenuEntries, 3446d522f475Smrg vtMenu_marginbell, 344720d2c4d2Smrg TScreenOf(term)->marginbell); 3448d522f475Smrg} 3449d522f475Smrg#endif 3450d522f475Smrg 3451d522f475Smrg#if OPT_BLINK_CURS 3452d522f475Smrgvoid 3453d522f475Smrgupdate_cursorblink(void) 3454d522f475Smrg{ 3455d522f475Smrg UpdateCheckbox("update_cursorblink", 3456d522f475Smrg vtMenuEntries, 3457d522f475Smrg vtMenu_cursorblink, 345820d2c4d2Smrg TScreenOf(term)->cursor_blink); 3459d522f475Smrg} 3460d522f475Smrg#endif 3461d522f475Smrg 3462d522f475Smrgvoid 3463d522f475Smrgupdate_altscreen(void) 3464d522f475Smrg{ 3465d522f475Smrg UpdateCheckbox("update_altscreen", 3466d522f475Smrg vtMenuEntries, 3467d522f475Smrg vtMenu_altscreen, 346820d2c4d2Smrg TScreenOf(term)->whichBuf); 3469d522f475Smrg} 3470d522f475Smrg 3471d522f475Smrgvoid 3472d522f475Smrgupdate_titeInhibit(void) 3473d522f475Smrg{ 3474d522f475Smrg UpdateCheckbox("update_titeInhibit", 3475d522f475Smrg vtMenuEntries, 3476d522f475Smrg vtMenu_titeInhibit, 3477d522f475Smrg !(term->misc.titeInhibit)); 3478d522f475Smrg} 3479d522f475Smrg 3480d522f475Smrg#ifndef NO_ACTIVE_ICON 3481d522f475Smrgvoid 3482d522f475Smrgupdate_activeicon(void) 3483d522f475Smrg{ 3484d522f475Smrg UpdateCheckbox("update_activeicon", 3485d522f475Smrg vtMenuEntries, 3486d522f475Smrg vtMenu_activeicon, 34870bd37d32Smrg term->work.active_icon); 3488d522f475Smrg} 3489d522f475Smrg#endif /* NO_ACTIVE_ICON */ 3490d522f475Smrg 3491e39b573cSmrgstatic void 3492e39b573cSmrgdo_allowBoldFonts(Widget w, 3493e39b573cSmrg XtPointer closure GCC_UNUSED, 3494e39b573cSmrg XtPointer data GCC_UNUSED) 3495e39b573cSmrg{ 3496e39b573cSmrg XtermWidget xw = getXtermWidget(w); 3497e39b573cSmrg if (xw != 0) { 3498e39b573cSmrg ToggleFlag(TScreenOf(xw)->allowBoldFonts); 3499e39b573cSmrg update_menu_allowBoldFonts(); 3500e39b573cSmrg Redraw(); 3501e39b573cSmrg } 3502e39b573cSmrg} 3503e39b573cSmrg 3504d522f475Smrg#if OPT_DEC_CHRSET 3505d522f475Smrgvoid 3506d522f475Smrgupdate_font_doublesize(void) 3507d522f475Smrg{ 3508d522f475Smrg UpdateCheckbox("update_font_doublesize", 3509d522f475Smrg fontMenuEntries, 3510d522f475Smrg fontMenu_font_doublesize, 351120d2c4d2Smrg TScreenOf(term)->font_doublesize); 3512d522f475Smrg} 3513d522f475Smrg#endif 3514d522f475Smrg 3515d522f475Smrg#if OPT_BOX_CHARS 3516d522f475Smrgvoid 3517d522f475Smrgupdate_font_boxchars(void) 3518d522f475Smrg{ 3519d522f475Smrg UpdateCheckbox("update_font_boxchars", 3520d522f475Smrg fontMenuEntries, 3521d522f475Smrg fontMenu_font_boxchars, 352220d2c4d2Smrg TScreenOf(term)->force_box_chars); 352320d2c4d2Smrg} 352420d2c4d2Smrg 352520d2c4d2Smrgvoid 352620d2c4d2Smrgupdate_font_packed(void) 352720d2c4d2Smrg{ 352820d2c4d2Smrg UpdateCheckbox("update_font_packed", 352920d2c4d2Smrg fontMenuEntries, 353020d2c4d2Smrg fontMenu_font_packedfont, 353120d2c4d2Smrg TScreenOf(term)->force_packed); 3532d522f475Smrg} 3533d522f475Smrg#endif 3534d522f475Smrg 3535d522f475Smrg#if OPT_DEC_SOFTFONT 3536d522f475Smrgvoid 3537d522f475Smrgupdate_font_loadable(void) 3538d522f475Smrg{ 3539d522f475Smrg UpdateCheckbox("update_font_loadable", 3540d522f475Smrg fontMenuEntries, 3541d522f475Smrg fontMenu_font_loadable, 3542d522f475Smrg term->misc.font_loadable); 3543d522f475Smrg} 3544d522f475Smrg#endif 3545d522f475Smrg 3546d522f475Smrg#if OPT_RENDERFONT 3547d522f475Smrgvoid 3548d522f475Smrgupdate_font_renderfont(void) 3549d522f475Smrg{ 3550d522f475Smrg UpdateCheckbox("update_font_renderfont", 3551d522f475Smrg fontMenuEntries, 3552d522f475Smrg fontMenu_render_font, 35530bd37d32Smrg (term->work.render_font == True)); 355420d2c4d2Smrg SetItemSensitivity(fontMenuEntries[fontMenu_render_font].widget, 355520d2c4d2Smrg !IsEmpty(term->misc.face_name)); 35560bd37d32Smrg update_fontmenu(term); 3557d522f475Smrg} 3558d522f475Smrg#endif 3559d522f475Smrg 3560d522f475Smrg#if OPT_WIDE_CHARS 3561d522f475Smrgvoid 3562d522f475Smrgupdate_font_utf8_mode(void) 3563d522f475Smrg{ 356420d2c4d2Smrg Bool active = (TScreenOf(term)->utf8_mode != uAlways); 356520d2c4d2Smrg Bool enable = (TScreenOf(term)->utf8_mode != uFalse); 3566d522f475Smrg 3567d522f475Smrg TRACE(("update_font_utf8_mode active %d, enable %d\n", active, enable)); 3568e39b573cSmrg SetItemSensitivity(fontMenuEntries[fontMenu_utf8_mode].widget, active); 3569d522f475Smrg UpdateCheckbox("update_font_utf8_mode", 3570d522f475Smrg fontMenuEntries, 3571e39b573cSmrg fontMenu_utf8_mode, 3572e39b573cSmrg enable); 3573e39b573cSmrg} 3574e39b573cSmrg 3575e39b573cSmrgvoid 3576e39b573cSmrgupdate_font_utf8_fonts(void) 3577e39b573cSmrg{ 3578e39b573cSmrg Bool active = (TScreenOf(term)->utf8_fonts != uAlways); 3579e39b573cSmrg Bool enable = (TScreenOf(term)->utf8_fonts != uFalse); 3580e39b573cSmrg 3581e39b573cSmrg TRACE(("update_font_utf8_fonts active %d, enable %d\n", active, enable)); 3582e39b573cSmrg SetItemSensitivity(fontMenuEntries[fontMenu_utf8_fonts].widget, active); 3583e39b573cSmrg UpdateCheckbox("update_font_utf8_fonts", 3584e39b573cSmrg fontMenuEntries, 3585e39b573cSmrg fontMenu_utf8_fonts, 3586d522f475Smrg enable); 3587d522f475Smrg} 3588d522f475Smrg 3589d522f475Smrgvoid 3590d522f475Smrgupdate_font_utf8_title(void) 3591d522f475Smrg{ 359220d2c4d2Smrg Bool active = (TScreenOf(term)->utf8_mode != uFalse); 359320d2c4d2Smrg Bool enable = (TScreenOf(term)->utf8_title); 3594d522f475Smrg 3595d522f475Smrg TRACE(("update_font_utf8_title active %d, enable %d\n", active, enable)); 3596e39b573cSmrg SetItemSensitivity(fontMenuEntries[fontMenu_utf8_title].widget, active); 3597d522f475Smrg UpdateCheckbox("update_font_utf8_title", 3598d522f475Smrg fontMenuEntries, 3599e39b573cSmrg fontMenu_utf8_title, 3600d522f475Smrg enable); 3601d522f475Smrg} 3602d522f475Smrg#endif 3603d522f475Smrg 36040bd37d32Smrg#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 3605e39b573cSmrgvoid 3606e39b573cSmrgupdate_menu_allowBoldFonts(void) 3607e39b573cSmrg{ 3608e39b573cSmrg UpdateCheckbox("update_menu_allowBoldFonts", 3609e39b573cSmrg fontMenuEntries, 3610e39b573cSmrg fontMenu_allowBoldFonts, 3611e39b573cSmrg TScreenOf(term)->allowBoldFonts); 3612e39b573cSmrg} 36130bd37d32Smrg#endif 3614e39b573cSmrg 3615956cc18dSsnj#if OPT_ALLOW_XXX_OPS 3616956cc18dSsnjstatic void 3617956cc18dSsnjenable_allow_xxx_ops(Bool enable) 3618956cc18dSsnj{ 3619956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowFontOps].widget, enable); 3620956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowTcapOps].widget, enable); 3621956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowTitleOps].widget, enable); 3622956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowWindowOps].widget, enable); 3623956cc18dSsnj} 3624956cc18dSsnj 362520d2c4d2Smrgstatic void 362620d2c4d2Smrgdo_allowColorOps(Widget w, 362720d2c4d2Smrg XtPointer closure GCC_UNUSED, 362820d2c4d2Smrg XtPointer data GCC_UNUSED) 362920d2c4d2Smrg{ 363020d2c4d2Smrg XtermWidget xw = getXtermWidget(w); 363120d2c4d2Smrg if (xw != 0) { 363220d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowColorOps); 363320d2c4d2Smrg update_menu_allowColorOps(); 363420d2c4d2Smrg } 363520d2c4d2Smrg} 363620d2c4d2Smrg 3637956cc18dSsnjstatic void 3638956cc18dSsnjdo_allowFontOps(Widget w, 3639956cc18dSsnj XtPointer closure GCC_UNUSED, 3640956cc18dSsnj XtPointer data GCC_UNUSED) 3641956cc18dSsnj{ 3642956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3643956cc18dSsnj if (xw != 0) { 364420d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowFontOps); 3645956cc18dSsnj update_menu_allowFontOps(); 3646956cc18dSsnj } 3647956cc18dSsnj} 3648956cc18dSsnj 3649956cc18dSsnjstatic void 3650956cc18dSsnjdo_allowTcapOps(Widget w, 3651956cc18dSsnj XtPointer closure GCC_UNUSED, 3652956cc18dSsnj XtPointer data GCC_UNUSED) 3653956cc18dSsnj{ 3654956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3655956cc18dSsnj if (xw != 0) { 365620d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowTcapOps); 3657956cc18dSsnj update_menu_allowTcapOps(); 3658956cc18dSsnj } 3659956cc18dSsnj} 3660956cc18dSsnj 3661956cc18dSsnjstatic void 3662956cc18dSsnjdo_allowTitleOps(Widget w, 3663956cc18dSsnj XtPointer closure GCC_UNUSED, 3664956cc18dSsnj XtPointer data GCC_UNUSED) 3665956cc18dSsnj{ 3666956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3667956cc18dSsnj if (xw != 0) { 366820d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowTitleOps); 3669956cc18dSsnj update_menu_allowTitleOps(); 3670956cc18dSsnj } 3671956cc18dSsnj} 3672956cc18dSsnj 3673956cc18dSsnjstatic void 3674956cc18dSsnjdo_allowWindowOps(Widget w, 3675956cc18dSsnj XtPointer closure GCC_UNUSED, 3676956cc18dSsnj XtPointer data GCC_UNUSED) 3677956cc18dSsnj{ 3678956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3679956cc18dSsnj if (xw != 0) { 368020d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowWindowOps); 3681956cc18dSsnj update_menu_allowWindowOps(); 3682956cc18dSsnj } 3683956cc18dSsnj} 3684956cc18dSsnj 368520d2c4d2Smrgvoid 368620d2c4d2SmrgHandleAllowColorOps(Widget w, 368720d2c4d2Smrg XEvent * event GCC_UNUSED, 368820d2c4d2Smrg String * params, 368920d2c4d2Smrg Cardinal *param_count) 369020d2c4d2Smrg{ 369120d2c4d2Smrg HANDLE_VT_TOGGLE(allowColorOps); 369220d2c4d2Smrg} 369320d2c4d2Smrg 3694956cc18dSsnjvoid 3695956cc18dSsnjHandleAllowFontOps(Widget w, 3696956cc18dSsnj XEvent * event GCC_UNUSED, 3697956cc18dSsnj String * params, 3698956cc18dSsnj Cardinal *param_count) 3699956cc18dSsnj{ 370020d2c4d2Smrg HANDLE_VT_TOGGLE(allowFontOps); 3701956cc18dSsnj} 3702956cc18dSsnj 3703956cc18dSsnjvoid 3704956cc18dSsnjHandleAllowTcapOps(Widget w, 3705956cc18dSsnj XEvent * event GCC_UNUSED, 3706956cc18dSsnj String * params, 3707956cc18dSsnj Cardinal *param_count) 3708956cc18dSsnj{ 370920d2c4d2Smrg HANDLE_VT_TOGGLE(allowTcapOps); 3710956cc18dSsnj} 3711956cc18dSsnj 3712956cc18dSsnjvoid 3713956cc18dSsnjHandleAllowTitleOps(Widget w, 3714956cc18dSsnj XEvent * event GCC_UNUSED, 3715956cc18dSsnj String * params, 3716956cc18dSsnj Cardinal *param_count) 3717956cc18dSsnj{ 371820d2c4d2Smrg HANDLE_VT_TOGGLE(allowTitleOps); 3719956cc18dSsnj} 3720956cc18dSsnj 3721956cc18dSsnjvoid 3722956cc18dSsnjHandleAllowWindowOps(Widget w, 3723956cc18dSsnj XEvent * event GCC_UNUSED, 3724956cc18dSsnj String * params, 3725956cc18dSsnj Cardinal *param_count) 3726956cc18dSsnj{ 372720d2c4d2Smrg HANDLE_VT_TOGGLE(allowWindowOps); 3728956cc18dSsnj} 3729956cc18dSsnj 3730956cc18dSsnjvoid 373120d2c4d2Smrgupdate_menu_allowColorOps(void) 3732956cc18dSsnj{ 373320d2c4d2Smrg UpdateCheckbox("update_menu_allowColorOps", 3734956cc18dSsnj fontMenuEntries, 373520d2c4d2Smrg fontMenu_allowColorOps, 373620d2c4d2Smrg TScreenOf(term)->allowColorOps); 3737956cc18dSsnj} 3738956cc18dSsnj 3739956cc18dSsnjvoid 3740956cc18dSsnjupdate_menu_allowFontOps(void) 3741956cc18dSsnj{ 3742956cc18dSsnj UpdateCheckbox("update_menu_allowFontOps", 3743956cc18dSsnj fontMenuEntries, 3744956cc18dSsnj fontMenu_allowFontOps, 374520d2c4d2Smrg TScreenOf(term)->allowFontOps); 374620d2c4d2Smrg} 374720d2c4d2Smrg 374820d2c4d2Smrgvoid 374920d2c4d2Smrgupdate_menu_allowTcapOps(void) 375020d2c4d2Smrg{ 375120d2c4d2Smrg UpdateCheckbox("update_menu_allowTcapOps", 375220d2c4d2Smrg fontMenuEntries, 375320d2c4d2Smrg fontMenu_allowTcapOps, 375420d2c4d2Smrg TScreenOf(term)->allowTcapOps); 3755956cc18dSsnj} 3756956cc18dSsnj 3757956cc18dSsnjvoid 3758956cc18dSsnjupdate_menu_allowTitleOps(void) 3759956cc18dSsnj{ 3760956cc18dSsnj UpdateCheckbox("update_menu_allowTitleOps", 3761956cc18dSsnj fontMenuEntries, 3762956cc18dSsnj fontMenu_allowTitleOps, 376320d2c4d2Smrg TScreenOf(term)->allowTitleOps); 3764956cc18dSsnj} 3765956cc18dSsnj 3766956cc18dSsnjvoid 3767956cc18dSsnjupdate_menu_allowWindowOps(void) 3768956cc18dSsnj{ 3769956cc18dSsnj UpdateCheckbox("update_menu_allowWindowOps", 3770956cc18dSsnj fontMenuEntries, 3771956cc18dSsnj fontMenu_allowWindowOps, 377220d2c4d2Smrg TScreenOf(term)->allowWindowOps); 3773956cc18dSsnj} 3774956cc18dSsnj#endif 3775956cc18dSsnj 3776d522f475Smrg#if OPT_TEK4014 3777d522f475Smrgvoid 3778d522f475Smrgupdate_tekshow(void) 3779d522f475Smrg{ 378020d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 3781d522f475Smrg UpdateCheckbox("update_tekshow", 3782d522f475Smrg vtMenuEntries, 3783d522f475Smrg vtMenu_tekshow, 3784d522f475Smrg TEK4014_SHOWN(term)); 3785d522f475Smrg } 3786d522f475Smrg} 3787d522f475Smrg 3788d522f475Smrgvoid 3789d522f475Smrgupdate_vttekmode(void) 3790d522f475Smrg{ 37910bd37d32Smrg XtermWidget xw = term; 37920bd37d32Smrg 37930bd37d32Smrg if (!(TScreenOf(xw)->inhibit & I_TEK)) { 3794d522f475Smrg UpdateCheckbox("update_vtmode", 3795d522f475Smrg vtMenuEntries, 3796d522f475Smrg vtMenu_tekmode, 37970bd37d32Smrg TEK4014_ACTIVE(xw)); 3798d522f475Smrg UpdateCheckbox("update_tekmode", 3799d522f475Smrg tekMenuEntries, 3800d522f475Smrg tekMenu_vtmode, 38010bd37d32Smrg !TEK4014_ACTIVE(xw)); 38020bd37d32Smrg update_fullscreen(); 3803d522f475Smrg } 3804d522f475Smrg} 3805d522f475Smrg 3806d522f475Smrgvoid 3807d522f475Smrgupdate_vtshow(void) 3808d522f475Smrg{ 380920d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 3810d522f475Smrg UpdateCheckbox("update_vtshow", 3811d522f475Smrg tekMenuEntries, 3812d522f475Smrg tekMenu_vtshow, 381320d2c4d2Smrg TScreenOf(term)->Vshow); 3814d522f475Smrg } 3815d522f475Smrg} 3816d522f475Smrg 3817d522f475Smrgvoid 3818d522f475Smrgset_vthide_sensitivity(void) 3819d522f475Smrg{ 382020d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 3821d522f475Smrg SetItemSensitivity( 3822d522f475Smrg vtMenuEntries[vtMenu_vthide].widget, 3823d522f475Smrg TEK4014_SHOWN(term)); 3824d522f475Smrg } 3825d522f475Smrg} 3826d522f475Smrg 3827d522f475Smrgvoid 3828d522f475Smrgset_tekhide_sensitivity(void) 3829d522f475Smrg{ 383020d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 3831d522f475Smrg SetItemSensitivity( 3832d522f475Smrg tekMenuEntries[tekMenu_tekhide].widget, 383320d2c4d2Smrg TScreenOf(term)->Vshow); 3834d522f475Smrg } 3835d522f475Smrg} 3836d522f475Smrg 3837d522f475Smrgvoid 3838d522f475Smrgset_tekfont_menu_item(int n, int val) 3839d522f475Smrg{ 384020d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 3841d522f475Smrg UpdateCheckbox("set_tekfont_menu_item", tekMenuEntries, FS2MI(n), 3842d522f475Smrg (val)); 3843d522f475Smrg } 3844d522f475Smrg} 3845d522f475Smrg#endif /* OPT_TEK4014 */ 3846d522f475Smrg 3847d522f475Smrgvoid 3848d522f475Smrgset_menu_font(int val) 3849d522f475Smrg{ 3850d522f475Smrg UpdateCheckbox("set_menu_font", 3851d522f475Smrg fontMenuEntries, 385220d2c4d2Smrg TScreenOf(term)->menu_font_number, 3853d522f475Smrg (val)); 3854d522f475Smrg} 3855