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

The RealDataItem class represents intensity data imported from file and intended for fitting. More...

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

Signals

void importContentsProcessed ()
 

Public Member Functions

 RealDataItem ()
 
QVector< QString > acceptableDefaultItemTypes () const
 Returns vector of acceptable default tag types. More...
 
bool acceptsAsDefaultItem (const QString &item_name) const
 Returns true if model type can be added to default tag. More...
 
SessionItemaddGroupProperty (const QString &groupTag, const QString &groupType)
 Creates new group item and register new tag, returns GroupItem. More...
 
template<typename T >
T * addProperty (const QString &name)
 
SessionItemaddProperty (const QString &name, const QVariant &variant)
 Add new property item and register new tag. More...
 
void addTranslator (const IPathTranslator &translator)
 
SessionItemchildAt (int row) const
 Returns the child at the given row. More...
 
QVector< SessionItem * > children () const
 Returns vector of all children. More...
 
void clearInstrumentId ()
 
DataItemdataItem ()
 
const DataItemdataItem () const
 
AbstractDataLoaderdataLoader () const
 
int decimals () const
 
QString defaultTag () const
 Get default tag. More...
 
virtual void deserializeBinaryData (const QByteArray &data) override
 
QString displayName () const
 Get display name of item, append index if ambigue. More...
 
QString editorType () const
 
void emitDataChanged (int role=Qt::DisplayRole)
 Notify model about data changes. More...
 
SessionItemgetChildOfType (const QString &type) const
 Returns the first child of the given type. More...
 
QVector< SessionItem * > getChildrenOfType (const QString &model_type) const
 Returns a vector of all children of the given type. More...
 
SessionItemgetGroupItem (const QString &groupName) const
 Access subitem of group item. More...
 
SessionItemgetItem (const QString &tag="", int row=0) const
 Returns item in given row of given tag. More...
 
QVector< SessionItem * > getItems (const QString &tag="") const
 Returns vector of all items of given tag. More...
 
QVariant getItemValue (const QString &tag) const
 Directly access value of item under given tag. More...
 
QVector< int > getRoles () const
 Returns vector of all present roles. More...
 
template<typename T >
T & groupItem (const QString &groupName) const
 
bool hasChildren () const
 Indicates whether this SessionItem has any child items. More...
 
bool hasImportErrors () const
 
bool hasNativeData () const
 
bool holdsDimensionalData () const
 
void initAsIntensityItem ()
 
void initAsSpecularItem ()
 
void initNativeData ()
 
bool insertItem (int row, SessionItem *item, const QString &tag="")
 Insert item into given tag into given row. More...
 
QString instrumentId () const
 
IntensityDataItemintensityDataItem ()
 
const IntensityDataItemintensityDataItem () const
 
template<typename T >
bool is () const
 
bool isEditable () const
 
bool isEnabled () const
 
bool isIntensityData () const
 
bool isSpecularData () const
 
bool isTag (const QString &name) const
 Returns true if tag is available. More...
 
bool isVisible () const
 
template<typename T >
T * item (const QString &tag) const
 
QString itemName () const
 Get item name, return display name if no name is set. More...
 
RealLimits limits () const
 
InstrumentItemlinkedInstrument () const
 
ModelMappermapper ()
 Returns the current model mapper of this item. Creates new one if necessary. More...
 
MaskContainerItemmaskContainerItem ()
 Returns mask container item. More...
 
SessionModelmodel () const
 Returns model of this item. More...
 
QString modelType () const
 Get model type. More...
 
QString name () const
 The name which is presented to the user. More...
 
DataItemnativeData ()
 
const DataItemnativeData () const
 
QString nativeDataUnits () const
 
QString nativeFileName () const
 
const OutputData< double > * nativeOutputData () const
 
int numberOfChildren () const
 Returns total number of children. More...
 
SessionItemparent () const
 Returns parent of this item. More...
 
bool registerTag (const QString &name, int min=0, int max=-1, QStringList modelTypes={})
 Add new tag to this item with given name, min, max and types. More...
 
void removeNativeData ()
 
QVariant roleProperty (int role) const
 Returns corresponding variant under given role, invalid variant when role is not present. More...
 
void rotateData ()
 
bool rotationAffectsSetup () const
 Returns true, if rotation will affect linked instrument or mask presence. More...
 
int rowOfChild (SessionItem *child) const
 Returns row index of given child. More...
 
virtual QByteArray serializeBinaryData () const override
 
SessionItemTagssessionItemTags ()
 
void setDataLoader (AbstractDataLoader *loader)
 Takes ownership of loader. More...
 
SessionItemsetDecimals (int n)
 
void setDefaultTag (const QString &tag)
 Set default tag. More...
 
void setDisplayName (const QString &display_name)
 Set display name. More...
 
void setEditable (bool enabled)
 
SessionItemsetEditorType (const QString &editorType)
 
void setEnabled (bool enabled)
 
SessionItemsetGroupProperty (const QString &groupTag, const QString &modelType) const
 Set the current type of group item. More...
 
void setImportData (ImportDataInfo data)
 Sets imported data to underlying item. More...
 
void setInstrumentId (const QString &id)
 
void setItemName (const QString &name)
 Set item name, add property if necessary. More...
 
void setItemValue (const QString &tag, const QVariant &variant)
 Directly set value of item under given tag. More...
 
SessionItemsetLimits (const RealLimits &value)
 
void setName (const QString &name)
 
void setNativeDataUnits (const QString &units)
 
void setNativeFileName (const QString &filename)
 The name from where the native data was originally imported. More...
 
void setNativeOutputData (OutputData< double > *data)
 takes ownership of data More...
 
void setOutputData (OutputData< double > *data)
 Sets OutputData to underlying item. Creates it if not existing. More...
 
bool setRoleProperty (int role, const QVariant &value)
 Set variant to role, create role if not present yet. More...
 
SessionItemsetToolTip (const QString &tooltip)
 
bool setValue (QVariant value)
 Set value, ensure that variant types match. More...
 
void setVisible (bool enabled)
 Flags accessors. More...
 
std::vector< int > shape () const
 Returns the shape of underlying data item. More...
 
SpecularDataItemspecularDataItem ()
 
const SpecularDataItemspecularDataItem () const
 
QString tagFromItem (const SessionItem *item) const
 Returns the tag name of given item when existing. More...
 
SessionItemtakeItem (int row, const QString &tag)
 Remove item from given row from given tag. More...
 
SessionItemtakeRow (int row)
 Removes row from item and returns the item. More...
 
QString toolTip () const
 
virtual QStringList translateList (const QStringList &list) const
 
void updateToInstrument (const InstrumentItem *instrument)
 
void updateToInstrument (const QString &id)
 
QVariant value () const
 Get value. More...
 

Static Public Attributes

static const QString P_INSTRUMENT_ID = "Instrument Id"
 
static const QString P_NAME = "Name"
 

Private Member Functions

void changeFlags (bool enabled, int flag)
 internal More...
 
void childDeleted (SessionItem *child)
 
int flags () const
 
int getCopyNumberOfChild (const SessionItem *item) const
 internal More...
 
QModelIndex index () const
 
void initDataItem (size_t data_rank, const QString &tag)
 Creates data item if not existing so far. More...
 
InstrumentModelinstrumentModel () const
 
RealDataModelrealDataModel () const
 
void setModel (SessionModel *model)
 
void setParentAndModel (SessionItem *parent, SessionModel *model)
 
void updateNonXMLDataFileNames ()
 Updates the name of file to store intensity data. More...
 

Private Attributes

QVector< SessionItem * > m_children
 
std::unique_ptr< AbstractDataLoaderm_dataLoader
 
QByteArray m_importSettings
 
std::unique_ptr< ModelMapperm_mapper
 
SessionModelm_model
 
QString m_nativeFileName
 
SessionItemm_parent
 
std::unique_ptr< SessionItemDatam_properties
 
std::unique_ptr< SessionItemTagsm_tags
 
QVector< IPathTranslator * > m_translators
 

Static Private Attributes

static const QString P_INSTRUMENT_NAME = "Instrument"
 
static const QString P_NATIVE_DATA_UNITS = "Native user data units"
 
static const QString T_INTENSITY_DATA = "Intensity data"
 
static const QString T_NATIVE_DATA = "Native user data axis"
 

Friends

class TestView
 

Detailed Description

The RealDataItem class represents intensity data imported from file and intended for fitting.

Definition at line 35 of file RealDataItem.h.

Constructor & Destructor Documentation

◆ RealDataItem()

RealDataItem::RealDataItem ( )

Definition at line 42 of file RealDataItem.cpp.

42  : SessionItem("RealData")
43 {
44  setItemName("undefined");
45 
46  // Registering this tag even without actual data item to avoid troubles in copying RealDataItem
48  QStringList() << "IntensityData"
49  << "SpecularData");
51 
52  addProperty(P_INSTRUMENT_ID, QString());
53  addProperty(P_INSTRUMENT_NAME, QString()); // #migration This is never used - remove after
54  // checking whether this breaks loading old files
55 
57  QStringList() << "IntensityData"
58  << "SpecularData");
59  addProperty(P_NATIVE_DATA_UNITS, "nbins")->setVisible(false);
60 
61  mapper()->setOnPropertyChange([this](const QString& name) {
62  if (name == P_NAME)
64  });
65 
67  if (dynamic_cast<DataItem*>(item))
69  });
70 
71  mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
72  auto data_item = dynamic_cast<DataItem*>(item);
73  if (!data_item || !linkedInstrument() || name != DataItem::P_AXES_UNITS)
74  return;
75 
76  mapper()->setActive(false);
77  data_item->updateAxesUnits(linkedInstrument());
78  mapper()->setActive(true);
79  });
80 }
Provides common functionality for IntensityDataItem and SpecularDataItem.
Definition: DataItem.h:29
static const QString P_AXES_UNITS
Definition: DataItem.h:34
void setOnChildPropertyChange(std::function< void(SessionItem *, QString)> f, const void *caller=0)
Calls back on child property change, report childItem and property name.
Definition: ModelMapper.cpp:49
void setActive(bool state)
Definition: ModelMapper.h:48
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
void setOnChildrenChange(std::function< void(SessionItem *)> f, const void *caller=0)
Calls back when number of children has changed, reports newChild.
Definition: ModelMapper.cpp:68
static const QString T_NATIVE_DATA
Definition: RealDataItem.h:47
QString name() const
The name which is presented to the user.
static const QString P_INSTRUMENT_ID
Definition: RealDataItem.h:42
static const QString P_INSTRUMENT_NAME
Definition: RealDataItem.h:46
static const QString T_INTENSITY_DATA
Definition: RealDataItem.h:45
InstrumentItem * linkedInstrument() const
void updateNonXMLDataFileNames()
Updates the name of file to store intensity data.
static const QString P_NATIVE_DATA_UNITS
Definition: RealDataItem.h:48
void setItemName(const QString &name)
Set item name, add property if necessary.
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
bool registerTag(const QString &name, int min=0, int max=-1, QStringList modelTypes={})
Add new tag to this item with given name, min, max and types.
void setVisible(bool enabled)
Flags accessors.
static const QString P_NAME
Definition: SessionItem.h:37
SessionItem(const QString &modelType="")
Constructs new item with given model type. The type must be defined.
Definition: SessionItem.cpp:28
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
void setDefaultTag(const QString &tag)
Set default tag.
T * item(const QString &tag) const
Definition: SessionItem.h:151

References SessionItem::addProperty(), SessionItem::item(), linkedInstrument(), SessionItem::mapper(), name(), DataItem::P_AXES_UNITS, P_INSTRUMENT_ID, P_INSTRUMENT_NAME, SessionItem::P_NAME, P_NATIVE_DATA_UNITS, SessionItem::registerTag(), ModelMapper::setActive(), SessionItem::setDefaultTag(), SessionItem::setItemName(), ModelMapper::setOnChildPropertyChange(), ModelMapper::setOnChildrenChange(), ModelMapper::setOnPropertyChange(), SessionItem::setVisible(), T_INTENSITY_DATA, T_NATIVE_DATA, and updateNonXMLDataFileNames().

Here is the call graph for this function:

Member Function Documentation

◆ acceptableDefaultItemTypes()

QVector< QString > SessionItem::acceptableDefaultItemTypes ( ) const
inherited

Returns vector of acceptable default tag types.

Definition at line 190 of file SessionItem.cpp.

191 {
192  return m_tags->modelTypesForTag(defaultTag()).toVector();
193 }
QString defaultTag() const
Get default tag.
std::unique_ptr< SessionItemTags > m_tags
Definition: SessionItem.h:146

References SessionItem::defaultTag(), and SessionItem::m_tags.

Here is the call graph for this function:

◆ acceptsAsDefaultItem()

bool SessionItem::acceptsAsDefaultItem ( const QString &  item_name) const
inherited

Returns true if model type can be added to default tag.

Definition at line 183 of file SessionItem.cpp.

184 {
185  return m_tags->isValid(defaultTag(), item_name);
186 }

References SessionItem::defaultTag(), and SessionItem::m_tags.

Here is the call graph for this function:

◆ addGroupProperty()

SessionItem * SessionItem::addGroupProperty ( const QString &  groupTag,
const QString &  groupType 
)
inherited

Creates new group item and register new tag, returns GroupItem.

Definition at line 311 of file SessionItem.cpp.

312 {
313  SessionItem* result(0);
314 
315  if (SessionItemUtils::IsValidGroup(groupType)) {
316  // create group item
317  GroupInfo groupInfo = SessionItemUtils::GetGroupInfo(groupType);
318  GroupItem* groupItem = dynamic_cast<GroupItem*>(ItemFactory::CreateItem("GroupProperty"));
319  ASSERT(groupItem);
320  groupItem->setGroupInfo(groupInfo);
321  registerTag(groupTag, 1, 1, QStringList() << "GroupProperty");
322  result = groupItem;
323  } else {
324  // # migration Remove this branch at any convenient occasion. It is not used anymore.
325  // # migration Suggestion is to throw if not SessionItemUtils::IsValidGroup(groupType)
326  qWarning() << "SessionItem::addGroupProperty() is obsolete for single property items. Use "
327  "::addProperty<> instead.";
328  // create single item
329  registerTag(groupTag, 1, 1, QStringList() << groupType);
330  result = ItemFactory::CreateItem(groupType);
331  }
332  ASSERT(result);
333  result->setDisplayName(groupTag);
334  bool success = insertItem(0, result, groupTag);
335  ASSERT(success);
336  return result;
337 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines info for GroupProperty, i.e.
Definition: GroupInfo.h:25
T & groupItem(const QString &groupName) const
Definition: SessionItem.h:168
bool insertItem(int row, SessionItem *item, const QString &tag="")
Insert item into given tag into given row.
SessionItem * CreateItem(const QString &model_name, SessionItem *parent=nullptr)
create SessionItem of specific type and parent
Definition: ItemFactory.cpp:30
bool IsValidGroup(const QString &group_type)
Returns true if there is registered group.
GroupInfo GetGroupInfo(const QString &group_type)
Returns GroupInfo for group property construction.

References ASSERT, ItemFactory::CreateItem(), SessionItemUtils::GetGroupInfo(), SessionItem::groupItem(), SessionItem::insertItem(), SessionItemUtils::IsValidGroup(), SessionItem::registerTag(), and SessionItem::setDisplayName().

Referenced by Instrument2DItem::Instrument2DItem(), InterferenceFunction1DLatticeItem::InterferenceFunction1DLatticeItem(), InterferenceFunction2DLatticeItem::InterferenceFunction2DLatticeItem(), InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem(), InterferenceFunctionFinite2DLatticeItem::InterferenceFunctionFinite2DLatticeItem(), InterferenceFunctionRadialParaCrystalItem::InterferenceFunctionRadialParaCrystalItem(), LayerItem::LayerItem(), MaterialItem::MaterialItem(), MesoCrystalItem::MesoCrystalItem(), MinimizerContainerItem::MinimizerContainerItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleItem::ParticleItem(), SpecularBeamItem::SpecularBeamItem(), TransformationItem::TransformationItem(), InstrumentItem::initBackgroundGroup(), BeamDistributionItem::register_distribution_group(), DistributionItem::register_limits(), DetectorItem::register_resolution_function(), and SpecularBeamInclinationItem::setupAxisGroup().

Here is the call graph for this function:

◆ addProperty() [1/2]

template<typename T >
T * SessionItem::addProperty ( const QString &  name)
inherited

Definition at line 158 of file SessionItem.h.

159 {
160  auto property = new T;
161  property->setDisplayName(tagname);
162  registerTag(tagname, 1, 1, QStringList() << property->modelType());
163  bool success = insertItem(0, property, tagname);
164  ASSERT(success);
165  return property;
166 }

References ASSERT, SessionItem::insertItem(), SessionItem::registerTag(), and SessionItem::setDisplayName().

Here is the call graph for this function:

◆ addProperty() [2/2]

SessionItem * SessionItem::addProperty ( const QString &  name,
const QVariant &  variant 
)
inherited

Add new property item and register new tag.

Definition at line 279 of file SessionItem.cpp.

280 {
281  ASSERT(!isTag(name));
282 
283  SessionItem* property = ItemFactory::CreateItem("Property");
284  property->setDisplayName(name);
285  registerTag(name, 1, 1, QStringList() << "Property");
286  bool success = insertItem(0, property, name);
287  ASSERT(success);
288 
289  property->setValue(variant);
290  return property;
291 }
bool isTag(const QString &name) const
Returns true if tag is available.
QString const & name(EShape k)
Definition: particles.cpp:21

References ASSERT, ItemFactory::CreateItem(), SessionItem::insertItem(), SessionItem::isTag(), RealSpace::Particles::name(), and SessionItem::registerTag().

Referenced by AmplitudeAxisItem::AmplitudeAxisItem(), AnisoPyramidItem::AnisoPyramidItem(), BarGaussItem::BarGaussItem(), BarLorentzItem::BarLorentzItem(), BasicLattice2DItem::BasicLattice2DItem(), BeamItem::BeamItem(), BoxItem::BoxItem(), Cone6Item::Cone6Item(), ConeItem::ConeItem(), ConstantBackgroundItem::ConstantBackgroundItem(), CosineRippleBoxItem::CosineRippleBoxItem(), CosineRippleGaussItem::CosineRippleGaussItem(), CosineRippleLorentzItem::CosineRippleLorentzItem(), CuboctahedronItem::CuboctahedronItem(), CylinderItem::CylinderItem(), Data1DProperties::Data1DProperties(), Data1DViewItem::Data1DViewItem(), DataItem::DataItem(), DataProperties::DataProperties(), DetectorItem::DetectorItem(), DistributionCosineItem::DistributionCosineItem(), DistributionGateItem::DistributionGateItem(), DistributionGaussianItem::DistributionGaussianItem(), DistributionItem::DistributionItem(), DistributionLogNormalItem::DistributionLogNormalItem(), DistributionLorentzItem::DistributionLorentzItem(), DistributionNoneItem::DistributionNoneItem(), DistributionTrapezoidItem::DistributionTrapezoidItem(), DodecahedronItem::DodecahedronItem(), DotItem::DotItem(), EllipseItem::EllipseItem(), EllipsoidalCylinderItem::EllipsoidalCylinderItem(), EulerRotationItem::EulerRotationItem(), FitParameterItem::FitParameterItem(), FitParameterLinkItem::FitParameterLinkItem(), FitSuiteItem::FitSuiteItem(), FootprintGaussianItem::FootprintGaussianItem(), FootprintSquareItem::FootprintSquareItem(), FTDecayFunction1DVoigtItem::FTDecayFunction1DVoigtItem(), FTDecayFunction2DVoigtItem::FTDecayFunction2DVoigtItem(), FTDistribution1DVoigtItem::FTDistribution1DVoigtItem(), FTDistribution2DVoigtItem::FTDistribution2DVoigtItem(), FullSphereItem::FullSphereItem(), FullSpheroidItem::FullSpheroidItem(), GeneticMinimizerItem::GeneticMinimizerItem(), GSLLMAMinimizerItem::GSLLMAMinimizerItem(), GSLMultiMinimizerItem::GSLMultiMinimizerItem(), HemiEllipsoidItem::HemiEllipsoidItem(), HexagonalLattice2DItem::HexagonalLattice2DItem(), HorizontalLineItem::HorizontalLineItem(), IcosahedronItem::IcosahedronItem(), InstrumentItem::InstrumentItem(), IntensityDataItem::IntensityDataItem(), InterferenceFunction1DLatticeItem::InterferenceFunction1DLatticeItem(), InterferenceFunction2DLatticeItem::InterferenceFunction2DLatticeItem(), InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem(), InterferenceFunctionFinite2DLatticeItem::InterferenceFunctionFinite2DLatticeItem(), InterferenceFunctionHardDiskItem::InterferenceFunctionHardDiskItem(), InterferenceFunctionItem::InterferenceFunctionItem(), InterferenceFunctionRadialParaCrystalItem::InterferenceFunctionRadialParaCrystalItem(), JobItem::JobItem(), LayerBasicRoughnessItem::LayerBasicRoughnessItem(), LayerItem::LayerItem(), LimitedItem::LimitedItem(), LowerLimitedItem::LowerLimitedItem(), MaskItem::MaskItem(), MaterialItem::MaterialItem(), MaterialRefractiveDataItem::MaterialRefractiveDataItem(), MaterialSLDDataItem::MaterialSLDDataItem(), MesoCrystalItem::MesoCrystalItem(), MinimizerContainerItem::MinimizerContainerItem(), MinuitMinimizerItem::MinuitMinimizerItem(), MultiLayerItem::MultiLayerItem(), ParameterItem::ParameterItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleItem::ParticleItem(), ParticleLayoutItem::ParticleLayoutItem(), PointwiseAxisItem::PointwiseAxisItem(), PolygonItem::PolygonItem(), PolygonPointItem::PolygonPointItem(), Prism3Item::Prism3Item(), Prism6Item::Prism6Item(), PyramidItem::PyramidItem(), RealDataItem(), RectangleItem::RectangleItem(), RectangularDetectorItem::RectangularDetectorItem(), ResolutionFunction2DGaussianItem::ResolutionFunction2DGaussianItem(), SawtoothRippleBoxItem::SawtoothRippleBoxItem(), SawtoothRippleGaussItem::SawtoothRippleGaussItem(), SawtoothRippleLorentzItem::SawtoothRippleLorentzItem(), SessionGraphicsItem::SessionGraphicsItem(), SimAnMinimizerItem::SimAnMinimizerItem(), SimulationOptionsItem::SimulationOptionsItem(), SpecularDataItem::SpecularDataItem(), SquareLattice2DItem::SquareLattice2DItem(), TetrahedronItem::TetrahedronItem(), TruncatedCubeItem::TruncatedCubeItem(), TruncatedSphereItem::TruncatedSphereItem(), TruncatedSpheroidItem::TruncatedSpheroidItem(), UpperLimitedItem::UpperLimitedItem(), VectorItem::VectorItem(), VerticalLineItem::VerticalLineItem(), XRotationItem::XRotationItem(), YRotationItem::YRotationItem(), ZRotationItem::ZRotationItem(), FTDecayFunction1DItem::add_decay_property(), FTDecayFunction2DItem::add_decay_property(), FTDistribution2DItem::add_gamma_property(), FTDecayFunction2DItem::add_gammadelta_property(), FTDistribution2DItem::add_omega_properties(), FTDistribution1DItem::add_omega_property(), BasicAxisItem::register_basic_properties(), DistributionItem::register_number_of_samples(), DistributionItem::register_sigma_factor(), and SessionItem::setItemName().

Here is the call graph for this function:

◆ addTranslator()

void SessionItem::addTranslator ( const IPathTranslator translator)
inherited

Definition at line 566 of file SessionItem.cpp.

567 {
568  m_translators.push_back(translator.clone());
569 }
virtual IPathTranslator * clone() const =0
QVector< IPathTranslator * > m_translators
Definition: SessionItem.h:148

References IPathTranslator::clone(), and SessionItem::m_translators.

Referenced by BeamDistributionItem::BeamDistributionItem(), BeamItem::BeamItem(), DetectorItem::DetectorItem(), MesoCrystalItem::MesoCrystalItem(), MultiLayerItem::MultiLayerItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), and ParticleItem::ParticleItem().

Here is the call graph for this function:

◆ changeFlags()

void SessionItem::changeFlags ( bool  enabled,
int  flag 
)
privateinherited

internal

Definition at line 613 of file SessionItem.cpp.

614 {
615  int flags = this->flags();
616  if (enabled)
617  flags |= flag;
618  else
619  flags &= ~flag;
620 
622 }
int flags() const
bool setRoleProperty(int role, const QVariant &value)
Set variant to role, create role if not present yet.

References SessionFlags::FlagRole, SessionItem::flags(), and SessionItem::setRoleProperty().

Referenced by SessionItem::setEditable(), SessionItem::setEnabled(), and SessionItem::setVisible().

Here is the call graph for this function:

◆ childAt()

SessionItem * SessionItem::childAt ( int  row) const
inherited

Returns the child at the given row.

Definition at line 108 of file SessionItem.cpp.

109 {
110  return m_children.value(row, nullptr);
111 }
QVector< SessionItem * > m_children
Definition: SessionItem.h:144

References SessionItem::m_children.

Referenced by ModelPath::getIndexFromPath(), SessionModel::index(), FitParameterProxyModel::index(), and SessionItem::takeRow().

◆ childDeleted()

void SessionItem::childDeleted ( SessionItem child)
privateinherited

Definition at line 578 of file SessionItem.cpp.

579 {
580  int index = rowOfChild(child);
581  ASSERT(index != -1);
582  m_children.replace(index, nullptr);
583 }
int rowOfChild(SessionItem *child) const
Returns row index of given child.
QModelIndex index() const
Returns model index of this item.
Definition: SessionItem.cpp:80

References ASSERT, SessionItem::index(), SessionItem::m_children, and SessionItem::rowOfChild().

Referenced by SessionItem::~SessionItem().

Here is the call graph for this function:

◆ children()

◆ clearInstrumentId()

void RealDataItem::clearInstrumentId ( )

Definition at line 258 of file RealDataItem.cpp.

259 {
260  setItemValue(P_INSTRUMENT_ID, QString());
261 }
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References P_INSTRUMENT_ID, and SessionItem::setItemValue().

Referenced by SpecularDataImportWidget::onPropertiesChanged(), and rotateData().

Here is the call graph for this function:

◆ dataItem() [1/2]

DataItem * RealDataItem::dataItem ( )

Definition at line 112 of file RealDataItem.cpp.

113 {
114  return const_cast<DataItem*>(static_cast<const RealDataItem*>(this)->dataItem());
115 }
The RealDataItem class represents intensity data imported from file and intended for fitting.
Definition: RealDataItem.h:35
DataItem * dataItem()

Referenced by JobModelFunctions::copyRealDataItem(), JobModelFunctions::initDataView(), intensityDataItem(), setImportData(), FitComparisonController2D::setItem(), setOutputData(), shape(), specularDataItem(), DiffItemController::updateDiffData(), updateNonXMLDataFileNames(), and updateToInstrument().

◆ dataItem() [2/2]

const DataItem * RealDataItem::dataItem ( ) const

Definition at line 117 of file RealDataItem.cpp.

118 {
119  return dynamic_cast<const DataItem*>(getItem(T_INTENSITY_DATA));
120 }
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.

References SessionItem::getItem(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ dataLoader()

AbstractDataLoader * RealDataItem::dataLoader ( ) const

Definition at line 382 of file RealDataItem.cpp.

383 {
384  return m_dataLoader.get();
385 }
std::unique_ptr< AbstractDataLoader > m_dataLoader
Definition: RealDataItem.h:130

References m_dataLoader.

Referenced by hasImportErrors(), SpecularDataImportWidget::onFormatSelectionChanged(), RealDataTreeModel::removeItem(), and SpecularDataImportWidget::setItem().

◆ decimals()

int SessionItem::decimals ( ) const
inherited

Definition at line 511 of file SessionItem.cpp.

512 {
513  return roleProperty(SessionFlags::DecimalRole).toInt();
514 }
QVariant roleProperty(int role) const
Returns corresponding variant under given role, invalid variant when role is not present.

References SessionFlags::DecimalRole, and SessionItem::roleProperty().

Referenced by PropertyEditorFactory::CreateEditor(), ParameterTuningDelegate::createEditor(), and ComponentTreeActions::onCustomContextMenuRequested().

Here is the call graph for this function:

◆ defaultTag()

QString SessionItem::defaultTag ( ) const
inherited

Get default tag.

Definition at line 411 of file SessionItem.cpp.

412 {
413  return roleProperty(SessionFlags::DefaultTagRole).toString();
414 }

References SessionFlags::DefaultTagRole, and SessionItem::roleProperty().

Referenced by SessionItem::acceptableDefaultItemTypes(), SessionItem::acceptsAsDefaultItem(), SessionModel::copy(), SessionItem::getItem(), SessionItem::getItems(), SessionItem::insertItem(), SessionModel::insertNewItem(), SessionModel::moveItem(), and SessionItem::takeItem().

Here is the call graph for this function:

◆ deserializeBinaryData()

void RealDataItem::deserializeBinaryData ( const QByteArray &  data)
overridevirtual

Reimplemented from SessionItem.

Definition at line 342 of file RealDataItem.cpp.

343 {
344  m_nativeFileName.clear();
345  m_importSettings.clear();
346  m_dataLoader.release();
347 
348  QDataStream s(data);
349  s.setVersion(QDataStream::Qt_5_12);
350 
351  quint8 version;
352  s >> version;
353 
354  if (version == 1) {
355  s >> m_nativeFileName;
356  QString persistentLoaderClassName;
357  s >> persistentLoaderClassName;
358  if (!persistentLoaderClassName.isEmpty()) {
360  DataLoaders1D::instance().createFromPersistentName(persistentLoaderClassName));
361  // #baUserDefLoaders ++ implement userdefined loaders (may require new version!)
362  if (!m_dataLoader)
364  s >> *m_dataLoader;
365  m_dataLoader->setRealDataItem(this);
366  }
367  } else
369 
370  if (s.status() != QDataStream::Ok)
372 }
static DataLoaders1D & instance()
The one and only instance.
static DeserializationException streamError()
static DeserializationException tooNew()
QByteArray m_importSettings
Definition: RealDataItem.h:127
void setDataLoader(AbstractDataLoader *loader)
Takes ownership of loader.
QString m_nativeFileName
Definition: RealDataItem.h:128

References DataLoaders1D::instance(), m_dataLoader, m_importSettings, m_nativeFileName, setDataLoader(), DeserializationException::streamError(), and DeserializationException::tooNew().

Here is the call graph for this function:

◆ displayName()

QString SessionItem::displayName ( ) const
inherited

Get display name of item, append index if ambigue.

Definition at line 425 of file SessionItem.cpp.

426 {
427  QString result = roleProperty(SessionFlags::DisplayNameRole).toString();
428 
429  if (modelType() == "Property" || modelType() == "GroupProperty" || modelType() == "Parameter"
430  || modelType() == "Parameter Label")
431  return result;
432 
433  if (m_parent) {
434  QString tag = m_parent->tagFromItem(this);
435  // if only one child of this type is allowed, return name without change
437  return result;
438 
439  int index = m_parent->getCopyNumberOfChild(this);
440  if (index >= 0)
441  return result + QString::number(index);
442  }
443  return result;
444 }
bool isSingleItemTag(const QString &tagName)
SessionItemTags * sessionItemTags()
int getCopyNumberOfChild(const SessionItem *item) const
internal
QString modelType() const
Get model type.
QString tagFromItem(const SessionItem *item) const
Returns the tag name of given item when existing.
SessionItem * m_parent
Definition: SessionItem.h:142

References SessionFlags::DisplayNameRole, SessionItem::getCopyNumberOfChild(), SessionItem::index(), SessionItemTags::isSingleItemTag(), SessionItem::m_parent, SessionItem::modelType(), SessionItem::roleProperty(), SessionItem::sessionItemTags(), and SessionItem::tagFromItem().

Referenced by FitParameterProxyModel::dropMimeData(), SessionItemUtils::IsPositionRelated(), SessionItem::itemName(), ParameterTreeUtils::parameterDictionary(), ParameterTreeUtils::parameterNameToLinkedItem(), DistributionWidget::plot_multiple_values(), DistributionWidget::plot_single_value(), PropertyWidgetItem::setItemEditor(), SessionItemUtils::ToolTipRole(), SessionItem::translateList(), and ConnectableView::update_appearance().

Here is the call graph for this function:

◆ editorType()

QString SessionItem::editorType ( ) const
inherited

Definition at line 533 of file SessionItem.cpp.

534 {
535  const auto variant = roleProperty(SessionFlags::CustomEditorRole);
536  return variant.isValid() ? variant.toString() : "Default";
537 }

References SessionFlags::CustomEditorRole, and SessionItem::roleProperty().

Referenced by PropertyEditorFactory::CreateEditor(), BeamDistributionItem::initDistributionItem(), ComponentTreeActions::onCustomContextMenuRequested(), SessionItem::setEditorType(), AmplitudeAxisItem::setMinMaxEditor(), and PropertyEditorFactory::toString().

Here is the call graph for this function:

◆ emitDataChanged()

void SessionItem::emitDataChanged ( int  role = Qt::DisplayRole)
inherited

Notify model about data changes.

Definition at line 379 of file SessionItem.cpp.

380 {
381  if (m_model) {
382  QModelIndex index = m_model->indexOfItem(this);
383  m_model->dataChanged(index, index.sibling(index.row(), 1), QVector<int>() << role);
384  }
385 }
SessionModel * m_model
Definition: SessionItem.h:143
QModelIndex indexOfItem(SessionItem *item) const

References SessionItem::index(), SessionModel::indexOfItem(), and SessionItem::m_model.

Referenced by GroupItem::onValueChange(), IntensityDataItem::setOutputData(), SpecularDataItem::setOutputData(), DataItem::setRawDataVector(), SessionItem::setRoleProperty(), and PointwiseAxisItem::updateIndicators().

Here is the call graph for this function:

◆ flags()

int SessionItem::flags ( ) const
privateinherited

Definition at line 602 of file SessionItem.cpp.

603 {
605 
606  if (!flags.isValid())
608 
609  return flags.toInt();
610 }

References SessionFlags::EDITABLE, SessionFlags::ENABLED, SessionFlags::FlagRole, SessionItem::roleProperty(), and SessionFlags::VISIBLE.

Referenced by SessionItem::changeFlags(), SessionItem::isEditable(), SessionItem::isEnabled(), and SessionItem::isVisible().

Here is the call graph for this function:

◆ getChildOfType()

SessionItem * SessionItem::getChildOfType ( const QString &  type) const
inherited

Returns the first child of the given type.

Definition at line 122 of file SessionItem.cpp.

123 {
124  for (auto child : m_children)
125  if (child->modelType() == type)
126  return child;
127 
128  return nullptr;
129 }

References SessionItem::m_children.

Referenced by GroupItemController::currentItem(), GroupItemController::getItemOfType(), GroupItemController::setCurrentType(), and MaskEditorCanvas::setZoomToROI().

◆ getChildrenOfType()

QVector< SessionItem * > SessionItem::getChildrenOfType ( const QString &  model_type) const
inherited

Returns a vector of all children of the given type.

Definition at line 133 of file SessionItem.cpp.

134 {
135  QVector<SessionItem*> result;
136  for (auto child : m_children)
137  if (child->modelType() == model_type)
138  result.append(child);
139 
140  return result;
141 }
std::string model_type
Definition: types.h:23

References SessionItem::m_children.

Referenced by MaskUnitsConverter::convertMask(), PolygonItem::createShape(), RoughnessTranslator::numberOfLayers(), ProjectionsPlot::projectionItems(), SaveProjectionsAssistant::projectionItems(), PolygonView::update_polygon(), and MultiLayerItem::updateLayers().

◆ getCopyNumberOfChild()

int SessionItem::getCopyNumberOfChild ( const SessionItem item) const
privateinherited

internal

Definition at line 625 of file SessionItem.cpp.

626 {
627  if (!item)
628  return -1;
629  int result = -1;
630  int count = 0;
631  QString model_type = item->modelType();
632  // check child items:
633  for (auto p_child_item : m_children) {
634  QString child_type = p_child_item->modelType();
635  if (p_child_item == item)
636  result = count;
637  if (child_type == model_type && !p_child_item->isTag(P_NAME))
638  ++count;
639  }
640  if (count > 1)
641  return result;
642  return -1;
643 }

References SessionItem::item(), SessionItem::m_children, and SessionItem::P_NAME.

Referenced by SessionItem::displayName().

Here is the call graph for this function:

◆ getGroupItem()

◆ getItem()

SessionItem * SessionItem::getItem ( const QString &  tag = "",
int  row = 0 
) const
inherited

Returns item in given row of given tag.

Definition at line 197 of file SessionItem.cpp.

198 {
199  const QString tagName = tag.isEmpty() ? defaultTag() : tag;
200 
201  if (!m_tags->isValid(tagName))
202  return nullptr;
203 
204  if (m_tags->childCount(tagName) == 0)
205  return nullptr;
206 
207  if (row < 0 || row >= m_tags->childCount(tagName))
208  return nullptr;
209 
210  int index = m_tags->indexFromTagRow(tagName, row);
211  ASSERT(index >= 0);
212  ASSERT(index < m_children.size());
213  return m_children[index];
214 }

References ASSERT, SessionItem::defaultTag(), SessionItem::index(), SessionItem::m_children, and SessionItem::m_tags.

Referenced by AmplitudeAxisItem::AmplitudeAxisItem(), BeamAzimuthalAngleItem::BeamAzimuthalAngleItem(), BeamInclinationAngleItem::BeamInclinationAngleItem(), BeamWavelengthItem::BeamWavelengthItem(), DistributionGateItem::DistributionGateItem(), DistributionNoneItem::DistributionNoneItem(), FitParameterItem::FitParameterItem(), InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem(), LayerBasicRoughnessItem::LayerBasicRoughnessItem(), MaskAllItem::MaskAllItem(), MaterialItem::MaterialItem(), MesoCrystalItem::MesoCrystalItem(), OffSpecularInstrumentItem::OffSpecularInstrumentItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ParticleLayoutItem::ParticleLayoutItem(), PointwiseAxisItem::PointwiseAxisItem(), SimulationOptionsItem::SimulationOptionsItem(), SpecularBeamItem::SpecularBeamItem(), TransformToDomain::addBeamDivergencesToScan(), TransformToDomain::addDistributionParametersToSimulation(), DetectorMaskDelegate::createIntensityDataItem(), QREDataLoader::createOutputDataFromParsingResult(), ParameterTreeUtils::createParameterTree(), ParticleCoreShellItem::createParticleCoreShell(), ParticleDistributionItem::createParticleDistribution(), DepthProbeInstrumentItem::createSimulation(), JobItem::dataItem(), dataItem(), JobItem::dataItemView(), JobItem::fitSuiteItem(), ModelPath::getIndexFromPath(), SessionItem::getItemValue(), SpecularBeamItem::inclinationAxisGroup(), FitParameterProxyModel::index(), RectangularDetectorEditor::init_alignment_editors(), DistributionLorentzItem::init_distribution(), DistributionGaussianItem::init_distribution(), DistributionLogNormalItem::init_distribution(), DistributionCosineItem::init_distribution(), RectangularDetectorEditor::init_editors(), initDataItem(), JobModelFunctions::initDataView(), BeamDistributionItem::initDistributionItem(), FitParameterItem::initMinMaxValues(), JobItem::instrumentItem(), JobItem::intensityDataItem(), JobItem::isValidForFitting(), IntensityDataItem::isZAxisLocked(), SessionItem::item(), RealDataMaskWidget::maskContainer(), IntensityDataItem::maskContainerItem(), DetectorItem::maskContainerItem(), JobItem::materialContainerItem(), LayerItem::materialPropertyItems(), ParticleCoreShellItem::materialPropertyItems(), ParticleItem::materialPropertyItems(), JobItem::multiLayerItem(), JobModelFunctions::muteMagnetizationData(), nativeData(), JobItem::parameterContainerItem(), RealSpaceBuilder::populateLayout(), IntensityDataProjectionsWidget::projectionContainer(), IntensityDataItem::projectionContainerItem(), ProjectionsPlot::projectionContainerItem(), JobItem::realDataItem(), IntensityDataItem::reset(), SpecularDataItem::reset(), JobModel::restore(), ColorMap::setColorScaleAppearanceFromItem(), SessionItem::setItemValue(), FitParameterItem::setLimitEnabled(), AmplitudeAxisItem::setMinMaxEditor(), setNativeDataUnits(), TransformFromDomain::setSpecularBeamItem(), SpecularBeamWavelengthItem::setToRange(), JobModelFunctions::setupJobItemInstrument(), IntensityDataItem::setZAxisLocked(), SymmetricDistributionItem::showMean(), DistributionLogNormalItem::showMean(), DistributionTrapezoidItem::showMean(), DepthProbeInstrumentEditor::subscribeToItem(), GISASBeamEditor::subscribeToItem(), OffSpecularBeamEditor::subscribeToItem(), SphericalDetectorEditor::subscribeToItem(), InterferenceFunction2DParaCrystalItem::update_distribution_displaynames(), RectangularDetectorItem::update_properties_appearance(), LayerItem::updateAppearance(), SimulationOptionsItem::updateComboItem(), ParticleLayoutItem::updateDensityAppearance(), ParticleLayoutItem::updateDensityValue(), ParticleItem::updatePropertiesAppearance(), SpecularBeamItem::updateWavelength(), and SampleValidator::validateParticleCoreShellItem().

Here is the call graph for this function:

◆ getItems()

QVector< SessionItem * > SessionItem::getItems ( const QString &  tag = "") const
inherited

Returns vector of all items of given tag.

Definition at line 218 of file SessionItem.cpp.

219 {
220  const QString tagName = tag.isEmpty() ? defaultTag() : tag;
221  if (!m_tags->isValid(tagName))
222  return QVector<SessionItem*>();
223 
224  int index = m_tags->tagStartIndex(tagName);
225  ASSERT(index >= 0 && index <= m_children.size());
226  return m_children.mid(index, m_tags->childCount(tagName));
227 }

References ASSERT, SessionItem::defaultTag(), SessionItem::index(), SessionItem::m_children, and SessionItem::m_tags.

Referenced by FitParameterHelper::addToFitParameter(), DomainObjectBuilder::buildParticleLayout(), ParticleDistributionItem::childParticle(), RealSpaceBuilderUtils::computeCumulativeAbundances(), MaskUnitsConverter::convertIntensityDataItem(), SessionModel::copy(), FitParameterContainerItem::createParameters(), MaterialItemContainer::findMaterialById(), FitParameterContainerItem::fitParameterItem(), FitParameterContainerItem::fitParameterItems(), FitParameterHelper::getFitParameterNames(), FitParameterProxyModel::index(), FitParameterContainerItem::isEmpty(), LayerItem::materialPropertyItems(), MultiLayerItem::materialPropertyItems(), MaterialItemUtils::materialPropertyItems(), SessionModel::moveItem(), RealSpaceBuilderUtils::particle3DContainerVector(), RealSpaceBuilder::populateLayer(), RealSpaceBuilder::populateMultiLayer(), DataPropertyContainer::propertyItem(), DataPropertyContainer::propertyItems(), FitParameterHelper::removeFromFitParameters(), FitParameterProxyModel::rowCount(), FitParameterContainerItem::setValuesInParameterContainer(), SessionItem::takeRow(), FitSessionController::updateLog(), SampleValidator::validateMultiLayerItem(), SampleValidator::validateParticleCompositionItem(), SampleValidator::validateParticleDistributionItem(), SampleValidator::validateParticleLayoutItem(), and ParameterTreeUtils::visitParameterContainer().

Here is the call graph for this function:

◆ getItemValue()

QVariant SessionItem::getItemValue ( const QString &  tag) const
inherited

Directly access value of item under given tag.

Definition at line 295 of file SessionItem.cpp.

296 {
297  ASSERT(isTag(tag));
298  return getItem(tag)->value();
299 }
QVariant value() const
Get value.

References ASSERT, SessionItem::getItem(), SessionItem::isTag(), and SessionItem::value().

Referenced by AmplitudeAxisItem::AmplitudeAxisItem(), SimulationOptionsItem::SimulationOptionsItem(), IntensityDataCanvas::applyPersistentSettings(), FitParameterItem::attLimits(), MaskResultsPresenter::backup_data(), BasicAxisItem::binCount(), Data1DProperties::color(), MaterialItem::color(), MaskUnitsConverter::convertCoordinate(), MaskUnitsConverter::convertMask(), ConstantBackgroundItem::createBackground(), DetectorItem::createDetector(), FitComparison1DViewController::createDiffViewItem(), DistributionGateItem::createDistribution(), DistributionLorentzItem::createDistribution(), DistributionGaussianItem::createDistribution(), DistributionLogNormalItem::createDistribution(), DistributionCosineItem::createDistribution(), DistributionTrapezoidItem::createDistribution(), RectangularDetectorItem::createDomainDetector(), TransformToDomain::createDomainMaterial(), FootprintGaussianItem::createFootprint(), FootprintSquareItem::createFootprint(), AnisoPyramidItem::createFormFactor(), BarGaussItem::createFormFactor(), BarLorentzItem::createFormFactor(), BoxItem::createFormFactor(), ConeItem::createFormFactor(), Cone6Item::createFormFactor(), CuboctahedronItem::createFormFactor(), CylinderItem::createFormFactor(), DodecahedronItem::createFormFactor(), DotItem::createFormFactor(), EllipsoidalCylinderItem::createFormFactor(), FullSphereItem::createFormFactor(), FullSpheroidItem::createFormFactor(), HemiEllipsoidItem::createFormFactor(), IcosahedronItem::createFormFactor(), Prism3Item::createFormFactor(), Prism6Item::createFormFactor(), PyramidItem::createFormFactor(), CosineRippleBoxItem::createFormFactor(), CosineRippleGaussItem::createFormFactor(), CosineRippleLorentzItem::createFormFactor(), SawtoothRippleBoxItem::createFormFactor(), SawtoothRippleGaussItem::createFormFactor(), SawtoothRippleLorentzItem::createFormFactor(), TetrahedronItem::createFormFactor(), TruncatedCubeItem::createFormFactor(), TruncatedSphereItem::createFormFactor(), TruncatedSpheroidItem::createFormFactor(), FTDecayFunction1DCauchyItem::createFTDecayFunction(), FTDecayFunction1DGaussItem::createFTDecayFunction(), FTDecayFunction1DTriangleItem::createFTDecayFunction(), FTDecayFunction1DVoigtItem::createFTDecayFunction(), FTDecayFunction2DCauchyItem::createFTDecayFunction(), FTDecayFunction2DGaussItem::createFTDecayFunction(), FTDecayFunction2DVoigtItem::createFTDecayFunction(), FTDistribution1DCauchyItem::createFTDistribution(), FTDistribution1DGaussItem::createFTDistribution(), FTDistribution1DGateItem::createFTDistribution(), FTDistribution1DTriangleItem::createFTDistribution(), FTDistribution1DCosineItem::createFTDistribution(), FTDistribution1DVoigtItem::createFTDistribution(), FTDistribution2DCauchyItem::createFTDistribution(), FTDistribution2DGaussItem::createFTDistribution(), FTDistribution2DGateItem::createFTDistribution(), FTDistribution2DConeItem::createFTDistribution(), FTDistribution2DVoigtItem::createFTDistribution(), InterferenceFunction1DLatticeItem::createInterferenceFunction(), InterferenceFunction2DLatticeItem::createInterferenceFunction(), InterferenceFunction2DParaCrystalItem::createInterferenceFunction(), InterferenceFunctionFinite2DLatticeItem::createInterferenceFunction(), InterferenceFunctionHardDiskItem::createInterferenceFunction(), InterferenceFunctionRadialParaCrystalItem::createInterferenceFunction(), BasicLattice2DItem::createLattice(), SquareLattice2DItem::createLattice(), HexagonalLattice2DItem::createLattice(), TransformToDomain::createLayer(), TransformTo3D::createLayer(), TransformToDomain::createLayerRoughness(), MinimizerContainerItem::createMetric(), MinuitMinimizerItem::createMinimizer(), GSLMultiMinimizerItem::createMinimizer(), GeneticMinimizerItem::createMinimizer(), SimAnMinimizerItem::createMinimizer(), GSLLMAMinimizerItem::createMinimizer(), TransformToDomain::createMultiLayer(), ParticleItem::createParticle(), ParticleCompositionItem::createParticleComposition(), ParticleCoreShellItem::createParticleCoreShell(), ParticleDistributionItem::createParticleDistribution(), TransformToDomain::createParticleLayout(), LowerLimitedItem::createRealLimits(), UpperLimitedItem::createRealLimits(), LimitedItem::createRealLimits(), ResolutionFunction2DGaussianItem::createResolutionFunction(), XRotationItem::createRotation(), YRotationItem::createRotation(), ZRotationItem::createRotation(), EulerRotationItem::createRotation(), RectangleItem::createShape(), VerticalLineItem::createShape(), HorizontalLineItem::createShape(), EllipseItem::createShape(), DataProperties::dataItem(), DistributionLorentzItem::deviation(), DistributionGaussianItem::deviation(), DistributionCosineItem::deviation(), ParticleDistributionItem::domainLinkedParameters(), ParticleDistributionItem::domainMainParameter(), DataItem::fileName(), PointwiseAxisItem::fileName(), JobItem::getComments(), SimulationOptionsItem::getComputationMethod(), SimulationOptionsItem::getFresnelMaterialMethod(), IntensityDataItem::getGradient(), JobItem::getIdentifier(), SimulationOptionsItem::getIncludeSpecularPeak(), SimulationOptionsItem::getNumberOfMonteCarloPoints(), SimulationOptionsItem::getNumberOfThreads(), JobItem::getProgress(), JobItem::getStatus(), PointwiseAxisItem::getUnitsLabel(), InstrumentItem::id(), MaterialItem::identifier(), RectangularDetectorEditor::init_alignment_editors(), DistributionItem::init_parameters(), BeamDistributionItem::initDistributionItem(), FitParameterItem::initMinMaxValues(), instrumentId(), BeamItem::intensity(), PolygonView::isClosedPolygon(), IntensityDataItem::isInterpolated(), AmplitudeAxisItem::isLogScale(), FitParameterItem::isValid(), IntensityDataItem::isZAxisLocked(), SessionItem::itemName(), JobResultsPresenter::itemPresentation(), ParameterItem::linkedItem(), BasicAxisItem::lowerBound(), MaterialItemUtils::materialProperty(), BeamDistributionItem::meanValue(), nativeDataUnits(), Data1DProperties::nextColorName(), FitParameterWidget::onFitParametersSelectionChanged(), RunFitControlWidget::onFitSuitePropertyChange(), IView::onPropertyChange(), PropertyRepeater::onPropertyChanged(), FitSessionController::onStartFittingRequest(), EllipseView::paint(), VerticalLineView::paint(), HorizontalLineView::paint(), PolygonView::paint(), RectangleView::paint(), IShape2DView::par(), ParameterTreeUtils::parameterDictionary(), ParameterTreeUtils::parameterNameToLinkedItem(), FitParameterItem::parameterType(), DistributionWidget::plot_multiple_values(), DistributionWidget::plot_single_value(), RealSpaceBuilder::populateLayout(), ParameterItem::restoreFromBackup(), SimulationOptionsItem::runPolicy(), DataItem::selectedAxesUnits(), ColorMap::setColorScaleAppearanceFromItem(), SimulationOptionsItem::setComputationMethod(), RectangularDetectorItem::setDetectorAlignment(), SimulationOptionsItem::setFresnelMaterialMethod(), ProjectionsPlot::setGraphFromItem(), SimulationOptionsItem::setIncludeSpecularPeak(), FitSessionController::setItem(), Plot1D::setLabel(), SpecularPlot::setLabel(), PropertyRepeater::setOnChildPropertyChange(), IView::setParameterizedItem(), InterferenceFunctionItem::setPositionVariance(), SimulationOptionsItem::setRunPolicy(), FitFlowWidget::subscribeToItem(), BasicAxisItem::title(), IShape2DView::toSceneX(), IShape2DView::toSceneY(), RectangularDetectorItem::update_properties_appearance(), InterferenceFunction2DLatticeItem::update_rotation_availability(), InterferenceFunction2DParaCrystalItem::update_rotation_availability(), InterferenceFunctionFinite2DLatticeItem::update_rotation_availability(), ILayerView::updateColor(), SimulationOptionsItem::updateComboItem(), ILayerView::updateHeight(), ILayerView::updateLabel(), ParticleDistributionItem::updateLinkedParameterList(), ParticleDistributionItem::updateMainParameterList(), BasicAxisItem::upperBound(), TransformTo3D::visualLayerThickness(), VectorItem::x(), VectorItem::y(), and VectorItem::z().

Here is the call graph for this function:

◆ getRoles()

QVector< int > SessionItem::getRoles ( ) const
inherited

Returns vector of all present roles.

Definition at line 372 of file SessionItem.cpp.

373 {
374  return m_properties->roles();
375 }
std::unique_ptr< SessionItemData > m_properties
Definition: SessionItem.h:145

References SessionItem::m_properties.

Referenced by SessionXML::writeItemAndChildItems().

◆ groupItem()

template<typename T >
T & SessionItem::groupItem ( const QString &  groupName) const
inherited

Definition at line 168 of file SessionItem.h.

169 {
170  T* t = dynamic_cast<T*>(getGroupItem(groupName));
171  ASSERT(t);
172  return *t;
173 }
SessionItem * getGroupItem(const QString &groupName) const
Access subitem of group item.

References ASSERT, and SessionItem::getGroupItem().

Referenced by SessionItem::addGroupProperty(), BeamDistributionItem::initDistributionItem(), and DistributionWidget::plot_multiple_values().

Here is the call graph for this function:

◆ hasChildren()

bool SessionItem::hasChildren ( ) const
inherited

Indicates whether this SessionItem has any child items.

Definition at line 87 of file SessionItem.cpp.

88 {
89  return numberOfChildren() > 0;
90 }
int numberOfChildren() const
Returns total number of children.
Definition: SessionItem.cpp:94

References SessionItem::numberOfChildren().

Referenced by IntensityDataItem::hasMasks(), and IntensityDataItem::hasProjections().

Here is the call graph for this function:

◆ hasImportErrors()

bool RealDataItem::hasImportErrors ( ) const

Definition at line 302 of file RealDataItem.cpp.

303 {
304  return (dataLoader() != nullptr) ? dataLoader()->numErrors() > 0 : false;
305 }
virtual int numErrors() const
Number of errors found while processing the content.
AbstractDataLoader * dataLoader() const

References dataLoader(), and AbstractDataLoader::numErrors().

Here is the call graph for this function:

◆ hasNativeData()

bool RealDataItem::hasNativeData ( ) const

Definition at line 156 of file RealDataItem.cpp.

157 {
158  return (nativeData() != nullptr) && (nativeData()->getOutputData() != nullptr);
159 }
OutputData< double > * getOutputData()
Definition: DataItem.h:36
DataItem * nativeData()

References DataItem::getOutputData(), and nativeData().

Referenced by LinkInstrumentManager::canLinkDataToInstrument(), JobModelFunctions::copyRealDataItem(), nativeOutputData(), and updateToInstrument().

Here is the call graph for this function:

◆ holdsDimensionalData()

bool RealDataItem::holdsDimensionalData ( ) const

Definition at line 243 of file RealDataItem.cpp.

244 {
245  return nativeDataUnits() != "nbins";
246 }
QString nativeDataUnits() const

References nativeDataUnits().

Referenced by LinkInstrumentManager::canLinkDataToInstrument().

Here is the call graph for this function:

◆ importContentsProcessed

void RealDataItem::importContentsProcessed ( )
signal

◆ index()

QModelIndex RealDataItem::index ( ) const
private

◆ initAsIntensityItem()

void RealDataItem::initAsIntensityItem ( )

Definition at line 237 of file RealDataItem.cpp.

238 {
239  const size_t rank = 2;
241 }
void initDataItem(size_t data_rank, const QString &tag)
Creates data item if not existing so far.

References initDataItem(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ initAsSpecularItem()

void RealDataItem::initAsSpecularItem ( )

Definition at line 231 of file RealDataItem.cpp.

232 {
233  const size_t rank = 1;
235 }

References initDataItem(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ initDataItem()

void RealDataItem::initDataItem ( size_t  rank,
const QString &  tag 
)
private

Creates data item if not existing so far.

Checks for rank compatibility if already existing. No further initialization like clearing the data etc.

Definition at line 176 of file RealDataItem.cpp.

177 {
178  ASSERT(rank <= 2 && rank > 0);
179 
180  auto data_item = getItem(tag);
181  if (data_item != nullptr) {
182  const bool rankMismatch = (rank == 1 && !data_item->is<SpecularDataItem>())
183  || (rank == 2 && !data_item->is<IntensityDataItem>());
184 
185  if (rankMismatch)
186  throw GUIHelpers::Error("Error in RealDataItem::initDataItem: trying to set data "
187  "incompatible with underlying data item");
188  } else {
189  if (rank == 1)
190  model()->insertItem<SpecularDataItem>(this, 0, tag);
191  else
192  model()->insertItem<IntensityDataItem>(this, 0, tag);
193 
194  ASSERT(getItem(tag)
195  && "Assertion failed in RealDataItem::initDataItem: inserting data item failed.");
196  }
197 }
SessionModel * model() const
Returns model of this item.
Definition: SessionItem.cpp:66
T * insertItem(SessionItem *parent=nullptr, int row=-1, QString tag="")
Definition: SessionModel.h:125

References ASSERT, SessionItem::getItem(), SessionModel::insertItem(), and SessionItem::model().

Referenced by initAsIntensityItem(), initAsSpecularItem(), initNativeData(), setImportData(), and setOutputData().

Here is the call graph for this function:

◆ initNativeData()

void RealDataItem::initNativeData ( )

Definition at line 132 of file RealDataItem.cpp.

133 {
134  const size_t rank = isSpecularData() ? 1 : 2;
136 }
bool isSpecularData() const

References initDataItem(), isSpecularData(), and T_NATIVE_DATA.

Referenced by QREDataLoader::createOutputDataFromParsingResult().

Here is the call graph for this function:

◆ insertItem()

bool SessionItem::insertItem ( int  row,
SessionItem item,
const QString &  tag = "" 
)
inherited

Insert item into given tag into given row.

Definition at line 230 of file SessionItem.cpp.

231 {
232  ASSERT(item);
233  ASSERT(!item->parent());
234 
235  const QString tagName = tag.isEmpty() ? defaultTag() : tag;
236  ASSERT(m_tags->isValid(tagName, item->modelType()));
237 
238  int index = m_tags->insertIndexFromTagRow(tagName, row);
239  ASSERT(index >= 0);
240  ASSERT(index <= m_children.size());
241 
242  if (m_model)
243  m_model->beginInsertRows(this->index(), index, index);
244 
245  item->setParentAndModel(this, m_model);
246  m_children.insert(index, item);
247 
248  m_tags->addChild(tagName);
249  if (m_model)
250  m_model->endInsertRows();
251 
252  return true;
253 }

References ASSERT, SessionItem::defaultTag(), SessionItem::index(), SessionItem::item(), SessionItem::m_children, SessionItem::m_model, and SessionItem::m_tags.

Referenced by GroupItemController::GroupItemController(), SessionItem::addGroupProperty(), DataPropertyContainer::addItem(), SessionItem::addProperty(), ItemFactory::CreateItem(), GroupItemController::getItemOfType(), SessionModel::insertNewItem(), SessionModel::moveItem(), GroupItemController::setCurrentType(), and TransformFromDomain::setMaskContainer().

Here is the call graph for this function:

◆ instrumentId()

QString RealDataItem::instrumentId ( ) const

Definition at line 248 of file RealDataItem.cpp.

249 {
250  return getItemValue(P_INSTRUMENT_ID).toString();
251 }
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References SessionItem::getItemValue(), and P_INSTRUMENT_ID.

Referenced by linkedInstrument(), RealDataPropertiesWidget::onInstrumentComboIndexChanged(), RealDataPropertiesWidget::onRealDataPropertyChanged(), rotationAffectsSetup(), RealDataPropertiesWidget::setItem(), and RealDataPropertiesWidget::updateInstrumentComboEntries().

Here is the call graph for this function:

◆ instrumentModel()

InstrumentModel * RealDataItem::instrumentModel ( ) const
private

Definition at line 442 of file RealDataItem.cpp.

443 {
444  return realDataModel() != nullptr ? realDataModel()->instrumentModel() : nullptr;
445 }
RealDataModel * realDataModel() const
InstrumentModel * instrumentModel() const

References RealDataModel::instrumentModel(), and realDataModel().

Referenced by linkedInstrument(), and updateToInstrument().

Here is the call graph for this function:

◆ intensityDataItem() [1/2]

IntensityDataItem * RealDataItem::intensityDataItem ( )

Definition at line 92 of file RealDataItem.cpp.

93 {
94  return dynamic_cast<IntensityDataItem*>(dataItem());
95 }

References dataItem().

Referenced by isIntensityData(), maskContainerItem(), FitComparisonWidget::realDataItem(), rotateData(), and rotationAffectsSetup().

Here is the call graph for this function:

◆ intensityDataItem() [2/2]

const IntensityDataItem * RealDataItem::intensityDataItem ( ) const

Definition at line 97 of file RealDataItem.cpp.

98 {
99  return dynamic_cast<const IntensityDataItem*>(dataItem());
100 }

References dataItem().

Here is the call graph for this function:

◆ is()

◆ isEditable()

bool SessionItem::isEditable ( ) const
inherited

Definition at line 495 of file SessionItem.cpp.

496 {
497  return flags() & SessionFlags::EDITABLE;
498 }

References SessionFlags::EDITABLE, and SessionItem::flags().

Referenced by SessionModel::flags().

Here is the call graph for this function:

◆ isEnabled()

bool SessionItem::isEnabled ( ) const
inherited

Definition at line 490 of file SessionItem.cpp.

491 {
492  return flags() & SessionFlags::ENABLED;
493 }

References SessionFlags::ENABLED, and SessionItem::flags().

Referenced by SessionModel::flags(), SessionItemUtils::ForegroundRole(), SessionDecorationModel::textColor(), and PropertyWidgetItem::updateItemRoles().

Here is the call graph for this function:

◆ isIntensityData()

bool RealDataItem::isIntensityData ( ) const

Definition at line 292 of file RealDataItem.cpp.

293 {
294  return intensityDataItem() != nullptr;
295 }
IntensityDataItem * intensityDataItem()

References intensityDataItem().

Referenced by rotateData(), rotationAffectsSetup(), and RealDataSelectorWidget::updateActionEnabling().

Here is the call graph for this function:

◆ isSpecularData()

bool RealDataItem::isSpecularData ( ) const

Definition at line 297 of file RealDataItem.cpp.

298 {
299  return specularDataItem() != nullptr;
300 }
SpecularDataItem * specularDataItem()

References specularDataItem().

Referenced by LinkInstrumentManager::canLinkDataToInstrument(), RealDataTreeModel::indexForItem(), initNativeData(), AutomaticDataLoader1D::processContents(), QREDataLoader::processContents(), RealDataModel::realDataItems1D(), RealDataModel::realDataItems2D(), RealDataTreeModel::removeItem(), removeNativeData(), and updateToInstrument().

Here is the call graph for this function:

◆ isTag()

◆ isVisible()

bool SessionItem::isVisible ( ) const
inherited

Definition at line 485 of file SessionItem.cpp.

486 {
487  return flags() & SessionFlags::VISIBLE;
488 }

References SessionItem::flags(), and SessionFlags::VISIBLE.

Referenced by ComponentProxyStrategy::parentVisibleRow(), SessionItemUtils::ParentVisibleRow(), and ComponentProxyStrategy::processDefaultItem().

Here is the call graph for this function:

◆ item()

template<typename T >
T * SessionItem::item ( const QString &  tag) const
inherited

Definition at line 151 of file SessionItem.h.

152 {
153  T* t = dynamic_cast<T*>(getItem(tag));
154  ASSERT(t);
155  return t;
156 }

References ASSERT, and SessionItem::getItem().

Referenced by BeamDistributionItem::BeamDistributionItem(), InterferenceFunction2DLatticeItem::InterferenceFunction2DLatticeItem(), InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem(), InterferenceFunctionFinite2DLatticeItem::InterferenceFunctionFinite2DLatticeItem(), JobItem::JobItem(), MinimizerContainerItem::MinimizerContainerItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleLayoutItem::ParticleLayoutItem(), RealDataItem(), SpecularBeamItem::SpecularBeamItem(), InstrumentItem::alignedWith(), SpecularInstrumentItem::alignedWith(), GUIDomainSampleVisitor::buildPositionInfo(), GUIDomainSampleVisitor::createMaterialFromDomain(), TransformToDomain::createMultiLayer(), FitParameterContainerItem::createParameters(), PolygonItem::createShape(), DomainObjectBuilder::createUnitConverter(), DataProperties::dataItem(), DataPropertyContainer::dataItems(), MaterialItemContainer::findMaterialById(), JobItem::fitParameterContainerItem(), FitParameterContainerItem::fitParameterItem(), SessionItem::getCopyNumberOfChild(), InstrumentItem::initBackgroundGroup(), BeamDistributionItem::initDistributionItem(), SessionItem::insertItem(), Data1DViewItem::jobItem(), ParticleItem::materialPropertyItems(), ParameterItem::propagateValueToLink(), DataPropertyContainer::propertyItems(), DetectorItem::register_resolution_function(), DataProperties::setDataItem(), TransformFromDomain::setDetectorProperties(), TransformFromDomain::setGISASBeamItem(), TransformToDomain::setPositionInfo(), TransformFromDomain::setRectangularDetector(), SessionItem::tagFromItem(), SessionItem::takeRow(), SessionModel::topItems(), JobItem::updateIntensityDataFileName(), updateNonXMLDataFileNames(), ParticleView::updatePixmap(), ParticleView::updateToolTip(), SpecularInstrumentItem::updateToRealData(), GISASInstrumentItem::updateToRealData(), SpecularBeamItem::updateWavelength(), and GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ itemName()

◆ limits()

◆ linkedInstrument()

InstrumentItem * RealDataItem::linkedInstrument ( ) const

Definition at line 263 of file RealDataItem.cpp.

264 {
265  if (instrumentId().isEmpty()) // not linked or still in initialization state
266  return nullptr;
267 
268  // If this item is contained in a job item, then the instrument has to be taken from the job
269  // item. Otherwise it has to be taken from the instrumentModel
270  JobItem* parentJob = dynamic_cast<JobItem*>(SessionItem::parent());
271  if (parentJob != nullptr) {
272  if (instrumentId() != parentJob->instrumentItem()->id())
273  return nullptr; // still not completely initialized
274 
275  return parentJob->instrumentItem();
276  }
277 
279  : nullptr;
280 }
QString id() const
InstrumentItem * findInstrumentById(const QString &instrumentId) const
InstrumentItem * instrumentItem()
Definition: JobItem.cpp:224
InstrumentModel * instrumentModel() const
QString instrumentId() const
SessionItem * parent() const
Returns parent of this item.
Definition: SessionItem.cpp:73

References InstrumentModel::findInstrumentById(), InstrumentItem::id(), instrumentId(), JobItem::instrumentItem(), instrumentModel(), and SessionItem::parent().

Referenced by RealDataItem().

Here is the call graph for this function:

◆ mapper()

ModelMapper * SessionItem::mapper ( )
inherited

Returns the current model mapper of this item. Creates new one if necessary.

Definition at line 547 of file SessionItem.cpp.

548 {
549  if (!m_mapper) {
550  m_mapper = std::unique_ptr<ModelMapper>(new ModelMapper);
551  m_mapper->setItem(this);
552  }
553  return m_mapper.get();
554 }
std::unique_ptr< ModelMapper > m_mapper
Definition: SessionItem.h:147

References SessionItem::m_mapper.

Referenced by AmplitudeAxisItem::AmplitudeAxisItem(), BeamDistributionItem::BeamDistributionItem(), Data1DViewItem::Data1DViewItem(), DataItem::DataItem(), DetectorItem::DetectorItem(), FitParameterItem::FitParameterItem(), FitParameterProxyModel::FitParameterProxyModel(), GroupItem::GroupItem(), InterferenceFunction2DLatticeItem::InterferenceFunction2DLatticeItem(), InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem(), InterferenceFunctionFinite2DLatticeItem::InterferenceFunctionFinite2DLatticeItem(), JobItem::JobItem(), LayerItem::LayerItem(), MesoCrystalItem::MesoCrystalItem(), MultiLayerItem::MultiLayerItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleItem::ParticleItem(), ParticleLayoutItem::ParticleLayoutItem(), PointwiseAxisItem::PointwiseAxisItem(), RealDataItem(), RectangularDetectorItem::RectangularDetectorItem(), SimulationOptionsItem::SimulationOptionsItem(), SpecularBeamItem::SpecularBeamItem(), VectorItem::VectorItem(), DistributionWidget::~DistributionWidget(), FitParameterProxyModel::~FitParameterProxyModel(), IShape2DView::~IShape2DView(), IView::~IView(), PropertyRepeater::addItem(), FitSessionManager::createController(), SessionItemController::onControllerDestroy(), DistributionWidget::setItem(), FitSessionController::setItem(), RealDataPropertiesWidget::setItem(), SessionItemController::setItem(), IShape2DView::setParameterizedItem(), IView::setParameterizedItem(), DiffItemController::subscribe(), FitFlowWidget::subscribeToItem(), RunFitControlWidget::subscribeToItem(), DistributionEditor::subscribeToItem(), GISASDetectorEditor::subscribeToItem(), PolarizationAnalysisEditor::subscribeToItem(), RectangularDetectorEditor::subscribeToItem(), IntensityDataCanvas::subscribeToItem(), ProjectionsPlot::subscribeToItem(), JobPropertiesWidget::subscribeToItem(), ParameterTuningWidget::subscribeToItem(), FitComparisonWidget::subscribeToItem(), FitComparisonWidget1D::subscribeToItem(), ColorMap::subscribeToItem(), Plot1D::subscribeToItem(), SpecularPlot::subscribeToItem(), SessionItemController::unsubscribe(), DiffItemController::unsubscribe(), RunFitControlWidget::unsubscribeFromChildren(), and ProjectionsPlot::unsubscribeFromChildren().

◆ maskContainerItem()

MaskContainerItem * RealDataItem::maskContainerItem ( )

Returns mask container item.

Definition at line 307 of file RealDataItem.cpp.

308 {
309  if (auto intensity_data = intensityDataItem())
310  return intensity_data->maskContainerItem();
311  return nullptr;
312 }

References intensityDataItem().

Referenced by rotateData().

Here is the call graph for this function:

◆ model()

SessionModel * SessionItem::model ( ) const
inherited

◆ modelType()

QString SessionItem::modelType ( ) const
inherited

Get model type.

Definition at line 389 of file SessionItem.cpp.

390 {
391  return roleProperty(SessionFlags::ModelTypeRole).toString();
392 }

References SessionFlags::ModelTypeRole, and SessionItem::roleProperty().

Referenced by GSLMultiMinimizerItem::GSLMultiMinimizerItem(), InstrumentItem::InstrumentItem(), MinuitMinimizerItem::MinuitMinimizerItem(), RectangleItem::RectangleItem(), SessionItem::SessionItem(), TransformToDomain::addBeamDivergencesToScan(), TransformToDomain::addDistributionParametersToSimulation(), DesignerScene::addViewForItem(), SpecularInstrumentItem::alignedWith(), ModelPath::ancestor(), ComponentUtils::componentItems(), MaskUnitsConverter::convertMask(), TransformToDomain::createIParticle(), TransformTo3D::createLayer(), TransformToDomain::createLayerRoughness(), MaskViewFactory::createMaskView(), TransformTo3D::createParticle3D(), ParticleCompositionItem::createParticleComposition(), SessionItem::displayName(), DesignerScene::dropEvent(), JobModelFunctions::findJobItem(), MesoCrystalItem::getBasis(), SampleViewAligner::getConnectedViews(), ModelPath::getIndexFromPath(), FitParameterHelper::getParameterItem(), ProjectionsPlot::graphForItem(), SessionItemUtils::HasOwnAbundance(), FitParameterProxyModel::index(), FitParameterProxyModel::indexOfItem(), GUIDomainSampleVisitor::InsertIParticle(), SessionModel::insertItem(), ComponentProxyStrategy::isGroupChildren(), SessionItemUtils::IsPositionRelated(), ComponentProxyStrategy::isPropertyRelated(), ParticleItem::isShellParticle(), ComponentProxyStrategy::isSubGroup(), MaterialItemUtils::materialPropertyItems(), MaterialItemUtils::materialTag(), SessionModel::moveItem(), InstrumentViewActions::onCloneInstrument(), ComponentFlatView::onDataChanged(), DesignerScene::onEstablishedConnection(), FitParameterWidget::onFitParametersSelectionChanged(), ModelMapper::onRowsInserted(), ParticleItem::parentIsParticleLayout(), DistributionWidget::plot_distributions(), RealSpaceBuilder::populate(), RealSpaceBuilder::populateLayout(), ParameterTreeUtils::populateParameterContainer(), RealSpaceBuilder::populateParticleFromParticleItem(), MaskGraphicsScene::processPolygonItem(), MaskGraphicsScene::processRectangleShapeItem(), FitParameterProxyModel::rowCount(), TransformFromDomain::setAxisItem(), GroupItem::setCurrentType(), Instrument2DItem::setDetectorGroup(), TransformFromDomain::setDetectorMasks(), TransformFromDomain::setDetectorResolution(), ProjectionsPlot::setGraphFromItem(), SessionItem::setGroupProperty(), MaskGraphicsScene::setItemName(), MaskEditor::setMaskContext(), MaskGraphicsScene::setMaskContext(), TransformToDomain::setSimulationOptions(), JobModelFunctions::setupJobItemInstrument(), ProjectionsPlot::subscribeToItem(), ColorMap::subscribeToItem(), SpecularPlot::subscribeToItem(), InterferenceFunction2DParaCrystalItem::update_distribution_displaynames(), DetectorItem::update_resolution_function_tooltips(), LayerItem::updateAppearance(), SampleValidator::validateItem(), GUIDomainSampleVisitor::visit(), ParameterTreeUtils::visitParameterContainer(), TransformTo3D::visualLayerThickness(), and SessionXML::writeItemAndChildItems().

Here is the call graph for this function:

◆ name()

QString RealDataItem::name ( ) const

The name which is presented to the user.

Definition at line 82 of file RealDataItem.cpp.

83 {
84  return itemName();
85 }
QString itemName() const
Get item name, return display name if no name is set.

References SessionItem::itemName().

Referenced by RealDataItem(), ItemFileNameUtils::nativeDataFileName(), ItemFileNameUtils::realDataFileName(), and setName().

Here is the call graph for this function:

◆ nativeData() [1/2]

DataItem * RealDataItem::nativeData ( )

Definition at line 122 of file RealDataItem.cpp.

123 {
124  return const_cast<DataItem*>(static_cast<const RealDataItem*>(this)->nativeData());
125 }

Referenced by JobModelFunctions::copyRealDataItem(), hasNativeData(), nativeOutputData(), removeNativeData(), setNativeOutputData(), updateNonXMLDataFileNames(), and updateToInstrument().

◆ nativeData() [2/2]

const DataItem * RealDataItem::nativeData ( ) const

Definition at line 127 of file RealDataItem.cpp.

128 {
129  return dynamic_cast<const DataItem*>(getItem(T_NATIVE_DATA));
130 }

References SessionItem::getItem(), and T_NATIVE_DATA.

Here is the call graph for this function:

◆ nativeDataUnits()

QString RealDataItem::nativeDataUnits ( ) const

Definition at line 138 of file RealDataItem.cpp.

139 {
140  return getItemValue(P_NATIVE_DATA_UNITS).toString();
141 }

References SessionItem::getItemValue(), and P_NATIVE_DATA_UNITS.

Referenced by holdsDimensionalData(), and updateToInstrument().

Here is the call graph for this function:

◆ nativeFileName()

QString RealDataItem::nativeFileName ( ) const

Definition at line 319 of file RealDataItem.cpp.

320 {
321  return m_nativeFileName;
322 }

References m_nativeFileName.

Referenced by SpecularDataImportWidget::currentFileName(), and ImportDataUtils::Import1dData().

◆ nativeOutputData()

const OutputData< double > * RealDataItem::nativeOutputData ( ) const

Definition at line 161 of file RealDataItem.cpp.

162 {
163  return hasNativeData() ? nativeData()->getOutputData() : nullptr;
164 }
bool hasNativeData() const

References DataItem::getOutputData(), hasNativeData(), and nativeData().

Referenced by JobModelFunctions::copyRealDataItem().

Here is the call graph for this function:

◆ numberOfChildren()

int SessionItem::numberOfChildren ( ) const
inherited

◆ parent()

SessionItem * SessionItem::parent ( ) const
inherited

Returns parent of this item.

Definition at line 73 of file SessionItem.cpp.

74 {
75  return m_parent;
76 }

References SessionItem::m_parent.

Referenced by MesoCrystalItem::MesoCrystalItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ModelPath::ancestor(), FitComparison1DViewController::deleteDiffViewItem(), PointwiseAxisItem::findInstrument(), JobModelFunctions::findJobItem(), SampleViewAligner::getConnectedViews(), FitParameterHelper::getParameterItem(), FitParameterProxyModel::indexOfItem(), SessionModel::indexOfItem(), ComponentProxyStrategy::isGroupChildren(), ComponentProxyStrategy::isPropertyRelated(), MaskEditorActions::isSendToBackPossible(), ParticleItem::isShellParticle(), ComponentProxyStrategy::isSubGroup(), ModelPath::itemPathTranslation(), Data1DViewItem::jobItem(), linkedInstrument(), SessionModel::moveItem(), ModelMapper::nestlingDepth(), ModelMapper::onDataChanged(), FitParameterWidget::onFitParametersSelectionChanged(), ProjectionsEditorCanvas::onLeavingColorMap(), ModelMapper::onRowRemoved(), ModelMapper::onRowsInserted(), ParameterTreeUtils::parameterDictionary(), SessionModel::parent(), FitParameterProxyModel::parent(), ParticleItem::parentIsParticleLayout(), SessionItemUtils::ParentRow(), ComponentProxyStrategy::parentVisibleRow(), SessionItemUtils::ParentVisibleRow(), ComponentProxyStrategy::processGroupItem(), ComponentProxyStrategy::processSourceIndex(), ComponentProxyStrategy::processSubGroupItem(), SessionXML::readItems(), PropertyWidgetItem::setItemEditor(), PropertyRepeater::setOnChildPropertyChange(), SessionItem::setParentAndModel(), LayerItem::updateAppearance(), and SessionXML::writeItemAndChildItems().

◆ realDataModel()

RealDataModel * RealDataItem::realDataModel ( ) const
private

Definition at line 437 of file RealDataItem.cpp.

438 {
439  return dynamic_cast<RealDataModel*>(model());
440 }
The RealDataModel class is a model to store all imported RealDataItem's.
Definition: RealDataModel.h:26

References SessionItem::model().

Referenced by instrumentModel().

Here is the call graph for this function:

◆ registerTag()

bool SessionItem::registerTag ( const QString &  name,
int  min = 0,
int  max = -1,
QStringList  modelTypes = {} 
)
inherited

◆ removeNativeData()

void RealDataItem::removeNativeData ( )

Definition at line 148 of file RealDataItem.cpp.

149 {
150  ASSERT(isSpecularData()); // not implemented for intensityDataItem
151 
152  if (nativeData() != nullptr)
153  nativeData()->setOutputData(nullptr);
154 }
virtual void setOutputData(OutputData< double > *data)=0
The given pointer becomes owned by this class!!
Definition: DataItem.cpp:24

References ASSERT, isSpecularData(), nativeData(), and DataItem::setOutputData().

Referenced by AutomaticDataLoader1D::processContents(), and QREDataLoader::processContents().

Here is the call graph for this function:

◆ roleProperty()

QVariant SessionItem::roleProperty ( int  role) const
inherited

◆ rotateData()

void RealDataItem::rotateData ( )

Definition at line 405 of file RealDataItem.cpp.

406 {
407  if (!isIntensityData()) // rotation only for 2D items possible
408  return;
409 
410  // -- first break instrument link, clear masks and projections
412 
413  if (auto maskContainer = intensityDataItem()->maskContainerItem())
414  maskContainer->model()->removeRows(0, maskContainer->numberOfChildren(),
415  maskContainer->index());
416 
417  if (auto projectionsContainer = intensityDataItem()->projectionContainerItem())
418  projectionsContainer->model()->removeRows(0, projectionsContainer->numberOfChildren(),
419  projectionsContainer->index());
420 
421  // -- now rotate data
422  const auto input = intensityDataItem()->getOutputData();
425 }
void setAxesRangeToData() override
set zoom range of x,y axes to axes of input data
void setOutputData(OutputData< double > *data) override
The given pointer becomes owned by this class!!
MaskContainerItem * maskContainerItem()
Returns mask container item.
void clearInstrumentId()
bool isIntensityData() const
std::unique_ptr< OutputData< double > > createRearrangedDataSet(const OutputData< double > &data, int n)
Returns new object with input data rotated by n*90 deg counterclockwise (n > 0) or clockwise (n < 0) ...
Definition: DataUtils.cpp:82

References clearInstrumentId(), DataUtils::createRearrangedDataSet(), DataItem::getOutputData(), intensityDataItem(), isIntensityData(), maskContainerItem(), IntensityDataItem::setAxesRangeToData(), and IntensityDataItem::setOutputData().

Referenced by RealDataSelectorWidget::rotateCurrentItem().

Here is the call graph for this function:

◆ rotationAffectsSetup()

bool RealDataItem::rotationAffectsSetup ( ) const

Returns true, if rotation will affect linked instrument or mask presence.

Definition at line 387 of file RealDataItem.cpp.

388 {
389  if (!isIntensityData()) // rotation only for 2D items possible
390  return false;
391 
392  const bool hasLinkToInstrument = !instrumentId().isEmpty();
393  if (hasLinkToInstrument)
394  return true;
395 
396  if (intensityDataItem()->hasMasks())
397  return true;
398 
399  if (intensityDataItem()->hasProjections())
400  return true;
401 
402  return false;
403 }

References instrumentId(), intensityDataItem(), and isIntensityData().

Here is the call graph for this function:

◆ rowOfChild()

int SessionItem::rowOfChild ( SessionItem child) const
inherited

Returns row index of given child.

Definition at line 115 of file SessionItem.cpp.

116 {
117  return m_children.indexOf(child);
118 }

References SessionItem::m_children.

Referenced by SessionItem::childDeleted(), DetectorItem::clearMasks(), SessionModel::indexOfItem(), SessionModel::moveItem(), ProjectionsEditorCanvas::onLeavingColorMap(), and SessionItemUtils::ParentRow().

◆ serializeBinaryData()

QByteArray RealDataItem::serializeBinaryData ( ) const
overridevirtual

Reimplemented from SessionItem.

Definition at line 324 of file RealDataItem.cpp.

325 {
326  QByteArray a;
327  QDataStream s(&a, QIODevice::WriteOnly);
328  s.setVersion(QDataStream::Qt_5_12);
329 
330  s << (quint8)1; // version
331  s << m_nativeFileName;
332 
333  if (m_dataLoader) {
334  s << m_dataLoader->persistentClassName();
335  s << *m_dataLoader;
336  } else
337  s << QString(); // empty loader class name => no loader present
338 
339  return a;
340 }

References m_dataLoader, and m_nativeFileName.

◆ sessionItemTags()

SessionItemTags * SessionItem::sessionItemTags ( )
inherited

Definition at line 168 of file SessionItem.cpp.

169 {
170  return m_tags.get();
171 }

References SessionItem::m_tags.

Referenced by SessionItem::displayName(), SessionModel::insertNewItem(), and SessionModel::moveItem().

◆ setDataLoader()

void RealDataItem::setDataLoader ( AbstractDataLoader loader)

Takes ownership of loader.

Definition at line 374 of file RealDataItem.cpp.

375 {
376  m_dataLoader.reset(loader);
377  if (m_dataLoader)
380 }
void contentsProcessed()
Emitted whenever contents have been processed.
void importContentsProcessed()

References AbstractDataLoader::contentsProcessed(), importContentsProcessed(), and m_dataLoader.

Referenced by deserializeBinaryData(), ImportDataUtils::Import1dData(), and SpecularDataImportWidget::onFormatSelectionChanged().

◆ setDecimals()

◆ setDefaultTag()

◆ setDisplayName()

void SessionItem::setDisplayName ( const QString &  display_name)
inherited

Set display name.

Definition at line 448 of file SessionItem.cpp.

449 {
451 }

References SessionFlags::DisplayNameRole, and SessionItem::setRoleProperty().

Referenced by DistributionNoneItem::DistributionNoneItem(), SessionItem::SessionItem(), SessionItem::addGroupProperty(), SessionItem::addProperty(), FitParameterHelper::createFitParameter(), SessionXML::readItems(), and InterferenceFunction2DParaCrystalItem::update_distribution_displaynames().

Here is the call graph for this function:

◆ setEditable()

void SessionItem::setEditable ( bool  enabled)
inherited

Definition at line 480 of file SessionItem.cpp.

481 {
483 }
void changeFlags(bool enabled, int flag)
internal

References SessionItem::changeFlags(), and SessionFlags::EDITABLE.

Referenced by JobItem::JobItem(), MaterialDataItem::MaterialDataItem(), VectorItem::VectorItem(), and FitParameterItem::setLimitEnabled().

Here is the call graph for this function:

◆ setEditorType()

◆ setEnabled()

◆ setGroupProperty()

SessionItem * SessionItem::setGroupProperty ( const QString &  groupTag,
const QString &  modelType 
) const
inherited

Set the current type of group item.

Definition at line 341 of file SessionItem.cpp.

342 {
343  return item<GroupItem>(groupTag)->setCurrentType(modelType);
344 }

References SessionItem::modelType().

Referenced by DesignerScene::dropEvent(), DistributionItem::init_limits_group(), DistributionItem::register_limits(), BeamDistributionItem::resetToValue(), TransformFromDomain::setBackground(), Instrument2DItem::setDetectorGroup(), TransformFromDomain::setDetectorResolution(), TransformFromDomain::setFootprintFactor(), TransformFromDomain::setLayerItem(), MaterialItem::setRefractiveData(), MaterialItem::setSLDData(), and GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setImportData()

void RealDataItem::setImportData ( ImportDataInfo  data)

Sets imported data to underlying item.

Creates it if not existing. This is used for 1-D import (2-D only using setOutputData). BUT: This last statement seems wrong - in the unit tests it is used for 2D import

Definition at line 214 of file RealDataItem.cpp.

215 {
216  if (!data)
217  return;
218 
219  const size_t data_rank = data.dataRank();
220  initDataItem(data_rank, T_INTENSITY_DATA);
221  initDataItem(data_rank, T_NATIVE_DATA);
222 
223  QString units_name = data.unitsLabel();
224  auto output_data = data.intensityData();
225 
226  dataItem()->reset(std::move(data));
227  setNativeDataUnits(units_name);
228  item<DataItem>(T_NATIVE_DATA)->setOutputData(output_data.release());
229 }
virtual void reset(ImportDataInfo data)=0
Resets data to the state defined by user (imported) data.
size_t dataRank() const
Returns number of dimensions.
QString unitsLabel() const
std::unique_ptr< OutputData< double > > intensityData() const &
void setNativeDataUnits(const QString &units)

References dataItem(), ImportDataInfo::dataRank(), initDataItem(), ImportDataInfo::intensityData(), DataItem::reset(), setNativeDataUnits(), T_INTENSITY_DATA, T_NATIVE_DATA, and ImportDataInfo::unitsLabel().

Referenced by ImportDataUtils::Import1dData(), and AutomaticDataLoader1D::processContents().

Here is the call graph for this function:

◆ setInstrumentId()

void RealDataItem::setInstrumentId ( const QString &  id)

Definition at line 253 of file RealDataItem.cpp.

254 {
256 }

References P_INSTRUMENT_ID, and SessionItem::setItemValue().

Referenced by RealDataPropertiesWidget::onInstrumentComboIndexChanged().

Here is the call graph for this function:

◆ setItemName()

◆ setItemValue()

void SessionItem::setItemValue ( const QString &  tag,
const QVariant &  variant 
)
inherited

Directly set value of item under given tag.

Definition at line 303 of file SessionItem.cpp.

304 {
305  ASSERT(isTag(tag));
306  getItem(tag)->setValue(variant);
307 }
bool setValue(QVariant value)
Set value, ensure that variant types match.

References ASSERT, SessionItem::getItem(), SessionItem::isTag(), and SessionItem::setValue().

Referenced by MesoCrystalItem::MesoCrystalItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), RegionOfInterestItem::RegionOfInterestItem(), FitParameterHelper::addToFitParameter(), IntensityDataCanvas::applyPersistentSettings(), clearInstrumentId(), PolygonView::closePolygonIfNecessary(), MaskUnitsConverter::convertCoordinate(), MaskUnitsConverter::convertMask(), FitComparison1DViewController::createDiffViewItem(), FitParameterHelper::createFitParameter(), DetectorMaskDelegate::createIntensityDataItem(), QREDataLoader::createOutputDataFromParsingResult(), DesignerScene::dropEvent(), PointwiseAxisItem::init(), DistributionNoneItem::init_distribution(), DistributionGateItem::init_distribution(), DistributionLorentzItem::init_distribution(), DistributionGaussianItem::init_distribution(), DistributionLogNormalItem::init_distribution(), DistributionCosineItem::init_distribution(), DistributionTrapezoidItem::init_distribution(), DistributionItem::init_limits_group(), DistributionItem::init_parameters(), JobModelFunctions::initDataView(), FitParameterItem::initMinMaxValues(), MaterialItemContainer::insertCopy(), GUIDomainSampleVisitor::InsertIParticle(), EllipseView::mouseMoveEvent(), RectangleView::mouseMoveEvent(), ILayerView::mouseReleaseEvent(), EllipseView::onChangedX(), VerticalLineView::onChangedX(), RectangleView::onChangedX(), IView::onChangedX(), EllipseView::onChangedY(), HorizontalLineView::onChangedY(), RectangleView::onChangedY(), IView::onChangedY(), ProjectionsEditorCanvas::onEnteringColorMap(), ProjectionsEditorCanvas::onPositionChanged(), RunFitControlWidget::onSliderValueChanged(), MaskGraphicsScene::processHorizontalLineItem(), MaskGraphicsScene::processLineItem(), MaskGraphicsScene::processPolygonItem(), MaskGraphicsScene::processRectangleShapeItem(), MaskGraphicsScene::processVerticalLineItem(), IntensityDataItem::reset(), SpecularDataItem::reset(), BeamDistributionItem::resetToValue(), TransformFromDomain::set1DLatticeItem(), TransformFromDomain::set2DLatticeItem(), TransformFromDomain::set2DParaCrystalItem(), TransformFromDomain::setAxisItem(), TransformFromDomain::setBackground(), JobItem::setBeginTime(), BasicAxisItem::setBinCount(), Data1DProperties::setColorProperty(), JobItem::setComments(), SimulationOptionsItem::setComputationMethod(), DataProperties::setDataItem(), RectangularDetectorItem::setDetectorAlignment(), TransformFromDomain::setDetectorProperties(), TransformFromDomain::setDetectorResolution(), JobItem::setDuration(), JobItem::setEndTime(), DataItem::setFileName(), TransformFromDomain::setFinite2DLatticeItem(), TransformFromDomain::setFootprintFactor(), SimulationOptionsItem::setFresnelMaterialMethod(), TransformFromDomain::setHardDiskItem(), InstrumentItem::setId(), JobItem::setIdentifier(), SimulationOptionsItem::setIncludeSpecularPeak(), setInstrumentId(), BeamItem::setIntensity(), JobItemUtils::setIntensityItemAxesUnits(), IntensityDataItem::setInterpolated(), FitComparisonController2D::setItem(), SessionItem::setItemName(), TransformFromDomain::setLayerItem(), AmplitudeAxisItem::setLogScale(), BasicAxisItem::setLowerBound(), TransformFromDomain::setMaskContainer(), SimulationOptionsItem::setNumberOfMonteCarloPoints(), MaskResultsPresenter::setOriginalMode(), TransformFromDomain::setParticleDistributionItem(), JobResultsPresenter::setPresentation(), JobItem::setProgress(), TransformFromDomain::setRadialParaCrystalItem(), TransformFromDomain::setRectangularDetector(), TransformFromDomain::setRoughnessItem(), SimulationOptionsItem::setRunPolicy(), MaskResultsPresenter::setShowMaskMode(), JobItem::setStatus(), BasicAxisItem::setTitle(), BasicAxisItem::setUpperBound(), VectorItem::setX(), VectorItem::setY(), VectorItem::setZ(), IntensityDataItem::setZAxisLocked(), RunFitControlWidget::subscribeToItem(), SpecularDataItem::updateAxesZoomLevel(), ParticleLayoutItem::updateDensityValue(), FitSessionController::updateIterationCount(), ParticleDistributionItem::updateLinkedParameterList(), ParticleDistributionItem::updateMainParameterList(), PolygonPointView::updateParameterizedItem(), ParticleItem::updatePropertiesAppearance(), and GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setLimits()

SessionItem & SessionItem::setLimits ( const RealLimits value)
inherited

Definition at line 505 of file SessionItem.cpp.

506 {
507  setRoleProperty(SessionFlags::LimitsRole, QVariant::fromValue<RealLimits>(value));
508  return *this;
509 }

References SessionFlags::LimitsRole, SessionItem::setRoleProperty(), and SessionItem::value().

Referenced by BeamAzimuthalAngleItem::BeamAzimuthalAngleItem(), BeamInclinationAngleItem::BeamInclinationAngleItem(), BeamItem::BeamItem(), BeamWavelengthItem::BeamWavelengthItem(), ConstantBackgroundItem::ConstantBackgroundItem(), CuboctahedronItem::CuboctahedronItem(), DetectorItem::DetectorItem(), DistributionCosineItem::DistributionCosineItem(), DistributionGateItem::DistributionGateItem(), DistributionGaussianItem::DistributionGaussianItem(), DistributionLorentzItem::DistributionLorentzItem(), DistributionNoneItem::DistributionNoneItem(), DistributionTrapezoidItem::DistributionTrapezoidItem(), EllipseItem::EllipseItem(), FitParameterItem::FitParameterItem(), FootprintGaussianItem::FootprintGaussianItem(), FootprintSquareItem::FootprintSquareItem(), FTDecayFunction1DVoigtItem::FTDecayFunction1DVoigtItem(), FTDecayFunction2DVoigtItem::FTDecayFunction2DVoigtItem(), FTDistribution1DVoigtItem::FTDistribution1DVoigtItem(), FTDistribution2DVoigtItem::FTDistribution2DVoigtItem(), HorizontalLineItem::HorizontalLineItem(), LayerBasicRoughnessItem::LayerBasicRoughnessItem(), LayerItem::LayerItem(), LimitedItem::LimitedItem(), LowerLimitedItem::LowerLimitedItem(), MaterialRefractiveDataItem::MaterialRefractiveDataItem(), MaterialSLDDataItem::MaterialSLDDataItem(), MesoCrystalItem::MesoCrystalItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleItem::ParticleItem(), PolygonPointItem::PolygonPointItem(), RectangleItem::RectangleItem(), RectangularDetectorItem::RectangularDetectorItem(), ResolutionFunction2DGaussianItem::ResolutionFunction2DGaussianItem(), SessionItem::SessionItem(), UpperLimitedItem::UpperLimitedItem(), VectorItem::VectorItem(), VerticalLineItem::VerticalLineItem(), DistributionLorentzItem::init_distribution(), DistributionGaussianItem::init_distribution(), DistributionLogNormalItem::init_distribution(), DistributionCosineItem::init_distribution(), FitParameterItem::initMinMaxValues(), BasicAxisItem::register_basic_properties(), DistributionItem::register_number_of_samples(), and SpecularBeamWavelengthItem::setToRange().

Here is the call graph for this function:

◆ setModel()

void SessionItem::setModel ( SessionModel model)
privateinherited

Definition at line 591 of file SessionItem.cpp.

592 {
593  m_model = model;
594 
595  if (m_mapper)
596  m_mapper->setItem(this);
597 
598  for (auto& child : m_children)
599  child->setModel(model);
600 }

References SessionItem::m_children, SessionItem::m_mapper, SessionItem::m_model, and SessionItem::model().

Referenced by SessionItem::~SessionItem(), SessionModel::createRootItem(), and SessionItem::setParentAndModel().

Here is the call graph for this function:

◆ setName()

void RealDataItem::setName ( const QString &  name)

Definition at line 87 of file RealDataItem.cpp.

88 {
90 }

References name(), and SessionItem::setItemName().

Referenced by RealDataSelectorWidget::importData(), and RealDataTreeModel::setData().

Here is the call graph for this function:

◆ setNativeDataUnits()

void RealDataItem::setNativeDataUnits ( const QString &  units)

Definition at line 143 of file RealDataItem.cpp.

144 {
146 }

References SessionItem::getItem(), P_NATIVE_DATA_UNITS, and SessionItem::setValue().

Referenced by QREDataLoader::createOutputDataFromParsingResult(), and setImportData().

Here is the call graph for this function:

◆ setNativeFileName()

void RealDataItem::setNativeFileName ( const QString &  filename)

The name from where the native data was originally imported.

Definition at line 314 of file RealDataItem.cpp.

315 {
317 }
std::string filename(const std::string &path)
Returns path without directory part ("Foo/Bar/Doz.int.gz" -> "Doz.int.gz")

References FileSystemUtils::filename(), and m_nativeFileName.

Here is the call graph for this function:

◆ setNativeOutputData()

void RealDataItem::setNativeOutputData ( OutputData< double > *  data)

takes ownership of data

Definition at line 168 of file RealDataItem.cpp.

169 {
170  nativeData()->setOutputData(data); // takes ownership of odata
171 }

References nativeData(), and DataItem::setOutputData().

Referenced by JobModelFunctions::copyRealDataItem(), and QREDataLoader::createOutputDataFromParsingResult().

Here is the call graph for this function:

◆ setOutputData()

void RealDataItem::setOutputData ( OutputData< double > *  data)

Sets OutputData to underlying item. Creates it if not existing.

Definition at line 201 of file RealDataItem.cpp.

202 {
203  ASSERT(data && "Assertion failed in RealDataItem::setOutputData: passed data is nullptr");
204 
206 
207  dataItem()->setOutputData(data);
208 }
size_t rank() const
Returns number of dimensions.
Definition: OutputData.h:56

References ASSERT, dataItem(), initDataItem(), OutputData< T >::rank(), DataItem::setOutputData(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ setParentAndModel()

void SessionItem::setParentAndModel ( SessionItem parent,
SessionModel model 
)
privateinherited

Definition at line 585 of file SessionItem.cpp.

586 {
587  setModel(model);
588  m_parent = parent;
589 }
void setModel(SessionModel *model)

References SessionItem::m_parent, SessionItem::model(), SessionItem::parent(), and SessionItem::setModel().

Referenced by SessionItem::takeItem().

Here is the call graph for this function:

◆ setRoleProperty()

bool SessionItem::setRoleProperty ( int  role,
const QVariant &  value 
)
inherited

Set variant to role, create role if not present yet.

Definition at line 362 of file SessionItem.cpp.

363 {
364  bool result = m_properties->setData(role, value);
365  if (result)
366  emitDataChanged(role);
367  return result;
368 }
void emitDataChanged(int role=Qt::DisplayRole)
Notify model about data changes.

References SessionItem::emitDataChanged(), SessionItem::m_properties, and SessionItem::value().

Referenced by SessionItem::SessionItem(), SessionItem::changeFlags(), SessionXML::readProperty(), SessionItem::setDecimals(), SessionItem::setDefaultTag(), SessionItem::setDisplayName(), SessionItem::setEditorType(), SessionItem::setLimits(), SessionItem::setToolTip(), and SessionItem::setValue().

Here is the call graph for this function:

◆ setToolTip()

SessionItem & SessionItem::setToolTip ( const QString &  tooltip)
inherited

Definition at line 527 of file SessionItem.cpp.

528 {
530  return *this;
531 }
QVariant ToolTipRole(const SessionItem &item, int ncol=0)
Returns tooltip for given item.

References SessionItem::setRoleProperty(), and SessionItemUtils::ToolTipRole().

Referenced by AnisoPyramidItem::AnisoPyramidItem(), BarGaussItem::BarGaussItem(), BarLorentzItem::BarLorentzItem(), BasicLattice2DItem::BasicLattice2DItem(), BeamItem::BeamItem(), BoxItem::BoxItem(), Cone6Item::Cone6Item(), ConeItem::ConeItem(), ConstantBackgroundItem::ConstantBackgroundItem(), CosineRippleBoxItem::CosineRippleBoxItem(), CosineRippleGaussItem::CosineRippleGaussItem(), CosineRippleLorentzItem::CosineRippleLorentzItem(), CuboctahedronItem::CuboctahedronItem(), CylinderItem::CylinderItem(), DetectorItem::DetectorItem(), DodecahedronItem::DodecahedronItem(), DotItem::DotItem(), EllipsoidalCylinderItem::EllipsoidalCylinderItem(), EulerRotationItem::EulerRotationItem(), FootprintGaussianItem::FootprintGaussianItem(), FootprintSquareItem::FootprintSquareItem(), FTDecayFunction1DCauchyItem::FTDecayFunction1DCauchyItem(), FTDecayFunction1DGaussItem::FTDecayFunction1DGaussItem(), FTDecayFunction1DTriangleItem::FTDecayFunction1DTriangleItem(), FTDecayFunction1DVoigtItem::FTDecayFunction1DVoigtItem(), FTDecayFunction2DCauchyItem::FTDecayFunction2DCauchyItem(), FTDecayFunction2DGaussItem::FTDecayFunction2DGaussItem(), FTDecayFunction2DVoigtItem::FTDecayFunction2DVoigtItem(), FTDistribution1DCauchyItem::FTDistribution1DCauchyItem(), FTDistribution1DCosineItem::FTDistribution1DCosineItem(), FTDistribution1DGateItem::FTDistribution1DGateItem(), FTDistribution1DGaussItem::FTDistribution1DGaussItem(), FTDistribution1DTriangleItem::FTDistribution1DTriangleItem(), FTDistribution1DVoigtItem::FTDistribution1DVoigtItem(), FTDistribution2DCauchyItem::FTDistribution2DCauchyItem(), FTDistribution2DConeItem::FTDistribution2DConeItem(), FTDistribution2DGateItem::FTDistribution2DGateItem(), FTDistribution2DGaussItem::FTDistribution2DGaussItem(), FTDistribution2DVoigtItem::FTDistribution2DVoigtItem(), FullSphereItem::FullSphereItem(), FullSpheroidItem::FullSpheroidItem(), GeneticMinimizerItem::GeneticMinimizerItem(), GSLLMAMinimizerItem::GSLLMAMinimizerItem(), GSLMultiMinimizerItem::GSLMultiMinimizerItem(), HemiEllipsoidItem::HemiEllipsoidItem(), HexagonalLattice2DItem::HexagonalLattice2DItem(), IcosahedronItem::IcosahedronItem(), InterferenceFunction1DLatticeItem::InterferenceFunction1DLatticeItem(), InterferenceFunction2DLatticeItem::InterferenceFunction2DLatticeItem(), InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem(), InterferenceFunctionFinite2DLatticeItem::InterferenceFunctionFinite2DLatticeItem(), InterferenceFunctionHardDiskItem::InterferenceFunctionHardDiskItem(), InterferenceFunctionItem::InterferenceFunctionItem(), InterferenceFunctionRadialParaCrystalItem::InterferenceFunctionRadialParaCrystalItem(), LayerBasicRoughnessItem::LayerBasicRoughnessItem(), LayerItem::LayerItem(), LimitedItem::LimitedItem(), LowerLimitedItem::LowerLimitedItem(), MaterialRefractiveDataItem::MaterialRefractiveDataItem(), MaterialSLDDataItem::MaterialSLDDataItem(), MesoCrystalItem::MesoCrystalItem(), MinimizerContainerItem::MinimizerContainerItem(), MinuitMinimizerItem::MinuitMinimizerItem(), MultiLayerItem::MultiLayerItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleItem::ParticleItem(), ParticleLayoutItem::ParticleLayoutItem(), Prism3Item::Prism3Item(), Prism6Item::Prism6Item(), PyramidItem::PyramidItem(), RectangularDetectorItem::RectangularDetectorItem(), ResolutionFunction2DGaussianItem::ResolutionFunction2DGaussianItem(), SawtoothRippleBoxItem::SawtoothRippleBoxItem(), SawtoothRippleGaussItem::SawtoothRippleGaussItem(), SawtoothRippleLorentzItem::SawtoothRippleLorentzItem(), SimAnMinimizerItem::SimAnMinimizerItem(), SimulationOptionsItem::SimulationOptionsItem(), SquareLattice2DItem::SquareLattice2DItem(), TetrahedronItem::TetrahedronItem(), TransformationItem::TransformationItem(), TruncatedCubeItem::TruncatedCubeItem(), TruncatedSphereItem::TruncatedSphereItem(), TruncatedSpheroidItem::TruncatedSpheroidItem(), UpperLimitedItem::UpperLimitedItem(), VectorItem::VectorItem(), XRotationItem::XRotationItem(), YRotationItem::YRotationItem(), ZRotationItem::ZRotationItem(), FTDecayFunction1DItem::add_decay_property(), FTDecayFunction2DItem::add_decay_property(), FTDistribution2DItem::add_gamma_property(), FTDecayFunction2DItem::add_gammadelta_property(), FTDistribution2DItem::add_omega_properties(), FTDistribution1DItem::add_omega_property(), and RectangularDetectorItem::update_properties_appearance().

Here is the call graph for this function:

◆ setValue()

bool SessionItem::setValue ( QVariant  value)
inherited

Set value, ensure that variant types match.

Definition at line 403 of file SessionItem.cpp.

404 {
406  return setRoleProperty(Qt::DisplayRole, value);
407 }
bool CompatibleVariantTypes(const QVariant &oldValue, const QVariant &newValue)
Returns true if variants has compatible types.

References ASSERT, SessionItemUtils::CompatibleVariantTypes(), SessionItem::setRoleProperty(), and SessionItem::value().

Referenced by BeamAzimuthalAngleItem::BeamAzimuthalAngleItem(), BeamInclinationAngleItem::BeamInclinationAngleItem(), BeamWavelengthItem::BeamWavelengthItem(), ParameterItem::propagateValueToLink(), SessionItem::setItemValue(), setNativeDataUnits(), SpecularBeamWavelengthItem::setToRange(), JobModelFunctions::setupJobItemInstrument(), GroupItem::updateComboValue(), and VectorItem::updateLabel().

Here is the call graph for this function:

◆ setVisible()

◆ shape()

std::vector< int > RealDataItem::shape ( ) const

Returns the shape of underlying data item.

Definition at line 282 of file RealDataItem.cpp.

283 {
284  auto data_item = dataItem();
285  if (!data_item) {
286  ASSERT(data_item);
287  return {};
288  }
289  return data_item->shape();
290 }

References ASSERT, and dataItem().

Referenced by LinkInstrumentManager::canLinkDataToInstrument(), and OffSpecularInstrumentItem::updateToRealData().

Here is the call graph for this function:

◆ specularDataItem() [1/2]

SpecularDataItem * RealDataItem::specularDataItem ( )

Definition at line 102 of file RealDataItem.cpp.

103 {
104  return dynamic_cast<SpecularDataItem*>(dataItem());
105 }

References dataItem().

Referenced by AutomaticDataLoader1DResultModel::cellText(), QREDataLoader::createOutputDataFromParsingResult(), isSpecularData(), AutomaticDataLoader1D::processContents(), QREDataLoader::processContents(), AutomaticDataLoader1DResultModel::rowCount(), and updateToInstrument().

Here is the call graph for this function:

◆ specularDataItem() [2/2]

const SpecularDataItem * RealDataItem::specularDataItem ( ) const

Definition at line 107 of file RealDataItem.cpp.

108 {
109  return dynamic_cast<const SpecularDataItem*>(dataItem());
110 }

References dataItem().

Here is the call graph for this function:

◆ tagFromItem()

QString SessionItem::tagFromItem ( const SessionItem item) const
inherited

Returns the tag name of given item when existing.

Definition at line 175 of file SessionItem.cpp.

176 {
177  int index = m_children.indexOf(const_cast<SessionItem*>(item));
178  return m_tags->tagFromIndex(index);
179 }

References SessionItem::index(), SessionItem::item(), SessionItem::m_children, and SessionItem::m_tags.

Referenced by SessionItem::displayName(), ParticleItem::isShellParticle(), InstrumentViewActions::onCloneInstrument(), ModelMapper::onDataChanged(), ComponentProxyStrategy::processSourceIndex(), PropertyRepeater::setOnChildPropertyChange(), SessionItem::takeRow(), and SessionXML::writeItemAndChildItems().

Here is the call graph for this function:

◆ takeItem()

SessionItem * SessionItem::takeItem ( int  row,
const QString &  tag 
)
inherited

Remove item from given row from given tag.

Definition at line 257 of file SessionItem.cpp.

258 {
259  const QString tagName = tag.isEmpty() ? defaultTag() : tag;
260  ASSERT(m_tags->isValid(tagName));
261  ASSERT(!m_tags->isSingleItemTag(tagName));
262 
263  int index = m_tags->indexFromTagRow(tagName, row);
264  ASSERT(index >= 0 && index <= m_children.size());
265 
266  if (m_model)
267  m_model->beginRemoveRows(this->index(), index, index);
268  SessionItem* result = m_children.takeAt(index);
269  result->setParentAndModel(nullptr, nullptr);
270 
271  m_tags->removeChild(tagName);
272  if (m_model)
273  m_model->endRemoveRows();
274  return result;
275 }
void setParentAndModel(SessionItem *parent, SessionModel *model)

References ASSERT, SessionItem::defaultTag(), SessionItem::index(), SessionItem::m_children, SessionItem::m_model, SessionItem::m_tags, and SessionItem::setParentAndModel().

Referenced by SessionModel::moveItem(), and SessionItem::takeRow().

Here is the call graph for this function:

◆ takeRow()

SessionItem * SessionItem::takeRow ( int  row)
inherited

Removes row from item and returns the item.

Definition at line 145 of file SessionItem.cpp.

146 {
147  SessionItem* item = childAt(row);
148  QString tag = tagFromItem(item);
149  auto items = getItems(tag);
150  return takeItem(items.indexOf(item), tag);
151 }
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.
SessionItem * takeItem(int row, const QString &tag)
Remove item from given row from given tag.
SessionItem * childAt(int row) const
Returns the child at the given row.

References SessionItem::childAt(), SessionItem::getItems(), SessionItem::item(), SessionItem::tagFromItem(), and SessionItem::takeItem().

Referenced by DetectorItem::clearMasks(), FitComparison1DViewController::deleteDiffViewItem(), SessionModel::moveItem(), ProjectionsEditorCanvas::onLeavingColorMap(), and SessionModel::removeRows().

Here is the call graph for this function:

◆ toolTip()

QString SessionItem::toolTip ( ) const
inherited

Definition at line 522 of file SessionItem.cpp.

523 {
524  return roleProperty(Qt::ToolTipRole).toString();
525 }

References SessionItem::roleProperty(), and SessionItemUtils::ToolTipRole().

Referenced by IView::setParameterizedItem(), and SessionItemUtils::ToolTipRole().

Here is the call graph for this function:

◆ translateList()

QStringList SessionItem::translateList ( const QStringList &  list) const
virtualinherited

Reimplemented in MesoCrystalItem, InstrumentItem, and GroupItem.

Definition at line 556 of file SessionItem.cpp.

557 {
558  QStringList result = list;
559  for (const IPathTranslator* translator : m_translators)
560  result = translator->translate(result);
561  // TODO consider adding displayName before translators
562  result << displayName();
563  return result;
564 }

References SessionItem::displayName(), and SessionItem::m_translators.

Referenced by ModelPath::itemPathTranslation(), InstrumentItem::translateList(), and MesoCrystalItem::translateList().

Here is the call graph for this function:

◆ updateNonXMLDataFileNames()

void RealDataItem::updateNonXMLDataFileNames ( )
private

Updates the name of file to store intensity data.

Definition at line 429 of file RealDataItem.cpp.

430 {
431  if (DataItem* item = dataItem())
432  item->setFileName(ItemFileNameUtils::realDataFileName(*this));
433  if (DataItem* item = nativeData())
434  item->setFileName(ItemFileNameUtils::nativeDataFileName(*this));
435 }
QString nativeDataFileName(const RealDataItem &realDataItem)
QString realDataFileName(const RealDataItem &realDataItem)
Constructs the name of the intensity file belonging to real data item.

References dataItem(), SessionItem::item(), nativeData(), ItemFileNameUtils::nativeDataFileName(), and ItemFileNameUtils::realDataFileName().

Referenced by RealDataItem().

Here is the call graph for this function:

◆ updateToInstrument() [1/2]

void RealDataItem::updateToInstrument ( const InstrumentItem instrument)

Definition at line 447 of file RealDataItem.cpp.

448 {
449  DataItem* data_item = dataItem();
450  if (!data_item)
451  return;
452 
453  if (instrument) {
454  JobItemUtils::setIntensityItemAxesUnits(data_item, instrument);
455  return;
456  }
457 
458  // unlinking => going back to native data
459  if (isSpecularData()) {
460  if (hasNativeData()) {
461  std::unique_ptr<OutputData<double>> native_data(nativeData()->getOutputData()->clone());
462  const QString units_label = nativeDataUnits();
463  data_item->reset(ImportDataInfo(std::move(native_data), units_label));
464  } else {
465  specularDataItem()->setOutputData(nullptr);
466  }
467  } else {
468  auto native_data_item = nativeData();
469  auto data_source = native_data_item ? native_data_item : data_item;
470 
471  std::unique_ptr<OutputData<double>> native_data(data_source->getOutputData()->clone());
472  const QString units_label = nativeDataUnits();
473  data_item->reset(ImportDataInfo(std::move(native_data), units_label));
474  }
475 }
Carries information about loaded data.
void setOutputData(OutputData< double > *data) override
The given pointer becomes owned by this class!!
void setIntensityItemAxesUnits(DataItem *intensityItem, const InstrumentItem *instrumentItem)
Sets axes units suitable for given instrument.
@ clone
full deep copying with item identifiers preserved

References dataItem(), hasNativeData(), isSpecularData(), nativeData(), nativeDataUnits(), DataItem::reset(), JobItemUtils::setIntensityItemAxesUnits(), SpecularDataItem::setOutputData(), and specularDataItem().

Referenced by RealDataPropertiesWidget::onInstrumentComboIndexChanged(), and updateToInstrument().

Here is the call graph for this function:

◆ updateToInstrument() [2/2]

void RealDataItem::updateToInstrument ( const QString &  id)

Definition at line 477 of file RealDataItem.cpp.

478 {
479  updateToInstrument(instrumentModel()->findInstrumentById(id));
480 }
void updateToInstrument(const InstrumentItem *instrument)

References instrumentModel(), and updateToInstrument().

Here is the call graph for this function:

◆ value()

QVariant SessionItem::value ( ) const
inherited

Get value.

Definition at line 396 of file SessionItem.cpp.

397 {
398  return roleProperty(Qt::DisplayRole);
399 }

References SessionItem::roleProperty().

Referenced by SessionItemUtils::CheckStateRole(), PointwiseAxisItem::createAxis(), PropertyEditorFactory::CreateEditor(), FitParameterHelper::createFitParameter(), SessionItemUtils::DecorationRole(), SessionModel::flags(), SessionItem::getItemValue(), DistributionNoneItem::init_distribution(), DistributionGateItem::init_distribution(), DistributionLorentzItem::init_distribution(), DistributionGaussianItem::init_distribution(), DistributionLogNormalItem::init_distribution(), DistributionCosineItem::init_distribution(), DistributionTrapezoidItem::init_distribution(), DistributionItem::init_parameters(), FitParameterItem::initMinMaxValues(), FitParameterItem::isValid(), ComponentTreeView::onCustomContextMenuRequested(), GroupItem::onValueChange(), BeamDistributionItem::resetToValue(), BeamItem::setAzimuthalAngle(), BasicAxisItem::setBinCount(), BeamItem::setInclinationAngle(), SpecularBeamItem::setInclinationAngle(), BeamItem::setIntensity(), SessionItem::setLimits(), AmplitudeAxisItem::setLogScale(), BasicAxisItem::setLowerBound(), Data1DViewItem::setLowerX(), IntensityDataItem::setLowerX(), SpecularDataItem::setLowerX(), Data1DViewItem::setLowerY(), IntensityDataItem::setLowerY(), SpecularDataItem::setLowerY(), SessionItem::setRoleProperty(), JobModelFunctions::setupJobItemSampleData(), BasicAxisItem::setUpperBound(), Data1DViewItem::setUpperX(), IntensityDataItem::setUpperX(), SpecularDataItem::setUpperX(), Data1DViewItem::setUpperY(), IntensityDataItem::setUpperY(), SpecularDataItem::setUpperY(), SessionItem::setValue(), BeamItem::setWavelength(), VectorItem::setX(), VectorItem::setY(), VectorItem::setZ(), SessionItemUtils::ToolTipRole(), and SessionXML::writeItemAndChildItems().

Here is the call graph for this function:

Friends And Related Function Documentation

◆ TestView

friend class TestView
friend

Definition at line 39 of file RealDataItem.h.

Member Data Documentation

◆ m_children

◆ m_dataLoader

std::unique_ptr<AbstractDataLoader> RealDataItem::m_dataLoader
private

◆ m_importSettings

QByteArray RealDataItem::m_importSettings
private

Definition at line 127 of file RealDataItem.h.

Referenced by deserializeBinaryData().

◆ m_mapper

std::unique_ptr<ModelMapper> SessionItem::m_mapper
privateinherited

◆ m_model

◆ m_nativeFileName

QString RealDataItem::m_nativeFileName
private

◆ m_parent

SessionItem* SessionItem::m_parent
privateinherited

◆ m_properties

std::unique_ptr<SessionItemData> SessionItem::m_properties
privateinherited

◆ m_tags

◆ m_translators

QVector<IPathTranslator*> SessionItem::m_translators
privateinherited

◆ P_INSTRUMENT_ID

const QString RealDataItem::P_INSTRUMENT_ID = "Instrument Id"
static

Definition at line 42 of file RealDataItem.h.

Referenced by RealDataItem(), clearInstrumentId(), instrumentId(), and setInstrumentId().

◆ P_INSTRUMENT_NAME

const QString RealDataItem::P_INSTRUMENT_NAME = "Instrument"
staticprivate

Definition at line 46 of file RealDataItem.h.

Referenced by RealDataItem().

◆ P_NAME

◆ P_NATIVE_DATA_UNITS

const QString RealDataItem::P_NATIVE_DATA_UNITS = "Native user data units"
staticprivate

Definition at line 48 of file RealDataItem.h.

Referenced by RealDataItem(), nativeDataUnits(), and setNativeDataUnits().

◆ T_INTENSITY_DATA

const QString RealDataItem::T_INTENSITY_DATA = "Intensity data"
staticprivate

◆ T_NATIVE_DATA

const QString RealDataItem::T_NATIVE_DATA = "Native user data axis"
staticprivate

Definition at line 47 of file RealDataItem.h.

Referenced by RealDataItem(), initNativeData(), nativeData(), and setImportData().


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