void AM2DScanView::makeConnections() { // connect resize event from graphicsView to resize the stuff inside the view connect(gExclusiveView_, SIGNAL(resized(QSizeF)), this, SLOT(resizeExclusiveViews()), Qt::QueuedConnection); connect(gMultiView_, SIGNAL(resized(QSizeF)), this, SLOT(resizeMultiViews()), Qt::QueuedConnection); connect(scansModel_, SIGNAL(exclusiveDataSourceChanged(QString)), this, SLOT(onExclusiveDataSourceChanged(QString))); connect(scansModel_, SIGNAL(scanAdded(AMScan*)), this, SLOT(onScanAdded(AMScan*))); connect(exclusiveView_, SIGNAL(selectedRectChanged(QRectF)), this, SLOT(onSelectedRectChanged(QRectF))); connect(exclusive2DScanBar_, SIGNAL(showSpectra(bool)), this, SLOT(setSpectrumViewVisibility(bool))); connect(exclusiveView_, SIGNAL(dataPositionChanged(QPointF)), this, SLOT(onDataPositionChanged(QPointF))); }
BioXASSSRLMonochromatorEnergyCalibrationView::BioXASSSRLMonochromatorEnergyCalibrationView(BioXASSSRLMonochromator *mono, AMScan *scan, QWidget *parent) : QWidget(parent) { // Initialize local variables. monoEnergy_ = 0; desiredEnergy_ = 0; mono_ = 0; currentScan_ = 0; scanViewModel_ = 0; // Create UI elements. loadDataButton_ = new QPushButton("Load data"); loadDataButton_->setToolTip("Use previously acquired data for calibration."); newDataButton_ = new QPushButton("New data"); newDataButton_->setToolTip("Configure a new scan for calibration."); scanView_ = new AMScanView(); scanViewModel_ = scanView_->model(); scanSourcesEditor_ = new AMDataSourcesEditor(scanViewModel_); QLabel *monoEnergyPrompt = new QLabel("Mono energy: "); monoEnergySpinBox_ = new QDoubleSpinBox(this); monoEnergySpinBox_->setValue(0); QLabel *desiredEnergyPrompt = new QLabel("Desired energy: "); desiredEnergySpinBox_ = new QDoubleSpinBox(this); desiredEnergySpinBox_->setValue(0); calibrateButton_ = new QPushButton("Calibrate"); chooseScanDialog_ = 0; // Create and set layouts. QVBoxLayout *dataButtonsLayout = new QVBoxLayout(); dataButtonsLayout->addWidget(loadDataButton_); dataButtonsLayout->addWidget(newDataButton_); QGridLayout *energyLayout = new QGridLayout(); energyLayout->addWidget(monoEnergyPrompt, 0, 0, 1, 1, Qt::AlignRight); energyLayout->addWidget(monoEnergySpinBox_, 0, 1); energyLayout->addWidget(desiredEnergyPrompt, 1, 0, 1, 1, Qt::AlignRight); energyLayout->addWidget(desiredEnergySpinBox_, 1, 1); energyLayout->addWidget(calibrateButton_, 1, 2); QHBoxLayout *calibrationViewLayout = new QHBoxLayout(); calibrationViewLayout->addLayout(dataButtonsLayout); calibrationViewLayout->addLayout(energyLayout); QGroupBox *calibrationView = new QGroupBox(); calibrationView->setLayout(calibrationViewLayout); QVBoxLayout *leftLayout = new QVBoxLayout(); leftLayout->addWidget(scanView_); leftLayout->addWidget(calibrationView); QVBoxLayout *rightLayout = new QVBoxLayout(); rightLayout->addWidget(scanSourcesEditor_); QHBoxLayout *layout = new QHBoxLayout(); layout->addLayout(leftLayout); layout->addLayout(rightLayout); setLayout(layout); // Make connections. connect( loadDataButton_, SIGNAL(clicked()), this, SLOT(onLoadDataButtonClicked()) ); connect( newDataButton_, SIGNAL(clicked()), this, SIGNAL(energyCalibrationScanRequested()) ); connect( scanView_, SIGNAL(dataPositionChanged(QPointF)), this, SLOT(onScanViewDataPositionChanged(QPointF)) ); connect( monoEnergySpinBox_, SIGNAL(valueChanged(double)), this, SLOT(setMonoEnergy(double)) ); connect( desiredEnergySpinBox_, SIGNAL(valueChanged(double)), this, SLOT(setDesiredEnergy(double)) ); connect( calibrateButton_, SIGNAL(clicked()), this, SLOT(onCalibrateButtonClicked()) ); // Initial settings. update(); // Current settings. setMono(mono); setCurrentScan(scan); }
REIXSRIXSScanConfigurationView::REIXSRIXSScanConfigurationView(REIXSXESScanConfiguration* config, QWidget *parent) : AMScanConfigurationView(parent) { if(config) { configuration_ = config; ownsConfiguration_ = false; } else { configuration_ = new REIXSXESScanConfiguration(this); ownsConfiguration_ = true; } chooseScanDialog_ = 0; /* image_ = new MPlotSeriesBasic(); image_->setColorMap(*colorMap_); */ currentScan_ = 0; queueView_ = new AMActionRunnerQueueView3(AMActionRunner3::workflow()); detectorOptions = new QGroupBox("Initial Setup"); stopScanOptions = new QGroupBox("Stop scan when..."); nameOptions = new QGroupBox("Scan meta-data"); XASEnergySelect = new QGroupBox("Select Scan Energy"); energyBox_ = new QDoubleSpinBox(); energyBox_->setDecimals(2); energyBox_->setEnabled(true); energyBox_->setRange(92,2000); energyBox_->setValue(configuration_->energy()); energyBox_->setSingleStep(0.1); energyBoxLabel_ = new QLabel("RIXS Excitation Energy:"); slitWidthBox_= new QDoubleSpinBox(); slitWidthBox_->setRange(5,500); slitWidthBox_->setValue(configuration_->slitWidth()); slitWidthBox_->setSingleStep(5); slitWidthBox_->setDecimals(0); slitWidthBox_->setEnabled(configuration_->applySlitWidth()); applySlitWidthBox_ = new QCheckBox("Slit Width"); applySlitWidthBox_->setChecked(configuration_->applySlitWidth()); polarizationBox_ = new QComboBox(); polarizationBox_->addItem("Circular Left"); polarizationBox_->addItem("Circular Right"); polarizationBox_->addItem("Linear Horizontal"); polarizationBox_->addItem("Linear Vertical +"); polarizationBox_->addItem("Linear Vertical -"); polarizationBox_->addItem("Linear Inclined"); polarizationBox_->setCurrentIndex(configuration_->polarization()); polarizationBox_->setEnabled(configuration_->applyPolarization()); applyPolarizationBox_ = new QCheckBox("Polarization"); applyPolarizationBox_->setChecked(configuration_->applyPolarization()); polarizationAngleBox_ = new QDoubleSpinBox(); polarizationAngleBox_->setDecimals(0); polarizationAngleBox_->setRange(-180,180); polarizationAngleBox_->setEnabled((configuration_->applyPolarization() && (configuration_->polarization() == 5))); polarizationAngleBox_->setValue(configuration_->polarizationAngle()); polarizationAngleBox_->setSingleStep(10); polarizationAngleLabel_ = new QLabel(); polarizationAngleLabel_->setText(" Angle"); doNotClearExistingCountsOption_ = new QCheckBox("Do not clear previous detector data"); maximumTotalCounts_ = new QDoubleSpinBox(); maximumTimeEdit_ = new QTimeEdit(); numberEdit_ = new QSpinBox(); numberEdit_->setRange(0, 10000); numberEdit_->setEnabled(false); nameEdit_ = new QLineEdit(); sampleSelector_ = new AMSamplePre2013Editor(AMDatabase::database("user")); autoNamingCheckBox_ = new QCheckBox("from last sample move"); maximumTotalCounts_->setDecimals(0); maximumTotalCounts_->setRange(10, 1000000000); maximumTimeEdit_->setDisplayFormat("hh:mm:ss"); XASScanName_ = new QLabel("Select XAS Scan..."); /* addEnergy_ = new QPushButton(); addEnergy_->setText("Add Energy"); QIcon down; down.addFile(QString::fromUtf8(":/22x22/go-down-dark.png"), QSize(), QIcon::Normal, QIcon::Off); addEnergy_->setIcon(down); queueScan_ = new QPushButton(); queueScan_->setText("Add This Energy"); */ loadXASData_ = new QPushButton(); loadXASData_->setText("Load XAS Scan"); // Add scan view (plots) scanView_ = new AMScanView(); scanView_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); scanView_->changeViewMode(AMScanView::Tabs); // share the scan set model with the AMScanView scanSetModel_ = scanView_->model(); /* plot_ = new MPlot(); plotWidget_ = new MPlotWidget(); plotWidget_->setPlot(plot_); plot_->plotArea()->setBrush(QBrush(QColor(Qt::white))); plot_->axisRight()->setTicks(0); plot_->axisBottom()->setTicks(4); plot_->axisLeft()->showGrid(false); plot_->axisBottom()->showAxisName(false); plot_->axisLeft()->showAxisName(false); plot_->axisScaleBottom()->setPadding(0); plot_->axisScaleLeft()->setPadding(0); image_ = 0; */ QGridLayout* RIXSView = new QGridLayout(); QGridLayout* initialSetupLayout = new QGridLayout(); initialSetupLayout->addWidget(applySlitWidthBox_,1,0); initialSetupLayout->addWidget(slitWidthBox_,1,1); initialSetupLayout->addWidget(applyPolarizationBox_,2,0); initialSetupLayout->addWidget(polarizationBox_,2,1); initialSetupLayout->addWidget(polarizationAngleLabel_,3,0); initialSetupLayout->addWidget(polarizationAngleBox_,3,1); initialSetupLayout->addWidget(doNotClearExistingCountsOption_,4,0,1,2,0); detectorOptions->setLayout(initialSetupLayout); QFormLayout* stopScanWhenLayout = new QFormLayout(); stopScanWhenLayout->addRow("Total Counts Reaches", maximumTotalCounts_); stopScanWhenLayout->addRow("After this much time", maximumTimeEdit_); stopScanOptions->setLayout(stopScanWhenLayout); QFormLayout* scanMetaDataLayout = new QFormLayout(); scanMetaDataLayout->addRow("Scan base name", nameEdit_); /* scanMetaDataLayout->addRow("Number", numberEdit_); */ scanMetaDataLayout->addRow("Sample", sampleSelector_); scanMetaDataLayout->addRow("Set automatically", autoNamingCheckBox_); nameOptions->setLayout(scanMetaDataLayout); QGridLayout* XASScanViewLayout = new QGridLayout(); XASScanViewLayout->addWidget(scanView_,0,0,1,5); XASScanViewLayout->addWidget(energyBoxLabel_,1,0); XASScanViewLayout->addWidget(energyBox_,1,1); /* XASScanViewLayout->addWidget(queueScan_,1,2); */ XASScanViewLayout->addWidget(loadXASData_,1,4); XASEnergySelect->setLayout(XASScanViewLayout); RIXSView->addWidget(detectorOptions, 0,0); RIXSView->addWidget(stopScanOptions,1,0); RIXSView->addWidget(nameOptions,2,0); RIXSView->addWidget(XASEnergySelect,0,1,3,1); RIXSView->addWidget(queueView_, 3,0,1,2); QVBoxLayout* outerVLayout = new QVBoxLayout(); outerVLayout->setContentsMargins(0,0,0,0); outerVLayout->setSpacing(0); outerVLayout->addWidget(new AMTopFrame("Setup RIXS Scans", QIcon(":/utilities-system-monitor.png"))); outerVLayout->addLayout(RIXSView); setLayout(outerVLayout); currentCalibrationId_ = -1; maximumTotalCounts_->setValue(configuration_->maximumTotalCounts()); maximumTimeEdit_->setTime(QTime().addSecs(int(configuration_->maximumDurationSeconds()))); doNotClearExistingCountsOption_->setChecked(configuration_->doNotClearExistingCounts()); nameEdit_->setText(configuration_->userScanName()); numberEdit_->setValue(configuration_->scanNumber()); sampleSelector_->setCurrentSampleFromId(configuration_->sampleId()); autoNamingCheckBox_->setChecked(configuration_->namedAutomatically()); onAutoNamingCheckboxClicked(configuration_->namedAutomatically()); configuration_->setApplyEnergy(true); connect(loadXASData_, SIGNAL(clicked()), this, SLOT(onloadXASDataClicked())); /* connect(queueScan_, SIGNAL(clicked()), this, SLOT(onQueueScanClicked())); */ connect(applySlitWidthBox_, SIGNAL(toggled(bool)),slitWidthBox_,SLOT(setEnabled(bool))); connect(applySlitWidthBox_, SIGNAL(clicked(bool)), configuration_, SLOT(setApplySlitWidth(bool))); connect(slitWidthBox_, SIGNAL(valueChanged(double)), configuration_, SLOT(setSlitWidth(double))); connect(energyBox_, SIGNAL(valueChanged(double)), configuration_, SLOT(setEnergy(double))); connect(applyPolarizationBox_, SIGNAL(clicked(bool)), configuration_, SLOT(setApplyPolarization(bool))); connect(polarizationBox_, SIGNAL(currentIndexChanged(int)), configuration_, SLOT(setPolarization(int))); connect(polarizationAngleBox_, SIGNAL(valueChanged(double)), configuration_, SLOT(setPolarizationAngle(double))); connect(applyPolarizationBox_, SIGNAL(clicked(bool)), polarizationBox_, SLOT(setEnabled(bool))); connect(applyPolarizationBox_, SIGNAL(clicked(bool)), this, SLOT(reviewPolarizationAngleBoxEnabled())); connect(polarizationBox_, SIGNAL(activated(int)), this, SLOT(reviewPolarizationAngleBoxEnabled())); connect(doNotClearExistingCountsOption_, SIGNAL(toggled(bool)), configuration_, SLOT(setDoNotClearExistingCounts(bool))); connect(maximumTotalCounts_, SIGNAL(valueChanged(double)), configuration_, SLOT(setMaximumTotalCounts(double))); connect(maximumTimeEdit_, SIGNAL(timeChanged(QTime)), this, SLOT(onMaximumTimeEditChanged(QTime))); connect(autoNamingCheckBox_, SIGNAL(clicked(bool)), this, SLOT(onAutoNamingCheckboxClicked(bool))); connect(nameEdit_, SIGNAL(textEdited(QString)), configuration_, SLOT(setUserScanName(QString))); connect(numberEdit_, SIGNAL(valueChanged(int)), configuration_, SLOT(setScanNumber(int))); connect(sampleSelector_, SIGNAL(currentSampleChanged(int)), configuration_, SLOT(setSampleId(int))); connect(autoNamingCheckBox_, SIGNAL(clicked(bool)), configuration_, SLOT(setNamedAutomatically(bool))); connect(scanView_, SIGNAL(dataPositionChanged(QPointF)), this, SLOT(onDataPositionToolChanged(QPointF))); connect(energyBox_, SIGNAL(valueChanged(double)), this, SLOT(onEnergySpinBoxChanged(double))); }