/*
 * ACE/gredit - 2d finite element grid generation
 *
 * Paul J. Turner and Antonio M. Baptista
 *
 * Copyright 1990-2003 Oregon Health and Science University
 *                      All Rights Reserved.
 *
 */

/*
 *
 * Grid popups
 *
 */

#ifndef lint
static char RCSid[] = "$Id: gridwin.c,v 1.2 2003/07/24 15:44:05 pturner Exp $";
#endif

#include "motifinc.h"
#include "defines.h"
#include "globals.h"

extern XmStringCharSet charset;

/*
 * Interpolate bathymetry
 */

/* 0 = no warn,
 * 1 = report on all nodes,
 * 2 = report total number of nodes only
 */
int interp_warn_level = 0;
int interp_in_region = 0;
int noskip = 0;

void do_interp_depths(void);

Widget interp_frame;
Widget *interp_warnlevel_item;
Widget interp_skip_item;
Widget interp_region_item;

void update_interp_items(void)
{
    if (interp_frame) {
	XmToggleButtonSetState(interp_skip_item, noskip, False);
	XmToggleButtonSetState(interp_region_item, interp_in_region, False);
	SetChoice(interp_warnlevel_item, interp_warn_level);
    }
}

void accept_interp_items(void)
{
    noskip = XmToggleButtonGetState(interp_skip_item);
    interp_in_region = XmToggleButtonGetState(interp_region_item);
    interp_warn_level = GetChoice(interp_warnlevel_item);
    do_interp_depths();
}

void create_interp_frame(void)
{
    extern Widget app_shell;
    Widget panel, wbut, lab, rc, rc2, fr;

    if (interp_frame) {
	update_interp_items();
	XtRaise(interp_frame);
	return;
    }
    interp_frame = XmCreateDialogShell(app_shell, "Grid setup", NULL, 0);
    handle_close(interp_frame);
    panel = XmCreateRowColumn(interp_frame, "panel", NULL, 0);

    interp_skip_item = XmCreateToggleButton(panel, "Interpolate depths to all nodes", NULL, 0);
    XtManageChild(interp_skip_item);
    interp_region_item = XmCreateToggleButton(panel, "Restrict interpolation to region", NULL, 0);
    XtManageChild(interp_region_item);
    interp_warnlevel_item = CreatePanelChoice1(panel, "Warn level:",
					       4,
					       "No warnings",
				   "All nodes not found in background grid",
		       "Total number of nodes not found in background grid",
					       NULL,
					       NULL);
    rc = XmCreateRowColumn(panel, "rc", NULL, 0);
    XtVaSetValues(rc, XmNorientation, XmHORIZONTAL, NULL);
    wbut = XtVaCreateManagedWidget("Accept", xmPushButtonGadgetClass, rc,
				   NULL);
    XtAddCallback(wbut, XmNactivateCallback, (XtCallbackProc) accept_interp_items, 0);
    wbut = XtVaCreateManagedWidget("Done", xmPushButtonGadgetClass, rc,
				   NULL);
    XtAddCallback(wbut, XmNactivateCallback, (XtCallbackProc) destroy_dialog, interp_frame);
    XtManageChild(rc);

    update_interp_items();
    XtManageChild(panel);
    XtRaise(interp_frame);
}