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

Public Member Functions

 LayerItem ()
 
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...
 
int decimals () const
 
QString defaultTag () const
 Get default tag. More...
 
virtual void deserializeBinaryData (const QByteArray &data)
 
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...
 
QModelIndex index () const
 Returns model index of this item. More...
 
bool insertItem (int row, SessionItem *item, const QString &tag="")
 Insert item into given tag into given row. More...
 
template<typename T >
bool is () const
 
bool isEditable () const
 
bool isEnabled () 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
 
ModelMappermapper ()
 Returns the current model mapper of this item. Creates new one if necessary. More...
 
QVector< SessionItem * > materialPropertyItems ()
 
SessionModelmodel () const
 Returns model of this item. More...
 
QString modelType () const
 Get model type. More...
 
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...
 
QVariant roleProperty (int role) const
 Returns corresponding variant under given role, invalid variant when role is not present. More...
 
int rowOfChild (SessionItem *child) const
 Returns row index of given child. More...
 
virtual QByteArray serializeBinaryData () const
 
SessionItemTagssessionItemTags ()
 
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 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)
 
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...
 
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
 
QVariant value () const
 Get value. More...
 

Static Public Attributes

static const QString P_MATERIAL = "Material"
 
static const QString P_NAME = "Name"
 
static const QString P_NSLICES = "Number of slices"
 
static const QString P_ROUGHNESS = "Top roughness"
 
static const QString P_THICKNESS = QString::fromStdString("Thickness")
 
static const QString P_XPOS = "xpos"
 
static const QString P_YPOS = "ypos"
 
static const QString T_LAYOUTS = "Layout tag"
 

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...
 
void setModel (SessionModel *model)
 
void setParentAndModel (SessionItem *parent, SessionModel *model)
 
void updateAppearance (SessionItem *new_parent)
 

Private Attributes

QVector< SessionItem * > m_children
 
std::unique_ptr< ModelMapperm_mapper
 
SessionModelm_model
 
SessionItemm_parent
 
std::unique_ptr< SessionItemDatam_properties
 
std::unique_ptr< SessionItemTagsm_tags
 
QVector< IPathTranslator * > m_translators
 

Detailed Description

Definition at line 20 of file LayerItem.h.

Constructor & Destructor Documentation

◆ LayerItem()

LayerItem::LayerItem ( )

Definition at line 30 of file LayerItem.cpp.

30  : SessionGraphicsItem("Layer")
31 {
32  setToolTip("A layer with thickness and material");
35  .setToolTip("Thickness of a layer in nanometers");
36 
38  ->setToolTip("Material the layer is made of")
39  .setEditorType("ExtMaterialEditor");
40 
43  .setToolTip(layer_nslices_tooltip);
44 
45  addGroupProperty(P_ROUGHNESS, "Roughness")->setToolTip("Roughness of top interface");
46 
47  registerTag(T_LAYOUTS, 0, -1, QStringList() << "ParticleLayout");
49 
50  mapper()->setOnParentChange([this](SessionItem* new_parent) { updateAppearance(new_parent); });
51 }
static const QString T_LAYOUTS
Definition: LayerItem.h:26
static const QString P_MATERIAL
Definition: LayerItem.h:24
static const QString P_THICKNESS
Definition: LayerItem.h:22
static const QString P_ROUGHNESS
Definition: LayerItem.h:23
static const QString P_NSLICES
Definition: LayerItem.h:25
void updateAppearance(SessionItem *new_parent)
Definition: LayerItem.cpp:63
void setOnParentChange(std::function< void(SessionItem *)> f, const void *caller=0)
Calls back when parent has changed, reports newParent.
Definition: ModelMapper.cpp:60
static RealLimits lowerLimited(double bound_value)
Creates an object bounded from the left.
Definition: RealLimits.cpp:105
SessionGraphicsItem(const QString &model_type="")
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.
SessionItem & setEditorType(const QString &editorType)
SessionItem * addGroupProperty(const QString &groupTag, const QString &groupType)
Creates new group item and register new tag, returns GroupItem.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
void setDefaultTag(const QString &tag)
Set default tag.
SessionItem & setToolTip(const QString &tooltip)
SessionItem & setLimits(const RealLimits &value)
ExternalProperty defaultMaterialProperty()

References SessionItem::addGroupProperty(), SessionItem::addProperty(), MaterialItemUtils::defaultMaterialProperty(), RealLimits::lowerLimited(), SessionItem::mapper(), P_MATERIAL, P_NSLICES, P_ROUGHNESS, P_THICKNESS, SessionItem::registerTag(), SessionItem::setDefaultTag(), SessionItem::setEditorType(), SessionItem::setLimits(), ModelMapper::setOnParentChange(), SessionItem::setToolTip(), T_LAYOUTS, and updateAppearance().

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

◆ 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 SessionItem::deserializeBinaryData ( const QByteArray &  data)
virtualinherited

Reimplemented in RealDataItem.

Definition at line 576 of file SessionItem.cpp.

576 {}

Referenced by SessionXML::readItems().

◆ 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 }
static const QString P_NAME
Definition: SessionItem.h:37
T * item(const QString &tag) const
Definition: SessionItem.h:151

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(), RealDataItem::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(), RealDataItem::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(), materialPropertyItems(), ParticleCoreShellItem::materialPropertyItems(), ParticleItem::materialPropertyItems(), JobItem::multiLayerItem(), JobModelFunctions::muteMagnetizationData(), RealDataItem::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(), RealDataItem::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(), 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(), 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.
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.

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

◆ index()

◆ 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:

◆ 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:

◆ 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::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(), RealDataItem::updateNonXMLDataFileNames(), ParticleView::updatePixmap(), ParticleView::updateToolTip(), SpecularInstrumentItem::updateToRealData(), GISASInstrumentItem::updateToRealData(), SpecularBeamItem::updateWavelength(), and GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ itemName()

QString SessionItem::itemName ( ) const
inherited

◆ limits()

◆ 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(), MesoCrystalItem::MesoCrystalItem(), MultiLayerItem::MultiLayerItem(), ParticleCompositionItem::ParticleCompositionItem(), ParticleCoreShellItem::ParticleCoreShellItem(), ParticleDistributionItem::ParticleDistributionItem(), ParticleItem::ParticleItem(), ParticleLayoutItem::ParticleLayoutItem(), PointwiseAxisItem::PointwiseAxisItem(), RealDataItem::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().

◆ materialPropertyItems()

QVector< SessionItem * > LayerItem::materialPropertyItems ( )

Definition at line 53 of file LayerItem.cpp.

54 {
55  QVector<SessionItem*> result;
56  if (auto property = getItem(LayerItem::P_MATERIAL))
57  result.push_back(property);
58  for (auto layout : getItems(LayerItem::T_LAYOUTS))
59  result.append(MaterialItemUtils::materialPropertyItems(layout));
60  return result;
61 }
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.
QVector< SessionItem * > materialPropertyItems(SessionItem *item)
Gather material property items from a given item.

References SessionItem::getItem(), SessionItem::getItems(), MaterialItemUtils::materialPropertyItems(), P_MATERIAL, and T_LAYOUTS.

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(), updateAppearance(), SampleValidator::validateItem(), GUIDomainSampleVisitor::visit(), ParameterTreeUtils::visitParameterContainer(), TransformTo3D::visualLayerThickness(), and SessionXML::writeItemAndChildItems().

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(), RealDataItem::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(), updateAppearance(), and SessionXML::writeItemAndChildItems().

◆ registerTag()

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

◆ roleProperty()

QVariant SessionItem::roleProperty ( int  role) const
inherited

◆ 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 SessionItem::serializeBinaryData ( ) const
virtualinherited

Reimplemented in RealDataItem.

Definition at line 571 of file SessionItem.cpp.

572 {
573  return QByteArray();
574 }

Referenced by SessionXML::writeItemAndChildItems().

◆ 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().

◆ 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:

◆ setItemName()

void SessionItem::setItemName ( const QString &  name)
inherited

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

◆ 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 }
SessionItem * parent() const
Returns parent of this item.
Definition: SessionItem.cpp:73
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(), 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(), RealDataItem::setNativeDataUnits(), SpecularBeamWavelengthItem::setToRange(), JobModelFunctions::setupJobItemInstrument(), GroupItem::updateComboValue(), and VectorItem::updateLabel().

Here is the call graph for this function:

◆ setVisible()

◆ 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 }
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:

◆ updateAppearance()

void LayerItem::updateAppearance ( SessionItem new_parent)
private

Definition at line 63 of file LayerItem.cpp.

64 {
65  if (!new_parent) {
66  if (parent() && parent()->modelType() == "MultiLayer") {
67  // we are about to be removed from MultiLayer
70  }
71  }
72 }
void setEnabled(bool enabled)

References SessionItem::getItem(), SessionItem::modelType(), P_ROUGHNESS, P_THICKNESS, SessionItem::parent(), and SessionItem::setEnabled().

Referenced by LayerItem().

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:

Member Data Documentation

◆ m_children

◆ m_mapper

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

◆ m_model

◆ 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_MATERIAL

◆ P_NAME

◆ P_NSLICES

const QString LayerItem::P_NSLICES = "Number of slices"
static

◆ P_ROUGHNESS

◆ P_THICKNESS

◆ P_XPOS

◆ P_YPOS

◆ T_LAYOUTS

const QString LayerItem::T_LAYOUTS = "Layout tag"
static

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