#ifndef _ROVMAINWINDOW_H
#define _ROVMAINWINDOW_H
static char RovMainWindow_h_id[] = "$Header: /usr/tiburon/unix/gui/tmacs/RCS/RovMainWindow.h,v 1.11 1998/03/18 16:26:00 oreilly Exp $";

/*
$Log: RovMainWindow.h,v $
Revision 1.11  1998/03/18 16:26:00  oreilly
*** empty log message ***

Revision 1.10  1998/02/23 17:34:48  oreilly
*** empty log message ***

Revision 1.9  1997/10/03 09:32:47  oreilly
*** empty log message ***

 * Revision 1.8  97/09/10  08:53:19  08:53:19  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.7  97/08/15  08:06:13  08:06:13  oreilly (Thomas C. O'Reilly)
 * Video setup dialog is now a public object
 * 
 * Revision 1.6  97/08/12  14:57:23  14:57:23  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.5  97/06/16  16:01:01  16:01:01  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.4  97/06/03  13:28:24  13:28:24  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.3  97/03/25  15:40:45  15:40:45  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.2  97/03/20  12:36:36  12:36:36  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.1  96/10/28  09:14:04  09:14:04  oreilly (Thomas C. O'Reilly)
 * Initial revision
 * 
*/
#include <Vk/VkMenu.h>
#include <Vk/VkWindow.h>
#include "DmGuiApp.h"
#include "View.h"
#include "PrediveDialog.h"
#include "CtdSetup.h"
#include "AlarmLogger.h"

#define FractionBase 1000
/*
RovMainWindow is the main container for the application's GUI. Contains
area into which multiple "Views" are swapped.
*/
class RovMainWindow : public VkWindow
{
  public:
  RovMainWindow(const char *name, int width, int height, 
		int viewWidth, int viewHeight);
  ~RovMainWindow();  
  const char *className()
  {
    return "RovMainWindow";
  }

  // Create a view for the main window
  View *createView(const char *name);
  
  // Fill Views with Gui components, based on configuration file
  virtual void createGui();

  // Create View buttons
  void createViewButtons(int nViews);
  
  // Show specified View
  void setView(View *view);
  
  // Show window
  void show();

  // Show parent view
  void showParentView();

  // Setup menu pane
  VkSubMenu *setupMenuPane;

  void viewPortSize(int *width, int *height);
  
  AlarmLogger *alarmLogger;
  
  ParentView *parentView();
  
  protected:

  // Exit gracefully
  void exit(int status)
  {
    ((DmGuiApp *)theApplication)->exit(status);
  }
 
  int _nViews;

  int _viewWidth;
  int _viewHeight;
  
  View **_view;
  View *_currentView;
  ParentView *_parentView;

  Widget _viewButtonBar;
  Widget *_selectViewButton;
  
  Widget _viewPort;

  PrediveDialog *_prediveDialog;
  CtdSetupDialog *_ctdSetupDialog;
  
  void stopAllConsumers();

  static VkMenuDesc _lowerMenuDesc[];

  
  private:
  static void postAlarmFileList(XtCallbackProc okCallback);
  
  static void editAlarmsCallback(Widget w, XtPointer clientData, 
				 XtPointer callData);

  static void loadAlarmsCallback(Widget w, XtPointer clientData, 
				 XtPointer callData);

  static void loadAlarmsOkCallback(Widget w, XtPointer clientData, 
				 XtPointer callData);

  static void saveAlarmsCallback(Widget w, XtPointer clientData, 
				 XtPointer callData);

  static void saveAlarmsOkCallback(Widget w, XtPointer clientData, 
				   XtPointer callData);

  static void quitCallback(Widget w, XtPointer clientData, 
			   XtPointer callData);

  static void showConfigCallback(Widget w, XtPointer clientData, 
				 XtPointer callData);

  static void showDiveCallback(Widget w, XtPointer clientData, 
			       XtPointer callData);

  static void showCtdCallback(Widget w, XtPointer clientData, 
			      XtPointer callData);

  static void showAlarmActionCallback(Widget w, XtPointer clientData, 
				      XtPointer callData);

  static void selectViewCallback(Widget w, XtPointer clientData,
				 XtPointer callData);

  static void dmViewerCallback(Widget w, XtPointer clientData,
			       XtPointer callData);

  static void dmViewerExitCallback(int status);
  
  static void lowerCallback(Widget w, XtPointer clientData, 
			    XtPointer callData);
};


#endif




