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

Classes

struct  SessionItemImpl
 

Public Member Functions

 SessionItem (const QString &modelType="")
 Constructs new item with given model type. The type must be defined. More...
 
virtual ~SessionItem ()
 Destructor deletes all its children and request parent to delete this item. More...
 
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...
 
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_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...
 
void setModel (SessionModel *model)
 
void setParentAndModel (SessionItem *parent, SessionModel *model)
 

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
 

Friends

class SessionModel
 

Detailed Description

Definition at line 33 of file SessionItem.h.

Constructor & Destructor Documentation

◆ SessionItem()

SessionItem::SessionItem ( const QString &  modelType = "")
explicit

Constructs new item with given model type. The type must be defined.

Definition at line 28 of file SessionItem.cpp.

29  : m_parent(nullptr)
30  , m_model(nullptr)
32  , m_tags(new SessionItemTags)
33 {
34  ASSERT(!modelType.isEmpty());
35 
38  setDecimals(3);
40 }
#define ASSERT(condition)
Definition: Assert.h:31
static RealLimits nonnegative()
Creates an object which can have only positive values with 0. included.
Definition: RealLimits.cpp:115
Handles all data roles for SessionItem.
Holds all tag info for SessionItem.
SessionItem & setDecimals(int n)
std::unique_ptr< SessionItemData > m_properties
Definition: SessionItem.h:145
void setDisplayName(const QString &display_name)
Set display name.
SessionModel * m_model
Definition: SessionItem.h:143
std::unique_ptr< SessionItemTags > m_tags
Definition: SessionItem.h:146
QString modelType() const
Get model type.
SessionItem * m_parent
Definition: SessionItem.h:142
bool setRoleProperty(int role, const QVariant &value)
Set variant to role, create role if not present yet.
SessionItem & setLimits(const RealLimits &value)

References ASSERT, modelType(), SessionFlags::ModelTypeRole, RealLimits::nonnegative(), setDecimals(), setDisplayName(), setLimits(), and setRoleProperty().

Here is the call graph for this function:

◆ ~SessionItem()

SessionItem::~SessionItem ( )
virtual

Destructor deletes all its children and request parent to delete this item.

Definition at line 44 of file SessionItem.cpp.

45 {
46  if (m_mapper)
47  m_mapper->callOnItemDestroy();
48 
49  QVector<SessionItem*>::const_iterator it;
50  for (it = m_children.constBegin(); it != m_children.constEnd(); ++it) {
51  SessionItem* child = *it;
52  if (child)
53  child->setModel(nullptr);
54  delete child;
55  }
56  m_children.clear();
57  if (m_parent && m_model)
58  m_parent->childDeleted(this);
59 
60  for (IPathTranslator* translator : m_translators)
61  delete translator;
62 }
QVector< SessionItem * > m_children
Definition: SessionItem.h:144
QVector< IPathTranslator * > m_translators
Definition: SessionItem.h:148
std::unique_ptr< ModelMapper > m_mapper
Definition: SessionItem.h:147
void setModel(SessionModel *model)
void childDeleted(SessionItem *child)

References childDeleted(), m_children, m_mapper, m_model, m_parent, m_translators, and setModel().

Here is the call graph for this function:

Member Function Documentation

◆ acceptableDefaultItemTypes()

QVector< QString > SessionItem::acceptableDefaultItemTypes ( ) const

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.

References defaultTag(), and m_tags.

Here is the call graph for this function:

◆ acceptsAsDefaultItem()

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

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 defaultTag(), and m_tags.

Here is the call graph for this function:

◆ addGroupProperty()

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

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 }
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.
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 * 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(), groupItem(), insertItem(), SessionItemUtils::IsValidGroup(), registerTag(), and 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)

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, insertItem(), registerTag(), and setDisplayName().

Here is the call graph for this function:

◆ addProperty() [2/2]

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

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(), insertItem(), isTag(), RealSpace::Particles::name(), and 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::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 setItemName().

Here is the call graph for this function:

◆ addTranslator()

void SessionItem::addTranslator ( const IPathTranslator translator)

Definition at line 566 of file SessionItem.cpp.

567 {
568  m_translators.push_back(translator.clone());
569 }
virtual IPathTranslator * clone() const =0

References IPathTranslator::clone(), and 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 
)
private

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

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

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

Here is the call graph for this function:

◆ childAt()

SessionItem * SessionItem::childAt ( int  row) const

Returns the child at the given row.

Definition at line 108 of file SessionItem.cpp.

109 {
110  return m_children.value(row, nullptr);
111 }

References m_children.

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

◆ childDeleted()

void SessionItem::childDeleted ( SessionItem child)
private

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, index(), m_children, and rowOfChild().

Referenced by ~SessionItem().

Here is the call graph for this function:

◆ children()

◆ decimals()

int SessionItem::decimals ( ) const

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

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

Here is the call graph for this function:

◆ defaultTag()

QString SessionItem::defaultTag ( ) const

Get default tag.

Definition at line 411 of file SessionItem.cpp.

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

References SessionFlags::DefaultTagRole, and roleProperty().

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

Here is the call graph for this function:

◆ deserializeBinaryData()

void SessionItem::deserializeBinaryData ( const QByteArray &  data)
virtual

Reimplemented in RealDataItem.

Definition at line 576 of file SessionItem.cpp.

576 {}

Referenced by SessionXML::readItems().

◆ displayName()

QString SessionItem::displayName ( ) const

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 tagFromItem(const SessionItem *item) const
Returns the tag name of given item when existing.

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

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

Here is the call graph for this function:

◆ editorType()

QString SessionItem::editorType ( ) const

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

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

Here is the call graph for this function:

◆ emitDataChanged()

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

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 }
QModelIndex indexOfItem(SessionItem *item) const

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

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

Here is the call graph for this function:

◆ flags()

int SessionItem::flags ( ) const
private

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, roleProperty(), and SessionFlags::VISIBLE.

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

Here is the call graph for this function:

◆ getChildOfType()

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

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 m_children.

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

◆ getChildrenOfType()

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

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 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
private

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 item(), m_children, and P_NAME.

Referenced by displayName().

Here is the call graph for this function:

◆ getGroupItem()

◆ getItem()

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

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, defaultTag(), index(), m_children, and 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(), 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(), item(), RealDataMaskWidget::maskContainer(), IntensityDataItem::maskContainerItem(), DetectorItem::maskContainerItem(), JobItem::materialContainerItem(), LayerItem::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(), 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(), 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

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, defaultTag(), index(), m_children, and 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(), 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

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, getItem(), isTag(), and 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(), 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

Returns vector of all present roles.

Definition at line 372 of file SessionItem.cpp.

373 {
374  return m_properties->roles();
375 }

References m_properties.

Referenced by SessionXML::writeItemAndChildItems().

◆ groupItem()

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

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

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

Here is the call graph for this function:

◆ hasChildren()

bool SessionItem::hasChildren ( ) const

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 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 = "" 
)

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, defaultTag(), index(), item(), m_children, m_model, and m_tags.

Referenced by GroupItemController::GroupItemController(), addGroupProperty(), DataPropertyContainer::addItem(), 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

Definition at line 495 of file SessionItem.cpp.

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

References SessionFlags::EDITABLE, and flags().

Referenced by SessionModel::flags().

Here is the call graph for this function:

◆ isEnabled()

bool SessionItem::isEnabled ( ) const

Definition at line 490 of file SessionItem.cpp.

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

References SessionFlags::ENABLED, and 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

Definition at line 485 of file SessionItem.cpp.

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

References 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

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 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(), getCopyNumberOfChild(), InstrumentItem::initBackgroundGroup(), BeamDistributionItem::initDistributionItem(), insertItem(), Data1DViewItem::jobItem(), ParticleItem::materialPropertyItems(), ParameterItem::propagateValueToLink(), DataPropertyContainer::propertyItems(), DetectorItem::register_resolution_function(), DataProperties::setDataItem(), TransformFromDomain::setDetectorProperties(), TransformFromDomain::setGISASBeamItem(), TransformToDomain::setPositionInfo(), TransformFromDomain::setRectangularDetector(), tagFromItem(), 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

Get item name, return display name if no name is set.

Definition at line 454 of file SessionItem.cpp.

455 {
456  return isTag(P_NAME) ? getItemValue(P_NAME).toString() : displayName();
457 }
QString displayName() const
Get display name of item, append index if ambigue.
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References displayName(), getItemValue(), isTag(), and P_NAME.

Referenced by JobModel::addJob(), MaterialItem::createMaterial(), ModelPath::getIndexFromPath(), ItemFileNameUtils::jobReferenceFileName(), ItemFileNameUtils::jobResultsFileName(), ParameterItem::linkedItem(), MaterialItemUtils::materialProperty(), InstrumentItem::name(), RealDataItem::name(), InstrumentViewActions::onCloneInstrument(), JobListViewDelegate::paint(), MaskGraphicsScene::setItemName(), JobSelectorActions::setupEqualizeMenu(), JobModelFunctions::setupJobItemInstrument(), ProjectionsPlot::subscribeToItem(), ColorMap::subscribeToItem(), Plot1D::subscribeToItem(), SpecularPlot::subscribeToItem(), and InstrumentEditorWidget::updateWidgets().

Here is the call graph for this function:

◆ limits()

◆ mapper()

ModelMapper * SessionItem::mapper ( )

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 }

References 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::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().

◆ model()

◆ modelType()

QString SessionItem::modelType ( ) const

Get model type.

Definition at line 389 of file SessionItem.cpp.

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

References SessionFlags::ModelTypeRole, and roleProperty().

Referenced by GSLMultiMinimizerItem::GSLMultiMinimizerItem(), InstrumentItem::InstrumentItem(), MinuitMinimizerItem::MinuitMinimizerItem(), RectangleItem::RectangleItem(), 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(), 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(), 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:

◆ numberOfChildren()

int SessionItem::numberOfChildren ( ) const

◆ parent()

SessionItem * SessionItem::parent ( ) const

Returns parent of this item.

Definition at line 73 of file SessionItem.cpp.

74 {
75  return m_parent;
76 }

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

◆ registerTag()

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

◆ roleProperty()

QVariant SessionItem::roleProperty ( int  role) const

Returns corresponding variant under given role, invalid variant when role is not present.

Definition at line 355 of file SessionItem.cpp.

356 {
357  return m_properties->data(role);
358 }

References m_properties.

Referenced by PropertyEditorFactory::CreateEditor(), decimals(), defaultTag(), displayName(), editorType(), flags(), limits(), modelType(), toolTip(), value(), and SessionXML::writeItemAndChildItems().

◆ rowOfChild()

int SessionItem::rowOfChild ( SessionItem child) const

Returns row index of given child.

Definition at line 115 of file SessionItem.cpp.

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

References m_children.

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

◆ serializeBinaryData()

QByteArray SessionItem::serializeBinaryData ( ) const
virtual

Reimplemented in RealDataItem.

Definition at line 571 of file SessionItem.cpp.

572 {
573  return QByteArray();
574 }

Referenced by SessionXML::writeItemAndChildItems().

◆ sessionItemTags()

SessionItemTags * SessionItem::sessionItemTags ( )

Definition at line 168 of file SessionItem.cpp.

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

References m_tags.

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

◆ setDecimals()

◆ setDefaultTag()

◆ setDisplayName()

void SessionItem::setDisplayName ( const QString &  display_name)

Set display name.

Definition at line 448 of file SessionItem.cpp.

449 {
451 }

References SessionFlags::DisplayNameRole, and setRoleProperty().

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

Here is the call graph for this function:

◆ setEditable()

void SessionItem::setEditable ( bool  enabled)

Definition at line 480 of file SessionItem.cpp.

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

References 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

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 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)

Set item name, add property if necessary.

Definition at line 460 of file SessionItem.cpp.

461 {
462  if (isTag(P_NAME))
464  else
466 }
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References addProperty(), isTag(), RealSpace::Particles::name(), P_NAME, and setItemValue().

Referenced by DepthProbeInstrumentItem::DepthProbeInstrumentItem(), EllipseItem::EllipseItem(), HorizontalLineItem::HorizontalLineItem(), InstrumentItem::InstrumentItem(), JobItem::JobItem(), MaskAllItem::MaskAllItem(), MaterialItem::MaterialItem(), MaterialItemContainer::MaterialItemContainer(), MultiLayerItem::MultiLayerItem(), PolygonItem::PolygonItem(), PolygonPointItem::PolygonPointItem(), RealDataItem::RealDataItem(), RectangleItem::RectangleItem(), VerticalLineItem::VerticalLineItem(), InstrumentViewActions::initAddInstrumentMenu(), InstrumentEditorWidget::onChangedEditor(), GUIDomainSampleVisitor::populateSampleModel(), ApplicationModels::resetModels(), MaskGraphicsScene::setItemName(), InstrumentItem::setName(), RealDataItem::setName(), and GUIDomainSampleVisitor::visit().

Here is the call graph for this function:

◆ setItemValue()

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

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, getItem(), isTag(), and 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(), 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)

Definition at line 505 of file SessionItem.cpp.

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

References SessionFlags::LimitsRole, setRoleProperty(), and 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(), 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)
private

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 m_children, m_mapper, m_model, and model().

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

Here is the call graph for this function:

◆ setParentAndModel()

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

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

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

Referenced by takeItem().

Here is the call graph for this function:

◆ setRoleProperty()

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

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 emitDataChanged(), m_properties, and value().

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

Here is the call graph for this function:

◆ setToolTip()

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

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 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)

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(), setRoleProperty(), and value().

Referenced by BeamAzimuthalAngleItem::BeamAzimuthalAngleItem(), BeamInclinationAngleItem::BeamInclinationAngleItem(), BeamWavelengthItem::BeamWavelengthItem(), ParameterItem::propagateValueToLink(), 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

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 index(), item(), m_children, and m_tags.

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

Here is the call graph for this function:

◆ takeItem()

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

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, defaultTag(), index(), m_children, m_model, m_tags, and setParentAndModel().

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

Here is the call graph for this function:

◆ takeRow()

SessionItem * SessionItem::takeRow ( int  row)

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 childAt(), getItems(), item(), tagFromItem(), and 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

Definition at line 522 of file SessionItem.cpp.

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

References 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
virtual

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 displayName(), and m_translators.

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

Here is the call graph for this function:

◆ value()

QVariant SessionItem::value ( ) const

Get value.

Definition at line 396 of file SessionItem.cpp.

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

References roleProperty().

Referenced by SessionItemUtils::CheckStateRole(), PointwiseAxisItem::createAxis(), PropertyEditorFactory::CreateEditor(), FitParameterHelper::createFitParameter(), SessionItemUtils::DecorationRole(), SessionModel::flags(), 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(), setLimits(), AmplitudeAxisItem::setLogScale(), BasicAxisItem::setLowerBound(), Data1DViewItem::setLowerX(), IntensityDataItem::setLowerX(), SpecularDataItem::setLowerX(), Data1DViewItem::setLowerY(), IntensityDataItem::setLowerY(), SpecularDataItem::setLowerY(), setRoleProperty(), JobModelFunctions::setupJobItemSampleData(), BasicAxisItem::setUpperBound(), Data1DViewItem::setUpperX(), IntensityDataItem::setUpperX(), SpecularDataItem::setUpperX(), Data1DViewItem::setUpperY(), IntensityDataItem::setUpperY(), SpecularDataItem::setUpperY(), 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

◆ SessionModel

friend class SessionModel
friend

Definition at line 34 of file SessionItem.h.

Member Data Documentation

◆ m_children

◆ m_mapper

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

Definition at line 147 of file SessionItem.h.

Referenced by ~SessionItem(), mapper(), and setModel().

◆ m_model

SessionModel* SessionItem::m_model
private

Definition at line 143 of file SessionItem.h.

Referenced by ~SessionItem(), emitDataChanged(), insertItem(), model(), setModel(), and takeItem().

◆ m_parent

SessionItem* SessionItem::m_parent
private

Definition at line 142 of file SessionItem.h.

Referenced by ~SessionItem(), displayName(), parent(), and setParentAndModel().

◆ m_properties

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

Definition at line 145 of file SessionItem.h.

Referenced by getRoles(), roleProperty(), and setRoleProperty().

◆ m_tags

std::unique_ptr<SessionItemTags> SessionItem::m_tags
private

◆ m_translators

QVector<IPathTranslator*> SessionItem::m_translators
private

Definition at line 148 of file SessionItem.h.

Referenced by ~SessionItem(), addTranslator(), and translateList().

◆ P_NAME


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