diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp index 916f90d3b51e89deeea3d2a5e8b8099450363d54..c517254256e7cc04375d96b19a129be544342061 100644 --- a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp +++ b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp @@ -15,9 +15,26 @@ // ************************************************************************** // #include "FitComparisonController.h" +#include "SessionModel.h" +#include "IntensityDataItem.h" FitComparisonController::FitComparisonController(QObject* parent) : QObject(parent) + , m_relativeDiffItem(nullptr) + , m_tempIntensityDataModel(new SessionModel("TempIntensityDataModel", this)) { + createRelativeDifferenceItem(); +} + +IntensityDataItem* FitComparisonController::diffItem() +{ + return m_relativeDiffItem; +} + +void FitComparisonController::createRelativeDifferenceItem() +{ + m_tempIntensityDataModel->clear(); + m_relativeDiffItem = dynamic_cast<IntensityDataItem*>( + m_tempIntensityDataModel->insertNewItem(Constants::IntensityDataType)); } diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonController.h b/GUI/coregui/Views/FitWidgets/FitComparisonController.h index 92ce39887b9c6e9d0ccea73c9805eb99d8972883..f7f0c6b6192a39db90f47040f376274992563e65 100644 --- a/GUI/coregui/Views/FitWidgets/FitComparisonController.h +++ b/GUI/coregui/Views/FitWidgets/FitComparisonController.h @@ -20,6 +20,9 @@ #include "WinDllMacros.h" #include <QObject> +class SessionModel; +class IntensityDataItem; + //! Provides syncronization between certain properties of fit related IntensityDataItems. //! Part of FitComparisonWidget. @@ -29,8 +32,13 @@ class BA_CORE_API_ FitComparisonController : public QObject public: explicit FitComparisonController(QObject* parent = nullptr); + IntensityDataItem* diffItem(); + private: + void createRelativeDifferenceItem(); + IntensityDataItem* m_relativeDiffItem; + SessionModel* m_tempIntensityDataModel; }; #endif // FITCOMPARISONCONTROLLER_H diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp index abc5e58bcff142d2c58998686968625eb603cac8..621348a7201b2b9ee036f36bf073724352bcbb63 100644 --- a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp +++ b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp @@ -50,9 +50,7 @@ FitComparisonWidget::FitComparisonWidget(QWidget *parent) , m_statusLabel(new ColorMapLabel(0, this)) , m_propertyWidget(new IntensityDataPropertyWidget) , m_repeater(new PropertyRepeater(this)) - , m_relativeDiffItem(0) , m_resetViewAction(0) - , m_tempIntensityDataModel(new SessionModel("TempIntensityDataModel")) , m_comparisonController(new FitComparisonController(this)) { QVBoxLayout *vlayout = new QVBoxLayout; @@ -84,13 +82,11 @@ FitComparisonWidget::FitComparisonWidget(QWidget *parent) m_resetViewAction->setToolTip("Reset View"); connect(m_resetViewAction, SIGNAL(triggered()), this, SLOT(onResetViewAction())); - m_relativeDiffItem = createRelativeDifferenceItem(); - m_relativeDiffPlot->setItem(diffItem()); + m_relativeDiffPlot->setItem(m_comparisonController->diffItem()); m_propertyWidget->setVisible(false); } -FitComparisonWidget::~FitComparisonWidget() { delete m_tempIntensityDataModel; } QList<QAction*> FitComparisonWidget::actionList() { @@ -135,8 +131,8 @@ void FitComparisonWidget::subscribeToItem() m_repeater->addItem(realDataItem()); m_repeater->addItem(simulatedDataItem()); - QStringList activeProperties = QStringList() << BasicAxisItem::P_MIN << BasicAxisItem::P_MAX; - m_repeater->addItem(diffItem(), activeProperties); +// QStringList activeProperties = QStringList() << BasicAxisItem::P_MIN << BasicAxisItem::P_MAX; +// m_repeater->addItem(diffItem(), activeProperties); m_propertyWidget->setItem(simulatedDataItem()); } @@ -170,19 +166,6 @@ void FitComparisonWidget::onResetViewAction() // m_repeater->setActive(true); } -//! Creates an IntensityDataItem which will hold relative difference map between simulation -//! and real data. - -IntensityDataItem* FitComparisonWidget::createRelativeDifferenceItem() -{ - m_tempIntensityDataModel->clear(); - - IntensityDataItem* result = dynamic_cast<IntensityDataItem*>( - m_tempIntensityDataModel->insertNewItem(Constants::IntensityDataType)); - - return result; -} - void FitComparisonWidget::calculateRelativeDifference() { if (!simulatedDataItem()->getOutputData()) // job failed @@ -219,5 +202,5 @@ IntensityDataItem* FitComparisonWidget::simulatedDataItem() IntensityDataItem* FitComparisonWidget::diffItem() { - return m_relativeDiffItem; + return m_comparisonController->diffItem(); } diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h index 4346ec0b16ebbcc10364909e901a9366e98ba47f..ef4223cae413b41854e9271026f6f4b9126a2a4e 100644 --- a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h +++ b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h @@ -40,7 +40,6 @@ class BA_CORE_API_ FitComparisonWidget : public SessionItemWidget public: explicit FitComparisonWidget(QWidget* parent = 0); - ~FitComparisonWidget(); virtual QList<QAction*> actionList(); @@ -52,7 +51,6 @@ protected: void unsubscribeFromItem(); private: - IntensityDataItem* createRelativeDifferenceItem(); void calculateRelativeDifference(); JobItem* jobItem(); @@ -68,9 +66,7 @@ private: IntensityDataPropertyWidget* m_propertyWidget; PropertyRepeater* m_repeater; - IntensityDataItem* m_relativeDiffItem; QAction* m_resetViewAction; - SessionModel* m_tempIntensityDataModel; FitComparisonController* m_comparisonController; };