1/* 2 * ComboBox.h - Das schon lange schmerzlich vermisste Combo-Box- 3 * Widget -- nun endlich auf fuer Motif! 4 * 5 * Letzte Modifikation: 04.10.1995 Revisionsstand: 1.32a 6 * 7 * (c) 1993, 1994 Harald Albrecht 8 * Institut fuer Geometrie und Praktische Mathematik 9 * RWTH Aachen, Germany 10 * albrecht@igpm.rwth-aachen.de 11 * 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. 16 * 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. 21 * 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. 26 * 27 */ 28#ifndef __ComboBoxWidget_h 29#define __ComboBoxWidget_h 30 31#include <Xm/Xm.h> 32 33#if defined(__cplusplus) || defined(c_plusplus) 34extern "C" { 35#endif 36 37#ifdef XmNselectionCallback 38#undef XmNselectionCallback 39#endif 40 41#define XmNselectionCallback "selectionCallback" 42#define XmCSelectionCallback "SelectionCallback" 43#define XmNunselectionCallback "unselectionCallback" 44#define XmCUnselectionCallback "UnselectionCallback" 45#define XmNdropDownCallback "dropDownCallback" 46#define XmCDropDownCallback "DropDownCallback" 47 48#define XmNdropDownCursor "dropDownCursor" 49#define XmCDropDownCursor "DropDownCursor" 50 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 54 * SELBST MACHEN?! 55 */ 56#define XmNsorted "sorted" 57#define XmCSorted "Sorted" 58#define XmNsortingCallback "sortingCallback" 59#define XmCSortingCallback "SortingCallback" 60 61#define XmNstaticList "staticList" 62#define XmCStaticList "StaticList" 63 64#define XmNsquareArrow "squareArrow" 65#define XmCSquareArrow "SquareArrow" 66#define XmNarrowSpacingOn "arrowSpacingOn" 67#define XmCArrowSpacingOn "ArrowSpacingOn" 68 69/* 70 * Wie verhaeltsich die Liste, wenn der Focus verloren geht, sobald 71 * der Mauszeiger aus dem Dialog herausbewegt wird? 72 */ 73#define XmNpersistentDropDown "persistentDropDown" 74#define XmCPersistentDropDown "PersistentDropDown" 75#define XmNtwmHandlingOn "twmHandlingOn" 76#define XmCTwmHandlingOn "TwmHandlingOn" 77/* 78 * alles fuer das Label... 79 */ 80#define XmNshowLabel "showLabel" 81#define XmCShowLabel "ShowLabel" 82#define XmNdropDownOffset "dropDownOffset" 83#define XmCDropDownOffset "DropDownOffset" 84 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" 97 98/* Callback reasons: (part. predefined) 99 * 100 * XmCR_SINGLE_SELECT user selected item in the list 101 */ 102 103typedef struct { 104 int reason; /* Grund */ 105 XEvent *event; /* Ausloesender Event */ 106 XmString value; /* Ausgewaehlter Eintrag */ 107 int index; /* Index dieses Eintrages */ 108} XmComboBoxSelectionCallbackStruct,XmComboBoxDefaultActionCallbackStruct; 109 110typedef struct { 111 int reason; 112 XEvent *event; 113 Boolean doit; 114 Position currInsert, newInsert; 115 Position startPos, endPos; 116 XmTextBlock text; 117} XmComboBoxTextVerifyCallbackStruct, *XmComboBoxTextVerifyPtr; 118 119/* Callback reasons: new 120 * 121 * XmCR_SHOW_LIST list is dropping down 122 * XmCR_HIDE_LIST list is getting hidden 123 * 124 * XmCR_UNSELECT unselecting item from list or osfDelete 125 */ 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 129typedef struct { 130 int reason; /* Grund */ 131 XEvent *event; /* Ausloesender Event */ 132} XmComboBoxDropDownCallbackStruct, XmComboBoxUnselectionCallbackStruct; 133 134#define XmCR_SORTING 4203 135#define XmOP_INIT 1 136#define XmOP_DONE 2 137#define XmOP_COMPARE 3 138typedef struct { 139 int reason; 140 XEvent *event; /* IMMER NULL!! */ 141 int operation; 142 void *item_internal; 143 XmString item; 144 int result; 145} XmComboBoxSortingCallbackStruct, *XmComboBoxSortingPtr; 146 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. 153 */ 154extern void XmComboBoxAddItem(Widget w, XmString item, int pos); 155extern void XmComboBoxAddItems(Widget w, XmString *items, int item_count, int pos); 156extern void XmComboBoxAddItemUnselected(Widget w, XmString item, int pos); 157extern void XmComboBoxDeleteItem(Widget w, XmString item); 158extern void XmComboBoxDeleteItems(Widget w, XmString *items, int item_count); 159extern void XmComboBoxDeletePos(Widget w, int pos); 160extern void XmComboBoxDeleteItemsPos(Widget w, int item_count, int pos); 161extern void XmComboBoxDeleteAllItems(Widget w); 162extern void XmComboBoxReplaceItems(Widget w, XmString *old_items, int item_count, XmString *new_items); 163extern void XmComboBoxReplaceItemsPos(Widget w, XmString *new_items, int item_count, int position); 164extern Boolean XmComboBoxItemExists(Widget w, XmString item); 165extern int XmComboBoxItemPos(Widget w, XmString item); 166extern Boolean XmComboBoxGetMatchPos(Widget w, XmString item, int **pos_list, int *pos_count); 167extern void XmComboBoxSelectPos(Widget w, int pos, Boolean notify); 168extern 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. 172 */ 173extern int XmComboBoxGetSelectedPos(Widget w); 174extern void XmComboBoxClearItemSelection(Widget w); 175/* 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! 179 */ 180extern void XmComboBoxClearSelection(Widget w, Time time); 181extern Boolean XmComboBoxCopy(Widget w, Time time); 182extern Boolean XmComboBoxCut(Widget w, Time time); 183extern XmTextPosition XmComboBoxGetInsertionPosition(Widget w); 184extern XmTextPosition XmComboBoxGetLastPosition(Widget w); 185extern int XmComboBoxGetMaxLength(Widget w); 186extern char * XmComboBoxGetSelection(Widget w); 187extern Boolean XmComboBoxGetSelectionPosition(Widget w, XmTextPosition *left, 188 XmTextPosition *right); 189extern char * XmComboBoxGetString(Widget w); 190extern void XmComboBoxInsert(Widget w, XmTextPosition position, char *value); 191extern Boolean XmComboBoxPaste(Widget w); 192extern Boolean XmComboBoxRemove(Widget w); 193extern void XmComboBoxReplace(Widget w, XmTextPosition from_pos, 194 XmTextPosition to_pos, char *value); 195extern void XmComboBoxSetAddMode(Widget w, Boolean state); 196extern void XmComboBoxSetHighlight(Widget w, XmTextPosition left, 197 XmTextPosition right, XmHighlightMode mode); 198extern void XmComboBoxSetInsertionPosition(Widget w, XmTextPosition position); 199extern void XmComboBoxSetMaxLength(Widget w, int max_length); 200extern void XmComboBoxSetSelection(Widget w, XmTextPosition first, 201 XmTextPosition last, Time time); 202extern void XmComboBoxSetString(Widget w, char *value); 203extern void XmComboBoxShowPosition(Widget w, XmTextPosition position); 204 205extern WidgetClass xmComboBoxWidgetClass; /* Die Klasse hoechstselbst */ 206 207#ifndef XmIsComboBox 208#define XmIsComboBox(w) XtIsSubclass(w, xmComboBoxWidgetClass) 209#endif /* XmIsComboBox */ 210 211typedef struct _XmComboBoxClassRec *XmComboBoxWidgetClass; 212typedef struct _XmComboBoxRec *XmComboBoxWidget; 213 214extern Widget XmCreateComboBox(Widget parent, String name, ArgList arglist, 215 Cardinal argcount); 216 217/* PLEASE do not use this functions if you really not need to do so !!! */ 218extern Widget XmComboBoxGetEditWidget(Widget w); 219extern Widget XmComboBoxGetListWidget(Widget w); 220extern Widget XmComboBoxGetLabelWidget(Widget w); 221 222#if defined(__cplusplus) || defined(c_plusplus) 223} 224#endif 225 226#endif /* __ComboBoxWidget_h */ 227/* Ende von ComboBox.h */ 228