home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume9 / xterm / part06 / menu.h < prev    next >
Encoding:
C/C++ Source or Header  |  1987-04-20  |  3.1 KB  |  89 lines

  1. /*
  2.  *    $Source: /u1/X/xterm/RCS/menu.h,v $
  3.  *    $Header: menu.h,v 10.100 86/12/01 14:40:05 jg Rel $
  4.  */
  5.  
  6. /* @(#)menu.h       X10/6.6B 12/26/86 */
  7. /*
  8.  * Menu items are constructed as follows, starting from the left side:
  9.  *
  10.  *    menuItemPad
  11.  *    space for check mark
  12.  *    menuItemPad
  13.  *    text + padding
  14.  *    menuItemPad
  15.  *
  16.  * The padding for the text is that amount that this text is narrower than the
  17.  * widest text.
  18.  */
  19.  
  20. typedef struct _menuItem {
  21.     int itemHeight;            /* total height of this item */
  22.     int itemFlags;            /* flags of item */
  23.  
  24. #define    itemDisabled        0x0001    /* item is disabled */
  25. #define    itemChecked        0x0002    /* item has check mark */
  26. #define    itemStateMask        0x0003    /* mask for current state */
  27. #define    itemSetDisabled        0x0004    /* item wants to be disabled */
  28. #define    itemSetChecked        0x0008    /* item wants check mark */
  29. #define    itemSetMask        0x000c    /* mask for desired state */
  30. #define    itemSetMaskShift    2    /* for comparison with actual */
  31. #define    itemChanged        0x0010    /* item desires change */
  32.  
  33.     char *itemText;            /* text of item */
  34.     int itemTextWidth;        /* width of text */
  35.     int itemTextLength;        /* length of text */
  36.     struct _menuItem *nextItem;    /* next item in chain */
  37. } MenuItem;
  38.  
  39. typedef struct _menu {
  40.     int menuWidth;            /* full width of menu */
  41.     int menuHeight;            /* full height of menu */
  42.     int menuFlags;            /* flags of this menu */
  43.  
  44. # define    menuChanged    0x0001        /* menu changed, must redraw */
  45. # define    menuItemChanged    0x0002        /* item changed, must redraw */
  46. # define    menuMapped    0x0004        /* menu is now mapped */
  47. # define    menuFreeze    0x0008        /* freeze when doing menu */
  48. # define    menuSaveMenu    0x0010        /* save copy of menu */
  49.  
  50.     int menuMaxTextWidth;        /* width of widest text */
  51.     int menuInitialItem;        /* < 0 none, >= 0 initial item */
  52.     int menuBorderWidth;        /* width of border */
  53.     int menuBgColor;        /* background color */
  54.     int menuFgColor;        /* foreground color */
  55.     Pixmap menuBgTile;        /* backgroud tile */
  56.     FontInfo *menuFontInfo;        /* fontinfo for menu font */
  57.     int menuItemPad;        /* pad amount */
  58.     Window menuWindow;        /* window of menu */
  59.     int (*menuEventHandler)();    /* external event handler */
  60.     Cursor menuCursor;        /* cursor used in menu */
  61.     Pixmap menuSaved;        /* copy of menu */
  62.     Pixmap menuSavedImage;        /* copy of image under menu */
  63.     int menuSavedImageX;        /* X coordinate of the saved image */
  64.     int menuSavedImageY;        /* Y coordinate of the saved image */
  65.     MenuItem *menuItems;        /* head of menu item chain */
  66.     char *menuTitle;        /* title of menu */
  67.     int menuTitleWidth;        /* width of title */
  68.     int menuTitleLength;        /* length of title */
  69.     int menuItemTop;        /* position of top of first item */
  70. } Menu;
  71.  
  72. #define    checkMarkWidth        9
  73. #define    checkMarkHeight        8
  74. #define    defaultCursorWidth    16
  75. #define    defaultCursorHeight    16
  76. #define    defaultCursorX        1
  77. #define    defaultCursorY        1
  78. #define    grayHeight        16
  79. #define    grayWidth        16
  80. #define    lineSeparatorHeight    9
  81.  
  82. #define    CheckItem(menu,item)    SetItemCheck(menu,item,1)
  83. #define    DisableItem(menu,item)    SetItemDisable(menu,item,1)
  84. #define    EnableItem(menu,item)    SetItemDisable(menu,item,0)
  85. #define    SetMenuEventHandler(menu,f)    menu->menuEventHandler = f
  86. #define    UncheckItem(menu,item)    SetItemCheck(menu,item,0)
  87.  
  88. extern Menu *NewMenu();
  89.