Mercurial > hg > xemacs-beta
diff etc/tests/external-widget/test-ew-motif.c @ 2:ac2d302a0011 r19-15b2
Import from CVS: tag r19-15b2
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:46:35 +0200 |
parents | |
children | 03ab78e48ef6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/tests/external-widget/test-ew-motif.c Mon Aug 13 08:46:35 2007 +0200 @@ -0,0 +1,145 @@ +#include <Xm/Xm.h> +#include <Xm/RowColumn.h> +#include <Xm/Scale.h> +#include <Xm/PushB.h> +#include <Xm/Label.h> +#include <Xm/Text.h> +#include <Xm/PanedW.h> +#include "ExternalClient.h" + +#ifdef TOOLTALK +#include <desktop/tt_c.h> +char *HxProcID; +#endif + +XtAppContext xt_app_con; + +void ScaleValueChangedCB(Widget scale, XtPointer app_data, XtPointer widget_data) +{ + XmScaleCallbackStruct *xms = (XmScaleCallbackStruct *) widget_data; + Widget label = (Widget) app_data; + char labelarr[10]; + XmString labelstr; +#if 0 + sprintf(labelarr, "%d", xms->value); + labelstr = XmStringCreateLocalized(labelarr); + XtVaSetValues(label, XmNlabelString, labelstr, NULL); + XmStringFree(labelstr); +#endif +} + +#ifdef TOOLTALK +static void +handle_tt_input(XtPointer client_data, int *source, XtInputId *id) +{ + Tt_message m = tt_message_receive(); + + if (m && !(tt_ptr_error(m))) { + tt_message_destroy(m); + } +} + +Tt_status +HxInitializeToolTalk() +{ + static Boolean initialized = FALSE; + + if (!initialized) { + int fd; + Tt_status status; + + HxProcID = tt_open(); + fd = tt_fd(); + if (TT_OK != (status = tt_session_join( tt_default_session() ))) + return status; + (void)XtAppAddInput(xt_app_con, fd, (void *)XtInputReadMask, handle_tt_input, NULL); + initialized = TRUE; + } + + return TT_OK; +} +#endif + +main(int argc, char **argv) +{ + Widget shell, rowcolumn, scale, pushbutton, label1, label2, text; + Widget paned, text2; + int n, i; + Widget widlist[100]; + Widget emacscli[100]; + Arg args[100]; + int no_ews = 1; + char buf[100]; + + if (argc > 1) + no_ews = atoi (argv[1]); + + shell = XtAppInitialize(&xt_app_con, "Testmotif", NULL, 0, + &argc, argv, NULL, NULL, 0); + +#ifdef TOOLTALK + HxInitializeToolTalk(); +#endif + + rowcolumn = XmCreateRowColumn(shell, "rowcolumn", NULL, 0); + XtManageChild(rowcolumn); + + n = 0; + XtSetArg(args[n], XmNtraversalOn, TRUE); n++; +#if 0 + label1 = XmCreateLabel(rowcolumn, "label1", args, n); +#endif + label1 = XtVaCreateWidget("label1", xmLabelWidgetClass, rowcolumn, + XmNwidth, 50, XmNheight, 30, + XmNtraversalOn, TRUE, NULL); + label2 = XmCreateLabel(rowcolumn, "label2", NULL, 0); + scale = XmCreateScale(rowcolumn, "scale", NULL, 0); + XtAddCallback(scale, XmNvalueChangedCallback, ScaleValueChangedCB, label1); + paned = XmCreatePanedWindow(rowcolumn, "paned", NULL, 0); + n = 0; + widlist[n++] = label1; + widlist[n++] = label2; + widlist[n++] = scale; + widlist[n++] = paned; + XtManageChildren(widlist, n); + + pushbutton = XmCreatePushButton(paned, "pushbutton", NULL, 0); + text = XmCreateText(paned, "text", NULL, 0); + for (i=0; i<no_ews; i++) { + sprintf (buf, "extcli%d", i); + emacscli[i] = XtVaCreateWidget(buf, externalClientWidgetClass, paned, + XmNwidth, 500, XmNheight, 200, + XmNtraversalOn, TRUE, +#ifdef TOOLTALK + XtNuseToolTalk, TRUE, +#endif + NULL); + } + text2 = XmCreateText(paned, "text2", NULL, 0); + n = 0; + widlist[n++] = pushbutton; + widlist[n++] = text; + for (i=0; i<no_ews; i++) + widlist[n++] = emacscli[i]; + widlist[n++] = text2; + XtManageChildren(widlist, n); + + XtRealizeWidget(shell); + + { + XmString lab; + char labarr[1000]; + char tmpbuf[50]; + + strcpy (labarr, "window:"); + for (i=0; i<no_ews; i++) { + sprintf (tmpbuf, " %d", XtWindow(emacscli[i])); + strcat (labarr, tmpbuf); + } + lab = XmStringCreateLocalized(labarr); + XtVaSetValues(label2, XmNlabelString, lab, NULL); + XmStringFree(lab); + } + + XtAppMainLoop(xt_app_con); +}