use a dumb way to solve the pointer problem in SOLARIS Panel

This commit is contained in:
Ryan Tang 2023-03-23 16:36:47 -04:00
parent a0861130af
commit 38f6cc41cb
8 changed files with 143 additions and 148 deletions

View File

@ -28,13 +28,6 @@ SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
this->detType = detType;
this->detMaxID = detMaxID;
nDigiMapping = mapping.size();
for( int i = 0; i < nDigiMapping; i++) {
int count = 0;
for( int j = 0; j < (int )mapping[i].size(); j++) if( mapping[i][j] >= 0) count ++;
nChMapping.push_back(count);
}
//Check number of detector type; Array 0-199, Recoil 200-299, other 300-
int nDetType = detType.size();
for( int k = 0 ; k < nDetType; k++) nDet.push_back(0);
@ -42,7 +35,7 @@ SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
QList<QList<int>> detIDListTemp; // store { detID, (Digi << 8 ) + ch}, making mapping into 1-D array to be consolidated
printf("################################# \n");
for( int i = 0; i < nDigiMapping ; i++){
for( int i = 0; i < (int) mapping.size() ; i++){
for( int j = 0; j < (int) mapping[i].size(); j++ ){
printf("%3d,", mapping[i][j]);
QList<int> haha ;
@ -88,8 +81,6 @@ SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
return a.at(0) < b.at(0);
});
//------------- display detector summary
//qDebug() << detIDList;
printf("---------- num. of det. Type : %d\n", nDetType);
@ -97,33 +88,6 @@ SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
printf(" Type-%d (%6s) : %3d det. (%3d - %3d)\n", i, detType[i].toStdString().c_str(), nDet[i], (i==0 ? 0 : detMaxID[i-1]), detMaxID[i]-1);
}
//------------ create Widgets
leDisplay = new QLineEdit ***[(int) SettingItems.size()];
sbSetting = new RSpinBox ***[(int) SettingItems.size()];
chkOnOff = new QCheckBox ***[(int) SettingItems.size()];
for( int k = 0; k < (int) SettingItems.size() ; k ++){
leDisplay[k] = new QLineEdit **[nDigiMapping];
sbSetting[k] = new RSpinBox **[nDigiMapping];
chkOnOff[k] = new QCheckBox **[nDigiMapping];
for( int i = 0; i < nDigiMapping; i++){
leDisplay[k][i] = new QLineEdit *[(int) mapping[i].size()];
sbSetting[k][i] = new RSpinBox *[(int) mapping[i].size()];
chkOnOff[k][i] = new QCheckBox *[(int) mapping[i].size()];
for( int j = 0 ; j < (int) mapping[i].size() ; j++){
leDisplay[k][i][j] = nullptr;
sbSetting[k][i][j] = nullptr;
chkOnOff[k][i][j] = nullptr;
}
}
}
cbTrigger = new RComboBox ** [nDetType];
for(int i = 0; i < nDetType; i++){
cbTrigger[i] = new RComboBox *[nDet[i]]; /// nDet[0] store the number of det. for the Array
for( int j = 0; j < nDet[i]; j ++){
cbTrigger[i][j] = nullptr;
}
}
//---------- Set Panel
QGridLayout * mainLayout = new QGridLayout(this); this->setLayout(mainLayout);
@ -137,17 +101,17 @@ SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
QTabWidget * tabWidget = new QTabWidget(this); mainLayout->addWidget(tabWidget, 1, 0, 1, 5);
for( int detTypeID = 0; detTypeID < nDetType; detTypeID ++ ){
QTabWidget * tab2 = new QTabWidget(tabWidget);
tabWidget->addTab(tab2, detType[detTypeID]);
QTabWidget * tabSetting = new QTabWidget(tabWidget);
tabWidget->addTab(tabSetting, detType[detTypeID]);
for( int SettingID = 0; SettingID < (int) SettingItems.size(); SettingID ++){
QScrollArea * scrollArea = new QScrollArea(this);
scrollArea->setWidgetResizable(true);
scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
tab2->addTab(scrollArea, QString::fromStdString(SettingItems[SettingID]));
tabSetting->addTab(scrollArea, QString::fromStdString(SettingItems[SettingID]));
QWidget * tab = new QWidget(tab2);
QWidget * tab = new QWidget(tabSetting);
scrollArea->setWidget(tab);
QGridLayout * layout = new QGridLayout(tab);
@ -183,45 +147,19 @@ SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
int lowID = (detTypeID == 0 ? 0 : detMaxID[detTypeID-1]);
for(int i = 0; i < detIDList.size(); i++){
if( detIDList[i][0] >= detMaxID[detTypeID] || lowID > detIDList[i][0] ) continue;
CreateDetGroup(SettingID, detIDList[i], layout, i/NCOL + 2, i%NCOL);
}
}
}
//TODO ========== when digiSettingPanel or Scope change setting, reflect in solarisPanel
//TODO ========== when tab change, update panel
}
SOLARISpanel::~SOLARISpanel(){
printf("%s\n", __func__);
for( int k = 0; k < (int) SettingItems.size() ; k ++){
for( int i = 0; i < nDigiMapping; i++){
delete [] leDisplay[k][i] ;
delete [] sbSetting[k][i] ;
delete [] chkOnOff[k][i] ;
}
delete [] leDisplay[k];
delete [] sbSetting[k];
delete [] chkOnOff[k] ;
}
delete [] leDisplay;
delete [] sbSetting;
delete [] chkOnOff;
for( int k = 0; k < (int) detType.size() ; k++){
delete [] cbTrigger[k];
}
delete [] cbTrigger;
printf("end of %s\n", __func__);
}
//^######################################################################
@ -305,6 +243,7 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
SendLogMsg(msg + "|Fail.");
spb->setStyleSheet("color:red;");
}
emit UpdateOtherPanels();
});
///===================== for the OnOff CheckBox
@ -321,6 +260,8 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
}
enableSignalSlot = true;
emit UpdateOtherPanels();
});
layout0->setColumnStretch(0, 1);
@ -370,7 +311,9 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
digi[digiID]->WriteValue(PHA::CH::EventTriggerSource, "ChSelfTrigger", chID);
digi[digiID]->WriteValue(PHA::CH::WaveTriggerSource, "ChSelfTrigger", chID);
if( i > 1 ) {
if( i == 1 ){
digi[digiID]->WriteValue(PHA::CH::CoincidenceMask, "Disabled", chID);
}else {
digi[digiID]->WriteValue(PHA::CH::CoincidenceMask, "Ch64Trigger", chID);
digi[digiID]->WriteValue(PHA::CH::CoincidenceLength, "100", chID);
@ -395,6 +338,8 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
}
}
UpdateOtherPanels();
});
}
@ -459,8 +404,12 @@ void SOLARISpanel::UpdatePanel(){
int detTypeID = FindDetTypID(detIDList[k]);
//Check the 0-index
bool isAcceptableSetting = true;
bool isTriggerE = false;
if( eventTriggerSource[0] != waveTriggerSource[0] || coincidentMask[0] != antiCoincidentMask[0] ) isAcceptableSetting = false;
if( antiCoincidentMask[0] != "Disabled") isAcceptableSetting = false;
if( !(coincidentMask[0] == "Disabled" || coincidentMask[0] == "TRGIN") ) isAcceptableSetting = false;
//check 0-index settings
if( isAcceptableSetting ){
@ -470,19 +419,24 @@ void SOLARISpanel::UpdatePanel(){
cbTrigger[detTypeID][detIDList[k][0]]->setCurrentText("Disabled");
}else if( eventTriggerSource[0] == "TRGIN" && coincidentMask[0] == "TRGIN") {
cbTrigger[detTypeID][detIDList[k][0]]->setCurrentText("Ext. Trigger");
}else if( eventTriggerSource[0] == "ChSelfTrigger" && coincidentMask[0] == "Ch64Trigger") {
//Check trigger map
//TODO;
for( int p = 0; p < (int) triggerMap.size(); p ++ ){
printf("ch-%d, trigger : 0x%s \n", detIDList[k][p+1] & 0xFF, QString::number(triggerMap[p], 16).toStdString().c_str() );
}else if( eventTriggerSource[0] == "ChSelfTrigger" && coincidentMask[0] == "Disabled") {
unsigned long mask = 1ULL << (detIDList[k][1] & 0xFF);
for( int p = 1; p < (int) triggerMap.size(); p ++){
if( coincidentMask[p] != "Ch64Trigger") isAcceptableSetting = false;
if( triggerMap[p] != mask) isAcceptableSetting = false;
}
if( isAcceptableSetting ) {
cbTrigger[detTypeID][detIDList[k][0]]->setCurrentText("Trigger e");
isTriggerE = true;
}
cbTrigger[detTypeID][detIDList[k][0]]->setCurrentText("Trigger e");
}else{
isAcceptableSetting = false;
}
}
if( isAcceptableSetting ){
if( isAcceptableSetting){
//Check if eventTriggerSource or coincidentMask compare to the 0-index
for( int h = 2; h < detIDList[k].size(); h++){
if( eventTriggerSource[h-1] != eventTriggerSource[0]){
@ -493,7 +447,7 @@ void SOLARISpanel::UpdatePanel(){
isAcceptableSetting = false;
break;
}
if( coincidentMask[h-1] != coincidentMask[0]){
if( !isTriggerE && coincidentMask[h-1] != coincidentMask[0]){
isAcceptableSetting = false;
break;
}

View File

@ -22,6 +22,10 @@
#include "CustomWidgets.h"
#include "macro.h"
#define MaxSettingItem 3
#define MaxDetType 10
#define MaxDetID 60
class SOLARISpanel : public QWidget{
Q_OBJECT
@ -43,9 +47,7 @@ public slots:
signals:
//TODO
void UpdateSettingsPanel();
void UpdateScopePanel();
void UpdateOtherPanels();
void SendLogMsg(const QString str);
private:
@ -55,25 +57,22 @@ private:
unsigned short nDigi;
std::vector<std::vector<int>> mapping;
QStringList detType;
std::vector<int> nDet; // number of disting detector
std::vector<int> nDet; // number of distgish detector
std::vector<int> detMaxID;
QList<QList<int>> detIDList; // 1-D array of { detID, (Digi << 8 ) + ch}
int FindDetTypID(QList<int> detIDListElement);
int nDigiMapping; /// mapping.size()
std::vector<int> nChMapping; /// mapping[i].size(), NON -1
QCheckBox * chkAll; // checkBox for all setting on that tab;
QCheckBox * chkAlle;
QCheckBox * chkAllxf;
QCheckBox * chkAllxn;
QLineEdit **** leDisplay; // [SettingID][DigiID][ChID]
RSpinBox **** sbSetting;
QCheckBox **** chkOnOff;
QLineEdit * leDisplay[MaxSettingItem][MaxNumberOfDigitizer][MaxNumberOfChannel]; // [SettingID][DigiID][ChID]
RSpinBox * sbSetting[MaxSettingItem][MaxNumberOfDigitizer][MaxNumberOfChannel];
QCheckBox * chkOnOff[MaxSettingItem][MaxNumberOfDigitizer][MaxNumberOfChannel];
RComboBox *** cbTrigger; //[detTypeID][detID] for array only
RComboBox * cbTrigger[MaxDetType][MaxDetID]; //[detTypeID][detID] for array only
bool enableSignalSlot;

View File

@ -843,32 +843,32 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
}
for( int ch = 0; ch < digi[ID]->GetNChannels() + 1; ch++) {
//send UpdateScopeSetting signal
connect(spbDCOffset[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbRecordLength[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbPreTrigger[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbThreshold[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbTrapRiseTime[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbTrapFlatTop[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbTrapPoleZero[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbPeaking[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbTriggerGuard[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbTrapRiseTime[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbFineGain[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbBaselineGuard[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(spbPileupGuard[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbParity[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbWaveRes[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbPeakingAvg[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbLowFilter[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbBaselineAvg[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
//send UpdateOtherPanels signal
connect(spbDCOffset[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbRecordLength[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbPreTrigger[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbThreshold[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbTrapRiseTime[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbTrapFlatTop[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbTrapPoleZero[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbPeaking[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbTriggerGuard[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbTrapRiseTime[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbFineGain[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbBaselineGuard[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(spbPileupGuard[iDigi][ch], &RSpinBox::returnPressed, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbParity[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbWaveRes[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbPeakingAvg[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbLowFilter[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbBaselineAvg[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbAnaProbe0[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbAnaProbe1[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbDigProbe0[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbDigProbe1[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbDigProbe2[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbDigProbe3[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateScopeSetting);
connect(cbbAnaProbe0[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbAnaProbe1[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbDigProbe0[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbDigProbe1[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbDigProbe2[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
connect(cbbDigProbe3[iDigi][ch], &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::UpdateOtherPanels);
//----- SyncBox
connect(cbbOnOff[iDigi][ch], &RComboBox::currentIndexChanged, this, [=](){ SyncComboBox(cbbOnOff, ch);});
@ -1438,7 +1438,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
DigiSettingsPanel::~DigiSettingsPanel(){
printf("%s\n", __func__);
//printf("%s\n", __func__);
}
@ -1547,7 +1547,7 @@ void DigiSettingsPanel::EnableControl(){
if( digi[ID]->GetFPGAType() != "DPP_PHA" || digi[ID]->GetModelName() != "VX2745" ) VGABox[ID]->setEnabled(false);
QVector<QTabWidget*> tempArray = {inputTab[ID], trapTab[ID], probeTab[ID], otherTab[ID], triggerTab[ID] };
QVector<QTabWidget*> tempArray = {inputTab[ID], trapTab[ID], probeTab[ID], otherTab[ID] };
for( int k = 0; k < tempArray.size(); k++){
for( int i = 0; i < tempArray[k]->count(); i++) {
@ -1561,7 +1561,8 @@ void DigiSettingsPanel::EnableControl(){
}
}
}
triggerMapTab[ID]->setEnabled(enable);
//triggerMapTab[ID]->setEnabled(enable);
icBox1->setEnabled(enable);
icBox2->setEnabled(enable);

View File

@ -47,7 +47,7 @@ public slots:
signals:
void SendLogMsg(const QString &msg);
void UpdateScopeSetting();
void UpdateOtherPanels();
private:

View File

@ -24,7 +24,7 @@
#include <unistd.h>
//------ static memeber
Digitizer2Gen ** MainWindow::digi = NULL;
Digitizer2Gen ** MainWindow::digi = nullptr;
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
@ -34,10 +34,10 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
setWindowIcon(icon);
nDigi = 0;
digiSetting = NULL;
influx = NULL;
readDataThread = NULL;
scope = NULL;
digiSetting = nullptr;
influx = nullptr;
readDataThread = nullptr;
runTimer = new QTimer();
needManualComment = true;
@ -58,16 +58,22 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
scalarLayout->setSpacing(0);
scalarLayout->setAlignment(Qt::AlignTop);
leTrigger = NULL;
leAccept = NULL;
leTrigger = nullptr;
leAccept = nullptr;
scalarThread = new ScalarThread();
connect(scalarThread, &ScalarThread::updataScalar, this, &MainWindow::UpdateScalar);
solarisSetting = nullptr;
}
solarisSetting = nullptr;
scope = nullptr;
digiSetting = nullptr;
ConnectScopeAndSetting = false;
ConnectScopeAndSolaris = false;
ConnectSettingAndSolaris = false;
QWidget * mainLayoutWidget = new QWidget(this);
setCentralWidget(mainLayoutWidget);
QVBoxLayout * layoutMain = new QVBoxLayout(mainLayoutWidget);
@ -262,17 +268,17 @@ MainWindow::~MainWindow(){
remove(DAQLockFile);
printf("-------- delete Solaris panel\n");
if( solarisSetting != NULL ) {
if( solarisSetting ) {
delete solarisSetting;
solarisSetting = nullptr;
}
printf("-------- delete scope\n");
if( scope != NULL ) {
if( scope ) {
delete scope;
scope = nullptr;
}
printf("-------- delete digiSetting\n");
if( digiSetting != NULL ) {
if( digiSetting ) {
delete digiSetting;
digiSetting = nullptr;
}
@ -635,16 +641,18 @@ void MainWindow::CloseDigitizers(){
if( digi == NULL) return;
scalar->close();
DeleteTriggerLineEdit(); // this use digi->GetNChannels();
if(scalar ){ // scalar is child of this
scalar->close();
DeleteTriggerLineEdit(); // this use digi->GetNChannels();
}
if( scope != NULL ){
if( scope ){
scope->close();
delete scope;
scope = NULL;
}
if( digiSetting != NULL ){
if( digiSetting ){
digiSetting->close();
delete digiSetting;
digiSetting = NULL;
@ -719,11 +727,18 @@ void MainWindow::OpenScope(){
influx->WriteData(DatabaseName.toStdString());
}
if( digiSetting ) {
connect(scope, &Scope::UpdateSettingsPanel, digiSetting, &DigiSettingsPanel::ShowSettingsToPanel);
if( digiSetting && ConnectScopeAndSetting ) {
connect(scope, &Scope::UpdateOtherPanels, digiSetting, &DigiSettingsPanel::ShowSettingsToPanel);
connect(scope, &Scope::TellSettingsPanelControlOnOff, digiSetting, &DigiSettingsPanel::EnableControl);
connect(digiSetting, &DigiSettingsPanel::UpdateScopeSetting, scope, &Scope::ReadScopeSettings);
digiSetting->EnableControl();
connect(digiSetting, &DigiSettingsPanel::UpdateOtherPanels, scope, &Scope::ReadScopeSettings);
ConnectScopeAndSetting = true;
}
if( digiSetting) digiSetting->EnableControl();
if( solarisSetting && !ConnectScopeAndSolaris ){
connect(scope, &Scope::UpdateOtherPanels, solarisSetting, &SOLARISpanel::UpdatePanel);
connect(solarisSetting, &SOLARISpanel::UpdateOtherPanels, scope, &Scope::ReadScopeSettings);
ConnectScopeAndSolaris = true;
}
}else{
@ -743,10 +758,17 @@ void MainWindow::OpenDigitizersSettings(){
digiSetting = new DigiSettingsPanel(digi, nDigi);
connect(digiSetting, &DigiSettingsPanel::SendLogMsg, this, &MainWindow::LogMsg);
if( scope ) {
connect(scope, &Scope::UpdateSettingsPanel, digiSetting, &DigiSettingsPanel::ShowSettingsToPanel);
if( scope && !ConnectScopeAndSetting) {
connect(scope, &Scope::UpdateOtherPanels, digiSetting, &DigiSettingsPanel::ShowSettingsToPanel);
connect(scope, &Scope::TellSettingsPanelControlOnOff, digiSetting, &DigiSettingsPanel::EnableControl);
connect(digiSetting, &DigiSettingsPanel::UpdateScopeSetting, scope, &Scope::ReadScopeSettings);
connect(digiSetting, &DigiSettingsPanel::UpdateOtherPanels, scope, &Scope::ReadScopeSettings);
ConnectScopeAndSetting = true;
}
if( solarisSetting && !ConnectSettingAndSolaris){
connect(digiSetting, &DigiSettingsPanel::UpdateOtherPanels, solarisSetting, &SOLARISpanel::UpdatePanel);
connect(solarisSetting, &SOLARISpanel::UpdateOtherPanels, digiSetting, &DigiSettingsPanel::ShowSettingsToPanel);
ConnectSettingAndSolaris = true;
}
}else{
@ -758,6 +780,19 @@ void MainWindow::OpenDigitizersSettings(){
void MainWindow::OpenSOLARISpanel(){
solarisSetting->show();
solarisSetting->UpdatePanel();
if( digiSetting && !ConnectSettingAndSolaris){
connect(digiSetting, &DigiSettingsPanel::UpdateOtherPanels, solarisSetting, &SOLARISpanel::UpdatePanel);
connect(solarisSetting, &SOLARISpanel::UpdateOtherPanels, digiSetting, &DigiSettingsPanel::ShowSettingsToPanel);
ConnectSettingAndSolaris = true;
}
if( scope && !ConnectScopeAndSolaris){
connect(scope, &Scope::UpdateOtherPanels, solarisSetting, &SOLARISpanel::UpdatePanel);
connect(solarisSetting, &SOLARISpanel::UpdateOtherPanels, scope, &Scope::ReadScopeSettings);
ConnectScopeAndSolaris = true;
}
}
bool MainWindow::CheckSOLARISpanelOK(){
@ -855,6 +890,8 @@ bool MainWindow::CheckSOLARISpanelOK(){
solarisSetting = new SOLARISpanel(digi, nDigi, mapping, detType, detMaxID);
connect(solarisSetting, &SOLARISpanel::SendLogMsg, this, &MainWindow::LogMsg);
if( solarisSetting == nullptr) return false;
return true;
}
@ -932,7 +969,7 @@ void MainWindow::SetUpScalar(){
void MainWindow::DeleteTriggerLineEdit(){
if( leTrigger == NULL ) return;
if( leTrigger ) return;
for( int i = 0; i < nDigi; i++){
for( int ch = 0; ch < digi[i]->GetNChannels(); ch ++){

View File

@ -182,6 +182,10 @@ private:
unsigned long oldSavedCount[MaxNumberOfDigitizer][MaxNumberOfChannel];
unsigned long oldTimeStamp[MaxNumberOfDigitizer][MaxNumberOfChannel];
//@------ connection between pannels
bool ConnectScopeAndSetting;
bool ConnectScopeAndSolaris;
bool ConnectSettingAndSolaris;
};

View File

@ -85,7 +85,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat
digi[iDigi]->WriteValue(PHA::CH::ChannelEnable, "False", -1);
digi[iDigi]->WriteValue(PHA::CH::ChannelEnable, "True", ch);
ReadScopeSettings();
UpdateSettingsPanel();
UpdateOtherPanels();
digiMTX[iDigi].unlock();
});
@ -597,8 +597,8 @@ void Scope::ScopeMakeSpinBox(RSpinBox * &sb, QString str, QGridLayout *layout, i
sb->setStyleSheet("");
//TODO digiSettingPanel update setting
printf("UpdateSettingsPanel \n");
emit UpdateSettingsPanel();
printf("UpdateOtherPanels \n");
emit UpdateOtherPanels();
}else{
SendLogMsg(msg + "|Fail.");
@ -633,8 +633,8 @@ void Scope::ScopeMakeComoBox(RComboBox * &cb, QString str, QGridLayout *layout,
SendLogMsg(msg + "|OK.");
cb->setStyleSheet("");
//TODO digiSettingPanel update setting
printf("UpdateSettingsPanel \n");
emit UpdateSettingsPanel();
printf("UpdateOtherPanels \n");
emit UpdateOtherPanels();
}else{
SendLogMsg(msg + "|Fail.");
cb->setStyleSheet("color:red;");

View File

@ -132,7 +132,7 @@ signals:
void CloseWindow();
void SendLogMsg(const QString &msg);
void UpdateScalar();
void UpdateSettingsPanel();
void UpdateOtherPanels();
void TellSettingsPanelControlOnOff();
void TellACQOnOff(const bool onOff);