#include "bool.h"
#include "res.h"
#include <X11/Shell.h>
#include <X11/Command.h>
#include <Xw/Form.h>
#include <Xw/SText.h>
#include <Xw/TextEdit.h>

static Arg shellArgs[]= {
  { XtNallowShellResize , (XtArgVal) FALSE },
  { XtNwidth, (XtArgVal) 200 },
  { XtNheight, (XtArgVal) 100 },
  { XtNwmTimeout, (XtArgVal) 3 },     /* wait only 3 seconds for the window
					 manager to respond */
};

#define  REQUEST_Y_PADDING 3
#define  REQUEST_X_PADDING 3
static Arg request_FormArgs[]={
  { XtNyResizable, (XtArgVal) FALSE },
  { XtNxResizable, (XtArgVal) FALSE },
  { XtNborderWidth, (XtArgVal) 1 },
  { XtNxOffset, (XtArgVal) REQUEST_X_PADDING },
  { XtNyOffset, (XtArgVal) REQUEST_Y_PADDING },
  { XtNxAttachOffset, (XtArgVal) REQUEST_X_PADDING },
  { XtNyAttachOffset, (XtArgVal) REQUEST_Y_PADDING },
  { XtNheight, (XtArgVal) 0 },
  { NULL, NULL },
};

Arg request_STextArgs[]={
  { XtNalignment, (XtArgVal) XwALIGN_CENTER },
  { XtNwidth, (int) 100 },
  { XtNheight, (int) 15 },
  { XtNwrap, (XtArgVal) FALSE },
  { XtNstrip, (XtArgVal) FALSE },
  { XtNborderWidth, (XtArgVal) 0 },
  { NULL, (XtArgVal) NULL },
};

Arg request_YesArgs{}={
  { XtNjustify, (XtArgVal) XtJustifyCenter },
  { XtNwidth, (int) 40 },
  { XtNheight, (int) 15 },
  { XtNlabel, (XtArgVal) "Yes"},
  { NULL, NULL},
};

Arg request_NoArgs{}={
  { XtNjustify, (XtArgVal) XtJustifyCenter },
  { XtNwidth, (int) 40 },
  { XtNheight, (int) 15 },
  { XtNlabel, (XtArgVal) "No"},
  { NULL, NULL},
};

/*--------------------------------------*/
void Request_get_tf(ParentW,text)
Widget ParentW;
char *text;
{
  Widget ShellW, FormW, TextW, YesW, NoW;
  ArgPack AP;

  ShellW=XtCreatePopupShell(NULL,
			    topLevelShellWidgetClass,
			    ParentW;
			    shellArgs,XtNumber(shellArgs));

  
  AP=GetArgPack();

  AP=DuplicateArgList(rsi_FormArgs);
  FormW=XtCreateManagedWidget(NULL,
				  XwformWidgetClass,
				  ShellW,
				  TheArgs(AP),NumArgs(AP));  
  DeleteArgPack(AP);

  
  AP=GetArgPack();
  AP=DuplicateArgList(request_LabelArgs);
  AddArg(AP,XtNstring, (XtArgVal) text);
  TextW=XtCreateManagedWidget(NULL,
			      XwstatictextWidgetClass,
			      FormW,
			      TheArgs(AP),NumArgs(AP));
  DeleteArgPack(AP);

  
  AP=GetArgPack();
  AP=DuplicateArgList(request_YesArgs);
  AddArg(AP,XtNstring, (XtArgVal) text);
  AddArg(AP,XtNyRefWidget, (XtArgVal) TextW);
  AddArg(AP,XtNyAddHeight, (XtArgVal) TRUE);
  AddArg(AP,XtNxRefWidget, (XtArgVal) FormW);
  AddArg(AP,XtNxAddWidth, (XtArgVal) FALSE);
  YesW=XtCreateManagedWidget(NULL,
			      commandWidgetClass,
			      FormW,
			      TheArgs(AP),NumArgs(AP));
  DeleteArgPack(AP);
  
  AP=GetArgPack();
  AP=DuplicateArgList(request_NoArgs);
  AddArg(AP,XtNyRefWidget, (XtArgVal) YesW);
  AddArg(AP,XtNyAddHeight, (XtArgVal) FALSE);
  AddArg(AP,XtNxAttachRight, (XtArgVal) TRUE);
  AddArg(AP,XtNxVaryOffset, (XtArgVal) FALSE);
  NoW=XtCreateManagedWidget(NULL,
			      commandWidgetClass,
			      FormW,
			      TheArgs(AP),NumArgs(AP));
  XtAddCallback(NoW, XtNcallback, request_
  DeleteArgPack(AP);

  
