Skip to content
Snippets Groups Projects
Commit a6679160 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

IntensityDataWidget: inherits DataAccessWidget

parent 17fda77e
No related branches found
No related tags found
1 merge request!977GUI: migration from SessionItemWidget, part 2
......@@ -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());
}
......@@ -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;
......
......@@ -130,4 +130,3 @@ void IntensityDataProjectionsWidget::setup_connections()
m_toolbar->onChangeActivityRequest(MaskEditorFlags::HORIZONTAL_LINE_MODE);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment