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