/******************************************************************************/
/* Copyright 1995 MBARI                                                       */
/******************************************************************************/
/* Summary  : CTD GUI Initialization Module                                   */
/* Filename : guiInit.c                                                       */
/* Author   : Janice Tarrant                                                  */
/* Project  : Tiburon                                                         */
/* Version  : Version 1.0                                                     */
/* Created  : 02/16/95                                                        */
/* Modified :                                                                 */
/* Archived :                                                                 */
/******************************************************************************/
/* Modification History :                                                     */
/* $Header: /usr/tiburon/unix/gui/ctd/RCS/guiInit.c,v 1.1 1998/03/12 17:52:41 oreilly Exp $
 * $Log: guiInit.c,v $
 * Revision 1.1  1998/03/12 17:52:41  oreilly
 * Initial revision
 *
 *
 */
/******************************************************************************/

#include <mbari/types.h>        /* MBARI style guide type declarations        */
#include <dmUnix.h>             /* unix data manager definitions              */
#include <semLib.h>             /* semaphore library                          */
#include <time.h>               /* MBARI time declarations                    */
#include <datamgr.h>            /* data manager declarations                  */
#include <dm_errno.h>           /* data manager error declarations            */
#include <ctdDM.h>              /* CTD data manager definitions               */
#include <Xm/Xm.h>
#include <Xm/List.h>
#include "ctdDisplay.h"

extern configurationParameters configParams;

extern Widget        xForm[NUM_X_VARS];

itemListData listData;

void initGuiForm(Widget itemList, Widget displayRate, Widget statusRate,
	         Widget linesPlotToggle, Widget dotsPlotToggle,
	         Widget showXYTogggle, Widget scrollToggle);
void initItemList(Widget itemList);
void initXForm(Int16 var, Widget label, Widget min, Widget max, Widget divs,
	       Widget colourMenu, Widget colours[], plotParameters *plotParams);
void initYForm(Widget label, Widget min, Widget max, Widget divs,
	       Widget unitsMenu, Widget units[], yItemParameters *yVar);


/******************************************************************************/
/* Function : initGuiForm                                                     */
/* Purpose  : Initializes values in the GUI form.                             */
/* Inputs   : Item list widget, display rate widget, status rate widget, lines*/
/*            plot widget, dots plot widget, show xy coordinates widget and   */
/*            scroll widget.                                                  */
/* Outputs  : None.                                                           */
/******************************************************************************/
    void
initGuiForm(Widget itemList, Widget displayRate, Widget statusRate,
	    Widget linesPlotToggle, Widget dotsPlotToggle,
	    Widget showXYToggle, Widget scrollToggle)
{
    char value[STRING_LENGTH];

/* initialize the display items list                                          */
    initItemList(itemList);

/* initialize the display rates                                               */
    sprintf(value, "%4.2f", configParams.graphicsDisplayRate);
    XmTextSetString(displayRate, value);

    sprintf(value, "%4.2f", configParams.statusLineRate);
    XmTextSetString(statusRate, value);


/* set the plot style toggle buttons                                          */
    if (configParams.lineDrawing)
    {
    	XtVaSetValues(linesPlotToggle, XmNset, TRUE, NULL);
    	XtVaSetValues(dotsPlotToggle, XmNset, FALSE, NULL);
    }
    else
    {
    	XtVaSetValues(linesPlotToggle, XmNset, FALSE, NULL);
    	XtVaSetValues(dotsPlotToggle, XmNset, TRUE, NULL);
    }

/* set the show xy coordinates toggle buttons                                 */
    if (configParams.showXY)
    	XtVaSetValues(showXYToggle, XmNset, TRUE, NULL);
    else
    	XtVaSetValues(showXYToggle, XmNset, FALSE, NULL);

/* set the scroll toggle buttons                                              */
    if (configParams.scrolling)
    	XtVaSetValues(scrollToggle, XmNset, TRUE, NULL);
    else
    	XtVaSetValues(scrollToggle, XmNset, FALSE, NULL);

} /* initGuiForm */


    void
initItemList(Widget itemList)
{
    Int16    item, var;
    XmString xmString[NUM_DISPLAY_ITEMS];

/* initialize the item list data structure                                    */
    listData.w = itemList;
    strcpy(listData.displayItems[BEAM_ATTENUATION], "beam attenuation");
    strcpy(listData.displayItems[BEAM_PERCENT], "beam percent");
    strcpy(listData.displayItems[CONDUCTIVITY], "conductivity");
    strcpy(listData.displayItems[DEPTH], "depth");
    strcpy(listData.displayItems[OXYGEN], "oxygen");
    strcpy(listData.displayItems[OXYGEN_CURRENT], "oxygen current");
    strcpy(listData.displayItems[OXYGEN_TEMP], "oxygen temperature");
    strcpy(listData.displayItems[PRESSURE], "pressure");
    strcpy(listData.displayItems[SALINITY], "salinity");
    strcpy(listData.displayItems[SCAN_NUMBER], "scan number");
    strcpy(listData.displayItems[SIGMA_T], "sigma t");
    strcpy(listData.displayItems[SIGMA_THETA], "sigma theta");
    strcpy(listData.displayItems[SOUND_VELOCITY], "sound velocity");
    strcpy(listData.displayItems[TEMPERATURE], "temperature");
    strcpy(listData.displayItems[THETA], "theta");
    strcpy(listData.displayItems[TIME], "time");
    strcpy(listData.displayItems[TRANSMISSION], "transmission");

    for (item = 0; item < NUM_DISPLAY_ITEMS; item++)
	xmString[item] = XmStringCreateLtoR(listData.displayItems[item],
					    XmFONTLIST_DEFAULT_TAG);

    XtVaSetValues(itemList, XmNitems, xmString, XmNitemCount, NUM_DISPLAY_ITEMS,
		  NULL);

    for (var = 0; var < configParams.numXVariables; var++)
        XmListSelectItem(itemList, xmString[configParams.items[var]], FALSE);

    for (item = 0; item < NUM_DISPLAY_ITEMS; item++)
    	XmStringFree(xmString[item]);

}  /* initItemList */


/******************************************************************************/
/* Function : initXForm                                                       */
/* Purpose  : Initializes values in the x parameter form.                     */
/* Inputs   : X variable, axis label widget, minimum value widget, maximum    */
/*            value widget, major divisions widget, colour widget, colours    */
/*            widgets and plot parameters.                                    */
/* Outputs  : None.                                                           */
/******************************************************************************/
    void
initXForm(Int16 var, Widget label, Widget min, Widget max, Widget divs,
	  Widget colourMenu, Widget colours[], plotParameters *plotParams)
{
    char  value[AXIS_LABEL_LENGTH];

    sprintf(value, "%s", plotParams->axisLabel[var]);
    XmTextSetString(label, value);

    sprintf(value, "%f", plotParams->displayData.minValues[var]);
    XmTextSetString(min, value);

    sprintf(value, "%f", plotParams->displayData.maxValues[var]);
    XmTextSetString(max, value);

    sprintf(value, "%d", plotParams->majorDivisions[var]);
    XmTextSetString(divs, value);

    XtVaSetValues(colourMenu, XmNmenuHistory,
		  colours[plotParams->xColours[var]], NULL);

}  /* initXForm */


/******************************************************************************/
/* Function : initYForm                                                       */
/* Purpose  : Initializes values in the y parameter form.                     */
/* Inputs   : Axis label widget, minimum value widget, maximum value widget,  */
/*            major divisions widget, time unit widget, time units widgets and*/
/*            y variable item parameters.                                     */
/* Outputs  : None.                                                           */
/******************************************************************************/
    void
initYForm(Widget label, Widget min, Widget max, Widget divs,
	  Widget unitsMenu, Widget units[], yItemParameters *yVar)
{
    char value[AXIS_LABEL_LENGTH];

    sprintf(value, "%s", yVar->axisLabel);
    XmTextSetString(label, value);

    sprintf(value, "%f", yVar->minValue);
    XmTextSetString(min, value);

    sprintf(value, "%f", yVar->maxValue);
    XmTextSetString(max, value);

    sprintf(value, "%d", yVar->majorDivisions);
    XmTextSetString(divs, value);

    XtVaSetValues(unitsMenu, XmNmenuHistory,
		  units[yVar->timeUnits], NULL);

}  /* initYForm */
