diff --git a/GUI/View/Plot2D/IntensityDataWidget.cpp b/GUI/View/Plot2D/IntensityDataWidget.cpp index bf6385c2a20397e02efb141d3bf52b7ff19f7cd7..51b473de6d7024afd4b821415222aca0efcc5105 100644 --- a/GUI/View/Plot2D/IntensityDataWidget.cpp +++ b/GUI/View/Plot2D/IntensityDataWidget.cpp @@ -12,20 +12,17 @@ // // ************************************************************************************************ -#include "GUI/View/Plot2D/IntensityDataWidget.h" #include "GUI/Model/Data/IntensityDataItem.h" -#include "GUI/Model/Data/RealDataItem.h" -#include "GUI/Model/Job/JobItem.h" -#include "GUI/Util/ActionFactory.h" +#include "GUI/View/Plot2D/IntensityDataWidget.h" #include "GUI/View/Plot2D/IntensityDataCanvas.h" #include "GUI/View/Plot2D/IntensityDataFFTPresenter.h" #include "GUI/View/Plot2D/IntensityDataPropertyWidget.h" -#include "GUI/View/Tool/DataItemUtils.h" +#include "GUI/Util/ActionFactory.h" #include <QBoxLayout> #include <QMenu> IntensityDataWidget::IntensityDataWidget(QWidget* parent) - : SessionItemWidget(parent) + : DataAccessWidget(parent) , m_intensityCanvas(new IntensityDataCanvas) , m_propertyWidget(new IntensityDataPropertyWidget(this)) , m_fftPresenter(new IntensityDataFFTPresenter(this)) @@ -49,46 +46,28 @@ IntensityDataWidget::IntensityDataWidget(QWidget* parent) m_togglePropertiesAction = ActionFactory::createTogglePropertiesPanelAction(this, m_propertyWidget); - m_propertyWidget->setVisible(false); } -void IntensityDataWidget::setItem(SessionItem* _jobItem) +void IntensityDataWidget::setItem(SessionItem* item) { - SessionItemWidget::setItem(_jobItem); // now we can access to jobItem() - - if(dynamic_cast<JobItem*>(_jobItem)) - m_intensityCanvas->setJobOrRealItem(dynamic_cast<JobItem*>(_jobItem)); + SessionItemWidget::setItem(item); + if(dynamic_cast<JobItem*>(item)) + setJobOrRealItem(dynamic_cast<JobItem*>(item)); else - m_intensityCanvas->setJobOrRealItem(dynamic_cast<RealDataItem*>(_jobItem)); + setJobOrRealItem(dynamic_cast<RealDataItem*>(item)); +} - m_propertyWidget->setIntensityItems({intensityDataItem(), +void IntensityDataWidget::setJobOrRealItem(JobRealBase* job_or_real_item) +{ + DataAccessWidget::setJobOrRealItem(job_or_real_item); + m_intensityCanvas->setJobOrRealItem(job_or_real_item); + m_propertyWidget->setIntensityItems({currentIntensityDataItem(), realIntensityDataItem(), diffIntensityDataItem()}); m_fftPresenter->reset(); } -JobItem* IntensityDataWidget::jobItem() -{ - return dynamic_cast<JobItem*>(currentItem()); -} - -IntensityDataItem* IntensityDataWidget::realIntensityDataItem() -{ - if (jobItem() && jobItem()->realDataItem()) - return jobItem()->realDataItem()->intensityDataItem(); - else - return nullptr; -} - -IntensityDataItem* IntensityDataWidget::diffIntensityDataItem() -{ - if (jobItem()) - return dynamic_cast<IntensityDataItem*>(jobItem()->diffDataItem()); - else - return nullptr; -} - QList<QAction*> IntensityDataWidget::actionList() { return m_intensityCanvas->actionList() + m_fftPresenter->actionList() @@ -105,21 +84,18 @@ void IntensityDataWidget::onContextMenuRequest(const QPoint& point) void IntensityDataWidget::onFFTAction() { - if (!intensityDataItem() || !intensityDataItem()->getDatafield()) + if (!currentIntensityDataItem() || !currentIntensityDataItem()->getDatafield()) return; if (m_fftPresenter->inFFTMode()) { - auto* fftItem = m_fftPresenter->fftItem(intensityDataItem()); + auto* fftItem = m_fftPresenter->fftItem(currentIntensityDataItem()); m_intensityCanvas->setFourierIntensity(fftItem); m_propertyWidget->setIntensityItems({fftItem}); } else { // returning ColorMap to non-fft presentation m_intensityCanvas->setFourierIntensity(nullptr); - m_propertyWidget->setIntensityItems({intensityDataItem()}); + m_propertyWidget->setIntensityItems({currentIntensityDataItem(), + realIntensityDataItem(), + diffIntensityDataItem()}); } } - -IntensityDataItem* IntensityDataWidget::intensityDataItem() -{ - return GUI::Model::DataItemUtils::intensityDataItem(currentItem()); -} diff --git a/GUI/View/Plot2D/IntensityDataWidget.h b/GUI/View/Plot2D/IntensityDataWidget.h index 5eba67932868563d59d2edefa908e88c30297ad9..6da60d548a6dbbf9bcd27a629976a7ed5098c837 100644 --- a/GUI/View/Plot2D/IntensityDataWidget.h +++ b/GUI/View/Plot2D/IntensityDataWidget.h @@ -15,41 +15,32 @@ #ifndef BORNAGAIN_GUI_VIEW_PLOT2D_INTENSITYDATAWIDGET_H #define BORNAGAIN_GUI_VIEW_PLOT2D_INTENSITYDATAWIDGET_H -#include "GUI/View/Common/SessionItemWidget.h" -#include <memory> +#include "GUI/View/Common/DataAccessWidget.h" class SessionItem; class IntensityDataCanvas; class IntensityDataPropertyWidget; -class IntensityDataItem; class QAction; -class QContextMenuEvent; class IntensityDataFFTPresenter; -class JobItem; //! A common widget to display color map (IntensityDataCanvas) and properties //! (ItemPropertyWidget) of intensity data item. -class IntensityDataWidget : public SessionItemWidget { +class IntensityDataWidget : public DataAccessWidget { Q_OBJECT public: IntensityDataWidget(QWidget* parent = nullptr); - void setItem(SessionItem* _jobItem) override; - JobItem* jobItem(); - IntensityDataItem* realIntensityDataItem(); - IntensityDataItem* diffIntensityDataItem(); + void setItem(SessionItem* item) override; + void setJobOrRealItem(JobRealBase* job_or_real_item) override; QList<QAction*> actionList() override; -private slots: +private: void onContextMenuRequest(const QPoint& point); void onFFTAction(); -private: - IntensityDataItem* intensityDataItem(); - IntensityDataCanvas* m_intensityCanvas; IntensityDataPropertyWidget* m_propertyWidget; IntensityDataFFTPresenter* m_fftPresenter; diff --git a/GUI/View/Projection/IntensityDataProjectionsWidget.cpp b/GUI/View/Projection/IntensityDataProjectionsWidget.cpp index c9222b1b1a071719e66fa79df36fd0017ec10879..081c6121bacb0b02863d4676ddfb013becf9b106 100644 --- a/GUI/View/Projection/IntensityDataProjectionsWidget.cpp +++ b/GUI/View/Projection/IntensityDataProjectionsWidget.cpp @@ -130,4 +130,3 @@ void IntensityDataProjectionsWidget::setup_connections() m_toolbar->onChangeActivityRequest(MaskEditorFlags::HORIZONTAL_LINE_MODE); } -