1 /** 2 * 3 * $Id: ManagerP.h,v 1.1 2004/08/28 19:23:25 dannybackx Exp $ 4 * 5 * Copyright (C) 1995 Free Software Foundation, Inc. 6 * Copyright � 1995, 1997, 1999, 2000, 2001 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 #ifndef _XM_MANAGERP_H 27 #define _XM_MANAGERP_H 28 29 #include <Xm/XmP.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 #define MCEPTR(cl) \ 36 ((XmManagerClassExt *)(&(((XmManagerWidgetClass)(cl))->manager_class.extension))) 37 #define _XmGetManagerClassExtPtr(cl, o) \ 38 ((*MCEPTR(cl) && (((*MCEPTR(cl))->record_type) == (o))) \ 39 ? MCEPTR(cl) \ 40 : ((XmManagerClassExt *)_XmGetClassExtensionPtr(((XmGenericClassExt *)MCEPTR(cl)), (o)))) 41 42 /* structure used for storing accelerator and mnemonic information */ 43 typedef struct { 44 unsigned int eventType; 45 KeySym keysym; 46 KeyCode key; 47 unsigned int modifiers; 48 Widget component; 49 Boolean needGrab; 50 Boolean isMnemonic; 51 } XmKeyboardData; 52 53 /* Define the manager instance part */ 54 typedef struct { 55 Pixel foreground; 56 57 Dimension shadow_thickness; 58 Pixel top_shadow_color; 59 Pixmap top_shadow_pixmap; 60 Pixel bottom_shadow_color; 61 Pixmap bottom_shadow_pixmap; 62 63 Pixel highlight_color; 64 Pixmap highlight_pixmap; 65 66 XtCallbackList help_callback; 67 XtPointer user_data; 68 69 Boolean traversal_on; 70 unsigned char unit_type; 71 XmNavigationType navigation_type; 72 73 /* private instance variables */ 74 Boolean event_handler_added; 75 Widget active_child; 76 Widget highlighted_widget; 77 Widget accelerator_widget; 78 79 Boolean has_focus; 80 81 XmStringDirection string_direction; /* 2.x */ 82 83 XmKeyboardData *keyboard_list; 84 short num_keyboard_entries; 85 short size_keyboard_list; 86 87 XmGadget selected_gadget; 88 XmGadget eligible_for_multi_button_event; 89 90 GC background_GC; 91 GC highlight_GC; 92 GC top_shadow_GC; 93 GC bottom_shadow_GC; 94 95 Widget initial_focus; 96 97 XtCallbackList popup_handler_callback; /* new for 2.0 */ 98 } XmManagerPart; 99 100 typedef struct { 101 XtPointer next_extension; 102 XrmQuark record_type; 103 long version; 104 Cardinal record_size; 105 XmTraversalChildrenProc traversal_children; 106 } XmManagerClassExtRec, *XmManagerClassExt; 107 108 #define XmManagerClassExtVersion 1L 109 110 /* Define the full instance record */ 111 typedef struct _XmManagerRec { 112 CorePart core; 113 CompositePart composite; 114 ConstraintPart constraint; 115 XmManagerPart manager; 116 } XmManagerRec; 117 118 /* Define class part structure */ 119 typedef struct { 120 String translations; 121 XmSyntheticResource *syn_resources; 122 int num_syn_resources; 123 XmSyntheticResource *syn_constraint_resources; 124 int num_syn_constraint_resources; 125 XmParentProcessProc parent_process; 126 XtPointer extension; 127 } XmManagerClassPart; 128 129 #define XmInheritParentProcess ((XmParentProcessProc) _XtInherit) 130 131 /* Define the full class record */ 132 typedef struct _XmManagerClassRec { 133 CoreClassPart core_class; 134 CompositeClassPart composite_class; 135 ConstraintClassPart constraint_class; 136 XmManagerClassPart manager_class; 137 } XmManagerClassRec; 138 139 /* manager constraints */ 140 141 typedef struct _XmManagerConstraintPart { 142 int unused; 143 } XmManagerConstraintPart; 144 145 typedef struct _XmManagerConstraintRec { 146 XmManagerConstraintPart manager; 147 } XmManagerConstraintRec, *XmManagerConstraintPtr; 148 149 XMLIBEXPORT extern XmManagerClassRec xmManagerClassRec; 150 151 /* 152 * easy access macros -- FOR USE BY GADGET CODE ONLY 153 */ 154 #define XmParentTopShadowGC(w) (((XmManagerWidget) \ 155 (((XmGadget)(w))->object.parent))->manager.top_shadow_GC) 156 157 #define XmParentBottomShadowGC(w) (((XmManagerWidget) \ 158 (((XmGadget)(w))->object.parent))->manager.bottom_shadow_GC) 159 160 #define XmParentHighlightGC(w) (((XmManagerWidget) \ 161 (((XmGadget)(w))->object.parent))->manager.highlight_GC) 162 163 #define XmParentBackgroundGC(w) (((XmManagerWidget) \ 164 (((XmGadget)(w))->object.parent))->manager.background_GC) 165 166 /* 167 * easy access macros -- FOR USE BY MANAGERS. 168 */ 169 #define MGR_SizeKeyboardList(m) (((XmManagerWidget)(m))->manager.size_keyboard_list) 170 #define MGR_ShadowThickness(m) (((XmManagerWidget)(m))->manager.shadow_thickness) 171 #define MGR_KeyboardList(m) (((XmManagerWidget)(m))->manager.keyboard_list) 172 #define MGR_NumKeyboardEntries(m) (((XmManagerWidget)(m))->manager.num_keyboard_entries) 173 174 /* Motif 2.* */ 175 #define MGR_LayoutDirection(m) (((XmManagerWidget)(m))->manager.string_direction) 176 177 /* internal manager routines */ 178 179 Boolean _XmParentProcess(Widget widget, XmParentProcessData data); 180 void _XmDestroyParentCallback ( Widget w, XtPointer client, XtPointer call ); 181 /* What the F is this? */ 182 void _XmSocorro(Widget w, XEvent *event, String *params, Cardinal *num_params); 183 void _XmClearShadowType(Widget w, 184 Dimension old_width, Dimension old_height, 185 Dimension old_shadow_thickness, 186 Dimension old_highlight_thickness); 187 188 /* action routine prototypes */ 189 void _XmGadgetButtonMotion(Widget w, XEvent *event, String *params, Cardinal *num_params); 190 void _XmGadgetArm(Widget w, XEvent *event, String *params, Cardinal *num_params); 191 void _XmGadgetActivate(Widget w, XEvent *event, String *params, Cardinal *num_params); 192 void _XmGadgetMultiArm(Widget w, XEvent *event, String *params, Cardinal *num_params); 193 void _XmGadgetMultiActivate(Widget w, XEvent *event, String *params, Cardinal *num_params); 194 void _XmGadgetDrag(Widget w, XEvent *event, String *params, Cardinal *num_params); 195 void _XmGadgetSelect(Widget w, XEvent *event, String *params, Cardinal *num_params); 196 void _XmParentActivate(Widget w, XEvent *event, String *params, Cardinal *num_params); 197 void _XmParentCancel(Widget w, XEvent *event, String *params, Cardinal *num_params); 198 void _XmGadgetTraversePrevTabGroup(Widget w, XEvent *event, String *params, Cardinal *num_params); 199 void _XmGadgetTraverseNextTabGroup(Widget w, XEvent *event, String *params, Cardinal *num_params); 200 void _XmGadgetTraversePrev(Widget w, XEvent *event, String *params, Cardinal *num_params); 201 void _XmGadgetTraverseNext(Widget w, XEvent *event, String *params, Cardinal *num_params); 202 void _XmGadgetTraverseUp(Widget w, XEvent *event, String *params, Cardinal *num_params); 203 void _XmGadgetTraverseDown(Widget w, XEvent *event, String *params, Cardinal *num_params); 204 void _XmGadgetTraverseLeft(Widget w, XEvent *event, String *params, Cardinal *num_params); 205 void _XmGadgetTraverseRight(Widget w, XEvent *event, String *params, Cardinal *num_params); 206 void _XmGadgetTraverseHome(Widget w, XEvent *event, String *params, Cardinal *num_params); 207 void _XmGadgetHelp(Widget w, XEvent *event, String *params, Cardinal *num_params); 208 void _XmGadgetKeyInput(Widget w, XEvent *event, String *params, Cardinal *num_params); 209 210 void _XmManagerHelp(Widget w, XEvent *event, String *params, Cardinal *num_params); 211 212 #ifdef __cplusplus 213 } 214 #endif 215 216 #endif /* _XM_MANAGERP_H */ 217