BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SpecularDataCanvas Class Reference
Inheritance diagram for SpecularDataCanvas:
[legend]
Collaboration diagram for SpecularDataCanvas:
[legend]

Public Slots

void onMousePress (QMouseEvent *event)
 
void onResetViewAction ()
 
void onSavePlotAction ()
 

Public Member Functions

 SpecularDataCanvas (QWidget *parent=nullptr)
 
QList< QAction * > actionList () override
 
SessionItemcurrentItem ()
 
const SessionItemcurrentItem () const
 
QCustomPlot * customPlot ()
 
void enableDeprecatedOnMousePress (bool b)
 Enable or disable the onMousePress() handler. More...
 
QSize minimumSizeHint () const override
 
void setItem (SessionItem *intensityItem) override
 
QSize sizeHint () const override
 

Protected Member Functions

virtual void hideEvent (QHideEvent *)
 
virtual void showEvent (QShowEvent *)
 
virtual void subscribeToItem ()
 
virtual void unsubscribeFromItem ()
 

Private Member Functions

void initActions ()
 
SpecularDataItemspecularDataItem ()
 

Private Attributes

SessionItemControllerm_itemController
 
SpecularPlotCanvasm_plot_canvas
 
QAction * m_reset_view_action
 
QAction * m_save_plot_action
 

Detailed Description

Definition at line 25 of file SpecularDataCanvas.h.

Constructor & Destructor Documentation

◆ SpecularDataCanvas()

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

Definition at line 24 of file SpecularDataCanvas.cpp.

25  : SessionItemWidget(parent)
27  , m_reset_view_action(nullptr)
28  , m_save_plot_action(nullptr)
29 
30 {
31  QVBoxLayout* vlayout = new QVBoxLayout(this);
32  vlayout->setSpacing(0);
33  vlayout->setContentsMargins(0, 0, 0, 0);
34  vlayout->addWidget(m_plot_canvas);
35  setLayout(vlayout);
36  setStyleSheet("background-color:white;");
37 
38  initActions();
39 
41 
42  enableDeprecatedOnMousePress(true); // true for legacy reasons
43 }
SessionItemWidget(QWidget *parent=0)
SpecularPlotCanvas * m_plot_canvas
void enableDeprecatedOnMousePress(bool b)
Enable or disable the onMousePress() handler.
The SpecularPlotCanvas class contains SpecularPlot for specular data presentation,...
void setStatusLabelEnabled(bool flag)

References enableDeprecatedOnMousePress(), initActions(), m_plot_canvas, and SpecularPlotCanvas::setStatusLabelEnabled().

Here is the call graph for this function:

Member Function Documentation

◆ actionList()

QList< QAction * > SpecularDataCanvas::actionList ( )
overridevirtual

Reimplemented from SessionItemWidget.

Definition at line 61 of file SpecularDataCanvas.cpp.

62 {
63  return QList<QAction*>() << m_reset_view_action << m_save_plot_action;
64 }

References m_reset_view_action, and m_save_plot_action.

Referenced by SpecularDataWidget::actionList().

◆ 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(), JobResultsPresenter::itemPresentation(), FitComparisonWidget::jobItem(), FitComparisonWidget1D::jobItem(), FitParameterWidget::jobItem(), RunFitControlWidget::jobItem(), JobPropertiesWidget::jobItem(), ParameterTuningWidget::jobItem(), SpecularDataImportWidget::realDataItem(), ItemComboWidget::setPresentation(), JobResultsPresenter::setPresentation(), 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:

◆ customPlot()

QCustomPlot * SpecularDataCanvas::customPlot ( )

Definition at line 66 of file SpecularDataCanvas.cpp.

67 {
68  return m_plot_canvas->customPlot();
69 }
QCustomPlot * customPlot()

References SpecularPlotCanvas::customPlot(), and m_plot_canvas.

Here is the call graph for this function:

◆ enableDeprecatedOnMousePress()

void SpecularDataCanvas::enableDeprecatedOnMousePress ( bool  b)

Enable or disable the onMousePress() handler.

For legacy reasons the onMousePress handler is enabled. It is deprecated because of:

  • mousepress is the wrong event to listen to for opening a context menu
  • disables possibility to get context menu events for specific parts of the plot (e.g. context menu for axis configuration)

Definition at line 71 of file SpecularDataCanvas.cpp.

72 {
73  if (b)
74  connect(m_plot_canvas->customPlot(), &QCustomPlot::mousePress, this,
75  &SpecularDataCanvas::onMousePress, Qt::UniqueConnection);
76  else
77  disconnect(m_plot_canvas->customPlot(), &QCustomPlot::mousePress, this,
79 }
void onMousePress(QMouseEvent *event)

References SpecularPlotCanvas::customPlot(), m_plot_canvas, and onMousePress().

Referenced by SpecularDataCanvas().

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:

◆ initActions()

void SpecularDataCanvas::initActions ( )
private

Definition at line 108 of file SpecularDataCanvas.cpp.

109 {
110  m_reset_view_action = new QAction(this);
111  m_reset_view_action->setText("Center view");
112  m_reset_view_action->setIcon(QIcon(":/images/camera-metering-center.svg"));
113  m_reset_view_action->setToolTip("Center view\n"
114  "x,y axes range will be set to default");
115  connect(m_reset_view_action, &QAction::triggered, this, &SpecularDataCanvas::onResetViewAction);
116 
117  m_save_plot_action = new QAction(this);
118  m_save_plot_action->setText("Save");
119  m_save_plot_action->setIcon(QIcon(":/images/content-save-outline.svg"));
120  m_save_plot_action->setToolTip("Save plot");
121  connect(m_save_plot_action, &QAction::triggered, this, &SpecularDataCanvas::onSavePlotAction);
122 }

References m_reset_view_action, m_save_plot_action, onResetViewAction(), and onSavePlotAction().

Referenced by SpecularDataCanvas().

Here is the call graph for this function:

◆ minimumSizeHint()

QSize SpecularDataCanvas::minimumSizeHint ( ) const
override

Definition at line 56 of file SpecularDataCanvas.cpp.

57 {
58  return QSize(128, 128);
59 }

◆ onMousePress

void SpecularDataCanvas::onMousePress ( QMouseEvent *  event)
slot

Definition at line 94 of file SpecularDataCanvas.cpp.

95 {
96  if (event->button() == Qt::RightButton)
97  emit customContextMenuRequested(event->globalPos());
98 }

Referenced by enableDeprecatedOnMousePress().

◆ onResetViewAction

void SpecularDataCanvas::onResetViewAction ( )
slot

Definition at line 81 of file SpecularDataCanvas.cpp.

82 {
84 }
SpecularDataItem * specularDataItem()
void resetView()
Set axes viewport to original data.

References SpecularDataItem::resetView(), and specularDataItem().

Referenced by initActions().

Here is the call graph for this function:

◆ onSavePlotAction

void SpecularDataCanvas::onSavePlotAction ( )
slot

Definition at line 86 of file SpecularDataCanvas.cpp.

87 {
88  QString dirname = AppSvc::projectManager()->userExportDir();
89  SavePlotAssistant saveAssistant;
90  saveAssistant.savePlot(dirname, m_plot_canvas->customPlot(),
91  specularDataItem()->getOutputData());
92 }
static ProjectManager * projectManager()
Definition: AppSvc.cpp:18
QString userExportDir() const
Returns directory name suitable for saving plots.
Assistant class which contains all logic for saving IntensityData to various formats from IntensityDa...
void savePlot(const QString &dirname, QCustomPlot *plot, OutputData< double > *output_data)

References SpecularPlotCanvas::customPlot(), m_plot_canvas, AppSvc::projectManager(), SavePlotAssistant::savePlot(), specularDataItem(), and ProjectManager::userExportDir().

Referenced by initActions().

Here is the call graph for this function:

◆ setItem()

void SpecularDataCanvas::setItem ( SessionItem intensityItem)
overridevirtual

Reimplemented from SessionItemWidget.

Definition at line 45 of file SpecularDataCanvas.cpp.

46 {
47  SessionItemWidget::setItem(intensityItem);
48  m_plot_canvas->setItem(intensityItem);
49 }
virtual void setItem(SessionItem *item)
void setItem(SessionItem *specularDataItem) override

References m_plot_canvas, SessionItemWidget::setItem(), and SpecularPlotCanvas::setItem().

Referenced by SpecularDataWidget::setItem().

Here is the call graph for this function:

◆ showEvent()

void SessionItemWidget::showEvent ( QShowEvent *  )
protectedvirtualinherited

Definition at line 51 of file SessionItemWidget.cpp.

52 {
54 }
void subscribe()
Subscribe parent to item's signals.

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

Here is the call graph for this function:

◆ sizeHint()

QSize SpecularDataCanvas::sizeHint ( ) const
override

Definition at line 51 of file SpecularDataCanvas.cpp.

52 {
53  return QSize(500, 400);
54 }

◆ specularDataItem()

SpecularDataItem * SpecularDataCanvas::specularDataItem ( )
private

Definition at line 100 of file SpecularDataCanvas.cpp.

101 {
102  SpecularDataItem* result = dynamic_cast<SpecularDataItem*>(currentItem());
103  ASSERT(result);
104  return result;
105 }
#define ASSERT(condition)
Definition: Assert.h:31

References ASSERT, and SessionItemWidget::currentItem().

Referenced by onResetViewAction(), and onSavePlotAction().

Here is the call graph for this function:

◆ subscribeToItem()

◆ unsubscribeFromItem()

Member Data Documentation

◆ m_itemController

◆ m_plot_canvas

SpecularPlotCanvas* SpecularDataCanvas::m_plot_canvas
private

◆ m_reset_view_action

QAction* SpecularDataCanvas::m_reset_view_action
private

Definition at line 56 of file SpecularDataCanvas.h.

Referenced by actionList(), and initActions().

◆ m_save_plot_action

QAction* SpecularDataCanvas::m_save_plot_action
private

Definition at line 57 of file SpecularDataCanvas.h.

Referenced by actionList(), and initActions().


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