/**********************************************************************

	--- Qt Architect generated file ---

	File: curveFit.cpp

    Xgfe: X Windows GUI front end to Gnuplot
    Copyright (C) 1998 David Ishee

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 *********************************************************************/

#include "curveFit.h"
#include <qstring.h>
#include <qfiledialog.h>

curveFit::curveFit
(
	QWidget* parent,
	const char* name
)
	:
	curveFitData( parent, name )
{
	setCaption( "Curve Fitting" );
}


curveFit::~curveFit()
{
}

void curveFit::setGnuInterface(gnuInterface* gnu)
{
  gnuInt = gnu;

  // insert current options

  QString functionName = gnuInt->getCurveFitFunctionName();
  QString dataFile = gnuInt->getCurveFitDataFile();
  QString functionValue = gnuInt->getCurveFitFunctionValue();
  QString varXRangeName = gnuInt->getCurveFitVarXRangeName();
  QString varXRangeMin = gnuInt->getCurveFitVarXRangeMin();
  QString varXRangeMax = gnuInt->getCurveFitVarXRangeMax();
  QString varYRangeName = gnuInt->getCurveFitVarYRangeName();
  QString varYRangeMin = gnuInt->getCurveFitVarYRangeMin();
  QString varYRangeMax = gnuInt->getCurveFitVarYRangeMax();
  QString paramFile = gnuInt->getCurveFitParamFile();
  int paramFileFlag = gnuInt->getCurveFitParamFileFlag();
  int paramCSLFlag = gnuInt->getCurveFitParamCSLFlag();
  QString paramCSL = gnuInt->getCurveFitParamCSL();
  QString fitLimit = gnuInt->getCurveFitFitLimit();
  QString fitMaxIter = gnuInt->getCurveFitFitMaxIter();
  QString dataSetStart = gnuInt->getCurveFitDataSetStart();
  QString dataSetEnd = gnuInt->getCurveFitDataSetEnd();
  QString dataSetInc = gnuInt->getCurveFitPointInc();
  QString pointInc = gnuInt->getCurveFitPointInc();
  QString lineInc = gnuInt->getCurveFitLineInc();
  QString startPoint = gnuInt->getCurveFitStartPoint();
  QString startLine = gnuInt->getCurveFitStartLine();
  QString endPoint = gnuInt->getCurveFitEndPoint();
  QString endLine = gnuInt->getCurveFitEndLine();
  QString xColumn = gnuInt->getCurveFitXColumn();
  QString yColumn = gnuInt->getCurveFitYColumn();
  QString zColumn = gnuInt->getCurveFitZColumn();
  QString format = gnuInt->getCurveFitFormat();
  QString rawFormat = gnuInt->getCurveFitRawFormat();

  functionNameEdit->setText(functionName);
  dataFileEdit->setText(dataFile);
  functionValueEdit->setText(functionValue);
  varXRangeNameEdit->setText(varXRangeName);
  varXRangeMinEdit->setText(varXRangeMin);
  varXRangeMaxEdit->setText(varXRangeMax);
  varYRangeNameEdit->setText(varYRangeName);
  varYRangeMinEdit->setText(varYRangeMin);
  varYRangeMaxEdit->setText(varYRangeMax);
  paramFileEdit->setText(paramFile);

  if (paramFileFlag == 1)
  {
    paramFileRB->setChecked(TRUE);
    paramCSLRB->setChecked(FALSE);
  }
  else if (paramCSLFlag == 1)
  {
    paramCSLRB->setChecked(TRUE);
    paramFileRB->setChecked(FALSE);
  }

  paramCSLEdit->setText(paramCSL);
  fitLimitEdit->setText(fitLimit);
  fitMaxIterEdit->setText(fitMaxIter);
  dataSetStartEdit->setText(dataSetStart);
  dataSetEndEdit->setText(dataSetEnd);
  dataSetIncEdit->setText(dataSetInc);
  pointIncEdit->setText(pointInc);
  lineIncEdit->setText(lineInc);
  startPointEdit->setText(startPoint);
  startLineEdit->setText(startLine);
  endPointEdit->setText(endPoint);
  endLineEdit->setText(endLine);
  xColumnEdit->setText(xColumn);
  yColumnEdit->setText(yColumn);
  zColumnEdit->setText(zColumn);
  formatEdit->setText(format);
  rawFormatEdit->setText(rawFormat);
}

void curveFit::dataFileOpen()
{
  QString fileName = QFileDialog::getOpenFileName(QDir::currentDirPath(), "", this,"Open File","Open File" );

  if ( !fileName.isNull() ) // got a file name
  {
    dataFileEdit->setText(fileName);
  }
}

void curveFit::paramFileOpen()
{
  QString fileName = QFileDialog::getOpenFileName(QDir::currentDirPath(), "", this,"Open File","Open File" );

  if ( !fileName.isNull() ) // got a file name
  {
    paramFileEdit->setText(fileName);
  }
}

void curveFit::doFit()
{
  // get current options

  QString functionName = functionNameEdit->text();
  QString functionValue = functionValueEdit->text();
  QString dataFile = dataFileEdit->text();
  QString varXRangeName = varXRangeNameEdit->text();
  QString varXRangeMin = varXRangeMinEdit->text();
  QString varXRangeMax = varXRangeMaxEdit->text();
  QString varYRangeName = varYRangeNameEdit->text();
  QString varYRangeMin = varYRangeMinEdit->text();
  QString varYRangeMax = varYRangeMaxEdit->text();
  QString paramFile = paramFileEdit->text();

  int paramFileFlag;
  int paramCSLFlag;

  if ((paramFileRB->isChecked() == TRUE) &&
      (paramCSLRB->isChecked() == FALSE))
  {
    paramFileFlag = 1;
    paramCSLFlag = 0;
  }
  else
  {
    paramFileFlag = 0;
    paramCSLFlag = 1;
  }

  QString paramCSL = paramCSLEdit->text();
  QString fitLimit = fitLimitEdit->text();
  QString fitMaxIter = fitMaxIterEdit->text();
  QString dataSetStart = dataSetStartEdit->text();
  QString dataSetEnd = dataSetEndEdit->text();
  QString dataSetInc = dataSetIncEdit->text();
  QString pointInc = pointIncEdit->text();
  QString lineInc = lineIncEdit->text();
  QString startPoint = startPointEdit->text();
  QString startLine = startLineEdit->text();
  QString endPoint = endPointEdit->text();
  QString endLine = endLineEdit->text();
  QString xColumn = xColumnEdit->text();
  QString yColumn = yColumnEdit->text();
  QString zColumn = zColumnEdit->text();
  QString format = formatEdit->text();
  QString rawFormat = rawFormatEdit->text();

  // set options

  gnuInt->setCurveFitFunctionName(functionName);
  gnuInt->setCurveFitFunctionValue(functionValue);
  gnuInt->setCurveFitDataFile(dataFile);
  gnuInt->setCurveFitVarXRangeName(varXRangeName);
  gnuInt->setCurveFitVarXRangeMin(varXRangeMin);
  gnuInt->setCurveFitVarXRangeMax(varXRangeMax);
  gnuInt->setCurveFitVarYRangeName(varYRangeName);
  gnuInt->setCurveFitVarYRangeMin(varYRangeMin);
  gnuInt->setCurveFitVarYRangeMax(varYRangeMax);
  gnuInt->setCurveFitParamFile(paramFile);
  gnuInt->setCurveFitParamFileFlag(paramFileFlag);
  gnuInt->setCurveFitParamCSLFlag(paramCSLFlag);
  gnuInt->setCurveFitParamCSL(paramCSL);
  gnuInt->setCurveFitFitLimit(fitLimit);
  gnuInt->setCurveFitFitMaxIter(fitMaxIter);
  gnuInt->setCurveFitDataSetStart(dataSetStart);
  gnuInt->setCurveFitDataSetEnd(dataSetEnd);
  gnuInt->setCurveFitDataSetInc(dataSetInc);
  gnuInt->setCurveFitPointInc(pointInc);
  gnuInt->setCurveFitLineInc(lineInc);
  gnuInt->setCurveFitStartPoint(startPoint);
  gnuInt->setCurveFitStartLine(startLine);
  gnuInt->setCurveFitEndPoint(endPoint);
  gnuInt->setCurveFitEndLine(endLine);
  gnuInt->setCurveFitXColumn(xColumn);
  gnuInt->setCurveFitYColumn(yColumn);
  gnuInt->setCurveFitZColumn(zColumn);
  gnuInt->setCurveFitFormat(format);
  gnuInt->setCurveFitRawFormat(rawFormat);
  
  gnuInt->doCurveFit();
}


syntax highlighted by Code2HTML, v. 0.9.1