Mercurial > hg > xemacs-beta
comparison lwlib/lwlib-Xm.c @ 80:1ce6082ce73f r20-0b90
Import from CVS: tag r20-0b90
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:06:37 +0200 |
parents | c7528f8e288d |
children | 6b37e6ddd302 |
comparison
equal
deleted
inserted
replaced
79:5b0a5bbffab6 | 80:1ce6082ce73f |
---|---|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 GNU General Public License for more details. | 15 GNU General Public License for more details. |
16 | 16 |
17 You should have received a copy of the GNU General Public License | 17 You should have received a copy of the GNU General Public License |
18 along with GNU Emacs; see the file COPYING. If not, write to | 18 along with XEmacs; see the file COPYING. If not, write to |
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
20 Boston, MA 02111-1307, USA. */ | 20 Boston, MA 02111-1307, USA. */ |
21 | 21 |
22 #include <stdlib.h> | 22 #include <stdlib.h> |
23 #include <unistd.h> | 23 #include <unistd.h> |
109 | 109 |
110 static destroyed_instance* | 110 static destroyed_instance* |
111 make_destroyed_instance (char* name, char* type, Widget widget, Widget parent, | 111 make_destroyed_instance (char* name, char* type, Widget widget, Widget parent, |
112 Boolean pop_up_p) | 112 Boolean pop_up_p) |
113 { | 113 { |
114 destroyed_instance *instance = | 114 destroyed_instance* instance = |
115 (destroyed_instance *) malloc (sizeof (destroyed_instance)); | 115 (destroyed_instance*) malloc (sizeof (destroyed_instance)); |
116 instance->name = safe_strdup (name); | 116 instance->name = safe_strdup (name); |
117 instance->type = safe_strdup (type); | 117 instance->type = safe_strdup (type); |
118 instance->widget = widget; | 118 instance->widget = widget; |
119 instance->parent = parent; | 119 instance->parent = parent; |
120 instance->pop_up_p = pop_up_p; | 120 instance->pop_up_p = pop_up_p; |
151 resource_string (Widget widget, char *name) | 151 resource_string (Widget widget, char *name) |
152 { | 152 { |
153 XtResource resource; | 153 XtResource resource; |
154 char *result = NULL; | 154 char *result = NULL; |
155 | 155 |
156 resource.resource_name = "labelString"; | 156 resource.resource_name = "labelString"; |
157 resource.resource_class = "LabelString"; /* #### should be Xmsomething... */ | 157 resource.resource_class = "LabelString"; /* #### should be Xmsomething... */ |
158 resource.resource_type = XtRString; | 158 resource.resource_type = XtRString; |
159 resource.resource_size = sizeof (String); | 159 resource.resource_size = sizeof (String); |
160 resource.resource_offset = 0; | 160 resource.resource_offset = 0; |
161 resource.default_type = XtRImmediate; | 161 resource.default_type = XtRImmediate; |
278 | 278 |
279 XtFree (value_name); | 279 XtFree (value_name); |
280 } | 280 } |
281 | 281 |
282 XtSetArg (al [ac], XmNlabelString, built_string); ac++; | 282 XtSetArg (al [ac], XmNlabelString, built_string); ac++; |
283 XtSetArg (al [ac], XmNlabelType, XmSTRING); ac++; | 283 XtSetArg (al [ac], XmNlabelType, XmSTRING); ac++; |
284 } | 284 } |
285 | 285 |
286 if (val->key) | 286 if (val->key) |
287 { | 287 { |
288 key_string = XmStringCreateLtoR (val->key, XmSTRING_DEFAULT_CHARSET); | 288 key_string = XmStringCreateLtoR (val->key, XmSTRING_DEFAULT_CHARSET); |
457 num_children = 0; | 457 num_children = 0; |
458 for (child_index = 0, cur = val; cur; child_index++, cur = cur->next) | 458 for (child_index = 0, cur = val; cur; child_index++, cur = cur->next) |
459 { | 459 { |
460 ac = 0; | 460 ac = 0; |
461 button = 0; | 461 button = 0; |
462 XtSetArg (al [ac], XmNsensitive, cur->enabled); ac++; | 462 XtSetArg (al [ac], XmNsensitive, cur->enabled); ac++; |
463 XtSetArg (al [ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++; | 463 XtSetArg (al [ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++; |
464 XtSetArg (al [ac], XmNuserData, cur->call_data); ac++; | 464 XtSetArg (al [ac], XmNuserData, cur->call_data); ac++; |
465 | 465 |
466 switch (cur->type) | 466 switch (cur->type) |
467 { | 467 { |
468 case PUSHRIGHT_TYPE: | 468 case PUSHRIGHT_TYPE: |
469 /* A pushright marker which is not needed for the real Motif | 469 /* A pushright marker which is not needed for the real Motif |
666 /* update text widgets */ | 666 /* update text widgets */ |
667 | 667 |
668 static void | 668 static void |
669 xm_update_text (widget_instance* instance, Widget widget, widget_value* val) | 669 xm_update_text (widget_instance* instance, Widget widget, widget_value* val) |
670 { | 670 { |
671 XmTextSetString (widget, val->value ? val->value : (char *) ""); | 671 XmTextSetString (widget, val->value ? val->value : ""); |
672 XtRemoveAllCallbacks (widget, XmNactivateCallback); | 672 XtRemoveAllCallbacks (widget, XmNactivateCallback); |
673 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); | 673 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); |
674 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); | 674 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); |
675 XtAddCallback (widget, XmNvalueChangedCallback, | 675 XtAddCallback (widget, XmNvalueChangedCallback, |
676 xm_internal_update_other_instances, instance); | 676 xm_internal_update_other_instances, instance); |
678 | 678 |
679 static void | 679 static void |
680 xm_update_text_field (widget_instance* instance, Widget widget, | 680 xm_update_text_field (widget_instance* instance, Widget widget, |
681 widget_value* val) | 681 widget_value* val) |
682 { | 682 { |
683 XmTextFieldSetString (widget, val->value ? val->value : (char *) ""); | 683 XmTextFieldSetString (widget, val->value ? val->value : ""); |
684 XtRemoveAllCallbacks (widget, XmNactivateCallback); | 684 XtRemoveAllCallbacks (widget, XmNactivateCallback); |
685 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); | 685 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); |
686 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); | 686 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); |
687 XtAddCallback (widget, XmNvalueChangedCallback, | 687 XtAddCallback (widget, XmNvalueChangedCallback, |
688 xm_internal_update_other_instances, instance); | 688 xm_internal_update_other_instances, instance); |
782 val->edited = False; | 782 val->edited = False; |
783 | 783 |
784 /* Common to all widget types */ | 784 /* Common to all widget types */ |
785 XtVaSetValues (widget, | 785 XtVaSetValues (widget, |
786 XmNsensitive, val->enabled, | 786 XmNsensitive, val->enabled, |
787 XmNuserData, val->call_data, | 787 XmNuserData, val->call_data, |
788 0); | 788 0); |
789 | 789 |
790 #if defined (DIALOGS_MOTIF) || defined (MENUBARS_MOTIF) | 790 #if defined (DIALOGS_MOTIF) || defined (MENUBARS_MOTIF) |
791 /* Common to all label like widgets */ | 791 /* Common to all label like widgets */ |
792 if (XtIsSubclass (widget, xmLabelWidgetClass)) | 792 if (XtIsSubclass (widget, xmLabelWidgetClass)) |
1039 #endif /* ! DND_KLUDGE */ | 1039 #endif /* ! DND_KLUDGE */ |
1040 | 1040 |
1041 if (pop_up_p) | 1041 if (pop_up_p) |
1042 { | 1042 { |
1043 ac = 0; | 1043 ac = 0; |
1044 XtSetArg(al[ac], XmNtitle, shell_title); ac++; | 1044 XtSetArg(al[ac], XmNtitle, shell_title); ac++; |
1045 XtSetArg(al[ac], XtNallowShellResize, True); ac++; | 1045 XtSetArg(al[ac], XtNallowShellResize, True); ac++; |
1046 XtSetArg(al[ac], XmNdeleteResponse, XmUNMAP); ac++; | 1046 XtSetArg(al[ac], XmNdeleteResponse, XmUNMAP); ac++; |
1047 result = XmCreateDialogShell (parent, (char *) "dialog", al, ac); | 1047 result = XmCreateDialogShell (parent, "dialog", al, ac); |
1048 | 1048 |
1049 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; | 1049 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; |
1050 /* XtSetArg(al[ac], XmNautoUnmanage, TRUE); ac++; */ /* ####is this ok? */ | 1050 /* XtSetArg(al[ac], XmNautoUnmanage, TRUE); ac++; */ /* ####is this ok? */ |
1051 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; | 1051 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; |
1052 form = XmCreateForm (result, (char *) shell_title, al, ac); | 1052 form = XmCreateForm (result, (char *) shell_title, al, ac); |
1053 } | 1053 } |
1054 else | 1054 else |
1055 { | 1055 { |
1056 ac = 0; | 1056 ac = 0; |
1057 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; | 1057 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; |
1058 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; | 1058 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; |
1059 form = XmCreateForm (parent, (char *) shell_title, al, ac); | 1059 form = XmCreateForm (parent, (char *) shell_title, al, ac); |
1060 result = form; | 1060 result = form; |
1061 } | 1061 } |
1062 | 1062 |
1063 ac = 0; | 1063 ac = 0; |
1064 XtSetArg(al[ac], XmNpacking, XmPACK_COLUMN); ac++; | 1064 XtSetArg(al[ac], XmNpacking, XmPACK_COLUMN); ac++; |
1065 XtSetArg(al[ac], XmNorientation, XmVERTICAL); ac++; | 1065 XtSetArg(al[ac], XmNorientation, XmVERTICAL); ac++; |
1066 XtSetArg(al[ac], XmNnumColumns, left_buttons + right_buttons + 1); ac++; | 1066 XtSetArg(al[ac], XmNnumColumns, left_buttons + right_buttons + 1); ac++; |
1067 XtSetArg(al[ac], XmNmarginWidth, 0); ac++; | 1067 XtSetArg(al[ac], XmNmarginWidth, 0); ac++; |
1068 XtSetArg(al[ac], XmNmarginHeight, 0); ac++; | 1068 XtSetArg(al[ac], XmNmarginHeight, 0); ac++; |
1069 XtSetArg(al[ac], XmNspacing, 13); ac++; | 1069 XtSetArg(al[ac], XmNspacing, 13); ac++; |
1070 XtSetArg(al[ac], XmNadjustLast, False); ac++; | 1070 XtSetArg(al[ac], XmNadjustLast, False); ac++; |
1071 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++; | 1071 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++; |
1072 XtSetArg(al[ac], XmNisAligned, True); ac++; | 1072 XtSetArg(al[ac], XmNisAligned, True); ac++; |
1073 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; | 1073 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; |
1074 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++; | 1074 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++; |
1075 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; | 1075 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; |
1076 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; | 1076 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; |
1077 XtSetArg(al[ac], XmNleftOffset, 13); ac++; | 1077 XtSetArg(al[ac], XmNleftOffset, 13); ac++; |
1078 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; | 1078 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; |
1079 XtSetArg(al[ac], XmNrightOffset, 13); ac++; | 1079 XtSetArg(al[ac], XmNrightOffset, 13); ac++; |
1080 row = XmCreateRowColumn (form, (char *) "row", al, ac); | 1080 row = XmCreateRowColumn (form, "row", al, ac); |
1081 | 1081 |
1082 n_children = 0; | 1082 n_children = 0; |
1083 for (i = 0; i < left_buttons; i++) | 1083 for (i = 0; i < left_buttons; i++) |
1084 { | 1084 { |
1085 char button_name [16]; | 1085 char button_name [16]; |
1086 sprintf (button_name, "button%d", i + 1); | 1086 sprintf (button_name, "button%d", i + 1); |
1087 ac = 0; | 1087 ac = 0; |
1088 if (i == 0) | 1088 if (i == 0) |
1089 { | 1089 { |
1090 XtSetArg(al[ac], XmNhighlightThickness, 1); ac++; | 1090 XtSetArg(al[ac], XmNhighlightThickness, 1); ac++; |
1091 XtSetArg(al[ac], XmNshowAsDefault, TRUE); ac++; | 1091 XtSetArg(al[ac], XmNshowAsDefault, TRUE); ac++; |
1092 } | 1092 } |
1093 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; | 1093 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++; |
1094 children [n_children] = XmCreatePushButton (row, button_name, al, ac); | 1094 children [n_children] = XmCreatePushButton (row, button_name, al, ac); |
1095 DO_DND_KLUDGE (children [n_children]); | 1095 DO_DND_KLUDGE (children [n_children]); |
1096 | 1096 |
1134 } | 1134 } |
1135 | 1135 |
1136 XtManageChildren (children, n_children); | 1136 XtManageChildren (children, n_children); |
1137 | 1137 |
1138 ac = 0; | 1138 ac = 0; |
1139 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; | 1139 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; |
1140 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; | 1140 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; |
1141 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; | 1141 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; |
1142 XtSetArg(al[ac], XmNbottomWidget, row); ac++; | 1142 XtSetArg(al[ac], XmNbottomWidget, row); ac++; |
1143 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; | 1143 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; |
1144 XtSetArg(al[ac], XmNleftOffset, 0); ac++; | 1144 XtSetArg(al[ac], XmNleftOffset, 0); ac++; |
1145 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; | 1145 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; |
1146 XtSetArg(al[ac], XmNrightOffset, 0); ac++; | 1146 XtSetArg(al[ac], XmNrightOffset, 0); ac++; |
1147 separator = XmCreateSeparator (form, (char *) "", al, ac); | 1147 separator = XmCreateSeparator (form, "", al, ac); |
1148 | 1148 |
1149 ac = 0; | 1149 ac = 0; |
1150 XtSetArg(al[ac], XmNlabelType, XmPIXMAP); ac++; | 1150 XtSetArg(al[ac], XmNlabelType, XmPIXMAP); ac++; |
1151 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; | 1151 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; |
1152 XtSetArg(al[ac], XmNtopOffset, 13); ac++; | 1152 XtSetArg(al[ac], XmNtopOffset, 13); ac++; |
1153 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++; | 1153 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++; |
1154 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; | 1154 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; |
1155 XtSetArg(al[ac], XmNleftOffset, 13); ac++; | 1155 XtSetArg(al[ac], XmNleftOffset, 13); ac++; |
1156 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; | 1156 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; |
1157 icon = XmCreateLabel (form, (char *) icon_name, al, ac); | 1157 icon = XmCreateLabel (form, (char *) icon_name, al, ac); |
1158 DO_DND_KLUDGE (icon); | 1158 DO_DND_KLUDGE (icon); |
1159 | 1159 |
1160 ac = 0; | 1160 ac = 0; |
1161 XtSetArg(al[ac], XmNmappedWhenManaged, FALSE); ac++; | 1161 XtSetArg(al[ac], XmNmappedWhenManaged, FALSE); ac++; |
1162 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; | 1162 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; |
1163 XtSetArg(al[ac], XmNtopOffset, 6); ac++; | 1163 XtSetArg(al[ac], XmNtopOffset, 6); ac++; |
1164 XtSetArg(al[ac], XmNtopWidget, icon); ac++; | 1164 XtSetArg(al[ac], XmNtopWidget, icon); ac++; |
1165 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; | 1165 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; |
1166 XtSetArg(al[ac], XmNbottomOffset, 6); ac++; | 1166 XtSetArg(al[ac], XmNbottomOffset, 6); ac++; |
1167 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; | 1167 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; |
1168 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE); ac++; | 1168 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE); ac++; |
1169 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; | 1169 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; |
1170 icon_separator = XmCreateLabel (form, (char *) "", al, ac); | 1170 icon_separator = XmCreateLabel (form, "", al, ac); |
1171 DO_DND_KLUDGE (icon_separator); | 1171 DO_DND_KLUDGE (icon_separator); |
1172 | 1172 |
1173 if (text_input_slot) | 1173 if (text_input_slot) |
1174 { | 1174 { |
1175 ac = 0; | 1175 ac = 0; |
1176 XtSetArg(al[ac], XmNcolumns, 50); ac++; | 1176 XtSetArg(al[ac], XmNcolumns, 50); ac++; |
1177 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; | 1177 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; |
1178 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; | 1178 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; |
1179 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; | 1179 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; |
1180 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; | 1180 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; |
1181 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; | 1181 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; |
1182 XtSetArg(al[ac], XmNleftOffset, 13); ac++; | 1182 XtSetArg(al[ac], XmNleftOffset, 13); ac++; |
1183 XtSetArg(al[ac], XmNleftWidget, icon); ac++; | 1183 XtSetArg(al[ac], XmNleftWidget, icon); ac++; |
1184 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; | 1184 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; |
1185 XtSetArg(al[ac], XmNrightOffset, 13); ac++; | 1185 XtSetArg(al[ac], XmNrightOffset, 13); ac++; |
1186 value = XmCreateTextField (form, (char *) "value", al, ac); | 1186 value = XmCreateTextField (form, "value", al, ac); |
1187 DO_DND_KLUDGE (value); | 1187 DO_DND_KLUDGE (value); |
1188 } | 1188 } |
1189 else if (radio_box) | 1189 else if (radio_box) |
1190 { | 1190 { |
1191 Widget radio_butt; | 1191 Widget radio_butt; |
1192 ac = 0; | 1192 ac = 0; |
1193 XtSetArg(al[ac], XmNmarginWidth, 0); ac++; | 1193 XtSetArg(al[ac], XmNmarginWidth, 0); ac++; |
1194 XtSetArg(al[ac], XmNmarginHeight, 0); ac++; | 1194 XtSetArg(al[ac], XmNmarginHeight, 0); ac++; |
1195 XtSetArg(al[ac], XmNspacing, 13); ac++; | 1195 XtSetArg(al[ac], XmNspacing, 13); ac++; |
1196 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++; | 1196 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++; |
1197 XtSetArg(al[ac], XmNorientation, XmHORIZONTAL); ac++; | 1197 XtSetArg(al[ac], XmNorientation, XmHORIZONTAL); ac++; |
1198 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; | 1198 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; |
1199 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; | 1199 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; |
1200 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; | 1200 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; |
1201 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; | 1201 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; |
1202 XtSetArg(al[ac], XmNleftOffset, 13); ac++; | 1202 XtSetArg(al[ac], XmNleftOffset, 13); ac++; |
1203 XtSetArg(al[ac], XmNleftWidget, icon); ac++; | 1203 XtSetArg(al[ac], XmNleftWidget, icon); ac++; |
1204 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; | 1204 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; |
1205 XtSetArg(al[ac], XmNrightOffset, 13); ac++; | 1205 XtSetArg(al[ac], XmNrightOffset, 13); ac++; |
1206 value = XmCreateRadioBox (form, (char *) "radiobutton1", al, ac); | 1206 value = XmCreateRadioBox (form, "radiobutton1", al, ac); |
1207 ac = 0; | 1207 ac = 0; |
1208 i = 0; | 1208 i = 0; |
1209 radio_butt = XmCreateToggleButtonGadget (value, (char *) "radio1", | 1209 radio_butt = XmCreateToggleButtonGadget (value, "radio1", al, ac); |
1210 al, ac); | |
1211 children [i++] = radio_butt; | 1210 children [i++] = radio_butt; |
1212 radio_butt = XmCreateToggleButtonGadget (value, (char *) "radio2", | 1211 radio_butt = XmCreateToggleButtonGadget (value, "radio2", al, ac); |
1213 al, ac); | |
1214 children [i++] = radio_butt; | 1212 children [i++] = radio_butt; |
1215 radio_butt = XmCreateToggleButtonGadget (value, (char *) "radio3", | 1213 radio_butt = XmCreateToggleButtonGadget (value, "radio3", al, ac); |
1216 al, ac); | |
1217 children [i++] = radio_butt; | 1214 children [i++] = radio_butt; |
1218 XtManageChildren (children, i); | 1215 XtManageChildren (children, i); |
1219 } | 1216 } |
1220 else if (list) | 1217 else if (list) |
1221 { | 1218 { |
1222 ac = 0; | 1219 ac = 0; |
1223 XtSetArg(al[ac], XmNvisibleItemCount, 5); ac++; | 1220 XtSetArg(al[ac], XmNvisibleItemCount, 5); ac++; |
1224 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; | 1221 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++; |
1225 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; | 1222 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; |
1226 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; | 1223 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; |
1227 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; | 1224 XtSetArg(al[ac], XmNbottomWidget, separator); ac++; |
1228 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; | 1225 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; |
1229 XtSetArg(al[ac], XmNleftOffset, 13); ac++; | 1226 XtSetArg(al[ac], XmNleftOffset, 13); ac++; |
1230 XtSetArg(al[ac], XmNleftWidget, icon); ac++; | 1227 XtSetArg(al[ac], XmNleftWidget, icon); ac++; |
1231 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; | 1228 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; |
1232 XtSetArg(al[ac], XmNrightOffset, 13); ac++; | 1229 XtSetArg(al[ac], XmNrightOffset, 13); ac++; |
1233 value = XmCreateScrolledList (form, (char *) "list", al, ac); | 1230 value = XmCreateScrolledList (form, "list", al, ac); |
1234 | 1231 |
1235 /* this is the easiest way I found to have the dble click in the | 1232 /* this is the easiest way I found to have the dble click in the |
1236 list activate the default button */ | 1233 list activate the default button */ |
1237 XtAddCallback (value, XmNdefaultActionCallback, activate_button, button); | 1234 XtAddCallback (value, XmNdefaultActionCallback, activate_button, button); |
1238 } | 1235 } |
1239 | 1236 |
1240 ac = 0; | 1237 ac = 0; |
1241 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++; | 1238 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++; |
1242 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; | 1239 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; |
1243 XtSetArg(al[ac], XmNtopOffset, 13); ac++; | 1240 XtSetArg(al[ac], XmNtopOffset, 13); ac++; |
1244 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; | 1241 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; |
1245 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; | 1242 XtSetArg(al[ac], XmNbottomOffset, 13); ac++; |
1246 XtSetArg(al[ac], XmNbottomWidget, | 1243 XtSetArg(al[ac], XmNbottomWidget, |
1247 text_input_slot || radio_box || list ? value : separator); ac++; | 1244 text_input_slot || radio_box || list ? value : separator); ac++; |
1248 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; | 1245 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; |
1249 XtSetArg(al[ac], XmNleftOffset, 13); ac++; | 1246 XtSetArg(al[ac], XmNleftOffset, 13); ac++; |
1250 XtSetArg(al[ac], XmNleftWidget, icon); ac++; | 1247 XtSetArg(al[ac], XmNleftWidget, icon); ac++; |
1251 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; | 1248 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; |
1252 XtSetArg(al[ac], XmNrightOffset, 13); ac++; | 1249 XtSetArg(al[ac], XmNrightOffset, 13); ac++; |
1253 message = XmCreateLabel (form, (char *) "message", al, ac); | 1250 message = XmCreateLabel (form, "message", al, ac); |
1254 DO_DND_KLUDGE (message); | 1251 DO_DND_KLUDGE (message); |
1255 | 1252 |
1256 if (list) | 1253 if (list) |
1257 XtManageChild (value); | 1254 XtManageChild (value); |
1258 | 1255 |
1487 make_menubar (widget_instance* instance) | 1484 make_menubar (widget_instance* instance) |
1488 { | 1485 { |
1489 Arg al[10]; | 1486 Arg al[10]; |
1490 int ac = 0; | 1487 int ac = 0; |
1491 | 1488 |
1492 XtSetArg(al[ac], XmNmarginHeight, 0); ac++; | 1489 XtSetArg(al[ac], XmNmarginHeight, 0); ac++; |
1493 XtSetArg(al[ac], XmNshadowThickness, 3); ac++; | 1490 XtSetArg(al[ac], XmNshadowThickness, 3); ac++; |
1494 | 1491 |
1495 return XmCreateMenuBar (instance->parent, instance->info->name, al, ac); | 1492 return XmCreateMenuBar (instance->parent, instance->info->name, al, ac); |
1496 } | 1493 } |
1497 | 1494 |
1523 static Widget | 1520 static Widget |
1524 make_scrollbar (widget_instance *instance, int vertical) | 1521 make_scrollbar (widget_instance *instance, int vertical) |
1525 { | 1522 { |
1526 Arg al[20]; | 1523 Arg al[20]; |
1527 int ac = 0; | 1524 int ac = 0; |
1528 Widget scrollbar; | 1525 static XtCallbackRec callbacks[2] = |
1529 | 1526 { {xm_scrollbar_callback, NULL}, {NULL, NULL} }; |
1530 XtSetArg (al[ac], XmNminimum, 1); ac++; | 1527 |
1528 callbacks[0].closure = (XtPointer) instance; | |
1529 | |
1530 XtSetArg (al[ac], XmNminimum, 1); ac++; | |
1531 XtSetArg (al[ac], XmNmaximum, INT_MAX); ac++; | 1531 XtSetArg (al[ac], XmNmaximum, INT_MAX); ac++; |
1532 XtSetArg (al[ac], XmNincrement, 1); ac++; | 1532 XtSetArg (al[ac], XmNincrement, 1); ac++; |
1533 XtSetArg (al[ac], XmNpageIncrement, 1); ac++; | 1533 XtSetArg (al[ac], XmNpageIncrement, 1); ac++; |
1534 XtSetArg (al[ac], XmNborderWidth, 0); ac++; | 1534 XtSetArg (al[ac], XmNborderWidth, 0); ac++; |
1535 if (vertical) | 1535 XtSetArg (al[ac], XmNorientation, vertical ? XmVERTICAL : XmHORIZONTAL); ac++; |
1536 { | 1536 |
1537 XtSetArg (al[ac], XmNorientation, XmVERTICAL); ac++; | 1537 XtSetArg (al[ac], XmNdecrementCallback, callbacks); ac++; |
1538 } | 1538 XtSetArg (al[ac], XmNdragCallback, callbacks); ac++; |
1539 else | 1539 XtSetArg (al[ac], XmNincrementCallback, callbacks); ac++; |
1540 { | 1540 XtSetArg (al[ac], XmNpageDecrementCallback, callbacks); ac++; |
1541 XtSetArg (al[ac], XmNorientation, XmHORIZONTAL); ac++; | 1541 XtSetArg (al[ac], XmNpageIncrementCallback, callbacks); ac++; |
1542 } | 1542 XtSetArg (al[ac], XmNtoBottomCallback, callbacks); ac++; |
1543 | 1543 XtSetArg (al[ac], XmNtoTopCallback, callbacks); ac++; |
1544 scrollbar = | 1544 XtSetArg (al[ac], XmNvalueChangedCallback, callbacks); ac++; |
1545 XmCreateScrollBar (instance->parent, instance->info->name, al, ac); | 1545 |
1546 | 1546 return XmCreateScrollBar (instance->parent, instance->info->name, al, ac); |
1547 XtRemoveAllCallbacks (scrollbar, XmNdecrementCallback); | |
1548 XtRemoveAllCallbacks (scrollbar, XmNdragCallback); | |
1549 XtRemoveAllCallbacks (scrollbar, XmNincrementCallback); | |
1550 XtRemoveAllCallbacks (scrollbar, XmNpageDecrementCallback); | |
1551 XtRemoveAllCallbacks (scrollbar, XmNpageIncrementCallback); | |
1552 XtRemoveAllCallbacks (scrollbar, XmNtoBottomCallback); | |
1553 XtRemoveAllCallbacks (scrollbar, XmNtoTopCallback); | |
1554 XtRemoveAllCallbacks (scrollbar, XmNvalueChangedCallback); | |
1555 | |
1556 XtAddCallback(scrollbar, XmNdecrementCallback, xm_scrollbar_callback, | |
1557 (XtPointer) instance); | |
1558 XtAddCallback(scrollbar, XmNdragCallback, xm_scrollbar_callback, | |
1559 (XtPointer) instance); | |
1560 XtAddCallback(scrollbar, XmNincrementCallback, xm_scrollbar_callback, | |
1561 (XtPointer) instance); | |
1562 XtAddCallback(scrollbar, XmNpageDecrementCallback, xm_scrollbar_callback, | |
1563 (XtPointer) instance); | |
1564 XtAddCallback(scrollbar, XmNpageIncrementCallback, xm_scrollbar_callback, | |
1565 (XtPointer) instance); | |
1566 XtAddCallback(scrollbar, XmNtoBottomCallback, xm_scrollbar_callback, | |
1567 (XtPointer) instance); | |
1568 XtAddCallback(scrollbar, XmNtoTopCallback, xm_scrollbar_callback, | |
1569 (XtPointer) instance); | |
1570 XtAddCallback(scrollbar, XmNvalueChangedCallback, xm_scrollbar_callback, | |
1571 (XtPointer) instance); | |
1572 | |
1573 return scrollbar; | |
1574 } | 1547 } |
1575 | 1548 |
1576 static Widget | 1549 static Widget |
1577 make_vertical_scrollbar (widget_instance *instance) | 1550 make_vertical_scrollbar (widget_instance *instance) |
1578 { | 1551 { |