mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-22 01:27:59 +02:00
done with save plot and all resizing options
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@5 af1100a4-978c-4157-bff7-07162d2ba061
This commit is contained in:
@ -10,104 +10,24 @@
|
||||
#include "SlsQt1DPlot.h"
|
||||
#include "SlsQt2DPlotLayout.h"
|
||||
/** Qt Include Headers */
|
||||
#include <QFrame>
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
|
||||
#include <QImage>
|
||||
#include <QPainter>
|
||||
/** C++ Include Headers */
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <QSizePolicy>
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
qCloneWidget::qCloneWidget(QWidget *parent,int id,QSize fSize,QString title,int numDim,SlsQt1DPlot*& plot1D,SlsQt2DPlotLayout*& plot2D):QMainWindow(parent),id(id){
|
||||
qCloneWidget::qCloneWidget(QWidget *parent,int id,QString title,int numDim,SlsQt1DPlot*& plot1D,SlsQt2DPlotLayout*& plot2D,string FilePath):QFrame(parent,Qt::Popup|Qt::SubWindow),id(id),filePath(FilePath){
|
||||
/** Window title*/
|
||||
char winTitle[100];
|
||||
sprintf(winTitle,"SLS Detector GUI Clone %d",id);
|
||||
setWindowTitle(QString(winTitle));
|
||||
|
||||
|
||||
/* mainLayout = new QGridLayout(this);
|
||||
setLayout(mainLayout);*/
|
||||
|
||||
|
||||
|
||||
|
||||
QGroupBox *cloneBox = new QGroupBox(this);
|
||||
QGridLayout *gridClone = new QGridLayout(cloneBox);
|
||||
cloneBox->setLayout(gridClone);
|
||||
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);
|
||||
}
|
||||
|
||||
cloneBox->setCentralWidget();
|
||||
|
||||
/*
|
||||
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);*/
|
||||
/** Set up widget*/
|
||||
SetupWidgetWindow(title,numDim,plot1D,plot2D);
|
||||
|
||||
}
|
||||
|
||||
@ -115,9 +35,129 @@ qCloneWidget::qCloneWidget(QWidget *parent,int id,QSize fSize,QString title,int
|
||||
qCloneWidget::~qCloneWidget(){
|
||||
delete cloneplot1D;
|
||||
delete cloneplot2D;
|
||||
delete cloneBox;
|
||||
delete boxSave;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void qCloneWidget::SetupWidgetWindow(QString title,int numDim,SlsQt1DPlot*& plot1D,SlsQt2DPlotLayout*& plot2D){
|
||||
|
||||
/** Main Window Layout */
|
||||
mainLayout = new QGridLayout(this);
|
||||
setLayout(mainLayout);
|
||||
|
||||
/** plot group box*/
|
||||
cloneBox = new QGroupBox(this);
|
||||
gridClone = new QGridLayout(cloneBox);
|
||||
cloneBox->setLayout(gridClone);
|
||||
cloneBox->setContentsMargins(0,0,0,0);
|
||||
//cloneBox->resize(400,200);
|
||||
cloneBox->setTitle(title);
|
||||
cloneBox->setAlignment(Qt::AlignHCenter);
|
||||
cloneBox->setFont(QFont("Sans Serif",11,QFont::Bold));
|
||||
/** According to dimensions, create appropriate 1D or 2Dplot */
|
||||
if(numDim==1){
|
||||
cloneplot1D = plot1D;
|
||||
gridClone->addWidget(cloneplot1D,0,0);
|
||||
cloneBox->setFlat(false);
|
||||
cloneBox->setContentsMargins(0,30,0,0);
|
||||
|
||||
}else{
|
||||
cloneplot2D = plot2D;
|
||||
//cloneplot2D->setContentsMargins(0,0,0,0);
|
||||
gridClone->addWidget(cloneplot2D,0,0);
|
||||
cloneBox->setFlat(true);
|
||||
cloneBox->setContentsMargins(0,5,0,0);
|
||||
}
|
||||
|
||||
/** Save group box */
|
||||
boxSave = new QGroupBox("Save",this);
|
||||
boxSave->setFixedHeight(45);
|
||||
boxSave->setContentsMargins(0,8,0,0);
|
||||
layoutSave = new QHBoxLayout;
|
||||
boxSave->setLayout(layoutSave);
|
||||
/** Label file name*/
|
||||
lblFName = new QLabel("File Name:",this);
|
||||
layoutSave->addWidget(lblFName);
|
||||
/** To get 0 spacing between the next 2 widgets file name and file format */
|
||||
hLayoutSave = new QHBoxLayout();
|
||||
layoutSave->addLayout(hLayoutSave);
|
||||
hLayoutSave->setSpacing(0);
|
||||
/** file name */
|
||||
dispFName = new QLineEdit(this);
|
||||
hLayoutSave->addWidget(dispFName);
|
||||
/** file format */
|
||||
comboFormat = new QComboBox(this);
|
||||
comboFormat->setFrame(true);
|
||||
comboFormat->addItem(".gif");
|
||||
comboFormat->addItem(".pdf");
|
||||
comboFormat->addItem(".png");
|
||||
comboFormat->addItem(".gif+");
|
||||
comboFormat->addItem(".jpg");
|
||||
comboFormat->addItem(".ps");
|
||||
comboFormat->addItem(".eps");
|
||||
comboFormat->addItem(".xpm");
|
||||
comboFormat->addItem(".C");
|
||||
hLayoutSave->addWidget(comboFormat);
|
||||
/** save button */
|
||||
btnSave = new QPushButton("Save",this);
|
||||
btnSave->setFocusPolicy(Qt::NoFocus);
|
||||
layoutSave->addWidget(btnSave);
|
||||
/** automatic file name check box */
|
||||
chkAutoFName = new QCheckBox("Automatic File Name",this);
|
||||
layoutSave->addWidget(chkAutoFName);
|
||||
/** automatic save all check box */
|
||||
chkSaveAll = new QCheckBox("Save All",this);
|
||||
layoutSave->addWidget(chkSaveAll);
|
||||
|
||||
/** main window widgets */
|
||||
mainLayout->addWidget(boxSave,0,0);
|
||||
mainLayout->addWidget(cloneBox,1,0);
|
||||
|
||||
/** Save */
|
||||
connect(btnSave, SIGNAL(clicked()), this, SLOT(SavePlot()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void qCloneWidget::SetCloneHists(int nHists,int histNBins,double* histXAxis,double* histYAxis[],string histTitle[]){
|
||||
/** for each plot*/
|
||||
for(int hist_num=0;hist_num<nHists;hist_num++){
|
||||
/** create hists */
|
||||
SlsQtH1D* k;
|
||||
if(hist_num+1>cloneplot1D_hists.size()){
|
||||
cloneplot1D_hists.append(k=new SlsQtH1D("1d plot",histNBins,histXAxis,histYAxis[hist_num]));
|
||||
k->SetLineColor(hist_num+1);
|
||||
}else{
|
||||
k=cloneplot1D_hists.at(hist_num);
|
||||
k->SetData(histNBins,histXAxis,histYAxis[hist_num]);
|
||||
}
|
||||
k->setTitle(histTitle[hist_num].c_str());
|
||||
k->Attach(cloneplot1D);
|
||||
}
|
||||
cloneplot1D->UnZoom();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void qCloneWidget::SavePlot(){
|
||||
QString fName = QString(filePath.c_str())+'/'+dispFName->text()+comboFormat->currentText();
|
||||
QImage img(cloneBox->size().width(),cloneBox->size().height(),QImage::Format_RGB32);
|
||||
QPainter painter(&img);
|
||||
cloneBox->render(&painter);
|
||||
img.save(fName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void qCloneWidget::closeEvent(QCloseEvent* event){
|
||||
emit CloneClosedSignal(id);
|
||||
event->accept();
|
||||
|
Reference in New Issue
Block a user