static char MicroGF_id[] = "$Header: /usr/tiburon/unix/gui/tmacs/RCS/MicroGF.cc,v 1.1 1996/10/28 09:12:17 oreilly Exp $";


/*
$Log: MicroGF.cc,v $
Revision 1.1  1996/10/28 09:12:17  oreilly
Initial revision

*/
#include <Xm/Form.h>
#include <Xm/Label.h>
#include "MicroGF.h"
#include "AlarmText.h"
#include "AlarmedText.h"
#include "TiburonApp.h"
#include "gf_5vDm.h"

MicroGF::MicroGF(const char *name, Widget parent)
  : VkComponent(name)
{
  _columns = 6;
  
  _baseWidget = XtVaCreateWidget(name, xmFormWidgetClass, 
				 parent, XmNfractionBase, _columns, NULL, 0);
  
  installDestroyHandler();
  _manager = _baseWidget;
  
}

MicroGFHeader::MicroGFHeader(const char *name, Widget parent)
  : MicroGF(name, parent)
{
  Widget label;
  label = XtVaCreateManagedWidget("offset", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 0,
				  NULL);

  label = XtVaCreateManagedWidget("vicorVolt", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 1,
				  NULL);

  label = XtVaCreateManagedWidget("chan0", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 2,
				  NULL);

  label = XtVaCreateManagedWidget("chan1", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 3,
				  NULL);

  label = XtVaCreateManagedWidget("chan2", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 4,
				  NULL);

  label = XtVaCreateManagedWidget("chan3", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 5,
				  NULL);


  XtManageChild(_manager);
}




DconGF::DconGF(const char *name, Widget parent, DconDm *dconDm,
			 int period)
  : MicroGF(name, parent)
{

  /* Find alarm items */
  SystemAlarms *alarms = ((TiburonApp *)theApplication)->systemAlarms;
  
  char alarmName[MaxDmNameLen];
  char errorBuf[errorMsgSize];
  
  strcpy(alarmName, (const char *)dconDm->dmNamePrefix());
  
  char *alarmNamePtr = alarmName + strlen(alarmName);

  strcpy(alarmNamePtr, GF_5V_VICOR_VOLTAGE_ALARM_DM);
  if ((_vicorVoltAlarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconGF::DconGF() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }
  
  strcpy(alarmNamePtr, GF_5V_CHAN0_GF_ALARM_DM);
  if ((_chan0Alarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconGF::DconGF() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  strcpy(alarmNamePtr, GF_5V_CHAN1_GF_ALARM_DM);
  if ((_chan1Alarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconGF::DconGF() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  strcpy(alarmNamePtr, GF_5V_CHAN2_GF_ALARM_DM);
  if ((_chan2Alarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconGF::DconGF() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  strcpy(alarmNamePtr, GF_5V_CHAN3_GF_ALARM_DM);
  if ((_chan3Alarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconGF::DconGF() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  char format[100];

  AlarmedInt16Text *offset = 
    new AlarmedInt16Text("offset", _manager, "%3d uA", dconDm->offsetCurrent,
			 period, NULL); 

  XtVaSetValues(offset->baseWidget(), XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 0, NULL);

  AlarmedInt16Text *vicorVoltage = 
    new AlarmedInt16Text("vicorVoltage", _manager, "%3d", dconDm->vicorVoltage,
			 period, _vicorVoltAlarm); 

  XtVaSetValues(vicorVoltage->baseWidget(), 
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 1, 
		NULL);
  
  AlarmedInt16Text *chan0 = 
    new AlarmedInt16Text("chan0", _manager, "%3d", dconDm->chan0Current,
			 period, _chan0Alarm);

  XtVaSetValues(chan0->baseWidget(), XmNleftAttachment, 
		XmATTACH_POSITION,
		XmNleftPosition, 2, 
		NULL);

  AlarmedInt16Text *chan1 = 
    new AlarmedInt16Text("chan1", _manager, "%3d", dconDm->chan1Current,
			 period, _chan1Alarm);
  
  XtVaSetValues(chan1->baseWidget(), 
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 3,
		NULL);

  AlarmedInt16Text *chan2 = 
    new AlarmedInt16Text("chan2", _manager, "%3d", dconDm->chan2Current,
			 period, _chan2Alarm);
  
  XtVaSetValues(chan2->baseWidget(), 
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 4,
		NULL);

  AlarmedInt16Text *chan3 = 
    new AlarmedInt16Text("chan3", _manager, "%3d", dconDm->chan3Current,
			 period, _chan3Alarm);

  
  XtVaSetValues(chan3->baseWidget(), 
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 5,
		NULL);

  
  XtManageChild(_baseWidget);
  
}


