/************************************************************************/
/* Copyright 1998 MBARI							*/
/************************************************************************/
#ifndef _GEOLOGYGUI_H
#define _GEOLOGYGUI_H
#include <Vk/VkOptionMenu.h>
#include "DmGuiObject.h"
#include "DynamicLabel.h"
#include "PowerSwitchGui.h"
#include "MomentaryPowerSwitch.h"
#include "ValveControl.h"
#include "ValveSwitchMap.h"
#include "ValveFunctions.h"
#include "GeoDm.h"
#include "ValveSwitchMap.h"
#include "SwitchDm.h"
#include "HydraulicSelect.h"
#include "SuctionSampler.h"
#include "DmSlider.h"
#include "DmBooleanSwitch.h"
#include "DmBooleanIndicator.h"

class GeologyGui;


/*
CLASS 
GeologyPower

DESCRIPTION
Contains Geology toolsled PowerSwitchGui objects

AUTHOR
Tom O'Reilly
*/
class GeologyPower : public VkComponent
{
  public:

  GeologyPower(const char *name, Widget parent, 
	       GeologyGui *geologyGui, const char *platformName);

  ~GeologyPower();
  
  virtual const char *className()
  {
    return "GeologyPower";
  }


  protected:
  
  PowerSwitchGui *_incandLight;
  PowerSwitchGui *_manipulator;
  PowerSwitchGui *_valvePack;
  PowerSwitchGui *_camera1;
  PowerSwitchGui *_camera2;
  PowerSwitchGui *_science12v0;
  PowerSwitchGui *_science12v1;
  PowerSwitchGui *_camera12v;
  PowerSwitchGui *_science24v0;
  PowerSwitchGui *_science24v1;

  // Called when power switch status changes
  void statusCallback(VkCallbackObject *obj,
		      void *clientData,
		      void *callData);

  GeologyGui *_geologyGui;

  char *_science12v0Label;
  char *_science12v1Label;
  char *_camera12vLabel;
  char *_science24v0Label;
  char *_science24v1Label;

private:

  static XtResource _resources[];
};



/*
CLASS 
GeologyGui

DESCRIPTION
Controls/display for Geology toolsled

AUTHOR
Tom O'Reilly
*/
class GeologyGui : public VkComponent
{

public:

  GeologyGui(const char *name, Widget parent, const char *platformDmPrefix);
  ~GeologyGui();

  virtual const char *className()
  {
    return "GeologyGui";
  }

  GeologyPower *power;
  ValveFunctions *valveFunctions;
  ValveFunctions *hpValveFunctions;
  HydraulicSelect *hydraulicSelect;

protected:


  ValveControl **_valveControl;
  ValveSwitchMap *_switchMap;
  GeoDm *_dmItems;

  DmInt16Slider *_analogOutput0;
  DmInt16Slider *_analogOutput1;
  DmBooleanSwitch *_digitalOutput0;
  DmBooleanSwitch *_digitalOutput1;
  DmBooleanIndicator *_digitalInput0;
};



#endif
