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