All the ranges of the axes work properly without zooming in and out each time

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@11 af1100a4-978c-4157-bff7-07162d2ba061
This commit is contained in:
l_maliakal_d
2012-06-19 15:01:40 +00:00
parent 8246154032
commit 69e6500522
22 changed files with 521 additions and 412 deletions

View File

@ -27,7 +27,7 @@ int main (int argc, char **argv) {
QApplication *theApp = new QApplication(argc, argv);
qDetectorMain *det=new qDetectorMain(argc, argv, theApp,0);
det->show();
theApp->connect( theApp, SIGNAL(lastWindowClosed()), theApp, SLOT(quit()));
//theApp->connect( theApp, SIGNAL(lastWindowClosed()), theApp, SLOT(quit()));
return theApp->exec();
}
@ -355,6 +355,7 @@ void qDetectorMain::resizeEvent(QResizeEvent* event){
centralwidget->setMaximumHeight(heightCentralWidget);
}
}
event->accept();
#ifdef VERBOSE
cout<<"height:"<<height()<<endl;
cout<<"dockWidgetPlot height:"<<dockWidgetPlot->height()<<endl;

View File

@ -7,7 +7,6 @@
/** Qt Project Class Headers */
#include "qDrawPlot.h"
#include "qCloneWidget.h"
#include "SlsQt2DPlotLayout.h"
/** Project Class Headers */
#include "slsDetector.h"
#include "multiSlsDetector.h"
@ -35,18 +34,23 @@ int qDrawPlot::number_of_exposures;
//double acquisitionTime;
pthread_mutex_t qDrawPlot::last_image_complete_mutex;
//std::string imageTitle;
std::string qDrawPlot::histTitle[MAX_1DPLOTS];
unsigned int qDrawPlot::plot_in_scope;
unsigned int qDrawPlot::nPixelsX;
unsigned int qDrawPlot::nPixelsY;
unsigned int qDrawPlot::lastImageNumber;
string qDrawPlot::histTitle[MAX_1DPLOTS];
unsigned int qDrawPlot::nHists;
int qDrawPlot::histNBins;
double* qDrawPlot::histXAxis;
double* qDrawPlot::histYAxis[MAX_1DPLOTS];
double* qDrawPlot::lastImageArray;
double* qDrawPlot::yvalues[MAX_1DPLOTS];
double* qDrawPlot::histYAxis[MAX_1DPLOTS];
string qDrawPlot::imageTitle;
double* qDrawPlot::lastImageArray;
double* qDrawPlot::image_data;
bool qDrawPlot::gui_acquisition_thread_running;
int qDrawPlot::persistency;
int qDrawPlot::currentPersistency;
@ -160,9 +164,13 @@ void qDrawPlot::SetupWidgetWindow(){
void qDrawPlot::Initialization(){
connect(this, SIGNAL(InterpolateSignal(bool)), plot2D, SIGNAL(InterpolateSignal(bool)));
connect(this, SIGNAL(ContourSignal(bool)), plot2D, SIGNAL(ContourSignal(bool)));
connect(this, SIGNAL(LogzSignal(bool)), plot2D, SLOT(SetZScaleToLog(bool)));
connect(this, SIGNAL(InterpolateSignal(bool)),plot2D, SIGNAL(InterpolateSignal(bool)));
connect(this, SIGNAL(ContourSignal(bool)), plot2D, SIGNAL(ContourSignal(bool)));
connect(this, SIGNAL(LogzSignal(bool)), plot2D, SLOT(SetZScaleToLog(bool)));
connect(this, SIGNAL(EnableZRangeSignal(bool)),plot2D, SLOT(EnableZRange(bool)));
connect(this, SIGNAL(SetZRangeSignal(double,double)), plot2D, SLOT(SetZRange(double,double)));
}
@ -226,7 +234,6 @@ int qDrawPlot::ResetDaqForGui(){
bool qDrawPlot::StartOrStopThread(bool start){
static pthread_t gui_acquisition_thread;
static pthread_t gui_start_acquire_thread;
static pthread_mutex_t gui_acquisition_start_stop_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&gui_acquisition_start_stop_mutex);
@ -235,7 +242,7 @@ bool qDrawPlot::StartOrStopThread(bool start){
cout<<"Stopping current acquisition thread ...."<<endl;
stop_signal = 1;
myDet->stopAcquisition();
//pthread_join(gui_acquisition_thread,NULL); //wait until he's finished, ie. exits
pthread_join(gui_acquisition_thread,NULL); //wait until he's finished, ie. exits
gui_acquisition_thread_running = 0;
}
@ -253,12 +260,13 @@ bool qDrawPlot::StartOrStopThread(bool start){
if(!histYAxis[0]) histYAxis[0] = new double [nPixelsX];
Clear1DPlot();
if(plot_in_scope==1) Clear1DPlot();
cout<<"Starting new acquisition thread ...."<<endl;
/** Setting the callback function to get data from software client*/
myDet->registerDataCallback(&(GetDataCallBack));
/** Start acquiring data from server */
pthread_create(&gui_start_acquire_thread, NULL,DataStartAcquireThread, (void*) this);
pthread_create(&gui_acquisition_thread, NULL,DataStartAcquireThread, (void*) this);
/** This is later reset to zero when all the plotting is done */
gui_acquisition_thread_running=1;
cout<<"Started acquiring"<<endl;
}
@ -267,6 +275,7 @@ bool qDrawPlot::StartOrStopThread(bool start){
}
void* qDrawPlot::DataStartAcquireThread(void *this_pointer){
((qDrawPlot*)this_pointer)->myDet->acquire(1);
return this_pointer;
@ -274,6 +283,7 @@ void* qDrawPlot::DataStartAcquireThread(void *this_pointer){
int qDrawPlot::GetDataCallBack(detectorData *data){
#ifdef VERYVERBOSE
cout<<"Entering GetDataCallBack function"<<endl;
@ -286,45 +296,54 @@ int qDrawPlot::GetDataCallBack(detectorData *data){
return 0;
}
/** Persistency */
if(currentPersistency < persistency)currentPersistency++;
else currentPersistency=persistency;
for(int i=currentPersistency;i>0;i--)
memcpy(yvalues[i],yvalues[i-1],nPixelsX*sizeof(double));
nHists = currentPersistency+1;
/** Get data from client */
memcpy(yvalues[0],data->values,nPixelsX*sizeof(double));
/** Get data from client */
/**1d*/
// if(plot_in_scope==1){
if(plot_in_scope==1){
/** Persistency */
if(currentPersistency < persistency)currentPersistency++;
else currentPersistency=persistency;
for(int i=currentPersistency;i>0;i--)
memcpy(yvalues[i],yvalues[i-1],nPixelsX*sizeof(double));
nHists = currentPersistency+1;
memcpy(yvalues[0],data->values,nPixelsX*sizeof(double));
}
/**2d*/
else{
for(unsigned int px=0;px<nPixelsX;px++)
for(unsigned int py=0;py<nPixelsY;py++)
image_data[py*nPixelsX+px] = sqrt(pow(currentFrame+1,2)*pow(double(px)-nPixelsX/2,2)/pow(nPixelsX/2,2)/pow(number_of_exposures+1,2) + pow(double(py)-nPixelsY/2,2)/pow(nPixelsY/2,2))/sqrt(2);
}
if((currentFrame)<(number_of_exposures)){
#ifdef VERYVERBOSE
cout<<"Reading in image: "<<currentFrame+1<<endl;
#endif
if(!pthread_mutex_trylock(&(last_image_complete_mutex))){
char temp_title[2000];
/** only if you got the lock, do u need to remember lastimagenumber to plot*/
lastImageNumber= currentFrame+1;
/** Titles*/
stringstream s;
s<<"Frame "<<currentFrame;
histTitle[0]=s.str();
/** copy data*/
//memcpy(histXAxis, xvalues,nPixelsX*sizeof(double));
for(int i=currentPersistency;i>0;i--)
memcpy(histYAxis[i],histYAxis[i-1],nPixelsX*sizeof(double));
memcpy(histYAxis[0],yvalues[0],nPixelsX*sizeof(double));
/**1d*/
if(plot_in_scope==1){
/** Titles*/
sprintf(temp_title,"Frame %d",currentFrame); histTitle[0] = temp_title;
/** copy data*/
//memcpy(histXAxis, xvalues,nPixelsX*sizeof(double));
for(int i=currentPersistency;i>0;i--)
memcpy(histYAxis[i],histYAxis[i-1],nPixelsX*sizeof(double));
memcpy(histYAxis[0],yvalues[0],nPixelsX*sizeof(double));
}
/**2d*/
else{
sprintf(temp_title,"Image Number %d",currentFrame); imageTitle = temp_title;
memcpy(lastImageArray,image_data,nPixelsX*nPixelsY*sizeof(double));
}
pthread_mutex_unlock(&(last_image_complete_mutex));
}
currentFrame++;
}
//}
///**2d*/
//else{
// ;
//}
#ifdef VERYVERBOSE
cout<<"Exiting GetDataCallBack function"<<endl;
#endif
@ -332,15 +351,6 @@ int qDrawPlot::GetDataCallBack(detectorData *data){
}
void qDrawPlot::SetPersistency(int val){
for(int i=0;i<=val;i++){
if(!yvalues[i]) yvalues[i] = new double [nPixelsX];
if(!histYAxis[i]) histYAxis[i] = new double [nPixelsX];
}
persistency = val;
}
void qDrawPlot::setNumMeasurements(int num){
numberOfMeasurements = num;
@ -380,7 +390,6 @@ void qDrawPlot::Clear1DPlot(){
void qDrawPlot::UpdatePlot(){
//emit UpdatingPlot();
static int last_plot_number = 0;
plot_update_timer->stop();
@ -395,7 +404,7 @@ void qDrawPlot::UpdatePlot(){
Clear1DPlot();
plot1D->SetXTitle(histXAxisTitle.toAscii().constData());
plot1D->SetYTitle(histYAxisTitle.toAscii().constData());
for(int hist_num=0;hist_num<nHists;hist_num++){
for(int hist_num=0;hist_num<(int)nHists;hist_num++){
SlsQtH1D* h;
if(hist_num+1>plot1D_hists.size()){
plot1D_hists.append(h=new SlsQtH1D("1d plot",histNBins,histXAxis,GetHistYAxis(hist_num)));
@ -408,16 +417,12 @@ void qDrawPlot::UpdatePlot(){
h->Attach(plot1D);
}
//plot1D->UnZoom();
//if(first){plot1D->UnZoom();first = !first;}
//plot1D->SetZoom(double xmin,double ymin,double x_width,double y_width);
}
}
//2-d plot stuff
if(lastImageArray){
if(lastImageNumber&&last_plot_number!=lastImageNumber && //there is a new plot
if(lastImageNumber&&last_plot_number!=(int)lastImageNumber && //there is a new plot
nPixelsX>0&&nPixelsY>0){
plot2D->GetPlot()->SetData(nPixelsX,-0.5,nPixelsX-0.5,nPixelsY,-0.5,nPixelsY-0.5,lastImageArray);
//as it inherits a widget
@ -532,6 +537,17 @@ void qDrawPlot::SavePlot(QString FName){
void qDrawPlot::SetPersistency(int val){
for(int i=0;i<=val;i++){
if(!yvalues[i]) yvalues[i] = new double [nPixelsX];
if(!histYAxis[i]) histYAxis[i] = new double [nPixelsX];
}
persistency = val;
}
void qDrawPlot::EnablePlot(bool enable){
#ifdef VERBOSE
cout<<"Plotting set to:"<<enable<<endl;
@ -547,6 +563,6 @@ void qDrawPlot::EnablePlot(bool enable){
void qDrawPlot::DisableZoom(bool disable){
if(plot_in_scope==1)
plot1D->DisableZoom(disable);
///disable zoom
else
plot2D->GetPlot()->DisableZoom(disable);
}

View File

@ -102,14 +102,6 @@ void qTabActions::Initialization(){
void qTabActions::Enable(bool enable){
}
void qTabActions::Expand(QAbstractButton *button ){
int index = group->id(button);
/** Collapse */

View File

@ -47,9 +47,3 @@ void qTabDeveloper::Initialization(){
void qTabDeveloper::Enable(bool enable){
//this->setEnabled(enable);
}

View File

@ -76,32 +76,29 @@ void qTabMeasurement::SetupWidgetWindow(){
switch(myDet->getDetectorsType()){
case slsDetectorDefs::MYTHEN:
item[(int)Gated]->setEnabled(true);
item[(int)Trigger_Exp_Series]->setEnabled(true);
item[(int)Trigger_Frame]->setEnabled(false);
item[(int)Trigger_Readout]->setEnabled(true);
item[(int)Gated]->setEnabled(true);
item[(int)Gated_Start]->setEnabled(true);
item[(int)Trigger_Window]->setEnabled(false);
break;
case slsDetectorDefs::EIGER:
item[(int)Gated]->setEnabled(false);
item[(int)Trigger_Exp_Series]->setEnabled(true);
item[(int)Trigger_Frame]->setEnabled(true);
item[(int)Trigger_Readout]->setEnabled(false);
item[(int)Gated]->setEnabled(false);
item[(int)Gated_Start]->setEnabled(false);
item[(int)Trigger_Window]->setEnabled(true);
break;
case slsDetectorDefs::GOTTHARD:
item[(int)Gated]->setEnabled(false);
item[(int)Trigger_Exp_Series]->setEnabled(true);
item[(int)Trigger_Frame]->setEnabled(false);
item[(int)Trigger_Readout]->setEnabled(false);
item[(int)Gated]->setEnabled(false);
item[(int)Gated_Start]->setEnabled(false);
item[(int)Trigger_Window]->setEnabled(false);
break;
/* case slsDetectorDefs::PICASSO:
case slsDetectorDefs::PILATUS:
case slsDetectorDefs::AGIPD:*/
default:
cout<<"ERROR: Detector Type is Generic"<<endl;
exit(-1);
@ -190,19 +187,6 @@ void qTabMeasurement::Enable(bool enable){
void qTabMeasurement::UpdateFinished(){
disconnect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition()));
btnStartStop->setText("Start");
//btnStartStop->setStyleSheet("color:green");
//btnStartStop->setStyleSheet("background:rgb(239,239,239)");
Enable(1);
connect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition()));
UpdateProgress();
progressTimer->stop();
}
void qTabMeasurement::setFileName(const QString& fName){
myDet->setFileName(fName.toAscii().data());
#ifdef VERBOSE
@ -252,6 +236,29 @@ void qTabMeasurement::startStopAcquisition(){
void qTabMeasurement::UpdateFinished(){
disconnect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition()));
btnStartStop->setText("Start");
//btnStartStop->setStyleSheet("color:green");
//btnStartStop->setStyleSheet("background:rgb(239,239,239)");
Enable(1);
connect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition()));
UpdateProgress();
progressTimer->stop();
}
void qTabMeasurement::UpdateProgress(){
progressBar->setValue(myPlot->GetProgress());
lblProgressIndex->setText(QString::number(myDet->getFileIndex()));
}
void qTabMeasurement::setNumFrames(int val){
myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,val);
#ifdef VERBOSE
@ -263,8 +270,8 @@ void qTabMeasurement::setNumFrames(int val){
void qTabMeasurement::setExposureTime(){
int64_t exptimeNS;
/** Get the 64 bit value of timer**/
exptimeNS = qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
/** Get the value of timer in ns **/
exptimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
#ifdef VERBOSE
cout<<"Setting acquisition time to " << exptimeNS << " clocks" << endl;
#endif
@ -272,7 +279,7 @@ void qTabMeasurement::setExposureTime(){
if(lblPeriod->isEnabled()){
int64_t acqtimeNS;
acqtimeNS = qDefs::getNSTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value());
acqtimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value());
if(exptimeNS>acqtimeNS) {
lblNote->show();
lblPeriod->setPalette(lblNote->palette());
@ -290,15 +297,15 @@ void qTabMeasurement::setExposureTime(){
void qTabMeasurement::setAcquisitionPeriod(){
int64_t acqtimeNS;
/** Get the 64 bit value of timer**/
acqtimeNS = qDefs::getNSTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value());
/** Get the value of timer in ns **/
acqtimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value());
#ifdef VERBOSE
cout<<"Setting frame period between exposures to " << acqtimeNS << " clocks" << endl;
#endif
myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,acqtimeNS);
int64_t exptimeNS;
exptimeNS = qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
exptimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
if(exptimeNS>acqtimeNS){
lblNote->show();
lblPeriod->setPalette(lblNote->palette());
@ -327,8 +334,8 @@ void qTabMeasurement::setNumTriggers(int val){
void qTabMeasurement::setDelay(){
int64_t exptimeNS;
/** Get the 64 bit value of timer**/
exptimeNS = qDefs::getNSTime((qDefs::timeUnit)comboDelayUnit->currentIndex(),spinDelay->value());
/** Get the value of timer in ns **/
exptimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboDelayUnit->currentIndex(),spinDelay->value());
#ifdef VERBOSE
cout<<"Setting delay after trigger to " << exptimeNS << " clocks" << endl;
#endif
@ -356,13 +363,6 @@ void qTabMeasurement::setNumProbes(int val){
}
void qTabMeasurement::UpdateProgress(){
progressBar->setValue(myPlot->GetProgress());
lblProgressIndex->setText(QString::number(myDet->getFileIndex()));
}
void qTabMeasurement::setTimingMode(int mode){
#ifdef VERBOSE
@ -381,43 +381,43 @@ void qTabMeasurement::setTimingMode(int mode){
switch(mode){
case None:
case None:/** Exposure Time */
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
break;
case Auto:
case Auto:/** Number of Frames, Exposure Time, Acquisition Period */
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
break;
case Gated:
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
break;
case Trigger_Exp_Series:
case Trigger_Exp_Series:/** Number of Frames, Exposure Time, Acquisition Period, Number of Triggers, Delay */
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
break;
case Trigger_Readout:
case Trigger_Frame:/** Exposure Time, Number of Triggers */
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
break;
case Trigger_Readout:/** Number of Frames, Exposure Time, Acquisition Period, Delay */
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
break;
case Gated_Start:
case Gated:/** Number of Frames, Number of Gates */
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
break;
case Gated_Start:/** Number of Frames, Exposure Time, Acquisition Period, Number of Triggers, Number of Gates */
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
break;
case Trigger_Frame:
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
break;
case Trigger_Window:
case Trigger_Window:/** Number of Triggers */
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
break;
default:
@ -425,7 +425,7 @@ void qTabMeasurement::setTimingMode(int mode){
exit(-1);
}
if(mode!=None){
if(mode!=None){/** Number of Probes */
if(myDet->getDetectorsType()==slsDetectorDefs::MYTHEN){
lblNumProbes->setEnabled(true); spinNumProbes->setEnabled(true);
}
@ -466,8 +466,8 @@ void qTabMeasurement::setTimingMode(int mode){
comboPeriodUnit->setCurrentIndex(qDefs::SECONDS);
int64_t exptimeNS,acqtimeNS;
exptimeNS = qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
acqtimeNS = qDefs::getNSTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value());
exptimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
acqtimeNS = (int64_t)qDefs::getNSTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value());
if(exptimeNS>acqtimeNS) {
lblNote->show();
lblPeriod->setPalette(lblNote->palette());

View File

@ -30,14 +30,17 @@ QString qTabPlot::defaultImageZAxisTitle("Intensity");
qTabPlot::qTabPlot(QWidget *parent,slsDetectorUtils*& detector, qDrawPlot*& plot):QWidget(parent),myDet(detector),myPlot(plot){
setupUi(this);
if(myDet)
{
// wherever you choose plot do all these steps
//This also selects the text if unchecked
//includes setupwidgetwindow
//SelectPlot(1);
//switch(myDet->detectorytype)
Select1DPlot(true);
if(myDet){
SetupWidgetWindow();
/** Depending on whether the detector is 1d or 2d*/
switch(myDet->getDetectorsType()){
case slsDetectorDefs::MYTHEN: Select1DPlot(true); break;
case slsDetectorDefs::EIGER: Select1DPlot(false);break;
case slsDetectorDefs::GOTTHARD: Select1DPlot(true);break;
default:
cout<<"ERROR: Detector Type is Generic"<<endl;
exit(-1);
}
Initialization();
}
}
@ -67,12 +70,12 @@ void qTabPlot::SetupWidgetWindow(){
dispXMax->setEnabled(false);
dispYMax->setEnabled(false);
dispZMax->setEnabled(false);
/* dispXMin->setValidator(new QDoubleValidator(dispXMin));
dispXMin->setValidator(new QDoubleValidator(dispXMin));
dispYMin->setValidator(new QDoubleValidator(dispYMin));
dispZMin->setValidator(new QDoubleValidator(dispZMin));
dispXMax->setValidator(new QDoubleValidator(dispXMax));
dispYMax->setValidator(new QDoubleValidator(dispYMax));
dispZMax->setValidator(new QDoubleValidator(dispZMax));*/
dispZMax->setValidator(new QDoubleValidator(dispZMax));
}
@ -119,6 +122,8 @@ void qTabPlot::Initialization(){
connect(chkInterpolate, SIGNAL(toggled(bool)),myPlot, SIGNAL(InterpolateSignal(bool)));
connect(chkContour, SIGNAL(toggled(bool)),myPlot, SIGNAL(ContourSignal(bool)));
connect(chkLogz, SIGNAL(toggled(bool)),myPlot, SIGNAL(LogzSignal(bool)));
/** Plot Axis **/
connect(chkTitle, SIGNAL(toggled(bool)), this, SLOT(EnableTitles()));
connect(chkXAxis, SIGNAL(toggled(bool)), this, SLOT(EnableTitles()));
@ -133,15 +138,17 @@ void qTabPlot::Initialization(){
connect(chkXMax, SIGNAL(toggled(bool)), this, SLOT(EnableRange()));
connect(chkYMin, SIGNAL(toggled(bool)), this, SLOT(EnableRange()));
connect(chkYMax, SIGNAL(toggled(bool)), this, SLOT(EnableRange()));
connect(chkZMin, SIGNAL(toggled(bool)), this, SLOT(EnableRange()));
connect(chkZMax, SIGNAL(toggled(bool)), this, SLOT(EnableRange()));
connect(chkZMin, SIGNAL(toggled(bool)), this, SLOT(EnableZRange()));
connect(chkZMax, SIGNAL(toggled(bool)), this, SLOT(EnableZRange()));
connect(this, SIGNAL(EnableZRangeSignal(bool)), myPlot, SIGNAL(EnableZRangeSignal(bool)));
connect(dispXMin, SIGNAL(returnPressed()), this, SLOT(SetAxesRange()));
connect(dispXMax, SIGNAL(returnPressed()), this, SLOT(SetAxesRange()));
connect(dispYMin, SIGNAL(returnPressed()), this, SLOT(SetAxesRange()));
connect(dispYMax, SIGNAL(returnPressed()), this, SLOT(SetAxesRange()));
connect(dispZMin, SIGNAL(returnPressed()), this, SLOT(SetAxesRange()));
connect(dispZMax, SIGNAL(returnPressed()), this, SLOT(SetAxesRange()));
connect(dispZMin, SIGNAL(returnPressed()), this, SLOT(SetZRange()));
connect(dispZMax, SIGNAL(returnPressed()), this, SLOT(SetZRange()));
connect(this, SIGNAL(SetZRangeSignal(double,double)),myPlot, SIGNAL(SetZRangeSignal(double,double)));
/** Common Buttons*/
connect(btnClear, SIGNAL(clicked()), myPlot, SLOT(Clear1DPlot()));
@ -169,7 +176,6 @@ void qTabPlot::EnablePersistency(bool enable){
}
void qTabPlot::SetTitles(){
int oneD = box1D->isEnabled();
/** Plot Title*/
@ -236,87 +242,60 @@ void qTabPlot::EnableTitles(){
void qTabPlot::EnableRange(){
bool disableZoom = false;
if(!chkXMin->isChecked()) {dispXMin->setText(""); dispXMin->setEnabled(false);}
else {disableZoom = true; dispXMin->setEnabled(true); }
if(!chkXMax->isChecked()) {dispXMax->setText(""); dispXMax->setEnabled(false);}
else {disableZoom = true; dispXMax->setEnabled(true); }
if(!chkYMin->isChecked()) {dispYMin->setText(""); dispYMin->setEnabled(false);}
else {disableZoom = true; dispYMin->setEnabled(true); }
if(!chkYMax->isChecked()) {dispYMax->setText(""); dispYMax->setEnabled(false);}
else {disableZoom = true; dispYMax->setEnabled(true); }
if(!chkZMin->isChecked()) {dispZMin->setText(""); dispZMin->setEnabled(false);}
else {disableZoom = true; dispZMin->setEnabled(true); }
if(!chkZMax->isChecked()) {dispZMax->setText(""); dispZMax->setEnabled(false);}
else {disableZoom = true; dispZMax->setEnabled(true); }
if(!chkXMin->isChecked()) dispXMin->setEnabled(false);
else{disableZoom = true; dispXMin->setEnabled(true); }
if(!chkXMax->isChecked()) dispXMax->setEnabled(false);
else{disableZoom = true; dispXMax->setEnabled(true); }
if(!chkYMin->isChecked()) dispYMin->setEnabled(false);
else{disableZoom = true; dispYMin->setEnabled(true); }
if(!chkYMax->isChecked()) dispYMax->setEnabled(false);
else{disableZoom = true; dispYMax->setEnabled(true); }
myPlot->DisableZoom(disableZoom);
emit DisableZoomSignal(disableZoom);
SetAxesRange();
}
void qTabPlot::SetAxesRange(){
double xmin,xmax,ymin,ymax,zmin,zmax;
int oneD = box1D->isEnabled();
//should be filled for 2d as well
if(!dispXMin->text().isEmpty()) xmin = dispXMin->text().toDouble();
else { if(oneD) xmin = myPlot->GetHistXAxisLowerBound();}
if(!dispXMax->text().isEmpty()) xmax = dispXMax->text().toDouble();
else { if(oneD) xmax = myPlot->GetHistXAxisUpperBound();}
if(!dispYMin->text().isEmpty()) ymin = dispYMin->text().toDouble();
else { if(oneD) ymin = myPlot->GetHistYAxisLowerBound();}
if(!dispYMax->text().isEmpty()) ymax = dispYMax->text().toDouble();
else { if(oneD) ymax = myPlot->GetHistYAxisUpperBound();}
if(!dispZMin->text().isEmpty()) zmin = dispZMin->text().toDouble();
if(!dispZMax->text().isEmpty()) zmax = dispZMax->text().toDouble();
//should be filled for 2d as well
if(oneD){
myPlot->SetHistXAxisScale(xmin,xmax);
myPlot->SetHistYAxisScale(ymin,ymax);
}
double xmin=0,xmax=0,ymin=0,ymax=0;
/** If disabled, get the min or max range of the plot as default */
if((dispXMin->isEnabled())&&(!dispXMin->text().isEmpty()))
xmin = dispXMin->text().toDouble();
else xmin = myPlot->GetXMinimum();
if((dispXMax->isEnabled())&&(!dispXMax->text().isEmpty()))
xmax = dispXMax->text().toDouble();
else xmax = myPlot->GetXMaximum();
if((dispYMin->isEnabled())&&(!dispYMin->text().isEmpty()))
ymin = dispYMin->text().toDouble();
else ymin = myPlot->GetYMinimum();
if((dispYMax->isEnabled())&&(!dispYMax->text().isEmpty()))
ymax = dispYMax->text().toDouble();
else ymax = myPlot->GetYMaximum();
/** Setting the range*/
myPlot->SetXMinMax(xmin,xmax);
myPlot->SetYMinMax(ymin,ymax);
}
void qTabPlot::SetZRange(){
emit SetZRangeSignal(dispZMin->text().toDouble(),dispZMax->text().toDouble());
}
void qTabPlot::EnableZRange(){
dispZMin->setEnabled(chkZMin->isChecked());
dispZMax->setEnabled(chkZMax->isChecked());
emit EnableZRangeSignal((chkZMin->isChecked())||(chkZMax->isChecked()));
}
void qTabPlot::SavePlot(){
QString fullFileName = QString(myDet->getFilePath().c_str())+'/'+dispFName->text()+comboFormat->currentText();
myPlot->SavePlot(fullFileName);
}
//dispzmin... when unchecked, unzoom and get lower and upper bound... when checked just set lower and upper bound
/*
#include "SlsQtValidators.h"
class QDoubleValidator;
SlsQtDoubleValidator* validator_double[2];
validator_double = new SlsQtDoubleValidator(num_field);
num_field->setValidator(validator_double);
//default settings
validator_double->setDecimals(3);
double v= num_field->text().toDouble(ok););
is ok 1? for correct conversion
QString s = QString::number(v);
validator_double->fixup(s);
num_field->setText(s);
num_field[i]->setAlignment(Qt::AlignRight);
connect(num_field[i],SIGNAL(lostFocus()),this,SLOT(FirstValueEntered()));
*/