mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-08 13:50:04 +02:00
trim tab works except for graph
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@51 af1100a4-978c-4157-bff7-07162d2ba061
This commit is contained in:
parent
b67f3a83d8
commit
a4a0237711
@ -31,7 +31,7 @@
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="groupBox_4">
|
||||
<widget class="QGroupBox" name="boxTrimming">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -55,6 +55,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="gridLayoutWidget_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
@ -98,7 +101,7 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<widget class="QLabel" name="lblExpTime">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
@ -140,6 +143,9 @@
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
</property>
|
||||
@ -248,29 +254,51 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_16">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Output Directory:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="6">
|
||||
<widget class="QLineEdit" name="dispOutput"/>
|
||||
</item>
|
||||
<item row="4" column="8">
|
||||
<widget class="QPushButton" name="btnBrowseOutput">
|
||||
<widget class="QLabel" name="lblFile">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><nobr>
|
||||
Trimfile to which the resulting trimbits will be written.
|
||||
</nobr><br><nobr>
|
||||
An extension given by the modules serial number will be attached.
|
||||
</nobr></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Output Trim File: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="6">
|
||||
<widget class="QLineEdit" name="dispFile">
|
||||
<property name="toolTip">
|
||||
<string><nobr>
|
||||
Trimfile to which the resulting trimbits will be written.
|
||||
</nobr><br><nobr>
|
||||
An extension given by the modules serial number will be attached.
|
||||
</nobr></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="8">
|
||||
<widget class="QPushButton" name="btnFile">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><nobr>
|
||||
Trimfile to which the resulting trimbits will be written.
|
||||
</nobr><br><nobr>
|
||||
An extension given by the modules serial number will be attached.
|
||||
</nobr></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
@ -284,7 +312,7 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="2">
|
||||
<widget class="QPushButton" name="btnStartTrimming">
|
||||
<widget class="QPushButton" name="btnStart">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
@ -297,12 +325,12 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="7" colspan="2">
|
||||
<widget class="QDoubleSpinBox" name="spinExpTime_2">
|
||||
<widget class="QDoubleSpinBox" name="spinThreshold">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@ -326,14 +354,17 @@
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>2000000000.000000000000000</double>
|
||||
<double>10000.000000000000000</double>
|
||||
</property>
|
||||
<property name="value">
|
||||
<double>560.000000000000000</double>
|
||||
@ -352,7 +383,7 @@
|
||||
<string>Sets the Threshold DAC</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Threshold:</string>
|
||||
<string>Threshold (DACu):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -379,7 +410,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<widget class="QLabel" name="lblResolution">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
@ -392,7 +423,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="2">
|
||||
<widget class="QSpinBox" name="spinNumMeasurements">
|
||||
<widget class="QSpinBox" name="spinResolution">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
@ -412,6 +443,9 @@
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
@ -419,7 +453,7 @@
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>2000000000</number>
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>4</number>
|
||||
@ -453,7 +487,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<widget class="QLabel" name="label_18">
|
||||
<widget class="QLabel" name="lblCounts">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
@ -466,7 +500,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="7" colspan="2">
|
||||
<widget class="QSpinBox" name="spinNumMeasurements_2">
|
||||
<widget class="QSpinBox" name="spinCounts">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
@ -486,14 +520,17 @@
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>2000000000</number>
|
||||
<number>16000000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>500</number>
|
||||
@ -529,7 +566,7 @@
|
||||
<number>34</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton_4">
|
||||
<widget class="QRadioButton" name="radioNoPlot">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
@ -539,10 +576,13 @@
|
||||
<property name="text">
|
||||
<string>No Plot</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton_5">
|
||||
<widget class="QRadioButton" name="radioDataGraph">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
@ -555,7 +595,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton_6">
|
||||
<widget class="QRadioButton" name="radioHistogram">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -31,46 +31,6 @@
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="horizontalLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>30</x>
|
||||
<y>50</y>
|
||||
<width>321</width>
|
||||
<height>36</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblModule">
|
||||
<property name="text">
|
||||
<string>Module Number:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="comboModule">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>All Modules</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
@ -112,30 +72,23 @@
|
||||
<widget class="QPushButton" name="btnDigital">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>15</x>
|
||||
<x>75</x>
|
||||
<y>115</y>
|
||||
<width>291</width>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Run</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnGetInfo">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>425</x>
|
||||
<y>55</y>
|
||||
<width>316</width>
|
||||
<height>25</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Get Detector Information</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
@ -177,17 +130,114 @@
|
||||
<widget class="QPushButton" name="btnAnalog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>15</x>
|
||||
<x>85</x>
|
||||
<y>115</y>
|
||||
<width>291</width>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Run</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="horizontalLayoutWidget_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>45</x>
|
||||
<y>30</y>
|
||||
<width>291</width>
|
||||
<height>36</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblModule_2">
|
||||
<property name="text">
|
||||
<string>Detector Status:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lblStatus">
|
||||
<property name="text">
|
||||
<string>Offline</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="gridLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>440</x>
|
||||
<y>29</y>
|
||||
<width>291</width>
|
||||
<height>76</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="lblModule">
|
||||
<property name="text">
|
||||
<string>Module Number:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="comboModule">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>All Modules</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="btnGetInfo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Get Information</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
@ -10,8 +10,8 @@
|
||||
|
||||
/** Qt Project Class Headers */
|
||||
class SlsQtH1D;
|
||||
class SlsQt1DPlot;
|
||||
class SlsQt2DPlotLayout;
|
||||
#include "SlsQt1DPlot.h"
|
||||
#include "SlsQt2DPlotLayout.h"
|
||||
/** Qt Include Headers */
|
||||
#include <QMainWindow>
|
||||
#include <QMenu>
|
||||
@ -29,6 +29,7 @@ class SlsQt2DPlotLayout;
|
||||
#include <QCheckBox>
|
||||
/** C++ Include Headers */
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
@ -78,6 +79,16 @@ public:
|
||||
* */
|
||||
void SetCloneHists(int nHists,int histNBins,double* histXAxis,double* histYAxis,string histTitle[],bool lines,bool markers);
|
||||
|
||||
/**Set the range of the 1d plot
|
||||
* @param IsXYRange array of x,y,min,max if these values are set
|
||||
* @param XYRangeValues array of set values of x,y, min, max
|
||||
*/
|
||||
void SetRange(bool IsXYRange[], double XYRangeValues[]);
|
||||
|
||||
/** Returns the 1d plot
|
||||
*/
|
||||
SlsQt1DPlot* Get1dPlot(){return cloneplot1D;};
|
||||
|
||||
public slots:
|
||||
/** Save Plots automatically by save all clones
|
||||
* returns -1 if fail*/
|
||||
|
@ -26,6 +26,16 @@ public:
|
||||
OK,
|
||||
FAIL
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
enum MessageIndex{
|
||||
WARNING,
|
||||
CRITICAL,
|
||||
INFORMATION,
|
||||
QUESTION
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
/** unit of time
|
||||
*/
|
||||
@ -112,46 +122,35 @@ public:
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/**displays an warning message
|
||||
* @param warningMessage the message to be displayed
|
||||
* @param source is the tab or the source of the warning
|
||||
/**displays an warning,error,info message
|
||||
* @param message the message to be displayed
|
||||
* @param source is the tab or the source of the message
|
||||
* */
|
||||
static void WarningMessage(string warningMessage,string source)
|
||||
{
|
||||
static QMessageBox* warningBox;
|
||||
source.append(": WARNING");
|
||||
warningBox= new QMessageBox(QMessageBox::Warning,source.c_str(),tr(warningMessage.c_str()),QMessageBox::Ok, warningBox);
|
||||
warningBox->exec();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/**displays an error message
|
||||
* @param errorMessage the message to be displayed
|
||||
* @param source is the tab or the source of the error
|
||||
* */
|
||||
static void ErrorMessage(string errorMessage,string source)
|
||||
{
|
||||
static QMessageBox* errorBox;
|
||||
source.append(": ERROR");
|
||||
errorBox= new QMessageBox(QMessageBox::Critical,source.c_str(),tr(errorMessage.c_str()),QMessageBox::Ok, errorBox);
|
||||
errorBox->exec();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/**displays an information message
|
||||
* @param infoMessage the message to be displayed
|
||||
* @param source is the tab or the source of the information
|
||||
* */
|
||||
static void InfoMessage(string infoMessage,string source)
|
||||
static int Message(MessageIndex index, string message,string source)
|
||||
{
|
||||
static QMessageBox* msgBox;
|
||||
source.append(": INFORMATION");
|
||||
msgBox= new QMessageBox(QMessageBox::Information,source.c_str(),tr(infoMessage.c_str()),QMessageBox::Ok, msgBox);
|
||||
msgBox->exec();
|
||||
switch(index){
|
||||
case WARNING:
|
||||
source.append(": WARNING");
|
||||
msgBox= new QMessageBox(QMessageBox::Warning,source.c_str(),tr(message.c_str()),QMessageBox::Ok, msgBox);
|
||||
break;
|
||||
case CRITICAL:
|
||||
source.append(": CRITICAL");
|
||||
msgBox= new QMessageBox(QMessageBox::Critical,source.c_str(),tr(message.c_str()),QMessageBox::Ok, msgBox);
|
||||
break;
|
||||
case INFORMATION:
|
||||
source.append(": INFORMATION");
|
||||
msgBox= new QMessageBox(QMessageBox::Information,source.c_str(),tr(message.c_str()),QMessageBox::Ok, msgBox);
|
||||
break;
|
||||
default:
|
||||
source.append(": QUESTION");
|
||||
msgBox= new QMessageBox(QMessageBox::Question,source.c_str(),tr(message.c_str()),QMessageBox::Ok| QMessageBox::Cancel, msgBox);
|
||||
break;
|
||||
}
|
||||
if(msgBox->exec()==QMessageBox::Ok) return OK; else return FAIL;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/** range of x and y axes
|
||||
|
@ -15,8 +15,6 @@ class multiSlsDetector;
|
||||
#include "SlsQt1DPlot.h"
|
||||
#include "SlsQt2DPlotLayout.h"
|
||||
#include "qDefs.h"
|
||||
class SlsQt1DPlot;
|
||||
class SlsQt2DPlotLayout;
|
||||
class qCloneWidget;
|
||||
/** Qt Include Headers */
|
||||
#include <QWidget>
|
||||
@ -218,8 +216,8 @@ void UpdatePause(){data_pause_over=true;};
|
||||
/** Shows the first save error message while automatic saving
|
||||
* @param fileName file name of the first file that it tried to save.*/
|
||||
void ShowSaveErrorMessage(QString fileName);
|
||||
|
||||
|
||||
/**Shows an error message when acquisition stopped unexpectedly*/
|
||||
void ShowAcquisitionErrorMessage();
|
||||
|
||||
|
||||
private:
|
||||
@ -405,6 +403,7 @@ void SetZRangeSignal(double,double);
|
||||
void EnableZRangeSignal(bool);
|
||||
void SetCurrentMeasurementSignal(int);
|
||||
void saveErrorSignal(QString);
|
||||
void AcquisitionErrorSignal();
|
||||
};
|
||||
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "ui_form_tab_advanced.h"
|
||||
/** Project Class Headers */
|
||||
class multiSlsDetector;
|
||||
#include "sls_detector_defs.h"
|
||||
/** Qt Include Header */
|
||||
#include <QStackedLayout>
|
||||
|
||||
@ -37,6 +38,7 @@ public:
|
||||
void Refresh();
|
||||
|
||||
|
||||
|
||||
private:
|
||||
/** Sets up the widget
|
||||
*/
|
||||
@ -47,14 +49,59 @@ private:
|
||||
void Initialization();
|
||||
|
||||
|
||||
|
||||
private slots:
|
||||
/** Enable/Disable Energy and Calibration Logs
|
||||
*/
|
||||
void SetLogs();
|
||||
|
||||
/** Set acquisition time
|
||||
*/
|
||||
void SetExposureTime();
|
||||
|
||||
/** Set the Threshold dac value
|
||||
*/
|
||||
void SetThreshold();
|
||||
|
||||
/** Set output directory for trimming
|
||||
*/
|
||||
void SetOutputFile();
|
||||
|
||||
/** Browse output directory for trimming
|
||||
*/
|
||||
void BrowseOutputFile();
|
||||
|
||||
/** Enables trimming method and calls SetTrimmingMethod if enabled
|
||||
* @param enable to enable trimming
|
||||
*/
|
||||
void EnableTrimming(bool enable);
|
||||
|
||||
/** Enabling resolution and Counts if this is enabled
|
||||
* @param enable to enable
|
||||
*/
|
||||
void SetOptimize(bool enable);
|
||||
|
||||
/** Sets the trimming method
|
||||
* @param mode trimming method
|
||||
*/
|
||||
void SetTrimmingMethod(int mode);
|
||||
|
||||
/** Ensures the right trimming mode and Executes Trimming
|
||||
*/
|
||||
void StartTrimming();
|
||||
|
||||
private:
|
||||
/** The sls detector object */
|
||||
multiSlsDetector *myDet;
|
||||
|
||||
/** Tool Tip for the output dir */
|
||||
QString outputDirTip;
|
||||
QString errOutputTip;
|
||||
QPalette red;
|
||||
|
||||
/** Trimming mode */
|
||||
slsDetectorDefs::trimMode trimmingMode;
|
||||
|
||||
private slots:
|
||||
/** Enable/Disable Energy and Calibration Logs
|
||||
*/
|
||||
void SetLogs();
|
||||
|
||||
};
|
||||
|
||||
|
@ -84,13 +84,13 @@ void qActionsWidget::SetMode(int mode){
|
||||
if(!fName.isEmpty()){
|
||||
//check if mode didnt get set
|
||||
if(mode!=myDet->getActionMode(id)){
|
||||
qDefs::WarningMessage("The mode could not be changed.","ActionsWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The mode could not be changed.","ActionsWidget");
|
||||
comboScript->setCurrentIndex(myDet->getActionMode(id));
|
||||
}//if mode got set and its custom script
|
||||
else if(mode){
|
||||
//when the file name did not get set correctly
|
||||
if(fName.compare(QString(myDet->getActionScript(id).c_str()))){
|
||||
qDefs::WarningMessage("The file path could not be set.","ActionsWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The file path could not be set.","ActionsWidget");
|
||||
dispScript->setText(QString(myDet->getActionScript(id).c_str()));
|
||||
SetScriptFile();
|
||||
}
|
||||
@ -141,12 +141,12 @@ void qActionsWidget::SetScriptFile(){
|
||||
if(QFile::exists(fName)) set = true;
|
||||
//if the file doesnt exist, set it to what it was before
|
||||
else{
|
||||
qDefs::WarningMessage("The script file entered does not exist","ActionsWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The script file entered does not exist","ActionsWidget");
|
||||
dispScript->setText(QString(myDet->getActionScript(id).c_str()));
|
||||
}
|
||||
}//not a file, set it to what it was before
|
||||
else {
|
||||
qDefs::WarningMessage("The script file path entered is not a file","ActionsWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The script file path entered is not a file","ActionsWidget");
|
||||
dispScript->setText(QString(myDet->getActionScript(id).c_str()));
|
||||
}
|
||||
}
|
||||
@ -158,7 +158,7 @@ void qActionsWidget::SetScriptFile(){
|
||||
if(fName.compare(QString(myDet->getActionScript(id).c_str()))){
|
||||
//did not get set, write what is was before
|
||||
if(!fName.isEmpty())
|
||||
qDefs::WarningMessage("The script file could not be set. Reverting to previous file.","ActionsWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The script file could not be set. Reverting to previous file.","ActionsWidget");
|
||||
dispScript->setText(QString(myDet->getActionScript(id).c_str()));
|
||||
}
|
||||
}
|
||||
|
@ -8,16 +8,13 @@
|
||||
/** Qt Project Class Headers */
|
||||
#include "qCloneWidget.h"
|
||||
#include "qDefs.h"
|
||||
#include "SlsQt1DPlot.h"
|
||||
#include "SlsQt2DPlotLayout.h"
|
||||
/** Qt Include Headers */
|
||||
#include <QImage>
|
||||
#include <QPainter>
|
||||
#include <QFileDialog>
|
||||
#include "qwt_symbol.h"
|
||||
/** C++ Include Headers */
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
@ -99,7 +96,7 @@ void qCloneWidget::SetupWidgetWindow(QString title,int numDim,SlsQt1DPlot*& plot
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
void qCloneWidget::SetCloneHists(int nHists,int histNBins,double* histXAxis,double* histYAxis[],string histTitle[],bool lines,bool markers){
|
||||
/** for each plot*/cout<<"qclone nhists:"<<nHists<<endl;
|
||||
/** for each plot*/cout<<"qclone histYAxis[0][500]:"<<histYAxis[0][500]<<endl;
|
||||
for(int hist_num=0;hist_num<nHists;hist_num++){
|
||||
/** create hists */
|
||||
SlsQtH1D* k;
|
||||
@ -134,7 +131,7 @@ void qCloneWidget::SetCloneHists(int nHists,int histNBins,double* histXAxis,doub
|
||||
|
||||
|
||||
void qCloneWidget::SetCloneHists(int nHists,int histNBins,double* histXAxis,double* histYAxis,string histTitle[],bool lines,bool markers){
|
||||
/** for each plot*/cout<<"qclone nhists:"<<nHists<<endl;
|
||||
/** for each plot*/cout<<"qclone angle nhists:"<<nHists<<endl;
|
||||
for(int hist_num=0;hist_num<nHists;hist_num++){
|
||||
/** create hists */
|
||||
SlsQtH1D* k;
|
||||
@ -162,7 +159,28 @@ void qCloneWidget::SetCloneHists(int nHists,int histNBins,double* histXAxis,doub
|
||||
k->Attach(cloneplot1D);
|
||||
}
|
||||
//cloneplot1D->UnZoom();
|
||||
}//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qCloneWidget::SetRange(bool IsXYRange[],double XYRangeValues[]){
|
||||
double XYCloneRangeValues[4];
|
||||
if(!IsXYRange[qDefs::XMINIMUM]) XYCloneRangeValues[qDefs::XMINIMUM]= cloneplot1D->GetXMinimum();
|
||||
else XYCloneRangeValues[qDefs::XMINIMUM]= XYRangeValues[qDefs::XMINIMUM];
|
||||
if(!IsXYRange[qDefs::XMAXIMUM]) XYCloneRangeValues[qDefs::XMAXIMUM]= cloneplot1D->GetXMaximum();
|
||||
else XYCloneRangeValues[qDefs::XMAXIMUM]= XYRangeValues[qDefs::XMAXIMUM];
|
||||
if(!IsXYRange[qDefs::YMINIMUM]) XYCloneRangeValues[qDefs::YMINIMUM]= cloneplot1D->GetYMinimum();
|
||||
else XYCloneRangeValues[qDefs::YMINIMUM]= XYRangeValues[qDefs::YMINIMUM];
|
||||
if(!IsXYRange[qDefs::YMAXIMUM]) XYCloneRangeValues[qDefs::YMAXIMUM]= cloneplot1D->GetYMaximum();
|
||||
else XYCloneRangeValues[qDefs::YMAXIMUM]= XYRangeValues[qDefs::YMAXIMUM];
|
||||
cloneplot1D->SetXMinMax(XYCloneRangeValues[qDefs::XMINIMUM],XYCloneRangeValues[qDefs::XMAXIMUM]);
|
||||
cloneplot1D->SetYMinMax(XYCloneRangeValues[qDefs::YMINIMUM],XYCloneRangeValues[qDefs::YMAXIMUM]);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
char* qCloneWidget::GetCurrentTimeStamp(){
|
||||
char output[30];
|
||||
@ -198,9 +216,9 @@ void qCloneWidget::SavePlot(){
|
||||
fName = QFileDialog::getSaveFileName(this,tr("Save Snapshot "),fName,tr("PNG Files (*.png);;XPM Files(*.xpm);;JPEG Files(*.jpg)"),0,QFileDialog::ShowDirsOnly);
|
||||
if (!fName.isEmpty())
|
||||
if((img.save(fName)))
|
||||
qDefs::InfoMessage("The SnapShot has been successfully saved","Snapshot");
|
||||
qDefs::Message(qDefs::INFORMATION,"The SnapShot has been successfully saved","Snapshot");
|
||||
else
|
||||
qDefs::WarningMessage("Attempt to save snapshot failed.\n"
|
||||
qDefs::Message(qDefs::WARNING,"Attempt to save snapshot failed.\n"
|
||||
"Formats: .png, .jpg, .xpm.","Snapshot");
|
||||
}
|
||||
|
||||
|
@ -184,11 +184,11 @@ void qDetectorMain::SetUpDetector(){
|
||||
#endif
|
||||
char cIndex[10];
|
||||
sprintf(cIndex,"%d",detID);
|
||||
qDefs::ErrorMessage(string("No Detector Connected at id : ")+string(cIndex),"Main");
|
||||
qDefs::Message(qDefs::CRITICAL,string("No Detector Connected at id : ")+string(cIndex),"Main");
|
||||
exit(-1);
|
||||
}//if the detector is not even connected
|
||||
else if(s->setTCPSocket()==slsDetectorDefs::FAIL){
|
||||
qDefs::ErrorMessage(string("The detector ")+host+string(" is not connected. Exiting GUI."),"Main");
|
||||
qDefs::Message(qDefs::CRITICAL,string("The detector ")+host+string(" is not connected. Exiting GUI."),"Main");
|
||||
cout << "The detector " << host << "is not connected. Exiting GUI." << endl;
|
||||
exit(-1);
|
||||
}
|
||||
@ -204,7 +204,7 @@ void qDetectorMain::SetUpDetector(){
|
||||
string detName = myDet->slsDetectorBase::getDetectorType(detType);
|
||||
string errorMess = host+string(" has unknown detector type \"")+
|
||||
detName+string("\". Exiting GUI.");
|
||||
qDefs::ErrorMessage(errorMess,"Main");
|
||||
qDefs::Message(qDefs::CRITICAL,errorMess,"Main");
|
||||
exit(-1);
|
||||
}
|
||||
setWindowTitle("SLS Detector GUI : "+
|
||||
@ -326,8 +326,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->retrieveDetectorSetup(string(fName.toAscii().constData()))!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Setup Parameters have been loaded successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not load the Setup Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Setup Parameters have been loaded successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not load the Setup Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionSaveSetup){
|
||||
@ -341,8 +341,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->dumpDetectorSetup(string(fName.toAscii().constData()))!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Setup Parameters have been saved successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not save the Setup Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Setup Parameters have been saved successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not save the Setup Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionMeasurementWizard){
|
||||
@ -361,8 +361,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->readConfigurationFile(string(fName.toAscii().constData()))!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Configuration Parameters have been configured successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not load the Configuration Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Configuration Parameters have been configured successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not load the Configuration Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionSaveConfiguration){
|
||||
@ -376,8 +376,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->writeConfigurationFile(string(fName.toAscii().constData()))!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Configuration Parameters have been saved successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not save the Configuration Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Configuration Parameters have been saved successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not save the Configuration Parameters from file:\n")+fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionLoadTrimbits){
|
||||
@ -391,8 +391,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->loadSettingsFile(string(fName.toAscii().constData()),-1)!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Trimbits have been loaded successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not load the Trimbits from file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Trimbits have been loaded successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not load the Trimbits from file:\n")+fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionSaveTrimbits){
|
||||
@ -406,8 +406,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->saveSettingsFile(string(fName.toAscii().constData()),-1)!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Trimbits have been saved successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not save the Trimbits to file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Trimbits have been saved successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not save the Trimbits to file:\n")+fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionLoadCalibration){
|
||||
@ -421,8 +421,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->loadCalibrationFile(string(fName.toAscii().constData()),-1)!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Calibration Data have been loaded successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not load the Calibration data from file:\n")+ fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Calibration Data have been loaded successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not load the Calibration data from file:\n")+ fName.toAscii().constData(),"Main");
|
||||
}
|
||||
}
|
||||
else if(action==actionSaveCalibration){
|
||||
@ -436,8 +436,8 @@ void qDetectorMain::ExecuteUtilities(QAction *action){
|
||||
// Gets called when cancelled as well
|
||||
if (!fName.isEmpty()){
|
||||
if(myDet->saveCalibrationFile(string(fName.toAscii().constData()),-1)!=slsDetectorDefs::FAIL)
|
||||
qDefs::InfoMessage("The Calibration Data have been saved successfully.","Main");
|
||||
else qDefs::WarningMessage(string("Could not save the Calibration data to file:\n")+fName.toAscii().constData(),"Main");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Calibration Data have been saved successfully.","Main");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not save the Calibration data to file:\n")+fName.toAscii().constData(),"Main");
|
||||
|
||||
}
|
||||
}
|
||||
@ -455,7 +455,7 @@ void qDetectorMain::ExecuteHelp(QAction *action){
|
||||
cout << "About: Common GUI for Mythen, Eiger, Gotthard and Agipd detectors" << endl;
|
||||
#endif
|
||||
//<h1 style="font-family:verdana;">A heading</h1>
|
||||
qDefs::InfoMessage("<p style=\"font-family:verdana;\">SLS Detector GUI version: 1.0<br><br>"
|
||||
qDefs::Message(qDefs::INFORMATION,"<p style=\"font-family:verdana;\">SLS Detector GUI version: 1.0<br><br>"
|
||||
"Common GUI to control the SLS Detectors: "
|
||||
"Mythen, Eiger, Gotthard and Agipd.<br><br>"
|
||||
"It can be operated in parallel with the command line interface:<br>"
|
||||
|
@ -120,9 +120,10 @@ void qDrawPlot::SetupWidgetWindow(){
|
||||
histXAxisTitle="Channel Number";
|
||||
histYAxisTitle="Counts";
|
||||
|
||||
char temp_title[2000];
|
||||
|
||||
for(int i=0;i<MAX_1DPLOTS;i++){
|
||||
histTitle[i] = "";
|
||||
//char temp_title[2000];
|
||||
//sprintf(temp_title,"Frame -%d",i);
|
||||
//histTitle[i] = temp_title;
|
||||
}
|
||||
@ -177,6 +178,7 @@ void qDrawPlot::Initialization(){
|
||||
|
||||
connect(this, SIGNAL(SetZRangeSignal(double,double)), plot2D, SLOT(SetZRange(double,double)));
|
||||
|
||||
connect(this, SIGNAL(AcquisitionErrorSignal()), this, SLOT(ShowAcquisitionErrorMessage()));
|
||||
|
||||
|
||||
}
|
||||
@ -289,7 +291,6 @@ bool qDrawPlot::StartOrStopThread(bool start){
|
||||
|
||||
//start part
|
||||
if(start){
|
||||
|
||||
if(myDet->getRunStatus()==slsDetectorDefs::IDLE)
|
||||
cout<<endl<<endl<<"IDLE"<<endl;
|
||||
else cout<<endl<<endl<<"ERRORRRRRR: "<<myDet->getRunStatus()<<endl;
|
||||
@ -624,12 +625,14 @@ int qDrawPlot::AcquisitionFinished(double currentProgress,int detectorStatus){
|
||||
#endif
|
||||
|
||||
//error
|
||||
if((detectorStatus==slsDetectorDefs::IDLE) && (currentProgress!=100)){
|
||||
cout<<"in here"<<endl;
|
||||
if(currentProgress!=100){
|
||||
//just to be sure
|
||||
stop_signal = 1;
|
||||
StartStopDaqToggle(true);
|
||||
emit AcquisitionErrorSignal();
|
||||
}
|
||||
//normal stop
|
||||
else if(!stop_signal){
|
||||
cout<<"COMMENCING"<<endl;
|
||||
currentMeasurement++;
|
||||
cout<<"currentMeasurement:"<<currentMeasurement<<endl;
|
||||
// To start the next measurement
|
||||
@ -643,10 +646,14 @@ int qDrawPlot::AcquisitionFinished(double currentProgress,int detectorStatus){
|
||||
emit UpdatingPlotFinished();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void qDrawPlot::ShowAcquisitionErrorMessage(){
|
||||
int detStatus = (int)myDet->getRunStatus();
|
||||
string status = slsDetectorBase::runStatusType(slsDetectorDefs::runStatus(detStatus));
|
||||
qDefs::Message(qDefs::WARNING,string("<nobr>The acquisiton has ended abruptly. Current Detector Status: ")+status+string(".</nobr>"),"Dock");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@ -684,87 +691,88 @@ void qDrawPlot::UpdatePlot(){
|
||||
#ifdef VERYVERBOSE
|
||||
cout << "Entering UpdatePlot function" << endl;
|
||||
#endif
|
||||
|
||||
plot_update_timer->stop();
|
||||
|
||||
// only if no plot isnt enabled
|
||||
if(plotEnable){
|
||||
LockLastImageArray();
|
||||
//1-d plot stuff
|
||||
if(lastImageNumber){
|
||||
if(histNBins){
|
||||
Clear1DPlot();
|
||||
plot1D->SetXTitle(histXAxisTitle.toAscii().constData());
|
||||
plot1D->SetYTitle(histYAxisTitle.toAscii().constData());
|
||||
for(int hist_num=0;hist_num<(int)nHists;hist_num++){
|
||||
SlsQtH1D* h;
|
||||
if(hist_num+1>plot1D_hists.size()){
|
||||
if(anglePlot)
|
||||
plot1D_hists.append(h=new SlsQtH1D("1d plot",histNBins,histXAngleAxis,histYAngleAxis));
|
||||
else
|
||||
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);
|
||||
if(anglePlot)
|
||||
h->SetData(histNBins,histXAngleAxis,histYAngleAxis);
|
||||
else
|
||||
h->SetData(histNBins,histXAxis,GetHistYAxis(hist_num));
|
||||
if(plot_in_scope==1){
|
||||
if(lastImageNumber){
|
||||
if(histNBins){
|
||||
Clear1DPlot();
|
||||
plot1D->SetXTitle(histXAxisTitle.toAscii().constData());
|
||||
plot1D->SetYTitle(histYAxisTitle.toAscii().constData());
|
||||
for(int hist_num=0;hist_num<(int)nHists;hist_num++){
|
||||
SlsQtH1D* h;
|
||||
if(hist_num+1>plot1D_hists.size()){
|
||||
if(anglePlot)
|
||||
plot1D_hists.append(h=new SlsQtH1D("1d plot",histNBins,histXAngleAxis,histYAngleAxis));
|
||||
else
|
||||
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);
|
||||
if(anglePlot)
|
||||
h->SetData(histNBins,histXAngleAxis,histYAngleAxis);
|
||||
else
|
||||
h->SetData(histNBins,histXAxis,GetHistYAxis(hist_num));
|
||||
}
|
||||
SetStyle(h);
|
||||
h->setTitle(GetHistTitle(hist_num));
|
||||
h->Attach(plot1D);
|
||||
}
|
||||
//h->setSymbol(*noSymbol);
|
||||
//h->SetDotStyle(plotDotted);
|
||||
SetStyle(h);
|
||||
h->setTitle(GetHistTitle(hist_num));
|
||||
h->Attach(plot1D);
|
||||
// update range if required
|
||||
if(XYRangeChanged){
|
||||
if(!IsXYRange[qDefs::XMINIMUM]) XYRangeValues[qDefs::XMINIMUM]= plot1D->GetXMinimum();
|
||||
if(!IsXYRange[qDefs::XMAXIMUM]) XYRangeValues[qDefs::XMAXIMUM]= plot1D->GetXMaximum();
|
||||
if(!IsXYRange[qDefs::YMINIMUM]) XYRangeValues[qDefs::YMINIMUM]= plot1D->GetYMinimum();
|
||||
if(!IsXYRange[qDefs::YMAXIMUM]) XYRangeValues[qDefs::YMAXIMUM]= plot1D->GetYMaximum();
|
||||
plot1D->SetXMinMax(XYRangeValues[qDefs::XMINIMUM],XYRangeValues[qDefs::XMAXIMUM]);
|
||||
plot1D->SetYMinMax(XYRangeValues[qDefs::YMINIMUM],XYRangeValues[qDefs::YMAXIMUM]);
|
||||
XYRangeChanged = false;
|
||||
}
|
||||
if(saveAll) SavePlotAutomatic();
|
||||
}
|
||||
}
|
||||
}//2-d plot stuff
|
||||
else{
|
||||
if(lastImageArray){
|
||||
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);
|
||||
plot2D->GetPlot()->SetData(nPixelsX,-0.5,nPixelsX-0.5,nPixelsY,startPixel,endPixel,lastImageArray);
|
||||
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();
|
||||
}
|
||||
// update range if required
|
||||
if(XYRangeChanged){
|
||||
if(!IsXYRange[qDefs::XMINIMUM]) XYRangeValues[qDefs::XMINIMUM]= plot1D->GetXMinimum();
|
||||
if(!IsXYRange[qDefs::XMAXIMUM]) XYRangeValues[qDefs::XMAXIMUM]= plot1D->GetXMaximum();
|
||||
if(!IsXYRange[qDefs::YMINIMUM]) XYRangeValues[qDefs::YMINIMUM]= plot1D->GetYMinimum();
|
||||
if(!IsXYRange[qDefs::YMAXIMUM]) XYRangeValues[qDefs::YMAXIMUM]= plot1D->GetYMaximum();
|
||||
plot1D->SetXMinMax(XYRangeValues[qDefs::XMINIMUM],XYRangeValues[qDefs::XMAXIMUM]);
|
||||
plot1D->SetYMinMax(XYRangeValues[qDefs::YMINIMUM],XYRangeValues[qDefs::YMAXIMUM]);
|
||||
if(!IsXYRange[qDefs::XMINIMUM]) XYRangeValues[qDefs::XMINIMUM]= plot2D->GetPlot()->GetXMinimum();
|
||||
if(!IsXYRange[qDefs::XMAXIMUM]) XYRangeValues[qDefs::XMAXIMUM]= plot2D->GetPlot()->GetXMaximum();
|
||||
if(!IsXYRange[qDefs::YMINIMUM]) XYRangeValues[qDefs::YMINIMUM]= plot2D->GetPlot()->GetYMinimum();
|
||||
if(!IsXYRange[qDefs::YMAXIMUM]) XYRangeValues[qDefs::YMAXIMUM]= plot2D->GetPlot()->GetYMaximum();
|
||||
plot2D->GetPlot()->SetXMinMax(XYRangeValues[qDefs::XMINIMUM],XYRangeValues[qDefs::XMAXIMUM]);
|
||||
plot2D->GetPlot()->SetYMinMax(XYRangeValues[qDefs::YMINIMUM],XYRangeValues[qDefs::YMAXIMUM]);
|
||||
XYRangeChanged = false;
|
||||
}
|
||||
if(saveAll) SavePlotAutomatic();
|
||||
}
|
||||
}
|
||||
//2-d plot stuff
|
||||
//cout<<"npixelsx:"<<nPixelsX<<
|
||||
if(lastImageArray){
|
||||
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);
|
||||
plot2D->GetPlot()->SetData(nPixelsX,-0.5,nPixelsX-0.5,nPixelsY,startPixel,endPixel,lastImageArray);
|
||||
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();
|
||||
}
|
||||
// update range if required
|
||||
if(XYRangeChanged){
|
||||
if(!IsXYRange[qDefs::XMINIMUM]) XYRangeValues[qDefs::XMINIMUM]= plot2D->GetPlot()->GetXMinimum();
|
||||
if(!IsXYRange[qDefs::XMAXIMUM]) XYRangeValues[qDefs::XMAXIMUM]= plot2D->GetPlot()->GetXMaximum();
|
||||
if(!IsXYRange[qDefs::YMINIMUM]) XYRangeValues[qDefs::YMINIMUM]= plot2D->GetPlot()->GetYMinimum();
|
||||
if(!IsXYRange[qDefs::YMAXIMUM]) XYRangeValues[qDefs::YMAXIMUM]= plot2D->GetPlot()->GetYMaximum();
|
||||
plot2D->GetPlot()->SetXMinMax(XYRangeValues[qDefs::XMINIMUM],XYRangeValues[qDefs::XMAXIMUM]);
|
||||
plot2D->GetPlot()->SetYMinMax(XYRangeValues[qDefs::YMINIMUM],XYRangeValues[qDefs::YMAXIMUM]);
|
||||
XYRangeChanged = false;
|
||||
}
|
||||
if(saveAll) SavePlotAutomatic();
|
||||
}
|
||||
}
|
||||
last_plot_number=lastImageNumber;
|
||||
|
||||
if(plotEnable) UnlockLastImageArray();
|
||||
|
||||
|
||||
if(!frameFactor)
|
||||
plot_update_timer->start((int)timerValue);
|
||||
else
|
||||
plot_update_timer->start((int)PLOT_TIMER_MS);
|
||||
//if acqq stopped before this line, it continues from here, shouldnt restart plotting timer
|
||||
if(!stop_signal){
|
||||
if(!frameFactor)
|
||||
plot_update_timer->start((int)timerValue);
|
||||
else
|
||||
plot_update_timer->start((int)PLOT_TIMER_MS);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -804,17 +812,21 @@ void qDrawPlot::ClonePlot(){
|
||||
plot1D->SetYTitle(histYAxisTitle.toAscii().constData());
|
||||
plotLayout->addWidget(plot1D,1,1,1,1);
|
||||
if(running){
|
||||
if(anglePlot)
|
||||
winClone[i]->SetCloneHists((int)nHists,histNBins,histXAxis,histYAxis,histTitle);
|
||||
else
|
||||
winClone[i]->SetCloneHists((int)nHists,histNBins,histXAngleAxis,histYAngleAxis,histTitle);
|
||||
// update range
|
||||
if(!IsXYRange[qDefs::XMINIMUM]) XYRangeValues[qDefs::XMINIMUM]= plot1D->GetXMinimum();
|
||||
if(!IsXYRange[qDefs::XMAXIMUM]) XYRangeValues[qDefs::XMAXIMUM]= plot1D->GetXMaximum();
|
||||
if(!IsXYRange[qDefs::YMINIMUM]) XYRangeValues[qDefs::YMINIMUM]= plot1D->GetYMinimum();
|
||||
if(!IsXYRange[qDefs::YMAXIMUM]) XYRangeValues[qDefs::YMAXIMUM]= plot1D->GetYMaximum();
|
||||
plot1D->SetXMinMax(XYRangeValues[qDefs::XMINIMUM],XYRangeValues[qDefs::XMAXIMUM]);
|
||||
plot1D->SetYMinMax(XYRangeValues[qDefs::YMINIMUM],XYRangeValues[qDefs::YMAXIMUM]);
|
||||
bool found =false;
|
||||
for(int index=0;index<4;index++)
|
||||
if(IsXYRange[index]){
|
||||
found=true;
|
||||
break;
|
||||
}
|
||||
if(found) winClone[i]->SetRange(IsXYRange,XYRangeValues);
|
||||
//copy data
|
||||
LockLastImageArray();
|
||||
if(!anglePlot)
|
||||
winClone[i]->SetCloneHists((int)nHists,histNBins,histXAxis,histYAxis,histTitle,lines,markers);
|
||||
else
|
||||
winClone[i]->SetCloneHists((int)nHists,histNBins,histXAngleAxis,histYAngleAxis,histTitle,lines,markers);
|
||||
UnlockLastImageArray();
|
||||
}
|
||||
}
|
||||
else{
|
||||
@ -855,9 +867,9 @@ void qDrawPlot::SaveClones(){
|
||||
}
|
||||
}
|
||||
if(success)
|
||||
qDefs::InfoMessage("The Snapshots have all been saved successfully in .png.","Dock");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Snapshots have all been saved successfully in .png.","Dock");
|
||||
else
|
||||
qDefs::WarningMessage(errMessage + string("were not saved."),"Dock");
|
||||
qDefs::Message(qDefs::WARNING,errMessage + string("were not saved."),"Dock");
|
||||
}
|
||||
|
||||
|
||||
@ -897,9 +909,9 @@ void qDrawPlot::SavePlot(){
|
||||
|
||||
if (!fName.isEmpty())
|
||||
if(savedImage.save(fName))
|
||||
qDefs::InfoMessage("The Image has been successfully saved","Dock");
|
||||
qDefs::Message(qDefs::INFORMATION,"The Image has been successfully saved","Dock");
|
||||
else
|
||||
qDefs::WarningMessage("Attempt to save image failed.\n"
|
||||
qDefs::Message(qDefs::WARNING,"Attempt to save image failed.\n"
|
||||
"Formats: .png, .jpg, .xpm.","Dock");
|
||||
}
|
||||
|
||||
@ -911,7 +923,7 @@ void qDrawPlot::SaveAll(bool enable){
|
||||
string msg = string("The Files will be saved as:\n")+
|
||||
string(myDet->getFilePath().c_str())+string("/")+
|
||||
string(myDet->getFileName().c_str())+string("[title].png");
|
||||
qDefs::InfoMessage(msg,"Dock");
|
||||
qDefs::Message(qDefs::INFORMATION,msg,"Dock");
|
||||
saveAll = enable;
|
||||
}
|
||||
|
||||
@ -952,7 +964,7 @@ void qDrawPlot::SavePlotAutomatic(){
|
||||
|
||||
|
||||
void qDrawPlot::ShowSaveErrorMessage(QString fileName){
|
||||
qDefs::WarningMessage(string("Automatic Saving: Could not save the first file:\n")+
|
||||
qDefs::Message(qDefs::WARNING,string("Automatic Saving: Could not save the first file:\n")+
|
||||
string(fileName.toAscii().constData()) + string("\n\nNote: Will not show future file save errors for this acquisition."),"Dock");
|
||||
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ void qScanWidget::EnableSizeWidgets(){
|
||||
#ifdef VERYVERBOSE
|
||||
char cNum[200];sprintf(cNum,"%d",actualNumSteps);
|
||||
char cId[5];sprintf(cId,"%d",id);
|
||||
qDefs::InfoMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::INFORMATION,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Specific Values</font></nobr><br><br><nobr>Number of positions added: ")+
|
||||
string(cNum)+string("</nobr>"),"ScanWidget");
|
||||
#endif
|
||||
@ -385,7 +385,7 @@ int qScanWidget::SetScan(int mode){
|
||||
return qDefs::OK;
|
||||
}else{//mode NOT set
|
||||
if((mode!=actualMode)&&(actualNumSteps)){
|
||||
qDefs::WarningMessage("The mode could not be changed for an unknown reason.","ScanWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The mode could not be changed for an unknown reason.","ScanWidget");
|
||||
comboScript->setCurrentIndex(actualMode);
|
||||
return qDefs::FAIL;
|
||||
}
|
||||
@ -455,12 +455,12 @@ void qScanWidget::SetScriptFile(){
|
||||
set = true;
|
||||
//if the file doesnt exist, set it to what it was before
|
||||
else{
|
||||
qDefs::WarningMessage("The script file entered does not exist","ScanWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The script file entered does not exist","ScanWidget");
|
||||
dispScript->setText(QString(myDet->getScanScript(id).c_str()));
|
||||
}
|
||||
}//not a file, set it to what it was before
|
||||
else {
|
||||
qDefs::WarningMessage("The script file path entered is not a file","ScanWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The script file path entered is not a file","ScanWidget");
|
||||
dispScript->setText(QString(myDet->getScanScript(id).c_str()));
|
||||
}
|
||||
}
|
||||
@ -471,7 +471,7 @@ void qScanWidget::SetScriptFile(){
|
||||
if(fName.compare(QString(myDet->getScanScript(id).c_str()))){
|
||||
//did not get set, write what is was before
|
||||
if(!fName.isEmpty())
|
||||
qDefs::WarningMessage("The script file could not be set. Reverting to previous file.","ScanWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The script file could not be set. Reverting to previous file.","ScanWidget");
|
||||
dispScript->setText(QString(myDet->getScanScript(id).c_str()));
|
||||
}
|
||||
|
||||
@ -524,7 +524,7 @@ void qScanWidget::SetPrecision(int value){
|
||||
#endif
|
||||
myDet->setScanPrecision(id,value);
|
||||
if(myDet->getScanPrecision(id)!=value)
|
||||
qDefs::WarningMessage("The precision was not set for an unknown reason.","ScanWidget");;
|
||||
qDefs::Message(qDefs::WARNING,"The precision was not set for an unknown reason.","ScanWidget");;
|
||||
}
|
||||
|
||||
|
||||
@ -633,13 +633,13 @@ void qScanWidget::SetRangeSteps(){
|
||||
|
||||
//positions wont be loaded if its custom script
|
||||
if((comboScript->currentIndex()==CustomScript)&&((script=="")||(script=="none"))){
|
||||
qDefs::InfoMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::INFORMATION,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Constant Step Size</font></nobr><br><br>"
|
||||
"<nobr>Positions could not be loaded as the script file path is empty.</nobr>"),"ScanWidget");
|
||||
}else{
|
||||
//error loading positions
|
||||
if(myDet->getScanSteps(id)!=actualNumSteps){
|
||||
qDefs::WarningMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::WARNING,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Values From File</font></nobr><br><br>"
|
||||
"<nobr>The positions list was not set for an unknown reason.</nobr>"),"ScanWidget");
|
||||
/*LoadPositions();
|
||||
@ -648,7 +648,7 @@ void qScanWidget::SetRangeSteps(){
|
||||
#ifdef VERYVERBOSE
|
||||
else{//SUCCESS
|
||||
char cNum[200];sprintf(cNum,"%d",actualNumSteps);
|
||||
qDefs::InfoMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::INFORMATION,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Constant Step Size</font></nobr><br><br><nobr>Number of positions added: ")+
|
||||
string(cNum)+string("</nobr>"),"ScanWidget");
|
||||
}
|
||||
@ -712,13 +712,13 @@ int qScanWidget::SetCustomSteps(){
|
||||
QString script = dispScript->text();
|
||||
//positions wont be loaded if its custom script
|
||||
if((comboScript->currentIndex()==CustomScript)&&((script=="")||(script=="none"))){
|
||||
qDefs::InfoMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::INFORMATION,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Values From File</font></nobr><br><br>"
|
||||
"<nobr>Positions could not be loaded as the script file path is empty.</nobr>"),"ScanWidget");
|
||||
return qDefs::FAIL;
|
||||
}else{
|
||||
if(myDet->getScanSteps(id)!=actualNumSteps){
|
||||
qDefs::WarningMessage("The positions list was not set for an unknown reason.","ScanWidget");
|
||||
qDefs::Message(qDefs::WARNING,"The positions list was not set for an unknown reason.","ScanWidget");
|
||||
LoadPositions();
|
||||
comboScript->setCurrentIndex(myDet->getScanMode(id));
|
||||
return qDefs::FAIL;
|
||||
@ -870,20 +870,20 @@ void qScanWidget::SetFileSteps(){
|
||||
radioFile->setToolTip(fileTip);dispFile->setToolTip(fileTip);btnFile->setToolTip(fileTip);
|
||||
//positions wont be loaded if its custom script
|
||||
if((comboScript->currentIndex()==CustomScript)&&((script=="")||(script=="none"))){
|
||||
qDefs::InfoMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::INFORMATION,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Values From File</font></nobr><br><br>"
|
||||
"<nobr>Positions could not be loaded as the script file path is empty.</nobr>"),"ScanWidget");
|
||||
}else{
|
||||
//error loading positions
|
||||
if(myDet->getScanSteps(id)!=actualNumSteps){
|
||||
qDefs::WarningMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::WARNING,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Values From File</font></nobr><br><br>"
|
||||
"<nobr>The positions list was not set for an unknown reason.</nobr>"),"ScanWidget");
|
||||
}
|
||||
#ifdef VERYVERBOSE
|
||||
else{//SUCCESS
|
||||
char cNum[200];sprintf(cNum,"%d",actualNumSteps);
|
||||
qDefs::InfoMessage(string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
qDefs::Message(qDefs::INFORMATION,string("<nobr><font color=\"blue\">Scan Level ")+string(cId)+
|
||||
string(": Values From File</font></nobr><br><br><nobr>Number of positions added: ")+
|
||||
string(cNum)+string("</nobr>"),"ScanWidget");
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ void qTabActions::SetPosition(){
|
||||
positions[i] = comboPos->itemText(i).toDouble();
|
||||
//setting the list and catching error
|
||||
if(myDet->setPositions(comboPos->count(),positions)!=comboPos->count())
|
||||
qDefs::WarningMessage("The positions list was not set for some reason.","Actions");
|
||||
qDefs::Message(qDefs::WARNING,"The positions list was not set for some reason.","Actions");
|
||||
|
||||
|
||||
emit EnableScanBox();
|
||||
|
@ -9,6 +9,8 @@
|
||||
/** Project Class Headers */
|
||||
#include "slsDetector.h"
|
||||
#include "multiSlsDetector.h"
|
||||
/** Qt Include Headers */
|
||||
#include <QFileDialog>
|
||||
/** C++ Include Headers */
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
@ -37,7 +39,20 @@ qTabAdvanced::~qTabAdvanced(){
|
||||
|
||||
|
||||
void qTabAdvanced::SetupWidgetWindow(){
|
||||
//executed even for non digital, so make sure its necessary
|
||||
slsDetectorDefs::detectorType detType = myDet->getDetectorsType();
|
||||
if((detType==slsDetectorDefs::MYTHEN)||(detType==slsDetectorDefs::EIGER)){
|
||||
outputDirTip = dispFile->toolTip();
|
||||
errOutputTip = QString("<br><br><font color=\"red\"><nobr>"
|
||||
"<b>Output Trim File</b> should contain both existing directory and a file name.</nobr><br>"
|
||||
"<nobr>The extensions are automatically added.</nobr><br><br>"
|
||||
"<nobr>Enter valid<b> Output Trim File</b> to enable <b>Start Trimming</b> button.</nobr></font>");
|
||||
red = QPalette();
|
||||
red.setColor(QPalette::Active,QPalette::WindowText,Qt::red);
|
||||
|
||||
boxTrimming->setChecked(false);
|
||||
SetOptimize(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -49,6 +64,28 @@ void qTabAdvanced::Initialization(){
|
||||
connect(chkEnergyLog, SIGNAL(toggled(bool)), this, SLOT(SetLogs()));
|
||||
connect(chkAngularLog, SIGNAL(toggled(bool)), this, SLOT(SetLogs()));
|
||||
|
||||
//exptime
|
||||
connect(spinExpTime, SIGNAL(valueChanged(double)), this, SLOT(SetExposureTime()));
|
||||
connect(comboExpUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetExposureTime()));
|
||||
|
||||
//threshold dac
|
||||
connect(spinThreshold, SIGNAL(valueChanged(double)), this, SLOT(SetThreshold()));
|
||||
|
||||
//output directory
|
||||
connect(dispFile, SIGNAL(editingFinished()), this, SLOT(SetOutputFile()));
|
||||
connect(btnFile, SIGNAL(clicked()), this, SLOT(BrowseOutputFile()));
|
||||
|
||||
//enable trimming method group box
|
||||
connect(boxTrimming, SIGNAL(toggled(bool)), this, SLOT(EnableTrimming(bool)));
|
||||
|
||||
//trimming method combo
|
||||
connect(comboMethod, SIGNAL(currentIndexChanged(int)), this, SLOT(SetTrimmingMethod(int)));
|
||||
|
||||
//method options
|
||||
connect(chkOptimize, SIGNAL(toggled(bool)), this, SLOT(SetOptimize(bool)));
|
||||
|
||||
//start Trimming
|
||||
connect(btnStart, SIGNAL(clicked()), this, SLOT(StartTrimming()));
|
||||
|
||||
}
|
||||
|
||||
@ -73,7 +110,7 @@ void qTabAdvanced::SetLogs(){
|
||||
#ifdef VERBOSE
|
||||
cout << "Could not set/reset Log." << endl;
|
||||
#endif
|
||||
qDefs::WarningMessage("Could not set/reset Log.","Advanced");
|
||||
qDefs::Message(qDefs::WARNING,"Could not set/reset Log.","Advanced");
|
||||
checkedBox->setChecked(!enable);
|
||||
}
|
||||
|
||||
@ -83,7 +120,233 @@ void qTabAdvanced::SetLogs(){
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::SetExposureTime(){
|
||||
//Get the value of timer in ns
|
||||
double exptimeNS = qDefs::getNSTime((qDefs::timeUnit)comboExpUnit->currentIndex(),spinExpTime->value());
|
||||
#ifdef VERBOSE
|
||||
cout << "Setting Exposure Time to " << exptimeNS << " clocks" << "/" << spinExpTime->value() << qDefs::getUnitString((qDefs::timeUnit)comboExpUnit->currentIndex()) << endl;
|
||||
#endif
|
||||
myDet->setTimer(slsDetectorDefs::ACQUISITION_TIME,(int64_t)exptimeNS);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::SetThreshold(){
|
||||
#ifdef VERBOSE
|
||||
cout << "Setting Threshold DACu:" << spinThreshold->value() << endl;
|
||||
#endif
|
||||
spinThreshold->setValue((double)myDet->setDAC((dacs_t)spinThreshold->value(),slsDetectorDefs::THRESHOLD));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::SetOutputFile(){
|
||||
#ifdef VERBOSE
|
||||
cout << "Setting Output File for Trimming" << endl;
|
||||
#endif
|
||||
QString dirPath = dispFile->text().section('/',0,-2,QString::SectionIncludeLeadingSep);
|
||||
cout<<"directory:"<<dirPath.toAscii().constData()<<"..."<<endl;
|
||||
QString fName = dispFile->text().section('/',-1);
|
||||
cout<<"file name:"<<fName.toAscii().constData()<<"..."<<endl;
|
||||
//checks if directory exists and file name is not empty
|
||||
if((QFile::exists(dirPath))&&(!fName.isEmpty())){
|
||||
|
||||
dispFile->setToolTip(outputDirTip);
|
||||
lblFile->setToolTip(outputDirTip);
|
||||
lblFile->setPalette(lblExpTime->palette());
|
||||
lblFile->setText("Output Trim File: ");
|
||||
btnStart->setEnabled(true);
|
||||
|
||||
|
||||
//check if you're overwriting original trimsettings
|
||||
QDir dir;
|
||||
//gets the clean absolute path
|
||||
dirPath = dir.absoluteFilePath(dirPath);
|
||||
dirPath = dir.cleanPath(dirPath);
|
||||
QString trimdir = QString(myDet->getSettingsFile()).section('/',0,-2,QString::SectionIncludeLeadingSep);
|
||||
trimdir = dir.absoluteFilePath(trimdir);
|
||||
trimdir = dir.cleanPath(trimdir);
|
||||
if(!dirPath.compare(trimdir)){
|
||||
int ret = qDefs::Message(qDefs::QUESTION,string("<nobr>This will possibly overwrite your original trimbits.</nobr><br>"
|
||||
"<nobr>Proposed file path:") + string(dirPath.toAscii().constData())+
|
||||
string("</nobr><br><nobr>Do you still want to continue?</nobr>"),"Advanced");
|
||||
if(ret==qDefs::FAIL){
|
||||
dispFile->setText("");
|
||||
dispFile->setToolTip(outputDirTip + errOutputTip);
|
||||
lblFile->setToolTip(outputDirTip + errOutputTip);
|
||||
lblFile->setPalette(red);
|
||||
lblFile->setText("Output Trim File:*");
|
||||
btnStart->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
}//if the directory doesnt exist or if file name is empty
|
||||
else{
|
||||
cout<<"Invalid Trimming output File"<<endl;
|
||||
dispFile->setToolTip(outputDirTip + errOutputTip);
|
||||
lblFile->setToolTip(outputDirTip + errOutputTip);
|
||||
lblFile->setPalette(red);
|
||||
lblFile->setText("Output Trim File:*");
|
||||
btnStart->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::BrowseOutputFile(){
|
||||
#ifdef VERBOSE
|
||||
cout << "Browsing Output Dir for Trimming:" << endl;
|
||||
#endif
|
||||
QString fName = dispFile->text();
|
||||
//dialog
|
||||
fName = QFileDialog::getSaveFileName(this,
|
||||
tr("Choose file to write the trimbits to"),fName,
|
||||
tr("Trimbit files (*.trim noise.sn*) "));
|
||||
//if empty, set the file name and it calls SetFileSteps, else ignore
|
||||
if (!fName.isEmpty()){
|
||||
dispFile->setText(fName);
|
||||
SetOutputFile();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::EnableTrimming(bool enable){
|
||||
#ifdef VERBOSE
|
||||
cout << "Enable Trimming set to:" << enable << endl;
|
||||
#endif
|
||||
if(enable){
|
||||
//show error label if invalid output dir
|
||||
SetOutputFile();
|
||||
SetTrimmingMethod(comboMethod->currentIndex());
|
||||
}else{
|
||||
//error label shouldnt show when disabled
|
||||
dispFile->setToolTip(outputDirTip);
|
||||
lblFile->setToolTip(outputDirTip);
|
||||
lblFile->setPalette(lblExpTime->palette());
|
||||
lblFile->setText("Output Trim File: ");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
void qTabAdvanced::SetOptimize(bool enable){
|
||||
#ifdef VERBOSE
|
||||
cout << "Setting Optimize to:" << enable << endl;
|
||||
#endif
|
||||
//trimming method is adjust to count
|
||||
if(!comboMethod->currentIndex()){
|
||||
lblCounts->setEnabled(true);
|
||||
spinCounts->setEnabled(true);
|
||||
lblResolution->setEnabled(enable);
|
||||
spinResolution->setEnabled(enable);
|
||||
}//trimming method is equalize to median
|
||||
else{
|
||||
lblCounts->setEnabled(false);
|
||||
spinCounts->setEnabled(false);
|
||||
lblResolution->setEnabled(true);
|
||||
spinResolution->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::SetTrimmingMethod(int mode){
|
||||
#ifdef VERBOSE
|
||||
cout << "Setting Trimming method to :" << mode << endl;
|
||||
#endif
|
||||
//make sure the right resolution/Counts is enabled
|
||||
SetOptimize(chkOptimize->isChecked());
|
||||
|
||||
//set mode
|
||||
switch(mode){
|
||||
case 0: trimmingMode = slsDetectorDefs::NOISE_TRIMMING; break;
|
||||
case 1: trimmingMode = slsDetectorDefs::IMPROVE_TRIMMING; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::StartTrimming(){
|
||||
|
||||
int parameter1, parameter2;
|
||||
//optimize
|
||||
bool optimize = chkOptimize->isChecked();
|
||||
|
||||
//set the mode again and also set resolution, counts
|
||||
switch(trimmingMode){
|
||||
|
||||
case slsDetectorDefs::NOISE_TRIMMING:
|
||||
//define parameters
|
||||
parameter1 = spinCounts->value();
|
||||
parameter2 = spinResolution->value();
|
||||
if(!optimize){
|
||||
parameter2 = -1;
|
||||
trimmingMode = slsDetectorDefs::FIXEDSETTINGS_TRIMMING;
|
||||
#ifdef VERBOSE
|
||||
cout << "Trimming Mode: FIXEDSETTINGS_TRIMMING" << endl;
|
||||
#endif
|
||||
}else{
|
||||
#ifdef VERBOSE
|
||||
cout << "Trimming Mode: NOISE_TRIMMING" << endl;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case slsDetectorDefs::IMPROVE_TRIMMING:
|
||||
#ifdef VERBOSE
|
||||
cout << "Trimming Mode: IMPROVE_TRIMMING" << endl;
|
||||
#endif
|
||||
//define parameters
|
||||
parameter1 = spinResolution->value();
|
||||
parameter2 = 1;
|
||||
if(!optimize) parameter2 = 0;
|
||||
break;
|
||||
default:
|
||||
cout << "Should never come here. Start Trimming will have only 2 methods." << endl;
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
|
||||
#endif
|
||||
//execute
|
||||
int ret = myDet->executeTrimming(trimmingMode,parameter1,parameter2,-1);
|
||||
if((ret!=slsDetectorDefs::FAIL)&&(ret!=-1)){
|
||||
//save trim file
|
||||
ret = myDet->saveSettingsFile(string(dispFile->text().toAscii().constData()),-1);
|
||||
if((ret!=slsDetectorDefs::FAIL)&&(ret!=-1))
|
||||
qDefs::Message(qDefs::INFORMATION,"The Trimbits have been saved successfully.","Advanced");
|
||||
else qDefs::Message(qDefs::WARNING,string("Could not Save the Trimbits to file:\n")+dispFile->text().toAscii().constData(),"Advanced");
|
||||
}
|
||||
else
|
||||
qDefs::Message(qDefs::WARNING,"Atleast 1 channel could not be trimmed.","Advanced");
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void qTabAdvanced::Refresh(){
|
||||
//disconnect
|
||||
disconnect(chkEnergyLog, SIGNAL(toggled(bool)), this, SLOT(SetLogs()));
|
||||
disconnect(chkAngularLog, SIGNAL(toggled(bool)), this, SLOT(SetLogs()));
|
||||
disconnect(spinExpTime, SIGNAL(valueChanged(double)), this, SLOT(SetExposureTime()));
|
||||
disconnect(comboExpUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetExposureTime()));
|
||||
disconnect(spinThreshold, SIGNAL(valueChanged(double)), this, SLOT(SetThreshold()));
|
||||
|
||||
//energy/angular logs
|
||||
chkEnergyLog->setChecked(myDet->getActionMode(slsDetectorDefs::enCalLog));
|
||||
chkAngularLog->setChecked(myDet->getActionMode(slsDetectorDefs::angCalLog));
|
||||
@ -92,6 +355,29 @@ void qTabAdvanced::Refresh(){
|
||||
cout << "Angular Calibration Log set to " << chkAngularLog->isChecked() << endl;
|
||||
#endif
|
||||
|
||||
//exptime
|
||||
qDefs::timeUnit unit;
|
||||
double time = qDefs::getCorrectTime(unit,((double)(myDet->setTimer(slsDetectorDefs::ACQUISITION_TIME,-1)*(1E-9))));
|
||||
#ifdef VERBOSE
|
||||
cout << "Getting acquisition time : " << time << qDefs::getUnitString(unit) << endl;
|
||||
#endif
|
||||
spinExpTime->setValue(time);
|
||||
comboExpUnit->setCurrentIndex((int)unit);
|
||||
|
||||
|
||||
//threshold
|
||||
double threshold = (double)myDet->setDAC(-1,slsDetectorDefs::THRESHOLD);
|
||||
#ifdef VERBOSE
|
||||
cout << "Getting Threshold DACu : " << threshold << endl;
|
||||
#endif
|
||||
spinThreshold->setValue(threshold);
|
||||
|
||||
//connect
|
||||
connect(chkEnergyLog, SIGNAL(toggled(bool)), this, SLOT(SetLogs()));
|
||||
connect(chkAngularLog, SIGNAL(toggled(bool)), this, SLOT(SetLogs()));
|
||||
connect(spinExpTime, SIGNAL(valueChanged(double)), this, SLOT(SetExposureTime()));
|
||||
connect(comboExpUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetExposureTime()));
|
||||
connect(spinThreshold, SIGNAL(valueChanged(double)), this, SLOT(SetThreshold()));
|
||||
|
||||
}
|
||||
|
||||
|
@ -149,7 +149,7 @@ void qTabDataOutput::SetFlatField(){
|
||||
if(myDet->setFlatFieldCorrectionFile(file.toAscii().constData())<0){
|
||||
string sDir = dir.toAscii().constData(),sFile = file.toAscii().constData();
|
||||
if(sDir.length()<1) {sDir = string(QDir::current().absolutePath().toAscii().constData()); /*"/home/";*/}
|
||||
qDefs::WarningMessage("Invalid Flat Field file: "+sDir+"/"+sFile+
|
||||
qDefs::Message(qDefs::WARNING,"Invalid Flat Field file: "+sDir+"/"+sFile+
|
||||
".\nUnsetting Flat Field.","Data Output");
|
||||
|
||||
//Unsetting flat field
|
||||
@ -348,7 +348,7 @@ void qTabDataOutput::SetAngularCorrection(){
|
||||
cout << "Setting angular conversion to default" << endl;
|
||||
#endif
|
||||
}else{
|
||||
qDefs::WarningMessage("Angular Conversion could not be set. Please set the default file name using the command line, if you haven't already.","Data Output");
|
||||
qDefs::Message(qDefs::WARNING,"Angular Conversion could not be set. Please set the default file name using the command line, if you haven't already.","Data Output");
|
||||
chkAngular->setChecked(false);
|
||||
}
|
||||
}else{
|
||||
|
@ -40,12 +40,18 @@ void qTabDebugging::SetupWidgetWindow(){
|
||||
// Detector Type
|
||||
detType=myDet->getDetectorsType();
|
||||
|
||||
//status
|
||||
int detStatus = (int)myDet->getRunStatus();
|
||||
string status = slsDetectorBase::runStatusType(slsDetectorDefs::runStatus(detStatus));
|
||||
lblStatus->setText(QString(status.c_str()).toUpper());
|
||||
|
||||
if(detType==slsDetectorDefs::EIGER) lblModule->setText("Half Module Number:");
|
||||
else lblModule->setText("Module Number:");
|
||||
|
||||
// loading combo box module numbers
|
||||
int max = myDet->setNumberOfModules();
|
||||
|
||||
|
||||
/* for(int i=0;i<max;i++){
|
||||
slsDetector *s = myDet->getSlsDetector(i);
|
||||
if(s->setTCPSocket()!=slsDetectorDefs::FAIL){
|
||||
|
@ -85,7 +85,7 @@ void qTabDeveloper::SetupWidgetWindow(){
|
||||
|
||||
break;
|
||||
default:
|
||||
qDefs::ErrorMessage(string("Unknown detector type:")+myDet->slsDetectorBase::getDetectorType(detType),"Developer");
|
||||
qDefs::Message(qDefs::CRITICAL,string("Unknown detector type:")+myDet->slsDetectorBase::getDetectorType(detType),"Developer");
|
||||
exit(-1);
|
||||
break;
|
||||
}
|
||||
@ -228,7 +228,7 @@ void qTabDeveloper::SetHighVoltage(){
|
||||
int ret = myDet->setDAC(highvoltage,slsDetectorDefs::HV_POT);
|
||||
//error
|
||||
if(ret != highvoltage){
|
||||
qDefs::ErrorMessage("High Voltage could not be set to this value.","Developer");
|
||||
qDefs::Message(qDefs::CRITICAL,"High Voltage could not be set to this value.","Developer");
|
||||
lblHV->setPalette(red);
|
||||
lblHV->setText("High Voltage:*");
|
||||
QString errTip = tipHV+QString("<br><br><font color=\"red\"><nobr>High Voltage could not be set. The return value is ")+
|
||||
@ -258,7 +258,7 @@ slsDetectorDefs::dacIndex qTabDeveloper::getSLSIndex(int index){
|
||||
case 4: return slsDetectorDefs::CALIBRATION_PULSE;
|
||||
case 5: return slsDetectorDefs::PREAMP;
|
||||
default:
|
||||
qDefs::ErrorMessage("Unknown DAC/ADC Index. Weird Error","Developer");
|
||||
qDefs::Message(qDefs::CRITICAL,"Unknown DAC/ADC Index. Weird Error","Developer");
|
||||
Refresh();
|
||||
break;
|
||||
}
|
||||
@ -280,13 +280,13 @@ slsDetectorDefs::dacIndex qTabDeveloper::getSLSIndex(int index){
|
||||
case 8: return slsDetectorDefs::TEMPERATURE_ADC;
|
||||
case 9:return slsDetectorDefs::TEMPERATURE_FPGA;
|
||||
default:
|
||||
qDefs::ErrorMessage("Unknown DAC/ADC Index. Weird Error","Developer");
|
||||
qDefs::Message(qDefs::CRITICAL,"Unknown DAC/ADC Index. Weird Error","Developer");
|
||||
Refresh();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
qDefs::ErrorMessage(string("Unknown detector type:")+myDet->slsDetectorBase::getDetectorType(detType),"Developer");
|
||||
qDefs::Message(qDefs::CRITICAL,string("Unknown detector type:")+myDet->slsDetectorBase::getDetectorType(detType),"Developer");
|
||||
exit(-1);
|
||||
break;
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ void qTabMeasurement::SetupTimingMode(){
|
||||
item[(int)Trigger_Window]->setEnabled(false);
|
||||
break;
|
||||
default:
|
||||
qDefs::ErrorMessage("Unknown detector type.","Measurement");
|
||||
qDefs::Message(qDefs::CRITICAL,"Unknown detector type.","Measurement");
|
||||
exit(-1);
|
||||
break;
|
||||
}
|
||||
@ -157,7 +157,7 @@ void qTabMeasurement::SetupTimingMode(){
|
||||
// This should not happen -only if the server and gui has a mismatch
|
||||
// on which all modes are allowed in detectors
|
||||
else{
|
||||
qDefs::WarningMessage("Unknown Timing Mode detected from detector."
|
||||
qDefs::Message(qDefs::WARNING,"Unknown Timing Mode detected from detector."
|
||||
"\n\nSetting the following defaults:\nTiming Mode \t: None\n"
|
||||
"Number of Frames \t: 1\nNumber of Triggers \t: 1","Measurement");
|
||||
comboTimingMode->setCurrentIndex((int)None);
|
||||
@ -191,20 +191,20 @@ void qTabMeasurement::Initialization(int timingChange){
|
||||
//Number of Frames
|
||||
connect(spinNumFrames,SIGNAL(valueChanged(int)), this, SLOT(setNumFrames(int)));
|
||||
//Exposure Time
|
||||
connect(spinExpTime,SIGNAL(valueChanged(double)), this, SLOT(setExposureTime()));//..myplot
|
||||
connect(spinExpTime,SIGNAL(valueChanged(double)), this, SLOT(setExposureTime()));
|
||||
connect(comboExpUnit,SIGNAL(currentIndexChanged(int)), this, SLOT(setExposureTime()));
|
||||
//Frame Period between exposures
|
||||
connect(spinPeriod,SIGNAL(valueChanged(double)), this, SLOT(setAcquisitionPeriod()));//..myplot
|
||||
connect(spinPeriod,SIGNAL(valueChanged(double)), this, SLOT(setAcquisitionPeriod()));
|
||||
connect(comboPeriodUnit,SIGNAL(currentIndexChanged(int)), this, SLOT(setAcquisitionPeriod()));
|
||||
//Number of Triggers
|
||||
connect(spinNumTriggers,SIGNAL(valueChanged(int)), this, SLOT(setNumTriggers(int)));//
|
||||
connect(spinNumTriggers,SIGNAL(valueChanged(int)), this, SLOT(setNumTriggers(int)));
|
||||
//Delay After Trigger
|
||||
connect(spinDelay,SIGNAL(valueChanged(double)), this, SLOT(setDelay()));//
|
||||
connect(spinDelay,SIGNAL(valueChanged(double)), this, SLOT(setDelay()));
|
||||
connect(comboDelayUnit,SIGNAL(currentIndexChanged(int)), this, SLOT(setDelay()));
|
||||
//Number of Gates
|
||||
connect(spinNumGates,SIGNAL(valueChanged(int)), this, SLOT(setNumGates(int)));//
|
||||
connect(spinNumGates,SIGNAL(valueChanged(int)), this, SLOT(setNumGates(int)));
|
||||
//Number of Probes
|
||||
connect(spinNumProbes,SIGNAL(valueChanged(int)), this, SLOT(setNumProbes(int)));//
|
||||
connect(spinNumProbes,SIGNAL(valueChanged(int)), this, SLOT(setNumProbes(int)));
|
||||
}
|
||||
|
||||
|
||||
@ -548,11 +548,11 @@ void qTabMeasurement::SetTimingMode(int mode){
|
||||
break;
|
||||
default:
|
||||
//This should never happen
|
||||
qDefs::ErrorMessage("Timing mode unknown to GUI","Measurement");
|
||||
qDefs::Message(qDefs::CRITICAL,"Timing mode unknown to GUI","Measurement");
|
||||
exit(-1);
|
||||
}
|
||||
if(!success){
|
||||
qDefs::WarningMessage("The detector timing mode could not be set.\n"
|
||||
qDefs::Message(qDefs::WARNING,"The detector timing mode could not be set.\n"
|
||||
"Please check the external flags."
|
||||
"\n\nSetting the following defaults:\nTiming Mode \t: None\n"
|
||||
"Number of Frames \t: 1\nNumber of Triggers \t: 1","Measurement");
|
||||
|
@ -91,10 +91,10 @@ void qTabMessages::SaveLog() {
|
||||
if(outfile.open(QIODevice::WriteOnly | QIODevice::Text)){//Append
|
||||
QTextStream out(&outfile);
|
||||
out<<dispLog->toPlainText() << endl;
|
||||
qDefs::InfoMessage(string("The Log has been successfully saved to "
|
||||
qDefs::Message(qDefs::INFORMATION,string("The Log has been successfully saved to "
|
||||
"")+fName.toAscii().constData(),"Messages");
|
||||
}
|
||||
else qDefs::WarningMessage("Attempt to save log file failed.","Messages");
|
||||
else qDefs::Message(qDefs::WARNING,"Attempt to save log file failed.","Messages");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -226,12 +226,12 @@ void qTabPlot::Initialization(){
|
||||
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(SetZRange()));
|
||||
connect(dispZMax, SIGNAL(returnPressed()), this, SLOT(SetZRange()));
|
||||
connect(dispXMin, SIGNAL(editingFinished()), this, SLOT(SetAxesRange()));
|
||||
connect(dispXMax, SIGNAL(editingFinished()), this, SLOT(SetAxesRange()));
|
||||
connect(dispYMin, SIGNAL(editingFinished()), this, SLOT(SetAxesRange()));
|
||||
connect(dispYMax, SIGNAL(editingFinished()), this, SLOT(SetAxesRange()));
|
||||
connect(dispZMin, SIGNAL(editingFinished()), this, SLOT(SetZRange()));
|
||||
connect(dispZMax, SIGNAL(editingFinished()), this, SLOT(SetZRange()));
|
||||
// Save
|
||||
connect(btnSave, SIGNAL(clicked()), myPlot, SLOT(SavePlot()));
|
||||
connect(chkSaveAll, SIGNAL(toggled(bool)), myPlot, SLOT(SaveAll(bool)));
|
||||
@ -344,6 +344,10 @@ void qTabPlot::EnableRange(){
|
||||
|
||||
|
||||
void qTabPlot::SetAxesRange(){
|
||||
#ifdef VERBOSE
|
||||
cout << "Setting Range" << endl;
|
||||
#endif
|
||||
|
||||
bool changed = false;
|
||||
// x min
|
||||
changed = (dispXMin->isEnabled())&&(!dispXMin->text().isEmpty());
|
||||
@ -448,7 +452,7 @@ void qTabPlot::SetFrequency(){
|
||||
// Get the time interval from gui in ms
|
||||
timeMS = (qDefs::getNSTime((qDefs::timeUnit)comboTimeGapUnit->currentIndex(),spinTimeGap->value()))/(1e6);
|
||||
if(timeMS<minPlotTimer){
|
||||
qDefs::WarningMessage("Interval between Plots - The Time Interval between plots "
|
||||
qDefs::Message(qDefs::WARNING,"Interval between Plots - The Time Interval between plots "
|
||||
"must be atleast "+string(cplotms)+".","Plot");
|
||||
spinTimeGap->setValue(minPlotTimer);
|
||||
comboTimeGapUnit->setCurrentIndex(qDefs::MILLISECONDS);
|
||||
@ -468,7 +472,7 @@ void qTabPlot::SetFrequency(){
|
||||
// To make sure the period between plotting is not less than minimum plot timer in ms
|
||||
if(timeMS<minPlotTimer){
|
||||
int minFrame = (int)(ceil)(minPlotTimer/acqPeriodMS);
|
||||
qDefs::WarningMessage("<b>Plot Tab:</b> Interval between Plots - The nth Image must be larger.<br><br>"
|
||||
qDefs::Message(qDefs::WARNING,"<b>Plot Tab:</b> Interval between Plots - The nth Image must be larger.<br><br>"
|
||||
"Condition to be satisfied:\n(Acquisition Period)*(nth Image) >= 250ms."
|
||||
"<br><br>Nth image adjusted to minimum, "
|
||||
"for the chosen Acquisition Period.","Plot");
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "multiSlsDetector.h"
|
||||
// C++ Include Headers
|
||||
#include<iostream>
|
||||
#include <cmath>
|
||||
using namespace std;
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
@ -115,7 +116,7 @@ void qTabSettings::SetupDetectorSettings(){
|
||||
item[(int)VeryHighGain]->setEnabled(true);
|
||||
break;
|
||||
default:
|
||||
qDefs::ErrorMessage("Unknown detector type.","Settings");
|
||||
qDefs::Message(qDefs::CRITICAL,"Unknown detector type.","Settings");
|
||||
exit(-1);
|
||||
break;
|
||||
}
|
||||
@ -123,7 +124,7 @@ void qTabSettings::SetupDetectorSettings(){
|
||||
// This should not happen -only if the server and gui has a mismatch
|
||||
// on which all modes are allowed in detectors
|
||||
if(!(item[(int)sett]->isEnabled())){
|
||||
qDefs::ErrorMessage("Unknown Detector Settings retrieved from detector. "
|
||||
qDefs::Message(qDefs::CRITICAL,"Unknown Detector Settings retrieved from detector. "
|
||||
"Exiting GUI.","Settings");
|
||||
#ifdef VERBOSE
|
||||
cout << "ERROR: Unknown Detector Settings retrieved from detector." << endl;
|
||||
@ -190,7 +191,7 @@ void qTabSettings::SetNumberOfModules(int index){
|
||||
#endif
|
||||
int i = myDet->setNumberOfModules(index);
|
||||
if(index!=i)
|
||||
qDefs::WarningMessage("Number of modules cannot be set for this value.","Settings");
|
||||
qDefs::Message(qDefs::WARNING,"Number of modules cannot be set for this value.","Settings");
|
||||
#ifdef VERBOSE
|
||||
cout << "ERROR: Setting number of modules to "<< i << endl;
|
||||
#endif
|
||||
@ -214,7 +215,7 @@ void qTabSettings::SetDynamicRange(int index){
|
||||
#endif
|
||||
ret=myDet->setDynamicRange(dr);
|
||||
if(ret!=dr){
|
||||
qDefs::WarningMessage("Dynamic Range cannot be set to this value.","Settings");
|
||||
qDefs::Message(qDefs::WARNING,"Dynamic Range cannot be set to this value.","Settings");
|
||||
#ifdef VERBOSE
|
||||
cout << "ERROR: Setting dynamic range to "<< ret << endl;
|
||||
#endif
|
||||
@ -239,8 +240,8 @@ void qTabSettings::SetEnergy(){
|
||||
int index = spinThreshold->value();
|
||||
myDet->setThresholdEnergy(index);
|
||||
int ret = (int)myDet->getThresholdEnergy();
|
||||
if(ret!=index){
|
||||
qDefs::WarningMessage("Threshold energy could not be set.","Settings");
|
||||
if((ret-index)>200){
|
||||
qDefs::Message(qDefs::WARNING,"Threshold energy could not be set. The difference is greater than 200.","Settings");
|
||||
disconnect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetEnergy()));
|
||||
spinThreshold->setValue(ret);
|
||||
connect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetEnergy()));
|
||||
|
Loading…
x
Reference in New Issue
Block a user