Mercurial > hg > xemacs-beta
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; |