File: ComboBox.h

package info (click to toggle)
gnucash 1.3.4-3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 9,232 kB
  • ctags: 6,947
  • sloc: ansic: 60,740; lisp: 10,772; sh: 7,437; perl: 3,812; cpp: 2,992; sql: 1,255; makefile: 673
file content (240 lines) | stat: -rw-r--r-- 9,501 bytes parent folder | download
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 */