This is test-ew-motif.c in view mode; [Download] [Up]
#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);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.