BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FitComparisonWidget1D.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/FitWidgets/FitComparisonWidget1D.cpp
6 //! @brief Implements class FitComparisonWidget1D
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
27 #include <QAction>
28 #include <QGridLayout>
29 #include <QVBoxLayout>
30 
32  : SessionItemWidget(parent)
33  , m_data_plot(new Plot1DCanvas)
34  , m_diff_plot(new Plot1DCanvas)
35  , m_fitFlowWidget(new FitFlowWidget)
36  , m_statusLabel(new PlotStatusLabel(nullptr, this))
37  , m_propertyWidget(new IntensityDataPropertyWidget)
38  , m_resetViewAction(new QAction(this))
39  , m_comparisonController(new FitComparison1DViewController(this))
40 {
41  auto vlayout = new QVBoxLayout;
42  vlayout->setMargin(0);
43  vlayout->setSpacing(0);
44 
45  auto gridLayout = new QGridLayout;
46  gridLayout->setMargin(0);
47  gridLayout->setSpacing(0);
48 
49  gridLayout->addWidget(m_data_plot, 0, 0, 1, -1);
50  gridLayout->addWidget(m_diff_plot, 1, 0, 1, 2);
51  gridLayout->addWidget(m_fitFlowWidget, 1, 2, 1, 1);
52 
53  vlayout->addLayout(gridLayout);
54  vlayout->addWidget(m_statusLabel);
55 
56  auto hlayout = new QHBoxLayout;
57  hlayout->setMargin(0);
58  hlayout->setSpacing(0);
59  hlayout->addLayout(vlayout);
60  hlayout->addWidget(m_propertyWidget);
61  setLayout(hlayout);
62 
63  m_resetViewAction->setText("Center view");
64  m_resetViewAction->setIcon(QIcon(":/images/camera-metering-center.svg"));
65  m_resetViewAction->setToolTip("Reset View");
66  connect(m_resetViewAction, &QAction::triggered, this,
68 
69  m_propertyWidget->setVisible(false);
70 }
71 
73 
75 {
76  return QList<QAction*>() << m_resetViewAction << m_propertyWidget->actionList();
77 }
78 
80 {
81  if (!jobItem()->isValidForFitting())
82  return;
83 
85  [this](const QString& name) {
86  if (name == JobItem::P_STATUS) {
87  if (jobItem()->isCompleted())
89  }
90  },
91  this);
92 
94 
97  m_fitFlowWidget->setItem(jobItem()->fitSuiteItem());
98 
102 
104 }
105 
107 {
108  m_diff_plot->setItem(nullptr);
110 }
111 
113 {
114  viewItem()->resetView();
116 }
117 
119 {
120  JobItem* jobItem = dynamic_cast<JobItem*>(currentItem());
121  return jobItem;
122 }
123 
125 {
126  auto view_item = dynamic_cast<Data1DViewItem*>(jobItem()->dataItemView());
127  ASSERT(view_item);
128  return view_item;
129 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class Data1DViewItem.
Defines classes DiffItemController, FitComparison1DViewController.
Defines class FitComparisonWidget1D.
Defines class FitFlowWidget.
Defines class FitSuiteItem.
Defines class IntensityDataPropertyWidget.
Defines class JobItem.
Defines class Plot1DCanvas.
Defines class Plot1D.
Defines class PlotStatusLabel.
Defines class RealDataItem.
Defines class SessionModel.
View model for 1D DataItem.
void resetView()
Set axes viewport to original data.
FitComparison1DViewController * m_comparisonController
FitComparisonWidget1D(QWidget *parent=nullptr)
FitFlowWidget * m_fitFlowWidget
PlotStatusLabel * m_statusLabel
virtual QList< QAction * > actionList() override
IntensityDataPropertyWidget * m_propertyWidget
~FitComparisonWidget1D() override
The FitFlowWidget class is intended for showing chi2 .vs interation count dependency.
Definition: FitFlowWidget.h:26
The IntensityDataPropertyWidget shows ComponentEditor for given IntensityDataItem.
static const QString P_STATUS
Definition: JobItem.h:40
Data1DViewItem * dataItemView()
Definition: JobItem.cpp:269
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
The Plot1DCanvas class contains SpecularPlotWithDataView for specular data presentation,...
Definition: Plot1DCanvas.h:29
Plot1D * plot1D()
void setItem(SessionItem *dataItemView) override
The PlotStatusLabel class shows status string as reported by DescriptedPlot in a frame.
void reset()
Disconnects all color maps from the label.
void addPlot(ScientificPlot *plot)
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()
virtual void setItem(SessionItem *item)
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString const & name(EShape k)
Definition: particles.cpp:21