/************************************************************************/
/* Copyright 1998 MBARI							*/
/************************************************************************/
#ifndef _VIDEOSWITCHER_H
#define _VIDEOSWITCHER_H

#include "Vk/VkRadioBox.h"
#include "DmGuiObject.h"
 
class VideoSwitcher;

/*
CLASS 
VideoSwitch

DESCRIPTION
Select between 1 of 2 video sources

AUTHOR
Tom O'Reilly
*/
class VideoSwitch : public VkComponent
{
  public:
  
  VideoSwitch(const char *name, Widget parent, 
	      const char *src1Name, const char *src2Name,
	      VideoSwitcher *switcher);

  ~VideoSwitch();
  
  virtual const char *className()
  {
    return "VideoSwitch";
  }
  
  VkRadioBox *sources;

  protected:
  VideoSwitcher *_switcher;
  Widget _source1, _source2;
  
  static void toggleCallback(Widget w, void *clientData, void *callData);
};


#define NVideoChannels 6

/*
CLASS 
VideoSwitcher

DESCRIPTION
Manages VideoSwitch objects

AUTHOR
Tom O'Reilly
*/
class VideoSwitcher : public DmGuiObject
{
  friend class VideoSwitch;
  
  public:
  VideoSwitcher(const char *name, Widget parent);
  ~VideoSwitcher();
  
  virtual const char *className()
  {
    return "VideoSwitcher";
  }

  virtual void updateGui(DM_Item handle = 0);

  protected:
  VideoSwitch *_switch[NVideoChannels];

  DmNat16Object *_dmObject;

  void switchToggled(VideoSwitch *videoSwitch, int index);
};


#endif
