2  * ComboBox.h - Das schon lange schmerzlich vermisste Combo-Box- 
   3  *              Widget -- nun endlich auf fuer Motif! 
   5  * Letzte Modifikation: 04.10.1995    Revisionsstand: 1.32a 
   7  * (c) 1993, 1994 Harald Albrecht 
   8  * Institut fuer Geometrie und Praktische Mathematik 
  10  * albrecht@igpm.rwth-aachen.de 
  12  * This program is free software; you can redistribute it and/or modify 
  13  * it under the terms of the GNU General Public License as published by 
  14  * the Free Software Foundation; either version 2 of the License, or 
  15  * (at your option) any later version. 
  17  * This program is distributed in the hope that it will be useful, 
  18  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  20  * GNU General Public License for more details. 
  22  * You should have received a copy of the GNU General Public License 
  23  * along with this program (see the file COPYING for more details); 
  24  * if not, write to the Free Software Foundation, Inc., 675 Mass Ave,  
  25  * Cambridge, MA 02139, USA. 
  28 #ifndef __ComboBoxWidget_h 
  29 #define __ComboBoxWidget_h 
  33 #if defined(__cplusplus) || defined(c_plusplus) 
  37 #ifdef XmNselectionCallback 
  38 #undef XmNselectionCallback 
  41 #define XmNselectionCallback            "selectionCallback" 
  42 #define XmCSelectionCallback            "SelectionCallback" 
  43 #define XmNunselectionCallback          "unselectionCallback" 
  44 #define XmCUnselectionCallback          "UnselectionCallback" 
  45 #define XmNdropDownCallback             "dropDownCallback" 
  46 #define XmCDropDownCallback             "DropDownCallback" 
  48 #define XmNdropDownCursor               "dropDownCursor" 
  49 #define XmCDropDownCursor               "DropDownCursor" 
  51 /* ICH GLAUB' ES JA EINFACH NICHT! DIESE @#$!%^ BEI DER OSF HABEN 
  52  * DOCH TATSAECHLICH VERGESSEN, DASS DIE EINTRAEGE IN DER LISTBOX 
  53  * VIELLEICHT AUCH SORTIERT SEIN SOLLEN -- MUSS MAN DENN ALLES 
  56 #define XmNsorted                       "sorted" 
  57 #define XmCSorted                       "Sorted" 
  58 #define XmNsortingCallback              "sortingCallback" 
  59 #define XmCSortingCallback              "SortingCallback" 
  61 #define XmNstaticList                   "staticList" 
  62 #define XmCStaticList                   "StaticList" 
  64 #define XmNsquareArrow                  "squareArrow" 
  65 #define XmCSquareArrow                  "SquareArrow" 
  66 #define XmNarrowSpacingOn               "arrowSpacingOn" 
  67 #define XmCArrowSpacingOn               "ArrowSpacingOn" 
  70  * Wie verhaeltsich die Liste, wenn der Focus verloren geht, sobald 
  71  * der Mauszeiger aus dem Dialog herausbewegt wird? 
  73 #define XmNpersistentDropDown           "persistentDropDown" 
  74 #define XmCPersistentDropDown           "PersistentDropDown" 
  75 #define XmNtwmHandlingOn                "twmHandlingOn" 
  76 #define XmCTwmHandlingOn                "TwmHandlingOn" 
  78  * alles fuer das Label... 
  80 #define XmNshowLabel                    "showLabel" 
  81 #define XmCShowLabel                    "ShowLabel" 
  82 #define XmNdropDownOffset               "dropDownOffset" 
  83 #define XmCDropDownOffset               "DropDownOffset" 
  85 #define XmNlabelMarginBottom            "labelMarginBottom" 
  86 #define XmCLabelMarginBottom            "LabelMarginBottom" 
  87 #define XmNlabelMarginHeight            "labelMarginHeight" 
  88 #define XmCLabelMarginHeight            "LabelMarginHeight" 
  89 #define XmNlabelMarginLeft              "labelMarginLeft" 
  90 #define XmCLabelMarginLeft              "LabelMarginLeft" 
  91 #define XmNlabelMarginRight             "labelMarginRight" 
  92 #define XmCLabelMarginRight             "LabelMarginRight" 
  93 #define XmNlabelMarginTop               "labelMarginTop" 
  94 #define XmCLabelMarginTop               "LabelMarginTop" 
  95 #define XmNlabelMarginWidth             "labelMarginWidth" 
  96 #define XmCLabelMarginWidth             "LabelMarginWidth" 
  98 /* Callback reasons: (part. predefined) 
 100  * XmCR_SINGLE_SELECT       user selected item in the list 
 104     int      reason
;    /* Grund                  */ 
 105     XEvent   
*event
;    /* Ausloesender Event     */ 
 106     XmString value
;     /* Ausgewaehlter Eintrag  */ 
 107     int      index
;     /* Index dieses Eintrages */ 
 108 } XmComboBoxSelectionCallbackStruct
,XmComboBoxDefaultActionCallbackStruct
; 
 114     Position    currInsert
, newInsert
; 
 115     Position    startPos
, endPos
; 
 117 } XmComboBoxTextVerifyCallbackStruct
, *XmComboBoxTextVerifyPtr
; 
 119 /* Callback reasons: new 
 121  * XmCR_SHOW_LIST           list is dropping down 
 122  * XmCR_HIDE_LIST           list is getting hidden 
 124  * XmCR_UNSELECT            unselecting item from list or osfDelete 
 126 #define XmCR_SHOW_LIST  4200    /* ten times "42", that should   */ 
 127 #define XmCR_HIDE_LIST  4201    /* explain everything of live... */ 
 128 #define XmCR_UNSELECT   4202 
 130     int      reason
;    /* Grund                  */ 
 131     XEvent   
*event
;    /* Ausloesender Event     */ 
 132 } XmComboBoxDropDownCallbackStruct
, XmComboBoxUnselectionCallbackStruct
; 
 134 #define XmCR_SORTING    4203 
 137 #define XmOP_COMPARE    3 
 140     XEvent   
*event
;    /* IMMER NULL!! */ 
 145 } XmComboBoxSortingCallbackStruct
, *XmComboBoxSortingPtr
; 
 147 /* Alle Funktionen, um auf die Liste der Combo-Box zuzugreifen. 
 148  * Bitte immer diese Funktionen dazu benutzen und nicht direkt 
 149  * auf das entsprechende Widget in der Combo-Box zugreifen! 
 150  * Aus diesem Grunde sind auch nicht alle Funktionen einer Listbox 
 151  * verfuegbar, da sich einige Funktionen mit der Verwaltung der 
 152  * Combo-Box beissen wuerden. 
 154 extern void    XmComboBoxAddItem(Widget w
, XmString item
, int pos
); 
 155 extern void    XmComboBoxAddItems(Widget w
, XmString 
*items
, int item_count
, int pos
); 
 156 extern void    XmComboBoxAddItemUnselected(Widget w
, XmString item
, int pos
); 
 157 extern void    XmComboBoxDeleteItem(Widget w
, XmString item
); 
 158 extern void    XmComboBoxDeleteItems(Widget w
, XmString 
*items
, int item_count
); 
 159 extern void    XmComboBoxDeletePos(Widget w
, int pos
); 
 160 extern void    XmComboBoxDeleteItemsPos(Widget w
, int item_count
, int pos
); 
 161 extern void    XmComboBoxDeleteAllItems(Widget w
); 
 162 extern void    XmComboBoxReplaceItems(Widget w
, XmString 
*old_items
, int item_count
, XmString 
*new_items
); 
 163 extern void    XmComboBoxReplaceItemsPos(Widget w
, XmString 
*new_items
, int item_count
, int position
); 
 164 extern Boolean 
XmComboBoxItemExists(Widget w
, XmString item
); 
 165 extern int     XmComboBoxItemPos(Widget w
, XmString item
); 
 166 extern Boolean 
XmComboBoxGetMatchPos(Widget w
, XmString item
, int **pos_list
, int *pos_count
); 
 167 extern void    XmComboBoxSelectPos(Widget w
, int pos
, Boolean notify
); 
 168 extern void    XmComboBoxSelectItem(Widget w
, XmString item
, Boolean notify
); 
 169 /* Etwas anders als bei der Listbox, da es sowieso nur einen ausge- 
 170  * waehlten Eintrag in der Listbox geben kann! 
 171  * Liefert Index des ausgewaehlten Eintrages oder 0. 
 173 extern int     XmComboBoxGetSelectedPos(Widget w
); 
 174 extern void    XmComboBoxClearItemSelection(Widget w
); 
 176  * Nun alle Funktionen, die auf das Eingabefeld zugreifen... 
 177  * Auch hier gilt wieder, es gibt 'was auf die Finger, wenn jemand 
 178  * versucht, direkt auf das Eingabefeld direkt zuzugreifen! 
 180 extern void    XmComboBoxClearSelection(Widget w
, Time time
); 
 181 extern Boolean 
XmComboBoxCopy(Widget w
, Time time
); 
 182 extern Boolean 
XmComboBoxCut(Widget w
, Time time
); 
 183 extern XmTextPosition 
XmComboBoxGetInsertionPosition(Widget w
); 
 184 extern XmTextPosition 
XmComboBoxGetLastPosition(Widget w
); 
 185 extern int     XmComboBoxGetMaxLength(Widget w
); 
 186 extern char *  XmComboBoxGetSelection(Widget w
); 
 187 extern Boolean 
XmComboBoxGetSelectionPosition(Widget w
, XmTextPosition 
*left
,  
 188                                                XmTextPosition 
*right
); 
 189 extern char *  XmComboBoxGetString(Widget w
); 
 190 extern void    XmComboBoxInsert(Widget w
, XmTextPosition position
, char *value
); 
 191 extern Boolean 
XmComboBoxPaste(Widget w
); 
 192 extern Boolean 
XmComboBoxRemove(Widget w
); 
 193 extern void    XmComboBoxReplace(Widget w
, XmTextPosition from_pos
,  
 194                                  XmTextPosition to_pos
, char *value
); 
 195 extern void    XmComboBoxSetAddMode(Widget w
, Boolean state
); 
 196 extern void    XmComboBoxSetHighlight(Widget w
, XmTextPosition left
,  
 197                                       XmTextPosition right
, XmHighlightMode mode
); 
 198 extern void    XmComboBoxSetInsertionPosition(Widget w
, XmTextPosition position
); 
 199 extern void    XmComboBoxSetMaxLength(Widget w
, int max_length
); 
 200 extern void    XmComboBoxSetSelection(Widget w
, XmTextPosition first
,  
 201                                       XmTextPosition last
, Time time
); 
 202 extern void    XmComboBoxSetString(Widget w
, char *value
); 
 203 extern void    XmComboBoxShowPosition(Widget w
, XmTextPosition position
); 
 205 extern WidgetClass xmComboBoxWidgetClass
; /* Die Klasse hoechstselbst */ 
 208 #define XmIsComboBox(w)     XtIsSubclass(w, xmComboBoxWidgetClass) 
 209 #endif /* XmIsComboBox */ 
 211 typedef struct _XmComboBoxClassRec 
*XmComboBoxWidgetClass
; 
 212 typedef struct _XmComboBoxRec      
*XmComboBoxWidget
; 
 214 extern Widget 
XmCreateComboBox(Widget parent
, String name
, ArgList arglist
, 
 217 /* PLEASE do not use this functions if you really not need to do so !!! */ 
 218 extern Widget 
XmComboBoxGetEditWidget(Widget w
); 
 219 extern Widget 
XmComboBoxGetListWidget(Widget w
); 
 220 extern Widget 
XmComboBoxGetLabelWidget(Widget w
); 
 222 #if defined(__cplusplus) || defined(c_plusplus) 
 226 #endif /* __ComboBoxWidget_h */ 
 227 /* Ende von ComboBox.h */