#include <Xm/PushB.h>
#include <Xm/Label.h>
#include <Xm/Form.h>
#include "Navigation.h"
#include "kalman.h"

Navigation::Navigation(const char *name, Widget parent)
  : DmGuiObject(name, parent)
{
  _baseWidget = XtCreateWidget(_name, xmFormWidgetClass, parent, NULL, 0);
  installDestroyHandler();

  Widget label = 
    XtVaCreateManagedWidget("navigationLabel", xmLabelWidgetClass,
			    _baseWidget, 
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_FORM,
			    NULL);

  Widget resetHdgFilter =
    XtVaCreateManagedWidget("resetHdgFilter", xmPushButtonWidgetClass, 
			    _baseWidget,
			    XmNleftAttachment, XmATTACH_FORM,
			    XmNtopAttachment, XmATTACH_WIDGET,
			    XmNtopWidget, label,
			    NULL);

  XtAddCallback(resetHdgFilter, XmNactivateCallback, 
		&Navigation::resetHdgCallback, (XtPointer )this);


  char itemName[MaxDmNameLen];
  strcpy(itemName, HEADING_FILTER_RESET_DM);

  _dmResetHeading = new DmEmptyObject(itemName);
  addDmObject(_dmResetHeading, DmProvideFlag);

  setConsumePeriod(AperiodicGuaranteed);
}


Navigation::~Navigation()
{
}


void Navigation::updateGui(DM_Item dmItem)
{
}


void Navigation::resetHdgCallback(Widget w, XtPointer clientData,
				  XtPointer callData)
{
  Navigation *obj = (Navigation *)clientData;

  obj->_dmResetHeading->write(0);
}

