##// END OF EJS Templates
minor updates in tmstatistics.cpp
minor updates in tmstatistics.cpp

File last commit:

r69:d8815b251eb0 default
r73:b66d3d3bbd08 default
Show More
pagespectra.cpp
580 lines | 16.2 KiB | text/x-c | CppLexer
#include "pagespectra.h"
#include <stdio.h>
PageSpectra::PageSpectra(QWidget *parent) :
QMainWindow(parent)
{
unsigned int i = 0;
for (i = 0; i<6; i++)
{
localIndex[i] = 0;
}
pageTitle = "default";
wfPlot_v = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
wfPlot_e1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
wfPlot_e2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
wfPlot_b1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
wfPlot_b2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
//
wfPlot_v->customPlot->setTitle("s11");
wfPlot_e1->customPlot->setTitle("s22");
wfPlot_e2->customPlot->setTitle("s33");
wfPlot_b1->customPlot->setTitle("s44");
wfPlot_b2->customPlot->setTitle("s55");
//
/*mainLayout = new QGridLayout;
mainLayout->addWidget(wfPlot_v, 0, 0, 1, 1);
mainLayout->addWidget(wfPlot_e1, 0, 1, 1, 1);
mainLayout->addWidget(wfPlot_e2, 0, 2, 1, 1);
mainLayout->addWidget(wfPlot_b1, 1, 0, 1, 1);
mainLayout->addWidget(wfPlot_b2, 1, 1, 1, 1);
mainLayout->addWidget(wfPlot_b3, 1, 2, 1, 1);*/
//
dockV = NULL;
dockE1 = NULL;
dockE2 = NULL;
dockB1 = NULL;
dockB2 = NULL;
titleWidgetV = new QWidget();
titleWidgetE1 = new QWidget();
titleWidgetE2 = new QWidget();
titleWidgetB1 = new QWidget();
titleWidgetB2 = new QWidget();
logFileName = new QLabel();
logFile = new QFile();
logFileV = new QFile();
logFileE1 = new QFile();
logFileE2 = new QFile();
logFileB1 = new QFile();
logFileB2 = new QFile();
logFileEn = false;
storageEnabledV = false;
storageEnabledE1 = false;
storageEnabledE2 = false;
storageEnabledB1 = false;
storageEnabledB2 = false;
createToolBar();
readSettings();
}
void PageSpectra::displayOnPlot(short *data, unsigned char num)
{
QByteArray dataByteArray;
unsigned int i;
switch(num){
case 0:
wfPlot_v->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
if ( (storageEnabledV == true) && (logFileV->isOpen()) )
{
for (i=0; i<DEFAULT_SIZE; i++)
{
dataByteArray.clear();
dataByteArray.append(QByteArray::number(localIndex[0]));
dataByteArray.append(' ');
dataByteArray.append(QByteArray::number(data[i]));
*(this->logFileStrmV) << dataByteArray << endl;
localIndex[0]++;
}
}
break;
case 1:
wfPlot_e1->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
case 2:
wfPlot_e2->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
case 3:
wfPlot_b1->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
case 4:
wfPlot_b2->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
default:
break;
}
}
void PageSpectra::displayOnPlotFloat(float *data, unsigned char num)
{
QByteArray dataByteArray;
unsigned int i;
switch(num){
case 0:
wfPlot_v->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
if ( (storageEnabledV == true) && (logFileV->isOpen()) )
{
for (i=0; i<DEFAULT_SIZE; i++)
{
dataByteArray.clear();
dataByteArray.append(QByteArray::number(localIndex[0]));
dataByteArray.append(' ');
dataByteArray.append(QByteArray::number(data[i]));
*(this->logFileStrmV) << dataByteArray << endl;
localIndex[0]++;
}
}
break;
case 1:
wfPlot_e1->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
case 2:
wfPlot_e2->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
case 3:
wfPlot_b1->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
case 4:
wfPlot_b2->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
break;
default:
break;
}
}
void PageSpectra::createToolBar()
{
radio_v = new QRadioButton(tr("s11"));
radio_e1 = new QRadioButton(tr("s22"));
radio_e2 = new QRadioButton(tr("s33"));
radio_b1 = new QRadioButton(tr("s44"));
radio_b2 = new QRadioButton(tr("s55"));
radio_tabify = new QRadioButton(tr("tabify"));
radio_v->setAutoExclusive(false);
radio_e1->setAutoExclusive(false);
radio_e2->setAutoExclusive(false);
radio_b1->setAutoExclusive(false);
radio_b2->setAutoExclusive(false);
radio_tabify->setAutoExclusive(false);
button_selectAll = new QPushButton(tr("select all"));
button_storeWfrm = new QPushButton(tr("REC"));
button_chooseDir = new QPushButton(tr("choose dir"));
myToolBar = new QToolBar("select");
myToolBar->addWidget(radio_v);
myToolBar->addWidget(radio_e1);
myToolBar->addWidget(radio_e2);
myToolBar->addWidget(radio_b1);
myToolBar->addWidget(radio_b2);
myToolBar->addSeparator();
myToolBar->addWidget(button_selectAll);
myToolBar->addWidget(radio_tabify);
myToolBar->addSeparator();
myToolBar->addWidget(button_storeWfrm);
myToolBar->addWidget(button_chooseDir);
addToolBar(Qt::LeftToolBarArea, myToolBar);
radio_tabify->setChecked(true);
connect(this->radio_v, SIGNAL(clicked(bool)), this, SLOT(actionRadioV(bool)));
connect(this->radio_e1, SIGNAL(clicked(bool)), this, SLOT(actionRadioE1(bool)));
connect(this->radio_e2, SIGNAL(clicked(bool)), this, SLOT(actionRadioE2(bool)));
connect(this->radio_b1, SIGNAL(clicked(bool)), this, SLOT(actionRadioB1(bool)));
connect(this->radio_b2, SIGNAL(clicked(bool)), this, SLOT(actionRadioB2(bool)));
connect(this->button_selectAll, SIGNAL(clicked()), this, SLOT(selectAll()));
connect(this->radio_tabify, SIGNAL(clicked(bool)), this, SLOT(organizeDocks()));
connect(this->button_storeWfrm, SIGNAL(clicked()), this, SLOT(storeWfrm()));
connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
}
void PageSpectra::actionRadioV(bool state)
{
if (state == true)
{
if (dockV == NULL)
{
dockV = new QDockWidget("V", this);
dockV->setWidget(wfPlot_v);
dockV->setTitleBarWidget(titleWidgetV);
}
}
else
{
this->removeDockWidget(dockV);
}
organizeDocks();
}
void PageSpectra::actionRadioE1(bool state)
{
if (state == true)
{
if (dockE1 == NULL)
{
dockE1 = new QDockWidget("E1", this);
dockE1->setWidget(wfPlot_e1);
dockE1->setTitleBarWidget(titleWidgetE1);
}
}
else
{
this->removeDockWidget(dockE1);
}
organizeDocks();
}
void PageSpectra::actionRadioE2(bool state)
{
if (state == true)
{
if (dockE2 == NULL)
{
dockE2 = new QDockWidget("E2", this);
dockE2->setWidget(wfPlot_e2);
dockE2->setTitleBarWidget(titleWidgetE2);
}
}
else
{
this->removeDockWidget(dockE2);
}
organizeDocks();
}
void PageSpectra::actionRadioB1(bool state)
{
if (state == true)
{
if (dockB1 == NULL)
{
dockB1 = new QDockWidget("B1", this);
dockB1->setWidget(wfPlot_b1);
dockB1->setTitleBarWidget(titleWidgetB1);
}
}
else
{
this->removeDockWidget(dockB1);
}
organizeDocks();
}
void PageSpectra::actionRadioB2(bool state)
{
if (state == true)
{
if (dockB2 == NULL)
{
dockB2 = new QDockWidget("B2", this);
dockB2->setWidget(wfPlot_b2);
dockB2->setTitleBarWidget(titleWidgetB2);
}
}
else
{
this->removeDockWidget(dockB2);
}
organizeDocks();
}
void PageSpectra::buildDockList()
{
dockList.clear();
if (radio_v->isChecked())
{
dockList.append(dockV);
removeDockWidget(dockV);
}
if (radio_e1->isChecked())
{
dockList.append(dockE1);
removeDockWidget(dockE1);
}
if (radio_e2->isChecked())
{
dockList.append(dockE2);
removeDockWidget(dockE2);
}
if (radio_b1->isChecked())
{
dockList.append(dockB1);
removeDockWidget(dockB1);
}
if (radio_b2->isChecked())
{
dockList.append(dockB2);
removeDockWidget(dockB2);
}
}
void PageSpectra::organizeDocks()
{
if (radio_tabify->isChecked())
{
tabify();
}
else
{
unTabify();
}
wfPlot_v->resize(wfPlot_v->minimumSizeHint());
wfPlot_e1->resize(wfPlot_e1->minimumSizeHint());
wfPlot_e2->resize(wfPlot_e2->minimumSizeHint());
wfPlot_b1->resize(wfPlot_b1->minimumSizeHint());
wfPlot_b2->resize(wfPlot_b2->minimumSizeHint());
this->resize(this->minimumSizeHint());
}
void PageSpectra::unTabify()
{
buildDockList();
switch(dockList.size())
{
case 0:
break;
case 1:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
dockList.at(0)->show();
break;
case 2:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
dockList.at(0)->show();
dockList.at(1)->show();
break;
case 3:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
break;
case 4:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
dockList.at(3)->show();
break;
case 5:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
dockList.at(3)->show();
dockList.at(4)->show();
break;
default:
break;
}
}
void PageSpectra::tabify()
{
buildDockList();
switch(dockList.size())
{
case 0:
break;
case 1:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
dockList.at(0)->show();
break;
case 2:
addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
tabifyDockWidget(dockList.at(0), dockList.at(1));
dockList.at(0)->show();
dockList.at(1)->show();
break;
case 3:
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
tabifyDockWidget(dockList.at(0), dockList.at(1));
tabifyDockWidget(dockList.at(1), dockList.at(2));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
break;
case 4:
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
tabifyDockWidget(dockList.at(0), dockList.at(1));
tabifyDockWidget(dockList.at(1), dockList.at(2));
tabifyDockWidget(dockList.at(2), dockList.at(3));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
dockList.at(3)->show();
break;
case 5:
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
tabifyDockWidget(dockList.at(0), dockList.at(1));
tabifyDockWidget(dockList.at(1), dockList.at(2));
tabifyDockWidget(dockList.at(2), dockList.at(3));
tabifyDockWidget(dockList.at(3), dockList.at(4));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
dockList.at(3)->show();
dockList.at(4)->show();
break;
case 6:
addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
tabifyDockWidget(dockList.at(0), dockList.at(1));
tabifyDockWidget(dockList.at(1), dockList.at(2));
tabifyDockWidget(dockList.at(2), dockList.at(3));
tabifyDockWidget(dockList.at(3), dockList.at(4));
tabifyDockWidget(dockList.at(4), dockList.at(5));
dockList.at(0)->show();
dockList.at(1)->show();
dockList.at(2)->show();
dockList.at(3)->show();
dockList.at(4)->show();
dockList.at(5)->show();
break;
default:
break;
}
}
void PageSpectra::selectAll()
{
radio_v->click();
radio_e1->click();
radio_e2->click();
radio_b1->click();
radio_b2->click();
}
void PageSpectra::storeWfrm()
{
if (logFileEn == false)
{
buildFileNames();
button_storeWfrm->setText(tr("STOP"));
logFileEn = true;
}
else
{
if(this->logFileV->isOpen()) this->logFileV->close();
if(this->logFileE1->isOpen()) this->logFileE1->close();
if(this->logFileE2->isOpen()) this->logFileE2->close();
// disable all storage
storageEnabledV = false;
storageEnabledE1 = false;
storageEnabledE2 = false;
storageEnabledB1 = false;
storageEnabledB2 = false;
button_storeWfrm->setText(tr("REC"));
logFileEn = false;
}
}
void PageSpectra::buildFileNames()
{
QString date;
QString time;
QString prefix;
date = QDate::currentDate().toString();
time = QTime::currentTime().toString();
prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" + pageTitle ;
if (radio_v->isChecked())
{
if(this->logFileV->isOpen()) this->logFileV->close();
this->logFileV->setFileName( prefix + "_V.data");
if(this->logFileV->open(QIODevice::WriteOnly)) this->logFileStrmV = new QTextStream(this->logFileV);
storageEnabledV = true;
}
if (radio_e1->isChecked())
{
if(this->logFileE1->isOpen()) this->logFileE1->close();
this->logFileE1->setFileName( prefix + "_E1.data");
if(this->logFileE1->open(QIODevice::WriteOnly)) this->logFileStrmE1 = new QTextStream(this->logFileE1);
storageEnabledE1 = true;
}
if (radio_e2->isChecked())
{
if(this->logFileE2->isOpen()) this->logFileE2->close();
this->logFileE2->setFileName( prefix + "_E2.data");
if(this->logFileE2->open(QIODevice::WriteOnly)) this->logFileStrmE2 = new QTextStream(this->logFileE2);
storageEnabledE2 = true;
}
if (radio_b1->isChecked())
{
}
if (radio_b2->isChecked())
{
}
}
void PageSpectra::logFileEnDisable(bool state)
{
if(state==true)
{
this->logFileEn = true;
}
else if(state==false)
{
this->logFileEn = false;
}
}
bool PageSpectra::islogfileenable()
{
return this->logFileEn;
}
void PageSpectra::appendToLogFile(const QString & text)
{
if(this->logFileEn && this->logFile->isOpen())
{
*(this->logFileStrm) << text << endl;
}
}
void PageSpectra::closeEvent(QCloseEvent *event)
{
if(this->logFile->isOpen())
{
this->logFileStrm->flush();
this->logFile->waitForBytesWritten(3000);
this->logFile->close();
}
writeSettings();
event->accept();
}
void PageSpectra::readSettings()
{
QSettings settings("lpp", "lfrsgse");
defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
}
void PageSpectra::writeSettings()
{
QSettings settings("lpp", "lfrsgse");
settings.setValue("defaultStorageDirectory", defaultStorageDirectory);
}
void PageSpectra::chooseDir()
{
defaultStorageDirectory = QFileDialog::getExistingDirectory(this,
"choose the directory",
QDir::homePath(),
QFileDialog::ShowDirsOnly);
}