#include "pagespectra.h" #include 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; ilogFileStrmV) << 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; ilogFileStrmV) << 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); }