BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JobResultsPresenter.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/JobWidgets/JobResultsPresenter.cpp
6 //! @brief Implements class JobResultsPresenter
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 
24 
26 {
27  registerWidget("Color Map", create_new<IntensityDataWidget>);
28  registerWidget("Projections", create_new<IntensityDataProjectionsWidget>);
29  registerWidget("Fit 1D Data", create_new<FitComparisonWidget1D>);
30  registerWidget("Fit 2D Data", create_new<FitComparisonWidget>);
31  registerWidget("Reflectometry", create_new<SpecularDataWidget>);
32 }
33 
35 {
36  if (!currentItem())
37  return {};
38 
40  return value.isValid() ? value.toString() : selectedPresentation();
41 }
42 
43 void JobResultsPresenter::setPresentation(const QString& presentationType)
44 {
45  if (!currentItem())
46  return;
47 
48  ItemComboWidget::setPresentation(presentationType);
50 }
51 
53 {
54  if (!currentItem())
55  return;
56 
57  JobItem* jobItem = dynamic_cast<JobItem*>(currentItem());
58  if (!jobItem)
59  return;
60 
61  QString presentation;
62  switch (activity) {
64  presentation = fitPresentationOfInstrument(jobItem->instrumentItem());
65  break;
66 
69  presentation = defaultPresentationOfInstrument(jobItem->instrumentItem());
70  break;
71  }
72 
73  setPresentation(presentation);
74 }
75 
76 //! Returns list of presentation types, available for given item. JobItem with fitting abilities
77 //! is valid for IntensityDataWidget and FitComparisonWidget.
78 
80 {
81  JobItem* jobItem = dynamic_cast<JobItem*>(item);
82  if (!jobItem)
83  return {};
84 
85  ASSERT(jobItem->instrumentItem() != nullptr);
86 
88 
89  if (jobItem->isValidForFitting())
90  result << fitPresentationOfInstrument(jobItem->instrumentItem());
91 
92  return result;
93 }
94 
96 {
97  JobItem* jobItem = dynamic_cast<JobItem*>(item);
98  if (!jobItem)
99  return {};
100 
101  ASSERT(jobItem->instrumentItem() != nullptr);
102 
103  auto result = defaultActivePresentationsOfInstrument(jobItem->instrumentItem());
104  auto addon = fitPresentationOfInstrument(jobItem->instrumentItem());
105  if (!addon.isEmpty())
106  result << addon;
107 
108  return result;
109 }
110 
112 {
113  if (instrumentItem->is<SpecularInstrumentItem>())
114  return "Reflectometry";
115 
116  return "Color Map";
117 }
118 
119 QStringList
121 {
122  if (instrumentItem->is<SpecularInstrumentItem>())
123  return {"Reflectometry"};
124 
125  return {"Color Map", "Projections"};
126 }
127 
129 {
130  if (instrumentItem->is<SpecularInstrumentItem>())
131  return "Fit 1D Data";
132 
133  return "Fit 2D Data";
134 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class FitComparisonWidget1D.
Defines class FitComparisonWidget.
Defines class GUIHelpers functions.
Defines InstrumentItems classes.
Defines class IntensityDataProjectionsWidget.
Defines class IntensityDataWidget.
Defines class JobItem.
Defines class JobResultsPresenter.
Defines class SpecularDataWidget.
The ItemComboWidget class combines stack of widgets with QComboBox controller to switch between widge...
QString selectedPresentation() const
Presentation selected in combo selector.
virtual void setPresentation(const QString &presentationType)
Sets stack to show widget corresponding to given presentation.
void registerWidget(const QString &presentationType, factory_function_t)
static const QString P_PRESENTATION_TYPE
Definition: JobItem.h:46
InstrumentItem * instrumentItem()
Definition: JobItem.cpp:224
bool isValidForFitting()
Definition: JobItem.cpp:165
QStringList activePresentationList(SessionItem *item) override
Returns list of presentation types, available for given item.
void setPresentation(const QString &presentationType) override
Sets stack to show widget corresponding to given presentation.
QStringList presentationList(SessionItem *item) override
Returns full list of presentations available for given item.
QString defaultPresentationOfInstrument(InstrumentItem *instrumentItem)
QString itemPresentation() const override
Presentation which should be shown for current item.
QStringList defaultActivePresentationsOfInstrument(InstrumentItem *instrumentItem)
QString fitPresentationOfInstrument(InstrumentItem *instrumentItem)
JobResultsPresenter(QWidget *parent=nullptr)
SessionItem * currentItem()
bool is() const
Definition: SessionItem.h:175
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.