QXRD  0.11.16
Public Slots | Signals | Public Member Functions | Private Slots | Private Member Functions | Private Attributes | List of all members
QxrdWindow Class Reference

#include <qxrdwindow.h>

Inheritance diagram for QxrdWindow:
Inheritance graph
[legend]
Collaboration diagram for QxrdWindow:
Collaboration graph
[legend]

Public Slots

void saveExperimentCopy ()
 
void saveExperimentAs ()
 
void doEditPreferences ()
 
void doEditDetectorPreferences ()
 
void doSaveData ()
 
void doLoadData ()
 
void doSaveDark ()
 
void doLoadDark ()
 
void doClearDark ()
 
void doSaveMask ()
 
void doLoadMask ()
 
void doClearMask ()
 
void doSaveBadPixels ()
 
void doLoadBadPixels ()
 
void doClearBadPixels ()
 
void doSaveGainMap ()
 
void doLoadGainMap ()
 
void doClearGainMap ()
 
void doSaveCachedGeometry ()
 
void doSaveCachedIntensity ()
 
void doRefineCenterTilt ()
 
void doAccumulateImages ()
 
void doAddImages ()
 
void doSubtractImages ()
 
void doIntegrateSequence ()
 
void doProcessSequence ()
 
void doProjectAlongX ()
 
void doProjectAlongY ()
 
void doProjectAlongZ ()
 
void doCorrelate ()
 
void doReflectVertically ()
 
void doReflectHorizontally ()
 
void doPolarTransform ()
 
void doPolarNormalization ()
 
void updateTitle ()
 
void acquireStarted ()
 
void acquiredFrame (QString fileName, int isum, int nsum, int iframe, int nframe, int igroup, int ngroup)
 
void acquireComplete ()
 
void crashProgram ()
 
void testWidget ()
 
void executeScript ()
 
void finishedCommand (QScriptValue result)
 
void cancelScript ()
 
void doLoadScript ()
 
void loadScript (QString path)
 
void doTest ()
 
QString timeStamp () const
 
void warningMessage (QString msg)
 
void displayMessage (QString msg)
 
void displayStatusMessage (QString msg)
 
void displayCriticalMessage (QString msg)
 
void initialLogEntry (QString aline)
 
void printMessage (QString msg, QDateTime ts=QDateTime::currentDateTime())
 
void clearStatusMessage ()
 
void enableTiltRefinement (bool enable)
 
- Public Slots inherited from QcepMainWindow
void shrinkPanels (int fontSize, int spacing)
 
void setFontSize (int fontSize)
 
void setSpacing (int spacing)
 
virtual void printMessage (QString msg, QDateTime ts=QDateTime::currentDateTime())=0
 

Signals

void executeCommand (QString cmd)
 

Public Member Functions

 QxrdWindow (QxrdWindowSettingsWPtr settings, QxrdApplicationWPtr appl, QxrdExperimentWPtr docw, QxrdAcquisitionWPtr acqw, QxrdDataProcessorWPtr procw, QcepAllocatorWPtr allocw, QWidget *parent)
 
virtual ~QxrdWindow ()
 
void initialize ()
 
void onAcquisitionInit ()
 
void closeEvent (QCloseEvent *event)
 
QxrdDataProcessorWPtr dataProcessor () const
 
void newDataAvailable (QcepDoubleImageDataPtr img, QcepMaskDataPtr overflow)
 
void newMaskAvailable (QcepMaskDataPtr img)
 
QcepDoubleImageDataPtr data ()
 
QcepMaskDataPtr mask ()
 
QxrdAcquisitionWPtr acquisition () const
 
void captureSize ()
 
void resizeEvent (QResizeEvent *)
 
void moveEvent (QMoveEvent *)
 
- Public Member Functions inherited from QxrdMainWindow
 QxrdMainWindow (QWidget *parent=0)
 
- Public Member Functions inherited from QcepMainWindow
 QcepMainWindow (QWidget *parent=0)
 
void possiblyClose ()
 
bool wantToClose ()
 

Private Slots

void newData ()
 
void newMask ()
 
void allocatedMemoryChanged ()
 
void integrationXUnitsChanged (int newXUnits)
 
void onMessageWindowLinesChanged (int newVal)
 
void onUpdateIntervalMsecChanged (int newVal)
 
void populateExperimentsMenu ()
 
void populateRecentExperimentsMenu ()
 
void populateConfigureDetectorMenu ()
 
void populateDetectorControlWindowsMenu ()
 
void plotPowderRingRadii ()
 
void plotPowderRingTwoTheta ()
 
void plotPowderRingCenters ()
 

Private Member Functions

void setupRecentExperimentsMenu (QAction *action)
 

Private Attributes

QcepObjectNamer m_ObjectNamer
 
QMutex m_Mutex
 
QxrdWindowSettingsWPtr m_WindowSettings
 
QxrdApplicationWPtr m_Application
 
QxrdExperimentWPtr m_Experiment
 
QxrdAcquisitionWPtr m_Acquisition
 
QxrdDataProcessorWPtr m_DataProcessor
 
QcepAllocatorWPtr m_Allocator
 
QxrdAcquisitionDialogm_AcquisitionDialog
 
QxrdAcquisitionScalerDialogm_AcquisitionScalerDialog
 
QxrdAcquisitionExtraInputsDialogPtr m_AcquisitionExtraInputsDialog
 
QxrdSynchronizedAcquisitionDialogPtr m_SynchronizedAcquisitionDialog
 
QxrdDisplayDialogm_DisplayDialog
 
QxrdCenterFinderDialogm_CenterFinderDialog
 
QxrdMaskDialogm_MaskDialog
 
QxrdCorrectionDialogm_CorrectionDialog
 
QxrdCalibrantDialogm_CalibrantDialog
 
QcepDatasetBrowserDialogm_DatasetBrowserDialog
 
QxrdIntegratorDialogm_IntegratorDialog
 
QxrdImageCalculatorm_Calculator
 
QxrdInputFileBrowserm_InputFileBrowser
 
QxrdOutputFileBrowserm_OutputFileBrowser
 
QxrdSliceDialogm_SliceDialog
 
QxrdHistogramDialogm_HistogramDialog
 
QxrdInfoDialogm_ImageInfoDialog
 
QxrdScriptDialogm_ScriptDialog
 
QxrdDistortionCorrectionDialogm_DistortionCorrectionDialog
 
QVector< double > m_Exposures
 
QProgressBar * m_Progress
 
QLabel * m_StatusMsg
 
QProgressBar * m_AllocationStatus
 
QTimer m_StatusTimer
 
QTimer m_UpdateTimer
 
QcepDoubleImageDataPtr m_Data
 
QcepMaskDataPtr m_Overflow
 
QcepDoubleImageDataPtr m_NewData
 
QcepMaskDataPtr m_NewOverflow
 
QAtomicInt m_NewDataAvailable
 
QcepMaskDataPtr m_Mask
 
QcepMaskDataPtr m_NewMask
 
QAtomicInt m_NewMaskAvailable
 
QxrdImageDisplayWidgetm_ImageDisplay
 
QxrdHighlighterm_Highlighter
 
QString m_ScriptPath
 
QMenu * m_RecentExperimentsMenu
 
QString m_CachedGeometryPath
 
QString m_CachedIntensityPath
 

Additional Inherited Members

- Protected Member Functions inherited from QcepMainWindow
void shrinkDockWidget (QDockWidget *dockWidget, int fontSize, int spacing)
 
void shrinkObject (QObject *obj, int fontSize, int spacing)
 
void setObjectSpacing (QObject *obj, int spacing)
 

Detailed Description

Definition at line 41 of file qxrdwindow.h.

Constructor & Destructor Documentation

QxrdWindow::QxrdWindow ( QxrdWindowSettingsWPtr  settings,
QxrdApplicationWPtr  appl,
QxrdExperimentWPtr  docw,
QxrdAcquisitionWPtr  acqw,
QxrdDataProcessorWPtr  procw,
QcepAllocatorWPtr  allocw,
QWidget *  parent 
)

Definition at line 61 of file qxrdwindow.cpp.

References DEBUG_APP, DEBUG_CONSTRUCTORS, m_Application, and qcepDebug().

68  : QxrdMainWindow(parent),
69  m_ObjectNamer(this, "window"),
70  m_Mutex(QMutex::Recursive),
71  m_WindowSettings(settings),
72  m_Application(appl),
73  m_Experiment(docw),
74  m_Acquisition(acqw),
75  m_DataProcessor(procw),
76  m_Allocator(allocw),
77  m_AcquisitionDialog(NULL),
81  m_DisplayDialog(NULL),
83  m_MaskDialog(NULL),
84  m_CorrectionDialog(NULL),
85  m_IntegratorDialog(NULL),
86  m_CalibrantDialog(NULL),
88  m_Calculator(NULL),
89  m_InputFileBrowser(NULL),
90  m_OutputFileBrowser(NULL),
91  m_SliceDialog(NULL),
92  m_HistogramDialog(NULL),
93  m_ImageInfoDialog(NULL),
94  m_ScriptDialog(NULL),
96  m_Progress(NULL),
97  m_AllocationStatus(NULL),
98  m_Data(NULL),
99  m_Overflow(NULL),
100  m_NewData(NULL),
101  m_NewOverflow(NULL),
102  m_NewDataAvailable(false),
103  m_Mask(NULL),
104  m_NewMask(NULL),
105  m_NewMaskAvailable(false),
106  m_ImageDisplay(NULL),
107  m_Highlighter(NULL)
108 {
110  printf("QxrdWindow::QxrdWindow(%p)\n", this);
111  }
112 
114 
115  if (app && qcepDebug(DEBUG_APP)) {
116  app->printMessage("QxrdWindow::QxrdWindow");
117  }
118 }
QxrdAcquisitionScalerDialog * m_AcquisitionScalerDialog
Definition: qxrdwindow.h:174
QxrdOutputFileBrowser * m_OutputFileBrowser
Definition: qxrdwindow.h:186
QcepDoubleImageDataPtr m_NewData
Definition: qxrdwindow.h:201
QxrdImageCalculator * m_Calculator
Definition: qxrdwindow.h:184
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QxrdAcquisitionExtraInputsDialogPtr m_AcquisitionExtraInputsDialog
Definition: qxrdwindow.h:175
QxrdDistortionCorrectionDialog * m_DistortionCorrectionDialog
Definition: qxrdwindow.h:191
QxrdInputFileBrowser * m_InputFileBrowser
Definition: qxrdwindow.h:185
QxrdAcquisitionWPtr m_Acquisition
Definition: qxrdwindow.h:170
QcepDatasetBrowserDialog * m_DatasetBrowserDialog
Definition: qxrdwindow.h:182
QcepDoubleImageDataPtr m_Data
Definition: qxrdwindow.h:199
QcepObjectNamer m_ObjectNamer
Definition: qxrdwindow.h:165
QcepAllocatorWPtr m_Allocator
Definition: qxrdwindow.h:172
QcepMaskDataPtr m_NewMask
Definition: qxrdwindow.h:206
QxrdAcquisitionDialog * m_AcquisitionDialog
Definition: qxrdwindow.h:173
QxrdDisplayDialog * m_DisplayDialog
Definition: qxrdwindow.h:177
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
QAtomicInt m_NewDataAvailable
Definition: qxrdwindow.h:203
QProgressBar * m_AllocationStatus
Definition: qxrdwindow.h:195
QcepMaskDataPtr m_Mask
Definition: qxrdwindow.h:205
QxrdHighlighter * m_Highlighter
Definition: qxrdwindow.h:210
QxrdIntegratorDialog * m_IntegratorDialog
Definition: qxrdwindow.h:183
QxrdMainWindow(QWidget *parent=0)
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QxrdCenterFinderDialog * m_CenterFinderDialog
Definition: qxrdwindow.h:178
QxrdSliceDialog * m_SliceDialog
Definition: qxrdwindow.h:187
QxrdWindowSettingsWPtr m_WindowSettings
Definition: qxrdwindow.h:167
QxrdCalibrantDialog * m_CalibrantDialog
Definition: qxrdwindow.h:181
QMutex m_Mutex
Definition: qxrdwindow.h:166
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171
QProgressBar * m_Progress
Definition: qxrdwindow.h:193
QxrdScriptDialog * m_ScriptDialog
Definition: qxrdwindow.h:190
QxrdHistogramDialog * m_HistogramDialog
Definition: qxrdwindow.h:188
QxrdInfoDialog * m_ImageInfoDialog
Definition: qxrdwindow.h:189
QxrdImageDisplayWidget * m_ImageDisplay
Definition: qxrdwindow.h:209
QxrdCorrectionDialog * m_CorrectionDialog
Definition: qxrdwindow.h:180
QSharedPointer< QxrdApplication > QxrdApplicationPtr
QxrdSynchronizedAcquisitionDialogPtr m_SynchronizedAcquisitionDialog
Definition: qxrdwindow.h:176
QcepMaskDataPtr m_NewOverflow
Definition: qxrdwindow.h:202
QcepMaskDataPtr m_Overflow
Definition: qxrdwindow.h:200
QxrdMaskDialog * m_MaskDialog
Definition: qxrdwindow.h:179
QAtomicInt m_NewMaskAvailable
Definition: qxrdwindow.h:207

Here is the call graph for this function:

QxrdWindow::~QxrdWindow ( )
virtual

Definition at line 722 of file qxrdwindow.cpp.

References DEBUG_APP, DEBUG_CONSTRUCTORS, m_Application, and qcepDebug().

723 {
724 #ifndef QT_NO_DEBUG
725  printf("Deleting window\n");
726 #endif
727 
729 
730  if (app && qcepDebug(DEBUG_APP)) {
731  app->printMessage("QxrdWindow::~QxrdWindow");
732  }
733 
735  printf("QxrdWindow::~QxrdWindow(%p)\n", this);
736  }
737 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QSharedPointer< QxrdApplication > QxrdApplicationPtr

Here is the call graph for this function:

Member Function Documentation

void QxrdWindow::acquireComplete ( )
slot

Definition at line 994 of file qxrdwindow.cpp.

References m_Progress, and THREAD_CHECK.

Referenced by initialize().

995 {
996  THREAD_CHECK;
997 
998  m_Progress -> reset();
999 }
#define THREAD_CHECK
Definition: qcepmacros.h:11
QProgressBar * m_Progress
Definition: qxrdwindow.h:193

Here is the caller graph for this function:

void QxrdWindow::acquiredFrame ( QString  fileName,
int  isum,
int  nsum,
int  iframe,
int  nframe,
int  igroup,
int  ngroup 
)
slot

Definition at line 1001 of file qxrdwindow.cpp.

References m_Experiment, m_Progress, and printMessage().

Referenced by initialize().

1003 {
1004  printMessage(tr("QxrdWindow::acquiredFrame(\"%1\",%2,%3,%4,%5,%6,%7)")
1005  .arg(fileName)
1006  .arg(iphase).arg(nphases)
1007  .arg(isum).arg(nsum)
1008  .arg(igroup).arg(ngroup));
1009  // printf("\n",
1010  // qPrintable(fileName), fileIndex, isum, nsum, iframe, nframe);
1011 
1012  int totalFrames = (nphases*nsum*ngroup <= 0 ? 1 : nphases*nsum*ngroup);
1013  int thisFrame = igroup*nphases*nsum + isum*nphases + iphase + 1;
1014 
1015  printMessage(tr("Frame %1 of %2").arg(thisFrame).arg(totalFrames));
1016 
1017  // printf("%d %% progress\n", thisFrame*100/totalFrames);
1018 
1020 
1021  if (expt) {
1022  if (nphases <= 1) {
1023  expt->statusMessage(tr("%1: Exposure %2 of %3, File %4 of %5")
1024  .arg(fileName)
1025  .arg(isum+1).arg(nsum)
1026  .arg(igroup+1).arg(ngroup));
1027  } else {
1028  expt->statusMessage(tr("%1: Phase %2 of %3, Sum %4 of %5, Group %6 of %7")
1029  .arg(fileName)
1030  .arg(iphase+1).arg(nphases)
1031  .arg(isum+1).arg(nsum)
1032  .arg(igroup+1).arg(ngroup));
1033  }
1034  }
1035 
1036  m_Progress -> setValue(thisFrame*100/totalFrames);
1037 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qxrdwindow.cpp:919
QProgressBar * m_Progress
Definition: qxrdwindow.h:193

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::acquireStarted ( )
slot

Definition at line 990 of file qxrdwindow.cpp.

Referenced by initialize().

991 {
992 }

Here is the caller graph for this function:

QxrdAcquisitionWPtr QxrdWindow::acquisition ( ) const

Definition at line 1617 of file qxrdwindow.cpp.

References m_Acquisition.

1618 {
1619  return m_Acquisition;
1620 }
QxrdAcquisitionWPtr m_Acquisition
Definition: qxrdwindow.h:170
void QxrdWindow::allocatedMemoryChanged ( )
privateslot

Definition at line 1632 of file qxrdwindow.cpp.

References m_AllocationStatus, and m_Allocator.

Referenced by initialize().

1633 {
1634  QcepAllocatorPtr allocator(m_Allocator);
1635 
1636  if (allocator) {
1637  int alloc = allocator -> get_Allocated();
1638  int maxalloc = allocator -> get_Max();
1639 
1640  m_AllocationStatus -> setMaximum(maxalloc);
1641  m_AllocationStatus -> setValue(alloc);
1642  }
1643 }
QcepAllocatorWPtr m_Allocator
Definition: qxrdwindow.h:172
QProgressBar * m_AllocationStatus
Definition: qxrdwindow.h:195
QSharedPointer< QcepAllocator > QcepAllocatorPtr

Here is the caller graph for this function:

void QxrdWindow::cancelScript ( )
slot

Definition at line 1552 of file qxrdwindow.cpp.

References m_Experiment.

Referenced by initialize().

1553 {
1555 
1556  if (expt) {
1557  QxrdScriptEnginePtr eng(expt -> scriptEngine());
1558 
1559  if (eng) {
1560  eng -> cancelCommand();
1561  }
1562  }
1563 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
QSharedPointer< QxrdScriptEngine > QxrdScriptEnginePtr
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169

Here is the caller graph for this function:

void QxrdWindow::captureSize ( )

Definition at line 1039 of file qxrdwindow.cpp.

References m_WindowSettings.

Referenced by initialize(), moveEvent(), newData(), and resizeEvent().

1040 {
1042 
1043  if (set) {
1044  set->set_WindowGeometry(saveGeometry());
1045  set->set_WindowState(saveState(2));
1046  }
1047 }
QSharedPointer< QxrdWindowSettings > QxrdWindowSettingsPtr
QxrdWindowSettingsWPtr m_WindowSettings
Definition: qxrdwindow.h:167

Here is the caller graph for this function:

void QxrdWindow::clearStatusMessage ( )
slot

Definition at line 1079 of file qxrdwindow.cpp.

References m_StatusMsg.

1080 {
1081  m_StatusMsg -> setText("");
1082 }
QLabel * m_StatusMsg
Definition: qxrdwindow.h:194
void QxrdWindow::closeEvent ( QCloseEvent *  event)

Definition at line 766 of file qxrdwindow.cpp.

References m_Application, m_Experiment, and QcepMainWindow::wantToClose().

767 {
768  if (wantToClose()) {
770 
771  if (app) {
772  app->closeExperiment(m_Experiment);
773  }
774  event -> accept();
775  } else {
776  event -> ignore();
777  }
778 }
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QSharedPointer< QxrdApplication > QxrdApplicationPtr

Here is the call graph for this function:

void QxrdWindow::crashProgram ( )
slot

Definition at line 1798 of file qxrdwindow.cpp.

Referenced by initialize().

1799 {
1800  if (QMessageBox::question(this, tr("Really Crash?"),
1801  tr("Do you really want to crash the program?"),
1802  QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok) {
1803  int *j = NULL;
1804 
1805  *j= 42;
1806  }
1807 }

Here is the caller graph for this function:

QcepDoubleImageDataPtr QxrdWindow::data ( )

Definition at line 1622 of file qxrdwindow.cpp.

References m_Data.

1623 {
1624  return m_Data;
1625 }
QcepDoubleImageDataPtr m_Data
Definition: qxrdwindow.h:199
QxrdDataProcessorWPtr QxrdWindow::dataProcessor ( ) const

Definition at line 1612 of file qxrdwindow.cpp.

References m_DataProcessor.

1613 {
1614  return m_DataProcessor;
1615 }
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171
void QxrdWindow::displayCriticalMessage ( QString  msg)
slot

Definition at line 966 of file qxrdwindow.cpp.

References INVOKE_CHECK, and m_Experiment.

967 {
968  if (QThread::currentThread()==thread()) {
969  static int dialogCount = 0;
970 
972 
973  if (expt) {
974  expt->printMessage(tr("critical message %1, count = %2").arg(msg).arg(dialogCount));
975  }
976 
977  dialogCount++;
978  if (dialogCount <= 1) {
979  QMessageBox::critical(this, "Error", msg);
980  }
981  dialogCount--;
982  } else {
983  INVOKE_CHECK(QMetaObject::invokeMethod(this,
984  "displayCriticalMessage",
985  Qt::QueuedConnection,
986  Q_ARG(QString, msg)));
987  }
988 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13
void QxrdWindow::displayMessage ( QString  msg)
slot

Definition at line 942 of file qxrdwindow.cpp.

References INVOKE_CHECK.

Referenced by printMessage().

943 {
944  if (QThread::currentThread()==thread()) {
945  m_Messages -> append(msg);
946  } else {
947  INVOKE_CHECK(QMetaObject::invokeMethod(this,
948  "displayMessage",
949  Qt::QueuedConnection,
950  Q_ARG(QString, msg)));
951  }
952 }
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13

Here is the caller graph for this function:

void QxrdWindow::displayStatusMessage ( QString  msg)
slot

Definition at line 1063 of file qxrdwindow.cpp.

References INVOKE_CHECK, m_StatusMsg, and m_StatusTimer.

1064 {
1065  if (QThread::currentThread()==thread()) {
1066  m_StatusMsg -> setText(msg);
1067 
1068  // printMessage(msg);
1069 
1070  m_StatusTimer.start(5000);
1071  } else {
1072  INVOKE_CHECK(QMetaObject::invokeMethod(this,
1073  "displayStatusMessage",
1074  Qt::QueuedConnection,
1075  Q_ARG(QString, msg)));
1076  }
1077 }
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13
QLabel * m_StatusMsg
Definition: qxrdwindow.h:194
QTimer m_StatusTimer
Definition: qxrdwindow.h:196
void QxrdWindow::doAccumulateImages ( )
slot

Definition at line 1649 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1650 {
1652 
1653  if (proc) {
1654  QStringList files = QFileDialog::getOpenFileNames(this,
1655  "Select data files to accumulate...",
1656  proc -> get_DataPath());
1657 
1658  QMetaObject::invokeMethod(proc.data(), "accumulateImages", Q_ARG(QStringList, files));
1659  }
1660 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doAddImages ( )
slot

Definition at line 1662 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1663 {
1665 
1666  if (proc) {
1667  QStringList files = QFileDialog::getOpenFileNames(this,
1668  "Select data file(s) to add to current...",
1669  proc -> get_DataPath());
1670 
1671  QMetaObject::invokeMethod(proc.data(), "addImages", Q_ARG(QStringList, files));
1672  }
1673 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doClearBadPixels ( )
slot

Definition at line 1424 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

1425 {
1427 
1429 
1430  if (proc) {
1431  if (proc->badPixels() == NULL) {
1432  warningMessage("No Bad Pixel data to clear");
1433  } else {
1434  if (QMessageBox::question(this, "Clear Bad Pixels", "Do you really want to clear the bad pixel map?",
1435  QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
1436  proc->clearBadPixels();
1437  }
1438  }
1439  }
1440 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

void QxrdWindow::doClearDark ( )
slot

Definition at line 1316 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1317 {
1319 
1321 
1322  if (proc) {
1323  if (proc->darkImage() == NULL) {
1324  warningMessage("No dark image available to clear");
1325  } else {
1326  if (QMessageBox::question(this, "Clear Dark Image?", "Do you really want to clear the dark image?",
1327  QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
1328  proc->clearDark();
1329  }
1330  }
1331  }
1332 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doClearGainMap ( )
slot

Definition at line 1478 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1479 {
1481 
1483 
1484  if (proc) {
1485  if (proc->gainMap() == NULL) {
1486  warningMessage("No Gain Map available to clear");
1487  } else {
1488  if (QMessageBox::question(this, "Clear Gain Map", "Do you really want to clear the gain map?",
1489  QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
1490  proc->clearGainMap();
1491  }
1492  }
1493  }
1494 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doClearMask ( )
slot

Definition at line 1370 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1371 {
1373 
1375 
1376  if (proc) {
1377  if (proc->mask() == NULL) {
1378  warningMessage("No mask image available to clear");
1379  } else {
1380  if (QMessageBox::question(this, "Clear Mask?", "Do you really want to clear the mask?",
1381  QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
1382  proc->clearMask();
1383  }
1384  }
1385  }
1386 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doCorrelate ( )
slot

Definition at line 1748 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1749 {
1751 
1752  if (proc) {
1753  QStringList files = QFileDialog::getOpenFileNames(this,
1754  "Select data files to correlate with current image...",
1755  proc -> get_DataPath());
1756 
1757  QMetaObject::invokeMethod(proc.data(), "correlateImages", Q_ARG(QStringList, files));
1758  }
1759 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doEditDetectorPreferences ( )
slot

Definition at line 1179 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_Experiment.

Referenced by QxrdAcquisitionDialog::QxrdAcquisitionDialog().

1180 {
1182 
1184 
1185  prefs.exec();
1186 }
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169

Here is the caller graph for this function:

void QxrdWindow::doEditPreferences ( )
slot

Definition at line 1170 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_Experiment.

Referenced by initialize(), and QxrdAcquisitionDialog::QxrdAcquisitionDialog().

1171 {
1173 
1175 
1176  prefs.exec();
1177 }
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169

Here is the caller graph for this function:

void QxrdWindow::doIntegrateSequence ( )
slot

Definition at line 1761 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1762 {
1764 
1765  if (proc) {
1766  QStringList files = QFileDialog::getOpenFileNames(this,
1767  "Select data files to integrate...",
1768  proc -> get_DataPath());
1769 
1770  foreach (QString file, files) {
1771  proc->integrateData(file);
1772  }
1773  }
1774 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doLoadBadPixels ( )
slot

Definition at line 1408 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_DataProcessor.

1409 {
1411 
1413 
1414  if (proc) {
1415  QString theFile = QFileDialog::getOpenFileName(
1416  this, "Load Bad Pixel Map from...", proc -> get_DataPath());
1417 
1418  if (theFile.length()) {
1419  proc->loadBadPixels(theFile);
1420  }
1421  }
1422 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171
void QxrdWindow::doLoadDark ( )
slot

Definition at line 1300 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_DataProcessor.

Referenced by initialize().

1301 {
1303 
1305 
1306  if (proc) {
1307  QString theFile = QFileDialog::getOpenFileName(
1308  this, "Load Dark Data from...", proc -> get_DataPath());
1309 
1310  if (theFile.length()) {
1311  proc->loadDark(theFile);
1312  }
1313  }
1314 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doLoadData ( )
slot

Definition at line 1264 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_DataProcessor.

Referenced by initialize().

1265 {
1267 
1269 
1270  if (proc) {
1271  QString theFile = QFileDialog::getOpenFileName(
1272  this, "Load Data from...", proc -> get_DataPath());
1273 
1274  if (theFile.length()) {
1275  proc->loadData(theFile);
1276  }
1277  }
1278 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doLoadGainMap ( )
slot

Definition at line 1462 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_DataProcessor.

Referenced by initialize().

1463 {
1465 
1467 
1468  if (proc) {
1469  QString theFile = QFileDialog::getOpenFileName(
1470  this, "Load Pixel Gain Map from...", proc -> get_DataPath());
1471 
1472  if (theFile.length()) {
1473  proc->loadGainMap(theFile);
1474  }
1475  }
1476 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doLoadMask ( )
slot

Definition at line 1354 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_DataProcessor.

Referenced by initialize().

1355 {
1357 
1359 
1360  if (proc) {
1361  QString theFile = QFileDialog::getOpenFileName(
1362  this, "Load Mask from...", proc -> get_DataPath());
1363 
1364  if (theFile.length()) {
1365  proc->loadMask(theFile);
1366  }
1367  }
1368 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doLoadScript ( )
slot

Definition at line 1582 of file qxrdwindow.cpp.

References loadScript(), and m_DataProcessor.

Referenced by initialize().

1583 {
1585 
1586  if (proc) {
1587  QString theFile = QFileDialog::getOpenFileName(
1588  this, "Load Script from...", proc->get_ScriptPath());
1589 
1590  if (theFile.length()) {
1591  proc->set_ScriptPath(theFile);
1592 
1593  loadScript(theFile);
1594  }
1595  }
1596 }
void loadScript(QString path)
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doPolarNormalization ( )
slot

Definition at line 2054 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_Experiment.

Referenced by initialize().

2055 {
2057 
2058 
2060 
2061  if (expt) {
2062  QxrdDataProcessorPtr proc(expt->dataProcessor());
2063 
2064  if (proc) {
2065  QxrdPolarNormalizationDialog norm(proc, this);
2066 
2067  norm.exec();
2068  }
2069  }
2070 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169

Here is the caller graph for this function:

void QxrdWindow::doPolarTransform ( )
slot

Definition at line 2036 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, and m_Experiment.

Referenced by initialize().

2037 {
2039 
2040 
2042 
2043  if (expt) {
2044  QxrdDataProcessorPtr proc(expt->dataProcessor());
2045 
2046  if (proc) {
2047  QxrdPolarTransformDialog transform(proc, this);
2048 
2049  transform.exec();
2050  }
2051  }
2052 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169

Here is the caller graph for this function:

void QxrdWindow::doProcessSequence ( )
slot

Definition at line 1776 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1777 {
1779 
1780  if (proc) {
1781  QStringList files = QFileDialog::getOpenFileNames(this,
1782  "Select data files to process...",
1783  proc -> get_DataPath());
1784 
1785  foreach (QString file, files) {
1786  proc->processData(file);
1787  }
1788  }
1789 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doProjectAlongX ( )
slot

Definition at line 1706 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1707 {
1709 
1710  if (proc) {
1711  QStringList files = QFileDialog::getOpenFileNames(this,
1712  "Select data files to project along X...",
1713  proc -> get_DataPath());
1714 
1715  QMetaObject::invokeMethod(proc.data(), "projectImages", Q_ARG(QStringList, files),
1716  Q_ARG(int, 1), Q_ARG(int, 0), Q_ARG(int, 0));
1717  }
1718 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doProjectAlongY ( )
slot

Definition at line 1720 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1721 {
1723 
1724  if (proc) {
1725  QStringList files = QFileDialog::getOpenFileNames(this,
1726  "Select data files to project along Y...",
1727  proc -> get_DataPath());
1728 
1729  QMetaObject::invokeMethod(proc.data(), "projectImages", Q_ARG(QStringList, files),
1730  Q_ARG(int, 0), Q_ARG(int, 1), Q_ARG(int, 0));
1731  }
1732 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doProjectAlongZ ( )
slot

Definition at line 1734 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1735 {
1737 
1738  if (proc) {
1739  QStringList files = QFileDialog::getOpenFileNames(this,
1740  "Select data files to project along Z...",
1741  proc -> get_DataPath());
1742 
1743  QMetaObject::invokeMethod(proc.data(), "projectImages", Q_ARG(QStringList, files),
1744  Q_ARG(int, 0), Q_ARG(int, 0), Q_ARG(int, 1));
1745  }
1746 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doRefineCenterTilt ( )
slot

Definition at line 1645 of file qxrdwindow.cpp.

Referenced by initialize().

1646 {
1647 }

Here is the caller graph for this function:

void QxrdWindow::doReflectHorizontally ( )
slot

Definition at line 1688 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1689 {
1691 
1692  if (proc) {
1693  QMetaObject::invokeMethod(proc.data(), "reflectHorizontally");
1694  }
1695 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doReflectVertically ( )
slot

Definition at line 1697 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1698 {
1700 
1701  if (proc) {
1702  QMetaObject::invokeMethod(proc.data(), "reflectVertically");
1703  }
1704 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doSaveBadPixels ( )
slot

Definition at line 1388 of file qxrdwindow.cpp.

References QxrdDataProcessorBase::CanOverwrite, GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

1389 {
1391 
1393 
1394  if (proc) {
1395  if (proc->badPixels() == NULL) {
1396  warningMessage("No Bad Pixel data to save");
1397  } else {
1398  QString theFile = QFileDialog::getSaveFileName(
1399  this, "Save Bad Pixels in", proc -> get_DataPath());
1400 
1401  if (theFile.length()) {
1402  proc->saveBadPixels(theFile, QxrdDataProcessor::CanOverwrite);
1403  }
1404  }
1405  }
1406 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

void QxrdWindow::doSaveCachedGeometry ( )
slot

Definition at line 1496 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_CachedGeometryPath, and m_DataProcessor.

Referenced by initialize().

1497 {
1499 
1501 
1502  if (proc) {
1503  QxrdIntegratorPtr integ(proc->integrator());
1504 
1505  QString theFile = QFileDialog::getSaveFileName(
1506  this, "Save Cached Geometry in", m_CachedGeometryPath);
1507 
1508  if (theFile.length()) {
1509  m_CachedGeometryPath = theFile;
1510 
1511  proc -> saveCachedGeometry(theFile);
1512  }
1513  }
1514 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QSharedPointer< QxrdIntegrator > QxrdIntegratorPtr
QString m_CachedGeometryPath
Definition: qxrdwindow.h:216
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doSaveCachedIntensity ( )
slot

Definition at line 1516 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_CachedIntensityPath, and m_DataProcessor.

Referenced by initialize().

1517 {
1519 
1521 
1522  if (proc) {
1523  QxrdIntegratorPtr integ(proc->integrator());
1524 
1525  QString theFile = QFileDialog::getSaveFileName(
1526  this, "Save Cached Intensity in", m_CachedIntensityPath);
1527 
1528  if (theFile.length()) {
1529  m_CachedIntensityPath = theFile;
1530 
1531  proc -> saveCachedIntensity(theFile);
1532  }
1533  }
1534 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QSharedPointer< QxrdIntegrator > QxrdIntegratorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171
QString m_CachedIntensityPath
Definition: qxrdwindow.h:217

Here is the caller graph for this function:

void QxrdWindow::doSaveDark ( )
slot

Definition at line 1280 of file qxrdwindow.cpp.

References QxrdDataProcessorBase::CanOverwrite, GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1281 {
1283 
1285 
1286  if (proc) {
1287  if (proc->darkImage() == NULL) {
1288  warningMessage("No dark image available to save");
1289  } else {
1290  QString theFile = QFileDialog::getSaveFileName(
1291  this, "Save Dark Data in", proc -> get_DataPath());
1292 
1293  if (theFile.length()) {
1294  proc->saveDark(theFile, QxrdDataProcessor::CanOverwrite);
1295  }
1296  }
1297  }
1298 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doSaveData ( )
slot

Definition at line 1244 of file qxrdwindow.cpp.

References QxrdDataProcessorBase::CanOverwrite, GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1245 {
1247 
1249 
1250  if (proc) {
1251  if (proc->data() == NULL) {
1252  warningMessage("No data available to save");
1253  } else {
1254  QString theFile = QFileDialog::getSaveFileName(
1255  this, "Save Data in", proc -> get_DataPath());
1256 
1257  if (theFile.length()) {
1258  proc->saveData(theFile, QxrdDataProcessor::CanOverwrite);
1259  }
1260  }
1261  }
1262 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doSaveGainMap ( )
slot

Definition at line 1442 of file qxrdwindow.cpp.

References QxrdDataProcessorBase::CanOverwrite, GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1443 {
1445 
1447 
1448  if (proc) {
1449  if (proc->gainMap() == NULL) {
1450  warningMessage("No Gain Map available to save");
1451  } else {
1452  QString theFile = QFileDialog::getSaveFileName(
1453  this, "Save Gain Map in", proc -> get_DataPath());
1454 
1455  if (theFile.length()) {
1456  proc->saveGainMap(theFile, QxrdDataProcessor::CanOverwrite);
1457  }
1458  }
1459  }
1460 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doSaveMask ( )
slot

Definition at line 1334 of file qxrdwindow.cpp.

References QxrdDataProcessorBase::CanOverwrite, GUI_THREAD_CHECK, m_DataProcessor, and warningMessage().

Referenced by initialize().

1335 {
1337 
1339 
1340  if (proc) {
1341  if (proc->mask() == NULL) {
1342  warningMessage("No mask image to save");
1343  } else {
1344  QString theFile = QFileDialog::getSaveFileName(
1345  this, "Save Mask in", proc -> get_DataPath());
1346 
1347  if (theFile.length()) {
1348  proc->saveMask(theFile, QxrdDataProcessor::CanOverwrite);
1349  }
1350  }
1351  }
1352 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void warningMessage(QString msg)
Definition: qxrdwindow.cpp:930
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::doSubtractImages ( )
slot

Definition at line 1675 of file qxrdwindow.cpp.

References m_DataProcessor.

Referenced by initialize().

1676 {
1678 
1679  if (proc) {
1680  QStringList files = QFileDialog::getOpenFileNames(this,
1681  "Select data file(s) to subtract from current...",
1682  proc -> get_DataPath());
1683 
1684  QMetaObject::invokeMethod(proc.data(), "subtractImages", Q_ARG(QStringList, files));
1685  }
1686 }
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171

Here is the caller graph for this function:

void QxrdWindow::doTest ( )
slot

Definition at line 1536 of file qxrdwindow.cpp.

Referenced by initialize().

1537 {
1538 
1539  // m_Data -> setCircularMask();
1540 }

Here is the caller graph for this function:

void QxrdWindow::enableTiltRefinement ( bool  enable)
slot

Definition at line 761 of file qxrdwindow.cpp.

762 {
763  m_ActionRefineCenterTilt->setEnabled(enable);
764 }
void QxrdWindow::executeCommand ( QString  cmd)
signal

Referenced by executeScript(), and QxrdExperiment::openWindows().

Here is the caller graph for this function:

void QxrdWindow::executeScript ( )
slot

Definition at line 1542 of file qxrdwindow.cpp.

References executeCommand().

Referenced by initialize().

1543 {
1544  emit executeCommand(m_ScriptEdit -> toPlainText());
1545 
1546  m_CancelScriptButton -> setEnabled(true);
1547  m_ActionCancelScript -> setEnabled(true);
1548  m_ExecuteScriptButton -> setEnabled(false);
1549  m_ActionExecuteScript -> setEnabled(false);
1550 }
void executeCommand(QString cmd)

Here is the caller graph for this function:

void QxrdWindow::finishedCommand ( QScriptValue  result)
slot

Definition at line 1565 of file qxrdwindow.cpp.

References QxrdScriptEngine::convertToString().

Referenced by QxrdExperiment::openWindows().

1566 {
1567  if (result.isError()) {
1568  int line = result.property("lineNumber").toInteger();
1569 
1570  m_Messages -> append(tr("Error in line %1").arg(line));
1571  m_Messages -> append(result.property("message").toString());
1572  } else {
1573  m_Messages -> append(QxrdScriptEngine::convertToString(result));
1574  }
1575 
1576  m_CancelScriptButton -> setEnabled(false);
1577  m_ActionCancelScript -> setEnabled(false);
1578  m_ExecuteScriptButton -> setEnabled(true);
1579  m_ActionExecuteScript -> setEnabled(true);
1580 }
static QString convertToString(QScriptValue result)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::initialize ( )

Definition at line 120 of file qxrdwindow.cpp.

References QxrdAcquisitionInterface::acquireComplete(), acquireComplete(), acquiredFrame(), QxrdAcquisitionInterface::acquireStarted(), acquireStarted(), QxrdAcquisitionDialog::acquisitionReady(), allocatedMemoryChanged(), QcepPlot::autoScale(), QxrdImagePlot::autoScale(), QxrdCenterFinder::calculateCalibration(), QxrdDataProcessorBase::calculateHistogram(), QxrdDataProcessorBase::calculateROI(), cancelScript(), captureSize(), QxrdCenterFinderDialog::centerMoveDown(), QxrdCenterFinderDialog::centerMoveLeft(), QxrdCenterFinderDialog::centerMoveRight(), QxrdCenterFinderDialog::centerMoveUp(), QxrdApplication::chooseExistingExperiment(), QxrdApplication::chooseNewExperiment(), QxrdIntegratorPlot::clearGraph(), QxrdIntegratorPlot::clearSelectedCurves(), crashProgram(), QxrdCenterFinder::deletePowderPoints(), QxrdApplication::doAboutQxrd(), doAccumulateImages(), doAddImages(), doClearDark(), doClearGainMap(), doClearMask(), doCorrelate(), doEditPreferences(), QxrdFileBrowser::doIntegrate(), doIntegrateSequence(), doLoadDark(), doLoadData(), doLoadGainMap(), doLoadMask(), QxrdApplication::doLoadPreferences(), doLoadScript(), QxrdApplication::doOpenQXRDWebPage(), doPolarNormalization(), doPolarTransform(), doProcessSequence(), doProjectAlongX(), doProjectAlongY(), doProjectAlongZ(), doRefineCenterTilt(), doReflectHorizontally(), doReflectVertically(), doSaveCachedGeometry(), doSaveCachedIntensity(), doSaveDark(), doSaveData(), doSaveGainMap(), doSaveMask(), QxrdApplication::doSavePreferences(), doSubtractImages(), doTest(), QxrdApplication::editGlobalPreferences(), QxrdImagePlot::enableCentering(), QxrdImagePlot::enableHistograms(), QxrdImagePlot::enableMaskCircles(), QxrdImagePlot::enableMaskPolygons(), QcepPlot::enableMeasuring(), QxrdImagePlot::enableMeasuring(), QxrdImagePlot::enablePowderPoints(), QxrdImagePlot::enableSlicing(), QcepPlot::enableZooming(), QxrdImagePlot::enableZooming(), executeScript(), QxrdCenterFinder::fitPowderCircle(), QxrdDataProcessorBase::hideMaskAll(), QxrdDataProcessorBase::hideMaskRange(), QxrdHistogramDialog::histogramSelectionChanged(), QxrdDataProcessorThreaded::integrateSaveAndDisplay(), QxrdIntegrator::integrateVsQ(), QxrdIntegrator::integrateVsR(), QxrdIntegrator::integrateVsTTH(), integrationXUnitsChanged(), QxrdDataProcessorBase::invertMask(), m_Acquisition, m_AcquisitionDialog, m_AcquisitionExtraInputsDialog, m_AcquisitionScalerDialog, m_AllocationStatus, m_Allocator, m_Application, m_CalibrantDialog, m_CenterFinderDialog, m_CorrectionDialog, m_DataProcessor, m_DatasetBrowserDialog, m_DisplayDialog, m_DistortionCorrectionDialog, m_Experiment, m_Highlighter, m_HistogramDialog, m_ImageInfoDialog, m_InputFileBrowser, m_IntegratorDialog, m_MaskDialog, m_OutputFileBrowser, m_Progress, m_ScriptDialog, m_SliceDialog, m_StatusMsg, m_SynchronizedAcquisitionDialog, m_UpdateTimer, m_WindowSettings, newData(), QxrdDataProcessorBase::newIntegrationAvailable(), QxrdCenterFinderPlot::onCenterXChanged(), QxrdImagePlot::onCenterXChanged(), QxrdCenterFinderPlot::onCenterYChanged(), QxrdImagePlot::onCenterYChanged(), onMessageWindowLinesChanged(), QxrdIntegratorPlot::onNewIntegrationAvailable(), onUpdateIntervalMsecChanged(), plotPowderRingCenters(), plotPowderRingRadii(), plotPowderRingTwoTheta(), populateConfigureDetectorMenu(), populateDetectorControlWindowsMenu(), populateExperimentsMenu(), QxrdApplication::possiblyQuit(), QcepPlot::printGraph(), QxrdExperiment::saveExperiment(), saveExperimentAs(), saveExperimentCopy(), QxrdImagePlot::selectHistogram(), QxrdImagePlot::set005Range(), QxrdImagePlot::set010Range(), QxrdImagePlot::set100Range(), QxrdImagePlot::setAutoRange(), QxrdImagePlot::setEarthTones(), QxrdImagePlot::setFire(), QcepMainWindow::setFontSize(), QxrdImagePlot::setGrayscale(), QxrdImagePlot::setIce(), QxrdImagePlot::setInverseGrayscale(), QcepMainWindow::setSpacing(), QxrdImagePlot::setSpectrum(), QxrdAcquisitionDialog::setupAcquireMenu(), setupRecentExperimentsMenu(), QxrdDataProcessorBase::showMaskAll(), QxrdDataProcessorBase::showMaskRange(), QcepMainWindow::shrinkPanels(), QxrdSliceDialog::slicePolygon(), QxrdImagePlot::slicePolygon(), QxrdImagePlot::toggleShowImage(), QxrdImagePlot::toggleShowMask(), QxrdImagePlot::toggleShowOverflow(), QxrdHistogramDialog::updateHistogramNeeded(), updateTitle(), QcepDoubleProperty::valueChanged(), QcepIntProperty::valueChanged(), and QcepPlot::zoomOut().

121 {
122  setupUi(this);
123 
127 
128  updateTitle();
129 
130  setWindowIcon(QIcon(":/images/qxrd-icon-64x64.png"));
131 
134 
135  if (acq) {
136  m_AcquisitionDialog = acq -> controlPanel(sharedFromThis());
138  m_SynchronizedAcquisitionDialog = new QxrdSynchronizedAcquisitionDialog(set->synchronizedAcquisitionDialogSettings(), this, m_Acquisition);
139  m_AcquisitionExtraInputsDialog = new QxrdAcquisitionExtraInputsDialog(set->acquisitionExtraInputsDialogSettings(), this, m_Acquisition);
140  }
141 
143 
144  if (proc) {
145  m_CenterFinderDialog = new QxrdCenterFinderDialog(proc -> centerFinder());
146  m_DistortionCorrectionDialog = new QxrdDistortionCorrectionDialog(proc->distortionCorrection(), sharedFromThis());
147  }
148 
149  if (proc) {
151  }
152 
153  if (acq) {
155  }
156 
157  if (proc) {
158  m_IntegratorDialog = new QxrdIntegratorDialog(proc -> integrator());
159  }
160 
161  if (expt && proc) {
162  QxrdCalibrantLibraryPtr cal(expt->calibrantLibrary());
163 
164  if (cal) {
165  m_CalibrantDialog = new QxrdCalibrantDialog(expt, proc -> centerFinder());
166  }
167  }
168 
169  if (expt) {
170  QcepDatasetModelPtr ds = expt->dataset();
171 
172  if (ds) {
173  m_DatasetBrowserDialog = new QcepDatasetBrowserDialog(expt, ds, this);
174  }
175  }
176 
177  if (expt && set) {
178  m_InputFileBrowser = new QxrdInputFileBrowser(set->inputFileBrowserSettings(), m_Experiment, m_DataProcessor, this);
179  m_OutputFileBrowser = new QxrdOutputFileBrowser(set->outputFileBrowserSettings(), m_Experiment, m_DataProcessor, this);
180  m_ScriptDialog = new QxrdScriptDialog(set->scriptDialogSettings(), m_Experiment, this);
181  }
182 
183  if (set) {
184  m_SliceDialog = new QxrdSliceDialog(set->sliceDialogSettings(), this);
185  m_HistogramDialog = new QxrdHistogramDialog(set->histogramDialogSettings(), m_Experiment, this);
186  m_ImageInfoDialog = new QxrdInfoDialog(set->infoDialogSettings(), this);
187  }
188 
189  if (set) {
190  m_ImagePlot -> init(set->imagePlotSettings());
191  m_CenterFinderPlot -> init(set->centerFinderPlotSettings());
192  m_IntegratorPlot -> init(set->integratorPlotSettings());
193  m_DistortionCorrectionDialog -> init(set->distortionCorrectionDialogSettings());
194  m_DistortionCorrectionPlot -> init(set->distortionCorrectionPlotSettings());
195  }
196 
197  QDesktopWidget *dw = QApplication::desktop();
198  // int screenNum = dw->screenNumber(this);
199  QRect screenGeom = dw->screenGeometry(this);
200 
201  // printf("Screen number %d Geom: %d,%d-%d,%d\n", screenNum,
202  // screenGeom.left(), screenGeom.top(),
203  // screenGeom.right(), screenGeom.bottom());
204 
205  if (m_AcquisitionDialog) {
206  addDockWidget(Qt::RightDockWidgetArea, m_AcquisitionDialog);
207  }
208 
209  if (m_InputFileBrowser) {
210  addDockWidget(Qt::LeftDockWidgetArea, m_InputFileBrowser);
211  }
212 
213  if (screenGeom.height() >= 1280) {
214  splitDockWidget(m_AcquisitionDialog, m_CenterFinderDialog, Qt::Vertical);
215  splitDockWidget(m_CenterFinderDialog, m_IntegratorDialog, Qt::Vertical);
216 
217  tabifyDockWidget(m_InputFileBrowser, m_DatasetBrowserDialog);
218 
220  tabifyDockWidget(m_AcquisitionScalerDialog, m_AcquisitionExtraInputsDialog);
221  tabifyDockWidget(m_AcquisitionExtraInputsDialog, m_SynchronizedAcquisitionDialog);
223  tabifyDockWidget(m_DisplayDialog, m_SliceDialog);
224  tabifyDockWidget(m_SliceDialog, m_ImageInfoDialog);
225  tabifyDockWidget(m_ImageInfoDialog, m_ScriptDialog);
226 
227  tabifyDockWidget(m_CenterFinderDialog, m_MaskDialog);
228  tabifyDockWidget(m_MaskDialog, m_CorrectionDialog);
229  tabifyDockWidget(m_CorrectionDialog, m_CalibrantDialog);
230  tabifyDockWidget(m_CalibrantDialog, m_OutputFileBrowser);
231  tabifyDockWidget(m_OutputFileBrowser, m_HistogramDialog);
232  tabifyDockWidget(m_HistogramDialog, m_DistortionCorrectionDialog);
233  } else if (screenGeom.height() >= 1000) {
234  splitDockWidget(m_AcquisitionDialog, m_CenterFinderDialog, Qt::Vertical);
235 
236  tabifyDockWidget(m_InputFileBrowser, m_DatasetBrowserDialog);
237 
239  tabifyDockWidget(m_AcquisitionScalerDialog, m_AcquisitionExtraInputsDialog);
240  tabifyDockWidget(m_AcquisitionExtraInputsDialog, m_SynchronizedAcquisitionDialog);
242  tabifyDockWidget(m_DisplayDialog, m_SliceDialog);
243  tabifyDockWidget(m_SliceDialog, m_ImageInfoDialog);
244  tabifyDockWidget(m_ImageInfoDialog, m_ScriptDialog);
245 
246  tabifyDockWidget(m_CenterFinderDialog, m_MaskDialog);
247  tabifyDockWidget(m_MaskDialog, m_CorrectionDialog);
248  tabifyDockWidget(m_CorrectionDialog, m_CalibrantDialog);
249  tabifyDockWidget(m_CalibrantDialog, m_OutputFileBrowser);
250  tabifyDockWidget(m_OutputFileBrowser, m_HistogramDialog);
251  tabifyDockWidget(m_HistogramDialog, m_IntegratorDialog);
253  } else {
255  tabifyDockWidget(m_AcquisitionScalerDialog, m_AcquisitionExtraInputsDialog);
256  tabifyDockWidget(m_AcquisitionExtraInputsDialog, m_SynchronizedAcquisitionDialog);
257  tabifyDockWidget(m_CenterFinderDialog, m_IntegratorDialog);
258 
259  tabifyDockWidget(m_InputFileBrowser, m_DatasetBrowserDialog);
260 
263 
264  tabifyDockWidget(m_DisplayDialog, m_MaskDialog);
265  tabifyDockWidget(m_MaskDialog, m_CorrectionDialog);
266  tabifyDockWidget(m_CorrectionDialog, m_CalibrantDialog);
267  tabifyDockWidget(m_CalibrantDialog, m_OutputFileBrowser);
268 
269  tabifyDockWidget(m_OutputFileBrowser, m_SliceDialog);
270  tabifyDockWidget(m_SliceDialog, m_HistogramDialog);
271  tabifyDockWidget(m_HistogramDialog, m_ImageInfoDialog);
272  tabifyDockWidget(m_ImageInfoDialog, m_ScriptDialog);
273  tabifyDockWidget(m_ScriptDialog, m_DistortionCorrectionDialog);
274 
275  if (screenGeom.height() < 1000) {
276  // shrinkObject(this);
277  shrinkPanels(6,1);
278  }
279  }
280 
281  if (expt) {
282  int fs = expt->get_FontSize();
283  int sp = expt->get_Spacing();
284 
285  if (fs > 0) {
286  setFontSize(fs);
287  }
288 
289  if (sp >= 0) {
290  setSpacing(sp);
291  }
292 
293  connect(expt->prop_FontSize(), &QcepIntProperty::valueChanged, this, &QxrdWindow::setFontSize);
294  connect(expt->prop_Spacing(), &QcepIntProperty::valueChanged, this, &QxrdWindow::setSpacing);
295  }
296 
297  // m_Calculator = new QxrdImageCalculator(m_DataProcessor);
298  // addDockWidget(Qt::RightDockWidgetArea, m_Calculator);
299 
300  connect(m_ExecuteScriptButton, &QAbstractButton::clicked, m_ActionExecuteScript, &QAction::triggered);
301  connect(m_ActionExecuteScript, &QAction::triggered, this, &QxrdWindow::executeScript);
302  connect(m_CancelScriptButton, &QAbstractButton::clicked, m_ActionCancelScript, &QAction::triggered);
303  connect(m_ActionCancelScript, &QAction::triggered, this, &QxrdWindow::cancelScript);
304  connect(m_LoadScriptButton, &QAbstractButton::clicked, m_ActionLoadScript, &QAction::triggered);
305  connect(m_ActionLoadScript, &QAction::triggered, this, &QxrdWindow::doLoadScript);
306 
307  if (app) {
308  connect(m_ActionAutoScale, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::autoScale);
309  connect(m_ActionQuit, &QAction::triggered, app.data(), &QxrdApplication::possiblyQuit);
310  connect(m_ActionGlobalPreferences, &QAction::triggered, app.data(), &QxrdApplication::editGlobalPreferences);
311  connect(m_ActionExperimentPreferences, &QAction::triggered, this, &QxrdWindow::doEditPreferences);
312  connect(m_ActionLoadPreferences, &QAction::triggered, app.data(), &QxrdApplication::doLoadPreferences);
313  connect(m_ActionSavePreferences, &QAction::triggered, app.data(), &QxrdApplication::doSavePreferences);
314 
315  connect(m_ActionNewExperiment, &QAction::triggered, app.data(), &QxrdApplication::chooseNewExperiment);
316  connect(m_ActionOpenExperiment, &QAction::triggered, app.data(), &QxrdApplication::chooseExistingExperiment);
317  connect(m_ActionCloseExperiment, &QAction::triggered, this, &QWidget::close);
318  }
319 
320  if (expt) {
321  connect(m_ActionSaveExperiment, &QAction::triggered, expt.data(), &QxrdExperiment::saveExperiment);
322 // connect(m_ActionOpenDetectorControlWindow, &QAction::triggered, this, &QxrdWindow::doOpenAcquisitionWindow);
323  }
324 
325  connect(m_ActionSaveExperimentAs, &QAction::triggered, this, &QxrdWindow::saveExperimentAs);
326  connect(m_ActionSaveExperimentCopy, &QAction::triggered, this, &QxrdWindow::saveExperimentCopy);
327 
328  m_ExperimentsMenu->menuAction()->setMenuRole(QAction::NoRole);
329 
330  connect(m_ExperimentsMenu, &QMenu::aboutToShow, this, &QxrdWindow::populateExperimentsMenu);
331  setupRecentExperimentsMenu(m_ActionRecentExperiments);
332 
333  connect(m_ConfigureDetectorMenu, &QMenu::aboutToShow, this, &QxrdWindow::populateConfigureDetectorMenu);
334  m_ConfigureDetectorMenu->menuAction()->setMenuRole(QAction::NoRole);
335 
336  connect(m_DetectorControlWindowsMenu, &QMenu::aboutToShow, this, &QxrdWindow::populateDetectorControlWindowsMenu);
337 
338  connect(m_ActionLoadData, &QAction::triggered, this, &QxrdWindow::doLoadData);
339  connect(m_ActionSaveData, &QAction::triggered, this, &QxrdWindow::doSaveData);
340  connect(m_ActionLoadDark, &QAction::triggered, this, &QxrdWindow::doLoadDark);
341  connect(m_ActionSaveDark, &QAction::triggered, this, &QxrdWindow::doSaveDark);
342  connect(m_ActionClearDark, &QAction::triggered, this, &QxrdWindow::doClearDark);
343  connect(m_ActionLoadMask, &QAction::triggered, this, &QxrdWindow::doLoadMask);
344  connect(m_ActionSaveMask, &QAction::triggered, this, &QxrdWindow::doSaveMask);
345  connect(m_ActionClearMask, &QAction::triggered, this, &QxrdWindow::doClearMask);
346  connect(m_ActionLoadGainMap, &QAction::triggered, this, &QxrdWindow::doLoadGainMap);
347  connect(m_ActionSaveGainMap, &QAction::triggered, this, &QxrdWindow::doSaveGainMap);
348  connect(m_ActionClearGainMap, &QAction::triggered, this, &QxrdWindow::doClearGainMap);
349 
350  connect(m_ActionPrintImage, &QAction::triggered, m_ImagePlot, &QcepPlot::printGraph);
351 
352  connect(m_ActionAccumulateImages, &QAction::triggered, this, &QxrdWindow::doAccumulateImages);
353  connect(m_ActionAddImage, &QAction::triggered, this, &QxrdWindow::doAddImages);
354  connect(m_ActionSubtractImage, &QAction::triggered, this, &QxrdWindow::doSubtractImages);
355  connect(m_ActionProjectImagesX, &QAction::triggered, this, &QxrdWindow::doProjectAlongX);
356  connect(m_ActionProjectImagesY, &QAction::triggered, this, &QxrdWindow::doProjectAlongY);
357  connect(m_ActionProjectImagesZ, &QAction::triggered, this, &QxrdWindow::doProjectAlongZ);
358  connect(m_ActionCorrelateImage, &QAction::triggered, this, &QxrdWindow::doCorrelate);
359  connect(m_ActionProcessData, &QAction::triggered, this, &QxrdWindow::doProcessSequence);
360 
361  connect(m_ActionReflectHorizontally, &QAction::triggered, this, &QxrdWindow::doReflectHorizontally);
362  connect(m_ActionReflectVertically, &QAction::triggered, this, &QxrdWindow::doReflectVertically);
363 
364  connect(m_DisplayDialog -> m_AutoRange, &QAbstractButton::clicked, m_ActionAutoRange, &QAction::triggered);
365  connect(m_DisplayDialog -> m_Display_5pct, &QAbstractButton::clicked, m_Action005Range, &QAction::triggered);
366  connect(m_DisplayDialog -> m_Display_10pct, &QAbstractButton::clicked, m_Action010Range, &QAction::triggered);
367  connect(m_DisplayDialog -> m_Display_100pct, &QAbstractButton::clicked, m_Action100Range, &QAction::triggered);
368 
369  connect(m_Action005Range, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::set005Range);
370  connect(m_Action010Range, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::set010Range);
371  connect(m_Action100Range, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::set100Range);
372  connect(m_ActionAutoRange, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setAutoRange);
373 
374  connect(m_ActionGrayscale, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setGrayscale);
375  connect(m_ActionInverseGrayscale, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setInverseGrayscale);
376  connect(m_ActionEarthTones, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setEarthTones);
377  connect(m_ActionSpectrum, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setSpectrum);
378  connect(m_ActionFire, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setFire);
379  connect(m_ActionIce, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::setIce);
380 
381  connect(m_ActionRefineCenterTilt, &QAction::triggered, this, &QxrdWindow::doRefineCenterTilt);
382  connect(m_ActionMoveCenterUp, &QAction::triggered, m_CenterFinderDialog, &QxrdCenterFinderDialog::centerMoveUp);
383  connect(m_ActionMoveCenterDown, &QAction::triggered, m_CenterFinderDialog, &QxrdCenterFinderDialog::centerMoveDown);
384  connect(m_ActionMoveCenterLeft, &QAction::triggered, m_CenterFinderDialog, &QxrdCenterFinderDialog::centerMoveLeft);
385  connect(m_ActionMoveCenterRight, &QAction::triggered, m_CenterFinderDialog, &QxrdCenterFinderDialog::centerMoveRight);
386 
387  if (proc) {
388  QxrdCenterFinderPtr cf(proc->centerFinder());
389 
390  if (cf) {
391  connect(m_ActionFindBeamCenter, &QAction::triggered, cf.data(), &QxrdCenterFinder::fitPowderCircle, Qt::DirectConnection);
392  connect(m_ActionClearMarkers, &QAction::triggered, cf.data(), &QxrdCenterFinder::deletePowderPoints, Qt::DirectConnection);
393  connect(m_ActionCalculateCalibrationPowder, &QAction::triggered, cf.data(), &QxrdCenterFinder::calculateCalibration);
394  }
395  }
396 
397  connect(m_ActionPlotPowderRingPoints, &QAction::triggered, this, &QxrdWindow::plotPowderRingRadii);
398  connect(m_ActionPlotPowderRingTwoTheta, &QAction::triggered, this, &QxrdWindow::plotPowderRingTwoTheta);
399  connect(m_ActionPlotPowderRingCenters, &QAction::triggered, this, &QxrdWindow::plotPowderRingCenters);
400 
401  m_AcquisitionDialog->setupAcquireMenu(m_AcquireMenu);
402 
404 
405  connect(m_ActionShowImage, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::toggleShowImage);
406  connect(m_ActionShowMask, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::toggleShowMask);
407  connect(m_ActionShowOverflow, &QAction::triggered, m_ImagePlot, &QxrdImagePlot::toggleShowOverflow);
408 
409  if (proc) {
410  connect(m_ActionShowMaskRange, &QAction::triggered, proc.data(), (void (QxrdDataProcessorBase::*)()) &QxrdDataProcessorBase::showMaskRange);
411  connect(m_ActionHideMaskRange, &QAction::triggered, proc.data(), (void (QxrdDataProcessorBase::*)()) &QxrdDataProcessorBase::hideMaskRange);
412  connect(m_ActionShowMaskAll, &QAction::triggered, proc.data(), &QxrdDataProcessorBase::showMaskAll);
413  connect(m_ActionHideMaskAll, &QAction::triggered, proc.data(), &QxrdDataProcessorBase::hideMaskAll);
414  connect(m_ActionInvertMask, &QAction::triggered, proc.data(), &QxrdDataProcessorBase::invertMask);
415  connect(m_ActionMaskCircles, &QAction::triggered, m_ImageMaskCirclesButton, &QAbstractButton::click);
416  connect(m_ActionMaskPolygons, &QAction::triggered, m_ImageMaskPolygonsButton, &QAbstractButton::click);
417 
418  connect(m_ActionROICalculate, &QAction::triggered, proc.data(), &QxrdDataProcessorBase::calculateROI);
419  connect(m_ActionHistogramCalculate, &QAction::triggered, proc.data(), &QxrdDataProcessorBase::calculateHistogram);
420  }
421 
422  connect(m_ActionTest, &QAction::triggered, this, &QxrdWindow::doTest);
423  connect(m_ActionCrashProgram, &QAction::triggered, this, &QxrdWindow::crashProgram);
424 
425  connect(m_ImageZoomInButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableZooming);
426  connect(m_ImageZoomOutButton, &QAbstractButton::clicked, m_ImagePlot, &QcepPlot::zoomOut);
427  connect(m_ImageZoomAllButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::autoScale);
428  connect(m_ImageSetCenterButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableCentering);
429  connect(m_ImageSliceButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableSlicing);
430  connect(m_ImageMeasureButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableMeasuring);
431  connect(m_ImageHistogramButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableHistograms);
432  connect(m_ImageMaskCirclesButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableMaskCircles);
433  connect(m_ImageMaskPolygonsButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enableMaskPolygons);
434  connect(m_ImagePowderPointsButton, &QAbstractButton::clicked, m_ImagePlot, &QxrdImagePlot::enablePowderPoints);
435 
436  connect(m_CenteringZoomInButton, &QAbstractButton::clicked, m_CenterFinderPlot, &QcepPlot::enableZooming);
437  connect(m_CenteringZoomOutButton, &QAbstractButton::clicked, m_CenterFinderPlot, &QcepPlot::zoomOut);
438  connect(m_CenteringZoomAllButton, &QAbstractButton::clicked, m_CenterFinderPlot, &QcepPlot::autoScale);
439  connect(m_CenteringMeasureButton, &QAbstractButton::clicked, m_CenterFinderPlot, &QcepPlot::enableMeasuring);
440 
441  connect(m_IntegratorZoomInButton, &QAbstractButton::clicked, m_IntegratorPlot, &QcepPlot::enableZooming);
442  connect(m_IntegratorZoomOutButton, &QAbstractButton::clicked, m_IntegratorPlot, &QcepPlot::zoomOut);
443  connect(m_IntegratorZoomAllButton, &QAbstractButton::clicked, m_IntegratorPlot, &QcepPlot::autoScale);
444  connect(m_IntegratorMeasureButton, &QAbstractButton::clicked, m_IntegratorPlot, &QcepPlot::enableMeasuring);
445 
446  connect(m_DistortionCorrectionZoomInButton, &QAbstractButton::clicked, m_DistortionCorrectionPlot, &QcepPlot::enableZooming);
447  connect(m_DistortionCorrectionZoomOutButton, &QAbstractButton::clicked, m_DistortionCorrectionPlot, &QcepPlot::zoomOut);
448  connect(m_DistortionCorrectionZoomAllButton, &QAbstractButton::clicked, m_DistortionCorrectionPlot, &QcepPlot::autoScale);
449  connect(m_DistortionCorrectionMeasureButton, &QAbstractButton::clicked, m_DistortionCorrectionPlot, &QcepPlot::enableMeasuring);
450 
451  connect(m_DisplayDialog -> m_DisplayOptionsButton, &QAbstractButton::clicked, this, &QxrdWindow::doEditPreferences);
452  connect(m_CorrectionDialog -> m_CorrectionOptionsButton, &QAbstractButton::clicked, this, &QxrdWindow::doEditPreferences);
453 
454  if (app) {
455  connect(m_ActionAboutQXRD, &QAction::triggered, app.data(), &QxrdApplication::doAboutQxrd);
456  connect(m_ActionOpenQXRDWebPage, &QAction::triggered, app.data(), &QxrdApplication::doOpenQXRDWebPage);
457  }
458 
459  connect(m_HelpHomeButton, &QAbstractButton::clicked, m_HelpBrowser, &QTextBrowser::home);
460  connect(m_HelpForwardButton, &QAbstractButton::clicked, m_HelpBrowser, &QTextBrowser::forward);
461  connect(m_HelpBackButton, &QAbstractButton::clicked, m_HelpBrowser, &QTextBrowser::backward);
462 
463  connect(m_HelpBrowser, &QTextBrowser::forwardAvailable, m_HelpForwardButton, &QWidget::setEnabled);
464  connect(m_HelpBrowser, &QTextBrowser::backwardAvailable, m_HelpBackButton, &QWidget::setEnabled);
465 
466  m_HelpBrowser->init(m_Experiment);
467 
468  connect(&m_UpdateTimer, &QTimer::timeout, this, &QxrdWindow::newData);
469 
470  connect(m_ActionIntegrate, &QAction::triggered, this, &QxrdWindow::doIntegrateSequence);
471  connect(m_ActionIntegrateCurrent, &QAction::triggered,
472  m_DataProcessor.data(), &QxrdDataProcessorThreaded::integrateSaveAndDisplay);
473  connect(m_ActionIntegrateInputImages, &QAction::triggered,
475 
476  connect(m_ActionPolarTransform, &QAction::triggered, this, &QxrdWindow::doPolarTransform);
477  connect(m_ActionPolarNormalization, &QAction::triggered, this, &QxrdWindow::doPolarNormalization);
478 
479  connect(m_IntegratorDialog -> m_ClearGraphButton, &QAbstractButton::clicked, m_IntegratorPlot, &QxrdIntegratorPlot::clearGraph);
480  connect(m_IntegratorDialog -> m_ClearSelectedGraphButton, &QAbstractButton::clicked, m_IntegratorPlot, &QxrdIntegratorPlot::clearSelectedCurves);
481  connect(m_ActionClearIntegratedData, &QAction::triggered, m_IntegratorPlot, &QxrdIntegratorPlot::clearGraph);
482  connect(m_ActionClearSelectedIntegratedData, &QAction::triggered, m_IntegratorPlot, &QxrdIntegratorPlot::clearSelectedCurves);
483 
484  connect(m_ActionSaveCachedGeometry, &QAction::triggered, this, &QxrdWindow::doSaveCachedGeometry);
485  connect(m_ActionSaveCachedIntensity, &QAction::triggered, this, &QxrdWindow::doSaveCachedIntensity);
486 
487  connect(m_IntegratorDialog -> m_IntegrateOptionsButton, &QAbstractButton::clicked, this, &QxrdWindow::doEditPreferences);
488 
489  if (proc) {
490  connect(proc->integrator()->prop_IntegrationXUnits(), &QcepIntProperty::valueChanged,
492  integrationXUnitsChanged(proc->integrator()->get_IntegrationXUnits());
493 
494  connect(m_ActionIntegrateVsR, &QAction::triggered, proc->integrator().data(), &QxrdIntegrator::integrateVsR);
495  connect(m_ActionIntegrateVsQ, &QAction::triggered, proc->integrator().data(), &QxrdIntegrator::integrateVsQ);
496  connect(m_ActionIntegrateVsTTH, &QAction::triggered, proc->integrator().data(), &QxrdIntegrator::integrateVsTTH);
497  }
498 
499  if (set) {
500  QxrdImagePlotSettingsPtr ps(set->imagePlotSettings());
501 
502  if (ps) {
503  ps->prop_XMouse()->linkTo(m_XMouse);
504  ps->prop_YMouse()->linkTo(m_YMouse);
505  ps->prop_ValMouse()->linkTo(m_ValMouse);
506  ps->prop_TTHMouse()->linkTo(m_TTHMouse);
507  ps->prop_QMouse()->linkTo(m_QMouse);
508  ps->prop_RMouse()->linkTo(m_RMouse);
509  }
510  }
511 
512  m_StatusMsg = new QLabel(NULL);
513  m_StatusMsg -> setMinimumWidth(200);
514  m_StatusMsg -> setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
515  m_StatusMsg -> setToolTip(tr("Status Messages"));
516 
517  statusBar() -> addPermanentWidget(m_StatusMsg);
518 
519  m_Progress = new QProgressBar(NULL);
520  m_Progress -> setMinimumWidth(150);
521  m_Progress -> setMinimum(0);
522  m_Progress -> setMaximum(100);
523  m_Progress -> setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
524  m_Progress -> setToolTip(tr("Acquisition progress"));
525 
526  statusBar() -> addPermanentWidget(m_Progress);
527 
528  m_AllocationStatus = new QProgressBar(NULL);
529  m_AllocationStatus -> setMinimumWidth(100);
530  m_AllocationStatus -> setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
531  m_AllocationStatus -> setFormat("%v/%m");
532  m_AllocationStatus -> setTextVisible(true);
533  m_AllocationStatus -> setToolTip(tr("Memory usage"));
534 
535  statusBar() -> addPermanentWidget(m_AllocationStatus);
536 
537  if (app && m_Acquisition == NULL) {
538  app->criticalMessage("Oh no, QxrdWindow::m_Acquisition == NULL");
539  }
540 
543  connect(m_Acquisition.data(), SIGNAL(acquiredFrame(QString,int,int,int,int,int,int)),
544  this, SLOT(acquiredFrame(QString,int,int,int,int,int,int)));
547 
548  if (acq) {
549  acq -> prop_OverflowLevel() -> linkTo(m_DisplayDialog->m_OverflowLevel);
550  acq -> prop_RawSaveTime() -> linkTo(m_CorrectionDialog->m_SaveRawTime);
551  acq -> prop_DarkSaveTime() -> linkTo(m_CorrectionDialog->m_SaveDarkTime);
552 
553  connect(acq->prop_OverflowLevel(), &QcepIntProperty::valueChanged,
555  }
556 
557  if (expt) {
558  expt -> prop_CompletionPercentage() -> linkTo(m_Progress);
559  }
560 
561  if (proc) {
562  proc -> prop_PerformDarkSubtraction() -> linkTo(m_CorrectionDialog->m_PerformDark);
563  proc -> prop_PerformDarkSubtractionTime() -> linkTo(m_CorrectionDialog->m_PerformDarkTime);
564  proc -> prop_SaveRawImages() -> linkTo(m_CorrectionDialog->m_SaveRaw);
565  proc -> prop_SaveDarkImages() -> linkTo(m_CorrectionDialog->m_SaveDark);
566  proc -> prop_PerformBadPixels() -> linkTo(m_CorrectionDialog->m_PerformBadPixels);
567  proc -> prop_PerformBadPixelsTime() -> linkTo(m_CorrectionDialog->m_PerformBadPixelsTime);
568  proc -> prop_PerformGainCorrection() -> linkTo(m_CorrectionDialog->m_PerformGainCorrection);
569  proc -> prop_PerformGainCorrectionTime() -> linkTo(m_CorrectionDialog->m_PerformGainCorrectionTime);
570  proc -> prop_SaveSubtracted() -> linkTo(m_CorrectionDialog->m_SaveSubtracted);
571  proc -> prop_SaveSubtractedTime() -> linkTo(m_CorrectionDialog->m_SaveSubtractedTime);
572  proc -> prop_SaveAsText() -> linkTo(m_CorrectionDialog->m_SaveAsText);
573  proc -> prop_SaveAsTextTime() -> linkTo(m_CorrectionDialog->m_SaveAsTextTime);
574  proc -> prop_PerformIntegration() -> linkTo(m_CorrectionDialog->m_PerformIntegration);
575  proc -> prop_PerformIntegrationTime() -> linkTo(m_CorrectionDialog->m_PerformIntegrationTime);
576  proc -> prop_DisplayIntegratedData() -> linkTo(m_CorrectionDialog->m_DisplayIntegratedData);
577  proc -> prop_DisplayIntegratedDataTime() -> linkTo(m_CorrectionDialog->m_DisplayIntegratedDataTime);
578  proc -> prop_SaveIntegratedData() -> linkTo(m_CorrectionDialog->m_SaveIntegratedData);
579  proc -> prop_SaveIntegratedDataTime() -> linkTo(m_CorrectionDialog->m_SaveIntegratedDataTime);
580  proc -> prop_SaveIntegratedInSeparateFiles() -> linkTo(m_CorrectionDialog->m_SaveIntegratedInSeparateFiles);
581  proc -> prop_AccumulateIntegrated2D() ->linkTo(m_CorrectionDialog->m_AccumulateIntegrated2D);
582  proc -> prop_AccumulateIntegratedName() -> linkTo(m_CorrectionDialog->m_AccumulateIntegratedName);
583  proc -> prop_EstimatedProcessingTime() -> linkTo(m_CorrectionDialog->m_EstimatedProcessingTime);
584  }
585 
586  if (set) {
587  QxrdImagePlotSettingsPtr ps(set->imagePlotSettings());
588 
589  if (ps) {
590  ps -> prop_DisplayMinimumPct() -> linkTo(m_DisplayDialog->m_DisplayMinimumPct);
591  ps -> prop_DisplayMaximumPct() -> linkTo(m_DisplayDialog->m_DisplayMaximumPct);
592  ps -> prop_DisplayMinimumVal() -> linkTo(m_DisplayDialog->m_DisplayMinimumVal);
593  ps -> prop_DisplayMaximumVal() -> linkTo(m_DisplayDialog->m_DisplayMaximumVal);
594  ps -> prop_DisplayMinimumPctle() -> linkTo(m_DisplayDialog->m_DisplayMinimumPctle);
595  ps -> prop_DisplayMaximumPctle() -> linkTo(m_DisplayDialog->m_DisplayMaximumPctle);
596 
597  ps -> prop_DisplayLog() -> linkTo(m_DisplayDialog->m_DisplayImageLog);
598  ps -> prop_DisplayScalingMode() -> linkTo(m_DisplayDialog->m_DisplayScalingMode);
599 
600  connect(ps -> prop_DisplayScalingMode(), &QcepIntProperty::valueChanged, m_DisplayDialog->m_DisplayParmsStack, &QStackedWidget::setCurrentIndex);
601  m_DisplayDialog->m_DisplayParmsStack->setCurrentIndex(ps->get_DisplayScalingMode());
602 
603  ps -> prop_DisplayColorMap() -> linkTo(m_DisplayDialog->m_DisplayColorMap);
604 
605  ps -> prop_ImageShown() -> linkTo(m_DisplayDialog->m_DisplayImage);
606  ps -> prop_MaskShown() -> linkTo(m_DisplayDialog->m_DisplayMask);
607  ps -> prop_OverflowShown() -> linkTo(m_DisplayDialog->m_DisplayOverflow);
608  ps -> prop_InterpolatePixels() -> linkTo(m_DisplayDialog->m_InterpolatePixels);
609  ps -> prop_MaintainAspectRatio() -> linkTo(m_DisplayDialog->m_MaintainAspectRatio);
610 
611  }
612  }
613 
614  m_ImagePlot -> setProcessor(m_DataProcessor);
615  m_DistortionCorrectionPlot -> setWindow(this);
616  m_CenterFinderPlot -> setWindow(this);
617  m_IntegratorPlot -> setDataProcessor(m_DataProcessor);
618 
619  if (proc) {
620  connect(proc -> centerFinder() -> prop_CenterX(), &QcepDoubleProperty::valueChanged,
621  m_ImagePlot, &QxrdImagePlot::onCenterXChanged);
622 
623  connect(proc -> centerFinder() -> prop_CenterY(), &QcepDoubleProperty::valueChanged,
624  m_ImagePlot, &QxrdImagePlot::onCenterYChanged);
625 
626  connect(proc -> centerFinder() -> prop_CenterX(), &QcepDoubleProperty::valueChanged,
627  m_CenterFinderPlot, &QxrdCenterFinderPlot::onCenterXChanged);
628 
629  connect(proc -> centerFinder() -> prop_CenterY(), &QcepDoubleProperty::valueChanged,
630  m_CenterFinderPlot, &QxrdCenterFinderPlot::onCenterYChanged);
631 
634  }
635 
637 
638  if (alloc) {
639  connect(alloc -> prop_Allocated(), &QcepIntProperty::valueChanged, this, &QxrdWindow::allocatedMemoryChanged);
640  connect(alloc -> prop_Max(), &QcepIntProperty::valueChanged, this, &QxrdWindow::allocatedMemoryChanged);
641  }
642 
643  m_WindowsMenu -> addAction(m_AcquisitionDialog -> toggleViewAction());
644  m_WindowsMenu -> addAction(m_AcquisitionScalerDialog -> toggleViewAction());
645  m_WindowsMenu -> addAction(m_AcquisitionExtraInputsDialog -> toggleViewAction());
646  m_WindowsMenu -> addAction(m_InputFileBrowser -> toggleViewAction());
647  m_WindowsMenu -> addAction(m_OutputFileBrowser -> toggleViewAction());
648  m_WindowsMenu -> addAction(m_SynchronizedAcquisitionDialog -> toggleViewAction());
649  m_WindowsMenu -> addAction(m_DisplayDialog -> toggleViewAction());
650  m_WindowsMenu -> addAction(m_CenterFinderDialog -> toggleViewAction());
651  m_WindowsMenu -> addAction(m_DistortionCorrectionDialog -> toggleViewAction());
652  m_WindowsMenu -> addAction(m_MaskDialog -> toggleViewAction());
653  m_WindowsMenu -> addAction(m_CalibrantDialog -> toggleViewAction());
654  m_WindowsMenu -> addAction(m_DatasetBrowserDialog -> toggleViewAction());
655  m_WindowsMenu -> addAction(m_CorrectionDialog -> toggleViewAction());
656  m_WindowsMenu -> addAction(m_IntegratorDialog -> toggleViewAction());
657  m_WindowsMenu -> addAction(m_SliceDialog -> toggleViewAction());
658  m_WindowsMenu -> addAction(m_HistogramDialog -> toggleViewAction());
659  m_WindowsMenu -> addAction(m_ImageInfoDialog -> toggleViewAction());
660  m_WindowsMenu -> addAction(m_ScriptDialog -> toggleViewAction());
661 
662  m_Highlighter = new QxrdHighlighter(m_ScriptEdit->document());
663 
664 // if (expt) {
665 // expt->prop_DefaultScript()->linkTo(m_ScriptEdit);
666 // }
667 
668  QxrdToDoList *toDoList = new QxrdToDoList(this);
669  QSortFilterProxyModel *sorted = new QSortFilterProxyModel(this);
670 
671  sorted->setSourceModel(toDoList);
672 
673  sorted->sort(0, Qt::DescendingOrder);
674 
675  m_ToDoList->setModel(sorted);
676  m_ToDoList->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
677  m_ToDoList->horizontalHeader()->setStretchLastSection(true);
678  m_ToDoList->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
679  m_ToDoList->setSelectionBehavior(QAbstractItemView::SelectRows);
680 
681  connect(m_ImagePlot, &QxrdImagePlot::slicePolygon,
683 
684  connect(m_ImagePlot, &QxrdImagePlot::selectHistogram,
686 
687  if (app) {
688  m_Messages -> document() -> setMaximumBlockCount(app->get_MessageWindowLines());
689 
690  connect(app->prop_MessageWindowLines(), &QcepIntProperty::valueChanged, this, &QxrdWindow::onMessageWindowLinesChanged);
691  connect(app->prop_UpdateIntervalMsec(), &QcepIntProperty::valueChanged, this, &QxrdWindow::onUpdateIntervalMsecChanged);
692  }
693 
694 #ifdef QT_NO_DEBUG
695  m_ActionRefineCenterTilt->setEnabled(false);
696 #endif
697 
698  if (expt && set) {
699  if (!expt->get_DefaultLayout()) {
700  QByteArray geometry = set->get_WindowGeometry();
701  QByteArray winstate = set->get_WindowState();
702 
703  if (!restoreGeometry(geometry)) {
704  printf("Restore geometry failed\n");
705  }
706 
707  if (!restoreState(winstate,2)) {
708  printf("Restore state failed\n");
709  }
710  } else{
711  expt->set_DefaultLayout(0);
712  }
713  }
714 
715  if (app) {
716  m_UpdateTimer.start(app->get_UpdateIntervalMsec());
717  }
718 
719  captureSize();
720 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
void doLoadData()
void doLoadMask()
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
void newData()
QxrdAcquisitionScalerDialog * m_AcquisitionScalerDialog
Definition: qxrdwindow.h:174
QxrdOutputFileBrowser * m_OutputFileBrowser
Definition: qxrdwindow.h:186
void crashProgram()
void doProjectAlongY()
void doProcessSequence()
void fitPowderCircle(int n=0)
void captureSize()
void onCenterYChanged(double cy)
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
QxrdAcquisitionExtraInputsDialogPtr m_AcquisitionExtraInputsDialog
Definition: qxrdwindow.h:175
void onUpdateIntervalMsecChanged(int newVal)
void onCenterXChanged(double cx)
QxrdDistortionCorrectionDialog * m_DistortionCorrectionDialog
Definition: qxrdwindow.h:191
void selectHistogram(QRectF rect)
QxrdInputFileBrowser * m_InputFileBrowser
Definition: qxrdwindow.h:185
void onNewIntegrationAvailable(QcepIntegratedDataPtr data)
void chooseExistingExperiment()
void setInverseGrayscale()
QSharedPointer< QxrdWindowSettings > QxrdWindowSettingsPtr
void integrationXUnitsChanged(int newXUnits)
void enableMaskCircles()
QxrdAcquisitionWPtr m_Acquisition
Definition: qxrdwindow.h:170
QSharedPointer< QxrdCalibrantLibrary > QxrdCalibrantLibraryPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void toggleShowOverflow()
void doSaveDark()
QcepDatasetBrowserDialog * m_DatasetBrowserDialog
Definition: qxrdwindow.h:182
void acquireStarted()
Definition: qxrdwindow.cpp:990
QcepAllocatorWPtr m_Allocator
Definition: qxrdwindow.h:172
void acquireComplete()
Definition: qxrdwindow.cpp:994
QxrdAcquisitionDialog * m_AcquisitionDialog
Definition: qxrdwindow.h:173
void plotPowderRingRadii()
void saveExperimentAs()
void doSubtractImages()
QxrdDisplayDialog * m_DisplayDialog
Definition: qxrdwindow.h:177
void onMessageWindowLinesChanged(int newVal)
void doEditPreferences()
void acquiredFrame(QString fileName, int isum, int nsum, int iframe, int nframe, int igroup, int ngroup)
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
void doProjectAlongZ()
void executeScript()
virtual void autoScale()
Definition: qcepplot.cpp:188
void updateTitle()
Definition: qxrdwindow.cpp:739
void doSaveGainMap()
void doSaveData()
void doLoadScript()
QProgressBar * m_AllocationStatus
Definition: qxrdwindow.h:195
void doLoadGainMap()
QLabel * m_StatusMsg
Definition: qxrdwindow.h:194
void onCenterYChanged(double cy)
void cancelScript()
void printGraph()
Definition: qcepplot.cpp:199
void enableCentering()
void newIntegrationAvailable(QcepIntegratedDataPtr data)
void doReflectVertically()
QxrdHighlighter * m_Highlighter
Definition: qxrdwindow.h:210
void enableMeasuring()
Definition: qcepplot.cpp:267
void doPolarTransform()
void shrinkPanels(int fontSize, int spacing)
QxrdIntegratorDialog * m_IntegratorDialog
Definition: qxrdwindow.h:183
void slicePolygon(QVector< QPointF > poly)
void setupAcquireMenu(QMenu *menu)
void doRefineCenterTilt()
void toggleShowImage()
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
void enableMeasuring()
void enablePowderPoints()
void setSpacing(int spacing)
void doSaveMask()
QTimer m_UpdateTimer
Definition: qxrdwindow.h:197
QxrdCenterFinderDialog * m_CenterFinderDialog
Definition: qxrdwindow.h:178
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QxrdSliceDialog * m_SliceDialog
Definition: qxrdwindow.h:187
void doAccumulateImages()
void doSaveCachedIntensity()
QxrdWindowSettingsWPtr m_WindowSettings
Definition: qxrdwindow.h:167
void histogramSelectionChanged(QRectF rect)
void saveExperimentCopy()
void plotPowderRingTwoTheta()
QxrdCalibrantDialog * m_CalibrantDialog
Definition: qxrdwindow.h:181
QxrdDataProcessorWPtr m_DataProcessor
Definition: qxrdwindow.h:171
void doIntegrateSequence()
void populateConfigureDetectorMenu()
Definition: qxrdwindow.cpp:844
void doClearGainMap()
void doAddImages()
void populateExperimentsMenu()
Definition: qxrdwindow.cpp:789
QProgressBar * m_Progress
Definition: qxrdwindow.h:193
QxrdScriptDialog * m_ScriptDialog
Definition: qxrdwindow.h:190
void doTest()
void setupRecentExperimentsMenu(QAction *action)
Definition: qxrdwindow.cpp:780
QSharedPointer< QcepAllocator > QcepAllocatorPtr
void plotPowderRingCenters()
void setFontSize(int fontSize)
void enableZooming()
Definition: qcepplot.cpp:261
void enableMaskPolygons()
void valueChanged(double val, int index)
void doReflectHorizontally()
void doPolarNormalization()
QxrdHistogramDialog * m_HistogramDialog
Definition: qxrdwindow.h:188
void zoomOut()
Definition: qcepplot.cpp:247
void populateDetectorControlWindowsMenu()
Definition: qxrdwindow.cpp:879
QxrdInfoDialog * m_ImageInfoDialog
Definition: qxrdwindow.h:189
void doLoadDark()
void doSaveCachedGeometry()
void valueChanged(int val, int index)
QxrdCorrectionDialog * m_CorrectionDialog
Definition: qxrdwindow.h:180
QSharedPointer< QxrdApplication > QxrdApplicationPtr
QxrdSynchronizedAcquisitionDialogPtr m_SynchronizedAcquisitionDialog
Definition: qxrdwindow.h:176
void slicePolygon(QVector< QPointF > poly)
QSharedPointer< QcepDatasetModel > QcepDatasetModelPtr
void doCorrelate()
void onCenterXChanged(double cx)
QxrdMaskDialog * m_MaskDialog
Definition: qxrdwindow.h:179
void enableHistograms()
void doClearDark()
void doProjectAlongX()
void allocatedMemoryChanged()
void doClearMask()

Here is the call graph for this function:

void QxrdWindow::initialLogEntry ( QString  aline)
slot

Definition at line 954 of file qxrdwindow.cpp.

References INVOKE_CHECK.

955 {
956  if (QThread::currentThread()==thread()) {
957  m_Messages -> append("<font color=#ff0000>"+aline+"</font>");
958  } else {
959  INVOKE_CHECK(QMetaObject::invokeMethod(this,
960  "initialLogEntry",
961  Qt::QueuedConnection,
962  Q_ARG(QString, aline)));
963  }
964 }
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13
void QxrdWindow::integrationXUnitsChanged ( int  newXUnits)
privateslot

Definition at line 1791 of file qxrdwindow.cpp.

References QxrdIntegrator::RadialIntegrateQ, QxrdIntegrator::RadialIntegrateR, and QxrdIntegrator::RadialIntegrateTTH.

Referenced by initialize().

1792 {
1793  m_ActionIntegrateVsR -> setChecked(newXUnits == QxrdIntegrator::RadialIntegrateR);
1794  m_ActionIntegrateVsQ -> setChecked(newXUnits == QxrdIntegrator::RadialIntegrateQ);
1795  m_ActionIntegrateVsTTH -> setChecked(newXUnits == QxrdIntegrator::RadialIntegrateTTH);
1796 }

Here is the caller graph for this function:

void QxrdWindow::loadScript ( QString  path)
slot

Definition at line 1598 of file qxrdwindow.cpp.

References m_Experiment, and printMessage().

Referenced by doLoadScript().

1599 {
1601 
1602  if (expt) {
1603  QxrdScriptEnginePtr eng(expt -> scriptEngine());
1604 
1605  if (eng) {
1606  expt -> printMessage(tr("Loading script file from %1").arg(path));
1607  eng -> loadScript(path);
1608  }
1609  }
1610 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
void loadScript(QString path)
QSharedPointer< QxrdScriptEngine > QxrdScriptEnginePtr
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qxrdwindow.cpp:919

Here is the call graph for this function:

Here is the caller graph for this function:

QcepMaskDataPtr QxrdWindow::mask ( )

Definition at line 1627 of file qxrdwindow.cpp.

References m_Mask.

Referenced by newMaskAvailable().

1628 {
1629  return m_Mask;
1630 }
QcepMaskDataPtr m_Mask
Definition: qxrdwindow.h:205

Here is the caller graph for this function:

void QxrdWindow::moveEvent ( QMoveEvent *  ev)

Definition at line 1056 of file qxrdwindow.cpp.

References captureSize().

1057 {
1058  captureSize();
1059 
1060  QMainWindow::moveEvent(ev);
1061 }
void captureSize()

Here is the call graph for this function:

void QxrdWindow::newData ( )
privateslot

Definition at line 1112 of file qxrdwindow.cpp.

References captureSize(), m_Data, m_HistogramDialog, m_ImageDisplay, m_ImageInfoDialog, m_Mutex, m_NewData, m_NewDataAvailable, m_NewOverflow, m_Overflow, and m_SliceDialog.

Referenced by initialize().

1113 {
1114  captureSize();
1115 
1116  // QcepMutexLocker lock(__FILE__, __LINE__, &m_NewDataMutex);
1117 
1118  if (m_NewDataAvailable.fetchAndStoreOrdered(0)) {
1119  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
1120 
1121  // QcepDoubleImageDataPtr tmp = m_Data;
1122  m_Data = m_NewData;
1124 
1127 
1128  m_ImagePlot -> onProcessedImageAvailable(m_Data, m_Overflow);
1129  m_CenterFinderPlot -> onProcessedImageAvailable(m_Data);
1130 
1131  if (m_ImageDisplay) {
1132  m_ImageDisplay -> updateImage(m_Data, m_Overflow);
1133  }
1134 
1135  if (m_SliceDialog) {
1136  m_SliceDialog -> onProcessedImageAvailable(m_Data, m_Overflow);
1137  }
1138 
1139  if (m_HistogramDialog) {
1140  m_HistogramDialog -> onProcessedImageAvailable(m_Data, m_Overflow);
1141  }
1142 
1143  if (m_ImageInfoDialog) {
1144  m_ImageInfoDialog -> onProcessedImageAvailable(m_Data, m_Overflow);
1145  }
1146  }
1147 }
QcepDoubleImageDataPtr m_NewData
Definition: qxrdwindow.h:201
void captureSize()
QcepDoubleImageDataPtr m_Data
Definition: qxrdwindow.h:199
QAtomicInt m_NewDataAvailable
Definition: qxrdwindow.h:203
QxrdSliceDialog * m_SliceDialog
Definition: qxrdwindow.h:187
QMutex m_Mutex
Definition: qxrdwindow.h:166
QxrdHistogramDialog * m_HistogramDialog
Definition: qxrdwindow.h:188
QxrdInfoDialog * m_ImageInfoDialog
Definition: qxrdwindow.h:189
QxrdImageDisplayWidget * m_ImageDisplay
Definition: qxrdwindow.h:209
QSharedPointer< QcepMaskData > QcepMaskDataPtr
QcepMaskDataPtr m_NewOverflow
Definition: qxrdwindow.h:202
QcepMaskDataPtr m_Overflow
Definition: qxrdwindow.h:200
QSharedPointer< QcepDoubleImageData > QcepDoubleImageDataPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::newDataAvailable ( QcepDoubleImageDataPtr  img,
QcepMaskDataPtr  overflow 
)

Definition at line 1084 of file qxrdwindow.cpp.

References m_Mutex, m_NewData, m_NewDataAvailable, and m_NewOverflow.

1085 {
1086  // QcepMutexLocker lock(__FILE__, __LINE__, &m_NewDataMutex);
1087 
1088  // image -> copyImage(m_NewData);
1089  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
1090 
1091  m_NewData = image;
1092  m_NewOverflow = overflow;
1093 
1094  m_NewDataAvailable.fetchAndAddOrdered(1);
1095 
1096  // INVOKE_CHECK(QMetaObject::invokeMethod(this, "newData", Qt::QueuedConnection));
1097 }
QcepDoubleImageDataPtr m_NewData
Definition: qxrdwindow.h:201
QAtomicInt m_NewDataAvailable
Definition: qxrdwindow.h:203
QMutex m_Mutex
Definition: qxrdwindow.h:166
QcepMaskDataPtr m_NewOverflow
Definition: qxrdwindow.h:202
void QxrdWindow::newMask ( )
privateslot

Definition at line 1149 of file qxrdwindow.cpp.

References m_Data, m_ImageDisplay, m_Mask, m_Mutex, m_NewMask, m_NewMaskAvailable, and QxrdImageDisplayWidget::updateImage().

1150 {
1151  // QcepMutexLocker lock(__FILE__, __LINE__, &m_NewMaskMutex);
1152 
1153  if (m_NewMaskAvailable.fetchAndAddOrdered(0)) {
1154  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
1155 
1156  // QcepMaskDataPtr tmp = m_Mask;
1157  m_Mask = m_NewMask;
1158  m_NewMask = QcepMaskDataPtr(NULL);
1159  m_NewMaskAvailable.fetchAndStoreOrdered(0);
1160 
1161  m_ImagePlot -> onMaskedImageAvailable(m_Data, m_Mask);
1162  m_CenterFinderPlot -> onMaskedImageAvailable(m_Data, m_Mask);
1163 
1164  if (m_ImageDisplay) {
1166  }
1167  }
1168 }
QcepDoubleImageDataPtr m_Data
Definition: qxrdwindow.h:199
QcepMaskDataPtr m_NewMask
Definition: qxrdwindow.h:206
QcepMaskDataPtr m_Mask
Definition: qxrdwindow.h:205
void updateImage(QcepDoubleImageDataPtr img, QcepMaskDataPtr ovflow=QcepMaskDataPtr(), QcepMaskDataPtr mask=QcepMaskDataPtr())
QMutex m_Mutex
Definition: qxrdwindow.h:166
QxrdImageDisplayWidget * m_ImageDisplay
Definition: qxrdwindow.h:209
QSharedPointer< QcepMaskData > QcepMaskDataPtr
QAtomicInt m_NewMaskAvailable
Definition: qxrdwindow.h:207
QSharedPointer< QcepDoubleImageData > QcepDoubleImageDataPtr

Here is the call graph for this function:

void QxrdWindow::newMaskAvailable ( QcepMaskDataPtr  img)

Definition at line 1099 of file qxrdwindow.cpp.

References INVOKE_CHECK, m_Mutex, m_NewMask, m_NewMaskAvailable, and mask().

1100 {
1101  // QcepMutexLocker lock(__FILE__, __LINE__, &m_NewMaskMutex);
1102 
1103  // mask -> copyMaskTo(m_NewMask);
1104  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
1105 
1106  m_NewMask = mask;
1107  m_NewMaskAvailable.fetchAndAddOrdered(1);
1108 
1109  INVOKE_CHECK(QMetaObject::invokeMethod(this, "newMask", Qt::QueuedConnection));
1110 }
QcepMaskDataPtr mask()
QcepMaskDataPtr m_NewMask
Definition: qxrdwindow.h:206
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13
QMutex m_Mutex
Definition: qxrdwindow.h:166
QAtomicInt m_NewMaskAvailable
Definition: qxrdwindow.h:207

Here is the call graph for this function:

void QxrdWindow::onAcquisitionInit ( )

Definition at line 756 of file qxrdwindow.cpp.

References m_AcquisitionDialog, and QxrdAcquisitionDialog::onAcquisitionInit().

757 {
759 }
QxrdAcquisitionDialog * m_AcquisitionDialog
Definition: qxrdwindow.h:173

Here is the call graph for this function:

void QxrdWindow::onMessageWindowLinesChanged ( int  newVal)
privateslot

Definition at line 1832 of file qxrdwindow.cpp.

Referenced by initialize().

1833 {
1834  m_Messages -> document() -> setMaximumBlockCount(newVal);
1835 }

Here is the caller graph for this function:

void QxrdWindow::onUpdateIntervalMsecChanged ( int  newVal)
privateslot

Definition at line 1837 of file qxrdwindow.cpp.

References m_UpdateTimer.

Referenced by initialize().

1838 {
1839  m_UpdateTimer.setInterval(newVal);
1840 }
QTimer m_UpdateTimer
Definition: qxrdwindow.h:197

Here is the caller graph for this function:

void QxrdWindow::plotPowderRingCenters ( )
privateslot

Definition at line 1989 of file qxrdwindow.cpp.

References m_Experiment, QxrdPowderPoint::x(), and QxrdPowderPoint::y().

Referenced by initialize().

1990 {
1992 
1993  if (expt) {
1994  QxrdCenterFinderPtr cf(expt->centerFinder());
1995 
1996  if (cf) {
1997  m_DistortionCorrectionPlot->detachItems(QwtPlotItem::Rtti_PlotCurve);
1998  m_DistortionCorrectionPlot->detachItems(QwtPlotItem::Rtti_PlotMarker);
1999 
2000  QxrdPowderPointVector pts = cf->get_FittedRings();
2001  int npts = pts.count();
2002 
2003  QVector<double> x, y;
2004 
2005  for (int i=0; i<npts; i++) {
2006  QxrdPowderPoint &pt = pts[i];
2007  x.append(pt.x());
2008  y.append(pt.y());
2009  }
2010 
2011  QwtPlotCurve* pc = new QwtPlotCurve(tr("Ring Centers"));
2012 
2013  m_DistortionCorrectionPlot->setPlotCurveStyle(0, pc);
2014 
2015  pc -> setSamples(x, y);
2016 
2017  pc -> setLegendAttribute(QwtPlotCurve::LegendShowSymbol, true);
2018  pc -> attach(m_DistortionCorrectionPlot);
2019 
2020  m_DistortionCorrectionPlot->replot();
2021  }
2022  }
2023 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
double y() const
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
double x() const

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::plotPowderRingRadii ( )
privateslot

Definition at line 1842 of file qxrdwindow.cpp.

References m_Experiment, QxrdPowderPoint::n1(), QxrdPowderPoint::n2(), QxrdPowderPoint::x(), and QxrdPowderPoint::y().

Referenced by initialize().

1843 {
1845 
1846  if (expt) {
1847  QxrdCenterFinderPtr cf(expt->centerFinder());
1848 
1849  if (cf) {
1850  m_DistortionCorrectionPlot->detachItems(QwtPlotItem::Rtti_PlotCurve);
1851  m_DistortionCorrectionPlot->detachItems(QwtPlotItem::Rtti_PlotMarker);
1852 
1853  int nrgs = cf->countPowderRings();
1854  int npts = cf->countPowderRingPoints();
1855 
1856  for (int r=0; r<nrgs; r++) {
1857  QVector<double> x, y;
1858 
1859  for (int i=0; i<npts; i++) {
1860  QxrdPowderPoint pt = cf->powderRingPoint(i);
1861 
1862  if (pt.n1() == r && pt.n2() == 0) {
1863  x.append(cf->getChi(pt.x(), pt.y()));
1864  y.append(cf->getR (pt.x(), pt.y()));
1865  }
1866  }
1867 
1868  if (cf->get_SubtractRingAverages()) {
1869  double sum = 0;
1870  int n = y.count();
1871  for (int i=0; i<n; i++) {
1872  sum += y[i];
1873  }
1874 
1875  double avg = sum/(double)n - cf->get_RingAverageDisplacement()*r;
1876  for (int i=0; i<n; i++) {
1877  y[i] -= avg;
1878  }
1879 // } else {
1880 // double d = cf->get_RingAverageDisplacement()*r;
1881 // int n=y.count();
1882 // for (int i=0; i<n; i++) {
1883 // y[i] += d;
1884 // }
1885  }
1886 
1887  if (x.count() > 0) {
1888  QwtPlotCurve* pc = new QwtPlotCurve(tr("Ring %1").arg(r));
1889 
1890  m_DistortionCorrectionPlot->setPlotCurveStyle(r, pc);
1891 
1892  pc -> setSamples(x, y);
1893 
1894  pc -> setStyle(QwtPlotCurve::NoCurve);
1895  pc -> setLegendAttribute(QwtPlotCurve::LegendShowSymbol, true);
1896 
1897  pc -> attach(m_DistortionCorrectionPlot);
1898  }
1899  }
1900 
1901 // m_DistortionCorrectionPlot->autoScale();
1902  m_DistortionCorrectionPlot->replot();
1903  }
1904  }
1905 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
double y() const
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
int n2() const
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
double x() const
int n1() const

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::plotPowderRingTwoTheta ( )
privateslot

Definition at line 1907 of file qxrdwindow.cpp.

References m_Experiment, QxrdPowderPoint::n1(), QxrdPowderPoint::n2(), QxrdPowderPoint::x(), and QxrdPowderPoint::y().

Referenced by initialize().

1908 {
1910 
1911  if (expt) {
1912  QxrdCenterFinderPtr cf(expt->centerFinder());
1913 
1914  if (cf) {
1915 // cf->updateCalibrantDSpacings();
1916 
1917  m_DistortionCorrectionPlot->detachItems(QwtPlotItem::Rtti_PlotCurve);
1918  m_DistortionCorrectionPlot->detachItems(QwtPlotItem::Rtti_PlotMarker);
1919 
1920  int nrgs = cf->countPowderRings();
1921  int npts = cf->countPowderRingPoints();
1922 
1923  for (int r=0; r<nrgs; r++) {
1924  QVector<double> x, y;
1925 
1926  for (int i=0; i<npts; i++) {
1927  QxrdPowderPoint pt = cf->powderRingPoint(i);
1928 
1929  if (pt.n1() == r && pt.n2() == 0) {
1930  x.append(cf->getChi(pt.x(), pt.y()));
1931  y.append(cf->getTTH(pt.x(), pt.y()));
1932  }
1933  }
1934 
1935  double avg=0;
1936 
1937  double calTTH = cf->calibrantTTH(r);
1938 
1939  if (cf->get_SubtractRingAverages()) {
1940  int n = y.count();
1941  // double sum = 0;
1942 // for (int i=0; i<n; i++) {
1943 // sum += y[i];
1944 // }
1945 
1946  avg = calTTH - cf->get_RingAverageDisplacement()*r;
1947  for (int i=0; i<n; i++) {
1948  y[i] -= avg;
1949  }
1950 // } else {
1951 // double d = cf->get_RingAverageDisplacement()*r;
1952 // int n=y.count();
1953 // for (int i=0; i<n; i++) {
1954 // y[i] += d;
1955 // }
1956  }
1957 
1958  if (x.count() >= 0) {
1959  QwtPlotCurve* pc = new QwtPlotCurve(tr("Ring %1").arg(r));
1960 
1961  m_DistortionCorrectionPlot->setPlotCurveStyle(r, pc);
1962 
1963  pc -> setSamples(x, y);
1964 
1965  pc -> setStyle(QwtPlotCurve::NoCurve);
1966  pc -> setLegendAttribute(QwtPlotCurve::LegendShowSymbol, true);
1967 
1968  pc -> attach(m_DistortionCorrectionPlot);
1969 
1970  if (calTTH > 0) {
1971  QwtPlotCurve* tth = new QwtPlotCurve(tr("Cal %1").arg(r));
1972  QVector<double> x1,y1;
1973  x1.append(0); y1.append(calTTH - avg);
1974  x1.append(360); y1.append(calTTH - avg);
1975  m_DistortionCorrectionPlot->setPlotCurveStyle(r, tth);
1976  tth -> setSamples(x1,y1);
1977  tth -> setSymbol(NULL);
1978  tth -> attach(m_DistortionCorrectionPlot);
1979  }
1980  }
1981  }
1982 
1983 // m_DistortionCorrectionPlot->autoScale();
1984  m_DistortionCorrectionPlot->replot();
1985  }
1986  }
1987 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
double y() const
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
int n2() const
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
double x() const
int n1() const

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::populateConfigureDetectorMenu ( )
privateslot

Definition at line 844 of file qxrdwindow.cpp.

References QxrdAcquisition::configureDetector(), m_Acquisition, and str.

Referenced by initialize().

845 {
846  m_ConfigureDetectorMenu->clear();
847 
849 
850  if (acq) {
851  int nDets = acq->get_DetectorCount();
852 
853  for (int i=0; i<nDets; i++) {
854  QxrdDetectorPtr det = acq->detector(i);
855  QString detType = det->get_DetectorTypeName();
856  QString detName = det->get_DetectorName();
857  bool enabled = det->get_Enabled();
858 
859  QString str = tr("(%1) Configure %2 detector \"%3\"...").arg(i).arg(detType).arg(detName);
860 
861  QAction *action = new QAction(str, m_ConfigureDetectorMenu);
862 
863  action->setCheckable(true);
864  action->setChecked(enabled);
865 
866  QSignalMapper *mapper = new QSignalMapper(action);
867 
868  connect(action, &QAction::triggered, mapper, (void (QSignalMapper::*)()) &QSignalMapper::map);
869  mapper->setMapping(action,i);
870 
871  connect(mapper, (void (QSignalMapper::*)(int)) &QSignalMapper::mapped,
872  acq.data(), &QxrdAcquisition::configureDetector, Qt::DirectConnection);
873 
874  m_ConfigureDetectorMenu->addAction(action);
875  }
876  }
877 }
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
QxrdAcquisitionWPtr m_Acquisition
Definition: qxrdwindow.h:170
void configureDetector(int i)
#define str(s)
QSharedPointer< QxrdDetector > QxrdDetectorPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::populateDetectorControlWindowsMenu ( )
privateslot

Definition at line 879 of file qxrdwindow.cpp.

References m_Acquisition, QxrdAcquisition::openDetectorControlWindow(), and str.

Referenced by initialize().

880 {
881  m_DetectorControlWindowsMenu->clear();
882 
884 
885  if (acq) {
886  int nDets = acq->get_DetectorCount();
887 
888  for (int i=0; i<nDets; i++) {
889  QxrdDetectorPtr det = acq->detector(i);
890  QString detType = det->get_DetectorTypeName();
891  QString detName = det->get_DetectorName();
892  bool enabled = det->get_Enabled();
893 
894  QString str = tr("(%1) Open %2 detector \"%3\" Control...").arg(i).arg(detType).arg(detName);
895 
896  QAction *action = new QAction(str, m_DetectorControlWindowsMenu);
897 
898  action->setCheckable(true);
899  action->setChecked(enabled);
900 
901  QSignalMapper *mapper = new QSignalMapper(action);
902 
903  connect(action, &QAction::triggered, mapper, (void (QSignalMapper::*)()) &QSignalMapper::map);
904  mapper->setMapping(action,i);
905 
906  connect(mapper, (void (QSignalMapper::*)(int)) &QSignalMapper::mapped,
907  acq.data(), &QxrdAcquisition::openDetectorControlWindow, Qt::DirectConnection);
908 
909  m_DetectorControlWindowsMenu->addAction(action);
910  }
911  }
912 }
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
QxrdAcquisitionWPtr m_Acquisition
Definition: qxrdwindow.h:170
void openDetectorControlWindow(int i)
#define str(s)
QSharedPointer< QxrdDetector > QxrdDetectorPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::populateExperimentsMenu ( )
privateslot

Definition at line 789 of file qxrdwindow.cpp.

References QxrdApplication::activateExperiment(), and m_Application.

Referenced by initialize().

790 {
791  // printMessage("Populating recent experiments menu");
792 
793  m_ExperimentsMenu->clear();
794 
796 
797  if (app) {
798  QList<QxrdExperimentWPtr> exps = app->experiments();
799 
800  foreach (QxrdExperimentWPtr expw, exps) {
801  QxrdExperimentPtr exp(expw);
802 
803  if (exp) {
804  QString path = exp->experimentFilePath();
805 
806  QAction *action = new QAction(path, m_ExperimentsMenu);
807  QSignalMapper *mapper = new QSignalMapper(action);
808  connect(action, &QAction::triggered, mapper, (void (QSignalMapper::*)()) &QSignalMapper::map);
809  mapper->setMapping(action, path);
810 
811  connect(mapper, (void (QSignalMapper::*)(const QString&)) &QSignalMapper::mapped, app.data(), &QxrdApplication::activateExperiment);
812 
813  m_ExperimentsMenu -> addAction(action);
814  }
815  }
816  }
817 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
void activateExperiment(QString path)
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QSharedPointer< QxrdApplication > QxrdApplicationPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::populateRecentExperimentsMenu ( )
privateslot

Definition at line 819 of file qxrdwindow.cpp.

References m_Application, m_RecentExperimentsMenu, and QxrdApplication::openRecentExperiment().

Referenced by setupRecentExperimentsMenu().

820 {
821  // printMessage("Populating recent experiments menu");
822 
823  m_RecentExperimentsMenu->clear();
824 
826 
827  if (app) {
828  QStringList recent = app->get_RecentExperiments();
829 
830  foreach (QString exp, recent) {
831  QAction *action = new QAction(exp, m_RecentExperimentsMenu);
832  QSignalMapper *mapper = new QSignalMapper(action);
833  connect(action, &QAction::triggered, mapper, (void (QSignalMapper::*)()) &QSignalMapper::map);
834  mapper->setMapping(action, exp);
835 
836  connect(mapper, (void (QSignalMapper::*)(const QString&)) &QSignalMapper::mapped, app.data(),
838 
839  m_RecentExperimentsMenu -> addAction(action);
840  }
841  }
842 }
void openRecentExperiment(QString path)
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QMenu * m_RecentExperimentsMenu
Definition: qxrdwindow.h:214
QSharedPointer< QxrdApplication > QxrdApplicationPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::printMessage ( QString  msg,
QDateTime  ts = QDateTime::currentDateTime() 
)
slot

Definition at line 919 of file qxrdwindow.cpp.

References displayMessage().

Referenced by acquiredFrame(), and loadScript().

920 {
921  QString message = ts.toString("yyyy.MM.dd : hh:mm:ss.zzz ")+
922  QThread::currentThread()->objectName()+": "+
923  msg.trimmed();
924 
925  message = message.replace("\n", " : ");
926 
927  displayMessage(message);
928 }
void displayMessage(QString msg)
Definition: qxrdwindow.cpp:942

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::resizeEvent ( QResizeEvent *  ev)

Definition at line 1049 of file qxrdwindow.cpp.

References captureSize().

1050 {
1051  captureSize();
1052 
1053  QMainWindow::resizeEvent(ev);
1054 }
void captureSize()

Here is the call graph for this function:

void QxrdWindow::saveExperimentAs ( )
slot

Definition at line 1188 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_Application, and m_Experiment.

Referenced by initialize().

1189 {
1191 
1194 
1195  if (app && expt) {
1196  QString path = expt->experimentFilePath();
1197  QString name = expt->defaultExperimentName(path);
1198  QString dirp = expt->defaultExperimentDirectory(path);
1199 
1200  QDir dir(expt->get_ExperimentDirectory());
1201 
1202  QString newPath = dir.filePath(name+"-copy.qxrdp");
1203 
1204  QString newChoice = QFileDialog::getSaveFileName(NULL,
1205  "Save Experiment As",
1206  newPath,
1207  "QXRD Experiments (*.qxrdp)");
1208 
1209  if (newChoice.length()>0) {
1210  expt->saveExperimentAs(newChoice);
1211  app->appendRecentExperiment(newChoice);
1212  }
1213  }
1214 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QSharedPointer< QxrdApplication > QxrdApplicationPtr

Here is the caller graph for this function:

void QxrdWindow::saveExperimentCopy ( )
slot

Definition at line 1216 of file qxrdwindow.cpp.

References GUI_THREAD_CHECK, m_Application, and m_Experiment.

Referenced by initialize().

1217 {
1219 
1222 
1223  if (app && expt) {
1224  QString path = expt->experimentFilePath();
1225  QString name = expt->defaultExperimentName(path);
1226  QString dirp = expt->defaultExperimentDirectory(path);
1227 
1228  QDir dir(expt->get_ExperimentDirectory());
1229 
1230  QString newPath = dir.filePath(name+"-copy.qxrdp");
1231 
1232  QString newChoice = QFileDialog::getSaveFileName(NULL,
1233  "Save Experiment Copy",
1234  newPath,
1235  "QXRD Experiments (*.qxrdp)");
1236 
1237  if (newChoice.length()>0) {
1238  expt->saveExperimentCopyAs(newChoice);
1239  app->appendRecentExperiment(newChoice);
1240  }
1241  }
1242 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169
QxrdApplicationWPtr m_Application
Definition: qxrdwindow.h:168
QSharedPointer< QxrdApplication > QxrdApplicationPtr

Here is the caller graph for this function:

void QxrdWindow::setupRecentExperimentsMenu ( QAction *  action)
private

Definition at line 780 of file qxrdwindow.cpp.

References m_RecentExperimentsMenu, and populateRecentExperimentsMenu().

Referenced by initialize().

781 {
782  m_RecentExperimentsMenu = new QMenu(this);
783 
784  action->setMenu(m_RecentExperimentsMenu);
785 
786  connect(m_RecentExperimentsMenu, &QMenu::aboutToShow, this, &QxrdWindow::populateRecentExperimentsMenu);
787 }
void populateRecentExperimentsMenu()
Definition: qxrdwindow.cpp:819
QMenu * m_RecentExperimentsMenu
Definition: qxrdwindow.h:214

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdWindow::testWidget ( )
slot

Definition at line 1809 of file qxrdwindow.cpp.

References INVOKE_CHECK.

1810 {
1811  if (QThread::currentThread() != thread()) {
1812  INVOKE_CHECK(QMetaObject::invokeMethod(this, "testWidget", Qt::BlockingQueuedConnection));
1813  } else {
1814  QDockWidget *dockWidget = new QDockWidget("Test", this);
1815  QWidget *contents = new QMainWindow(dockWidget);
1816  QMenuBar *menuBar = new QMenuBar(contents);
1817 
1818  QMenu *test1Menu = menuBar->addMenu("Test1");
1819  QMenu *test2Menu = menuBar->addMenu("Test2");
1820 
1821  test1Menu->addAction("Cmd1");
1822  test1Menu->addAction("Cmd2");
1823  test2Menu->addAction("Cmd3");
1824  test2Menu->addAction("Cmd4");
1825 
1826  addDockWidget(Qt::RightDockWidgetArea, dockWidget);
1827 
1828  contents->show();
1829  }
1830 }
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13
QString QxrdWindow::timeStamp ( ) const
slot

Definition at line 914 of file qxrdwindow.cpp.

915 {
916  return QDateTime::currentDateTime().toString("yyyy.MM.dd : hh:mm:ss.zzz ");
917 }
void QxrdWindow::updateTitle ( )
slot

Definition at line 739 of file qxrdwindow.cpp.

References m_Experiment, and STR.

Referenced by initialize().

740 {
742 
743  if (expt) {
744  setWindowTitle(expt->experimentFilePath()+" - QXRD");
745  } else {
746  setWindowTitle("QXRD");
747  }
748 
749  if (sizeof(void*) == 4) {
750  setWindowTitle(windowTitle()+" - 32 bit - v"+STR(QXRD_VERSION));
751  } else {
752  setWindowTitle(windowTitle()+" - 64 bit - v"+STR(QXRD_VERSION));
753  }
754 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
#define STR(s)
Definition: qcepmacros.h:16
QxrdExperimentWPtr m_Experiment
Definition: qxrdwindow.h:169

Here is the caller graph for this function:

void QxrdWindow::warningMessage ( QString  msg)
slot

Definition at line 930 of file qxrdwindow.cpp.

References INVOKE_CHECK.

Referenced by doClearBadPixels(), doClearDark(), doClearGainMap(), doClearMask(), doSaveBadPixels(), doSaveDark(), doSaveData(), doSaveGainMap(), and doSaveMask().

931 {
932  if (QThread::currentThread()==thread()) {
933  QMessageBox::warning(this, tr("Warning"), msg);
934  } else {
935  INVOKE_CHECK(QMetaObject::invokeMethod(this,
936  "warningMessage",
937  Qt::QueuedConnection,
938  Q_ARG(QString, msg)));
939  }
940 }
#define INVOKE_CHECK(res)
Definition: qcepmacros.h:13

Here is the caller graph for this function:

Member Data Documentation

QxrdAcquisitionWPtr QxrdWindow::m_Acquisition
private
QxrdAcquisitionDialog* QxrdWindow::m_AcquisitionDialog
private

Definition at line 173 of file qxrdwindow.h.

Referenced by initialize(), and onAcquisitionInit().

QxrdAcquisitionExtraInputsDialogPtr QxrdWindow::m_AcquisitionExtraInputsDialog
private

Definition at line 175 of file qxrdwindow.h.

Referenced by initialize().

QxrdAcquisitionScalerDialog* QxrdWindow::m_AcquisitionScalerDialog
private

Definition at line 174 of file qxrdwindow.h.

Referenced by initialize().

QProgressBar* QxrdWindow::m_AllocationStatus
private

Definition at line 195 of file qxrdwindow.h.

Referenced by allocatedMemoryChanged(), and initialize().

QcepAllocatorWPtr QxrdWindow::m_Allocator
private

Definition at line 172 of file qxrdwindow.h.

Referenced by allocatedMemoryChanged(), and initialize().

QxrdApplicationWPtr QxrdWindow::m_Application
private
QString QxrdWindow::m_CachedGeometryPath
private

Definition at line 216 of file qxrdwindow.h.

Referenced by doSaveCachedGeometry().

QString QxrdWindow::m_CachedIntensityPath
private

Definition at line 217 of file qxrdwindow.h.

Referenced by doSaveCachedIntensity().

QxrdImageCalculator* QxrdWindow::m_Calculator
private

Definition at line 184 of file qxrdwindow.h.

QxrdCalibrantDialog* QxrdWindow::m_CalibrantDialog
private

Definition at line 181 of file qxrdwindow.h.

Referenced by initialize().

QxrdCenterFinderDialog* QxrdWindow::m_CenterFinderDialog
private

Definition at line 178 of file qxrdwindow.h.

Referenced by initialize().

QxrdCorrectionDialog* QxrdWindow::m_CorrectionDialog
private

Definition at line 180 of file qxrdwindow.h.

Referenced by initialize().

QcepDoubleImageDataPtr QxrdWindow::m_Data
private

Definition at line 199 of file qxrdwindow.h.

Referenced by data(), newData(), and newMask().

QxrdDataProcessorWPtr QxrdWindow::m_DataProcessor
private
QcepDatasetBrowserDialog* QxrdWindow::m_DatasetBrowserDialog
private

Definition at line 182 of file qxrdwindow.h.

Referenced by initialize().

QxrdDisplayDialog* QxrdWindow::m_DisplayDialog
private

Definition at line 177 of file qxrdwindow.h.

Referenced by initialize().

QxrdDistortionCorrectionDialog* QxrdWindow::m_DistortionCorrectionDialog
private

Definition at line 191 of file qxrdwindow.h.

Referenced by initialize().

QxrdExperimentWPtr QxrdWindow::m_Experiment
private
QVector<double> QxrdWindow::m_Exposures
private

Definition at line 192 of file qxrdwindow.h.

QxrdHighlighter* QxrdWindow::m_Highlighter
private

Definition at line 210 of file qxrdwindow.h.

Referenced by initialize().

QxrdHistogramDialog* QxrdWindow::m_HistogramDialog
private

Definition at line 188 of file qxrdwindow.h.

Referenced by initialize(), and newData().

QxrdImageDisplayWidget* QxrdWindow::m_ImageDisplay
private

Definition at line 209 of file qxrdwindow.h.

Referenced by newData(), and newMask().

QxrdInfoDialog* QxrdWindow::m_ImageInfoDialog
private

Definition at line 189 of file qxrdwindow.h.

Referenced by initialize(), and newData().

QxrdInputFileBrowser* QxrdWindow::m_InputFileBrowser
private

Definition at line 185 of file qxrdwindow.h.

Referenced by initialize().

QxrdIntegratorDialog* QxrdWindow::m_IntegratorDialog
private

Definition at line 183 of file qxrdwindow.h.

Referenced by initialize().

QcepMaskDataPtr QxrdWindow::m_Mask
private

Definition at line 205 of file qxrdwindow.h.

Referenced by mask(), and newMask().

QxrdMaskDialog* QxrdWindow::m_MaskDialog
private

Definition at line 179 of file qxrdwindow.h.

Referenced by initialize().

QMutex QxrdWindow::m_Mutex
mutableprivate

Definition at line 166 of file qxrdwindow.h.

Referenced by newData(), newDataAvailable(), newMask(), and newMaskAvailable().

QcepDoubleImageDataPtr QxrdWindow::m_NewData
private

Definition at line 201 of file qxrdwindow.h.

Referenced by newData(), and newDataAvailable().

QAtomicInt QxrdWindow::m_NewDataAvailable
private

Definition at line 203 of file qxrdwindow.h.

Referenced by newData(), and newDataAvailable().

QcepMaskDataPtr QxrdWindow::m_NewMask
private

Definition at line 206 of file qxrdwindow.h.

Referenced by newMask(), and newMaskAvailable().

QAtomicInt QxrdWindow::m_NewMaskAvailable
private

Definition at line 207 of file qxrdwindow.h.

Referenced by newMask(), and newMaskAvailable().

QcepMaskDataPtr QxrdWindow::m_NewOverflow
private

Definition at line 202 of file qxrdwindow.h.

Referenced by newData(), and newDataAvailable().

QcepObjectNamer QxrdWindow::m_ObjectNamer
private

Definition at line 165 of file qxrdwindow.h.

QxrdOutputFileBrowser* QxrdWindow::m_OutputFileBrowser
private

Definition at line 186 of file qxrdwindow.h.

Referenced by initialize().

QcepMaskDataPtr QxrdWindow::m_Overflow
private

Definition at line 200 of file qxrdwindow.h.

Referenced by newData().

QProgressBar* QxrdWindow::m_Progress
private

Definition at line 193 of file qxrdwindow.h.

Referenced by acquireComplete(), acquiredFrame(), and initialize().

QMenu* QxrdWindow::m_RecentExperimentsMenu
private

Definition at line 214 of file qxrdwindow.h.

Referenced by populateRecentExperimentsMenu(), and setupRecentExperimentsMenu().

QxrdScriptDialog* QxrdWindow::m_ScriptDialog
private

Definition at line 190 of file qxrdwindow.h.

Referenced by initialize().

QString QxrdWindow::m_ScriptPath
private

Definition at line 212 of file qxrdwindow.h.

QxrdSliceDialog* QxrdWindow::m_SliceDialog
private

Definition at line 187 of file qxrdwindow.h.

Referenced by initialize(), and newData().

QLabel* QxrdWindow::m_StatusMsg
private

Definition at line 194 of file qxrdwindow.h.

Referenced by clearStatusMessage(), displayStatusMessage(), and initialize().

QTimer QxrdWindow::m_StatusTimer
private

Definition at line 196 of file qxrdwindow.h.

Referenced by displayStatusMessage().

QxrdSynchronizedAcquisitionDialogPtr QxrdWindow::m_SynchronizedAcquisitionDialog
private

Definition at line 176 of file qxrdwindow.h.

Referenced by initialize().

QTimer QxrdWindow::m_UpdateTimer
private

Definition at line 197 of file qxrdwindow.h.

Referenced by initialize(), and onUpdateIntervalMsecChanged().

QxrdWindowSettingsWPtr QxrdWindow::m_WindowSettings
private

Definition at line 167 of file qxrdwindow.h.

Referenced by captureSize(), and initialize().


The documentation for this class was generated from the following files: