/************************************************************************/
/* Copyright 1998 MBARI							*/
/************************************************************************/
#ifndef _HYDRAULICSELECT_H
#define _HYDRAULICSELECT_H
static char HydraulicSelect_h_id[] = "$Header: /u/oreilly/rov/tmacs/RCS/HydraulicSelect.h,v 1.5 1998/12/18 21:07:21 oreilly Exp $";

/*
$Log: HydraulicSelect.h,v $
Revision 1.5  1998/12/18 21:07:21  oreilly
Added documentation

Revision 1.4  1998/03/12 16:11:24  oreilly
*** empty log message ***

Revision 1.3  1997/04/30 19:42:38  oreilly
Now includes VbMotorSwitch

 * Revision 1.2  97/04/09  13:58:39  13:58:39  oreilly (Thomas C. O'Reilly)
 * Added statusCallback
 * 
 * Revision 1.1  97/03/20  12:34:03  12:34:03  oreilly (Thomas C. O'Reilly)
 * Initial revision
 * 
 * Revision 1.1  96/10/28  09:14:14  09:14:14  oreilly (Thomas C. O'Reilly)
 * Initial revision
 * 
*/

#include "DmGuiObject.h"
#include "vbSystem.h" 
#include <Vk/VkCheckBox.h>
#include "HydraulicMotor.h"

// Flags for use by statusChangeCallback routines
#define VbValveSelected 01
#define SledValveSelected 02
#define ArmValveSelected 04
#define AuxValveSelected 010

/*
CLASS 
HydraulicSelect

DESCRIPTION
Set hydraulic system mode, and hydraulic motor control

AUTHOR
Tom O'Reilly
*/
class HydraulicSelect : public DmGuiObject
{
  public:

  static const char *const statusChangeCallback;

  HydraulicSelect(const char *name, Widget parent);

  ~HydraulicSelect()
  {
    delete _motor;
  }
  
  virtual const char *className()
  {
    return "HydraulicSelect";
  }
  
  virtual void updateGui(DM_Item handle = 0);

  // Return mode of hydraulic motor 
  vbPumpMode mode();
    
  protected:

  enum ValveIndex {
    VbValve, SledValve, ArmValve, AuxValve
  };

  vbPumpMode _mode;
  
  VkCheckBox *_valveSelect;
  
  DmBooleanObject *_dmVbValve;
  DmBooleanObject *_dmSledValve;
  DmBooleanObject *_dmArmValve;
  DmBooleanObject *_dmAuxValve;

  HydraulicMotor *_motor;
  
  
  private:

  static void valveSelectCallback(Widget w, XtPointer clientData, 
				  XtPointer callData); 
};



#endif
