#include <X11/Intrinsic.h>
#include <Xm/Xm.h>
#include <Xm/PushB.h>

#include <stdlib.h>
#include <stdio.h>

void activateCB();

XmString btn_text;

int main(int argc, char *argv[]) {

  Widget toplevel;
  Widget button;
  XtAppContext app_context;
  Arg args[10];
  register int n;

  toplevel = XtAppInitialize(&app_context, "XMdemos", NULL, 0, &argc, argv, NULL, NULL, 0);

  btn_text = XmStringCreateLtoR("Push Here", XmSTRING_DEFAULT_CHARSET);

  n = 0;
  XtSetArg (args[n], XmNlabelString, btn_text); n++;
  XtSetArg (args[n], XmNwidth, 250); n++;
  XtSetArg (args[n], XmNheight, 150); n++;
  button = XtCreateManagedWidget("button", xmPushButtonWidgetClass, toplevel, args, n);

  XtAddCallback(button, XmNactivateCallback, activateCB, NULL);

  XtRealizeWidget(toplevel);
  XtAppMainLoop(app_context);

  return 0;
}

void activateCB( Widget w, caddr_t clent_data, caddr_t call_data) {
  printf("PushButton selected.\n");
  XmStringFree(btn_text);
  exit(0);
}
