1/* 2 * demo.c -- Example how to use a ComboBox 3 * 4 * compile and link with: 5 * $ cc -DFUNCPROTO ComboBoxDemo.c ComboBox.o -o ComboBoxDemo \ 6 * -lXm -lXt -lX11 7 * then run: 8 * $ ./ComboBoxDemo 9 * 10 * (c) 1993, 1994 Harald Albrecht 11 * Institut fuer Geometrie und Praktische Mathematik 12 * RWTH Aachen, Germany 13 * albrecht@igpm.rwth-aachen.de 14 * 15 * This program is free software; you can redistribute it and/or modify 16 * it under the terms of the GNU General Public License as published by 17 * the Free Software Foundation; either version 2 of the License, or 18 * (at your option) any later version. 19 * 20 * This program is distributed in the hope that it will be useful, 21 * but WITHOUT ANY WARRANTY; without even the implied warranty of 22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 * GNU General Public License for more details. 24 * 25 * You should have received a copy of the GNU General Public License 26 * along with this program (see the file COPYING for more details); 27 * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, 28 * Cambridge, MA 02139, USA. 29 * 30 */ 31#include <stdio.h> 32#include <Xm/Xm.h> 33#include <Xm/Form.h> 34#include <Xm/Label.h> 35#include <Xm/Separator.h> 36#include <Xm/PushB.h> 37#include "combobox.h" 38 39Widget TopLevel, Form, Button, Text, Sepp, ComboBox1, ComboBox2, ComboBox3, Label; 40 41void QuitCB(Widget w, caddr_t pClientData, caddr_t pCallData) 42{ 43 char *text; 44 45 text = XmComboBoxGetString(ComboBox1); 46 fprintf(stderr, "You choosed \"%s\" out of the first ComboBox\n", text); 47 XtFree(text); 48 text = XmComboBoxGetString(ComboBox2); 49 fprintf(stderr, "You entered \"%s\" into the second ComboBox\n", text); 50 XtFree(text); 51 fprintf(stderr, "Bye! ... have fun with XmComboBox!\n"); 52 exit(0); 53} /* QuitCB */ 54 55int main(int argc, String argv[]) 56{ 57 XmString str; 58 Boolean Trav; 59 XtAppContext AppContext; 60 61#if (XmREVISION > 1) 62 XtSetLanguageProc(NULL,NULL,NULL); 63#endif 64 TopLevel = XtAppInitialize(&AppContext, "XFontSelDemo", NULL, 0, 65#if (XmREVISION > 1) 66 &argc, 67#else 68 (Cardinal *) &argc, 69#endif 70 argv, NULL, NULL, 0); 71 72 Form = XtVaCreateManagedWidget("form", xmFormWidgetClass, TopLevel, NULL); 73 str = XmStringCreateLtoR("Click to quit", XmSTRING_DEFAULT_CHARSET); 74 Button = XtVaCreateManagedWidget("quit", xmPushButtonWidgetClass, Form, 75 XmNlabelString, str, 76 XmNleftAttachment, XmATTACH_FORM, 77 XmNleftOffset, 8, 78 XmNtopAttachment, XmATTACH_FORM, 79 XmNtopOffset, 8, 80 NULL); 81 XmStringFree(str); 82 XtAddCallback(Button, XmNactivateCallback, (XtCallbackProc) QuitCB, NULL); 83 84 Sepp = XtVaCreateManagedWidget("separator1", xmSeparatorWidgetClass, Form, 85 XmNleftAttachment, XmATTACH_FORM, 86 XmNrightAttachment, XmATTACH_FORM, 87 XmNtopAttachment, XmATTACH_WIDGET, 88 XmNtopOffset, 8, 89 XmNtopWidget, Button, 90 NULL); 91 92 str = XmStringCreateLtoR("Choose one:", XmSTRING_DEFAULT_CHARSET); 93 ComboBox1 = XtVaCreateManagedWidget("combobox1", xmComboBoxWidgetClass, Form, 94 XmNeditable, False, 95 XmNsorted, True, 96 XmNleftAttachment, XmATTACH_FORM, 97 XmNleftOffset, 8, 98 XmNrightAttachment, XmATTACH_FORM, 99 XmNrightOffset, 8, 100 XmNtopAttachment, XmATTACH_WIDGET, 101 XmNtopOffset, 8, 102 XmNtopWidget, Sepp, 103 XmNshowLabel, True, 104 XmNlabelString, str, 105 NULL); 106 XmStringFree(str); 107 /* Put string unordered into the combo box! They'll get sorted 108 * by the box. 109 */ 110 str = XmStringCreateLtoR("William the conquerior", XmSTRING_DEFAULT_CHARSET); 111 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 112 str = XmStringCreateLtoR("Karl der Gro\337e", XmSTRING_DEFAULT_CHARSET); 113 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 114 str = XmStringCreateLtoR("Henry VIII & his chicken band", XmSTRING_DEFAULT_CHARSET); 115 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 116 str = XmStringCreateLtoR("Louis XIV", XmSTRING_DEFAULT_CHARSET); 117 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 118 str = XmStringCreateLtoR("Louis de Funes", XmSTRING_DEFAULT_CHARSET); 119 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 120 str = XmStringCreateLtoR("Helmut Kohl", XmSTRING_DEFAULT_CHARSET); 121 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 122 str = XmStringCreateLtoR("James Major", XmSTRING_DEFAULT_CHARSET); 123 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 124 str = XmStringCreateLtoR("James Bond", XmSTRING_DEFAULT_CHARSET); 125 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 126 str = XmStringCreateLtoR("Billy Boy (M$ Windoze)", XmSTRING_DEFAULT_CHARSET); 127 XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); 128 str = XmStringCreateLtoR("Francois Mitterand", XmSTRING_DEFAULT_CHARSET); 129 XmComboBoxAddItem(ComboBox1, str, 0); 130 XmComboBoxSelectItem(ComboBox1, str, False); 131 XmStringFree(str); 132 133 str = XmStringCreateLtoR("Choose/edit:", XmSTRING_DEFAULT_CHARSET); 134 ComboBox2 = XtVaCreateManagedWidget("combobox2", xmComboBoxWidgetClass, Form, 135 XmNeditable, True, 136 XmNsorted, True, 137 XmNleftAttachment, XmATTACH_FORM, 138 XmNleftOffset, 8, 139 XmNrightAttachment, XmATTACH_FORM, 140 XmNrightOffset, 8, 141 XmNtopAttachment, XmATTACH_WIDGET, 142 XmNtopOffset, 8, 143 XmNtopWidget, ComboBox1, 144 XmNshowLabel, True, 145 XmNlabelString, str, 146 NULL); 147 str = XmStringCreateLtoR("item can be edited after choosing it", XmSTRING_DEFAULT_CHARSET); 148 XmComboBoxAddItem(ComboBox2, str, 0); XmStringFree(str); 149 str = XmStringCreateLtoR("just to fill the list", XmSTRING_DEFAULT_CHARSET); 150 XmComboBoxAddItem(ComboBox2, str, 0); XmStringFree(str); 151 str = XmStringCreateLtoR("so it contains more entries", XmSTRING_DEFAULT_CHARSET); 152 XmComboBoxAddItem(ComboBox2, str, 0); XmStringFree(str); 153 154 str = XmStringCreateLtoR("Static ComboBox:", XmSTRING_DEFAULT_CHARSET); 155 ComboBox3 = XtVaCreateManagedWidget("combobox3", xmComboBoxWidgetClass, Form, 156 XmNeditable, True, 157 XmNstaticList, True, 158 XmNsorted, False, 159 XmNcolumns, 30, 160 XmNleftAttachment, XmATTACH_FORM, 161 XmNleftOffset, 8, 162 XmNrightAttachment, XmATTACH_FORM, 163 XmNrightOffset, 8, 164 XmNtopAttachment, XmATTACH_WIDGET, 165 XmNtopOffset, 8, 166 XmNtopWidget, ComboBox2, 167 XmNshowLabel, True, 168 XmNlabelString, str, 169 NULL); 170 XmStringFree(str); 171 str = XmStringCreateLtoR("ComboBox (noneditable)", XmSTRING_DEFAULT_CHARSET); 172 XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); 173 str = XmStringCreateLtoR("ComboBox (editable)", XmSTRING_DEFAULT_CHARSET); 174 XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); 175 str = XmStringCreateLtoR("ComboBox (editable & static List)", XmSTRING_DEFAULT_CHARSET); 176 XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); 177 str = XmStringCreateLtoR("Center widget", XmSTRING_DEFAULT_CHARSET); 178 XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); 179 str = XmStringCreateLtoR("The ButtonFace Library", XmSTRING_DEFAULT_CHARSET); 180 XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); 181 182 Sepp = XtVaCreateManagedWidget("separator", xmSeparatorWidgetClass, Form, 183 XmNleftAttachment, XmATTACH_FORM, 184 XmNrightAttachment, XmATTACH_FORM, 185 XmNtopAttachment, XmATTACH_WIDGET, 186 XmNtopOffset, 8, 187 XmNtopWidget, ComboBox3, 188 NULL); 189 190 str = XmStringCreateLtoR( 191"xmComboBoxWidgetClass Demo\n\nby Harald Albrecht\n\n\ 192albrecht@igpm.rwth-aachen.de", XmSTRING_DEFAULT_CHARSET); 193 Label = XtVaCreateManagedWidget("label", xmLabelWidgetClass, Form, 194 XmNlabelString, str, 195 XmNleftAttachment, XmATTACH_FORM, 196 XmNleftOffset, 80, 197 XmNrightAttachment, XmATTACH_FORM, 198 XmNrightOffset, 80, 199 XmNbottomAttachment, XmATTACH_FORM, 200 XmNbottomOffset, 24, 201 XmNtopAttachment, XmATTACH_WIDGET, 202 XmNtopWidget, Sepp, 203 XmNtopOffset, 24, 204 NULL); 205 XmStringFree(str); 206 207 XtRealizeWidget(TopLevel); 208 209 XtAppMainLoop(AppContext); 210 return 0; /* Never will reach this */ 211} /* main */ 212 213 214/* End of ComboBoxDemo.c */ 215