QXRD  0.11.16
qxrdexperiment.h
Go to the documentation of this file.
1 #ifndef QXRDEXPERIMENT_H
2 #define QXRDEXPERIMENT_H
3 
4 #define _CRT_SECURE_NO_WARNINGS
5 
6 #include "qcepmacros.h"
7 #include "qcepproperty.h"
8 
9 #include <QObject>
10 #include <QSharedPointer>
11 #include <QScriptEngine>
12 #include <QScriptEngineDebugger>
13 #include "qcepexperiment.h"
14 #include "qxrdapplication-ptr.h"
16 #include "qxrdexperiment-ptr.h"
18 #include "qxrdacquisition-ptr.h"
20 #include "qxrddataprocessor-ptr.h"
21 #include "qxrdserverthread-ptr.h"
22 #include "qxrdserver-ptr.h"
24 #include "qxrdsimpleserver-ptr.h"
26 #include "qxrdfilesaver-ptr.h"
28 #include "qxrdwindow-ptr.h"
29 #include "qxrdwindowsettings.h"
30 #include "qxrdscriptengine.h"
31 #include "qxrdscriptengine-ptr.h"
32 #include "qxrdscriptenginethread.h"
34 #include "qcepsettingssaver.h"
35 #include "qxrddetectorthread.h"
36 #include "qxrddetectorthread-ptr.h"
37 #include "qxrddetector.h"
38 #include "qxrddetector-ptr.h"
39 #include "qxrdcenterfinder-ptr.h"
40 #include "qxrdintegrator-ptr.h"
45 #include "qcepexperiment.h"
46 #include "qcepdataset-ptr.h"
47 #include "qcepdatasetmodel-ptr.h"
49 
50 class QxrdExperiment : public QcepExperiment, public QEnableSharedFromThis<QxrdExperiment>
51 {
52  Q_OBJECT
53 
54 public:
56  virtual ~QxrdExperiment();
57  void initialize(QSettings *settings);
58 
59  void openWindows();
60 
62 
63 // QxrdAcquisitionThreadPtr acquisitionThread();
77 
80 
81  FILE* logFile();
82 
83  FILE* scanFile();
84  void newScanFile(QString path);
85 
86 // QcepSettingsSaverPtr settingsSaver();
88 
89 public slots:
90  void newLogFile(QString path);
91  void openNewLogFile() const;
92 
93  void executeCommand(QString cmd);
94  QString systemCommand(QString cmd);
95 
96  QString defaultDataDirectory(QString path) const;
97  QString defaultLogName(QString path) const;
98  QString defaultScanName(QString path) const;
99 
100  QString experimentFilePath() const;
101  QString logFilePath() const;
102  QString scanFilePath() const;
103 
104  void setExperimentFilePath(QString path);
105 
106  void saveExperimentCopyAs(QString path);
107  void saveExperimentAs(QString path);
108 
109  void readSettings();
110  void writeSettings();
111 
112  void readSettings(QSettings *settings, QString section);
113  void writeSettings(QSettings *settings, QString section);
114 
115  void logMessage(QString msg) const;
116  void splashMessage(QString msg);
117  void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
118  void statusMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
119  void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
120  void printLine(QString msg);
121 
122  void saveExperiment();
123 
124  void completeWork(int amt);
125  void commenceWork(int amt);
126  void finishedWork(int amt);
127  void updateCompletionPercentage(int, int);
128 
129  void dump();
130  QColor pickColor(QColor start=QColor(Qt::white));
131 
132  void evaluateScriptFiles(QStringList files);
133  void evaluateScriptFile(QString path);
134 
135 // void openAcquisitionWindow();
136 
137 private:
138  void closeLogFile() const;
139  void openLogFile() const;
140  void readInitialLogFile();
141 
142  void closeScanFile();
143 
144 public:
145  void openScanFile();
146 
147 private:
150 
151 private:
152  QMutex m_Mutex;
155 // QxrdDetectorControlWindowPtr m_AcquisitionWindow;
170 // QxrdScriptEngineThreadPtr m_ScriptEngineThread;
171 // QxrdScriptEngineWPtr m_ScriptEngine;
173  QScriptEngineDebugger *m_ScriptEngineDebugger;
174 
177  mutable QMutex m_LogFileMutex;
178  mutable FILE *m_LogFile;
179 
181  FILE *m_ScanFile;
182 
184 
185 public: // Properties
186  Q_PROPERTY(QString dataDirectory READ get_DataDirectory WRITE set_DataDirectory)
187  QCEP_STRING_PROPERTY(DataDirectory)
188 
189  Q_PROPERTY(QString logFileName READ get_LogFileName WRITE set_LogFileName)
190  QCEP_STRING_PROPERTY(LogFileName)
191 
192  Q_PROPERTY(QString scanFileName READ get_ScanFileName WRITE set_ScanFileName)
193  QCEP_STRING_PROPERTY(ScanFileName)
194 
195  Q_PROPERTY(QString scanFileExtension READ get_ScanFileExtension WRITE set_ScanFileExtension)
196  QCEP_STRING_PROPERTY(ScanFileExtension)
197 
198  Q_PROPERTY(int scanDataNegative READ get_ScanDataNegative WRITE set_ScanDataNegative)
199  QCEP_INTEGER_PROPERTY(ScanDataNegative)
200 
201  Q_PROPERTY(int defaultLayout READ get_DefaultLayout WRITE set_DefaultLayout STORED false)
202  QCEP_INTEGER_PROPERTY(DefaultLayout)
203 
204  Q_PROPERTY(int workCompleted READ get_WorkCompleted WRITE set_WorkCompleted STORED false)
205  QCEP_INTEGER_PROPERTY(WorkCompleted)
206 
207  Q_PROPERTY(int workTarget READ get_WorkTarget WRITE set_WorkTarget STORED false)
208  QCEP_INTEGER_PROPERTY(WorkTarget)
209 
210  Q_PROPERTY(int completionPercentage READ get_CompletionPercentage WRITE set_CompletionPercentage STORED false)
211  QCEP_INTEGER_PROPERTY(CompletionPercentage)
212 
213  Q_PROPERTY(QString defaultScript READ get_DefaultScript WRITE set_DefaultScript)
214  QCEP_STRING_PROPERTY(DefaultScript)
215 
216  Q_PROPERTY(QStringList extraScriptFiles READ get_ExtraScriptFiles WRITE set_ExtraScriptFiles)
217  QCEP_STRING_LIST_PROPERTY(ExtraScriptFiles)
218 
219  Q_PROPERTY(int fontSize READ get_FontSize WRITE set_FontSize)
220  QCEP_INTEGER_PROPERTY(FontSize)
221 
222  Q_PROPERTY(int spacing READ get_Spacing WRITE set_Spacing)
223  QCEP_INTEGER_PROPERTY(Spacing)
224 };
225 
226 #endif // QXRDEXPERIMENT_H
QxrdCenterFinderWPtr centerFinder() const
QSharedPointer< QxrdWindow > QxrdWindowPtr
Definition: qxrdwindow-ptr.h:6
QMutex m_ScanFileMutex
void commenceWork(int amt)
QxrdCalibrantLibraryWPtr calibrantLibrary() const
QWeakPointer< QxrdDataProcessor > QxrdDataProcessorWPtr
QWeakPointer< QxrdSimpleServerThread > QxrdSimpleServerThreadWPtr
QScriptEngineDebugger * m_ScriptEngineDebugger
QString defaultScanName(QString path) const
void statusMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
void openNewLogFile() const
QSharedPointer< QxrdCalibrantLibraryModel > QxrdCalibrantLibraryModelPtr
QWeakPointer< QxrdCenterFinder > QxrdCenterFinderWPtr
QxrdFileSaverThreadPtr m_FileSaverThread
QSharedPointer< QxrdWindowSettings > QxrdWindowSettingsPtr
QSharedPointer< QxrdCalibrantLibrary > QxrdCalibrantLibraryPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void initialize(QSettings *settings)
QSharedPointer< QxrdScriptEngine > QxrdScriptEnginePtr
QcepDatasetModelPtr m_DatasetModel
QxrdCalibrantLibraryModelWPtr calibrantLibraryModel() const
QString defaultScript
QString dataDirectory
void evaluateScriptFiles(QStringList files)
QWeakPointer< QxrdApplication > QxrdApplicationWPtr
QString experimentFilePath() const
QxrdFileSaverWPtr fileSaver() const
void executeCommand(QString cmd)
virtual ~QxrdExperiment()
QString scanFilePath() const
QWeakPointer< QxrdCalibrantDSpacings > QxrdCalibrantDSpacingsWPtr
QxrdCalibrantLibraryPtr m_CalibrantLibrary
#define QCEP_STRING_LIST_PROPERTY(propname)
Definition: qcepproperty.h:941
QSharedPointer< QxrdCalibrantDSpacingsModel > QxrdCalibrantDSpacingsModelPtr
void newScanFile(QString path)
void newLogFile(QString path)
QxrdDataProcessorPtr m_DataProcessor
QSharedPointer< QxrdSimpleServerThread > QxrdSimpleServerThreadPtr
QxrdAcquisitionPtr m_Acquisition
QWeakPointer< QxrdSimpleServer > QxrdSimpleServerWPtr
QxrdServerThreadWPtr specServerThread()
#define QCEP_INTEGER_PROPERTY(propname)
Definition: qcepproperty.h:698
QWeakPointer< QxrdCalibrantLibraryModel > QxrdCalibrantLibraryModelWPtr
QxrdAcquisitionWPtr acquisition() const
QxrdScriptEnginePtr m_ScriptEngine
QString defaultDataDirectory(QString path) const
void printLine(QString msg)
QxrdSimpleServerWPtr simpleServer()
QString defaultLogName(QString path) const
QWeakPointer< QxrdFileSaver > QxrdFileSaverWPtr
QxrdWindowPtr window()
QWeakPointer< QxrdExperimentThread > QxrdExperimentThreadWPtr
QWeakPointer< QxrdCalibrantDSpacingsModel > QxrdCalibrantDSpacingsModelWPtr
QxrdSimpleServerWPtr m_SimpleServer
void saveExperimentCopyAs(QString path)
QSharedPointer< QxrdCalibrantDSpacings > QxrdCalibrantDSpacingsPtr
#define QCEP_STRING_PROPERTY(propname)
Definition: qcepproperty.h:664
QxrdSimpleServerThreadPtr m_SimpleServerThread
QWeakPointer< QxrdDetector > QxrdDetectorWPtr
QxrdApplicationWPtr m_Application
QxrdExperimentThreadWPtr experimentThread()
void completeWork(int amt)
QxrdServerWPtr specServer()
QxrdCalibrantDSpacingsPtr m_CalibrantDSpacings
QWeakPointer< QxrdCalibrantLibrary > QxrdCalibrantLibraryWPtr
QxrdIntegratorWPtr integrator() const
QxrdWindowSettingsPtr m_WindowSettings
QString scanFileExtension
QcepDatasetModelPtr dataset()
QWeakPointer< QxrdServer > QxrdServerWPtr
Definition: qxrdserver-ptr.h:9
QString logFilePath() const
QxrdExperiment(QxrdExperimentThreadWPtr expthrd, QString path, QxrdApplicationWPtr app)
QSharedPointer< QxrdServerThread > QxrdServerThreadPtr
QxrdServerWPtr m_Server
QMutex m_ExperimentFileMutex
void saveExperimentAs(QString path)
QWeakPointer< QxrdIntegrator > QxrdIntegratorWPtr
QxrdCalibrantDSpacingsModelWPtr calibrantDSpacingsModel() const
void logMessage(QString msg) const
QString scanFileName
void updateCompletionPercentage(int, int)
QStringList extraScriptFiles
QWeakPointer< QxrdServerThread > QxrdServerThreadWPtr
QWeakPointer< QxrdAcquisition > QxrdAcquisitionWPtr
QWeakPointer< QxrdScriptEngine > QxrdScriptEngineWPtr
QxrdServerThreadPtr m_ServerThread
QString systemCommand(QString cmd)
QSharedPointer< QcepDataset > QcepDatasetPtr
QcepDatasetPtr m_Dataset
QxrdDetectorThreadPtr m_DetectorThread
QSharedPointer< QxrdFileSaverThread > QxrdFileSaverThreadPtr
void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
void openLogFile() const
QxrdCalibrantDSpacingsWPtr calibrantDSpacings() const
QxrdScriptEngineWPtr scriptEngine()
QSharedPointer< QxrdDetectorThread > QxrdDetectorThreadPtr
void finishedWork(int amt)
QxrdCalibrantDSpacingsModelPtr m_CalibrantDSpacingsModel
void evaluateScriptFile(QString path)
void setExperimentFilePath(QString path)
QxrdDetectorWPtr m_Detector
QxrdDataProcessorWPtr dataProcessor() const
QSharedPointer< QcepDatasetModel > QcepDatasetModelPtr
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
void splashMessage(QString msg)
QxrdCalibrantLibraryModelPtr m_CalibrantLibraryModel
void closeLogFile() const
QColor pickColor(QColor start=QColor(Qt::white))
QxrdSimpleServerThreadWPtr simpleServerThread()
QxrdWindowPtr m_Window
QxrdFileSaverWPtr m_FileSaver
QxrdExperimentThreadWPtr m_ExperimentThread