mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 15:20:02 +02:00
bug fixed: constant scan widget: use red label to indicate wrong to, numsteps neednt be an integer
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@72 af1100a4-978c-4157-bff7-07162d2ba061
This commit is contained in:
parent
d56780d906
commit
4143c648d8
@ -130,6 +130,10 @@ int RangeCheckSizeZero();
|
|||||||
* */
|
* */
|
||||||
int RangeCheckNumValid(int &num);
|
int RangeCheckNumValid(int &num);
|
||||||
|
|
||||||
|
/**returns fail if to is not exact
|
||||||
|
* */
|
||||||
|
int RangeCheckToValid();
|
||||||
|
|
||||||
/** Sets number of steps if from changed
|
/** Sets number of steps if from changed
|
||||||
* */
|
* */
|
||||||
void RangeFromChanged();
|
void RangeFromChanged();
|
||||||
|
@ -95,6 +95,7 @@ void qScanWidget::SetupWidgetWindow(){
|
|||||||
spinFrom->setDecimals(4);
|
spinFrom->setDecimals(4);
|
||||||
lblTo->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
lblTo->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||||
lblTo->setToolTip(rangeTip);
|
lblTo->setToolTip(rangeTip);
|
||||||
|
lblTo->setFixedWidth(18);
|
||||||
spinTo->setValue(1);
|
spinTo->setValue(1);
|
||||||
spinTo->setToolTip(rangeTip);
|
spinTo->setToolTip(rangeTip);
|
||||||
spinTo->setMaximum(1000000);
|
spinTo->setMaximum(1000000);
|
||||||
@ -227,11 +228,13 @@ void qScanWidget::EnableSizeWidgets(){
|
|||||||
radioFile->setToolTip(fileTip);
|
radioFile->setToolTip(fileTip);
|
||||||
dispFile->setToolTip(fileTip);
|
dispFile->setToolTip(fileTip);
|
||||||
btnFile->setToolTip(fileTip);
|
btnFile->setToolTip(fileTip);
|
||||||
|
|
||||||
|
lblTo->setPalette(normal);
|
||||||
|
lblTo->setText("to");
|
||||||
|
lblTo->setToolTip(rangeTip);
|
||||||
|
spinTo->setToolTip(rangeTip);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// Steps are enabled for all except Range step size
|
|
||||||
/**lblSteps->setEnabled(!radioRange->isChecked());
|
|
||||||
spinSteps->setEnabled(!radioRange->isChecked());*/
|
|
||||||
//range values
|
//range values
|
||||||
if(radioRange->isChecked()){
|
if(radioRange->isChecked()){
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
@ -257,6 +260,7 @@ void qScanWidget::EnableSizeWidgets(){
|
|||||||
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
||||||
|
|
||||||
spinSteps->setMinimum(2);
|
spinSteps->setMinimum(2);
|
||||||
|
RangeCheckToValid();
|
||||||
SetRangeSteps();
|
SetRangeSteps();
|
||||||
}
|
}
|
||||||
//custom values
|
//custom values
|
||||||
@ -272,6 +276,11 @@ void qScanWidget::EnableSizeWidgets(){
|
|||||||
dispFile->setToolTip(fileTip);
|
dispFile->setToolTip(fileTip);
|
||||||
btnFile->setToolTip(fileTip);
|
btnFile->setToolTip(fileTip);
|
||||||
|
|
||||||
|
lblTo->setPalette(normal);
|
||||||
|
lblTo->setText("to");
|
||||||
|
lblTo->setToolTip(rangeTip);
|
||||||
|
spinTo->setToolTip(rangeTip);
|
||||||
|
|
||||||
//change it back as this list is what will be loaded.
|
//change it back as this list is what will be loaded.
|
||||||
//also numstpes could have been changed in other modes too
|
//also numstpes could have been changed in other modes too
|
||||||
disconnect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
disconnect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
||||||
@ -304,6 +313,11 @@ void qScanWidget::EnableSizeWidgets(){
|
|||||||
radioCustom->setToolTip(customTip);
|
radioCustom->setToolTip(customTip);
|
||||||
comboCustom->setToolTip(customTip);
|
comboCustom->setToolTip(customTip);
|
||||||
|
|
||||||
|
lblTo->setPalette(normal);
|
||||||
|
lblTo->setText("to");
|
||||||
|
lblTo->setToolTip(rangeTip);
|
||||||
|
spinTo->setToolTip(rangeTip);
|
||||||
|
|
||||||
stackedLayout->setCurrentIndex(FileValues);
|
stackedLayout->setCurrentIndex(FileValues);
|
||||||
SetFileSteps();
|
SetFileSteps();
|
||||||
}
|
}
|
||||||
@ -335,9 +349,6 @@ void qScanWidget::SetMode(int mode){
|
|||||||
|
|
||||||
// If anything other than None is selected
|
// If anything other than None is selected
|
||||||
if(mode){
|
if(mode){
|
||||||
// Steps are enabled for all except Range step size
|
|
||||||
/**lblSteps->setEnabled(!radioRange->isChecked());
|
|
||||||
spinSteps->setEnabled(!radioRange->isChecked());*/
|
|
||||||
lblSteps->setEnabled(true);
|
lblSteps->setEnabled(true);
|
||||||
spinSteps->setEnabled(true);
|
spinSteps->setEnabled(true);
|
||||||
// Custom Script only enables the first layout with addnl parameters etc
|
// Custom Script only enables the first layout with addnl parameters etc
|
||||||
@ -552,7 +563,7 @@ void qScanWidget::SetNSteps(){
|
|||||||
disconnect(spinSize, SIGNAL(valueChanged(double)), this, SLOT(RangeSizeChanged()));
|
disconnect(spinSize, SIGNAL(valueChanged(double)), this, SLOT(RangeSizeChanged()));
|
||||||
spinSize->setValue( (spinTo->value()-spinFrom->value()) / (spinSteps->value()-1));
|
spinSize->setValue( (spinTo->value()-spinFrom->value()) / (spinSteps->value()-1));
|
||||||
connect(spinSize, SIGNAL(valueChanged(double)), this, SLOT(RangeSizeChanged()));
|
connect(spinSize, SIGNAL(valueChanged(double)), this, SLOT(RangeSizeChanged()));
|
||||||
|
RangeCheckToValid();
|
||||||
SetRangeSteps();
|
SetRangeSteps();
|
||||||
}else if(radioCustom->isChecked()){
|
}else if(radioCustom->isChecked()){
|
||||||
comboCustom->setMaxCount(spinSteps->value());
|
comboCustom->setMaxCount(spinSteps->value());
|
||||||
@ -586,13 +597,11 @@ int qScanWidget::RangeCheckNumValid(int &num){
|
|||||||
cout << "Entering RangeCheckNumValid()" << endl;
|
cout << "Entering RangeCheckNumValid()" << endl;
|
||||||
#endif
|
#endif
|
||||||
double div = abs(spinTo->value()-spinFrom->value())/(abs(spinSize->value()));
|
double div = abs(spinTo->value()-spinFrom->value())/(abs(spinSize->value()));
|
||||||
cout<<"div:"<<div<<endl;
|
|
||||||
|
|
||||||
//num = (to-from)/size +1 , so (to-from)/size should be an integer and >=1
|
//num = (to-from)/size +1
|
||||||
if((floor(div)==div) && (div>0)){
|
|
||||||
num = (int)(div) + 1;
|
num = (int)(div) + 1;
|
||||||
return qDefs::OK;
|
|
||||||
}
|
if(num>=2) return qDefs::OK;
|
||||||
|
|
||||||
return qDefs::FAIL;
|
return qDefs::FAIL;
|
||||||
}
|
}
|
||||||
@ -601,6 +610,34 @@ int qScanWidget::RangeCheckNumValid(int &num){
|
|||||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
int qScanWidget::RangeCheckToValid(){
|
||||||
|
#ifdef VERYVERBOSE
|
||||||
|
cout << "Entering RangeCheckToValid()" << endl;
|
||||||
|
#endif
|
||||||
|
double to = (spinSize->value() * spinSteps->value()) - spinSize->value() + spinFrom->value();
|
||||||
|
|
||||||
|
//not exact value
|
||||||
|
if (abs(to-spinTo->value())>0.01){
|
||||||
|
lblTo->setPalette(red);
|
||||||
|
lblTo->setText("to*");
|
||||||
|
QString tip = rangeTip + QString("<br><br><font color=\"red\"><nobr>"
|
||||||
|
"<b>To</b> is not exact. Entering <b>Size</b> should recalculate <b>To</b>.</nobr></font>");
|
||||||
|
lblTo->setToolTip(tip);
|
||||||
|
spinTo->setToolTip(tip);
|
||||||
|
return qDefs::FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
lblTo->setPalette(normal);
|
||||||
|
lblTo->setText("to");
|
||||||
|
lblTo->setToolTip(rangeTip);
|
||||||
|
spinTo->setToolTip(rangeTip);
|
||||||
|
return qDefs::OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
void qScanWidget::RangeFromChanged(){
|
void qScanWidget::RangeFromChanged(){
|
||||||
#ifdef VERYVERBOSE
|
#ifdef VERYVERBOSE
|
||||||
cout << "Entering RangeFromChanged()" << endl;
|
cout << "Entering RangeFromChanged()" << endl;
|
||||||
@ -618,7 +655,8 @@ void qScanWidget::RangeFromChanged(){
|
|||||||
qDefs::Message(qDefs::WARNING,"<nobr><b>From</b> cannot be equal to <b>To</b>. Changing <b>From</b> back to previous value.</nobr>","Scan");
|
qDefs::Message(qDefs::WARNING,"<nobr><b>From</b> cannot be equal to <b>To</b>. Changing <b>From</b> back to previous value.</nobr>","Scan");
|
||||||
//check size validity
|
//check size validity
|
||||||
else if(RangeCheckNumValid(numSteps)==qDefs::FAIL)
|
else if(RangeCheckNumValid(numSteps)==qDefs::FAIL)
|
||||||
qDefs::Message(qDefs::WARNING,"<nobr><b>Number of Steps</b> must be >= 2. Changing <b>From</b> back to previous value.</nobr>","Scan");
|
qDefs::Message(qDefs::WARNING,"<nobr><b>Number of Steps</b> = 1 + (<b> To </b> - <b> From </b>) / <b>Size</b>.</nobr><br>"
|
||||||
|
"<b>Number of Steps</b> must be >= 2. Changing <b>From</b> back to previous value.</nobr>","Scan");
|
||||||
else change = true;
|
else change = true;
|
||||||
|
|
||||||
//change it back from = to - size*num + size
|
//change it back from = to - size*num + size
|
||||||
@ -640,6 +678,7 @@ void qScanWidget::RangeFromChanged(){
|
|||||||
spinSize->setValue(-1*(spinSize->value()));
|
spinSize->setValue(-1*(spinSize->value()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RangeCheckToValid();
|
||||||
SetRangeSteps();
|
SetRangeSteps();
|
||||||
|
|
||||||
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
||||||
@ -667,7 +706,8 @@ void qScanWidget::RangeToChanged(){
|
|||||||
qDefs::Message(qDefs::WARNING,"<nobr><b>From</b> cannot be equal to <b>To</b>. Changing <b>To</b> back to previous value.</nobr>","Scan");
|
qDefs::Message(qDefs::WARNING,"<nobr><b>From</b> cannot be equal to <b>To</b>. Changing <b>To</b> back to previous value.</nobr>","Scan");
|
||||||
//check size validity
|
//check size validity
|
||||||
else if(RangeCheckNumValid(numSteps)==qDefs::FAIL)
|
else if(RangeCheckNumValid(numSteps)==qDefs::FAIL)
|
||||||
qDefs::Message(qDefs::WARNING,"<nobr><b>Number of Steps</b> must be >= 2. Changing <b>To</b> back to previous value.</nobr>","Scan");
|
qDefs::Message(qDefs::WARNING,"<nobr><b>Number of Steps</b> = 1 + (<b> To </b> - <b> From </b>) / <b>Size</b>.</nobr><br>"
|
||||||
|
"<b>Number of Steps</b> must be >= 2. Changing <b>To</b> back to previous value.</nobr>","Scan");
|
||||||
else change = true;
|
else change = true;
|
||||||
|
|
||||||
//change it back to = size*num - size + from
|
//change it back to = size*num - size + from
|
||||||
@ -690,6 +730,7 @@ void qScanWidget::RangeToChanged(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RangeCheckToValid();
|
||||||
SetRangeSteps();
|
SetRangeSteps();
|
||||||
|
|
||||||
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
||||||
@ -717,7 +758,8 @@ void qScanWidget::RangeSizeChanged(){
|
|||||||
qDefs::Message(qDefs::WARNING,"<nobr><b>Size</b> cannot be 0. Changing <b>Size</b> back to previous value.</nobr>","Scan");
|
qDefs::Message(qDefs::WARNING,"<nobr><b>Size</b> cannot be 0. Changing <b>Size</b> back to previous value.</nobr>","Scan");
|
||||||
//check size validity
|
//check size validity
|
||||||
else if(RangeCheckNumValid(numSteps)==qDefs::FAIL)
|
else if(RangeCheckNumValid(numSteps)==qDefs::FAIL)
|
||||||
qDefs::Message(qDefs::WARNING,"<nobr><b>Number of Steps</b> must be >= 2. Changing <b>To</b> back to previous value.</nobr>","Scan");
|
qDefs::Message(qDefs::WARNING,"<nobr><b>Number of Steps</b> = 1 + (<b> To </b> - <b> From </b>) / <b>Size</b>.</nobr><br>"
|
||||||
|
"<b>Number of Steps</b> must be >= 2. Changing <b>Size</b> back to previous value.</nobr>","Scan");
|
||||||
else change = true;
|
else change = true;
|
||||||
|
|
||||||
//change it back size = (to-from)/(num-1)
|
//change it back size = (to-from)/(num-1)
|
||||||
@ -732,8 +774,13 @@ void qScanWidget::RangeSizeChanged(){
|
|||||||
spinSteps->setValue(numSteps);
|
spinSteps->setValue(numSteps);
|
||||||
//in case size changed to negative
|
//in case size changed to negative
|
||||||
spinTo->setValue((spinSize->value() * spinSteps->value()) - spinSize->value() + spinFrom->value());
|
spinTo->setValue((spinSize->value() * spinSteps->value()) - spinSize->value() + spinFrom->value());
|
||||||
|
lblTo->setPalette(normal);
|
||||||
|
lblTo->setText("to");
|
||||||
|
lblTo->setToolTip(rangeTip);
|
||||||
|
spinTo->setToolTip(rangeTip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RangeCheckToValid();
|
||||||
SetRangeSteps();
|
SetRangeSteps();
|
||||||
|
|
||||||
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
connect(spinSteps, SIGNAL(valueChanged(int)), this, SLOT(SetNSteps()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user