finsihed copy settings

This commit is contained in:
Ryan Tang 2023-03-13 18:31:10 -04:00
parent 68953be4bf
commit 0311a546b3
3 changed files with 180 additions and 22 deletions

View File

@ -943,7 +943,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
layout1->setAlignment(Qt::AlignTop | Qt::AlignLeft);
{//@============== low level inquiry
QGroupBox * icBox1 = new QGroupBox("Low Level Settings", ICTab);
icBox1 = new QGroupBox("Low Level Settings", ICTab);
layout1->addWidget(icBox1);
QGridLayout * inquiryLayout = new QGridLayout(icBox1);
@ -1216,41 +1216,89 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
}
{//@============== Copy setting
QGroupBox * icBox2 = new QGroupBox("Copy Settings", ICTab);
icBox2 = new QGroupBox("Copy Settings", ICTab);
layout1->addWidget(icBox2);
QHBoxLayout * cpLayout = new QHBoxLayout(icBox2);
cpLayout->setAlignment(Qt::AlignHCenter | Qt::AlignLeft);
QGridLayout * cpLayout = new QGridLayout(icBox2);
cpLayout->setAlignment(Qt::AlignCenter | Qt::AlignLeft);
///================
QGroupBox * icBox2a = new QGroupBox("Copy From", icBox2);
cpLayout->addWidget(icBox2a, 0);
cpLayout->addWidget(icBox2a, 0, 0, 5, 1);
QGridLayout * lo1 = new QGridLayout(icBox2a);
RComboBox * cbCopyDigiFrom = new RComboBox(ICTab);
cbCopyDigiFrom = new RComboBox(ICTab);
for( int i = 0; i < nDigi; i++) cbCopyDigiFrom->addItem("Digi-" + QString::number(digi[i]->GetSerialNumber()), i);
lo1->addWidget(cbCopyDigiFrom, 0, 0);
lo1->addWidget(cbCopyDigiFrom, 0, 0, 1, 8);
connect(cbCopyDigiFrom, &RComboBox::currentIndexChanged, this, [=](int index){
if( index == cbCopyDigiTo->currentIndex() ){
pbCopyBoard->setEnabled(false);
pbCopyDigi->setEnabled(false);
}else{
pbCopyBoard->setEnabled(true);
pbCopyDigi->setEnabled(true);
}
});
int rowID = 0;
for( int i = 0; i < digi[0]->GetNChannels(); i++) {
if( i % 8 == 0) rowID ++;
rbCopyChFrom[i] = new QRadioButton("Ch-" + QString::number(i), ICTab);
lo1->addWidget(rbCopyChFrom[i], rowID, i%8);
connect(rbCopyChFrom[i], &QRadioButton::clicked, this, &DigiSettingsPanel::CheckRadioAndCheckedButtons);
}
///================
QPushButton * pbCopy = new QPushButton("Copy", ICTab);
cpLayout->addWidget(pbCopy, 1);
pbCopyChannel = new QPushButton("Copy Ch. Setting", ICTab);
pbCopyChannel->setFixedSize(200, 50);
cpLayout->addWidget(pbCopyChannel, 1, 1);
pbCopyChannel->setEnabled(false);
connect(pbCopyChannel, &QPushButton::clicked, this, &DigiSettingsPanel::CopyChannelSettings);
pbCopyBoard = new QPushButton("Copy Board Settings", ICTab);
pbCopyBoard->setFixedSize(200, 50);
cpLayout->addWidget(pbCopyBoard, 2, 1);
pbCopyBoard->setEnabled(false);
connect(pbCopyBoard, &QPushButton::clicked, this, &DigiSettingsPanel::CopyBoardSettings);
pbCopyDigi = new QPushButton("Copy Digitizer", ICTab);
pbCopyDigi->setFixedSize(200, 50);
cpLayout->addWidget(pbCopyDigi, 3, 1);
pbCopyDigi->setEnabled(false);
connect(pbCopyDigi, &QPushButton::clicked, this, &DigiSettingsPanel::CopyWholeDigitizer);
///================
QGroupBox * icBox2b = new QGroupBox("Copy To", icBox2);
cpLayout->addWidget(icBox2b, 2);
cpLayout->addWidget(icBox2b, 0, 2, 5, 1);
QGridLayout * lo2 = new QGridLayout(icBox2b);
RComboBox * cbCopyDigiTo = new RComboBox(ICTab);
cbCopyDigiTo = new RComboBox(ICTab);
for( int i = 0; i < nDigi; i++) cbCopyDigiTo->addItem("Digi-" + QString::number(digi[i]->GetSerialNumber()), i);
lo2->addWidget(cbCopyDigiTo, 0, 0);
lo2->addWidget(cbCopyDigiTo, 0, 0, 1, 8);
connect(cbCopyDigiTo, &RComboBox::currentIndexChanged, this, [=](int index){
if( index == cbCopyDigiFrom->currentIndex() ){
pbCopyBoard->setEnabled(false);
pbCopyDigi->setEnabled(false);
}else{
pbCopyBoard->setEnabled(true);
pbCopyDigi->setEnabled(true);
}
});
rowID = 0;
for( int i = 0; i < digi[0]->GetNChannels(); i++) {
if( i % 8 == 0) rowID ++;
chkChTo[i] = new QCheckBox("ch-" + QString::number(i), ICTab);
lo2->addWidget(chkChTo[i], rowID, i%8);
connect(chkChTo[i], &QCheckBox::clicked, this, &DigiSettingsPanel::CheckRadioAndCheckedButtons);
}
cpLayout->setStretch(0, 4);
cpLayout->setStretch(1, 1);
cpLayout->setStretch(2, 4);
cpLayout->setColumnStretch(0, 4);
cpLayout->setColumnStretch(1, 1);
cpLayout->setColumnStretch(2, 4);
}
}
@ -1404,7 +1452,7 @@ void DigiSettingsPanel::ShowSettingsToPanel(){
enableSignalSlot = false;
printf("%s\n", __func__);
printf("%s Digi-%d\n", __func__, digi[ID]->GetSerialNumber());
for (unsigned short j = 0; j < (unsigned short) infoIndex.size(); j++){
leInfo[ID][j]->setText(QString::fromStdString(digi[ID]->GetSettingValue(infoIndex[j].second)));
@ -1942,3 +1990,93 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
enableSignalSlot = true;
}
void DigiSettingsPanel::CheckRadioAndCheckedButtons(){
int chFromIndex = -1;
for( int i = 0 ; i < MaxNumberOfChannel ; i++){
if( rbCopyChFrom[i]->isChecked() ){
chFromIndex = i;
break;
}
}
for( int i = 0 ; i < MaxNumberOfChannel ; i++) chkChTo[i]->setEnabled(true);
if( chFromIndex >= 0 ) chkChTo[chFromIndex]->setEnabled(false);
bool isToIndexCleicked = false;
for( int i = 0 ; i < MaxNumberOfChannel ; i++){
if( i == chFromIndex ) continue;
if( chkChTo[i]->isChecked() ){
isToIndexCleicked = true;
break;
}
}
if( chFromIndex >= 0 && isToIndexCleicked ) pbCopyChannel->setEnabled(true);
}
bool DigiSettingsPanel::CopyChannelSettings()
{
int digiFromIndex = cbCopyDigiFrom->currentIndex();
int digiToIndex = cbCopyDigiTo->currentIndex();
int chFromIndex = -1;
for( int i = 0 ; i < MaxNumberOfChannel ; i++){
if( rbCopyChFrom[i]->isChecked() ){
chFromIndex = i;
break;
}
}
if( chFromIndex < 0 ) return false;
SendLogMsg("Copy Settings from DIG:" + QString::number(digi[digiFromIndex]->GetSerialNumber()) + ", CH:" + QString::number(chFromIndex) + " to ... ");
for( int i = 0; i < MaxNumberOfChannel; i++){
if( chkChTo[i]->isChecked() ){
//Copy setting
SendLogMsg(" ---> DIG:" + QString::number(digi[digiToIndex]->GetSerialNumber()) + ", CH:" + QString::number(i));
for( int k = 0; k < (int) DIGIPARA::CH::AllSettings.size(); k ++){
if( DIGIPARA::CH::AllSettings[k].ReadWrite() != RW::ReadWrite ) continue;
if( !digi[digiToIndex]->WriteValue( DIGIPARA::CH::AllSettings[k], digi[digiFromIndex]->GetSettingValue(DIGIPARA::CH::AllSettings[k], chFromIndex) , i ) ){
SendLogMsg("something wrong when copying setting : " + QString::fromStdString( DIGIPARA::CH::AllSettings[k].GetPara())) ;
return false;
break;
}
}
}
}
SendLogMsg("------ done");
ID = digiToIndex;
ShowSettingsToPanel();
return true;
}
bool DigiSettingsPanel::CopyBoardSettings(){
int digiFromIndex = cbCopyDigiFrom->currentIndex();
int digiToIndex = cbCopyDigiTo->currentIndex();
SendLogMsg("Copy Settings from DIG:" + QString::number(digi[digiFromIndex]->GetSerialNumber()) + " to DIG:" + QString::number(digi[digiToIndex]->GetSerialNumber()));
for( int i = 0; i < MaxNumberOfChannel; i++){
if( chkChTo[i]->isChecked() ){
//Copy setting
for( int k = 0; k < (int) DIGIPARA::DIG::AllSettings.size(); k ++){
if( DIGIPARA::DIG::AllSettings[k].ReadWrite() != RW::ReadWrite ) continue;
if( ! digi[digiToIndex]->WriteValue( DIGIPARA::DIG::AllSettings[k], digi[digiFromIndex]->GetSettingValue(DIGIPARA::DIG::AllSettings[k])) ){
SendLogMsg("something wrong when copying setting : " + QString::fromStdString( DIGIPARA::DIG::AllSettings[k].GetPara())) ;
return false;
break;
}
}
}
}
SendLogMsg("------ done");
ID = digiToIndex;
ShowSettingsToPanel();
return true;
}
bool DigiSettingsPanel::CopyWholeDigitizer(){
return CopyChannelSettings() | CopyBoardSettings();
}

View File

@ -9,6 +9,7 @@
#include <QScrollArea>
#include <QTabWidget>
#include <QGroupBox>
#include <QRadioButton>
#include <QCheckBox>
#include <QComboBox>
#include <QTableWidget>
@ -74,15 +75,18 @@ private:
QTabWidget * triggerMapTab;
QTabWidget * ICTab; // inquiry and copy
RComboBox * cbIQDigi;
RComboBox * cbBdSettings;
QGroupBox * icBox1;
QGroupBox * icBox2;
RComboBox * cbIQCh;
RComboBox * cbChSettings;
bool enableSignalSlot;
//---------------- Inquiry and copy
RComboBox * cbIQDigi;
RComboBox * cbBdSettings;
RComboBox * cbIQCh;
RComboBox * cbChSettings;
QLineEdit * leBdSettingsType;
QLineEdit * leBdSettingsRead;
QLineEdit * leBdSettingsUnit;
@ -97,6 +101,15 @@ private:
RSpinBox * sbChSettingsWrite;
QLineEdit * leChSettingsWrite;
RComboBox * cbCopyDigiFrom;
RComboBox * cbCopyDigiTo;
QRadioButton * rbCopyChFrom[MaxNumberOfChannel];
QCheckBox * chkChTo[MaxNumberOfChannel];
QPushButton * pbCopyChannel;
QPushButton * pbCopyBoard;
QPushButton * pbCopyDigi;
//------------ status
QLineEdit * leInfo[MaxNumberOfChannel][12];
QPushButton * LEDStatus[MaxNumberOfDigitizer][19];
@ -229,6 +242,11 @@ private:
void ReadBoardSetting(int cbIndex);
void ReadChannelSetting(int cbIndex);
void CheckRadioAndCheckedButtons();
bool CopyChannelSettings();
bool CopyBoardSettings();
bool CopyWholeDigitizer();
};

View File

@ -1045,7 +1045,7 @@ void MainWindow::CheckElog(){
WriteElog("Checking elog writing", "Testing communication", "checking");
if( elogID > 0 ){
LogMsg("Ckecked Elog writing. OK.");
LogMsg("Checked Elog writing. OK.");
//TODO =========== chrome windowID
AppendElog("Check Elog append.", chromeWindowID);
@ -1056,7 +1056,7 @@ void MainWindow::CheckElog(){
}
}else{
LogMsg("<font style=\"color : red;\">Checked Elog Write. FAIL. (no elog will be used.) </font>");
LogMsg("<font style=\"color : red;\">Checked Elog Write. FAIL. (no elog will be used.) (probably logbook <b>" + expName + "</b> does not exist) </font>");
}
}
@ -1431,6 +1431,8 @@ void MainWindow::CreateNewExperiment(const QString newExpName){
LogMsg("Commit branch : <b>" + newExpName + "</b> as \"initial commit\"");
}
CheckElog();
leRawDataPath->setText(rawDataFolder);
leExpName->setText(expName);
leRunID->setText(QString::number(runID));