#include "mteEd.h"
#include "mteP.h"
#include "xstuff.h"
#include <FTreg.h>
#include <Xw/MenuBtn.h>
#include <string.h>
#include "al.h"
#include "memory.h"
/*--------------------------------------------------*/
NORET MteEd_SelectFT_CB(w,ftret_d,cadda)
Widget w;
caddr_t ftret_d;
caddr_t cadda;
{
  MteFTret ftret;
  MteField field;
  MteGR GR;
  Widget SW;
  ftret=(MteFTret)ftret_d;
  field=ftret->Field;
  GR=ftret->GR;

  Alxt_SetArg(w,XtNsetMark,(XtArgVal)TRUE);
  if ((SW=MenuPack_get_widget(field->FTMenu,field->fieldTypeName))==NULL)
    Al_warning1("mteditor: FT select: could not find field type %s in menu.",
		field->fieldTypeName);
  else
    Alxt_SetArg(SW,XtNsetMark,(XtArgVal)FALSE);
  Alxt_SetArg(field->FTW,XtNlabel,(XtArgVal)ftret->fieldType);
  field->FieldType=AlFTreg_string_to_obj(ftret->fieldType);
  Memory_free(field->fieldTypeName);
  field->fieldTypeName=strcpy(Memory_allocate(strlen(ftret->fieldType)+1),
			      ftret->fieldType);
}

/*--------------------------------------------------*/
NORET MteEd_add_field_CB(w,GRv,cadda)
Widget w;
caddr_t GRv;
caddr_t cadda;
{
  Widget AW;
  MteGR GR=(MteGR)GRv;
  MteField field, prevField;
  unsigned l;
  field=MteField_create(GR,
			(char*)NULL,
			GR->DefaultFT,
			MTE_FIELD_FROM_USER);
  if (field==NULL)
    Al_fatal_error("mtEd: select FT: could not create field");
  
  l=Darray_len(GR->Fields);
  if (l==0)
    AW=NULL;
  else {
    prevField=(MteField)Darray_get(GR->Fields,l-1);
    AW=prevField->ContainerW;
  }
  Mte_add_field(GR,field,AW);
  Darray_addh(GR->Fields,field);
}
