home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-18.59-src.tgz / emacs-18.59-src.tar / fsf / emacs18 / oldXMenu / XMenu.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  9KB  |  263 lines

  1. #include "copyright.h"
  2.  
  3. /* $Header: XMenu.h,v 1.5 87/12/04 10:26:47 swick Exp $ */
  4. /* Copyright    Massachusetts Institute of Technology    1985    */
  5.  
  6. /*
  7.  * XMenu:    MIT Project Athena, X Window system menu package
  8.  *
  9.  *    XMenu.h -    Include file for the MIT Project Athena
  10.  *            XMenu X window system menu package.
  11.  *            
  12.  *    Author:        Tony Della Fera, DEC
  13.  *            August, 1984
  14.  */
  15.  
  16. #ifndef _XMenu_h_
  17. #define _XMenu_h_
  18.  
  19. #include <X11/Xutil.h>
  20. #include "X10.h"
  21.  
  22. #define FAILURE            -1
  23. #define SUCCESS            1
  24. #define POST_ERROR        -1
  25. #define NO_SELECTION        -1
  26.  
  27. #define XM_FAILURE        -1
  28. #define XM_SUCCESS        1
  29. #define XM_NO_SELECT        2
  30. #define XM_IA_SELECT        3
  31.  
  32. #define XME_CODE_COUNT        17
  33.  
  34. #define XME_NO_ERROR        0
  35. #define XME_NOT_INIT        1
  36. #define XME_ARG_BOUNDS        2
  37. #define XME_P_NOT_FOUND        3
  38. #define XME_S_NOT_FOUND        4
  39. #define XME_STYLE_PARAM        5
  40. #define XME_GRAB_MOUSE        6
  41. #define XME_INTERP_LOC        7
  42. #define XME_CALLOC        8
  43. #define XME_CREATE_ASSOC    9
  44. #define XME_STORE_BITMAP    10
  45. #define XME_MAKE_TILES        11
  46. #define XME_MAKE_PIXMAP        12
  47. #define XME_CREATE_CURSOR    13
  48. #define XME_OPEN_FONT        14
  49. #define XME_CREATE_WINDOW    15
  50. #define XME_CREATE_TRANSP    16
  51.  
  52. /*
  53.  * XMenu error code and error list definitions.
  54.  */
  55. extern int _XMErrorCode;
  56. extern char *_XMErrorList[];
  57.  
  58. /*
  59.  * Define the XMWindow datatypes.
  60.  *
  61.  * An XMWindow is either an XMPane or an XMSelect.
  62.  *
  63.  * XMWindow is wrapper used to identify the constant window
  64.  * information that makes up XMPane and XMSelect objects.
  65.  *
  66.  * An XMPane is a menu pane made up of one or more XMSelect and a label.
  67.  *
  68.  * An XMSelect is a menu selection object with a label and a data pointer.
  69.  */
  70. typedef enum _xmwintype {PANE, SELECTION, PL_HEADER, SL_HEADER} XMWType;
  71.  
  72. typedef struct _xmwindow {
  73.     struct _xmwindow *next;    /* Next obj pointer (for insque). */
  74.     struct _xmwindow *prev;    /* Prev obj pointer (for insque). */
  75.     XMWType type;        /* Type of window. */
  76.     Window window;        /* X Window Id. */
  77.     int window_x;        /* Window upper left X coordinate. */
  78.     int window_y;        /* Window upper left y coordinate. */
  79.     int window_w;        /* Window width. */
  80.     int window_h;        /* Window height. */
  81.     int active;            /* Window active? */
  82.     int activated;        /* Window activated? */
  83.     int pad_l1;            /* ---- */
  84.     char *pad_l2;        /* ---- */
  85.     int pad_l3;            /* ---- */
  86.     int pad_l4;            /* ---- */
  87.     int pad_l5;            /* ---- */
  88.     int pad_l6;            /* ---- */
  89.     int pad_l7;            /* ---- */
  90.     int pad_l8;            /* ---- */
  91.     struct _xmwindow *pad_l9;    /* ---- */
  92.     char *pad_l10;        /* ---- */
  93.     struct _xmwindow *pad_l11;    /* ---- */
  94. } XMWindow;
  95.  
  96. typedef struct _xmpane {
  97.     struct _xmpane *next;    /* Next obj pointer (for insque). */
  98.     struct _xmpane *prev;    /* Prev obj pointer (for insque). */
  99.     XMWType type;        /* Type of window. */
  100.     Window window;        /* X Window Id. */
  101.     int window_x;        /* Window upper left X coordinate. */
  102.     int window_y;        /* Window upper left y coordinate. */
  103.     int window_w;        /* Window width. */
  104.     int window_h;        /* Window height. */
  105.     int active;            /* Window active? */
  106.     int activated;        /* Window activated? */
  107.     int serial;            /* -- Pane serial number. */
  108.     char *label;        /* -- Pane label. */
  109.     int label_width;        /* -- Pane label width in pixels. */
  110.     int label_length;        /* -- Pane label length in chars. */
  111.     int label_x;        /* -- Pane label X offset. */
  112.     int label_uy;        /* -- Pane label upper Y offset. */
  113.     int label_ly;        /* -- Pane label lower Y offset. */
  114.     int s_count;        /* -- Selections in this pane. */
  115.     struct _xmselect *s_list;    /* -- Selection  window list. */
  116.     char *pad_l10;        /* ---- */
  117.     struct _xmwindow *pad_l11;    /* ---- */
  118. } XMPane;
  119.  
  120. typedef struct _xmselect {
  121.     struct _xmselect *next;    /* Next obj pointer (for insque). */
  122.     struct _xmselect *prev;    /* Prev obj pointer (for insque). */
  123.     XMWType type;        /* Type of window. */
  124.     Window window;        /* X Window Id. */
  125.     Window parent;        /* X Window id of parent window. */
  126.     int window_x;        /* Window upper left X coordinate. */
  127.     int window_y;        /* Window upper left y coordinate. */
  128.     int window_w;        /* Window width. */
  129.     int window_h;        /* Window height. */
  130.     int active;            /* Window active? */
  131.     int activated;        /* Window activated? */
  132.     int serial;            /* -- Selection serial number. */
  133.     char *label;        /* -- Selection label. */
  134.     int label_width;        /* -- Selection label width in pixels. */
  135.     int label_length;        /* -- Selection label length in chars. */
  136.     int label_x;        /* -- Selection label X offset. */
  137.     int label_y;        /* -- Selection label Y offset. */
  138.     int pad_l7;            /* ---- */
  139.     int pad_l8;            /* ---- */
  140.     struct _xmwindow *pad_l9;    /* ---- */
  141.     char *data;            /* -- Selection data pointer. */
  142.     struct _xmpane *parent_p;    /* -- Selection parent pane structure. */
  143. } XMSelect;
  144.  
  145.  
  146. /*
  147.  * Define the XMStyle datatype.
  148.  *
  149.  * Menu presentation style information.
  150.  *
  151.  */
  152. typedef enum _xmstyle {
  153.     LEFT,            /* Left oriented obejct. */
  154.     RIGHT,            /* Right oriented obejct. */
  155.     CENTER            /* Center oriented object. */
  156. } XMStyle;
  157.  
  158.  
  159. /*
  160.  * Define the XMMode datatype.
  161.  *
  162.  * Menu presentation mode information.
  163.  *
  164.  */
  165. typedef enum _xmmode {
  166.     BOX,            /* BOXed graphic rendition. */
  167.     INVERT            /* INVERTed graphic rendition. */
  168. } XMMode;
  169.  
  170.  
  171. /* 
  172.  * Define the XMenu datatype. 
  173.  *
  174.  * All dimensions are in pixels unless otherwise noted.
  175.  */
  176. typedef struct _xmenu {
  177.     /* -------------------- Menu data -------------------- */
  178.     XMStyle menu_style;        /* Menu display style. */
  179.     XMMode menu_mode;        /* Menu display mode. */
  180.     int freeze;            /* Freeze server mode? */
  181.     int aeq;            /* Asynchronous Event Queueing mode? */
  182.     int recompute;        /* Recompute menu dependecies? */
  183.     Window parent;        /* Menu's parent window. */
  184.     int width;            /* Overall menu width. */
  185.     int height;            /* Overall menu height. */
  186.     int x_pos;            /* Oveall menu origin. */
  187.     int y_pos;            /* Overall menu origin. */
  188.     Cursor mouse_cursor;    /* Mouse cursor raster. */
  189.     XAssocTable *assoc_tab;    /* XMWindow association table. */
  190.     XMPane *p_list;        /* List of XMPanes. */
  191.     /* -------------------- Pane window data -------------------- */
  192.     XMStyle p_style;        /* Pane display style. */
  193.     int p_events;        /* Pane window X events. */
  194.     XFontStruct *p_fnt_info;    /* Flag font info structure. */
  195.     GC pane_GC;            /* Pane graphics context. */
  196.     int p_fnt_pad;        /* Fixed flag font padding in pixels. */
  197.     double p_spread;        /* Pane spread in flag height fractions. */
  198.     int p_bdr_width;        /* Pane border width. */
  199.     int flag_height;        /* Flag height. */
  200.     int p_width;        /* Menu pane width. */
  201.     int p_height;        /* Menu pane height. */
  202.     int p_x_off;        /* Pane window X offset. */
  203.     int p_y_off;        /* Pane window Y offset. */
  204.     int p_count;        /* Number of panes per menu. */
  205.     /* -------------------- Selection window data -------------------- */
  206.     XMStyle s_style;        /* Selection display style. */
  207.     int s_events;        /* Selection window X events. */
  208.     XFontStruct *s_fnt_info;    /* Body font info structure. */
  209.     int s_fnt_pad;        /* Fixed body font padding in pixels. */
  210.     double s_spread;        /* Select spread in line height fractions. */
  211.     int s_bdr_width;        /* Select border width. */
  212.     int s_width;        /* Selection window width. */
  213.     int s_height;        /* Selection window height. */
  214.     int s_x_off;        /* Selection window X offset. */
  215.     int s_y_off;        /* Selection window Y offset. */
  216.     int s_count;        /* Maximum number of selections per pane. */
  217.     GC normal_select_GC;    /* GC used for inactive selections. */
  218.     GC inverse_select_GC;    /* GC used for active (current) selection. */  
  219.     GC inact_GC;        /* GC used for inactive selections and */
  220.                 /* panes headers. */
  221.     /* -------------------- Color data -------------------- */
  222.     unsigned long p_bdr_color;    /* Color of pane border pixmap. */
  223.     unsigned long s_bdr_color;    /* Color of selection border pixmap. */
  224.     unsigned long p_frg_color;    /* Color of pane foreground pixmap. */
  225.     unsigned long s_frg_color;    /* Color of selection pixmap. */
  226.     unsigned long bkgnd_color;    /* Color of menu background pixmap. */
  227.     /* -------------------- Pixmap data -------------------- */
  228.     Pixmap p_bdr_pixmap;    /* Pane border pixmap. */
  229.     Pixmap s_bdr_pixmap;    /* Selection border pixmap. */
  230.     Pixmap p_frg_pixmap;    /* Pane foreground pixmap. */
  231.     Pixmap s_frg_pixmap;    /* Selection foreground pixmap. */
  232.     Pixmap bkgnd_pixmap;    /* Menu background pixmap. */
  233.     Pixmap inact_pixmap;    /* Menu inactive pixmap. */
  234. } XMenu;
  235.  
  236. /*
  237.  * XMenu library routine declarations.
  238.  */
  239. XMenu *XMenuCreate();
  240. int XMenuAddPane();
  241. int XMenuAddSelection();
  242. int XMenuInsertPane();
  243. int XMenuInsertSelection();
  244. int XMenuFindPane();
  245. int XMenuFindSelection();
  246. int XMenuChangePane();
  247. int XMenuChangeSelection();
  248. int XMenuSetPane();
  249. int XMenuSetSelection();
  250. int XMenuRecompute();
  251. int XMenuEventHandler();    /* No value actually returned. */
  252. int XMenuLocate();
  253. int XMenuSetFreeze();        /* No value actually returned. */
  254. int XMenuActivate();
  255. char *XMenuPost();
  256. int XMenuDeletePane();
  257. int XMenuDeleteSelection();
  258. int XMenuDestroy();        /* No value actually returned. */
  259. char *XMenuError();
  260.  
  261. #endif
  262. /* Don't add after this point. */
  263.