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

The IntensityDataCanvas class represents IntensityDataItem as color map, provides standard actions (reset view, save as) for external toolbars and context menus. More...

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

Public Slots

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

Public Member Functions

 IntensityDataCanvas (QWidget *parent=0)
 
QList< QAction * > actionList ()
 
SessionItemcurrentItem ()
 
const SessionItemcurrentItem () const
 
QSize minimumSizeHint () const
 
void setItem (SessionItem *intensityItem)
 
QSize sizeHint () const
 

Protected Member Functions

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

Private Member Functions

void applyPersistentSettings ()
 Apply persistent settings (gradient, interpolation) to IntensityDataItem. More...
 
void initActions ()
 
IntensityDataItemintensityDataItem ()
 
void onPropertyChanged (const QString &name)
 Reads gradient/ interpolation settings from IntensityDataItem and writes to persistant project settings. More...
 

Private Attributes

ColorMapCanvasm_colorMap
 
SessionItemControllerm_itemController
 
QAction * m_resetViewAction
 
QAction * m_savePlotAction
 

Detailed Description

The IntensityDataCanvas class represents IntensityDataItem as color map, provides standard actions (reset view, save as) for external toolbars and context menus.

Definition at line 30 of file IntensityDataCanvas.h.

Constructor & Destructor Documentation

◆ IntensityDataCanvas()

IntensityDataCanvas::IntensityDataCanvas ( QWidget *  parent = 0)
explicit

Definition at line 45 of file IntensityDataCanvas.cpp.

46  : SessionItemWidget(parent)
48  , m_resetViewAction(nullptr)
49  , m_savePlotAction(nullptr)
50 {
51  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
52 
53  auto layout = new QVBoxLayout;
54  layout->setMargin(0);
55  layout->setSpacing(0);
56  layout->addWidget(m_colorMap);
57  setLayout(layout);
58 
60 
61  initActions();
62 
63  connect(m_colorMap->customPlot(), &QCustomPlot::mousePress, this,
64  &IntensityDataCanvas::onMousePress, Qt::UniqueConnection);
65 }
The ColorMapCanvas class contains ColorMap for intensity data presentation, and provide control of fo...
void setStatusLabelEnabled(bool flag)
QCustomPlot * customPlot()
void onMousePress(QMouseEvent *event)
ColorMapCanvas * m_colorMap
SessionItemWidget(QWidget *parent=0)

References ColorMapCanvas::customPlot(), initActions(), m_colorMap, onMousePress(), and ColorMapCanvas::setStatusLabelEnabled().

Here is the call graph for this function:

Member Function Documentation

◆ actionList()

QList< QAction * > IntensityDataCanvas::actionList ( )
virtual

Reimplemented from SessionItemWidget.

Definition at line 85 of file IntensityDataCanvas.cpp.

86 {
87  return QList<QAction*>() << m_resetViewAction << m_savePlotAction;
88 }

References m_resetViewAction, and m_savePlotAction.

Referenced by IntensityDataWidget::actionList().

◆ applyPersistentSettings()

void IntensityDataCanvas::applyPersistentSettings ( )
private

Apply persistent settings (gradient, interpolation) to IntensityDataItem.

Definition at line 153 of file IntensityDataCanvas.cpp.

154 {
155  QSettings settings;
156 
157  if (settings.contains(gradient_setting_name())) {
158  ComboProperty combo =
160  QString persistentGradient = settings.value(gradient_setting_name()).toString();
161  if (combo.getValue() != persistentGradient) {
162  combo.setValue(settings.value(gradient_setting_name()).toString());
164  }
165  }
166 
167  if (settings.contains(interpolation_setting_name())) {
168  bool value = settings.value(interpolation_setting_name()).toBool();
170  }
171 }
Custom property to define list of string values with multiple selections.
Definition: ComboProperty.h:25
QVariant variant() const
Constructs variant enclosing given ComboProperty.
void setValue(const QString &name)
QString getValue() const
IntensityDataItem * intensityDataItem()
static const QString P_GRADIENT
static const QString P_IS_INTERPOLATED
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.
std::string toString(PyObject *obj)
Converts PyObject into string, if possible, or throws exception.
Definition: PyUtils.cpp:24

References SessionItem::getItemValue(), ComboProperty::getValue(), intensityDataItem(), IntensityDataItem::P_GRADIENT, IntensityDataItem::P_IS_INTERPOLATED, SessionItem::setItemValue(), ComboProperty::setValue(), PyUtils::toString(), and ComboProperty::variant().

Referenced by setItem().

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(), 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(), 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:

◆ 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 IntensityDataCanvas::initActions ( )
private

Definition at line 121 of file IntensityDataCanvas.cpp.

122 {
123  m_resetViewAction = new QAction(this);
124  m_resetViewAction->setText("Center view");
125  m_resetViewAction->setIcon(QIcon(":/images/camera-metering-center.svg"));
126  m_resetViewAction->setToolTip("Reset view\n"
127  "x,y,z axes range will be set to default");
128  connect(m_resetViewAction, &QAction::triggered, this, &IntensityDataCanvas::onResetViewAction);
129 
130  m_savePlotAction = new QAction(this);
131  m_savePlotAction->setText("Save");
132  m_savePlotAction->setIcon(QIcon(":/images/content-save-outline.svg"));
133  m_savePlotAction->setToolTip("Save plot");
134  connect(m_savePlotAction, &QAction::triggered, this, &IntensityDataCanvas::onSavePlotAction);
135 }

References m_resetViewAction, m_savePlotAction, onResetViewAction(), and onSavePlotAction().

Referenced by IntensityDataCanvas().

Here is the call graph for this function:

◆ intensityDataItem()

IntensityDataItem * IntensityDataCanvas::intensityDataItem ( )
private

Definition at line 114 of file IntensityDataCanvas.cpp.

115 {
116  IntensityDataItem* result = dynamic_cast<IntensityDataItem*>(currentItem());
117  ASSERT(result);
118  return result;
119 }
#define ASSERT(condition)
Definition: Assert.h:31

References ASSERT, and SessionItemWidget::currentItem().

Referenced by applyPersistentSettings(), onPropertyChanged(), onResetViewAction(), onSavePlotAction(), setItem(), and subscribeToItem().

Here is the call graph for this function:

◆ minimumSizeHint()

QSize IntensityDataCanvas::minimumSizeHint ( ) const

Definition at line 80 of file IntensityDataCanvas.cpp.

81 {
82  return QSize(128, 128);
83 }

◆ onMousePress

void IntensityDataCanvas::onMousePress ( QMouseEvent *  event)
slot

Definition at line 102 of file IntensityDataCanvas.cpp.

103 {
104  if (event->button() == Qt::RightButton)
105  emit customContextMenuRequested(event->globalPos());
106 }

Referenced by IntensityDataCanvas().

◆ onPropertyChanged()

void IntensityDataCanvas::onPropertyChanged ( const QString &  name)
private

Reads gradient/ interpolation settings from IntensityDataItem and writes to persistant project settings.

Definition at line 140 of file IntensityDataCanvas.cpp.

141 {
143  QSettings settings;
144  settings.setValue(gradient_setting_name(), intensityDataItem()->getGradient());
146  QSettings settings;
147  settings.setValue(interpolation_setting_name(), intensityDataItem()->isInterpolated());
148  }
149 }
QCPColorGradient getGradient(const QString &gradientName)
QString const & name(EShape k)
Definition: particles.cpp:21

References ColorMapUtils::getGradient(), intensityDataItem(), RealSpace::Particles::name(), IntensityDataItem::P_GRADIENT, and IntensityDataItem::P_IS_INTERPOLATED.

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ onResetViewAction

void IntensityDataCanvas::onResetViewAction ( )
slot

Definition at line 90 of file IntensityDataCanvas.cpp.

91 {
93 }
void resetView()
Set axes viewport to original data.

References intensityDataItem(), and IntensityDataItem::resetView().

Referenced by initActions().

Here is the call graph for this function:

◆ onSavePlotAction

void IntensityDataCanvas::onSavePlotAction ( )
slot

Definition at line 95 of file IntensityDataCanvas.cpp.

96 {
97  QString dirname = AppSvc::projectManager()->userExportDir();
98  SavePlotAssistant saveAssistant;
99  saveAssistant.savePlot(dirname, m_colorMap->customPlot(), intensityDataItem()->getOutputData());
100 }
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 ColorMapCanvas::customPlot(), intensityDataItem(), m_colorMap, AppSvc::projectManager(), SavePlotAssistant::savePlot(), and ProjectManager::userExportDir().

Referenced by initActions().

Here is the call graph for this function:

◆ setItem()

void IntensityDataCanvas::setItem ( SessionItem intensityItem)
virtual

Reimplemented from SessionItemWidget.

Definition at line 67 of file IntensityDataCanvas.cpp.

68 {
69  SessionItemWidget::setItem(intensityItem);
71 
73 }
void setItem(SessionItem *intensityDataItem)
void applyPersistentSettings()
Apply persistent settings (gradient, interpolation) to IntensityDataItem.
virtual void setItem(SessionItem *item)

References applyPersistentSettings(), intensityDataItem(), m_colorMap, ColorMapCanvas::setItem(), and SessionItemWidget::setItem().

Referenced by IntensityDataWidget::onFFTAction(), and IntensityDataWidget::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 IntensityDataCanvas::sizeHint ( ) const

Definition at line 75 of file IntensityDataCanvas.cpp.

76 {
77  return QSize(500, 400);
78 }

◆ subscribeToItem()

void IntensityDataCanvas::subscribeToItem ( )
protectedvirtual

Reimplemented from SessionItemWidget.

Definition at line 108 of file IntensityDataCanvas.cpp.

109 {
111  [this](const QString& name) { onPropertyChanged(name); }, this);
112 }
void onPropertyChanged(const QString &name)
Reads gradient/ interpolation settings from IntensityDataItem and writes to persistant project settin...
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.

References intensityDataItem(), SessionItem::mapper(), RealSpace::Particles::name(), onPropertyChanged(), and ModelMapper::setOnPropertyChange().

Here is the call graph for this function:

◆ unsubscribeFromItem()

Member Data Documentation

◆ m_colorMap

ColorMapCanvas* IntensityDataCanvas::m_colorMap
private

Definition at line 56 of file IntensityDataCanvas.h.

Referenced by IntensityDataCanvas(), onSavePlotAction(), and setItem().

◆ m_itemController

◆ m_resetViewAction

QAction* IntensityDataCanvas::m_resetViewAction
private

Definition at line 57 of file IntensityDataCanvas.h.

Referenced by actionList(), and initActions().

◆ m_savePlotAction

QAction* IntensityDataCanvas::m_savePlotAction
private

Definition at line 58 of file IntensityDataCanvas.h.

Referenced by actionList(), and initActions().


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