RSS Git Download  Clone
Raw Blame History
/*
* Title:	PhaseTableWin.cpp 
* Author:	M.Thomas BEAM Ltd
* Date:		2007-02-13
*
* Contents:	Status Display
*
* Mod Rec:
*
*/


#include <PhaseTableWin.h>
#include <qlayout.h>
#include <qpushbutton.h>
#include <qvgroupbox.h>
#include <qmessagebox.h>
#include <qlabel.h>
#include <qfiledialog.h>
#include <qcheckbox.h>
#include <BFile.h>
#include <qgroupbox.h>
#include <qvbox.h>
#include <Globals.h>

#include <TmsD.h>
#include <TmsC.h>
#include <TmsS.h>
#include <TmsLib.h>



using namespace Tms;

PhaseTableWin::PhaseTableWin(QWidget* w,Control& c) : ocontrol(c)  {
	QGridLayout*	grid;
	QLabel*		dataFileLabel;
	QLabel*		contentsLabel;

	BString		s;
	int		row = 0;

  	this->setMaximumSize(QSize(600,650));
	
	grid = new QGridLayout(this,5,3);
        grid->setMargin(20);
        grid->setSpacing(20);

	s = "<p><b>Cycle Parameters<b></p>";
	s += "<p>Select Cycle parameters file to be loaded</p>";

	contentsLabel 		= new QLabel(s.retStr(),this);
	dataFileLabel 		= new QLabel("Cycle Parameters File",this);
	oreadCycleParamsFile 	= new QPushButton("Select",this,"");	
	ocycleParamsFilename	= new QLineEdit(this,"ramfilename");
	oloadCycleParams	= new QPushButton("Load Cycle Parameters",this,"");
	osaveCycleParamsFile	= new QPushButton("Save Cycle Parameters",this,"");

	ocycleType 	= new QLineEdit(this,"");
	oinfo 		= new QLineEdit(this,"");
	opllFrefGain 	= new QLineEdit(this,"");
	opllGain 	= new QLineEdit(this,"");
	opllInitialFrequency 		= new QLineEdit(this,"");
	opllInitialFrequencyDelay 	= new QLineEdit(this,"");
	

	row = 0;
	grid->addWidget(contentsLabel,row,1);
	row++;

	grid->addWidget(dataFileLabel,row,0);
	grid->addWidget(ocycleParamsFilename,row,1);	
	grid->addWidget(oreadCycleParamsFile,row,2);	
	row++;
	grid->addWidget(new QLabel("Cycle Type",this,""),row,0);grid->addWidget(ocycleType,row,1);row++;
	grid->addWidget(new QLabel("Info",this,""),row,0);grid->addWidget(oinfo,row,1);	row++;
	grid->addWidget(new QLabel("Pll Initial Frequency",this,""),row,0);grid->addWidget(opllInitialFrequency,row,1);row++;
	grid->addWidget(new QLabel("Pll Initial Frequency Delay",this,""),row,0);grid->addWidget(opllInitialFrequencyDelay,row,1);row++;
	grid->addWidget(new QLabel("Pll Fref Gain",this,""),row,0);grid->addWidget(opllFrefGain,row,1);row++;
	grid->addWidget(new QLabel("Pll Gain",this,""),row,0);grid->addWidget(opllGain,row,1);row++;
	grid->addWidget(oloadCycleParams,row,1); row++;
	grid->addWidget(osaveCycleParamsFile,row,1); row++;

	connect(oreadCycleParamsFile,SIGNAL(clicked()),this,SLOT(readCycleParamsFile()));
	connect(oloadCycleParams,SIGNAL(clicked()),this,SLOT(loadCycleParams()));
	connect(osaveCycleParamsFile,SIGNAL(clicked()),this,SLOT(saveCycleParamsFile()));
}
	
PhaseTableWin::~PhaseTableWin() {}


void PhaseTableWin::readCycleParamsFile() {
	BError		err;
	BFile		f;
	BString		fname;
	TmsCycleParams	cycleParamFile("");
	
       QString s = QFileDialog::getOpenFileName(
                    "/usr/tms/stateTables",
                    "Tms Cycle Parameters File (*.spt)",
                    this,
                    "open file dialog",
                    "Choose a file" );
	ocycleParamsFilename->setText(s);


	fname = ocycleParamsFilename->text().ascii();
	if (err = f.open(fname,"r")) {
		warningDialog("Cycle Parameters - Reading",err);
		return;
	}
	if(err = cycleParamFile.getCycleParams(fname,oparams)) {
		warningDialog("Cycle Parameters - Read Parsing",err);
		return;
	}	

	update();
	gstatusbar->message("Cycle Parameters Read",2000);
}

void PhaseTableWin::loadCycleParams() {
	BError	err;
	
	if(err = ocontrol.setControlInfo(oparams)){
		warningDialog("Cycle Parameters - Loading Cycle Params",err);
		return;

	}
	gstatusbar->message("Cycle Parameters Loaded",2000);
}



void PhaseTableWin::update() {
	ocycleType->setText(oparams.cycleType.retStr());
	oinfo->setText(oparams.info.retStr());
	opllInitialFrequency->setText(uIntToStr(oparams.pllInitialFrequency).retStr());
	opllInitialFrequencyDelay->setText(uIntToStr(oparams.pllInitialFrequencyDelay).retStr());
	opllFrefGain->setText(uIntToStr(oparams.pllFrefGain).retStr());
	opllGain->setText(uIntToStr(oparams.pllGain).retStr());
}

void PhaseTableWin::saveCycleParamsFile() {
	BError			err;
	BFile			f;
	BString			fname;
	TmsCycleParams	cycleParamFile("");
	bool		ok;

	fname = ocycleParamsFilename->text().ascii();

	oparams.cycleType = ocycleType->text().ascii();
	oparams.info = oinfo->text().ascii();
	oparams.pllInitialFrequency = opllInitialFrequency->text().toUInt(&ok);
	oparams.pllInitialFrequencyDelay = opllInitialFrequencyDelay->text().toUInt(&ok);
	oparams.pllFrefGain = opllFrefGain->text().toUInt(&ok);
	oparams.pllGain = opllGain->text().toUInt(&ok);



        QString s = QFileDialog::getSaveFileName("/usr/tms/stateTables","Tms Cycle Parameters File (*.spt)",this,"save file dialog","Specify filename");
	fname = s.ascii();
	if (fname.len() == 0)
		return;

	if (QFile::exists(fname.retStr())){
		BString msg = "The specified file already exists are you ";
		msg += BString("positive you wish to over write the file");
		if (! confirmDialog("Confirm Action",msg)) {
			return;
		}	
	}
	if(err = cycleParamFile.writeCycleParams(fname,oparams)) {
		warningDialog("Cycle Parameters - Save",err);
		return;
	}
	ocycleParamsFilename->setText(fname.retStr());
	gstatusbar->message("Cycle Parameters Saved",2000);
}


BString PhaseTableWin::uIntToStr(UInt32 val) {
	BString	s;
	s.printf("%lu",val);
	return s;
}


void	PhaseTableWin::warningDialog(BString title, BError err){
	BString		m;
	QMessageBox	b;
	
	m = BString("<h5>") + title + "</h5><p>" + err.getString() + "</p>";
	b.setMinimumWidth(300);
	b.setCaption("tmsControlGui - Warning");
	b.setIcon(QMessageBox::Warning);
	b.setText(m.retStr());
	b.exec();
}

int	PhaseTableWin::confirmDialog(BString title,BString msg){
	BString		m;
	
	m = BString("<h5>") + title + "</h5><p>" + msg + "</p>";

	if (QMessageBox::question(this,"tmsControlGui - Question",m.retStr(),QMessageBox::Ok,QMessageBox::Cancel) == QMessageBox::Ok) {
	 	return 1;
	}
	else {
		return 0;
	}	
}