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