menu.h revision 913cc679
1/* $XTermId: menu.h,v 1.139 2016/12/22 02:04:51 tom Exp $ */ 2 3/* 4 * Copyright 1999-2015,2016 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 HandleAllowMouseOps PROTO_XT_ACTIONS_ARGS; 83extern void HandleAllowSends PROTO_XT_ACTIONS_ARGS; 84extern void HandleAllowTcapOps PROTO_XT_ACTIONS_ARGS; 85extern void HandleAllowTitleOps PROTO_XT_ACTIONS_ARGS; 86extern void HandleAllowWindowOps PROTO_XT_ACTIONS_ARGS; 87extern void HandleAltEsc PROTO_XT_ACTIONS_ARGS; 88extern void HandleAltScreen PROTO_XT_ACTIONS_ARGS; 89extern void HandleAppCursor PROTO_XT_ACTIONS_ARGS; 90extern void HandleAppKeypad PROTO_XT_ACTIONS_ARGS; 91extern void HandleAutoLineFeed PROTO_XT_ACTIONS_ARGS; 92extern void HandleAutoWrap PROTO_XT_ACTIONS_ARGS; 93extern void HandleBackarrow PROTO_XT_ACTIONS_ARGS; 94extern void HandleBellIsUrgent PROTO_XT_ACTIONS_ARGS; 95extern void HandleClearSavedLines PROTO_XT_ACTIONS_ARGS; 96extern void HandleCreateMenu PROTO_XT_ACTIONS_ARGS; 97extern void HandleCursesEmul PROTO_XT_ACTIONS_ARGS; 98extern void HandleCursorBlink PROTO_XT_ACTIONS_ARGS; 99extern void HandleDeleteIsDEL PROTO_XT_ACTIONS_ARGS; 100extern void HandleDumpHtml PROTO_XT_ACTIONS_ARGS; 101extern void HandleDumpSvg PROTO_XT_ACTIONS_ARGS; 102extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS; 103extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS; 104extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS; 105extern void HandleFontPacked PROTO_XT_ACTIONS_ARGS; 106extern void HandleFullscreen PROTO_XT_ACTIONS_ARGS; 107extern void HandleHardReset PROTO_XT_ACTIONS_ARGS; 108extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS; 109extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS; 110extern void HandleKeepClipboard PROTO_XT_ACTIONS_ARGS; 111extern void HandleKeepSelection PROTO_XT_ACTIONS_ARGS; 112extern void HandleLogging PROTO_XT_ACTIONS_ARGS; 113extern void HandleMarginBell PROTO_XT_ACTIONS_ARGS; 114extern void HandleMetaEsc PROTO_XT_ACTIONS_ARGS; 115extern void HandleNumLock PROTO_XT_ACTIONS_ARGS; 116extern void HandleOldFunctionKeys PROTO_XT_ACTIONS_ARGS; 117extern void HandlePopupMenu PROTO_XT_ACTIONS_ARGS; 118extern void HandlePrintControlMode PROTO_XT_ACTIONS_ARGS; 119extern void HandlePrintEverything PROTO_XT_ACTIONS_ARGS; 120extern void HandlePrintScreen PROTO_XT_ACTIONS_ARGS; 121extern void HandleQuit PROTO_XT_ACTIONS_ARGS; 122extern void HandleRedraw PROTO_XT_ACTIONS_ARGS; 123extern void HandleRenderFont PROTO_XT_ACTIONS_ARGS; 124extern void HandleReverseVideo PROTO_XT_ACTIONS_ARGS; 125extern void HandleReverseWrap PROTO_XT_ACTIONS_ARGS; 126extern void HandleScoFunctionKeys PROTO_XT_ACTIONS_ARGS; 127extern void HandleScrollKey PROTO_XT_ACTIONS_ARGS; 128extern void HandleScrollTtyOutput PROTO_XT_ACTIONS_ARGS; 129extern void HandleScrollbar PROTO_XT_ACTIONS_ARGS; 130extern void HandleSecure PROTO_XT_ACTIONS_ARGS; 131extern void HandleSendSignal PROTO_XT_ACTIONS_ARGS; 132extern void HandleSetPopOnBell PROTO_XT_ACTIONS_ARGS; 133extern void HandleSetPrivateColorRegisters PROTO_XT_ACTIONS_ARGS; 134extern void HandleSetSelect PROTO_XT_ACTIONS_ARGS; 135extern void HandleSetTekText PROTO_XT_ACTIONS_ARGS; 136extern void HandleSetTerminalType PROTO_XT_ACTIONS_ARGS; 137extern void HandleSetVisualBell PROTO_XT_ACTIONS_ARGS; 138extern void HandleSixelScrolling PROTO_XT_ACTIONS_ARGS; 139extern void HandleSoftReset PROTO_XT_ACTIONS_ARGS; 140extern void HandleSunFunctionKeys PROTO_XT_ACTIONS_ARGS; 141extern void HandleSunKeyboard PROTO_XT_ACTIONS_ARGS; 142extern void HandleTekCopy PROTO_XT_ACTIONS_ARGS; 143extern void HandleTekPage PROTO_XT_ACTIONS_ARGS; 144extern void HandleTekReset PROTO_XT_ACTIONS_ARGS; 145extern void HandleTiteInhibit PROTO_XT_ACTIONS_ARGS; 146extern void HandleToolbar PROTO_XT_ACTIONS_ARGS; 147extern void HandleUTF8Fonts PROTO_XT_ACTIONS_ARGS; 148extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS; 149extern void HandleUTF8Title PROTO_XT_ACTIONS_ARGS; 150extern void HandleVisibility PROTO_XT_ACTIONS_ARGS; 151extern void HandleWriteError PROTO_XT_ACTIONS_ARGS; 152extern void HandleWriteNow PROTO_XT_ACTIONS_ARGS; 153 154extern void SetupMenus (Widget /*shell*/, Widget */*forms*/, Widget */*menus*/, Dimension * /*menu_high*/); 155 156#if OPT_TOOLBAR 157extern void ShowToolbar(Bool); 158#endif 159 160/* 161 * The following definitions MUST match the order of entries given in 162 * the mainMenuEntries, vtMenuEntries, and tekMenuEntries arrays in menu.c. 163 */ 164 165/* 166 * items in primary menu 167 */ 168typedef enum { 169#if OPT_TOOLBAR 170 mainMenu_toolbar, 171#endif 172#if OPT_MAXIMIZE 173 mainMenu_fullscreen, 174#endif 175 mainMenu_securekbd, 176 mainMenu_allowsends, 177 mainMenu_redraw, 178 mainMenu_line1, 179#ifdef ALLOWLOGGING 180 mainMenu_logging, 181#endif 182#if OPT_PRINT_ON_EXIT 183 mainMenu_write_now, 184 mainMenu_write_error, 185#endif 186 mainMenu_print, 187 mainMenu_print_redir, 188#if OPT_SCREEN_DUMPS 189 mainMenu_dump_html, 190 mainMenu_dump_svg, 191#endif 192 mainMenu_line2, 193 mainMenu_8bit_ctrl, 194 mainMenu_backarrow, 195#if OPT_NUM_LOCK 196 mainMenu_num_lock, 197 mainMenu_alt_esc, 198 mainMenu_meta_esc, 199#endif 200 mainMenu_delete_del, 201 mainMenu_old_fkeys, 202#if OPT_TCAP_FKEYS 203 mainMenu_tcap_fkeys, 204#endif 205#if OPT_HP_FUNC_KEYS 206 mainMenu_hp_fkeys, 207#endif 208#if OPT_SCO_FUNC_KEYS 209 mainMenu_sco_fkeys, 210#endif 211#if OPT_SUN_FUNC_KEYS 212 mainMenu_sun_fkeys, 213#endif 214#if OPT_SUNPC_KBD 215 mainMenu_sun_kbd, 216#endif 217 mainMenu_line3, 218 mainMenu_suspend, 219 mainMenu_continue, 220 mainMenu_interrupt, 221 mainMenu_hangup, 222 mainMenu_terminate, 223 mainMenu_kill, 224 mainMenu_line4, 225 mainMenu_quit, 226 mainMenu_LAST 227} mainMenuIndices; 228 229 230/* 231 * items in vt100 mode menu 232 */ 233typedef enum { 234 vtMenu_scrollbar, 235 vtMenu_jumpscroll, 236 vtMenu_reversevideo, 237 vtMenu_autowrap, 238 vtMenu_reversewrap, 239 vtMenu_autolinefeed, 240 vtMenu_appcursor, 241 vtMenu_appkeypad, 242 vtMenu_scrollkey, 243 vtMenu_scrollttyoutput, 244 vtMenu_allow132, 245 vtMenu_keepSelection, 246 vtMenu_selectToClipboard, 247 vtMenu_visualbell, 248 vtMenu_bellIsUrgent, 249 vtMenu_poponbell, 250#if OPT_BLINK_CURS 251 vtMenu_cursorblink, 252#endif 253 vtMenu_titeInhibit, 254#ifndef NO_ACTIVE_ICON 255 vtMenu_activeicon, 256#endif /* NO_ACTIVE_ICON */ 257 vtMenu_line1, 258 vtMenu_softreset, 259 vtMenu_hardreset, 260 vtMenu_clearsavedlines, 261 vtMenu_line2, 262#if OPT_TEK4014 263 vtMenu_tekshow, 264 vtMenu_tekmode, 265 vtMenu_vthide, 266#endif 267 vtMenu_altscreen, 268#if OPT_SIXEL_GRAPHICS 269 vtMenu_sixelscrolling, 270#endif 271#if OPT_GRAPHICS 272 vtMenu_privatecolorregisters, 273#endif 274 vtMenu_LAST 275} vtMenuIndices; 276 277/* 278 * items in vt100 font menu 279 */ 280typedef enum { 281 fontMenu_default, 282 fontMenu_font1, 283 fontMenu_font2, 284 fontMenu_font3, 285 fontMenu_font4, 286 fontMenu_font5, 287 fontMenu_font6, 288#define fontMenu_lastBuiltin fontMenu_font6 289 fontMenu_fontescape, 290 fontMenu_fontsel, 291/* number of non-line items down to here should match NMENUFONTS in ptyx.h */ 292 293#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 294 fontMenu_line1, 295 fontMenu_allowBoldFonts, 296#if OPT_BOX_CHARS 297 fontMenu_font_boxchars, 298 fontMenu_font_packedfont, 299#endif 300#if OPT_DEC_CHRSET 301 fontMenu_font_doublesize, 302#endif 303#if OPT_DEC_SOFTFONT 304 fontMenu_font_loadable, 305#endif 306#endif 307 308#if OPT_RENDERFONT || OPT_WIDE_CHARS 309 fontMenu_line2, 310#if OPT_RENDERFONT 311 fontMenu_render_font, 312#endif 313#if OPT_WIDE_CHARS 314 fontMenu_utf8_mode, 315 fontMenu_utf8_fonts, 316 fontMenu_utf8_title, 317#endif 318#endif 319#if OPT_ALLOW_XXX_OPS 320 fontMenu_line3, 321 fontMenu_allowColorOps, 322 fontMenu_allowFontOps, 323 fontMenu_allowMouseOps, 324 fontMenu_allowTcapOps, 325 fontMenu_allowTitleOps, 326 fontMenu_allowWindowOps, 327#endif 328 329 fontMenu_LAST 330} fontMenuIndices; 331 332/* 333 * items in tek4014 mode menu 334 */ 335#if OPT_TEK4014 336typedef enum { 337 tekMenu_tektextlarge, 338 tekMenu_tektext2, 339 tekMenu_tektext3, 340 tekMenu_tektextsmall, 341 tekMenu_line1, 342 tekMenu_tekpage, 343 tekMenu_tekreset, 344 tekMenu_tekcopy, 345 tekMenu_line2, 346 tekMenu_vtshow, 347 tekMenu_vtmode, 348 tekMenu_tekhide, 349 tekMenu_LAST 350} tekMenuIndices; 351#endif 352 353 354/* 355 * functions for updating menus 356 */ 357 358extern void SetItemSensitivity(Widget mi, Bool val); 359 360typedef enum { 361 toggleErr = -2, 362 toggleAll = -1, 363 toggleOff = 0, 364 toggleOn = 1 365} ToggleEnum; 366 367extern int decodeToggle(XtermWidget /* xw */, String * /* params */, Cardinal /* nparams */); 368 369/* 370 * there should be one of each of the following for each checkable item 371 */ 372#if OPT_TOOLBAR 373extern void update_toolbar(void); 374#else 375#define update_toolbar() /* nothing */ 376#endif 377 378#if OPT_MAXIMIZE 379extern void update_fullscreen(void); 380#else 381#define update_fullscreen() /* nothing */ 382#endif 383 384extern void update_securekbd(void); 385extern void update_allowsends(void); 386 387#ifdef ALLOWLOGGING 388extern void update_logging(void); 389#else 390#define update_logging() /*nothing*/ 391#endif 392 393#if OPT_PRINT_ON_EXIT 394extern void update_write_error(void); 395#else 396#define update_write_error() /*nothing*/ 397#endif 398 399extern void update_print_redir(void); 400extern void update_8bit_control(void); 401extern void update_decbkm(void); 402 403#if OPT_NUM_LOCK 404extern void update_num_lock(void); 405extern void update_alt_esc(void); 406extern void update_meta_esc(void); 407#else 408#define update_num_lock() /*nothing*/ 409#define update_alt_esc() /*nothing*/ 410#define update_meta_esc() /*nothing*/ 411#endif 412 413extern void update_old_fkeys(void); 414extern void update_delete_del(void); 415 416#if OPT_SUNPC_KBD 417extern void update_sun_kbd(void); 418#endif 419 420#if OPT_HP_FUNC_KEYS 421extern void update_hp_fkeys(void); 422#else 423#define update_hp_fkeys() /*nothing*/ 424#endif 425 426#if OPT_SCO_FUNC_KEYS 427extern void update_sco_fkeys(void); 428#else 429#define update_sco_fkeys() /*nothing*/ 430#endif 431 432#if OPT_SUN_FUNC_KEYS 433extern void update_sun_fkeys(void); 434#else 435#define update_sun_fkeys() /*nothing*/ 436#endif 437 438#if OPT_TCAP_FKEYS 439extern void update_tcap_fkeys(void); 440#else 441#define update_tcap_fkeys() /*nothing*/ 442#endif 443 444extern void update_scrollbar(void); 445extern void update_jumpscroll(void); 446extern void update_reversevideo(void); 447extern void update_autowrap(void); 448extern void update_reversewrap(void); 449extern void update_autolinefeed(void); 450extern void update_appcursor(void); 451extern void update_appkeypad(void); 452extern void update_scrollkey(void); 453extern void update_keepSelection(void); 454extern void update_selectToClipboard(void); 455extern void update_scrollttyoutput(void); 456extern void update_allow132(void); 457extern void update_cursesemul(void); 458extern void update_visualbell(void); 459extern void update_bellIsUrgent(void); 460extern void update_poponbell(void); 461 462#define update_keepClipboard() /* nothing */ 463#define update_marginbell() /* nothing */ 464 465#if OPT_LOAD_VTFONTS 466extern void update_font_escape(void); 467#else 468#define update_font_escape() /* nothing */ 469#endif 470 471#if OPT_ALLOW_XXX_OPS 472extern void update_menu_allowColorOps(void); 473extern void update_menu_allowFontOps(void); 474extern void update_menu_allowMouseOps(void); 475extern void update_menu_allowTcapOps(void); 476extern void update_menu_allowTitleOps(void); 477extern void update_menu_allowWindowOps(void); 478#endif 479 480#if OPT_BLINK_CURS 481extern void update_cursorblink(void); 482#else 483#define update_cursorblink() /* nothing */ 484#endif 485 486extern void update_altscreen(void); 487extern void update_titeInhibit(void); 488 489#ifndef NO_ACTIVE_ICON 490extern void update_activeicon(void); 491#endif /* NO_ACTIVE_ICON */ 492 493#if OPT_DEC_CHRSET 494extern void update_font_doublesize(void); 495#else 496#define update_font_doublesize() /* nothing */ 497#endif 498 499#if OPT_BOX_CHARS 500extern void update_font_boxchars(void); 501extern void update_font_packed(void); 502#else 503#define update_font_boxchars() /* nothing */ 504#define update_font_packed() /* nothing */ 505#endif 506 507#if OPT_SIXEL_GRAPHICS 508extern void update_decsdm(void); 509#else 510#define update_decsdm() /* nothing */ 511#endif 512 513#if OPT_GRAPHICS 514extern void update_privatecolorregisters(void); 515#else 516#define update_privatecolorregisters() /* nothing */ 517#endif 518 519#if OPT_DEC_SOFTFONT 520extern void update_font_loadable(void); 521#else 522#define update_font_loadable() /* nothing */ 523#endif 524 525#if OPT_RENDERFONT 526extern void update_font_renderfont(void); 527#else 528#define update_font_renderfont() /* nothing */ 529#endif 530 531#if OPT_WIDE_CHARS 532extern void update_font_utf8_mode(void); 533extern void update_font_utf8_fonts(void); 534extern void update_font_utf8_title(void); 535#else 536#define update_font_utf8_mode() /* nothing */ 537#define update_font_utf8_fonts() /* nothing */ 538#define update_font_utf8_title() /* nothing */ 539#endif 540 541#if OPT_TEK4014 542extern void update_tekshow(void); 543extern void update_vttekmode(void); 544extern void update_vtshow(void); 545extern void set_vthide_sensitivity(void); 546extern void set_tekhide_sensitivity(void); 547#else 548#define update_tekshow() /*nothing*/ 549#define update_vttekmode() /*nothing*/ 550#define update_vtshow() /*nothing*/ 551#define set_vthide_sensitivity() /*nothing*/ 552#define set_tekhide_sensitivity() /*nothing*/ 553#endif 554 555#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 556extern void update_menu_allowBoldFonts(void); 557#else 558#define update_menu_allowBoldFonts() /*nothing*/ 559#endif 560 561/* 562 * macros for mapping font size to tekMenu placement 563 */ 564#define FS2MI(n) (n) /* font_size_to_menu_item */ 565#define MI2FS(n) (n) /* menu_item_to_font_size */ 566 567#if OPT_TEK4014 568extern void set_tekfont_menu_item(int n,int val); 569#else 570#define set_tekfont_menu_item(n,val) /*nothing*/ 571#endif 572 573extern void set_menu_font(int val); 574 575/* *INDENT-ON* */ 576 577#endif /* included_menu_h */ 578