1 /** 2 * 3 * $Id: CascadeBP.h,v 1.1 2004/08/28 19:23:24 dannybackx Exp $ 4 * 5 * Copyright (C) 1995 Free Software Foundation, Inc. 6 * Copyright (C) 1995-2000 LessTif Development Team 7 * 8 * This file is part of the GNU LessTif Library. 9 * 10 * This library is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU Library General Public 12 * License as published by the Free Software Foundation; either 13 * version 2 of the License, or (at your option) any later version. 14 * 15 * This library is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * Library General Public License for more details. 19 * 20 * You should have received a copy of the GNU Library General Public 21 * License along with this library; if not, write to the Free 22 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 * 24 **/ 25 26 27 #ifndef _XM_CASCADEBP_H 28 #define _XM_CASCADEBP_H 29 30 #include <Xm/CascadeB.h> 31 #include <Xm/LabelP.h> 32 33 #ifdef __cplusplus 34 extern "C" { 35 #endif 36 37 typedef struct { 38 XtCallbackList activate_callback; 39 XtCallbackList cascade_callback; 40 41 Widget submenu; 42 Pixmap cascade_pixmap; 43 int map_delay; 44 45 Boolean armed; 46 XRectangle cascade_rect; 47 XtIntervalId timer; 48 Pixmap armed_pixmap; 49 } XmCascadeButtonPart; 50 51 /* Define the full instance record */ 52 typedef struct _XmCascadeButtonRec { 53 CorePart core; 54 XmPrimitivePart primitive; 55 XmLabelPart label; 56 XmCascadeButtonPart cascade_button; 57 } XmCascadeButtonRec; 58 59 /* Define class part structure */ 60 typedef struct { 61 XtPointer extension; 62 } XmCascadeButtonClassPart; 63 64 /* Define the full class record */ 65 typedef struct _XmCascadeButtonClassRec { 66 CoreClassPart core_class; 67 XmPrimitiveClassPart primitive_class; 68 XmLabelClassPart label_class; 69 XmCascadeButtonClassPart cascade_button_class; 70 } XmCascadeButtonClassRec; 71 72 /* External definition for the class record */ 73 74 XMLIBEXPORT extern XmCascadeButtonClassRec xmCascadeButtonClassRec; 75 76 /* 77 * easy access macros 78 */ 79 #define XmCB_ARMED_BIT (1 << 0) 80 #define XmCB_TRAVERSE_BIT (1 << 1) 81 82 83 #define CB_Submenu(cb) \ 84 (((XmCascadeButtonWidget)(cb))->cascade_button.submenu) 85 86 #define CB_ActivateCall(cb) \ 87 (((XmCascadeButtonWidget)(cb))->cascade_button.activate_callback) 88 89 #define CB_CascadeCall(cb) \ 90 (((XmCascadeButtonWidget)(cb))->cascade_button.cascade_callback) 91 92 #define CB_CascadePixmap(cb) \ 93 (((XmCascadeButtonWidget)(cb))->cascade_button.cascade_pixmap) 94 95 #define CB_ArmedPixmap(cb) \ 96 (((XmCascadeButtonWidget)(cb))->cascade_button.armed_pixmap) 97 98 #define CB_Cascade_x(cb) \ 99 (((XmCascadeButtonWidget)(cb))->cascade_button.cascade_rect.x) 100 101 #define CB_Cascade_y(cb) \ 102 (((XmCascadeButtonWidget)(cb))->cascade_button.cascade_rect.y) 103 104 #define CB_Cascade_width(cb) \ 105 (((XmCascadeButtonWidget)(cb))->cascade_button.cascade_rect.width) 106 107 #define CB_Cascade_height(cb) \ 108 (((XmCascadeButtonWidget)(cb))->cascade_button.cascade_rect.height) 109 110 #define CB_HasCascade(cb) \ 111 (((Lab_MenuType(cb) == XmMENU_PULLDOWN) || \ 112 (Lab_MenuType(cb) == XmMENU_POPUP)) && (CB_Submenu(cb))) 113 114 #define CB_IsArmed(cb) \ 115 (((XmCascadeButtonWidget)(cb))->cascade_button.armed & XmCB_ARMED_BIT) 116 117 #define CB_Traversing(cb) \ 118 (((XmCascadeButtonWidget)(cb))->cascade_button.armed & XmCB_TRAVERSE_BIT) 119 120 #define CB_SetBit(byte,bit,v) \ 121 byte = (byte & (~bit)) | (v ? bit : 0) 122 123 #define CB_SetArmed(cb,v) \ 124 CB_SetBit(((XmCascadeButtonWidget)(cb))->cascade_button.armed, \ 125 XmCB_ARMED_BIT, v) 126 127 #define CB_SetTraverse(cb,v) \ 128 CB_SetBit(((XmCascadeButtonWidget)(cb))->cascade_button.armed, \ 129 XmCB_TRAVERSE_BIT, v) 130 131 /* 132 * functions 133 */ 134 void _XmCBHelp(Widget w, XEvent *event, String *params, Cardinal *num_params); 135 void _XmCascadingPopup(Widget cb, XEvent *event, Boolean doCascade); 136 137 #ifdef __cplusplus 138 } 139 #endif 140 141 #endif /* _XM_CASCADEBP_H */ 142