comparison lwlib/lwlib-Xm.c @ 2:ac2d302a0011 r19-15b2

Import from CVS: tag r19-15b2
author cvs
date Mon, 13 Aug 2007 08:46:35 +0200
parents 376386a54a3c
children bcdc7deadc19
comparison
equal deleted inserted replaced
1:c0c6a60d29db 2:ac2d302a0011
150 resource_string (Widget widget, char *name) 150 resource_string (Widget widget, char *name)
151 { 151 {
152 XtResource resource; 152 XtResource resource;
153 char *result = NULL; 153 char *result = NULL;
154 154
155 resource.resource_name = "labelString"; 155 resource.resource_name = (String) "labelString";
156 resource.resource_class = "LabelString"; /* #### should be Xmsomething... */ 156 resource.resource_class = (String) "LabelString"; /* #### should be Xmsomething... */
157 resource.resource_type = XtRString; 157 resource.resource_type = XtRString;
158 resource.resource_size = sizeof (String); 158 resource.resource_size = sizeof (String);
159 resource.resource_offset = 0; 159 resource.resource_offset = 0;
160 resource.default_type = XtRImmediate; 160 resource.default_type = XtRImmediate;
161 resource.default_addr = 0; 161 resource.default_addr = 0;
220 /* update the label of anything subclass of a label */ 220 /* update the label of anything subclass of a label */
221 static void 221 static void
222 xm_update_label (widget_instance* instance, Widget widget, widget_value* val) 222 xm_update_label (widget_instance* instance, Widget widget, widget_value* val)
223 { 223 {
224 XmString built_string = 0; 224 XmString built_string = 0;
225 XmString key_string = 0; 225 XmString key_string = 0;
226 XmString val_string = 0; 226 XmString val_string = 0;
227 XmString name_string = 0; 227 XmString name_string = 0;
228 Arg al [256]; 228 Arg al [256];
229 int ac; 229 int ac;
230 230
231 ac = 0; 231 ac = 0;
232 232
234 { 234 {
235 #ifdef DIALOGS_MOTIF 235 #ifdef DIALOGS_MOTIF
236 /* 236 /*
237 * Sigh. The main text of a label is the name field for menubar 237 * Sigh. The main text of a label is the name field for menubar
238 * entries. The value field is a possible additional field to be 238 * entries. The value field is a possible additional field to be
239 * contatenated on to the name field. HOWEVER, with dialog boxes 239 * concatenated on to the name field. HOWEVER, with dialog boxes
240 * the value field is the complete text which is supposed to be 240 * the value field is the complete text which is supposed to be
241 * displayed as the label. Yuck. 241 * displayed as the label. Yuck.
242 */ 242 */
243 if (is_in_dialog_box (widget)) 243 if (is_in_dialog_box (widget))
244 { 244 {
665 /* update text widgets */ 665 /* update text widgets */
666 666
667 static void 667 static void
668 xm_update_text (widget_instance* instance, Widget widget, widget_value* val) 668 xm_update_text (widget_instance* instance, Widget widget, widget_value* val)
669 { 669 {
670 XmTextSetString (widget, val->value ? val->value : ""); 670 XmTextSetString (widget, val->value ? val->value : (char *) "");
671 XtRemoveAllCallbacks (widget, XmNactivateCallback); 671 XtRemoveAllCallbacks (widget, XmNactivateCallback);
672 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); 672 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
673 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); 673 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
674 XtAddCallback (widget, XmNvalueChangedCallback, 674 XtAddCallback (widget, XmNvalueChangedCallback,
675 xm_internal_update_other_instances, instance); 675 xm_internal_update_other_instances, instance);
677 677
678 static void 678 static void
679 xm_update_text_field (widget_instance* instance, Widget widget, 679 xm_update_text_field (widget_instance* instance, Widget widget,
680 widget_value* val) 680 widget_value* val)
681 { 681 {
682 XmTextFieldSetString (widget, val->value ? val->value : ""); 682 XmTextFieldSetString (widget, val->value ? val->value : (char *) "");
683 XtRemoveAllCallbacks (widget, XmNactivateCallback); 683 XtRemoveAllCallbacks (widget, XmNactivateCallback);
684 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); 684 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
685 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); 685 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
686 XtAddCallback (widget, XmNvalueChangedCallback, 686 XtAddCallback (widget, XmNvalueChangedCallback,
687 xm_internal_update_other_instances, instance); 687 xm_internal_update_other_instances, instance);
1009 #endif /* DND_KLUDGE */ 1009 #endif /* DND_KLUDGE */
1010 1010
1011 1011
1012 static Widget 1012 static Widget
1013 make_dialog (char* name, Widget parent, Boolean pop_up_p, 1013 make_dialog (char* name, Widget parent, Boolean pop_up_p,
1014 char* shell_title, char* icon_name, Boolean text_input_slot, 1014 CONST char* shell_title, CONST char* icon_name,
1015 Boolean radio_box, Boolean list, 1015 Boolean text_input_slot, Boolean radio_box, Boolean list,
1016 int left_buttons, int right_buttons) 1016 int left_buttons, int right_buttons)
1017 { 1017 {
1018 Widget result; 1018 Widget result;
1019 Widget form; 1019 Widget form;
1020 Widget row; 1020 Widget row;
1041 { 1041 {
1042 ac = 0; 1042 ac = 0;
1043 XtSetArg(al[ac], XmNtitle, shell_title); ac++; 1043 XtSetArg(al[ac], XmNtitle, shell_title); ac++;
1044 XtSetArg(al[ac], XtNallowShellResize, True); ac++; 1044 XtSetArg(al[ac], XtNallowShellResize, True); ac++;
1045 XtSetArg(al[ac], XmNdeleteResponse, XmUNMAP); ac++; 1045 XtSetArg(al[ac], XmNdeleteResponse, XmUNMAP); ac++;
1046 result = XmCreateDialogShell (parent, "dialog", al, ac); 1046 result = XmCreateDialogShell (parent, (char *) "dialog", al, ac);
1047 1047
1048 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; 1048 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++;
1049 /* XtSetArg(al[ac], XmNautoUnmanage, TRUE); ac++; */ /* ####is this ok? */ 1049 /* XtSetArg(al[ac], XmNautoUnmanage, TRUE); ac++; */ /* ####is this ok? */
1050 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; 1050 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
1051 form = XmCreateForm (result, shell_title, al, ac); 1051 form = XmCreateForm (result, (char *) shell_title, al, ac);
1052 } 1052 }
1053 else 1053 else
1054 { 1054 {
1055 ac = 0; 1055 ac = 0;
1056 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; 1056 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++;
1057 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; 1057 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
1058 form = XmCreateForm (parent, shell_title, al, ac); 1058 form = XmCreateForm (parent, (char *) shell_title, al, ac);
1059 result = form; 1059 result = form;
1060 } 1060 }
1061 1061
1062 ac = 0; 1062 ac = 0;
1063 XtSetArg(al[ac], XmNpacking, XmPACK_COLUMN); ac++; 1063 XtSetArg(al[ac], XmNpacking, XmPACK_COLUMN); ac++;
1074 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; 1074 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
1075 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; 1075 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
1076 XtSetArg(al[ac], XmNleftOffset, 13); ac++; 1076 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
1077 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; 1077 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
1078 XtSetArg(al[ac], XmNrightOffset, 13); ac++; 1078 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
1079 row = XmCreateRowColumn (form, "row", al, ac); 1079 row = XmCreateRowColumn (form, (char *) "row", al, ac);
1080 1080
1081 n_children = 0; 1081 n_children = 0;
1082 for (i = 0; i < left_buttons; i++) 1082 for (i = 0; i < left_buttons; i++)
1083 { 1083 {
1084 char button_name [16]; 1084 char button_name [16];
1113 } 1113 }
1114 1114
1115 /* invisible seperator button */ 1115 /* invisible seperator button */
1116 ac = 0; 1116 ac = 0;
1117 XtSetArg (al[ac], XmNmappedWhenManaged, FALSE); ac++; 1117 XtSetArg (al[ac], XmNmappedWhenManaged, FALSE); ac++;
1118 children [n_children] = XmCreateLabel (row, "separator_button", al, ac); 1118 children [n_children] = XmCreateLabel (row, (char *) "separator_button",
1119 al, ac);
1119 DO_DND_KLUDGE (children [n_children]); 1120 DO_DND_KLUDGE (children [n_children]);
1120 n_children++; 1121 n_children++;
1121 1122
1122 for (i = 0; i < right_buttons; i++) 1123 for (i = 0; i < right_buttons; i++)
1123 { 1124 {
1140 XtSetArg(al[ac], XmNbottomWidget, row); ac++; 1141 XtSetArg(al[ac], XmNbottomWidget, row); ac++;
1141 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; 1142 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
1142 XtSetArg(al[ac], XmNleftOffset, 0); ac++; 1143 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
1143 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; 1144 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
1144 XtSetArg(al[ac], XmNrightOffset, 0); ac++; 1145 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
1145 separator = XmCreateSeparator (form, "", al, ac); 1146 separator = XmCreateSeparator (form, (char *) "", al, ac);
1146 1147
1147 ac = 0; 1148 ac = 0;
1148 XtSetArg(al[ac], XmNlabelType, XmPIXMAP); ac++; 1149 XtSetArg(al[ac], XmNlabelType, XmPIXMAP); ac++;
1149 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; 1150 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
1150 XtSetArg(al[ac], XmNtopOffset, 13); ac++; 1151 XtSetArg(al[ac], XmNtopOffset, 13); ac++;
1151 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++; 1152 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
1152 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; 1153 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
1153 XtSetArg(al[ac], XmNleftOffset, 13); ac++; 1154 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
1154 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; 1155 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
1155 icon = XmCreateLabel (form, icon_name, al, ac); 1156 icon = XmCreateLabel (form, (char *) icon_name, al, ac);
1156 DO_DND_KLUDGE (icon); 1157 DO_DND_KLUDGE (icon);
1157 1158
1158 ac = 0; 1159 ac = 0;
1159 XtSetArg(al[ac], XmNmappedWhenManaged, FALSE); ac++; 1160 XtSetArg(al[ac], XmNmappedWhenManaged, FALSE); ac++;
1160 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; 1161 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
1163 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; 1164 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
1164 XtSetArg(al[ac], XmNbottomOffset, 6); ac++; 1165 XtSetArg(al[ac], XmNbottomOffset, 6); ac++;
1165 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; 1166 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
1166 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE); ac++; 1167 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE); ac++;
1167 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; 1168 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
1168 icon_separator = XmCreateLabel (form, "", al, ac); 1169 icon_separator = XmCreateLabel (form, (char *) "", al, ac);
1169 DO_DND_KLUDGE (icon_separator); 1170 DO_DND_KLUDGE (icon_separator);
1170 1171
1171 if (text_input_slot) 1172 if (text_input_slot)
1172 { 1173 {
1173 ac = 0; 1174 ac = 0;
1179 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; 1180 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
1180 XtSetArg(al[ac], XmNleftOffset, 13); ac++; 1181 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
1181 XtSetArg(al[ac], XmNleftWidget, icon); ac++; 1182 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
1182 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; 1183 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
1183 XtSetArg(al[ac], XmNrightOffset, 13); ac++; 1184 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
1184 value = XmCreateTextField (form, "value", al, ac); 1185 value = XmCreateTextField (form, (char *) "value", al, ac);
1185 DO_DND_KLUDGE (value); 1186 DO_DND_KLUDGE (value);
1186 } 1187 }
1187 else if (radio_box) 1188 else if (radio_box)
1188 { 1189 {
1189 Widget radio_butt; 1190 Widget radio_butt;
1199 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; 1200 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
1200 XtSetArg(al[ac], XmNleftOffset, 13); ac++; 1201 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
1201 XtSetArg(al[ac], XmNleftWidget, icon); ac++; 1202 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
1202 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; 1203 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
1203 XtSetArg(al[ac], XmNrightOffset, 13); ac++; 1204 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
1204 value = XmCreateRadioBox (form, "radiobutton1", al, ac); 1205 value = XmCreateRadioBox (form, (char *) "radiobutton1", al, ac);
1205 ac = 0; 1206 ac = 0;
1206 i = 0; 1207 i = 0;
1207 radio_butt = XmCreateToggleButtonGadget (value, "radio1", al, ac); 1208 radio_butt = XmCreateToggleButtonGadget (value, (char *) "radio1",
1209 al, ac);
1208 children [i++] = radio_butt; 1210 children [i++] = radio_butt;
1209 radio_butt = XmCreateToggleButtonGadget (value, "radio2", al, ac); 1211 radio_butt = XmCreateToggleButtonGadget (value, (char *) "radio2",
1212 al, ac);
1210 children [i++] = radio_butt; 1213 children [i++] = radio_butt;
1211 radio_butt = XmCreateToggleButtonGadget (value, "radio3", al, ac); 1214 radio_butt = XmCreateToggleButtonGadget (value, (char *) "radio3",
1215 al, ac);
1212 children [i++] = radio_butt; 1216 children [i++] = radio_butt;
1213 XtManageChildren (children, i); 1217 XtManageChildren (children, i);
1214 } 1218 }
1215 else if (list) 1219 else if (list)
1216 { 1220 {
1223 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; 1227 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
1224 XtSetArg(al[ac], XmNleftOffset, 13); ac++; 1228 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
1225 XtSetArg(al[ac], XmNleftWidget, icon); ac++; 1229 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
1226 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; 1230 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
1227 XtSetArg(al[ac], XmNrightOffset, 13); ac++; 1231 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
1228 value = XmCreateScrolledList (form, "list", al, ac); 1232 value = XmCreateScrolledList (form, (char *) "list", al, ac);
1229 1233
1230 /* this is the easiest way I found to have the dble click in the 1234 /* this is the easiest way I found to have the dble click in the
1231 list activate the default button */ 1235 list activate the default button */
1232 XtAddCallback (value, XmNdefaultActionCallback, activate_button, button); 1236 XtAddCallback (value, XmNdefaultActionCallback, activate_button, button);
1233 } 1237 }
1243 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; 1247 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
1244 XtSetArg(al[ac], XmNleftOffset, 13); ac++; 1248 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
1245 XtSetArg(al[ac], XmNleftWidget, icon); ac++; 1249 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
1246 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; 1250 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
1247 XtSetArg(al[ac], XmNrightOffset, 13); ac++; 1251 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
1248 message = XmCreateLabel (form, "message", al, ac); 1252 message = XmCreateLabel (form, (char *) "message", al, ac);
1249 DO_DND_KLUDGE (message); 1253 DO_DND_KLUDGE (message);
1250 1254
1251 if (list) 1255 if (list)
1252 XtManageChild (value); 1256 XtManageChild (value);
1253 1257
1404 { 1408 {
1405 char* name = instance->info->type; 1409 char* name = instance->info->type;
1406 Widget parent = instance->parent; 1410 Widget parent = instance->parent;
1407 Widget widget; 1411 Widget widget;
1408 Boolean pop_up_p = instance->pop_up_p; 1412 Boolean pop_up_p = instance->pop_up_p;
1409 char* shell_name = 0; 1413 CONST char* shell_name = 0;
1410 char* icon_name = 0; 1414 CONST char* icon_name = 0;
1411 Boolean text_input_slot = False; 1415 Boolean text_input_slot = False;
1412 Boolean radio_box = False; 1416 Boolean radio_box = False;
1413 Boolean list = False; 1417 Boolean list = False;
1414 int total_buttons; 1418 int total_buttons;
1415 int left_buttons = 0; 1419 int left_buttons = 0;