diff --git a/.gitignore b/.gitignore
index 378a66f..d6a1bc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@ windowID
screenshot.*
*settings*.txt
*settings*.dat
+*.dat
*~
*.autosave
diff --git a/ClassDigitizer2Gen.cpp b/ClassDigitizer2Gen.cpp
index f3f73c4..c425873 100644
--- a/ClassDigitizer2Gen.cpp
+++ b/ClassDigitizer2Gen.cpp
@@ -773,49 +773,65 @@ void Digitizer2Gen::ReadAllSettings(){
}
}
-bool Digitizer2Gen::SaveSettingsToFile(const char * saveFileName){
- if( !isConnected ) return false;
+int Digitizer2Gen::SaveSettingsToFile(const char * saveFileName){
if( saveFileName != NULL) settingFileName = saveFileName;
+ int totCount = 0;
+ int count = 0;
FILE * saveFile = fopen(settingFileName.c_str(), "w");
if( saveFile ){
for(int i = 0; i < (int) boardSettings.size(); i++){
if( boardSettings[i].ReadWrite() == RW::WriteOnly) continue;
- ReadValue(boardSettings[i]);
+ totCount ++;
+ if( boardSettings[i].GetValue() == "" && boardSettings[i].GetPara() != "Gateway") break;
fprintf(saveFile, "%-45s|%d|%4d|%s\n", boardSettings[i].GetFullPara().c_str(),
boardSettings[i].ReadWrite(),
8000 + i,
boardSettings[i].GetValue().c_str());
+ count ++;
}
for(int i = 0; i < 4 ; i ++){
- ReadValue(VGASetting[i], i);
+ totCount ++;
+ if( VGASetting[i].GetValue() == "" ) break;
fprintf(saveFile, "%-45s|%d|%4d|%s\n", VGASetting[i].GetFullPara(i).c_str(),
VGASetting[i].ReadWrite(),
9000 + i,
VGASetting[i].GetValue().c_str());
+ count ++;
}
for(int ch = 0; ch < nChannels ; ch++ ){
for( int i = 0; i < (int) chSettings[ch].size(); i++){
if( chSettings[ch][i].ReadWrite() == RW::WriteOnly) continue;
- ReadValue(chSettings[ch][i], i);
+ totCount ++;
+ if( chSettings[ch][i].GetValue() == "") break;
fprintf(saveFile, "%-45s|%d|%4d|%s\n", chSettings[ch][i].GetFullPara(ch).c_str(),
chSettings[ch][i].ReadWrite(),
ch*100 + i,
chSettings[ch][i].GetValue().c_str());
+ count ++;
}
- }
-
+ }
fclose(saveFile);
+
+ if( count != totCount ) {
+ remove(saveFileName);
+ return -1;
+ }
//printf("Saved setting files to %s\n", saveFileName);
- return true;
+ return 1;
}else{
//printf("Save file accessing error.");
}
- return false;
+ return 0;
+}
+
+int Digitizer2Gen::ReadAndSaveSettingsToFile(const char *saveFileName){
+ ReadAllSettings();
+ return SaveSettingsToFile(saveFileName);
}
bool Digitizer2Gen::LoadSettingsFromFile(const char * loadFileName){
diff --git a/ClassDigitizer2Gen.h b/ClassDigitizer2Gen.h
index 3a50e1b..c3257fe 100644
--- a/ClassDigitizer2Gen.h
+++ b/ClassDigitizer2Gen.h
@@ -124,7 +124,8 @@ class Digitizer2Gen {
std::string GetSettingFileName() const {return settingFileName;}
void SetSettingFileName(std::string fileName) {settingFileName = fileName;}
void ReadAllSettings(); // read settings from digitier and save to memory
- bool SaveSettingsToFile(const char * saveFileName = NULL); // ReadAllSettings + text file
+ int SaveSettingsToFile(const char * saveFileName = NULL); //Save settings from memory to text file
+ int ReadAndSaveSettingsToFile(const char * saveFileName = NULL); // ReadAllSettings + text file
bool LoadSettingsFromFile(const char * loadFileName = NULL); // Load settings, write to digitizer and save to memory
std::string GetSettingValue(const Reg para, unsigned int ch_index = 0); // read from memory
diff --git a/DigiParameters.h b/DigiParameters.h
index 1eb8815..b4d0c84 100644
--- a/DigiParameters.h
+++ b/DigiParameters.h
@@ -380,10 +380,10 @@ namespace DIGIPARA{
const Reg RecordLength ("ChRecordLengthT", RW::ReadWrite, TYPE::CH, {{"32", ""}, {"64800", ""}}, ANSTYPE::NUM, "ns");
const Reg PreTrigger ("ChPreTriggerT", RW::ReadWrite, TYPE::CH, {{"32", ""}, {"32000", ""}}, ANSTYPE::NUM, "ns");
const Reg WaveSaving ("WaveSaving", RW::ReadWrite, TYPE::CH, {{"Always", "Always"}, {"OnRequest", "On Request"}});
- const Reg WaveResolution ("WaveResolution", RW::ReadWrite, TYPE::CH, {{"Res8", " 8 ns"},
- {"Res16","16 ns"},
- {"Res32","32 ns"},
- {"Res64","64 ns"}});
+ const Reg WaveResolution ("WaveResolution", RW::ReadWrite, TYPE::CH, {{"RES8", " 8 ns"},
+ {"RES16","16 ns"},
+ {"RES32","32 ns"},
+ {"RES64","64 ns"}});
const Reg TimeFilterRiseTime ("TimeFilterRiseTimeT", RW::ReadWrite, TYPE::CH, {{"32", ""},{"2000", ""}}, ANSTYPE::NUM, "ns");
const Reg TimeFilterRetriggerGuard ("TimeFilterRetriggerGuardT", RW::ReadWrite, TYPE::CH, {{"0", ""},{"8000", ""}}, ANSTYPE::NUM, "ns");
const Reg EnergyFilterRiseTime ("EnergyFilterRiseTimeT", RW::ReadWrite, TYPE::CH, {{"32", ""},{"13000", ""}}, ANSTYPE::NUM, "ns");
@@ -404,7 +404,7 @@ namespace DIGIPARA{
const Reg EnergyFilterBaselineGuard ("EnergyFilterBaselineGuardT", RW::ReadWrite, TYPE::CH, {{"0", ""},{"8000", ""}}, ANSTYPE::NUM, "ns");
const Reg EnergyFilterFineGain ("EnergyFilterFineGain", RW::ReadWrite, TYPE::CH, {{"0", ""},{"10", ""}}, ANSTYPE::NUM);
const Reg EnergyFilterPileUpGuard ("EnergyFilterPileUpGuardT", RW::ReadWrite, TYPE::CH, {{"0", ""},{"64000", ""}}, ANSTYPE::NUM);
- const Reg EnergyFilterLowFreqFilter ("EnergyFilterLFLimitation", RW::ReadWrite, TYPE::CH, {{"0", "Disabled"}, {"1", "Enabled"}});
+ const Reg EnergyFilterLowFreqFilter ("EnergyFilterLFLimitation", RW::ReadWrite, TYPE::CH, {{"Off", "Disabled"}, {"On", "Enabled"}});
const Reg WaveAnalogProbe0 ("WaveAnalogProbe0", RW::ReadWrite, TYPE::CH, {{"ADCInput", "ADC Input"},
{"TimeFilter", "Time Filter"},
{"EnergyFilter", "Trapazoid"},
diff --git a/digiSettingsPanel.cpp b/digiSettingsPanel.cpp
index f3abc85..cbb1bec 100644
--- a/digiSettingsPanel.cpp
+++ b/digiSettingsPanel.cpp
@@ -637,7 +637,6 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
connect(spbBaselineGuard[iDigi][ch], &QSpinBox::valueChanged, this, [=](){ SyncSpinBox(spbBaselineGuard, ch);});
connect(spbPileupGuard[iDigi][ch], &QSpinBox::valueChanged, this, [=](){ SyncSpinBox(spbPileupGuard, ch);});
-
connect(cbbAnaProbe0[iDigi][ch], &QComboBox::currentIndexChanged, this, [=](){ SyncComboBox(cbbAnaProbe0, ch);});
connect(cbbAnaProbe1[iDigi][ch], &QComboBox::currentIndexChanged, this, [=](){ SyncComboBox(cbbAnaProbe1, ch);});
connect(cbbDigProbe0[iDigi][ch], &QComboBox::currentIndexChanged, this, [=](){ SyncComboBox(cbbDigProbe0, ch);});
@@ -757,6 +756,33 @@ void DigiSettingsPanel::RefreshSettings(){
void DigiSettingsPanel::SaveSettings(){
+ QString filePath = QFileDialog::getSaveFileName(this, "Save Settings File", "", "Data file (*.dat);;Text files (*.txt);;All files (*.*)");
+
+ if (!filePath.isEmpty()) {
+
+ QFileInfo fileInfo(filePath);
+ QString ext = fileInfo.suffix();
+ if( ext == "") filePath += ".dat";
+
+ int flag = digi[ID]->SaveSettingsToFile(filePath.toStdString().c_str());
+
+ switch (flag) {
+ case 1 : {
+ leSettingFile[ID]->setText(filePath);
+ sendLogMsg("Saved setting file " + filePath + ".");
+ }; break;
+ case 0 : {
+ leSettingFile[ID]->setText("fail to write setting file.");
+ sendLogMsg(" Fail to write setting file.");
+ }; break;
+
+ case -1 : {
+ leSettingFile[ID]->setText("fail to save setting file, same settings are empty.");
+ sendLogMsg(" Fail to save setting file, same settings are empty.");
+ }; break;
+ };
+
+ }
}
@@ -772,9 +798,9 @@ void DigiSettingsPanel::LoadSettings(){
//TODO ==== check is the file valid;
if( digi[ID]->LoadSettingsFromFile(fileName.toStdString().c_str()) ){
- emit sendLogMsg("Loaded settings file " + fileName + " for Digi-" + QString::number(digi[ID]->GetSerialNumber()));
+ sendLogMsg("Loaded settings file " + fileName + " for Digi-" + QString::number(digi[ID]->GetSerialNumber()));
}else{
- emit sendLogMsg("Fail to Loaded settings file " + fileName + " for Digi-" + QString::number(digi[ID]->GetSerialNumber()));
+ sendLogMsg("Fail to Loaded settings file " + fileName + " for Digi-" + QString::number(digi[ID]->GetSerialNumber()));
}
//TODO ==== show result
@@ -815,7 +841,7 @@ void DigiSettingsPanel::ShowSettingsToPanel(){
}
//-------- board settings
- ReadCombBoxValue(cbbClockSource[ID], DIGIPARA::DIG::ClockSource);
+ FillComboBoxValueFromMemory(cbbClockSource[ID], DIGIPARA::DIG::ClockSource);
QString result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::StartSource));
QStringList resultList = result.remove(QChar(' ')).split("|");
@@ -838,40 +864,117 @@ void DigiSettingsPanel::ShowSettingsToPanel(){
}
}
- ReadCombBoxValue(cbbTrgOut[ID], DIGIPARA::DIG::TrgOutMode);
- ReadCombBoxValue(cbbGPIO[ID], DIGIPARA::DIG::GPIOMode);
- ReadCombBoxValue(cbbBusyIn[ID], DIGIPARA::DIG::BusyInSource);
- ReadCombBoxValue(cbbSyncOut[ID], DIGIPARA::DIG::SyncOutMode);
- ReadCombBoxValue(cbbAutoDisarmAcq[ID], DIGIPARA::DIG::EnableAutoDisarmACQ);
- ReadCombBoxValue(cbbStatEvents[ID], DIGIPARA::DIG::EnableStatisticEvents);
- ReadCombBoxValue(cbbBdVetoPolarity[ID], DIGIPARA::DIG::BoardVetoPolarity);
- ReadCombBoxValue(cbbBoardVetoSource[ID], DIGIPARA::DIG::BoardVetoSource);
- ReadCombBoxValue(cbbIOLevel[ID], DIGIPARA::DIG::IO_Level);
+ FillComboBoxValueFromMemory(cbbTrgOut[ID], DIGIPARA::DIG::TrgOutMode);
+ FillComboBoxValueFromMemory(cbbGPIO[ID], DIGIPARA::DIG::GPIOMode);
+ FillComboBoxValueFromMemory(cbbBusyIn[ID], DIGIPARA::DIG::BusyInSource);
+ FillComboBoxValueFromMemory(cbbSyncOut[ID], DIGIPARA::DIG::SyncOutMode);
+ FillComboBoxValueFromMemory(cbbAutoDisarmAcq[ID], DIGIPARA::DIG::EnableAutoDisarmACQ);
+ FillComboBoxValueFromMemory(cbbStatEvents[ID], DIGIPARA::DIG::EnableStatisticEvents);
+ FillComboBoxValueFromMemory(cbbBdVetoPolarity[ID], DIGIPARA::DIG::BoardVetoPolarity);
+ FillComboBoxValueFromMemory(cbbBoardVetoSource[ID], DIGIPARA::DIG::BoardVetoSource);
+ FillComboBoxValueFromMemory(cbbIOLevel[ID], DIGIPARA::DIG::IO_Level);
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::BoardVetoWidth));
- spbBdVetoWidth[ID]->setValue(result.toInt());
-
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::RunDelay));
- spbRunDelay[ID]->setValue(result.toInt());
-
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::VolatileClockOutDelay));
- dsbVolatileClockOutDelay[ID]->setValue(result.toDouble());
-
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::PermanentClockOutDelay));
- dsbClockOutDelay[ID]->setValue(result.toDouble());
+ FillSpinBoxValueFromMemory(spbBdVetoWidth[ID], DIGIPARA::DIG::BoardVetoWidth);
+ FillSpinBoxValueFromMemory(spbRunDelay[ID], DIGIPARA::DIG::RunDelay);
+ FillSpinBoxValueFromMemory(dsbVolatileClockOutDelay[ID], DIGIPARA::DIG::VolatileClockOutDelay);
+ FillSpinBoxValueFromMemory(dsbClockOutDelay[ID], DIGIPARA::DIG::PermanentClockOutDelay);
//------------- test pulse
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::TestPulsePeriod));
- dsbTestPuslePeriod[ID]->setValue(result.toDouble());
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::TestPulseWidth));
- dsbTestPusleWidth[ID]->setValue(result.toDouble());
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::TestPulseLowLevel));
- spbTestPusleLowLevel[ID]->setValue(result.toInt());
- result = QString::fromStdString(digi[ID]->GetSettingValue(DIGIPARA::DIG::TestPulseHighLevel));
- spbTestPusleHighLevel[ID]->setValue(result.toInt());
+ FillSpinBoxValueFromMemory(dsbTestPuslePeriod[ID], DIGIPARA::DIG::TestPulsePeriod);
+ FillSpinBoxValueFromMemory(dsbTestPusleWidth[ID], DIGIPARA::DIG::TestPulseWidth);
+ FillSpinBoxValueFromMemory(spbTestPusleLowLevel[ID], DIGIPARA::DIG::TestPulseLowLevel);
+ FillSpinBoxValueFromMemory(spbTestPusleHighLevel[ID], DIGIPARA::DIG::TestPulseHighLevel);
+
+ //@============================== Channel setting
+ for( int ch = 0; ch < digi[ID]->GetNChannels(); ch++){
+
+ FillComboBoxValueFromMemory(cbbOnOff[ID][ch], DIGIPARA::CH::ChannelEnable, ch);
+ FillSpinBoxValueFromMemory(spbDCOffset[ID][ch], DIGIPARA::CH::DC_Offset, ch);
+ FillSpinBoxValueFromMemory(spbThreshold[ID][ch], DIGIPARA::CH::TriggerThreshold, ch);
+ FillComboBoxValueFromMemory(cbbParity[ID][ch], DIGIPARA::CH::Polarity, ch);
+ FillSpinBoxValueFromMemory(spbRecordLength[ID][ch], DIGIPARA::CH::RecordLength, ch);
+ FillSpinBoxValueFromMemory(spbPreTrigger[ID][ch], DIGIPARA::CH::PreTrigger, ch);
+ FillSpinBoxValueFromMemory(spbInputRiseTime[ID][ch], DIGIPARA::CH::TimeFilterRiseTime, ch);
+ FillSpinBoxValueFromMemory(spbTriggerGuard[ID][ch], DIGIPARA::CH::TimeFilterRetriggerGuard, ch);
+ FillComboBoxValueFromMemory(cbbLowFilter[ID][ch], DIGIPARA::CH::EnergyFilterLowFreqFilter, ch);
+ FillComboBoxValueFromMemory(cbbWaveSource[ID][ch], DIGIPARA::CH::WaveDataSource, ch);
+ FillComboBoxValueFromMemory(cbbWaveRes[ID][ch], DIGIPARA::CH::WaveResolution, ch);
+ FillComboBoxValueFromMemory(cbbWaveSave[ID][ch], DIGIPARA::CH::WaveSaving, ch);
+
+ FillSpinBoxValueFromMemory(spbTrapRiseTime[ID][ch], DIGIPARA::CH::EnergyFilterRiseTime, ch);
+ FillSpinBoxValueFromMemory(spbTrapFlatTop[ID][ch], DIGIPARA::CH::EnergyFilterFlatTop, ch);
+ FillSpinBoxValueFromMemory(spbTrapPoleZero[ID][ch], DIGIPARA::CH::EnergyFilterPoleZero, ch);
+ FillSpinBoxValueFromMemory(spbPeaking[ID][ch], DIGIPARA::CH::EnergyFilterPeakingPosition, ch);
+ FillComboBoxValueFromMemory(cbbPeakingAvg[ID][ch], DIGIPARA::CH::EnergyFilterPeakingAvg, ch);
+ FillComboBoxValueFromMemory(cbbBaselineAvg[ID][ch], DIGIPARA::CH::EnergyFilterBaselineAvg, ch);
+ FillSpinBoxValueFromMemory(spbFineGain[ID][ch], DIGIPARA::CH::EnergyFilterFineGain, ch);
+ FillSpinBoxValueFromMemory(spbBaselineGuard[ID][ch], DIGIPARA::CH::EnergyFilterBaselineGuard, ch);
+ FillSpinBoxValueFromMemory(spbPileupGuard[ID][ch], DIGIPARA::CH::EnergyFilterPileUpGuard, ch);
+
+ FillComboBoxValueFromMemory(cbbAnaProbe0[ID][ch], DIGIPARA::CH::WaveAnalogProbe0, ch);
+ FillComboBoxValueFromMemory(cbbAnaProbe1[ID][ch], DIGIPARA::CH::WaveAnalogProbe1, ch);
+ FillComboBoxValueFromMemory(cbbDigProbe0[ID][ch], DIGIPARA::CH::WaveDigitalProbe0, ch);
+ FillComboBoxValueFromMemory(cbbDigProbe1[ID][ch], DIGIPARA::CH::WaveDigitalProbe1, ch);
+ FillComboBoxValueFromMemory(cbbDigProbe2[ID][ch], DIGIPARA::CH::WaveDigitalProbe2, ch);
+ FillComboBoxValueFromMemory(cbbDigProbe3[ID][ch], DIGIPARA::CH::WaveDigitalProbe3, ch);
+
+ FillComboBoxValueFromMemory(cbbEventSelector[ID][ch], DIGIPARA::CH::EventSelector, ch);
+ FillComboBoxValueFromMemory(cbbWaveSelector[ID][ch], DIGIPARA::CH::WaveSelector, ch);
+ FillSpinBoxValueFromMemory(spbEnergySkimLow[ID][ch], DIGIPARA::CH::EnergySkimLowDiscriminator, ch);
+ FillSpinBoxValueFromMemory(spbEnergySkimHigh[ID][ch], DIGIPARA::CH::EnergySkimHighDiscriminator, ch);
+
+ FillComboBoxValueFromMemory(cbbEvtTrigger[ID][ch], DIGIPARA::CH::EventTriggerSource, ch);
+ FillComboBoxValueFromMemory(cbbWaveTrigger[ID][ch], DIGIPARA::CH::WaveTriggerSource, ch);
+ FillComboBoxValueFromMemory(cbbChVetoSrc[ID][ch], DIGIPARA::CH::ChannelVetoSource, ch);
+ FillComboBoxValueFromMemory(cbbCoinMask[ID][ch], DIGIPARA::CH::CoincidenceMask, ch);
+ FillComboBoxValueFromMemory(cbbAntiCoinMask[ID][ch], DIGIPARA::CH::AntiCoincidenceMask, ch);
+ FillSpinBoxValueFromMemory(spbCoinLength[ID][ch], DIGIPARA::CH::CoincidenceLength, ch);
+ FillSpinBoxValueFromMemory(spbADCVetoWidth[ID][ch], DIGIPARA::CH::ADCVetoWidth, ch);
+
+ }
-
enableSignalSlot = true;
+
+ SyncComboBox(cbbOnOff, -1);
+ SyncComboBox(cbbParity, -1);
+ SyncComboBox(cbbLowFilter, -1);
+ SyncComboBox(cbbWaveSource, -1);
+ SyncComboBox(cbbWaveRes, -1);
+ SyncComboBox(cbbWaveSave, -1);
+ SyncComboBox(cbbPeakingAvg, -1);
+ SyncComboBox(cbbBaselineAvg, -1);
+ SyncComboBox(cbbAnaProbe0, -1);
+ SyncComboBox(cbbAnaProbe1, -1);
+ SyncComboBox(cbbDigProbe0, -1);
+ SyncComboBox(cbbDigProbe1, -1);
+ SyncComboBox(cbbDigProbe2, -1);
+ SyncComboBox(cbbDigProbe3, -1);
+ SyncComboBox(cbbEventSelector, -1);
+ SyncComboBox(cbbWaveSelector , -1);
+ SyncComboBox(cbbEvtTrigger , -1);
+ SyncComboBox(cbbWaveTrigger , -1);
+ SyncComboBox(cbbChVetoSrc , -1);
+ SyncComboBox(cbbCoinMask , -1);
+ SyncComboBox(cbbAntiCoinMask , -1);
+
+ SyncSpinBox(spbDCOffset , -1);
+ SyncSpinBox(spbThreshold , -1);
+ SyncSpinBox(spbRecordLength , -1);
+ SyncSpinBox(spbPreTrigger , -1);
+ SyncSpinBox(spbInputRiseTime , -1);
+ SyncSpinBox(spbTriggerGuard , -1);
+ SyncSpinBox(spbTrapRiseTime , -1);
+ SyncSpinBox(spbTrapFlatTop , -1);
+ SyncSpinBox(spbTrapPoleZero , -1);
+ SyncSpinBox(spbPeaking , -1);
+ SyncSpinBox(spbFineGain , -1);
+ SyncSpinBox(spbBaselineGuard , -1);
+ SyncSpinBox(spbPileupGuard , -1);
+ SyncSpinBox(spbEnergySkimHigh, -1);
+ SyncSpinBox(spbEnergySkimLow , -1);
+ SyncSpinBox(spbCoinLength , -1);
+ SyncSpinBox(spbADCVetoWidth , -1);
+
}
//^###########################################################################
@@ -935,12 +1038,13 @@ void DigiSettingsPanel::SetupComboBox(QComboBox *&cbb, const Reg para, int ch_in
});
}
+//TODO ==== spin Box step
void DigiSettingsPanel::SetupSpinBox(QSpinBox *&spb, const Reg para, int ch_index, QString labelTxt, QGridLayout *layout, int row, int col, int srow, int scol){
QLabel * lb = new QLabel(labelTxt, this);
layout->addWidget(lb, row, col);
lb->setAlignment(Qt::AlignRight| Qt::AlignCenter);
spb = new QSpinBox(this);
- spb->setMinimum(atoi( para.GetAnswers()[0].first.c_str()));
+ spb->setMinimum(std::min(-1, atoi( para.GetAnswers()[0].first.c_str())));
spb->setMaximum(atoi( para.GetAnswers()[1].first.c_str()));
layout->addWidget(spb, row, col + 1, srow, scol);
connect(spb, &QSpinBox::valueChanged, this, [=](){
@@ -998,9 +1102,11 @@ void DigiSettingsPanel::SyncSpinBox(QSpinBox *(&spb)[][MaxNumberOfChannel+1], in
if( spb[ID][i]->value() == value ) count++;
}
+ //printf("%d =? %d \n", count, nCh);
+
enableSignalSlot = false;
if( count != nCh ){
- spb[ID][nCh]->setValue(-999);
+ spb[ID][nCh]->setValue(-1);
}else{
spb[ID][nCh]->setValue(value);
}
@@ -1032,13 +1138,19 @@ void DigiSettingsPanel::SetupComboBoxTab(QComboBox *(&cbb)[][MaxNumberOfChannel
}
}
-void DigiSettingsPanel::ReadCombBoxValue(QComboBox *cbb, const Reg para){
- QString result = QString::fromStdString(digi[ID]->GetSettingValue(para));
+void DigiSettingsPanel::FillComboBoxValueFromMemory(QComboBox *&cbb, const Reg para, int ch_index){
+ QString result = QString::fromStdString(digi[ID]->GetSettingValue(para, ch_index));
//printf("%s === %s, %d, %p\n", __func__, result.toStdString().c_str(), ID, cbb);
int index = cbb->findData(result);
if( index >= 0 && index < cbb->count()) {
cbb->setCurrentIndex(index);
}else{
- qDebug() << result;
+ printf("%s %s\n", para.GetPara().c_str(), result.toStdString().c_str());
}
}
+
+template void DigiSettingsPanel::FillSpinBoxValueFromMemory(T *&spb, const Reg para, int ch_index){
+ QString result = QString::fromStdString(digi[ID]->GetSettingValue(para, ch_index));
+ //printf("%s === %s, %d, %p\n", __func__, result.toStdString().c_str(), ID, spb);
+ spb->setValue(result.toDouble());
+}
diff --git a/digiSettingsPanel.h b/digiSettingsPanel.h
index a5952ba..a7c0c5f 100644
--- a/digiSettingsPanel.h
+++ b/digiSettingsPanel.h
@@ -157,10 +157,11 @@ private:
void SyncComboBox(QComboBox *(&cbb)[][MaxNumberOfChannel+1], int ch);
void SyncSpinBox(QSpinBox *(&spb)[][MaxNumberOfChannel+1], int ch);
- void SetupSpinBoxTab(QSpinBox *(&spb)[][MaxNumberOfChannel+1], const Reg para, QString text, QTabWidget * tabWidget, int iDigi, int nChannel);
void SetupComboBoxTab(QComboBox *(&cbb)[][MaxNumberOfChannel+1], const Reg para, QString text, QTabWidget * tabWidget, int iDigi, int nChannel, int nCol = 4);
+ void SetupSpinBoxTab(QSpinBox *(&spb)[][MaxNumberOfChannel+1], const Reg para, QString text, QTabWidget * tabWidget, int iDigi, int nChannel);
- void ReadCombBoxValue(QComboBox * cbb, const Reg para );
+ void FillComboBoxValueFromMemory(QComboBox * &cbb, const Reg para, int ch_index = -1);
+ template void FillSpinBoxValueFromMemory(T * &spb, const Reg para, int ch_index = -1 );