From 36e61f37df539533d3cfdbad764b92b0632c3b5e Mon Sep 17 00:00:00 2001 From: Anthony Lim <anthony.lim@stfc.ac.uk> Date: Tue, 2 May 2017 10:28:13 +0100 Subject: [PATCH] refs #19149 Filled out data table in muon anlaysis --- .../FitPropertyBrowser.h | 3 +- .../MuonFitDataSelector.h | 12 +- .../MuonFitDataSelector.ui | 394 +++++++++--------- .../MuonFitPropertyBrowser.h | 12 +- .../MantidWidgets/src/MuonFitDataSelector.cpp | 24 ++ .../src/MuonFitPropertyBrowser.cpp | 58 ++- 6 files changed, 265 insertions(+), 238 deletions(-) diff --git a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/FitPropertyBrowser.h b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/FitPropertyBrowser.h index 1a6555687ef..63ba7b20862 100644 --- a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/FitPropertyBrowser.h +++ b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/FitPropertyBrowser.h @@ -299,10 +299,9 @@ protected slots: /// Called when a bool property is changed virtual void boolChanged(QtProperty *prop); virtual void stringChanged(QtProperty *prop); - + virtual void enumChanged(QtProperty *prop); private slots: - void enumChanged(QtProperty *prop); void intChanged(QtProperty *prop); virtual void doubleChanged(QtProperty *prop); /// Called when one of the parameter values gets changed diff --git a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.h b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.h index 5db55ca48cb..2e98d6e87e5 100644 --- a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.h +++ b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.h @@ -6,6 +6,9 @@ #include "MantidQtMantidWidgets/IMuonFitDataSelector.h" #include "MantidQtAPI/MantidWidget.h" +#include "MantidQtMantidWidgets/MuonFitPropertyBrowser.h" +#include "MantidQtMantidWidgets/FitPropertyBrowser.h" + namespace MantidQt { namespace MantidWidgets { @@ -37,12 +40,13 @@ namespace MantidWidgets { Code Documentation is available at: <http://doxygen.mantidproject.org> */ class EXPORT_OPT_MANTIDQT_MANTIDWIDGETS MuonFitDataSelector - : public MantidQt::API::MantidWidget, + :public MantidQt::API::MantidWidget, public IMuonFitDataSelector { Q_OBJECT + public: /// Basic constructor - explicit MuonFitDataSelector(QWidget *parent); + explicit MuonFitDataSelector(QWidget *parent); /// Constructor with more options MuonFitDataSelector(QWidget *parent, int runNumber, const QString &instName, size_t numPeriods, const QStringList &groups); @@ -151,7 +155,7 @@ private: QMap<QString, QCheckBox *> m_groupBoxes; /// Map of period names to checkboxes QMap<QString, QCheckBox *> m_periodBoxes; - + double startX; private slots: /// Set normal cursor and enable input void unsetBusyState(); @@ -159,6 +163,8 @@ private slots: void setPreviousDataset(); /// Change dataset to next one void setNextDataset(); +// QtProperty *m_groupsToFit; +// mutable QStringList m_groupsToFitOptions; }; } // namespace MantidWidgets diff --git a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.ui b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.ui index c889629f62a..59e5480c3a0 100644 --- a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.ui +++ b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitDataSelector.ui @@ -21,128 +21,12 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QHBoxLayout" name="horizontalLayoutData"> + <layout class="QHBoxLayout" name="horizontalLayoutLabel"> <item> - <widget class="QGroupBox" name="groupBoxWorkspaces"> - <property name="title"> - <string>Workspaces</string> + <widget class="QLabel" name="lblSimFitLabel"> + <property name="text"> + <string>Label for simultaneous fit: </string> </property> - <layout class="QVBoxLayout" name="verticalLayoutWorkspaces"> - <item> - <layout class="QHBoxLayout" name="horizontalLayoutRuns"> - <item> - <widget class="QLabel" name="lblRuns"> - <property name="text"> - <string>Runs:</string> - </property> - </widget> - </item> - <item> - <widget class="MantidQt::API::MWRunFiles" name="runs" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="label" stdset="0"> - <string/> - </property> - <property name="multipleFiles" stdset="0"> - <bool>true</bool> - </property> - <property name="findRunFiles" stdset="0"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayoutRadioButtons"> - <item> - <widget class="QRadioButton" name="rbCoAdd"> - <property name="text"> - <string>Co-add</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="rbSimultaneous"> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - <property name="text"> - <string>Simultaneous</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayoutTime"> - <item> - <widget class="QLabel" name="lblStart"> - <property name="text"> - <string><html><head/><body><p>Start (us):</p></body></html></string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="txtStart"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacerTime"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="lblEnd"> - <property name="text"> - <string>End (us):</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="txtEnd"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - </layout> - </item> - </layout> </widget> </item> <item> @@ -169,82 +53,122 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBoxPeriods"> - <property name="title"> - <string>Periods</string> - </property> - <layout class="QVBoxLayout" name="verticalLayoutPeriods"> - <item> - <widget class="QCheckBox" name="chk1"> - <property name="text"> - <string>1</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="chk2"> - <property name="text"> - <string>2</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayoutPeriodsCombine"> + <layout class="QHBoxLayout" name="horizontalLayoutTime"> + <item> + <widget class="QLabel" name="lblStart"> + <property name="text"> + <string><html><head/><body><p>Start (us):</p></body></html></string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="txtStart"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBoxPeriods"> + <property name="title"> + <string>Periods</string> + </property> + <layout class="QVBoxLayout" name="verticalLayoutPeriods"> <item> - <widget class="QCheckBox" name="chkCombine"> + <widget class="QCheckBox" name="chk1"> <property name="text"> - <string>Combine</string> + <string>1</string> </property> </widget> </item> <item> - <widget class="QLineEdit" name="txtFirst"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="lblMinus"> + <widget class="QCheckBox" name="chk2"> <property name="text"> - <string><html><head/><body><p><span style=" font-size:12pt; font-weight:600;">-</span></p></body></html></string> + <string>2</string> </property> </widget> </item> <item> - <widget class="QLineEdit" name="txtSecond"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> + <layout class="QHBoxLayout" name="horizontalLayoutPeriodsCombine"> + <item> + <widget class="QCheckBox" name="chkCombine"> + <property name="text"> + <string>Combine</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="txtFirst"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="lblMinus"> + <property name="text"> + <string><html><head/><body><p><span style=" font-size:12pt; font-weight:600;">-</span></p></body></html></string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="txtSecond"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> </item> </layout> - </item> - </layout> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayoutLabel"> - <item> - <widget class="QLabel" name="lblSimFitLabel"> - <property name="text"> - <string>Label for simultaneous fit: </string> - </property> - </widget> + </widget> + </item> + <item> + <spacer name="horizontalSpacerTime"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="lblEnd"> + <property name="text"> + <string>End (us):</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="txtEnd"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> </item> <item> <widget class="QLineEdit" name="txtSimFitLabel"> @@ -258,21 +182,15 @@ </item> </layout> </item> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Present results for Data:</string> + </property> + </widget> + </item> <item> <layout class="QHBoxLayout" name="horizontalLayoutDataset"> - <item> - <spacer name="horizontalSpacerDatasetLeft"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> <item> <widget class="QPushButton" name="btnPrevDataset"> <property name="sizePolicy"> @@ -313,20 +231,82 @@ </widget> </item> <item> - <spacer name="horizontalSpacerDatasetRight"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> + <layout class="QHBoxLayout" name="horizontalLayoutData"/> </item> </layout> </item> + <item> + <widget class="QGroupBox" name="groupBoxWorkspaces"> + <property name="title"> + <string>Use Runs</string> + </property> + <layout class="QVBoxLayout" name="verticalLayoutWorkspaces"> + <item> + <layout class="QHBoxLayout" name="horizontalLayoutRuns"> + <item> + <widget class="QLabel" name="lblRuns"> + <property name="text"> + <string>Runs:</string> + </property> + </widget> + </item> + <item> + <widget class="MantidQt::API::MWRunFiles" name="runs" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="label" stdset="0"> + <string/> + </property> + <property name="multipleFiles" stdset="0"> + <bool>true</bool> + </property> + <property name="findRunFiles" stdset="0"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayoutRadioButtons"> + <item> + <widget class="QRadioButton" name="rbCoAdd"> + <property name="text"> + <string>Co-add</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="rbSimultaneous"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Simultaneous</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> </layout> </widget> </item> diff --git a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitPropertyBrowser.h b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitPropertyBrowser.h index d8ea51c2977..2dbfe5467bd 100644 --- a/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitPropertyBrowser.h +++ b/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/MuonFitPropertyBrowser.h @@ -64,6 +64,7 @@ public: Mantid::API::IFunction_sptr getFunction() const override { return getFittingFunction(); } + QtProperty *addToGroupManager(QString name); /// Set list of workspaces to fit void setWorkspaceNames(const QStringList &wsNames) override; /// Get output name @@ -126,12 +127,11 @@ protected: void showEvent(QShowEvent *e) override; double Normalization() const; void setNormalization(); + void groupToFitChanged(); private slots: void doubleChanged(QtProperty *prop) override; void boolChanged(QtProperty *prop) override; - void stringChanged(QtProperty *prop) override; - - + void enumChanged(QtProperty *prop) override; private: /// new menu option QAction *m_fitActiontest; @@ -155,9 +155,9 @@ private: QtProperty *m_normalization; mutable QStringList m_normalizationValue; QtBrowserItem *m_multiFitSettingsGroup; - mutable QString m_strRuns; - QtProperty *m_propRuns; - MantidQt::API::MWRunFiles *m_runs; + QtProperty *m_groupsToFit; + mutable QStringList m_groupsToFitOptions; + }; std::vector<double> readNormalization(); diff --git a/MantidQt/MantidWidgets/src/MuonFitDataSelector.cpp b/MantidQt/MantidWidgets/src/MuonFitDataSelector.cpp index 07fb31bb112..eabe5c5bae5 100644 --- a/MantidQt/MantidWidgets/src/MuonFitDataSelector.cpp +++ b/MantidQt/MantidWidgets/src/MuonFitDataSelector.cpp @@ -1,6 +1,11 @@ #include "MantidQtMantidWidgets/MuonFitDataSelector.h" #include "MantidKernel/Logger.h" + + +#include "qttreepropertybrowser.h" +#include "qtpropertymanager.h" + namespace { Mantid::Kernel::Logger g_log("MuonFitDataSelector"); } @@ -27,6 +32,25 @@ MuonFitDataSelector::MuonFitDataSelector(QWidget *parent) // selected on front tab. User will type in the runs they want rather than // using the Browse button. (If they want to "Browse" they can use front tab). m_ui.runs->doButtonOpt(API::MWRunFiles::ButtonOpts::None); + + + QSettings multiFitSettings; + multiFitSettings.beginGroup(""); + + /* Create function group */ + QtProperty *multiFitSettingsGroup(NULL); + // Seperates the data and the settings into two seperate categories + //multiFitSettingsGroup=parent->addToGroupManager("Test"); +/* m_groupsToFit = FitPropertyBrowser::m_enumManager->addProperty("Groups/Pairs to fit"); + m_groupsToFitOptions << "All groups" + << "All Pairs" + << "Custom"; + //moo need to add periods.... + + m_enumManager->setEnumNames(m_groupsToFit, m_groupsToFitOptions); + multiFitSettingsGroup->addSubProperty(m_groupsToFit);*/ + + } /** diff --git a/MantidQt/MantidWidgets/src/MuonFitPropertyBrowser.cpp b/MantidQt/MantidWidgets/src/MuonFitPropertyBrowser.cpp index 74a1d88531a..cfc855583d7 100644 --- a/MantidQt/MantidWidgets/src/MuonFitPropertyBrowser.cpp +++ b/MantidQt/MantidWidgets/src/MuonFitPropertyBrowser.cpp @@ -8,6 +8,9 @@ #include "MantidAPI/WorkspaceGroup.h" #include "MantidQtMantidWidgets/StringEditorFactory.h" +#include "MantidQtMantidWidgets/MuonFitDataSelector.h" + + // Suppress a warning coming out of code that isn't ours #if defined(__INTEL_COMPILER) #pragma warning disable 1125 @@ -68,7 +71,7 @@ const std::string MuonFitPropertyBrowser::SIMULTANEOUS_PREFIX{"MuonSimulFit_"}; MuonFitPropertyBrowser::MuonFitPropertyBrowser(QWidget *parent, QObject *mantidui) : FitPropertyBrowser(parent, mantidui), m_widgetSplitter(nullptr), - m_mainSplitter(nullptr),m_runs(NULL) {} + m_mainSplitter(nullptr) {} /** * Initialise the muon fit property browser. @@ -147,10 +150,17 @@ void MuonFitPropertyBrowser::init() { //m_listRuns = m_runs->getFileExtensions(); - m_propRuns = m_stringManager->addProperty("Runs"); - multiFitSettingsGroup->addSubProperty(m_propRuns); + //multiFitSettingsGroup->addSubProperty(m_propRuns); multiFitSettingsGroup->addSubProperty(m_startX); multiFitSettingsGroup->addSubProperty(m_endX); + m_groupsToFit = m_enumManager->addProperty("Groups/Pairs to fit"); + m_groupsToFitOptions << "All groups" + << "All Pairs" + << "Custom"; + //moo need to add periods.... + + m_enumManager->setEnumNames(m_groupsToFit, m_groupsToFitOptions); + multiFitSettingsGroup->addSubProperty(m_groupsToFit); connect(m_browser, SIGNAL(currentItemChanged(QtBrowserItem *)), this, SLOT(currentItemChanged(QtBrowserItem *))); @@ -227,23 +237,6 @@ void MuonFitPropertyBrowser::executeMuonFitMenu(const QString &item) { FitPropertyBrowser::executeFitMenu(item); } } -/** Called when a string property changed -* @param prop :: A pointer to the property -*/ -void MuonFitPropertyBrowser::stringChanged(QtProperty *prop) { - if (!m_changeSlotsEnabled) - return; - - if (prop == m_propRuns) { - //QString tmp = m_stringManager->value(prop); - auto tmp= m_runs->getLabelText().toStdString();// setLabelText(tmp); - } - else{ - FitPropertyBrowser::stringChanged(prop); - } -} - - /** * @brief Initialise the layout of the fit menu button. * This initialization includes: @@ -295,6 +288,12 @@ void MuonFitPropertyBrowser::setFitEnabled(bool yes) { m_fitActionSeqFit->setEnabled(yes); m_fitActiontest->setEnabled(yes); } +/* +* Called when the group/pair selected is changed +*/ +void MuonFitPropertyBrowser::groupToFitChanged() { + +} /** * Set the input workspace name @@ -310,7 +309,23 @@ void MuonFitPropertyBrowser::setWorkspaceName(const QString &wsName) { if (i >= 0) m_enumManager->setValue(m_workspace, i); } +/** Called when the function name property changed +* @param prop :: A pointer to the function name property m_functionName +*/ +void MuonFitPropertyBrowser::enumChanged(QtProperty *prop) { + if (!m_changeSlotsEnabled) + return; + bool storeSettings = false; + if (prop == m_groupsToFit) { + int j = m_enumManager->value(m_groupsToFit); + std::string option = m_groupsToFitOptions[j].toStdString(); + double a = 1.; + } + else { + FitPropertyBrowser::enumChanged(prop); + } +} /** Called when a double property changed * @param prop :: A pointer to the property */ @@ -877,5 +892,8 @@ bool MuonFitPropertyBrowser::hasGuess() const { } } + +QtProperty *MuonFitPropertyBrowser::addToGroupManager(QString name) { return m_groupManager->addProperty(name); }; + } // MantidQt } // API -- GitLab