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