Newer
Older
#include "MantidQtCustomInterfaces/EnggDiffraction/EnggDiffractionViewQtGUI.h"
#include "MantidKernel/ConfigService.h"
#include "MantidQtAPI/AlgorithmInputHistory.h"
#include "MantidQtAPI/HelpWindow.h"
#include "MantidQtCustomInterfaces/EnggDiffraction/EnggDiffractionPresenter.h"
#include "MantidQtMantidWidgets/MWRunFiles.h"
#include <fstream>
#include <Poco/DirectoryIterator.h>
#include <Poco/Path.h>
#include <QCheckBox>
#include <QCloseEvent>
#include <QFileDialog>
#include <QMessageBox>
#include <QSettings>
using namespace Mantid::API;
using namespace MantidQt::CustomInterfaces;
namespace MantidQt {
namespace CustomInterfaces {
// Add this class to the list of specialised dialogs in this namespace
DECLARE_SUBWINDOW(EnggDiffractionViewQtGUI)
Federico Montesino Pouzols
committed
const double EnggDiffractionViewQtGUI::g_defaultRebinWidth = -0.0005;
Federico Montesino Pouzols
committed
int EnggDiffractionViewQtGUI::m_currentType = 0;
int EnggDiffractionViewQtGUI::m_currentRunMode = 0;
int EnggDiffractionViewQtGUI::m_currentCropCalibBankName = 0;
const std::string EnggDiffractionViewQtGUI::g_iparmExtStr =
Federico Montesino Pouzols
committed
"GSAS instrument parameters, IPARM file: PRM, PAR, IPAR, IPARAM "
"(*.prm *.par *.ipar *.iparam);;"
"Other extensions/all files (*.*)";
const std::string EnggDiffractionViewQtGUI::g_pixelCalibExt =
Federico Montesino Pouzols
committed
"Comma separated values text file with calibration table, CSV"
"(*.csv);;"
Federico Montesino Pouzols
committed
"Nexus file with calibration table: NXS, NEXUS"
"(*.nxs *.nexus);;"
"Supported formats: CSV, NXS "
"(*.csv *.nxs *.nexus);;"
"Other extensions/all files (*.*)";
const std::string EnggDiffractionViewQtGUI::g_DetGrpExtStr =
"Detector Grouping File: CSV "
"(*.csv *.txt);;"
"Other extensions/all files (*.*)";
const std::string EnggDiffractionViewQtGUI::g_settingsGroup =
"CustomInterfaces/EnggDiffractionView";
/**
* Default constructor.
*
* @param parent Parent window (most likely the Mantid main app window).
*/
EnggDiffractionViewQtGUI::EnggDiffractionViewQtGUI(QWidget *parent)
: UserSubWindow(parent), IEnggDiffractionView(), m_currentInst("ENGINX"),
Federico Montesino Pouzols
committed
m_splashMsg(nullptr), m_presenter(nullptr) {}
Federico Montesino Pouzols
committed
EnggDiffractionViewQtGUI::~EnggDiffractionViewQtGUI() {}
void EnggDiffractionViewQtGUI::initLayout() {
// setup container ui
m_ui.setupUi(this);
Federico Montesino Pouzols
committed
// presenter that knows how to handle a IEnggDiffractionView should
// take care of all the logic. Note that the view needs to know the
// concrete presenter
auto pres = boost::make_shared<EnggDiffractionPresenter>(this);
m_presenter.reset(pres.get());
// add tab contents and set up their ui's
QWidget *wCalib = new QWidget(m_ui.tabMain);
m_uiTabCalib.setupUi(wCalib);
m_ui.tabMain->addTab(wCalib, QString("Calibration"));
QWidget *wFocus = new QWidget(m_ui.tabMain);
m_uiTabFocus.setupUi(wFocus);
m_ui.tabMain->addTab(wFocus, QString("Focus"));
QWidget *wPreproc = new QWidget(m_ui.tabMain);
m_uiTabPreproc.setupUi(wPreproc);
m_ui.tabMain->addTab(wPreproc, QString("Pre-processing"));
Federico Montesino Pouzols
committed
auto sharedView = boost::make_shared<EnggDiffractionViewQtGUI>(this);
Federico Montesino Pouzols
committed
m_fittingWidget = new EnggDiffFittingViewQtWidget(
Federico Montesino Pouzols
committed
m_ui.tabMain, sharedView, sharedView, pres, sharedView);
Federico Montesino Pouzols
committed
m_ui.tabMain->addTab(m_fittingWidget, QString("Fitting"));
QWidget *wSettings = new QWidget(m_ui.tabMain);
m_uiTabSettings.setupUi(wSettings);
m_ui.tabMain->addTab(wSettings, QString("Settings"));
QComboBox *inst = m_ui.comboBox_instrument;
m_currentInst = inst->currentText().toStdString();
setPrefix(m_currentInst);
// An initial check on the RB number will enable the tabs after all
// the widgets and connections are set up
enableTabs(false);
readSettings();
// basic UI setup, connect signals, etc.
doSetupGeneralWidgets();
doSetupTabCalib();
Federico Montesino Pouzols
committed
doSetupTabFocus();
doSetupTabPreproc();
doSetupTabSettings();
m_presenter->notify(IEnggDiffractionPresenter::Start);
m_presenter->notify(IEnggDiffractionPresenter::RBNumberChange);
}
void EnggDiffractionViewQtGUI::doSetupTabCalib() {
Federico Montesino Pouzols
committed
// Some recent available runs as defaults. This (as well as the
// empty defaults just above) should probably be made persistent -
// and encapsulated into a CalibrationParameters or similar
// class/structure
const std::string vanadiumRun = "236516";
const std::string ceriaRun = "241391";
Federico Montesino Pouzols
committed
if (m_uiTabCalib.MWRunFiles_new_vanadium_num->getUserInput()
.toString()
.isEmpty()) {
m_uiTabCalib.MWRunFiles_new_vanadium_num->setUserInput(
QString::fromStdString(vanadiumRun));
}
if (m_uiTabCalib.MWRunFiles_new_ceria_num->getUserInput()
.toString()
.isEmpty()) {
m_uiTabCalib.MWRunFiles_new_ceria_num->setUserInput(
QString::fromStdString(ceriaRun));
}
// push button signals/slots
connect(m_uiTabCalib.pushButton_load_calib, SIGNAL(released()), this,
SLOT(loadCalibrationClicked()));
connect(m_uiTabCalib.pushButton_new_calib, SIGNAL(released()), this,
SLOT(calibrateClicked()));
connect(m_uiTabCalib.pushButton_new_cropped_calib, SIGNAL(released()), this,
SLOT(CroppedCalibrateClicked()));
connect(m_uiTabCalib.comboBox_calib_cropped_bank_name,
SIGNAL(currentIndexChanged(int)), this,
SLOT(calibspecNoChanged(int)));
connect(m_uiTabCalib.comboBox_calib_cropped_bank_name,
SIGNAL(currentIndexChanged(int)), this, SLOT(enableSpecNos()));
Federico Montesino Pouzols
committed
enableCalibrateFocusFitUserActions(true);
void EnggDiffractionViewQtGUI::doSetupTabFocus() {
connect(m_uiTabFocus.pushButton_focus, SIGNAL(released()), this,
SLOT(focusClicked()));
connect(m_uiTabFocus.pushButton_focus_cropped, SIGNAL(released()), this,
SLOT(focusCroppedClicked()));
connect(m_uiTabFocus.pushButton_texture_browse_grouping_file,
SIGNAL(released()), this, SLOT(browseTextureDetGroupingFile()));
connect(m_uiTabFocus.pushButton_focus_texture, SIGNAL(released()), this,
SLOT(focusTextureClicked()));
connect(m_uiTabFocus.pushButton_reset, SIGNAL(released()), this,
SLOT(focusResetClicked()));
Federico Montesino Pouzols
committed
connect(m_uiTabFocus.pushButton_stop_focus, SIGNAL(released()), this,
SLOT(focusStopClicked()));
connect(m_uiTabFocus.comboBox_PlotData, SIGNAL(currentIndexChanged(int)),
this, SLOT(plotRepChanged(int)));
connect(m_uiTabFocus.comboBox_Multi_Runs, SIGNAL(currentIndexChanged(int)),
this, SLOT(multiRunModeChanged(int)));
connect(m_uiTabFocus.checkBox_plot_focused_ws, SIGNAL(clicked()), this,
SLOT(plotFocusStatus()));
}
void EnggDiffractionViewQtGUI::doSetupTabPreproc() {
connect(m_uiTabPreproc.pushButton_rebin_time, SIGNAL(released()), this,
SLOT(rebinTimeClicked()));
connect(m_uiTabPreproc.pushButton_rebin_multiperiod, SIGNAL(released()), this,
SLOT(rebinMultiperiodClicked()));
Loading
Loading full blame...