#ifndef D2_H
#define D2_H 1
#include "bool.h"
#include "darray.h"
#include "global.h"
#include "menupack.h"
#include "rem.h"
#include "rl.h"
#include "sysdep.h"
#include "widgets.h"

#define RE_GLOBAL_CURSOR 132
#define RE_EDIT_CURSOR 152

#define D2_READ_WRITE     1
#define D2_READ           2



typedef struct FieldEdit_str {
  REField ref;
  reid rei;
  Widget formW; 
  Widget ContainerW, KeyW, ValueW, OpW, TypeW, ClassW;
  Widget okW, cancelW, helpW, outerFormW, OpFrameW;
  MenuPack ClassMenu;
  MenuPack TypeMenu;
  MenuPack OpMenu;
  char *fieldOp, *fieldType, *fieldClass;
  AlRFType Class;
} *FieldEdit;

typedef NORET (*d2fCallBackOK) PROTOTYPE((Widget,REField,reid,VOIDP,
				       char*,char*,char*,char*,
				       AlRFType,Bool));
typedef NORET (*d2fCallBackCANCEL) PROTOTYPE((Widget,reid,VOIDP));
typedef NORET (*d2fCallBackHELP)   PROTOTYPE((Widget,reid,VOIDP));

NORET d2_create PROTOTYPE((reid));
NORET d2_Fill_TopTB PROTOTYPE((reid,Widget));
NORET d2_Fill_BotTB PROTOTYPE((reid,Widget));
NORET d2_Fill_If_work_buttons PROTOTYPE((reid,Widget));
NORET d2_Fill_If_work PROTOTYPE((reid,Widget));
NORET d2_Fill_Then_work PROTOTYPE((reid,Widget));
NORET d2_FillIf PROTOTYPE((reid));
NORET d2_If_AddField PROTOTYPE((reid,REMember,int));
NORET d2_If_AddAssoc PROTOTYPE((reid,REMember));
NORET d2_Argument_add PROTOTYPE((REAction,REArgument));
NORET d2_Refresh_tab_groups PROTOTYPE((reid));
NORET d2_Set_tab_groups PROTOTYPE((reid));
Widget d2_Assoc_make PROTOTYPE((reid,REMember));
NORET d2_Buttons_update PROTOTYPE((reid));
NORET d2_Action_add PROTOTYPE((reid,REAction));
NORET d2_KeyModify_CB PROTOTYPE((Widget,reid,caddr_t));
#endif


