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

SpecularPlot: inherits DataAccessWidget

parent 1d8d2b3c
No related branches found
No related tags found
1 merge request!975GUI: migration from SessionItemWidget, part 1
......@@ -41,6 +41,19 @@ RealDataItem* DataAccessWidget::realItem() const
return dynamic_cast<RealDataItem*>(m_item);
}
bool DataAccessWidget::isSpecular()
{
return firstSpecularDataItem() != nullptr;
}
bool DataAccessWidget::firstIsDiff()
{
if(isSpecular())
return (firstSpecularDataItem() == diffSpecularDataItem()) && firstSpecularDataItem();
else
return (firstIntensityDataItem() == diffIntensityDataItem()) && firstSpecularDataItem();
}
SpecularDataItem* DataAccessWidget::realSpecularDataItem() const
{
return realDataItem<SpecularDataItem>();
......@@ -81,11 +94,6 @@ QList<SpecularDataItem*> DataAccessWidget::otherMainSpecularDataItems() const
return otherMainDataItems<SpecularDataItem>();
}
QList<SpecularDataItem*> DataAccessWidget::diffSpecularDataItems() const
{
return diffDataItems<SpecularDataItem>();
}
QList<SpecularDataItem*> DataAccessWidget::allSpecularDataItems() const
{
return allDataItems<SpecularDataItem>();
......@@ -111,11 +119,6 @@ QList<IntensityDataItem*> DataAccessWidget::otherMainIntensityDataItems() const
return otherMainDataItems<IntensityDataItem>();
}
QList<IntensityDataItem*> DataAccessWidget::diffIntensityDataItems() const
{
return diffDataItems<IntensityDataItem>();
}
QList<IntensityDataItem*> DataAccessWidget::allIntensityDataItems() const
{
return allDataItems<IntensityDataItem>();
......@@ -126,7 +129,7 @@ QList<IntensityDataItem*> DataAccessWidget::otherAllIntensityDataItems() const
return otherAllDataItems<IntensityDataItem>();
}
IntensityDataItem *DataAccessWidget::firstintensityDataItem() const
IntensityDataItem *DataAccessWidget::firstIntensityDataItem() const
{
return allIntensityDataItems().first();
}
......@@ -39,6 +39,9 @@ public:
JobItem* jobItem() const;
RealDataItem* realItem() const;
bool isSpecular();
bool firstIsDiff();
// Access to concrete items:
// Specular
......@@ -73,9 +76,6 @@ public:
//! mainSpecularDataItems() without first element
QList<SpecularDataItem*> otherMainSpecularDataItems() const;
//! Difference specular data as list, non-nullptr items
QList<SpecularDataItem*> diffSpecularDataItems() const;
//! Simulated + real + difference specular data as list, non-nullptr items
QList<SpecularDataItem*> allSpecularDataItems() const;
......@@ -93,9 +93,6 @@ public:
//! mainIntensityDataItems() without first element
QList<IntensityDataItem*> otherMainIntensityDataItems() const;
//! Difference intensity data as list, non-nullptr items
QList<IntensityDataItem*> diffIntensityDataItems() const;
//! Simulated + real + difference intensity data as list, non-nullptr items
QList<IntensityDataItem*> allIntensityDataItems() const;
......@@ -103,7 +100,7 @@ public:
QList<IntensityDataItem*> otherAllIntensityDataItems() const;
//! first element of allIntensityDataItems()
IntensityDataItem* firstintensityDataItem() const;
IntensityDataItem* firstIntensityDataItem() const;
private:
template <class T>
......
......@@ -14,6 +14,7 @@
#include "GUI/Model/Job/FitSuiteItem.h"
#include "GUI/Model/Job/JobItem.h"
#include "GUI/Model/Data/SpecularDataItem.h"
#include "GUI/View/PlotComparison/FitComparisonWidget1D.h"
#include "GUI/View/PlotComparison/FitFlowWidget.h"
#include "GUI/View/PlotUtil/PlotStatusLabel.h"
......@@ -86,9 +87,8 @@ void FitComparisonWidget1D::setJobOrRealItem(JobRealBase* job_item)
updateDiffData();
connectItems();
// m_data_canvas->setDataItems({simuSpecDataItem(),
// realSpecDataItem()});
// m_diff_canvas->setDataItems({diffSpecDataItem()});
m_data_canvas->setJobOrRealItem(job_item);
m_diff_canvas->setJobOrRealItem(job_item);
m_fitFlowWidget->setItem(jobItem()->fitSuiteItem());
// m_propertyWidget->setItem(job_Item);
}
......
......@@ -48,9 +48,9 @@ SpecularPlot::SpecularPlot(QWidget* parent)
setMouseTrackingEnabled(true);
}
void SpecularPlot::setDataItems(const QList<DataItem*>& dataItems)
void SpecularPlot::setJobOrRealItem(JobRealBase* job_or_real_Item)
{
DataItemBundleWidget::setDataItems(dataItems);
DataAccessWidget::setJobOrRealItem(job_or_real_Item);
initPlot();
connectItems();
}
......@@ -80,7 +80,7 @@ void SpecularPlot::setLog()
void SpecularPlot::onXaxisRangeChanged(QCPRange newRange)
{
m_block_update = true;
for(auto* item : specularDataItems()) {
for(auto item : allSpecularDataItems()) {
item->setLowerX(newRange.lower);
item->setUpperX(newRange.upper);
}
......@@ -92,10 +92,14 @@ void SpecularPlot::onXaxisRangeChanged(QCPRange newRange)
void SpecularPlot::onYaxisRangeChanged(QCPRange newRange)
{
m_block_update = true;
for(auto* item : specularDataItems()) {
item->setLowerY(newRange.lower);
item->setUpperY(newRange.upper);
}
if(firstIsDiff()) {
diffSpecularDataItem()->setLowerY(newRange.lower);
diffSpecularDataItem()->setUpperY(newRange.upper);
} else
for(auto* item : mainSpecularDataItems()) {
item->setLowerY(newRange.lower);
item->setUpperY(newRange.upper);
}
if(firstSpecularDataItem())
emit firstSpecularDataItem()->updateOtherPlots(firstSpecularDataItem());
m_block_update = false;
......@@ -112,8 +116,7 @@ void SpecularPlot::connectItems()
return;
// units
for(auto* item : specularDataItems())
connect(item, &DataItem::axesUnitsReplotRequested, this,
connect(firstSpecularDataItem(), &DataItem::axesUnitsReplotRequested, this,
&SpecularPlot::setPlot, Qt::UniqueConnection);
// x axis
......@@ -131,32 +134,15 @@ void SpecularPlot::connectItems()
&SpecularPlot::setLog, Qt::UniqueConnection);
// data
for(auto* item : specularDataItems())
connect(item, &DataItem::datafieldChanged, this,
connect(firstSpecularDataItem(), &DataItem::datafieldChanged, this,
&SpecularPlot::setPlot, Qt::UniqueConnection);
}
void SpecularPlot::subscribeToItem()
{
qInfo() << "SpecularPlot : subscribeToItem";
}
void SpecularPlot::unsubscribeFromItem()
{
qInfo() << "SpecularPlot : unsubscribeFromItem";
// disconnect(firstSpecularDataItem()->xAxisItem(), nullptr, this, nullptr);
// disconnect(firstSpecularDataItem()->yAxisItem(), nullptr, this, nullptr);
// for(auto* item : specularDataItems())
// connect(item, &DataItem::datafieldChanged, this,
// &SpecularPlot::setPlot, Qt::UniqueConnection);
// setConnected(false);
}
void SpecularPlot::initPlot()
{
m_custom_plot->clearGraphs();
m_graph_map.clear();
for(auto* item : specularDataItems()) {
for(auto* item : allSpecularDataItems()) {
m_custom_plot->addGraph();
m_graph_map.insert(item, m_custom_plot->graph());
m_custom_plot->graph()->setLineStyle(item->lineStyle());
......@@ -214,7 +200,7 @@ void SpecularPlot::setPlot()
{
m_block_update = true;
for(auto* item : specularDataItems())
for(auto* item : allSpecularDataItems())
setDataFromItem(item);
setAxes();
setAxesLabels();
......
......@@ -35,7 +35,7 @@ class SpecularPlot : public ScientificPlot {
public:
explicit SpecularPlot(QWidget* parent = nullptr);
void setDataItems(const QList<DataItem*>& dataItems) override;
void setJobOrRealItem(JobRealBase* job_or_real_Item) override;
QSize sizeHint() const override { return QSize(500, 400); }
QSize minimumSizeHint() const override { return QSize(128, 128); }
......@@ -49,7 +49,7 @@ public:
//! sets logarithmic scale
void setLog();
private slots:
private:
//! Propagate xmin, xmax back to IntensityDataItem
void onXaxisRangeChanged(QCPRange newRange);
......@@ -59,12 +59,8 @@ private slots:
//! Replots SpecularPlot.
void onTimeToReplot();
protected:
void connectItems();
void subscribeToItem() override;
void unsubscribeFromItem() override;
private:
//! creates and initializes the color map
void initPlot();
......
......@@ -16,7 +16,7 @@
#include "qcustomplot.h"
ScientificPlot::ScientificPlot(QWidget* parent, PLOT_TYPE plot_type)
: DataItemBundleWidget(parent)
: DataAccessWidget(parent)
, m_plot_type(plot_type)
, m_event(new ScientificPlotEvent(this))
{
......
......@@ -15,7 +15,7 @@
#ifndef BORNAGAIN_GUI_VIEW_PLOTUTIL_SCIENTIFICPLOT_H
#define BORNAGAIN_GUI_VIEW_PLOTUTIL_SCIENTIFICPLOT_H
#include "GUI/View/Common/DataItemBundleWidget.h"
#include "GUI/View/Common/DataAccessWidget.h"
#include <memory>
class PlotEventInfo;
......@@ -24,7 +24,7 @@ class ScientificPlotEvent;
//! Common interface for plot-descriptor interaction
class ScientificPlot : public DataItemBundleWidget {
class ScientificPlot : public DataAccessWidget {
Q_OBJECT
public:
......
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