]> git.saurik.com Git - wxWidgets.git/blame - src/motif/xmcombo/xmcombo.h
avoiding a OS-Level set focus for a control that already has the focus
[wxWidgets.git] / src / motif / xmcombo / xmcombo.h
CommitLineData
8704bf74
JS
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
d7dcb939
JS
37#ifdef XmNselectionCallback
38#undef XmNselectionCallback
39#endif
40
8704bf74
JS
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 */