static char MicroEnviron_id[] = "$Header: /usr/tiburon/unix/gui/tmacs/RCS/MicroEnviron.cc,v 1.2 1996/10/28 09:12:08 oreilly Exp $";


/*
$Log: MicroEnviron.cc,v $
Revision 1.2  1996/10/28 09:12:08  oreilly
*** empty log message ***

Revision 1.1  96/07/22  10:42:07  10:42:07  oreilly (Thomas C. O'Reilly)
First external release

*/
#include <Xm/Form.h>
#include <Xm/Label.h>
#include "MicroEnviron.h"
#include "AlarmText.h"
#include "AlarmedText.h"
#include "TiburonApp.h"
#include "gf_5vDm.h"

MicroEnviron::MicroEnviron(const char *name, Widget parent)
  : VkComponent(name)
{
  _columns = 4;
  
  _baseWidget = XtVaCreateWidget(name, xmFormWidgetClass, 
				 parent, XmNfractionBase, _columns, NULL, 0);
  
  installDestroyHandler();
  _manager = _baseWidget;
  
}

MicroEnvironHeader::MicroEnvironHeader(const char *name, Widget parent)
  : MicroEnviron(name, parent)
{
  Widget label;
  label = XtVaCreateManagedWidget("temperature", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 0,
				  NULL);

  label = XtVaCreateManagedWidget("humidity", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 1,
				  NULL);

  label = XtVaCreateManagedWidget("water", xmLabelWidgetClass,
				  _manager, 
				  XmNleftAttachment, XmATTACH_POSITION,
				  XmNleftPosition, 2,
				  NULL);

  XtManageChild(_manager);
}




DconEnviron::DconEnviron(const char *name, Widget parent, DconDm *dconDm,
			 int period)
  : MicroEnviron(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, HUMIDITY_ALARM_DM);
  if ((_humidityAlarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconEnviron::DconEnviron() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }
  
  strcpy(alarmNamePtr, GF_5V_TEMP_ALARM_DM);
  if ((_tempAlarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconEnviron::DconEnviron() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  strcpy(alarmNamePtr, JBOX_WATER_ALARM_DM);  
  if ((_jboxWaterAlarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconEnviron::DconEnviron() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  strcpy(alarmNamePtr, HOUSING_WATER_ALARM_DM);  
  if ((_housingWaterAlarm = alarms->find(alarmName)) == NULL)
  {
    sprintf(errorBuf,
	    "DconEnviron::DconEnviron() - couldn't find alarm \"%s\"",
	    alarmName);

    setError(errorBuf);
    return;
  }

  char format[100];

  AlarmedInt16Text *temp = 
    new AlarmedInt16Text("temperature", _manager, "%3d C", dconDm->temp, 
			 period, _tempAlarm); 

  XtVaSetValues(temp->baseWidget(), XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 0, NULL);

  AlarmedNat16Text *humidity = 
    new AlarmedNat16Text("humidity", _manager, "%3d %%", dconDm->humidity, 
			 period, _humidityAlarm); 

  XtVaSetValues(humidity->baseWidget(), XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 1, NULL);
  
  AlarmText *jboxWater = 
    new AlarmText("jboxWater", _manager, _jboxWaterAlarm, "Jbox    %s");

  XtVaSetValues(jboxWater->baseWidget(), XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 2, NULL);
  

  AlarmText *housingWater = 
    new AlarmText("housingWater", _manager, _housingWaterAlarm, "Housing %s");
  
  XtVaSetValues(housingWater->baseWidget(), 
		XmNleftAttachment, XmATTACH_POSITION,
		XmNleftPosition, 2,
		XmNtopAttachment, XmATTACH_WIDGET,
		XmNtopWidget, jboxWater->baseWidget(),
		NULL);

  
  XtManageChild(_baseWidget);
  
}


