BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JobResultsPresenter Class Reference

Presents results of job (JobItem) using stack of different widgets and combo box in the right top corner of JobView, to switch between widgets. More...

Inheritance diagram for JobResultsPresenter:
[legend]
Collaboration diagram for JobResultsPresenter:
[legend]

Public Types

using factory_function_t = std::function< SessionItemWidget *()>
 

Public Member Functions

 JobResultsPresenter (QWidget *parent=nullptr)
 
virtual QList< QAction * > actionList ()
 
SessionItemcurrentItem ()
 
const SessionItemcurrentItem () const
 
void registerWidget (const QString &presentationType, factory_function_t)
 
virtual void setItem (SessionItem *item)
 
void setPresentation (const QString &presentationType) override
 Sets stack to show widget corresponding to given presentation. More...
 
void setPresentation (JobViewFlags::EActivities activity)
 
void setToolBarVisible (bool value)
 

Protected Member Functions

QStringList activePresentationList (SessionItem *item) override
 Returns list of presentation types, available for given item. More...
 
virtual void hideEvent (QHideEvent *)
 
QString itemPresentation () const override
 Presentation which should be shown for current item. More...
 
QStringList presentationList (SessionItem *item) override
 Returns full list of presentations available for given item. More...
 
QString selectedPresentation () const
 Presentation selected in combo selector. More...
 
virtual void showEvent (QShowEvent *)
 
void subscribeToItem ()
 
virtual void unsubscribeFromItem ()
 

Private Slots

void onComboChanged (const QString &name)
 

Private Member Functions

QStringList defaultActivePresentationsOfInstrument (InstrumentItem *instrumentItem)
 
QString defaultPresentationOfInstrument (InstrumentItem *instrumentItem)
 
QString fitPresentationOfInstrument (InstrumentItem *instrumentItem)
 
void setSizeToCurrentWidget ()
 Resizes QStackedWidget to currently active page. More...
 

Private Attributes

SessionItemControllerm_itemController
 
QMap< QString, SessionItemWidget * > m_presentationTypeToWidget
 
QStackedWidget * m_stackedWidget
 
ItemComboToolBarm_toolBar
 
IFactory< QString, SessionItemWidgetm_widgetFactory
 

Detailed Description

Presents results of job (JobItem) using stack of different widgets and combo box in the right top corner of JobView, to switch between widgets.

Definition at line 26 of file JobResultsPresenter.h.

Member Typedef Documentation

◆ factory_function_t

using ItemComboWidget::factory_function_t = std::function<SessionItemWidget*()>
inherited

Definition at line 39 of file ItemComboWidget.h.

Constructor & Destructor Documentation

◆ JobResultsPresenter()

JobResultsPresenter::JobResultsPresenter ( QWidget *  parent = nullptr)
explicit

Definition at line 25 of file JobResultsPresenter.cpp.

25  : ItemComboWidget(parent)
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 }
ItemComboWidget(QWidget *parent=0)
void registerWidget(const QString &presentationType, factory_function_t)

References ItemComboWidget::registerWidget().

Here is the call graph for this function:

Member Function Documentation

◆ actionList()

QList< QAction * > SessionItemWidget::actionList ( )
virtualinherited

◆ activePresentationList()

QStringList JobResultsPresenter::activePresentationList ( SessionItem item)
overrideprotectedvirtual

Returns list of presentation types, available for given item.

JobItem with fitting abilities is valid for IntensityDataWidget and FitComparisonWidget.

Reimplemented from ItemComboWidget.

Definition at line 79 of file JobResultsPresenter.cpp.

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 }
#define ASSERT(condition)
Definition: Assert.h:31
InstrumentItem * instrumentItem()
Definition: JobItem.cpp:224
bool isValidForFitting()
Definition: JobItem.cpp:165
QStringList defaultActivePresentationsOfInstrument(InstrumentItem *instrumentItem)
QString fitPresentationOfInstrument(InstrumentItem *instrumentItem)

References ASSERT, defaultActivePresentationsOfInstrument(), fitPresentationOfInstrument(), JobItem::instrumentItem(), and JobItem::isValidForFitting().

Here is the call graph for this function:

◆ currentItem() [1/2]

SessionItem * SessionItemWidget::currentItem ( )
inherited

Definition at line 41 of file SessionItemWidget.cpp.

42 {
43  return const_cast<SessionItem*>(static_cast<const SessionItemWidget*>(this)->currentItem());
44 }
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()

Referenced by RectangularDetectorEditor::detectorItem(), SphericalDetectorEditor::detectorItem(), FitFlowWidget::fitSuiteItem(), DistributionEditor::groupItem(), DepthProbeInstrumentEditor::instrumentItem(), EnvironmentEditor::instrumentItem(), GISASBeamEditor::instrumentItem(), GISASDetectorEditor::instrumentItem(), GISASInstrumentEditor::instrumentItem(), OffSpecularBeamEditor::instrumentItem(), OffSpecularInstrumentEditor::instrumentItem(), PolarizationAnalysisEditor::instrumentItem(), SpecularBeamEditor::instrumentItem(), SpecularInstrumentEditor::instrumentItem(), RealDataMaskWidget::intensityDataItem(), IntensityDataCanvas::intensityDataItem(), IntensityDataProjectionsWidget::intensityDataItem(), IntensityDataWidget::intensityDataItem(), ProjectionsPlot::intensityItem(), ColorMap::intensityItem(), DetectorPresenter::itemPresentation(), InstrumentPresenter::itemPresentation(), itemPresentation(), FitComparisonWidget::jobItem(), FitComparisonWidget1D::jobItem(), FitParameterWidget::jobItem(), RunFitControlWidget::jobItem(), JobPropertiesWidget::jobItem(), ParameterTuningWidget::jobItem(), SpecularDataImportWidget::realDataItem(), ItemComboWidget::setPresentation(), setPresentation(), SpecularDataCanvas::specularDataItem(), SpecularDataImportWidget::specularDataItem(), SpecularDataWidget::specularDataItem(), SpecularPlot::specularItem(), ItemComboWidget::subscribeToItem(), DistributionEditor::subscribeToItem(), GISASDetectorEditor::subscribeToItem(), PolarizationAnalysisEditor::subscribeToItem(), IntensityDataPropertyWidget::subscribeToItem(), JobPropertiesWidget::subscribeToItem(), ProjectionsPropertyPanel::subscribeToItem(), ProjectionsPlot::unsubscribeFromChildren(), and Plot1D::viewItem().

◆ currentItem() [2/2]

const SessionItem * SessionItemWidget::currentItem ( ) const
inherited

Definition at line 46 of file SessionItemWidget.cpp.

47 {
48  return m_itemController->currentItem();
49 }
SessionItemController * m_itemController

References SessionItemController::currentItem(), and SessionItemWidget::m_itemController.

Here is the call graph for this function:

◆ defaultActivePresentationsOfInstrument()

QStringList JobResultsPresenter::defaultActivePresentationsOfInstrument ( InstrumentItem instrumentItem)
private

Definition at line 120 of file JobResultsPresenter.cpp.

121 {
122  if (instrumentItem->is<SpecularInstrumentItem>())
123  return {"Reflectometry"};
124 
125  return {"Color Map", "Projections"};
126 }
bool is() const
Definition: SessionItem.h:175

References SessionItem::is().

Referenced by activePresentationList(), and presentationList().

Here is the call graph for this function:

◆ defaultPresentationOfInstrument()

QString JobResultsPresenter::defaultPresentationOfInstrument ( InstrumentItem instrumentItem)
private

Definition at line 111 of file JobResultsPresenter.cpp.

112 {
113  if (instrumentItem->is<SpecularInstrumentItem>())
114  return "Reflectometry";
115 
116  return "Color Map";
117 }

References SessionItem::is().

Referenced by setPresentation().

Here is the call graph for this function:

◆ fitPresentationOfInstrument()

QString JobResultsPresenter::fitPresentationOfInstrument ( InstrumentItem instrumentItem)
private

Definition at line 128 of file JobResultsPresenter.cpp.

129 {
130  if (instrumentItem->is<SpecularInstrumentItem>())
131  return "Fit 1D Data";
132 
133  return "Fit 2D Data";
134 }

References SessionItem::is().

Referenced by activePresentationList(), presentationList(), and setPresentation().

Here is the call graph for this function:

◆ hideEvent()

void SessionItemWidget::hideEvent ( QHideEvent *  )
protectedvirtualinherited

Definition at line 56 of file SessionItemWidget.cpp.

57 {
59 }
void unsubscribe()
Fully unsubscribes the parent from listening item's signals.

References SessionItemWidget::m_itemController, and SessionItemController::unsubscribe().

Here is the call graph for this function:

◆ itemPresentation()

QString JobResultsPresenter::itemPresentation ( ) const
overrideprotectedvirtual

Presentation which should be shown for current item.

Reimplemented from ItemComboWidget.

Definition at line 34 of file JobResultsPresenter.cpp.

35 {
36  if (!currentItem())
37  return {};
38 
40  return value.isValid() ? value.toString() : selectedPresentation();
41 }
QString selectedPresentation() const
Presentation selected in combo selector.
static const QString P_PRESENTATION_TYPE
Definition: JobItem.h:46
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References SessionItemWidget::currentItem(), SessionItem::getItemValue(), JobItem::P_PRESENTATION_TYPE, and ItemComboWidget::selectedPresentation().

Here is the call graph for this function:

◆ onComboChanged

void ItemComboWidget::onComboChanged ( const QString &  name)
privateslotinherited

Definition at line 119 of file ItemComboWidget.cpp.

120 {
122 }
virtual void setPresentation(const QString &presentationType)
Sets stack to show widget corresponding to given presentation.

References ItemComboWidget::selectedPresentation(), and ItemComboWidget::setPresentation().

Referenced by ItemComboWidget::ItemComboWidget().

Here is the call graph for this function:

◆ presentationList()

QStringList JobResultsPresenter::presentationList ( SessionItem item)
overrideprotectedvirtual

Returns full list of presentations available for given item.

Reimplemented from ItemComboWidget.

Definition at line 95 of file JobResultsPresenter.cpp.

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 }

References ASSERT, defaultActivePresentationsOfInstrument(), fitPresentationOfInstrument(), and JobItem::instrumentItem().

Here is the call graph for this function:

◆ registerWidget()

void ItemComboWidget::registerWidget ( const QString &  presentationType,
factory_function_t  f 
)
inherited

Definition at line 43 of file ItemComboWidget.cpp.

44 {
45  m_widgetFactory.registerItem(presentationType, f);
46 }
bool registerItem(const Key &item_key, CreateItemCallback CreateFn)
Registers object's creation function.
Definition: IFactory.h:53
IFactory< QString, SessionItemWidget > m_widgetFactory

References ItemComboWidget::m_widgetFactory, and IFactory< Key, AbstractProduct >::registerItem().

Referenced by DetectorPresenter::DetectorPresenter(), InstrumentPresenter::InstrumentPresenter(), JobResultsPresenter(), and RealDataPresenter::RealDataPresenter().

Here is the call graph for this function:

◆ selectedPresentation()

QString ItemComboWidget::selectedPresentation ( ) const
protectedinherited

Presentation selected in combo selector.

Definition at line 107 of file ItemComboWidget.cpp.

108 {
109  return m_toolBar->currentPresentation();
110 }
QString currentPresentation() const
ItemComboToolBar * m_toolBar

References ItemComboToolBar::currentPresentation(), and ItemComboWidget::m_toolBar.

Referenced by ItemComboWidget::itemPresentation(), itemPresentation(), and ItemComboWidget::onComboChanged().

Here is the call graph for this function:

◆ setItem()

void SessionItemWidget::setItem ( SessionItem item)
virtualinherited

Reimplemented in SpecularPlotCanvas, SpecularDataImportWidget, SpecularDataWidget, IntensityDataWidget, SpecularDataCanvas, ProjectionsWidget, IntensityDataCanvas, ColorMapCanvas, and Plot1DCanvas.

Definition at line 28 of file SessionItemWidget.cpp.

29 {
31 
32  if (isVisible())
34 }
void setItem(SessionItem *item)
void subscribe()
Subscribe parent to item's signals.

References SessionItemWidget::m_itemController, SessionItemController::setItem(), and SessionItemController::subscribe().

Referenced by IntensityDataWidget::onFFTAction(), JobSelectorWidget::onSelectionChanged(), ProjectionsEditor::resetContext(), ProjectionsEditor::setContext(), MaskGraphicsProxy::setIntensityItem(), FitSessionWidget::setItem(), Plot1DCanvas::setItem(), InstrumentEditorWidget::setItem(), ColorMapCanvas::setItem(), IntensityDataCanvas::setItem(), ProjectionsWidget::setItem(), SpecularDataCanvas::setItem(), DistributionDialog::setItem(), IntensityDataWidget::setItem(), SpecularDataWidget::setItem(), SpecularDataImportWidget::setItem(), SpecularPlotCanvas::setItem(), ItemComboWidget::setPresentation(), GISASInstrumentEditor::subscribeToItem(), OffSpecularInstrumentEditor::subscribeToItem(), SpecularInstrumentEditor::subscribeToItem(), FitComparisonWidget::subscribeToItem(), FitComparisonWidget1D::subscribeToItem(), and GISASDetectorEditor::updateDetectorPresenter().

Here is the call graph for this function:

◆ setPresentation() [1/2]

void JobResultsPresenter::setPresentation ( const QString &  presentationType)
overridevirtual

Sets stack to show widget corresponding to given presentation.

Reimplemented from ItemComboWidget.

Definition at line 43 of file JobResultsPresenter.cpp.

44 {
45  if (!currentItem())
46  return;
47 
48  ItemComboWidget::setPresentation(presentationType);
50 }
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References SessionItemWidget::currentItem(), JobItem::P_PRESENTATION_TYPE, SessionItem::setItemValue(), and ItemComboWidget::setPresentation().

Referenced by setPresentation().

Here is the call graph for this function:

◆ setPresentation() [2/2]

void JobResultsPresenter::setPresentation ( JobViewFlags::EActivities  activity)

Definition at line 52 of file JobResultsPresenter.cpp.

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 }
void setPresentation(const QString &presentationType) override
Sets stack to show widget corresponding to given presentation.
QString defaultPresentationOfInstrument(InstrumentItem *instrumentItem)

References SessionItemWidget::currentItem(), defaultPresentationOfInstrument(), fitPresentationOfInstrument(), JobViewFlags::FITTING_ACTIVITY, JobItem::instrumentItem(), JobViewFlags::JOB_VIEW_ACTIVITY, JobViewFlags::REAL_TIME_ACTIVITY, and setPresentation().

Here is the call graph for this function:

◆ setSizeToCurrentWidget()

void ItemComboWidget::setSizeToCurrentWidget ( )
privateinherited

Resizes QStackedWidget to currently active page.

Definition at line 126 of file ItemComboWidget.cpp.

127 {
128  for (int i = 0; i < m_stackedWidget->count(); ++i) {
129  // determine the vertical size policy
130  QSizePolicy::Policy policy = QSizePolicy::Ignored;
131  if (i == m_stackedWidget->currentIndex())
132  policy = QSizePolicy::Expanding;
133 
134  // update the size policy
135  auto page = m_stackedWidget->widget(i);
136  page->setSizePolicy(policy, policy);
137  }
138 }
QStackedWidget * m_stackedWidget

References ItemComboWidget::m_stackedWidget.

Referenced by ItemComboWidget::setPresentation().

◆ setToolBarVisible()

void ItemComboWidget::setToolBarVisible ( bool  value)
inherited

Definition at line 76 of file ItemComboWidget.cpp.

77 {
78  m_toolBar->setVisible(value);
79 }

References ItemComboWidget::m_toolBar.

Referenced by DetectorPresenter::DetectorPresenter(), and InstrumentPresenter::InstrumentPresenter().

◆ showEvent()

void SessionItemWidget::showEvent ( QShowEvent *  )
protectedvirtualinherited

Definition at line 51 of file SessionItemWidget.cpp.

52 {
54 }

References SessionItemWidget::m_itemController, and SessionItemController::subscribe().

Here is the call graph for this function:

◆ subscribeToItem()

void ItemComboWidget::subscribeToItem ( )
protectedvirtualinherited

Reimplemented from SessionItemWidget.

Definition at line 112 of file ItemComboWidget.cpp.

113 {
117 }
void setPresentationList(const QStringList &presentationList, const QStringList &activeList={})
virtual QStringList activePresentationList(SessionItem *item)
Returns list of active presentations for given item.
virtual QStringList presentationList(SessionItem *item)
Returns full list of presentations available for given item.
virtual QString itemPresentation() const
Presentation which should be shown for current item.

References ItemComboWidget::activePresentationList(), SessionItemWidget::currentItem(), ItemComboWidget::itemPresentation(), ItemComboWidget::m_toolBar, ItemComboWidget::presentationList(), ItemComboWidget::setPresentation(), and ItemComboToolBar::setPresentationList().

Here is the call graph for this function:

◆ unsubscribeFromItem()

Member Data Documentation

◆ m_itemController

◆ m_presentationTypeToWidget

QMap<QString, SessionItemWidget*> ItemComboWidget::m_presentationTypeToWidget
privateinherited

Definition at line 68 of file ItemComboWidget.h.

Referenced by ItemComboWidget::setPresentation().

◆ m_stackedWidget

QStackedWidget* ItemComboWidget::m_stackedWidget
privateinherited

◆ m_toolBar

◆ m_widgetFactory

IFactory<QString, SessionItemWidget> ItemComboWidget::m_widgetFactory
privateinherited

The documentation for this class was generated from the following files: