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