mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 18:17:59 +02:00
made some changes to make clone and main window resize plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@3 af1100a4-978c-4157-bff7-07162d2ba061
This commit is contained in:
@ -17,30 +17,97 @@
|
||||
/** C++ Include Headers */
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <QSizePolicy>
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
qCloneWidget::qCloneWidget(QWidget *parent,int id,QSize fSize,int numDim,SlsQt1DPlot*& plot1D,SlsQt2DPlotLayout*& plot2D):QFrame(parent,Qt::Popup|Qt::SubWindow),id(id){
|
||||
qCloneWidget::qCloneWidget(QWidget *parent,int id,QSize fSize,QString title,int numDim,SlsQt1DPlot*& plot1D,SlsQt2DPlotLayout*& plot2D):QFrame(parent,Qt::Popup|Qt::SubWindow),id(id){
|
||||
|
||||
|
||||
mainLayout = new QGridLayout(this);
|
||||
setLayout(mainLayout);
|
||||
|
||||
|
||||
|
||||
|
||||
QGroupBox *cloneBox = new QGroupBox(this);
|
||||
QGridLayout *gridClone = new QGridLayout(cloneBox);
|
||||
cloneBox->setLayout(gridClone);
|
||||
cloneBox->setFlat(1);
|
||||
cloneBox->setTitle("Startup Image");
|
||||
cloneBox->resize(fSize);
|
||||
|
||||
cloneBox->setTitle(title);
|
||||
cloneBox->setAlignment(Qt::AlignHCenter);
|
||||
cloneBox->setFont(QFont("Sans Serif",11,QFont::Bold));
|
||||
if(numDim==1){
|
||||
cloneplot1D = plot1D;
|
||||
gridClone->addWidget(cloneplot1D,0,0);
|
||||
cloneBox->setFlat(false);
|
||||
|
||||
}else{
|
||||
cloneplot2D = plot2D;
|
||||
gridClone->addWidget(cloneplot2D,0,0);
|
||||
cloneBox->setFlat(true);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
boxSave = new QGroupBox(this);
|
||||
layoutSave = new QHBoxLayout;
|
||||
boxSave->setLayout(layoutSave);
|
||||
|
||||
lblFName = new QLabel(layoutSave);
|
||||
lblFName->setText("File Name:");
|
||||
layoutSave->addWidget(lblFName);
|
||||
|
||||
|
||||
|
||||
hLayoutSave = new QHBoxLayout();
|
||||
hLayoutSave->setSpacing(0);
|
||||
|
||||
dispFName = new QLineEdit(layoutSave);
|
||||
hLayoutSave->addWidget(dispFName);
|
||||
|
||||
comboFormat = new QComboBox(layoutSave);
|
||||
comboFormat->setFrame(true);
|
||||
comboFormat->insertItem(".gif");
|
||||
comboFormat->insertItem(".pdf");
|
||||
comboFormat->insertItem(".png");
|
||||
comboFormat->insertItem(".gif+");
|
||||
comboFormat->insertItem(".jpg");
|
||||
comboFormat->insertItem(".ps");
|
||||
comboFormat->insertItem(".eps");
|
||||
comboFormat->insertItem(".xpm");
|
||||
comboFormat->insertItem(".C");
|
||||
hLayoutSave->addWidget(comboFormat);
|
||||
|
||||
layoutSave->addLayout(hLayoutSave);
|
||||
|
||||
|
||||
btnSave = new QPushButton(layoutSave);
|
||||
bnSave->setText("Save");
|
||||
QSizePolicy sizePolicy2(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
sizePolicy2.setHeightForWidth(btnSave->sizePolicy().hasHeightForWidth());
|
||||
btnSave->setSizePolicy(sizePolicy2);
|
||||
btnSave->setFocusPolicy(Qt::NoFocus);
|
||||
layoutSave->addWidget(btnSave);
|
||||
|
||||
chkAutoFName = new QCheckBox(layoutSave);
|
||||
chkAutoFName->setText("Automatic File Name");
|
||||
layoutSave->addWidget(chkAutoFName);
|
||||
|
||||
chkSaveAll = new QCheckBox(layoutSave);
|
||||
chkSaveAll->setText("Save All")
|
||||
layoutSave->addWidget(chkSaveAll);
|
||||
|
||||
|
||||
|
||||
gridClone->addWidget(boxSave,0,0);
|
||||
mainLayout->addWidget(boxSave,1,1);*/
|
||||
|
||||
mainLayout->addWidget(cloneBox,0,0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -41,20 +41,26 @@ qDetectorMain::qDetectorMain(int argc, char **argv, QApplication *app, QWidget *
|
||||
setupUi(this);
|
||||
SetUpWidgetWindow();
|
||||
Initialization();
|
||||
SetDeveloperMode();
|
||||
/**need to use argc and argv to determine which slsdet or multidet to use.*/
|
||||
|
||||
if(argc>1){
|
||||
if(!strcasecmp(argv[1],"-developer"))
|
||||
tabs->setTabEnabled(Developer,true);
|
||||
else
|
||||
tabs->setTabEnabled(Developer,false);
|
||||
for(int iarg=1; iarg<argc; iarg++){
|
||||
if(!strcasecmp(argv[1],"-developer")) SetDeveloperMode(true);
|
||||
|
||||
if(!strcasecmp(argv[1],"-help")){
|
||||
cout<<"Possible Arguments are:"<<endl;
|
||||
cout<<"-help \t\t : \t This help"<<endl;
|
||||
cout<<"-developer \t : \t Enables the developer tab"<<endl;
|
||||
//cout<<"-id i \t : \t Sets the detector to id i (the default is 0). ";
|
||||
//cout<<"Required only when more than one detector is connected in parallel."<<endl;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//centralwidget->setFixedHeight(centralwidget->height());
|
||||
}
|
||||
|
||||
|
||||
//Qt::ScrollBarAsNeeded
|
||||
|
||||
|
||||
qDetectorMain::~qDetectorMain(){
|
||||
@ -70,13 +76,12 @@ qDetectorMain::~qDetectorMain(){
|
||||
void qDetectorMain::SetUpWidgetWindow(){
|
||||
|
||||
|
||||
/* scrollMain = new QScrollArea;
|
||||
setCentralWidget(scrollMain);
|
||||
scrollMain ->setWidget(centralwidget);
|
||||
scrollMain->setWidgetResizable(true);*/
|
||||
|
||||
SetUpDetector();
|
||||
|
||||
/** Layout */
|
||||
layoutTabs= new QGridLayout;
|
||||
centralwidget->setLayout(layoutTabs);
|
||||
|
||||
/** plot setup*/
|
||||
myPlot = new qDrawPlot(dockWidgetPlot,myDet);
|
||||
dockWidgetPlot->setWidget(myPlot);
|
||||
@ -107,6 +112,7 @@ void qDetectorMain::SetUpWidgetWindow(){
|
||||
scroll[Advanced] ->setWidget(tab_advanced);
|
||||
scroll[Debugging] ->setWidget(tab_debugging);
|
||||
scroll[Developer] ->setWidget(tab_developer);
|
||||
|
||||
/** inserting all the tabs*/
|
||||
tabs->insertTab(Measurement, scroll[Measurement], "Measurement");
|
||||
tabs->insertTab(DataOutput, scroll[DataOutput], "Data Output");
|
||||
@ -121,6 +127,8 @@ void qDetectorMain::SetUpWidgetWindow(){
|
||||
SetDebugMode(false);
|
||||
SetBeamlineMode(false);
|
||||
SetExpertMode(false);
|
||||
SetDeveloperMode(false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -190,11 +198,11 @@ void qDetectorMain::Initialization(){
|
||||
}
|
||||
|
||||
|
||||
void qDetectorMain::SetDeveloperMode(){
|
||||
void qDetectorMain::SetDeveloperMode(bool b){
|
||||
#ifdef VERBOSE
|
||||
cout<<"Enabling Developer Mode "<<endl;
|
||||
cout<<"Setting Developer Mode to "<<b<<endl;
|
||||
#endif
|
||||
tabs->setTabEnabled(Developer,true);
|
||||
tabs->setTabEnabled(Developer,b);
|
||||
}
|
||||
|
||||
|
||||
@ -314,31 +322,32 @@ void qDetectorMain::ResizeMainWindow(bool b){
|
||||
#ifdef VERBOSE
|
||||
cout<<"Resizing Main Window: height:"<<height()<<endl;
|
||||
#endif
|
||||
if(b)/** sets the main window height to a smaller maximum to get rid of space*/
|
||||
/** undocked from the main window */
|
||||
if(b){/** sets the main window height to a smaller maximum to get rid of space*/
|
||||
setMaximumHeight(height()-heightPlotWindow-9);
|
||||
else
|
||||
dockWidgetPlot->setMinimumHeight(0);
|
||||
}
|
||||
else{
|
||||
setMaximumHeight(QWIDGETSIZE_MAX);
|
||||
dockWidgetPlot->setMinimumHeight(heightPlotWindow);
|
||||
|
||||
}
|
||||
|
||||
|
||||
cout<<"size hint ht:"<<sizeHint().height()<<endl;
|
||||
}
|
||||
|
||||
void qDetectorMain::SetTerminalWindowSize(bool b){
|
||||
#ifdef VERBOSE
|
||||
cout<<"Resizing Terminal Window"<<endl;
|
||||
#endif
|
||||
|
||||
cout<<"min width:"<<dockWidgetTerminal->minimumWidth()<<endl;
|
||||
cout<<"min height:"<<dockWidgetTerminal->minimumHeight()<<endl;
|
||||
//depends on gridlayout in qdrawterminal widget class
|
||||
if(b){
|
||||
dockWidgetTerminal->setMinimumWidth(width()/2);
|
||||
}
|
||||
//dockWidgetTerminal->setFixedSize(width()/2,dockWidgetTerminal->minimumHeight());
|
||||
|
||||
else{
|
||||
dockWidgetTerminal->setMinimumWidth(38);
|
||||
QSizePolicy sizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
|
||||
dockWidgetTerminal->setSizePolicy(sizePolicy);
|
||||
//dockWidgetTerminal->setSizePolicy(new QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding));
|
||||
//dockWidgetTerminal->setFixedSize(dockWidgetTerminal->minimumWidth(),dockWidgetTerminal->minimumHeight());
|
||||
}
|
||||
}
|
||||
|
@ -25,8 +25,8 @@ using namespace std;
|
||||
|
||||
qDrawPlot::qDrawPlot(QWidget *parent,slsDetectorUtils*& detector):QWidget(parent),myDet(detector),numberOfMeasurements(1){
|
||||
if(myDet) {
|
||||
Initialization();
|
||||
SetupWidgetWindow();
|
||||
Initialization();
|
||||
StartStopDaqToggle(); //as default
|
||||
}
|
||||
}
|
||||
@ -35,47 +35,44 @@ qDrawPlot::qDrawPlot(QWidget *parent,slsDetectorUtils*& detector):QWidget(parent
|
||||
qDrawPlot::~qDrawPlot(){
|
||||
/** Clear plot*/
|
||||
Clear1DPlot();
|
||||
for(QVector<SlsQtH1D*>::iterator h = plot1D_hists.begin();h!=plot1D_hists.end();h++)
|
||||
delete *h;
|
||||
for(QVector<SlsQtH1D*>::iterator h = plot1D_hists.begin();h!=plot1D_hists.end();h++) delete *h;
|
||||
plot1D_hists.clear();
|
||||
delete[] lastImageArray; lastImageArray=0;
|
||||
StartOrStopThread(0);
|
||||
/** delete detector object pointer*/
|
||||
delete myDet;
|
||||
for(int i=0;i<MAXCloneWindows;i++) delete winClone[i];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void qDrawPlot::Initialization(){
|
||||
#ifdef VERBOSE
|
||||
cout<<"Setting up plot variables"<<endl;
|
||||
#endif
|
||||
stop_signal = 0;
|
||||
pthread_mutex_init(&last_image_complete_mutex,NULL);
|
||||
|
||||
plot_in_scope = 0;
|
||||
lastImageNumber = 0;
|
||||
nPixelsX = 0;
|
||||
nPixelsY = 0;
|
||||
lastImageArray = 0;
|
||||
|
||||
nHists = 0;
|
||||
histNBins = 0;
|
||||
histXAxis = 0;
|
||||
for(int i=0;i<10;i++) histYAxis[i]=0;
|
||||
|
||||
for(int i=0;i<MAXCloneWindows;i++) winClone[i]=0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void qDrawPlot::SetupWidgetWindow(){
|
||||
#ifdef VERBOSE
|
||||
cout<<"Setting up plot variables"<<endl;
|
||||
#endif
|
||||
stop_signal = 0;
|
||||
pthread_mutex_init(&last_image_complete_mutex,NULL);
|
||||
|
||||
plot_in_scope = 0;
|
||||
lastImageNumber = 0;
|
||||
nPixelsX = 0;
|
||||
nPixelsY = 0;
|
||||
lastImageArray = 0;
|
||||
|
||||
nHists = 0;
|
||||
histNBins = 0;
|
||||
histXAxis = 0;
|
||||
for(int i=0;i<10;i++) histYAxis[i]=0;
|
||||
|
||||
for(int i=0;i<MAXCloneWindows;i++) winClone[i]=0;
|
||||
|
||||
|
||||
/** Setting up window*/
|
||||
setFont(QFont("Sans Serif",9));
|
||||
layout = new QGridLayout;
|
||||
boxPlot = new QGroupBox("Start Image");
|
||||
boxPlot = new QGroupBox("Measurement");
|
||||
|
||||
boxPlot->setAlignment(Qt::AlignHCenter);
|
||||
boxPlot->setFont(QFont("Sans Serif",11,QFont::Bold));
|
||||
|
||||
layout->addWidget(boxPlot,1,1);
|
||||
this->setLayout(layout);
|
||||
|
||||
@ -83,26 +80,28 @@ void qDrawPlot::SetupWidgetWindow(){
|
||||
connect(plot_update_timer, SIGNAL(timeout()), this, SLOT(UpdatePlot()));
|
||||
|
||||
plot1D = new SlsQt1DPlot(boxPlot);
|
||||
plot1D->SetXTitle("x axis");
|
||||
plot1D->SetYTitle("y axis");
|
||||
plot1D->setFont(QFont("Sans Serif",9,QFont::Normal));
|
||||
plot1D->hide();
|
||||
|
||||
plot2D = new SlsQt2DPlotLayout(boxPlot);
|
||||
plot2D->SetXTitle("pixel");
|
||||
plot2D->SetYTitle("pixel");
|
||||
plot2D->SetZTitle("Intensity");
|
||||
boxPlot->setFlat(1);
|
||||
boxPlot->setTitle("Startup Image");
|
||||
plot2D->setFont(QFont("Sans Serif",9,QFont::Normal));
|
||||
plot2D->setTitle("Start Image");
|
||||
plot2D->setAlignment(Qt::AlignLeft);
|
||||
boxPlot->setFlat(true);
|
||||
|
||||
|
||||
plotLayout = new QGridLayout(boxPlot);
|
||||
plotLayout->addWidget(plot1D,1,1,1,1);
|
||||
plotLayout->addWidget(plot2D,1,1,1,1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
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)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -269,7 +268,7 @@ void* qDrawPlot::AcquireImages(){
|
||||
if(!pthread_mutex_trylock(&last_image_complete_mutex)){
|
||||
|
||||
//plot_in_scope = 1;//i%2 + 1;
|
||||
plot_in_scope = 2;
|
||||
//plot_in_scope = 2;
|
||||
cout<<"value:"<<image_data[6]<<endl;
|
||||
|
||||
lastImageNumber = i+1;
|
||||
@ -278,8 +277,6 @@ void* qDrawPlot::AcquireImages(){
|
||||
nHists = 2;
|
||||
sprintf(temp_title,"curve one %d",i); histTitle[0] = temp_title;
|
||||
sprintf(temp_title,"curve two %d",i); histTitle[1] = temp_title;
|
||||
sprintf(temp_title,"Channel Number"); histXAxisTitle=temp_title;
|
||||
sprintf(temp_title,"Intensity"); histYAxisTitle=temp_title;
|
||||
histNBins = nx;
|
||||
memcpy(histXAxis, xvalues,nx*sizeof(double));
|
||||
memcpy(histYAxis[0],yvalues0,nx*sizeof(double));
|
||||
@ -287,9 +284,6 @@ void* qDrawPlot::AcquireImages(){
|
||||
|
||||
//2d image stuff
|
||||
sprintf(temp_title,"Image number %d",i); imageTitle=temp_title;
|
||||
sprintf(temp_title,"The x-axis title"); imageXAxisTitle=temp_title;
|
||||
sprintf(temp_title,"The y-axis title"); imageYAxisTitle=temp_title;
|
||||
sprintf(temp_title,"The z-axis title"); imageZAxisTitle=temp_title;
|
||||
nPixelsX = nx;
|
||||
nPixelsY = ny;
|
||||
memcpy(lastImageArray,image_data,nx*ny*sizeof(double));
|
||||
@ -315,9 +309,13 @@ void qDrawPlot::SelectPlot(int i){ //1 for 1D otherwise 2D
|
||||
if(i==1){
|
||||
plot1D->show();
|
||||
plot2D->hide();
|
||||
boxPlot->setFlat(false);
|
||||
plot_in_scope=1;
|
||||
}else{
|
||||
plot1D->hide();
|
||||
plot2D->show();
|
||||
boxPlot->setFlat(true);
|
||||
plot_in_scope=2;
|
||||
}
|
||||
}
|
||||
|
||||
@ -339,17 +337,17 @@ void qDrawPlot::UpdatePlot(){
|
||||
|
||||
LockLastImageArray();
|
||||
//1-d plot stuff
|
||||
if(GetHistNBins()){
|
||||
plot1D->SetXTitle(GetHistXAxisTitle());
|
||||
plot1D->SetYTitle(GetHistYAxisTitle());
|
||||
for(int hist_num=0;hist_num<GetNHists();hist_num++){
|
||||
if(histNBins){
|
||||
plot1D->SetXTitle(histXAxisTitle.toAscii().constData());
|
||||
plot1D->SetYTitle(histYAxisTitle.toAscii().constData());
|
||||
for(int hist_num=0;hist_num<nHists;hist_num++){
|
||||
SlsQtH1D* h;
|
||||
if(hist_num+1>plot1D_hists.size()){
|
||||
plot1D_hists.append(h=new SlsQtH1D("1d plot",GetHistNBins(),GetHistXAxis(),GetHistYAxis(hist_num)));
|
||||
plot1D_hists.append(h=new SlsQtH1D("1d plot",histNBins,histXAxis,GetHistYAxis(hist_num)));
|
||||
h->SetLineColor(hist_num+1);
|
||||
}else{
|
||||
h=plot1D_hists.at(hist_num);
|
||||
h->SetData(GetHistNBins(),GetHistXAxis(),GetHistYAxis(hist_num));
|
||||
h->SetData(histNBins,histXAxis,GetHistYAxis(hist_num));
|
||||
}
|
||||
h->setTitle(GetHistTitle(hist_num));
|
||||
h->Attach(plot1D);
|
||||
@ -359,23 +357,23 @@ void qDrawPlot::UpdatePlot(){
|
||||
|
||||
//2-d plot stuff
|
||||
static int last_plot_number = 0;
|
||||
if(GetLastImageArray()){
|
||||
if(GetLastImageNumber()&&last_plot_number!=GetLastImageNumber() && //there is a new plot
|
||||
GetNPixelsX()>0&&GetNPixelsY()>0){
|
||||
plot2D->GetPlot()->SetData(GetNPixelsX(),-0.5,GetNPixelsX()-0.5,GetNPixelsY(),-0.5,GetNPixelsY()-0.5,GetLastImageArray());
|
||||
if(lastImageArray){
|
||||
if(lastImageNumber&&last_plot_number!=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
|
||||
boxPlot->setTitle(GetImageTitle());
|
||||
plot2D->SetXTitle(GetImageXAxisTitle());
|
||||
plot2D->SetYTitle(GetImageYAxisTitle());
|
||||
plot2D->SetZTitle(GetImageZAxisTitle());
|
||||
plot2D->setTitle(GetImageTitle());
|
||||
plot2D->SetXTitle(imageXAxisTitle);
|
||||
plot2D->SetYTitle(imageYAxisTitle);
|
||||
plot2D->SetZTitle(imageZAxisTitle);
|
||||
plot2D->UpdateNKeepSetRangeIfSet(); //this will keep a "set" z range, and call Plot()->Update();
|
||||
}
|
||||
}
|
||||
last_plot_number=GetLastImageNumber();
|
||||
last_plot_number=lastImageNumber;
|
||||
UnlockLastImageArray();
|
||||
|
||||
if(PlotInScope()==1) SelectPlot(1);
|
||||
else if(PlotInScope()==2) SelectPlot(2);
|
||||
/* if(plot_in_scope==1) SelectPlot(1);
|
||||
else if(plot_in_scope==2) SelectPlot(2);*/
|
||||
|
||||
if(number_of_exposures==last_plot_number){
|
||||
StartStopDaqToggle(1);
|
||||
@ -407,13 +405,32 @@ void qDrawPlot::ClonePlot(){
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
winClone[i] = new qCloneWidget(this,i,boxPlot->size(),(int)PlotInScope(),plot1D,plot2D);
|
||||
if(PlotInScope()==1)
|
||||
winClone[i] = new qCloneWidget(this,i,boxPlot->size(),boxPlot->title(),(int)plot_in_scope,plot1D,plot2D);
|
||||
if(plot_in_scope==1){
|
||||
plot1D = new SlsQt1DPlot(boxPlot);
|
||||
else
|
||||
plot1D->setFont(QFont("Sans Serif",9,QFont::Normal));
|
||||
plotLayout->addWidget(plot1D,1,1,1,1);
|
||||
/** Somehow the 1d plot hists are lost*/
|
||||
SlsQtH1D* h;
|
||||
for(int hist_num=0;hist_num<nHists;hist_num++){
|
||||
SlsQtH1D* k;
|
||||
if(hist_num+1>cloneplot1D_hists.size()){
|
||||
cloneplot1D_hists.append(k=new SlsQtH1D("1d plot",histNBins,histXAxis,GetHistYAxis(hist_num)));
|
||||
k->SetLineColor(hist_num+1);
|
||||
}else{
|
||||
k=cloneplot1D_hists.at(hist_num);
|
||||
k->SetData(histNBins,histXAxis,GetHistYAxis(hist_num));
|
||||
}
|
||||
k->setTitle(GetHistTitle(hist_num));
|
||||
k->Attach(winClone[i]->Get1Dplot());
|
||||
}
|
||||
winClone[i]->Get1Dplot()->UnZoom();
|
||||
}
|
||||
else{
|
||||
plot2D = new SlsQt2DPlotLayout(boxPlot);
|
||||
plotLayout->addWidget(plot1D,1,1,1,1);
|
||||
plotLayout->addWidget(plot2D,1,1,1,1);
|
||||
plot2D->setFont(QFont("Sans Serif",9,QFont::Normal));
|
||||
plotLayout->addWidget(plot2D,1,1,1,1);
|
||||
}
|
||||
UpdatePlot();
|
||||
connect(this, SIGNAL(InterpolateSignal(bool)), plot2D, SIGNAL(InterpolateSignal(bool)));
|
||||
connect(this, SIGNAL(ContourSignal(bool)), plot2D, SIGNAL(ContourSignal(bool)));
|
||||
|
@ -319,30 +319,27 @@ void qTabMeasurement::setTimingMode(int mode){
|
||||
cout<<"Setting Timing mode to " << comboTimingMode->currentText().toAscii().data()<<endl;
|
||||
#endif
|
||||
//need to send to client to set the timing mode
|
||||
|
||||
/** Default settings */
|
||||
lblNumFrames->setEnabled(false); spinNumFrames->setEnabled(false);
|
||||
lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false);
|
||||
lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false);
|
||||
lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false);
|
||||
lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
lblNumProbes->setEnabled(false); spinNumProbes->setEnabled(false);
|
||||
|
||||
|
||||
switch(mode){
|
||||
case None:
|
||||
lblNumFrames->setEnabled(false); spinNumFrames->setEnabled(false);
|
||||
lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false);
|
||||
lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false);
|
||||
lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false);
|
||||
lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
lblNumProbes->setEnabled(false); spinNumProbes->setEnabled(false);
|
||||
break;
|
||||
case Auto:
|
||||
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(false); spinNumTriggers->setEnabled(false);
|
||||
lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
break;
|
||||
case Gated:
|
||||
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
|
||||
lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false);
|
||||
lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false);
|
||||
lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false);
|
||||
lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
|
||||
break;
|
||||
case Trigger_Exp_Series:
|
||||
@ -351,39 +348,26 @@ void qTabMeasurement::setTimingMode(int mode){
|
||||
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
|
||||
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
|
||||
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
break;
|
||||
case Trigger_Readout:
|
||||
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(false); spinNumTriggers->setEnabled(false);
|
||||
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
break;
|
||||
case Gated_Start:
|
||||
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(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
|
||||
break;
|
||||
case Trigger_Frame:
|
||||
lblNumFrames->setEnabled(false); spinNumFrames->setEnabled(false);
|
||||
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
|
||||
lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false);
|
||||
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
|
||||
lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
break;
|
||||
case Trigger_Window:
|
||||
lblNumFrames->setEnabled(false); spinNumFrames->setEnabled(false);
|
||||
lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false);
|
||||
lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false);
|
||||
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
|
||||
lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false);
|
||||
lblNumGates->setEnabled(false); spinNumGates->setEnabled(false);
|
||||
break;
|
||||
default:
|
||||
cout<<"ERROR: Timing mode being set to other should never happen"<<endl;
|
||||
@ -392,9 +376,7 @@ void qTabMeasurement::setTimingMode(int mode){
|
||||
|
||||
if(mode!=None){
|
||||
if(myDet->getDetectorsType()==slsDetectorDefs::MYTHEN){
|
||||
lblNumProbes->setEnabled(true); spinNumProbes->setEnabled(true);
|
||||
}else{
|
||||
lblNumProbes->setEnabled(false); spinNumProbes->setEnabled(false);
|
||||
lblNumProbes->setEnabled(true); spinNumProbes->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,19 +12,30 @@
|
||||
#include "slsDetector.h"
|
||||
#include "multiSlsDetector.h"
|
||||
/** C++ Include Headers */
|
||||
#include<iostream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
|
||||
#define Detector_Index 0
|
||||
|
||||
|
||||
QString qTabPlot::defaultPlotTitle("Measurement");
|
||||
QString qTabPlot::defaultHistXAxisTitle("Channel Number");
|
||||
QString qTabPlot::defaultHistYAxisTitle("Counts");
|
||||
QString qTabPlot::defaultImageXAxisTitle("Pixel");
|
||||
QString qTabPlot::defaultImageYAxisTitle("Pixel");
|
||||
QString qTabPlot::defaultImageZAxisTitle("Intensity");
|
||||
|
||||
|
||||
qTabPlot::qTabPlot(QWidget *parent,slsDetectorUtils*& detector, qDrawPlot*& plot):QWidget(parent),myDet(detector),myPlot(plot){
|
||||
setupUi(this);
|
||||
if(myDet)
|
||||
{
|
||||
SetupWidgetWindow();
|
||||
// wherever you choose plot do all these steps
|
||||
//This also selects the text if unchecked
|
||||
//includes setupwidgetwindow
|
||||
//SelectPlot(1);
|
||||
Initialization();
|
||||
}
|
||||
}
|
||||
@ -41,10 +52,51 @@ qTabPlot::~qTabPlot(){
|
||||
|
||||
|
||||
void qTabPlot::SetupWidgetWindow(){
|
||||
box1D->setEnabled(false);
|
||||
/** Plot Axis*/
|
||||
myPlot->SetPlotTitle(defaultPlotTitle);
|
||||
dispTitle->setText(defaultPlotTitle);
|
||||
dispTitle->setEnabled(false);
|
||||
dispXAxis->setEnabled(false);
|
||||
dispYAxis->setEnabled(false);
|
||||
dispZAxis->setEnabled(false);
|
||||
dispXMin->setEnabled(false);
|
||||
dispYMin->setEnabled(false);
|
||||
dispZMin->setEnabled(false);
|
||||
dispXMax->setEnabled(false);
|
||||
dispYMax->setEnabled(false);
|
||||
dispZMax->setEnabled(false);
|
||||
}
|
||||
|
||||
|
||||
void qTabPlot::Select1DPlot(bool b){
|
||||
SetupWidgetWindow();
|
||||
if(b){
|
||||
myPlot->Select1DPlot();
|
||||
box1D->setEnabled(true);
|
||||
box2D->setEnabled(false);
|
||||
chkZAxis->setEnabled(false);
|
||||
chkZMin->setEnabled(false);
|
||||
chkZMax->setEnabled(false);
|
||||
myPlot->SetHistXAxisTitle(defaultHistXAxisTitle);
|
||||
dispXAxis->setText(defaultHistXAxisTitle);
|
||||
myPlot->SetHistYAxisTitle(defaultHistYAxisTitle);
|
||||
dispYAxis->setText(defaultHistYAxisTitle);
|
||||
}else{
|
||||
myPlot->Select2DPlot();
|
||||
box1D->setEnabled(false);
|
||||
box2D->setEnabled(true);
|
||||
chkZAxis->setEnabled(true);
|
||||
chkZMin->setEnabled(true);
|
||||
chkZMax->setEnabled(true);
|
||||
myPlot->SetImageXAxisTitle(defaultImageXAxisTitle);
|
||||
dispXAxis->setText(defaultImageXAxisTitle);
|
||||
myPlot->SetImageYAxisTitle(defaultImageYAxisTitle);
|
||||
dispYAxis->setText(defaultImageYAxisTitle);
|
||||
myPlot->SetImageZAxisTitle(defaultImageZAxisTitle);
|
||||
dispZAxis->setText(defaultImageZAxisTitle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void qTabPlot::Initialization(){
|
||||
/** Plot box*/
|
||||
@ -54,6 +106,21 @@ 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()));
|
||||
connect(chkYAxis, SIGNAL(toggled(bool)), this, SLOT(EnableTitles()));
|
||||
connect(chkZAxis, SIGNAL(toggled(bool)), this, SLOT(EnableTitles()));
|
||||
connect(dispTitle, SIGNAL(returnPressed()), this, SLOT(SetTitles()));
|
||||
connect(dispXAxis, SIGNAL(returnPressed()), this, SLOT(SetTitles()));
|
||||
connect(dispYAxis, SIGNAL(returnPressed()), this, SLOT(SetTitles()));
|
||||
connect(dispZAxis, SIGNAL(returnPressed()), this, SLOT(SetTitles()));
|
||||
|
||||
/** Common Buttons*/
|
||||
connect(btnClear, SIGNAL(clicked()),myPlot, SLOT(Clear1DPlot()));
|
||||
|
||||
/** test for 1D*/
|
||||
connect(chktest1D, SIGNAL(toggled(bool)), this, SLOT(Select1DPlot(bool)));
|
||||
}
|
||||
|
||||
|
||||
@ -66,4 +133,65 @@ void qTabPlot::Enable(bool enable){
|
||||
boxPlotAxis->setEnabled(enable);
|
||||
}
|
||||
|
||||
void qTabPlot::SetTitles(){
|
||||
int oneD = box1D->isEnabled();
|
||||
/** Plot Title*/
|
||||
if(dispTitle->isEnabled())
|
||||
myPlot->SetPlotTitle(dispTitle->text());
|
||||
/** X Axis */
|
||||
if(dispXAxis->isEnabled()){
|
||||
if(oneD) myPlot->SetHistXAxisTitle(dispXAxis->text());
|
||||
else myPlot->SetImageXAxisTitle(dispXAxis->text());
|
||||
}
|
||||
/** Y Axis */
|
||||
if(dispYAxis->isEnabled()){
|
||||
if(oneD) myPlot->SetHistYAxisTitle(dispYAxis->text());
|
||||
else myPlot->SetImageYAxisTitle(dispYAxis->text());
|
||||
}
|
||||
/** Z Axis */
|
||||
if(dispZAxis->isEnabled())
|
||||
myPlot->SetImageZAxisTitle(dispZAxis->text());
|
||||
}
|
||||
|
||||
|
||||
void qTabPlot::EnableTitles(){
|
||||
int oneD = box1D->isEnabled();
|
||||
/** Plot Title*/
|
||||
dispTitle->setEnabled(chkTitle->isChecked());
|
||||
if(!chkTitle->isChecked()){
|
||||
myPlot->SetPlotTitle(defaultPlotTitle);
|
||||
dispTitle->setText(defaultPlotTitle);
|
||||
}
|
||||
/** X Axis */
|
||||
dispXAxis->setEnabled(chkXAxis->isChecked());
|
||||
if(!chkXAxis->isChecked()){
|
||||
if(oneD){
|
||||
myPlot->SetHistXAxisTitle(defaultHistXAxisTitle);
|
||||
dispXAxis->setText(defaultHistXAxisTitle);
|
||||
}
|
||||
else{
|
||||
myPlot->SetImageXAxisTitle(defaultImageXAxisTitle);
|
||||
dispXAxis->setText(defaultImageXAxisTitle);
|
||||
}
|
||||
}
|
||||
/** Y Axis */
|
||||
dispYAxis->setEnabled(chkYAxis->isChecked());
|
||||
if(!chkYAxis->isChecked()){
|
||||
if(oneD){
|
||||
myPlot->SetHistYAxisTitle(defaultHistYAxisTitle);
|
||||
dispYAxis->setText(defaultHistYAxisTitle);
|
||||
}else{
|
||||
myPlot->SetImageYAxisTitle(defaultImageYAxisTitle);
|
||||
dispYAxis->setText(defaultImageYAxisTitle);
|
||||
}
|
||||
}
|
||||
/** Z Axis */
|
||||
dispZAxis->setEnabled(chkZAxis->isChecked());
|
||||
if(!chkZAxis->isChecked()){
|
||||
myPlot->SetImageZAxisTitle(defaultImageZAxisTitle);
|
||||
dispZAxis->setText(defaultImageZAxisTitle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user