+
+#ifdef HAVE_MOTIF
+
+# define set_toggle_button_state(toggle,state) \
+ XmToggleButtonSetState ((toggle), (state), True)
+# define set_text_string(text_widget,string) \
+ XmTextSetString ((text_widget), (string))
+# define add_button_callback(button,cb,arg) \
+ XtAddCallback ((button), XmNactivateCallback, (cb), (arg))
+# define add_toggle_callback(button,cb,arg) \
+ XtAddCallback ((button), XmNvalueChangedCallback, (cb), (arg))
+# define add_text_callback add_toggle_callback
+
+#else /* HAVE_ATHENA */
+
+# define set_toggle_button_state(toggle,state) \
+ XtVaSetValues((toggle), XtNstate, (state), 0)
+# define set_text_string(text_widget,string) \
+ XtVaSetValues ((text_widget), XtNvalue, (string), 0)
+# define add_button_callback(button,cb,arg) \
+ XtAddCallback ((button), XtNcallback, (cb), (arg))
+# define add_toggle_callback add_button_callback
+# define add_text_callback(b,c,a) ERROR!
+
+#endif /* HAVE_ATHENA */
+
+
+#define disable_widget(widget) \
+ XtVaSetValues((widget), XtNsensitive, False, 0)
+
+
+static char *
+get_text_string (Widget text_widget)
+{
+#ifdef HAVE_MOTIF
+ return XmTextGetString (text_widget);
+#else /* HAVE_ATHENA */
+ char *string = 0;
+ XtVaGetValues (text_widget, XtNvalue, &string, 0);
+ return string;
+#endif /* HAVE_ATHENA */
+}
+
+static char *
+get_label_string (Widget label_widget)
+{
+#ifdef HAVE_MOTIF
+ char *label = 0;
+ XmString xm_label = 0;
+ XtVaGetValues (label_widget, XmNlabelString, &xm_label, 0);
+ if (!xm_label)
+ return 0;
+ XmStringGetLtoR (xm_label, XmSTRING_DEFAULT_CHARSET, &label);
+ return label;
+#else /* HAVE_ATHENA */
+ char *label = 0;
+ XtVaGetValues (label_widget, XtNlabel, &label, 0);
+ return (label ? strdup(label) : 0);
+#endif /* HAVE_ATHENA */
+}
+