#include "PsuAlarmText.h"
#include "TiburonApp.h"

PsuAlarmText::PsuAlarmText(const char *name, Widget parent, PsuAlarm *alarm)
  : AlarmText(name, parent, alarm)
{
  _alarm = alarm;

  // Force updateGui()
  _nAlarmChanges = 0;
  
  updateGui();
}


PsuAlarmText::~PsuAlarmText()
{
}


void PsuAlarmText::updateGui(DM_Item handle)
{
  if (!_alarm)
    return;
  
  _alarm->update();

  int value = _alarm->value();

  Priority priority = _alarm->priority(value);

  if (priority != _priority || !_nAlarmChanges || value != _value)
  {
    char buf[100];

    sprintf(buf, _format, _alarm->valueDescription());

    XmString xmstr = XmStringCreateSimple(buf);
  
    TiburonApp *app = (TiburonApp *)theApplication;

    app->priorityColors(priority, &_foreground, &_background);

    XtVaSetValues(_valueText, 
		  XmNlabelString, xmstr,
		  XmNforeground, _foreground, XmNbackground, _background, 
		  NULL);

    XmStringFree(xmstr);

    _priority = priority;
    _value = value;
    _nAlarmChanges++;

    callCallbacks(alarmUpdateCallback, (void *)_priority);
  }
}
