/*============================================================================*/
/*  Requestors.c: By Kevin T. Seghetti					      */
/*============================================================================*/

#include "equates.h"
#include <functions.h>
#include <exec/types.h>
#include <intuition/intuition.h>

struct IntuiText *CreateIntuiText();

/*============================================================================*/
/*  DoAutoRequest: Display an autorequest				      */
/*  Inputs: Win -> window to attach requestor to			      */
/*	    Body,Positive,Negative = pointers to text strings		      */
/*	    Positive may be a NULL, will only display the negative option     */
/*	    Win may be null, will appear on the workbench screen	      */
/*============================================================================*/

DoAutoRequest(Win,Body,Positive,Negative)
struct Window *Win;
char *Body,*Positive,*Negative;
{
    int retval;
    struct Remember *AReqRemember;
    struct IntuiText *BodyText,*PositiveText,*NegativeText;
    long Width;
    AReqRemember = NULL;
    BodyText = CreateIntuiText(Body,&AReqRemember);
    BodyText->LeftEdge=6;
    BodyText->TopEdge = 6;
    NegativeText = CreateIntuiText(Negative,&AReqRemember);
    NegativeText->LeftEdge = 6;
    NegativeText->TopEdge = 3;
    if(Positive)
     {
	PositiveText = CreateIntuiText(Positive,&AReqRemember);
	PositiveText->LeftEdge = 6;
	PositiveText->TopEdge = 3;
     }
    else
	PositiveText = NULL;
    Width = (strlen(Body)*8)+32;

    retval = (AutoRequest(Win,BodyText,PositiveText,NegativeText,0L,0L,Width,50L));
    FreeRemember(&AReqRemember,(long)TRUE);
    return(retval);
}

/*============================================================================*/
/*  DoMultipleAutoRequest: Display anautorequest			      */
/*  Inputs: Win -> to window to attach requestor to			      */
/*	    Positive,Negative = pointers to text strings		      */
/*	    Body = pointer to array of strings,with a null ptr at the end     */
/*	    Positive may be a NULL, will only display the negative option     */
/*	    Win may be null, will appear on the workbench screen	      */
/*============================================================================*/

DoMultipleAutoRequest(Win,Body,Positive,Negative)
struct Window *Win;
char *Body[],*Positive,*Negative;
{
    struct Remember *AReqRemember;
    struct IntuiText *BodyText,*PositiveText,*NegativeText,*OldIText;
    int i,retval;
    long Width,Len,Height;
    AReqRemember = NULL;

    BodyText = CreateIntuiText(Body[0],&AReqRemember);
    BodyText->LeftEdge=7;
    BodyText->TopEdge = 6;
    OldIText = BodyText;

    Width = (strlen(Body[0])*8)+30;

    i = 0;
    while(Body[++i])
     {
	OldIText->NextText = CreateIntuiText(Body[i],&AReqRemember);
	OldIText = OldIText->NextText;
	Len = (strlen(Body[i])*8)+30;
	if(Width < Len)
	    Width = Len;
	OldIText->TopEdge = (i*10)+6;
	OldIText->LeftEdge = 7;
     }

    NegativeText = CreateIntuiText(Negative,&AReqRemember);
    NegativeText->LeftEdge = 6;
    NegativeText->TopEdge = 3;
    if(Positive)
     {
	PositiveText = CreateIntuiText(Positive,&AReqRemember);
	PositiveText->LeftEdge = 6;
	PositiveText->TopEdge = 3;
     }
    else
	PositiveText = NULL;

    Height = (i*10)+38;

    retval = AutoRequest(Win,BodyText,PositiveText,NegativeText,0L,0L,Width,Height);
    FreeRemember(&AReqRemember,(long)TRUE);
    return(retval);
}

