home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / include / Xm / CascadeBP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-30  |  5.3 KB  |  178 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992, 1993 OPEN SOFTWARE FOUNDATION, INC. 
  3.  * ALL RIGHTS RESERVED 
  4. */ 
  5. /* 
  6.  * Motif Release 1.2.3
  7. */ 
  8. /*   $RCSfile: CascadeBP.h,v $ $Revision: 10.1 $ $Date: 1994/02/03 15:35:16 $ */
  9. /*
  10. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  11. /*
  12. *  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  13. #ifndef  _XmCascadeBP_h
  14. #define  _XmCascadeBP_h
  15.  
  16. #include <Xm/CascadeB.h>
  17. #include <Xm/LabelP.h>
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /* The CascadeButton instance record */
  24.  
  25. typedef    struct 
  26. {                /* resources */
  27.     XtCallbackList    activate_callback;    /* widget fired callback */
  28.     XtCallbackList    cascade_callback;    /* called when the menu is  */
  29.                         /* about to be pulled down */
  30.  
  31.     Widget        submenu;        /* the menu to pull down */
  32.     Pixmap        cascade_pixmap;        /* pixmap for the cascade */
  33.     int         map_delay;        /* time delay for posting */
  34.  
  35.                 /* internal fields */
  36.  
  37.     Boolean        armed;            /* armed flag */
  38.     XRectangle        cascade_rect;        /* location of cascade*/
  39.     XtIntervalId    timer;            /* timeout id */
  40.     Pixmap        armed_pixmap;        /* arm arrow cascade */
  41.  
  42. } XmCascadeButtonPart;
  43.  
  44.  
  45. /* Full instance record declaration */
  46.  
  47. typedef struct _XmCascadeButtonRec
  48. {
  49.     CorePart        core;
  50.     XmPrimitivePart    primitive;
  51.     XmLabelPart        label;
  52.     XmCascadeButtonPart    cascade_button;
  53. } XmCascadeButtonRec;
  54.  
  55. typedef struct _XmCascadeButtonWidgetRec/* OBSOLETE (for compatibility only).*/
  56. {
  57.     CorePart        core;
  58.     XmPrimitivePart    primitive;
  59.     XmLabelPart        label;
  60.     XmCascadeButtonPart    cascade_button;
  61. } XmCascadeButtonWidgetRec;
  62.  
  63.  
  64. /* CascadeButton class structure */
  65.  
  66. typedef struct 
  67. {
  68.     XtPointer    extension;    /* Pointer to extension record */
  69. } XmCascadeButtonClassPart;
  70.  
  71.  
  72. /* Full class record declaration for CascadeButton class */
  73.  
  74. typedef struct _XmCascadeButtonClassRec 
  75. {
  76.     CoreClassPart        core_class;
  77.     XmPrimitiveClassPart    primitive_class;
  78.     XmLabelClassPart        label_class;
  79.     XmCascadeButtonClassPart cascade_button_class;
  80. } XmCascadeButtonClassRec;
  81.  
  82.  
  83. externalref XmCascadeButtonClassRec   xmCascadeButtonClassRec;
  84.  
  85. /* Access macro definitions */
  86.  
  87. #define CB_Submenu(cb)        (((XmCascadeButtonWidget)                    \
  88.                                   cb)->cascade_button.submenu)
  89.  
  90. #define CB_ActivateCall(cb)    (((XmCascadeButtonWidget)                    \
  91.                                   cb)->cascade_button.activate_callback)
  92. #define CB_CascadeCall(cb)    (((XmCascadeButtonWidget)                    \
  93.                                   cb)->cascade_button.cascade_callback)
  94.  
  95.  
  96. #define CB_CascadePixmap(cb)    (((XmCascadeButtonWidget)                    \
  97.                                   cb)->cascade_button.cascade_pixmap)
  98. #define CB_ArmedPixmap(cb)    (((XmCascadeButtonWidget)                    \
  99.                                   cb)->cascade_button.armed_pixmap)
  100.  
  101. #define CB_Cascade_x(cb)    (((XmCascadeButtonWidget)                    \
  102.                                   cb)->cascade_button.cascade_rect.x)
  103. #define CB_Cascade_y(cb)    (((XmCascadeButtonWidget)                    \
  104.                                   cb)->cascade_button.cascade_rect.y)
  105. #define CB_Cascade_width(cb)    (((XmCascadeButtonWidget)                    \
  106.                                   cb)->cascade_button.cascade_rect.width)
  107. #define CB_Cascade_height(cb)    (((XmCascadeButtonWidget)                    \
  108.                                   cb)->cascade_button.cascade_rect.height)
  109.  
  110. #define CB_HasCascade(cb)       (((Lab_MenuType(cb) == XmMENU_PULLDOWN)  ||  \
  111.                   (Lab_MenuType(cb) == XmMENU_POPUP)) &&     \
  112.                      (CB_Submenu(cb)))
  113.  
  114.  
  115. #define XmCB_ARMED_BIT          (1 << 0)    
  116. #define XmCB_TRAVERSE_BIT     (1 << 1)
  117.  
  118. #define CB_IsArmed(cb)     (((XmCascadeButtonWidget)(cb))->cascade_button.armed \
  119.               & XmCB_ARMED_BIT)
  120. #define CB_Traversing(cb) (((XmCascadeButtonWidget)                           \
  121.                 (cb))->cascade_button.armed & XmCB_TRAVERSE_BIT)
  122.  
  123. #define CB_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  124.  
  125. #define CB_SetArmed(cb,v)  CB_SetBit (((XmCascadeButtonWidget)             \
  126.                        (cb))->cascade_button.armed,          \
  127.                       XmCB_ARMED_BIT, v)
  128.  
  129. #define CB_SetTraverse(cb,v)  CB_SetBit (((XmCascadeButtonWidget)         \
  130.                        (cb))->cascade_button.armed,          \
  131.                       XmCB_TRAVERSE_BIT, v)
  132.  
  133.  
  134. /********    Private Function Declarations    ********/
  135. #ifdef _NO_PROTO
  136.  
  137. extern void _XmCBHelp() ;
  138. extern void _XmCascadingPopup() ;
  139. #ifdef WINTIF
  140. extern void _WXmDefaultShadowThick();
  141. extern void _WXmDefaultHiThick();
  142. #endif
  143.  
  144.  
  145. #else
  146.  
  147. extern void _XmCBHelp( 
  148.                         Widget w,
  149.                         XEvent *event,
  150.                         String *params,
  151.                         Cardinal *num_params) ;
  152. extern void _XmCascadingPopup( 
  153.                         Widget cb,
  154.                         XEvent *event,
  155. #if NeedWidePrototypes
  156.                         int doCascade) ;
  157. #else
  158.                         Boolean doCascade) ;
  159. #endif /* NeedWidePrototypes */
  160.  
  161. #ifdef WINTIF
  162. extern void
  163. _WXmDefaultShadowThick(Widget widget, int offset, XrmValue *value);
  164. extern void
  165. _WXmDefaultHiThick(Widget widget, int offset, XrmValue *value);
  166. #endif
  167.  
  168. #endif /* _NO_PROTO */
  169. /********    End Private Function Declarations    ********/
  170.  
  171.  
  172. #ifdef __cplusplus
  173. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  174. #endif
  175.  
  176. #endif  /* _XmCascadeBP_h */
  177. /* DON'T ADD STUFF AFTER THIS #endif */
  178.