mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-16 23:07:13 +02:00
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:
@ -6,7 +6,7 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
|
||||
#include <qtoolbutton.h>
|
||||
#include <qgroupbox.h>
|
||||
#include <qgridlayout.h>
|
||||
#include <qlabel.h>
|
||||
@ -17,96 +17,180 @@
|
||||
using namespace std;
|
||||
|
||||
SlsQt2DPlotLayout::SlsQt2DPlotLayout(QWidget *parent):QGroupBox(parent){
|
||||
the_layout=0;
|
||||
the_plot = new SlsQt2DPlot(this);
|
||||
the_layout=0;
|
||||
the_plot = new SlsQt2DPlot(this);
|
||||
|
||||
z_range_ne = new SlsQtNumberEntry(this,1,"Set the z axis range from",2,"to",2);
|
||||
// z_range_ne->SetNDecimalsOfDoubleValidators(2);
|
||||
z_range_ne->setFixedWidth(402);
|
||||
z_range_ne->hide();
|
||||
z_range_ne = new SlsQtNumberEntry(this,1,"Set the z axis range from",2,"to",2);
|
||||
z_range_ne->setFixedWidth(402);
|
||||
#ifndef IAN
|
||||
zRangeChecked = false;
|
||||
z_range_ne->hide();
|
||||
#endif
|
||||
|
||||
logsChecked = false;
|
||||
|
||||
Layout();
|
||||
ConnectSignalsAndSlots();
|
||||
CreateTheButtons();
|
||||
Layout();
|
||||
ConnectSignalsAndSlots();
|
||||
}
|
||||
|
||||
SlsQt2DPlotLayout::~SlsQt2DPlotLayout(){
|
||||
|
||||
if(the_layout) delete the_layout;
|
||||
if(the_layout) delete the_layout;
|
||||
|
||||
|
||||
delete the_plot;
|
||||
delete z_range_ne;
|
||||
delete the_plot;
|
||||
delete z_range_ne;
|
||||
}
|
||||
|
||||
|
||||
void SlsQt2DPlotLayout::CreateTheButtons(){
|
||||
/** Dhanya: All these buttons are already in another class, logz is used and a wrapper around it*/
|
||||
#ifdef IAN
|
||||
btnInterpolate = new QToolButton(this);
|
||||
btnInterpolate->setText("Interpolate");
|
||||
btnInterpolate->setCheckable(true);
|
||||
btnInterpolate->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
|
||||
|
||||
btnContour = new QToolButton(this);
|
||||
btnContour->setText("Contour");
|
||||
btnContour->setCheckable(true);
|
||||
btnContour->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
|
||||
#endif
|
||||
btnLogz = new QToolButton(this);
|
||||
btnLogz->setText("Log Scale (Z)");
|
||||
btnLogz->setCheckable(true);
|
||||
btnLogz->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
|
||||
#ifndef IAN
|
||||
btnLogz->hide();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void SlsQt2DPlotLayout::Layout(){
|
||||
if(the_layout) delete the_layout;
|
||||
the_layout = new QGridLayout(this);
|
||||
the_layout->addWidget(the_plot,2,1,3,3);
|
||||
the_layout->addWidget(z_range_ne,5,1,1,3);
|
||||
if(the_layout) delete the_layout;
|
||||
the_layout = new QGridLayout(this);
|
||||
#ifdef IAN
|
||||
the_layout->addWidget(btnInterpolate,1,1);
|
||||
the_layout->addWidget(btnContour,1,2);
|
||||
the_layout->addWidget(btnLogz,1,3);
|
||||
#endif
|
||||
the_layout->addWidget(the_plot,2,1,3,3);
|
||||
the_layout->addWidget(z_range_ne,5,1,1,3);
|
||||
#ifdef IAN
|
||||
the_layout->setMargin(12);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::ConnectSignalsAndSlots(){
|
||||
#ifndef IAN
|
||||
connect(this, SIGNAL(InterpolateSignal(bool)), the_plot, SLOT(InterpolatedPlot(bool)));
|
||||
connect(this, SIGNAL(ContourSignal(bool)), the_plot, SLOT(showContour(bool)));
|
||||
connect(z_range_ne, SIGNAL(CheckBoxChanged(bool)), this, SLOT(ResetRange()));
|
||||
connect(z_range_ne, SIGNAL(AValueChanged(SlsQtNumberEntry*)), this, SLOT(ResetRange()));
|
||||
|
||||
#else
|
||||
connect(btnInterpolate, SIGNAL(toggled(bool)),the_plot, SLOT(InterpolatedPlot(bool)));
|
||||
connect(btnContour, SIGNAL(toggled(bool)),the_plot, SLOT(showContour(bool)));
|
||||
connect(btnLogz, SIGNAL(toggled(bool)),this,SLOT(SetZScaleToLog(bool)));
|
||||
btnInterpolate->setChecked(false);
|
||||
btnContour->setChecked(false);
|
||||
#endif
|
||||
connect(z_range_ne, SIGNAL(CheckBoxChanged(bool)), this, SLOT(ResetRange()));
|
||||
connect(z_range_ne, SIGNAL(AValueChanged(SlsQtNumberEntry*)), this, SLOT(ResetRange()));
|
||||
btnLogz->setChecked(false);
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::UpdateNKeepSetRangeIfSet(){
|
||||
if(z_range_ne->CheckBoxState()){
|
||||
//just reset histogram range before update
|
||||
the_plot->SetZMinMax(z_range_ne->GetValue(0),z_range_ne->GetValue(1));
|
||||
}
|
||||
|
||||
the_plot->Update();
|
||||
#ifdef IAN
|
||||
if(z_range_ne->CheckBoxState()){
|
||||
#else
|
||||
if(zRangeChecked){
|
||||
#endif
|
||||
//just reset histogram range before update
|
||||
the_plot->SetZMinMax(z_range_ne->GetValue(0),z_range_ne->GetValue(1));
|
||||
}
|
||||
the_plot->Update();
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::ResetRange(){
|
||||
//refind z limits
|
||||
the_plot->SetZMinMax();
|
||||
if(logsChecked) the_plot->SetZMinimumToFirstGreaterThanZero();
|
||||
//refind z limits
|
||||
the_plot->SetZMinMax();
|
||||
if(btnLogz->isChecked()) the_plot->SetZMinimumToFirstGreaterThanZero();
|
||||
#ifdef IAN
|
||||
if(z_range_ne->CheckBoxState()){
|
||||
#else
|
||||
if(zRangeChecked){cout<<"entering:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
#endif
|
||||
//first time check validity
|
||||
bool same = (z_range_ne->GetValue(0)==z_range_ne->GetValue(1)) ? 1:0;
|
||||
if(!z_range_ne->IsValueOk(0)||same) z_range_ne->SetValue(the_plot->GetZMinimum(),0);cout<<"isok 0:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
if(!z_range_ne->IsValueOk(1)||same) z_range_ne->SetValue(the_plot->GetZMaximum(),1);cout<<"isok1:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
z_range_ne->SetRange(the_plot->GetZMinimum(),z_range_ne->GetValue(1),0); cout<<"setrange:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
z_range_ne->SetRange(z_range_ne->GetValue(0),the_plot->GetZMaximum(),1); cout<<"setrange:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
|
||||
if(z_range_ne->CheckBoxState()){
|
||||
//first time check validity
|
||||
bool same = (z_range_ne->GetValue(0)==z_range_ne->GetValue(1)) ? 1:0;
|
||||
if(!z_range_ne->IsValueOk(0)||same) z_range_ne->SetValue(the_plot->GetZMinimum(),0);
|
||||
if(!z_range_ne->IsValueOk(1)||same) z_range_ne->SetValue(the_plot->GetZMaximum(),1);
|
||||
|
||||
z_range_ne->SetRange(the_plot->GetZMinimum(),z_range_ne->GetValue(1),0);
|
||||
z_range_ne->SetRange(z_range_ne->GetValue(0),the_plot->GetZMaximum(),1);
|
||||
|
||||
//set histogram range
|
||||
the_plot->SetZMinMax(z_range_ne->GetValue(0),z_range_ne->GetValue(1));
|
||||
}
|
||||
|
||||
the_plot->Update();
|
||||
//set histogram range
|
||||
the_plot->SetZMinMax(z_range_ne->GetValue(0),z_range_ne->GetValue(1)); cout<<"setminmax:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
}
|
||||
the_plot->Update();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SlsQt2DPlotLayout::SetZScaleToLog(bool yes){
|
||||
logsChecked=yes;
|
||||
the_plot->LogZ(yes);
|
||||
ResetRange();
|
||||
#ifndef IAN
|
||||
#ifdef VERBOSE
|
||||
cout<<"Setting ZScale to log:"<<yes<<endl;
|
||||
#endif
|
||||
btnLogz->setChecked(yes);
|
||||
#endif
|
||||
the_plot->LogZ(yes);
|
||||
ResetRange();
|
||||
}
|
||||
|
||||
|
||||
void SlsQt2DPlotLayout::SetXTitle(QString st){
|
||||
GetPlot()->axisWidget(QwtPlot::xBottom)->setTitle(st);
|
||||
#ifndef IAN
|
||||
QwtText title(st);
|
||||
title.setFont(QFont("Sans Serif",11,QFont::Normal));
|
||||
GetPlot()->axisWidget(QwtPlot::xBottom)->setTitle(title);
|
||||
#else
|
||||
GetPlot()->axisWidget(QwtPlot::xBottom)->setTitle(st);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::SetYTitle(QString st){
|
||||
GetPlot()->axisWidget(QwtPlot::yLeft)->setTitle(st);
|
||||
#ifndef IAN
|
||||
QwtText title(st);
|
||||
title.setFont(QFont("Sans Serif",11,QFont::Normal));
|
||||
GetPlot()->axisWidget(QwtPlot::yLeft)->setTitle(title);
|
||||
#else
|
||||
GetPlot()->axisWidget(QwtPlot::yLeft)->setTitle(st);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::SetZTitle(QString st){
|
||||
GetPlot()->axisWidget(QwtPlot::yRight)->setTitle(st);
|
||||
#ifndef IAN
|
||||
QwtText title(st);
|
||||
title.setFont(QFont("Sans Serif",11,QFont::Normal));
|
||||
GetPlot()->axisWidget(QwtPlot::yRight)->setTitle(title);
|
||||
#else
|
||||
GetPlot()->axisWidget(QwtPlot::yRight)->setTitle(st);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::SetTitle(QString st){
|
||||
setTitle(st);
|
||||
|
||||
#ifndef IAN
|
||||
void SlsQt2DPlotLayout::SetZRange(double zmin, double zmax){
|
||||
#ifdef VERBOSE
|
||||
cout<<"zmin:"<<zmin<<"\tzmax:"<<zmax<<endl;
|
||||
#endif
|
||||
z_range_ne->SetNumber(zmin,0);
|
||||
z_range_ne->SetNumber(zmax,1);
|
||||
cout<<"\n\nthe valuessssssssssssssss:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
ResetRange();
|
||||
cout<<"finaaaal valueeeeeeees:"<<z_range_ne->GetValue(0)<<"\t"<<z_range_ne->GetValue(1)<<endl;
|
||||
}
|
||||
|
||||
void SlsQt2DPlotLayout::EnableZRange(bool enable){
|
||||
#ifdef VERBOSE
|
||||
cout<<"Setting Z Range Enable to "<<enable<<endl;
|
||||
#endif
|
||||
zRangeChecked = enable;
|
||||
ResetRange();
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user