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

Description

Provides access to experimental data, for display and fitting. Owns an AbstractDataLoader.

Definition at line 33 of file RealDataItem.h.

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

Signals

void importContentsProcessed ()
 

Public Member Functions

 RealDataItem ()
 
QVector< QString > acceptableDefaultItemTypes () const
 Returns vector of acceptable default tag types. More...
 
bool acceptsAsDefaultItem (const QString &item_name) const
 Returns true if model type can be added to default tag. More...
 
SessionItemaddGroupProperty (const QString &groupTag, const GroupInfo &groupInfo)
 
template<typename T >
T * addProperty (const QString &name)
 
SessionItemaddProperty (const QString &name, const QVariant &variant)
 Add new property item and register new tag. name is the tag name and the display name. The property's value will be set to variant. More...
 
virtual bool allowWritingChildToXml (SessionItem *child) const
 
SessionItemchildAt (int row) const
 Returns the child at the given row. More...
 
QVector< SessionItem * > children () const
 Returns vector of all children. More...
 
template<typename T >
QVector< T * > childrenOfType () const
 
QVector< SessionItem * > childrenOfType (const QString &model_type) const
 Returns a vector of all children of the given type. More...
 
DataItemdataItem ()
 
const DataItemdataItem () const
 
AbstractDataLoaderdataLoader () const
 
QString dataName () const
 The name which is presented to the user. More...
 
int decimals () const
 
QString defaultTag () const
 Get default tag. More...
 
void deserializeBinaryData (const QByteArray &data) override
 
QString displayName () const
 Get display name of item, append index if ambigue. More...
 
void emitDataChanged (int role=Qt::DisplayRole)
 Notify model about data changes. More...
 
template<typename T >
T * firstChildOfType () const
 
SessionItemgetChildOfType (const QString &type) const
 Returns the first child of the given type. More...
 
SessionItemgetGroupItem (const QString &groupName) const
 Access subitem of group item. More...
 
SessionItemgetItem (const QString &tag="", int row=0) const
 Returns item in given row of given tag. More...
 
QVector< SessionItem * > getItems (const QString &tag="") const
 Returns vector of all items of given tag. More...
 
QVariant getItemValue (const QString &tag) const
 Directly access value of item under given tag. More...
 
QVector< int > getRoles () const
 Returns vector of all present roles. More...
 
template<typename T >
T & groupItem (const QString &groupName) const
 
bool hasChildren () const
 Indicates whether this SessionItem has any child items. More...
 
bool hasImportErrors () const
 
template<typename T >
bool hasModelType () const
 
bool hasNativeData () const
 
bool holdsDimensionalData () const
 
void initAsIntensityItem ()
 
void initAsSpecularItem ()
 
void initNativeData ()
 
void insertChild (int row, SessionItem *item, const QString &tag="")
 Insert item into given tag into given row. More...
 
QString instrumentId () const
 
IntensityDataItemintensityDataItem ()
 
const IntensityDataItemintensityDataItem () const
 
bool isEditable () const
 
bool isEnabled () const
 
bool isIntensityData () const
 
bool isSpecularData () const
 
bool isTag (const QString &name) const
 Returns true if tag is available. More...
 
template<typename T >
T * item (const QString &tag) const
 
QString itemName () const
 Get item name, return display name if no name is set. More...
 
template<typename T >
QVector< T * > items (const QString &tag="") const
 
RealLimits limits () const
 
void linkToInstrument (const InstrumentItem *instrument)
 
ModelMappermapper ()
 Returns the current model mapper of this item. Creates new one if necessary. More...
 
MaskContainerItemmaskContainerItem ()
 Returns mask container item. More...
 
SessionModelmodel () const
 Returns model of this item. More...
 
QString modelType () const
 Get model type. More...
 
DataItemnativeData ()
 
const DataItemnativeData () const
 
const Datafield * nativeDatafield () const
 
QString nativeDataUnits () const
 
QString nativeFileName () const
 
int numberOfChildren () const
 Returns total number of children. More...
 
SessionItemparentItem () const
 Returns parent of this item. More...
 
int parentRow ()
 Returns the index of the given item within its parent. Returns -1 when no parent is set. More...
 
virtual void readNonSessionItems (QXmlStreamReader *reader)
 
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. max = -1 -> unlimited, modelTypes empty -> all types allowed. More...
 
void removeNativeData ()
 
QVariant roleProperty (int role) const
 Returns corresponding variant under given role, invalid variant when role is not present. More...
 
void rotateData ()
 
bool rotationAffectsSetup () const
 Returns true, if rotation will affect linked instrument or mask presence. More...
 
int rowOfChild (SessionItem *child) const
 Returns row index of given child. More...
 
QByteArray serializeBinaryData () const override
 
const SessionItemTagssessionItemTags () const
 
void setDatafield (Datafield *data)
 Sets Datafield to underlying item. Creates it if not existing. More...
 
void setDataLoader (AbstractDataLoader *loader)
 Takes ownership of loader. More...
 
void setDataName (const QString &name)
 
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)
 
void setEnabled (bool enabled)
 Flags accessors. More...
 
SessionItemsetGroupProperty (const QString &groupTag, const QString &modelType) const
 Set the current type of group item. More...
 
template<typename T >
T * setGroupPropertyType (const QString &groupTag)
 
void setImportData (ImportDataInfo info)
 Sets imported data to underlying item. Creates it if not existing. This is used for 1D import. For 2D import, use setDatafield. More...
 
void setItemName (const QString &name)
 Set item name, add property if necessary. More...
 
void setItemValue (const QString &tag, const QVariant &variant) const
 Directly set value of item under given tag. More...
 
SessionItemsetLimits (const RealLimits &value)
 
void setNativeDatafield (Datafield *data)
 takes ownership of data More...
 
void setNativeDataUnits (const QString &units)
 
void setNativeFileName (const QString &filename)
 The name from where the native data was originally imported. More...
 
bool setRoleProperty (int role, const QVariant &value)
 Set the contained role property to the given value. See also setTranslatorForRolePropertySetter. More...
 
SessionItemsetToolTip (const QString &tooltip)
 
bool setValue (QVariant value)
 Set value, ensure that variant types match. More...
 
std::vector< int > shape () const
 Returns the shape of underlying data item. More...
 
SpecularDataItemspecularDataItem ()
 
const SpecularDataItemspecularDataItem () const
 
QString tagFromItem (const SessionItem *item) const
 Returns the tag name of given item when existing. More...
 
SessionItemtakeItem (int row, const QString &tag)
 Remove item from given row from given tag. More...
 
SessionItemtakeRow (int row)
 Removes row from item and returns the item. More...
 
QString toolTip () const
 
void unlinkFromInstrument ()
 
void updateNonXMLDataFileNames ()
 Updates the name of file to store intensity data. More...
 
QVariant value () const
 Get value. More...
 
virtual void writeNonSessionItems (QXmlStreamWriter *writer) const
 

Static Public Member Functions

static bool isItemNamePropertyName (const QString &name)
 

Static Public Attributes

static constexpr auto M_TYPE {"RealData"}
 

Private Member Functions

void changeFlags (bool enabled, int flag)
 internal More...
 
void childDeleted (SessionItem *child)
 
int flags () const
 
int getCopyNumberOfChild (const SessionItem *item) const
 internal More...
 
QModelIndex index () const
 
void initDataItem (size_t data_rank, const QString &tag)
 Creates and inserts a data item except if such item with same tag already exists. Checks for rank compatibility if already existing. No further initialization (like clearing the data etc). More...
 
void setModel (SessionModel *model)
 
void setParentAndModel (SessionItem *parent, SessionModel *model)
 
void updateToInstrument (const InstrumentItem *instrument)
 This does not set the link to the instrument! Use linkToInstrument() if you want to link to this instrument. More...
 

Private Attributes

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

Static Private Attributes

static constexpr auto P_INSTRUMENT_ID {"Instrument Id"}
 
static constexpr auto P_NAME {"Name"}
 
static constexpr auto P_NATIVE_DATA_UNITS {"Native user data units"}
 
static constexpr auto T_INTENSITY_DATA {"Intensity data"}
 
static constexpr auto T_NATIVE_DATA {"Native user data axis"}
 

Friends

class TestView
 

Constructor & Destructor Documentation

◆ RealDataItem()

RealDataItem::RealDataItem ( )

Definition at line 30 of file RealDataItem.cpp.

32 {
33  setItemName("undefined");
34 
35  // Registering this tag even without actual data item to avoid troubles in copying RealDataItem
39 
40  addProperty(P_INSTRUMENT_ID, QString());
41 
45 }
static constexpr auto M_TYPE
static constexpr auto P_INSTRUMENT_ID
Definition: RealDataItem.h:39
static constexpr auto T_INTENSITY_DATA
Definition: RealDataItem.h:40
static constexpr auto M_TYPE
Definition: RealDataItem.h:45
static constexpr auto P_NATIVE_DATA_UNITS
Definition: RealDataItem.h:42
static constexpr auto T_NATIVE_DATA
Definition: RealDataItem.h:41
void setItemName(const QString &name)
Set item name, add property if necessary.
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag. name is the tag name and the display name....
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. max = -1 -> unlimited,...
SessionItem(const QString &modelType)
Constructs new item with given model type. The type must be defined.
Definition: SessionItem.cpp:25
void setDefaultTag(const QString &tag)
Set default tag.
static constexpr auto M_TYPE

References SessionItem::addProperty(), IntensityDataItem::M_TYPE, SpecularDataItem::M_TYPE, P_INSTRUMENT_ID, P_NATIVE_DATA_UNITS, SessionItem::registerTag(), SessionItem::setDefaultTag(), SessionItem::setItemName(), T_INTENSITY_DATA, and T_NATIVE_DATA.

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 193 of file SessionItem.cpp.

194 {
195  return m_tags->modelTypesForTag(defaultTag()).toVector();
196 }
QString defaultTag() const
Get default tag.
std::unique_ptr< SessionItemTags > m_tags
Definition: SessionItem.h:334

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 186 of file SessionItem.cpp.

187 {
188  return m_tags->isValid(defaultTag(), item_name);
189 }

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

Here is the call graph for this function:

◆ addGroupProperty()

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

Definition at line 306 of file SessionItem.cpp.

307 {
310  ASSERT(groupItem);
311  groupItem->setGroupInfo(groupInfo);
312  registerTag(groupTag, 1, 1, {GroupItem::M_TYPE});
313  groupItem->setDisplayName(groupTag);
314  insertChild(0, groupItem, groupTag);
315  return groupItem;
316 }
static constexpr auto M_TYPE
Definition: GroupItem.h:30
T & groupItem(const QString &groupName) const
Definition: SessionItem.h:413
void insertChild(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:19

References GUI::Model::ItemFactory::CreateItem(), SessionItem::groupItem(), SessionItem::insertChild(), GroupItem::M_TYPE, and SessionItem::registerTag().

Referenced by MinimizerContainerItem::MinimizerContainerItem().

Here is the call graph for this function:

◆ addProperty() [1/2]

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

Definition at line 394 of file SessionItem.h.

395 {
396  auto property = new T;
397  property->setDisplayName(tagname);
398  registerTag(tagname, 1, 1, QStringList() << property->modelType());
399  insertChild(0, property, tagname);
400  return property;
401 }

References SessionItem::insertChild(), 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. name is the tag name and the display name. The property's value will be set to variant.

Definition at line 278 of file SessionItem.cpp.

279 {
280  ASSERT(!isTag(name));
281 
283  property->setDisplayName(name);
285  insertChild(0, property, name);
286  property->setValue(variant);
287  return property;
288 }
static constexpr auto M_TYPE
Definition: PropertyItem.h:22
Base class for a GUI data item.
Definition: SessionItem.h:204
bool isTag(const QString &name) const
Returns true if tag is available.
QString const & name(EShape k)
Definition: particles.cpp:20

References GUI::Model::ItemFactory::CreateItem(), SessionItem::insertChild(), SessionItem::isTag(), PropertyItem::M_TYPE, GUI::RealSpace::Particles::name(), and SessionItem::registerTag().

Referenced by AmplitudeAxisItem::AmplitudeAxisItem(), BasicAxisItem::BasicAxisItem(), Data1DProperties::Data1DProperties(), Data1DViewItem::Data1DViewItem(), DataItem::DataItem(), DataProperties::DataProperties(), EllipseItem::EllipseItem(), FitParameterItem::FitParameterItem(), FitParameterLinkItem::FitParameterLinkItem(), FitSuiteItem::FitSuiteItem(), GeneticMinimizerItem::GeneticMinimizerItem(), GSLLMAMinimizerItem::GSLLMAMinimizerItem(), GSLMultiMinimizerItem::GSLMultiMinimizerItem(), HorizontalLineItem::HorizontalLineItem(), IntensityDataItem::IntensityDataItem(), JobItem::JobItem(), MaskItem::MaskItem(), MinimizerContainerItem::MinimizerContainerItem(), MinuitMinimizerItem::MinuitMinimizerItem(), PointwiseAxisItem::PointwiseAxisItem(), PolygonItem::PolygonItem(), PolygonPointItem::PolygonPointItem(), RealDataItem(), RectangleItem::RectangleItem(), SimAnMinimizerItem::SimAnMinimizerItem(), SpecularDataItem::SpecularDataItem(), VerticalLineItem::VerticalLineItem(), and SessionItem::setItemName().

Here is the call graph for this function:

◆ allowWritingChildToXml()

bool SessionItem::allowWritingChildToXml ( SessionItem child) const
virtualinherited

Definition at line 528 of file SessionItem.cpp.

529 {
530  return true;
531 }

Referenced by GUI::Session::XML::writeItemAndChildItems().

◆ changeFlags()

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

internal

Definition at line 568 of file SessionItem.cpp.

569 {
570  int flags = this->flags();
571  if (enabled)
572  flags |= flag;
573  else
574  flags &= ~flag;
575 
577 }
int flags() const
bool setRoleProperty(int role, const QVariant &value)
Set the contained role property to the given value. See also setTranslatorForRolePropertySetter.

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

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

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 102 of file SessionItem.cpp.

103 {
104  return m_children.value(row, nullptr);
105 }
QVector< SessionItem * > m_children
Definition: SessionItem.h:332

References SessionItem::m_children.

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

◆ childDeleted()

void SessionItem::childDeleted ( SessionItem child)
privateinherited

Definition at line 533 of file SessionItem.cpp.

534 {
535  int index = rowOfChild(child);
536  ASSERT(index != -1);
537  m_children.replace(index, nullptr);
538 }
int rowOfChild(SessionItem *child) const
Returns row index of given child.
QModelIndex index() const
Returns model index of this item.
Definition: SessionItem.cpp:74

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

Referenced by SessionItem::~SessionItem().

Here is the call graph for this function:

◆ children()

QVector< SessionItem * > SessionItem::children ( ) const
inherited

Returns vector of all children.

Definition at line 95 of file SessionItem.cpp.

96 {
97  return m_children;
98 }

References SessionItem::m_children.

Referenced by MaskContainerItem::maskItems(), DataPropertyContainer::propertyItem(), and GUI::Session::XML::writeItemAndChildItems().

◆ childrenOfType() [1/2]

template<typename T >
QVector< T * > SessionItem::childrenOfType
inherited

Definition at line 372 of file SessionItem.h.

373 {
374  QVector<T*> result;
375  for (auto* child : m_children)
376  if (child->modelType() == T::M_TYPE)
377  result.append(dynamic_cast<T*>(child));
378 
379  return result;
380 }

References SessionItem::m_children.

◆ childrenOfType() [2/2]

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

Returns a vector of all children of the given type.

Definition at line 127 of file SessionItem.cpp.

128 {
129  QVector<SessionItem*> result;
130  for (auto* child : m_children)
131  if (child->modelType() == model_type)
132  result.append(child);
133 
134  return result;
135 }

References SessionItem::m_children.

Referenced by ProjectionsPlot::projectionItems(), and SaveProjectionsAssistant::projectionItems().

◆ dataItem() [1/2]

DataItem * RealDataItem::dataItem ( )

Definition at line 77 of file RealDataItem.cpp.

78 {
79  return const_cast<DataItem*>(static_cast<const RealDataItem*>(this)->dataItem());
80 }
Abstract base class for IntensityDataItem and SpecularDataItem. Owns one simulated data set of type D...
Definition: DataItem.h:34
Provides access to experimental data, for display and fitting. Owns an AbstractDataLoader.
Definition: RealDataItem.h:33
DataItem * dataItem()

Referenced by GUI::Model::JobFunctions::copyRealDataItem(), initDataItem(), GUI::Model::JobFunctions::initDataView(), intensityDataItem(), setDatafield(), setImportData(), FitComparisonController2D::setItem(), shape(), specularDataItem(), DiffItemController::updateDiffData(), updateNonXMLDataFileNames(), and updateToInstrument().

◆ dataItem() [2/2]

const DataItem * RealDataItem::dataItem ( ) const

Definition at line 82 of file RealDataItem.cpp.

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

References SessionItem::getItem(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ dataLoader()

AbstractDataLoader * RealDataItem::dataLoader ( ) const

Definition at line 331 of file RealDataItem.cpp.

332 {
333  return m_dataLoader.get();
334 }
std::unique_ptr< AbstractDataLoader > m_dataLoader
Definition: RealDataItem.h:125

References m_dataLoader.

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

◆ dataName()

QString RealDataItem::dataName ( ) const

The name which is presented to the user.

Definition at line 47 of file RealDataItem.cpp.

48 {
49  return itemName();
50 }
QString itemName() const
Get item name, return display name if no name is set.

References SessionItem::itemName().

Referenced by updateNonXMLDataFileNames().

Here is the call graph for this function:

◆ decimals()

int SessionItem::decimals ( ) const
inherited

Definition at line 484 of file SessionItem.cpp.

485 {
486  return roleProperty(SessionFlags::DecimalRole).toInt();
487 }
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 GUI::View::PropertyEditorFactory::CreateEditor().

Here is the call graph for this function:

◆ defaultTag()

QString SessionItem::defaultTag ( ) const
inherited

Get default tag.

Definition at line 390 of file SessionItem.cpp.

391 {
392  return roleProperty(SessionFlags::DefaultTagRole).toString();
393 }

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

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

Here is the call graph for this function:

◆ deserializeBinaryData()

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

Reimplemented from SessionItem.

Definition at line 291 of file RealDataItem.cpp.

292 {
293  m_nativeFileName.clear();
294  m_importSettings.clear();
295  m_dataLoader.release();
296 
297  QDataStream s(data);
298  s.setVersion(QDataStream::Qt_5_12);
299 
300  quint8 version;
301  s >> version;
302 
303  if (version == 1) {
304  s >> m_nativeFileName;
305  QString persistentLoaderClassName;
306  s >> persistentLoaderClassName;
307  if (!persistentLoaderClassName.isEmpty()) {
309  DataLoaders1D::instance().createFromPersistentName(persistentLoaderClassName));
310  // #baUserDefLoaders ++ implement userdefined loaders (may require new version!)
311  if (!m_dataLoader)
313  s >> *m_dataLoader;
314  m_dataLoader->setRealDataItem(this);
315  }
316  } else
318 
319  if (s.status() != QDataStream::Ok)
321 }
static DataLoaders1D & instance()
The one and only instance.
static DeserializationException streamError()
static DeserializationException tooNew()
QByteArray m_importSettings
Definition: RealDataItem.h:122
void setDataLoader(AbstractDataLoader *loader)
Takes ownership of loader.
QString m_nativeFileName
Definition: RealDataItem.h:123

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

Here is the call graph for this function:

◆ displayName()

QString SessionItem::displayName ( ) const
inherited

Get display name of item, append index if ambigue.

Definition at line 404 of file SessionItem.cpp.

405 {
406  QString result = roleProperty(SessionFlags::DisplayNameRole).toString();
407 
408  if (hasModelType<PropertyItem>() || hasModelType<GroupItem>())
409  return result;
410 
411  if (m_parent) {
412  QString tag = m_parent->tagFromItem(this);
413  // if only one child of this type is allowed, return name without change
415  return result;
416 
417  int index = m_parent->getCopyNumberOfChild(this);
418  if (index >= 0)
419  return result + QString::number(index);
420  }
421  return result;
422 }
bool isSingleItemTag(const QString &tagName) const
const SessionItemTags * sessionItemTags() const
int getCopyNumberOfChild(const SessionItem *item) const
internal
QString tagFromItem(const SessionItem *item) const
Returns the tag name of given item when existing.
SessionItem * m_parent
Definition: SessionItem.h:330

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

Referenced by SelectionDescriptor< T >::SelectionDescriptor(), and SessionItem::itemName().

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 358 of file SessionItem.cpp.

359 {
360  if (m_model) {
361  QModelIndex index = m_model->indexOfItem(this);
362  m_model->dataChanged(index, index.sibling(index.row(), 1), QVector<int>() << role);
363  }
364 }
SessionModel * m_model
Definition: SessionItem.h:331
QModelIndex indexOfItem(SessionItem *item) const

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

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

Here is the call graph for this function:

◆ firstChildOfType()

template<typename T >
T * SessionItem::firstChildOfType
inherited

Definition at line 384 of file SessionItem.h.

385 {
386  for (auto* child : m_children)
387  if (child->modelType() == T::M_TYPE)
388  return dynamic_cast<T*>(child);
389 
390  return nullptr;
391 }

References SessionItem::m_children.

◆ flags()

int SessionItem::flags ( ) const
privateinherited

Definition at line 557 of file SessionItem.cpp.

558 {
560 
561  if (!flags.isValid())
563 
564  return flags.toInt();
565 }

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

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

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 116 of file SessionItem.cpp.

117 {
118  for (auto* child : m_children)
119  if (child->modelType() == type)
120  return child;
121 
122  return nullptr;
123 }

References SessionItem::m_children.

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

◆ getCopyNumberOfChild()

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

internal

Definition at line 580 of file SessionItem.cpp.

581 {
582  if (!item)
583  return -1;
584  int result = -1;
585  int count = 0;
586  QString model_type = item->modelType();
587  // check child items:
588  for (auto* p_child_item : m_children) {
589  QString child_type = p_child_item->modelType();
590  if (p_child_item == item)
591  result = count;
592  if (child_type == model_type && !p_child_item->isTag(P_NAME))
593  ++count;
594  }
595  if (count > 1)
596  return result;
597  return -1;
598 }
T * item(const QString &tag) const
Definition: SessionItem.h:353
static constexpr auto P_NAME
Definition: SessionItem.h:208

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

Referenced by SessionItem::displayName().

Here is the call graph for this function:

◆ getGroupItem()

SessionItem * SessionItem::getGroupItem ( const QString &  groupName) const
inherited

Access subitem of group item.

Definition at line 327 of file SessionItem.cpp.

328 {
329  return item<GroupItem>(groupName)->currentItem();
330 }

Referenced by SessionItem::groupItem(), and SessionItem::setGroupPropertyType().

◆ getItem()

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

Returns item in given row of given tag.

Definition at line 200 of file SessionItem.cpp.

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

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

Referenced by FitParameterItem::FitParameterItem(), EllipseItem::angle(), DataItem::axesUnits(), Data1DViewItem::axesUnitsDescriptor(), BasicAxisItem::binsItem(), FitSuiteItem::createFitParametersContainer(), JobItem::createFitSuiteItem(), FitSuiteItem::createMinimizerContainer(), JobItem::dataItem(), dataItem(), JobItem::dataItemView(), JobItem::fitSuiteItem(), DataItem::getAxesUnitsItem(), SessionItem::getItemValue(), IntensityDataItem::gradient(), initDataItem(), FitParameterItem::initMinMaxValues(), JobItem::intensityDataItem(), JobItem::isValidForFitting(), SessionItem::item(), FitParameterLinkItem::linkItem(), AmplitudeAxisItem::logScaleItem(), IntensityDataItem::maskContainerItem(), MaskItem::maskValueItem(), BasicAxisItem::max(), FitParameterItem::maximumItem(), BasicAxisItem::maxItem(), BasicAxisItem::min(), FitParameterItem::minimumItem(), BasicAxisItem::minItem(), nativeData(), MinimizerContainerItem::normFunction(), MinimizerContainerItem::objectiveMetric(), VerticalLineItem::posX(), HorizontalLineItem::posY(), IntensityDataItem::projectionContainerItem(), JobItem::realDataItem(), BasicAxisItem::serialize(), PolygonPointItem::serialize(), AmplitudeAxisItem::serialize(), RectangleItem::serialize(), PolygonItem::serialize(), VerticalLineItem::serialize(), HorizontalLineItem::serialize(), EllipseItem::serialize(), MaskAllItem::serialize(), PointwiseAxisItem::serialize(), SessionItem::setItemValue(), FitParameterItem::setLimitEnabled(), setNativeDataUnits(), FitParameterItem::startValueItem(), BasicAxisItem::titleItem(), FitParameterItem::typeItem(), MinuitMinimizerItem::valueDescriptorsForUI(), GSLMultiMinimizerItem::valueDescriptorsForUI(), GeneticMinimizerItem::valueDescriptorsForUI(), SimAnMinimizerItem::valueDescriptorsForUI(), GSLLMAMinimizerItem::valueDescriptorsForUI(), BasicAxisItem::visibilityItem(), EllipseItem::xCenter(), RectangleItem::xLow(), EllipseItem::xRadius(), RectangleItem::xUp(), EllipseItem::yCenter(), RectangleItem::yLow(), EllipseItem::yRadius(), and RectangleItem::yUp().

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 221 of file SessionItem.cpp.

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

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

Referenced by MaskUnitsConverter::convertIntensityDataItem(), SessionModel::copy(), GroupItem::groupItems(), SessionItem::items(), SessionModel::moveItem(), DataPropertyContainer::propertyItem(), DataPropertyContainer::propertyItems(), and SessionItem::takeRow().

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 292 of file SessionItem.cpp.

293 {
294  ASSERT(isTag(tag));
295  return getItem(tag)->value();
296 }
QVariant value() const
Get value.

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

Referenced by FitParameterItem::attLimits(), Data1DViewItem::axesUnits(), JobItem::beginTime(), BasicAxisItem::binCount(), FitSuiteItem::chi2(), Data1DProperties::color(), Data1DProperties::colorName(), MaskUnitsConverter::convertCoordinate(), MinimizerContainerItem::createMetric(), MinuitMinimizerItem::createMinimizer(), GSLMultiMinimizerItem::createMinimizer(), GeneticMinimizerItem::createMinimizer(), SimAnMinimizerItem::createMinimizer(), GSLLMAMinimizerItem::createMinimizer(), RectangleItem::createShape(), VerticalLineItem::createShape(), HorizontalLineItem::createShape(), EllipseItem::createShape(), DataProperties::dataItem(), JobItem::endTime(), DataItem::fileName(), JobItem::getComments(), IntensityDataItem::getGradient(), JobItem::getIdentifier(), JobItem::getProgress(), JobItem::getStatus(), PointwiseAxisItem::getUnitsLabel(), FitParameterItem::initMinMaxValues(), instrumentId(), JobItem::instrumentName(), PolygonItem::isClosed(), IntensityDataItem::isInterpolated(), AmplitudeAxisItem::isLocked(), AmplitudeAxisItem::isLogScale(), BasicAxisItem::isTitleVisible(), FitParameterItem::isValid(), MaskItem::isVisibleValue(), SessionItem::itemName(), FitSuiteItem::iterationCount(), Data1DProperties::line(), FitParameterLinkItem::link(), MaskItem::maskValue(), FitParameterItem::maximum(), FitParameterItem::minimum(), nativeDataUnits(), Data1DProperties::nextColorName(), PropertyRepeater::onPropertyChanged(), FitParameterItem::parameterType(), PolygonPointItem::posX(), PolygonPointItem::posY(), JobItem::presentationType(), Data1DProperties::scatter(), DataItem::selectedCoords(), PropertyRepeater::setOnChildPropertyChange(), FitParameterItem::startValue(), BasicAxisItem::title(), FitParameterLinkItem::title(), and FitSuiteItem::updateInterval().

Here is the call graph for this function:

◆ getRoles()

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

Returns vector of all present roles.

Definition at line 351 of file SessionItem.cpp.

352 {
353  return m_properties->roles();
354 }
std::unique_ptr< SessionItemData > m_properties
Definition: SessionItem.h:333

References SessionItem::m_properties.

Referenced by GUI::Session::XML::writeItemAndChildItems().

◆ groupItem()

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

Definition at line 413 of file SessionItem.h.

414 {
415  auto* t = dynamic_cast<T*>(getGroupItem(groupName));
416  ASSERT(t);
417  return *t;
418 }
SessionItem * getGroupItem(const QString &groupName) const
Access subitem of group item.

References SessionItem::getGroupItem().

Referenced by SessionItem::addGroupProperty().

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 81 of file SessionItem.cpp.

82 {
83  return numberOfChildren() > 0;
84 }
int numberOfChildren() const
Returns total number of children.
Definition: SessionItem.cpp:88

References SessionItem::numberOfChildren().

Referenced by IntensityDataItem::hasProjections().

Here is the call graph for this function:

◆ hasImportErrors()

bool RealDataItem::hasImportErrors ( ) const

Definition at line 251 of file RealDataItem.cpp.

252 {
253  return (dataLoader() != nullptr) ? dataLoader()->numErrors() > 0 : false;
254 }
virtual int numErrors() const
Number of errors found while processing the content. An error means that either a particular content ...
AbstractDataLoader * dataLoader() const

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

Here is the call graph for this function:

◆ hasModelType()

template<typename T >
bool SessionItem::hasModelType
inherited

Definition at line 421 of file SessionItem.h.

422 {
423  return modelType() == T::M_TYPE;
424 }
QString modelType() const
Get model type.

References SessionItem::modelType().

Referenced by MaskViewFactory::createMaskView(), FitParameterModel::flags(), FitParameterModel::index(), FitParameterModel::indexOfItem(), FitParameterWidget::onFitParametersSelectionChanged(), FitParameterModel::rowCount(), and MaskGraphicsScene::updateViews().

Here is the call graph for this function:

◆ hasNativeData()

bool RealDataItem::hasNativeData ( ) const

Definition at line 121 of file RealDataItem.cpp.

122 {
123  return (nativeData() != nullptr) && (nativeData()->getDatafield() != nullptr);
124 }
Datafield * getDatafield()
Definition: DataItem.h:41
DataItem * nativeData()

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

Referenced by SpecularInstrumentItem::alignedWith(), LinkInstrumentManager::canLinkDataToInstrument(), GUI::Model::JobFunctions::copyRealDataItem(), nativeDatafield(), and updateToInstrument().

Here is the call graph for this function:

◆ holdsDimensionalData()

bool RealDataItem::holdsDimensionalData ( ) const

Definition at line 206 of file RealDataItem.cpp.

207 {
208  return nativeDataUnits() != "nbins";
209 }
QString nativeDataUnits() const

References nativeDataUnits().

Referenced by LinkInstrumentManager::canLinkDataToInstrument().

Here is the call graph for this function:

◆ importContentsProcessed

void RealDataItem::importContentsProcessed ( )
signal

◆ index()

QModelIndex RealDataItem::index ( ) const
private

◆ initAsIntensityItem()

void RealDataItem::initAsIntensityItem ( )

Definition at line 200 of file RealDataItem.cpp.

201 {
202  const size_t rank = 2;
204 }
void initDataItem(size_t data_rank, const QString &tag)
Creates and inserts a data item except if such item with same tag already exists. Checks for rank com...

References initDataItem(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ initAsSpecularItem()

void RealDataItem::initAsSpecularItem ( )

Definition at line 194 of file RealDataItem.cpp.

195 {
196  const size_t rank = 1;
198 }

References initDataItem(), and T_INTENSITY_DATA.

Here is the call graph for this function:

◆ initDataItem()

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

Creates and inserts a data item except if such item with same tag already exists. Checks for rank compatibility if already existing. No further initialization (like clearing the data etc).

Definition at line 142 of file RealDataItem.cpp.

143 {
144  ASSERT(rank == 1 || rank == 2);
145 
146  const auto* dataItem = dynamic_cast<const DataItem*>(getItem(tag));
147  if (dataItem != nullptr) {
148  if ((rank == 1 && !dynamic_cast<const SpecularDataItem*>(dataItem))
149  || (rank == 2 && !dynamic_cast<const IntensityDataItem*>(dataItem)))
150  throw Error("Error in RealDataItem::initDataItem: trying to set data "
151  "incompatible with underlying data item");
152  } else {
153  if (rank == 1)
154  model()->insertItem<SpecularDataItem>(this, 0, tag);
155  else
156  model()->insertItem<IntensityDataItem>(this, 0, tag);
157 
158  ASSERT(getItem(tag)
159  && "Assertion failed in RealDataItem::initDataItem: inserting data item failed.");
160  }
161 }
SessionModel * model() const
Returns model of this item.
Definition: SessionItem.cpp:60
T * insertItem(SessionItem *parent=nullptr, int row=-1, QString tag="")
Definition: SessionModel.h:137

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

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

Here is the call graph for this function:

◆ initNativeData()

void RealDataItem::initNativeData ( )

Definition at line 97 of file RealDataItem.cpp.

98 {
99  const size_t rank = isSpecularData() ? 1 : 2;
101 }
bool isSpecularData() const

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

Referenced by QREDataLoader::datafieldFromParsingResult().

Here is the call graph for this function:

◆ insertChild()

void SessionItem::insertChild ( int  row,
SessionItem item,
const QString &  tag = "" 
)
inherited

Insert item into given tag into given row.

Definition at line 233 of file SessionItem.cpp.

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

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

Referenced by GroupItemController::GroupItemController(), JobItem::addDataViewItem(), SessionItem::addGroupProperty(), DataPropertyContainer::addItem(), MaskContainerItem::addMask(), PolygonItem::addPoint(), SessionItem::addProperty(), GUI::Model::ItemFactory::CreateItem(), GroupItemController::getItemOfType(), MaskItems::insertMask(), MaskContainerItem::insertMask(), SessionModel::insertNewItem(), SessionModel::moveItem(), and GroupItemController::setCurrentType().

Here is the call graph for this function:

◆ instrumentId()

QString RealDataItem::instrumentId ( ) const

Definition at line 211 of file RealDataItem.cpp.

212 {
213  return getItemValue(P_INSTRUMENT_ID).toString();
214 }
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References SessionItem::getItemValue(), and P_INSTRUMENT_ID.

Referenced by RealDataPropertiesWidget::onInstrumentComboIndexChanged(), rotationAffectsSetup(), and RealDataPropertiesWidget::updateInstrumentComboIndex().

Here is the call graph for this function:

◆ intensityDataItem() [1/2]

IntensityDataItem * RealDataItem::intensityDataItem ( )

Definition at line 57 of file RealDataItem.cpp.

58 {
59  return dynamic_cast<IntensityDataItem*>(dataItem());
60 }

References dataItem().

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

Here is the call graph for this function:

◆ intensityDataItem() [2/2]

const IntensityDataItem * RealDataItem::intensityDataItem ( ) const

Definition at line 62 of file RealDataItem.cpp.

63 {
64  return dynamic_cast<const IntensityDataItem*>(dataItem());
65 }

References dataItem().

Here is the call graph for this function:

◆ isEditable()

bool SessionItem::isEditable ( ) const
inherited

Definition at line 468 of file SessionItem.cpp.

469 {
470  return flags() & SessionFlags::EDITABLE;
471 }

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 463 of file SessionItem.cpp.

464 {
465  return flags() & SessionFlags::ENABLED;
466 }

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

Referenced by SessionModel::flags().

Here is the call graph for this function:

◆ isIntensityData()

bool RealDataItem::isIntensityData ( ) const

Definition at line 241 of file RealDataItem.cpp.

242 {
243  return intensityDataItem() != nullptr;
244 }
IntensityDataItem * intensityDataItem()

References intensityDataItem().

Referenced by rotateData(), and rotationAffectsSetup().

Here is the call graph for this function:

◆ isItemNamePropertyName()

bool SessionItem::isItemNamePropertyName ( const QString &  name)
staticinherited

Definition at line 446 of file SessionItem.cpp.

447 {
448  return P_NAME == name;
449 }

References GUI::RealSpace::Particles::name(), and SessionItem::P_NAME.

Here is the call graph for this function:

◆ isSpecularData()

bool RealDataItem::isSpecularData ( ) const

Definition at line 246 of file RealDataItem.cpp.

247 {
248  return specularDataItem() != nullptr;
249 }
SpecularDataItem * specularDataItem()

References specularDataItem().

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

Here is the call graph for this function:

◆ isTag()

bool SessionItem::isTag ( const QString &  name) const
inherited

Returns true if tag is available.

Definition at line 166 of file SessionItem.cpp.

167 {
168  return m_tags->isValid(name);
169 }

References SessionItem::m_tags, and GUI::RealSpace::Particles::name().

Referenced by SessionItem::addProperty(), MaskUnitsConverter::convertCoordinate(), SessionItem::getItemValue(), JobItem::isValidForFitting(), SessionItem::itemName(), SessionItem::setItemName(), SessionItem::setItemValue(), and FitParameterItem::setLimitEnabled().

Here is the call graph for this function:

◆ item()

◆ itemName()

QString SessionItem::itemName ( ) const
inherited

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

Definition at line 432 of file SessionItem.cpp.

433 {
434  return isTag(P_NAME) ? getItemValue(P_NAME).toString() : displayName();
435 }
QString displayName() const
Get display name of item, append index if ambigue.

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

Referenced by SessionModel::data(), dataName(), JobItem::jobName(), MaskItem::maskName(), GUI::Session::XML::readItems(), MaskGraphicsScene::setItemName(), Plot1D::subscribeToItem(), SpecularPlot::subscribeToItem(), ColorMap::subscribeToItem(), ProjectionsPlot::subscribeToItem(), and JobItem::updateIntensityDataFileName().

Here is the call graph for this function:

◆ items()

template<typename T >
QVector< T * > SessionItem::items ( const QString &  tag = "") const
inherited

Definition at line 361 of file SessionItem.h.

362 {
363  QVector<T*> result;
364 
365  for (SessionItem* item : getItems(tag))
366  if (auto* titem = dynamic_cast<T*>(item))
367  result.push_back(titem);
368  return result;
369 }
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.

References SessionItem::getItems(), and SessionItem::item().

Referenced by DataPropertyContainer::dataItems(), SessionItem::takeRow(), and SessionModel::topItem().

Here is the call graph for this function:

◆ limits()

RealLimits SessionItem::limits ( ) const
inherited

Definition at line 473 of file SessionItem.cpp.

474 {
475  return roleProperty(SessionFlags::LimitsRole).value<RealLimits>();
476 }

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

Referenced by GUI::View::PropertyEditorFactory::CreateEditor(), FitParameterContainerItem::createParameters(), and FitParameterItem::initMinMaxValues().

Here is the call graph for this function:

◆ linkToInstrument()

void RealDataItem::linkToInstrument ( const InstrumentItem instrument)

Definition at line 222 of file RealDataItem.cpp.

223 {
224  if (instrument) {
225  setItemValue(P_INSTRUMENT_ID, instrument->id());
226  updateToInstrument(instrument);
227  } else
229 }
QString id() const
void unlinkFromInstrument()
void updateToInstrument(const InstrumentItem *instrument)
This does not set the link to the instrument! Use linkToInstrument() if you want to link to this inst...
void setItemValue(const QString &tag, const QVariant &variant) const
Directly set value of item under given tag.

References InstrumentItem::id(), P_INSTRUMENT_ID, SessionItem::setItemValue(), unlinkFromInstrument(), and updateToInstrument().

Referenced by RealDataPropertiesWidget::onInstrumentComboIndexChanged().

Here is the call graph for this function:

◆ mapper()

ModelMapper * SessionItem::mapper ( )
inherited

◆ maskContainerItem()

MaskContainerItem * RealDataItem::maskContainerItem ( )

Returns mask container item.

Definition at line 256 of file RealDataItem.cpp.

257 {
258  if (auto* intensity_data = intensityDataItem())
259  return intensity_data->maskContainerItem();
260  return nullptr;
261 }

References intensityDataItem().

Referenced by rotateData().

Here is the call graph for this function:

◆ model()

◆ modelType()

◆ nativeData() [1/2]

DataItem * RealDataItem::nativeData ( )

◆ nativeData() [2/2]

const DataItem * RealDataItem::nativeData ( ) const

Definition at line 92 of file RealDataItem.cpp.

93 {
94  return dynamic_cast<const DataItem*>(getItem(T_NATIVE_DATA));
95 }

References SessionItem::getItem(), and T_NATIVE_DATA.

Here is the call graph for this function:

◆ nativeDatafield()

const Datafield * RealDataItem::nativeDatafield ( ) const

Definition at line 126 of file RealDataItem.cpp.

127 {
128  return hasNativeData() ? nativeData()->getDatafield() : nullptr;
129 }
bool hasNativeData() const

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

Referenced by SpecularInstrumentItem::alignedWith(), GUI::Model::JobFunctions::copyRealDataItem(), and SpecularInstrumentItem::updateToRealData().

Here is the call graph for this function:

◆ nativeDataUnits()

QString RealDataItem::nativeDataUnits ( ) const

Definition at line 103 of file RealDataItem.cpp.

104 {
105  return getItemValue(P_NATIVE_DATA_UNITS).toString();
106 }

References SessionItem::getItemValue(), and P_NATIVE_DATA_UNITS.

Referenced by SpecularInstrumentItem::alignedWith(), holdsDimensionalData(), updateToInstrument(), and SpecularInstrumentItem::updateToRealData().

Here is the call graph for this function:

◆ nativeFileName()

QString RealDataItem::nativeFileName ( ) const

Definition at line 268 of file RealDataItem.cpp.

269 {
270  return m_nativeFileName;
271 }

References m_nativeFileName.

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

◆ numberOfChildren()

int SessionItem::numberOfChildren ( ) const
inherited

◆ parentItem()

◆ parentRow()

int SessionItem::parentRow ( )
inherited

Returns the index of the given item within its parent. Returns -1 when no parent is set.

Definition at line 148 of file SessionItem.cpp.

149 {
150  if (parentItem())
151  return parentItem()->rowOfChild(this);
152  return -1;
153 }
SessionItem * parentItem() const
Returns parent of this item.
Definition: SessionItem.cpp:67

References SessionItem::parentItem(), and SessionItem::rowOfChild().

Referenced by FitParameterModel::indexOfItem(), and FitParameterModel::parent().

Here is the call graph for this function:

◆ readNonSessionItems()

void SessionItem::readNonSessionItems ( QXmlStreamReader *  reader)
virtualinherited

Reimplemented in JobItem.

Definition at line 526 of file SessionItem.cpp.

526 {}

Referenced by GUI::Session::XML::readItems().

◆ registerTag()

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

Add new tag to this item with given name, min, max and types. max = -1 -> unlimited, modelTypes empty -> all types allowed.

Definition at line 159 of file SessionItem.cpp.

160 {
161  return m_tags->registerTag(name, min, max, modelTypes);
162 }

References SessionItem::m_tags, and GUI::RealSpace::Particles::name().

Referenced by Data1DViewItem::Data1DViewItem(), DataPropertyContainer::DataPropertyContainer(), FitParameterContainerItem::FitParameterContainerItem(), FitParameterItem::FitParameterItem(), FitSuiteItem::FitSuiteItem(), GroupItem::GroupItem(), IntensityDataItem::IntensityDataItem(), JobItem::JobItem(), MaskContainerItem::MaskContainerItem(), PolygonItem::PolygonItem(), ProjectionContainerItem::ProjectionContainerItem(), RealDataItem(), SessionItem::addGroupProperty(), SessionItem::addProperty(), and SessionModel::createRootItem().

Here is the call graph for this function:

◆ removeNativeData()

void RealDataItem::removeNativeData ( )

Definition at line 113 of file RealDataItem.cpp.

114 {
115  ASSERT(isSpecularData()); // not implemented for intensityDataItem
116 
117  if (nativeData() != nullptr)
118  nativeData()->setDatafield(nullptr);
119 }
virtual void setDatafield(Datafield *data)=0
The given pointer becomes owned by this class!!
Definition: DataItem.cpp:20

References isSpecularData(), nativeData(), and DataItem::setDatafield().

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

Here is the call graph for this function:

◆ roleProperty()

QVariant SessionItem::roleProperty ( int  role) const
inherited

◆ rotateData()

void RealDataItem::rotateData ( )

Definition at line 354 of file RealDataItem.cpp.

355 {
356  if (!isIntensityData()) // rotation only for 2D items possible
357  return;
358 
359  // -- first break instrument link, clear masks and projections
361 
362  if (MaskContainerItem* maskContainer = intensityDataItem()->maskContainerItem())
363  maskContainer->clear();
364 
365  if (ProjectionContainerItem* projectionsContainer =
366  intensityDataItem()->projectionContainerItem())
367  projectionsContainer->model()->removeRows(0, projectionsContainer->numberOfChildren(),
368  projectionsContainer->index());
369 
370  // -- now rotate data
371  auto* const input = intensityDataItem()->getDatafield();
373  DataUtils::Data::createRearrangedDataSet(*input, 1).release());
375 }
void setAxesRangeToData() override
set zoom range of x,y axes to axes of input data
void setDatafield(Datafield *data) override
The given pointer becomes owned by this class!!
Container holding various masks as children.
Definition: MaskItems.h:202
A container to hold ProjectionItems, intended to store projections of color map on X,...
MaskContainerItem * maskContainerItem()
Returns mask container item.
bool isIntensityData() const

References DataItem::getDatafield(), intensityDataItem(), isIntensityData(), maskContainerItem(), IntensityDataItem::setAxesRangeToData(), IntensityDataItem::setDatafield(), and unlinkFromInstrument().

Here is the call graph for this function:

◆ rotationAffectsSetup()

bool RealDataItem::rotationAffectsSetup ( ) const

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

Definition at line 336 of file RealDataItem.cpp.

337 {
338  if (!isIntensityData()) // rotation only for 2D items possible
339  return false;
340 
341  const bool hasLinkToInstrument = !instrumentId().isEmpty();
342  if (hasLinkToInstrument)
343  return true;
344 
345  if (intensityDataItem()->hasMasks())
346  return true;
347 
348  if (intensityDataItem()->hasProjections())
349  return true;
350 
351  return false;
352 }
QString instrumentId() const

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

Here is the call graph for this function:

◆ rowOfChild()

int SessionItem::rowOfChild ( SessionItem child) const
inherited

Returns row index of given child.

Definition at line 109 of file SessionItem.cpp.

110 {
111  return m_children.indexOf(child);
112 }

Referenced by SessionItem::childDeleted(), SessionModel::indexOfItem(), SessionModel::moveItem(), ProjectionsEditorCanvas::onLeavingColorMap(), and SessionItem::parentRow().

◆ serializeBinaryData()

QByteArray RealDataItem::serializeBinaryData ( ) const
overridevirtual

Reimplemented from SessionItem.

Definition at line 273 of file RealDataItem.cpp.

274 {
275  QByteArray a;
276  QDataStream s(&a, QIODevice::WriteOnly);
277  s.setVersion(QDataStream::Qt_5_12);
278 
279  s << (quint8)1; // version
280  s << m_nativeFileName;
281 
282  if (m_dataLoader) {
283  s << m_dataLoader->persistentClassName();
284  s << *m_dataLoader;
285  } else
286  s << QString(); // empty loader class name => no loader present
287 
288  return a;
289 }

References m_dataLoader, and m_nativeFileName.

◆ sessionItemTags()

const SessionItemTags * SessionItem::sessionItemTags ( ) const
inherited

Definition at line 171 of file SessionItem.cpp.

172 {
173  return m_tags.get();
174 }

References SessionItem::m_tags.

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

◆ setDatafield()

void RealDataItem::setDatafield ( Datafield *  data)

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

Definition at line 165 of file RealDataItem.cpp.

166 {
167  ASSERT(data && "Assertion failed in RealDataItem::setDatafield: passed data is nullptr");
168 
169  initDataItem(data->rank(), T_INTENSITY_DATA);
170 
171  dataItem()->setDatafield(data);
172 }

References dataItem(), initDataItem(), DataItem::setDatafield(), and T_INTENSITY_DATA.

Referenced by RealDataSelectorWidget::importData2D().

Here is the call graph for this function:

◆ setDataLoader()

void RealDataItem::setDataLoader ( AbstractDataLoader loader)

Takes ownership of loader.

Definition at line 323 of file RealDataItem.cpp.

324 {
325  m_dataLoader.reset(loader);
326  if (m_dataLoader)
329 }
void contentsProcessed()
Emitted whenever contents have been processed.
void importContentsProcessed()

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

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

◆ setDataName()

void RealDataItem::setDataName ( const QString &  name)

Definition at line 52 of file RealDataItem.cpp.

53 {
55 }

References GUI::RealSpace::Particles::name(), and SessionItem::setItemName().

Referenced by RealDataSelectorWidget::importData1D(), RealDataSelectorWidget::importData2D(), and RealDataTreeModel::setData().

Here is the call graph for this function:

◆ setDecimals()

SessionItem & SessionItem::setDecimals ( int  n)
inherited

Definition at line 489 of file SessionItem.cpp.

490 {
492  return *this;
493 }

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

Referenced by BasicAxisItem::BasicAxisItem(), and SessionItem::SessionItem().

Here is the call graph for this function:

◆ setDefaultTag()

void SessionItem::setDefaultTag ( const QString &  tag)
inherited

◆ setDisplayName()

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

Set display name.

Definition at line 426 of file SessionItem.cpp.

427 {
429 }

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

Referenced by SessionItem::SessionItem(), SessionItem::addProperty(), FitParameterContainerItem::createFitParameter(), and GUI::Session::XML::readItems().

Here is the call graph for this function:

◆ setEditable()

void SessionItem::setEditable ( bool  enabled)
inherited

Definition at line 458 of file SessionItem.cpp.

459 {
461 }
void changeFlags(bool enabled, int flag)
internal

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

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

Here is the call graph for this function:

◆ setEnabled()

void SessionItem::setEnabled ( bool  enabled)
inherited

Flags accessors.

Definition at line 453 of file SessionItem.cpp.

454 {
456 }

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

Referenced by FitParameterItem::FitParameterItem(), MaskAllItem::MaskAllItem(), PointwiseAxisItem::PointwiseAxisItem(), GroupItemController::getItemOfType(), and FitParameterItem::setLimitEnabled().

Here is the call graph for this function:

◆ setGroupProperty()

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

Set the current type of group item.

Definition at line 320 of file SessionItem.cpp.

321 {
322  return item<GroupItem>(groupTag)->setCurrentType(modelType);
323 }

References SessionItem::modelType().

Referenced by SessionItem::setGroupPropertyType().

Here is the call graph for this function:

◆ setGroupPropertyType()

template<typename T >
T * SessionItem::setGroupPropertyType ( const QString &  groupTag)
inherited

Definition at line 404 of file SessionItem.h.

405 {
406  SessionItem* item = getGroupItem(groupTag);
407  if (!item->hasModelType<T>())
408  return dynamic_cast<T*>(setGroupProperty(groupTag, T::M_TYPE));
409  return dynamic_cast<T*>(item);
410 }
SessionItem * setGroupProperty(const QString &groupTag, const QString &modelType) const
Set the current type of group item.

References SessionItem::getGroupItem(), SessionItem::item(), and SessionItem::setGroupProperty().

Here is the call graph for this function:

◆ setImportData()

void RealDataItem::setImportData ( ImportDataInfo  info)

Sets imported data to underlying item. Creates it if not existing. This is used for 1D import. For 2D import, use setDatafield.

Definition at line 177 of file RealDataItem.cpp.

178 {
179  if (!info)
180  return;
181 
182  const size_t data_rank = info.dataRank();
183  initDataItem(data_rank, T_INTENSITY_DATA);
184  initDataItem(data_rank, T_NATIVE_DATA);
185 
186  QString units_name = info.unitsLabel();
187  auto output_data = info.clonedData();
188 
189  dataItem()->reset(std::move(info));
190  setNativeDataUnits(units_name);
191  item<DataItem>(T_NATIVE_DATA)->setDatafield(output_data.release());
192 }
virtual void reset(ImportDataInfo data)=0
Resets data to the state defined by user (imported) data.
size_t dataRank() const
Returns number of dimensions.
QString unitsLabel() const
std::unique_ptr< Datafield > clonedData() const &
void setNativeDataUnits(const QString &units)

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

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

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

Directly set value of item under given tag.

Definition at line 300 of file SessionItem.cpp.

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

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

Referenced by MaskUnitsConverter::convertCoordinate(), PointwiseAxisItem::init(), FitParameterItem::initMinMaxValues(), linkToInstrument(), EllipseItem::setAngle(), Data1DViewItem::setAxesUnits(), DataItem::setAxesUnits(), JobItem::setBeginTime(), BasicAxisItem::setBinCount(), FitSuiteItem::setChi2(), Data1DProperties::setColorProperty(), JobItem::setComments(), DataProperties::setDataItem(), JobItem::setEndTime(), DataItem::setFileName(), IntensityDataItem::setGradient(), JobItem::setIdentifier(), JobItem::setInstrumentName(), IntensityDataItem::setInterpolated(), PolygonItem::setIsClosed(), MaskItem::setIsVisibleValue(), SessionItem::setItemName(), FitSuiteItem::setIterationCount(), Data1DProperties::setLineProperty(), FitParameterLinkItem::setLink(), AmplitudeAxisItem::setLocked(), AmplitudeAxisItem::setLogScale(), BasicAxisItem::setLowerBound(), MaskItem::setMaskValue(), FitParameterItem::setMaximum(), FitParameterItem::setMinimum(), PolygonPointItem::setPosX(), VerticalLineItem::setPosX(), PolygonPointItem::setPosY(), HorizontalLineItem::setPosY(), JobItem::setPresentationType(), JobItem::setProgress(), Data1DProperties::setScatterProperty(), FitParameterItem::setStartValue(), JobItem::setStatus(), BasicAxisItem::setTitle(), FitParameterLinkItem::setTitle(), FitSuiteItem::setUpdateInterval(), BasicAxisItem::setUpperBound(), BasicAxisItem::setVisibilityValue(), EllipseItem::setXCenter(), RectangleItem::setXLow(), EllipseItem::setXRadius(), RectangleItem::setXUp(), EllipseItem::setYCenter(), RectangleItem::setYLow(), EllipseItem::setYRadius(), RectangleItem::setYUp(), and unlinkFromInstrument().

Here is the call graph for this function:

◆ setLimits()

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

Definition at line 478 of file SessionItem.cpp.

479 {
480  setRoleProperty(SessionFlags::LimitsRole, QVariant::fromValue<RealLimits>(value));
481  return *this;
482 }

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

Referenced by BasicAxisItem::BasicAxisItem(), EllipseItem::EllipseItem(), FitParameterItem::FitParameterItem(), HorizontalLineItem::HorizontalLineItem(), PolygonPointItem::PolygonPointItem(), RectangleItem::RectangleItem(), SessionItem::SessionItem(), VerticalLineItem::VerticalLineItem(), and FitParameterItem::initMinMaxValues().

Here is the call graph for this function:

◆ setModel()

void SessionItem::setModel ( SessionModel model)
privateinherited

Definition at line 546 of file SessionItem.cpp.

547 {
548  m_model = model;
549 
550  if (m_mapper)
551  m_mapper->setItem(this);
552 
553  for (auto& child : m_children)
554  child->setModel(model);
555 }

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:

◆ setNativeDatafield()

void RealDataItem::setNativeDatafield ( Datafield *  data)

takes ownership of data

Definition at line 133 of file RealDataItem.cpp.

134 {
135  nativeData()->setDatafield(data); // takes ownership of odata
136 }

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

Referenced by GUI::Model::JobFunctions::copyRealDataItem(), and QREDataLoader::datafieldFromParsingResult().

Here is the call graph for this function:

◆ setNativeDataUnits()

void RealDataItem::setNativeDataUnits ( const QString &  units)

Definition at line 108 of file RealDataItem.cpp.

109 {
111 }

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

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

Here is the call graph for this function:

◆ setNativeFileName()

void RealDataItem::setNativeFileName ( const QString &  filename)

The name from where the native data was originally imported.

Definition at line 263 of file RealDataItem.cpp.

264 {
265  m_nativeFileName = filename;
266 }

References m_nativeFileName.

Referenced by RealDataSelectorWidget::importData1D().

◆ setParentAndModel()

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

Definition at line 540 of file SessionItem.cpp.

541 {
542  setModel(model);
543  m_parent = parent;
544 }
void setModel(SessionModel *model)

References SessionItem::m_parent, SessionItem::model(), 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 the contained role property to the given value. See also setTranslatorForRolePropertySetter.

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

Definition at line 341 of file SessionItem.cpp.

342 {
343  bool result = m_properties->setData(role, value);
344  if (result)
345  emitDataChanged(role);
346  return result;
347 }
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(), GUI::Session::XML::readProperty(), SessionModel::setData(), SessionItem::setDecimals(), SessionItem::setDefaultTag(), SessionItem::setDisplayName(), 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 500 of file SessionItem.cpp.

501 {
502  setRoleProperty(Qt::ToolTipRole, tooltip);
503  return *this;
504 }

References SessionItem::setRoleProperty().

Referenced by GeneticMinimizerItem::GeneticMinimizerItem(), GSLLMAMinimizerItem::GSLLMAMinimizerItem(), GSLMultiMinimizerItem::GSLMultiMinimizerItem(), MinimizerContainerItem::MinimizerContainerItem(), MinuitMinimizerItem::MinuitMinimizerItem(), and SimAnMinimizerItem::SimAnMinimizerItem().

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 382 of file SessionItem.cpp.

383 {
385  return setRoleProperty(Qt::DisplayRole, value);
386 }
bool CompatibleVariantTypes(const QVariant &oldValue, const QVariant &newValue)
Returns true if variants has compatible types.
Definition: VariantUtil.cpp:25

References GUI::Util::Variant::CompatibleVariantTypes(), SessionItem::setRoleProperty(), and SessionItem::value().

Referenced by DoubleDescriptor::DoubleDescriptor(), SelectionDescriptor< T >::SelectionDescriptor(), UIntDescriptor::UIntDescriptor(), IntensityDataPropertyWidget::createCheckBox(), SpecularDataPropertyWidget::createCheckBox(), IntensityDataPropertyWidget::createTextEdit(), SpecularDataPropertyWidget::createTextEdit(), SessionItem::setItemValue(), setNativeDataUnits(), and GroupItem::updateComboValue().

Here is the call graph for this function:

◆ shape()

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

Returns the shape of underlying data item.

Definition at line 231 of file RealDataItem.cpp.

232 {
233  const auto* data_item = dataItem();
234  if (!data_item) {
235  ASSERT(data_item);
236  return {};
237  }
238  return data_item->shape();
239 }

References dataItem().

Referenced by InstrumentItem::alignedWith(), SpecularInstrumentItem::alignedWith(), LinkInstrumentManager::canLinkDataToInstrument(), SpecularInstrumentItem::updateToRealData(), GISASInstrumentItem::updateToRealData(), and OffspecInstrumentItem::updateToRealData().

Here is the call graph for this function:

◆ specularDataItem() [1/2]

SpecularDataItem * RealDataItem::specularDataItem ( )

Definition at line 67 of file RealDataItem.cpp.

68 {
69  return dynamic_cast<SpecularDataItem*>(dataItem());
70 }

References dataItem().

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

Here is the call graph for this function:

◆ specularDataItem() [2/2]

const SpecularDataItem * RealDataItem::specularDataItem ( ) const

Definition at line 72 of file RealDataItem.cpp.

73 {
74  return dynamic_cast<const SpecularDataItem*>(dataItem());
75 }

References dataItem().

Here is the call graph for this function:

◆ tagFromItem()

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

Returns the tag name of given item when existing.

Definition at line 178 of file SessionItem.cpp.

179 {
180  int index = m_children.indexOf(const_cast<SessionItem*>(item));
181  return m_tags->tagFromIndex(index);
182 }

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

Referenced by SessionItem::displayName(), ModelMapper::onDataChanged(), PropertyRepeater::setOnChildPropertyChange(), SessionItem::takeRow(), and GUI::Session::XML::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 258 of file SessionItem.cpp.

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

References 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 139 of file SessionItem.cpp.

140 {
141  SessionItem* item = childAt(row);
142  QString tag = tagFromItem(item);
143  auto items = getItems(tag);
144  return takeItem(items.indexOf(item), tag);
145 }
SessionItem * takeItem(int row, const QString &tag)
Remove item from given row from given tag.
QVector< T * > items(const QString &tag="") const
Definition: SessionItem.h:361
SessionItem * childAt(int row) const
Returns the child at the given row.

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

Referenced by 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 495 of file SessionItem.cpp.

496 {
497  return roleProperty(Qt::ToolTipRole).toString();
498 }

References SessionItem::roleProperty().

Referenced by SelectionDescriptor< T >::SelectionDescriptor().

Here is the call graph for this function:

◆ unlinkFromInstrument()

void RealDataItem::unlinkFromInstrument ( )

Definition at line 216 of file RealDataItem.cpp.

217 {
218  setItemValue(P_INSTRUMENT_ID, QString());
219  updateToInstrument(nullptr);
220 }

References P_INSTRUMENT_ID, SessionItem::setItemValue(), and updateToInstrument().

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

Here is the call graph for this function:

◆ updateNonXMLDataFileNames()

void RealDataItem::updateNonXMLDataFileNames ( )

Updates the name of file to store intensity data.

Definition at line 379 of file RealDataItem.cpp.

380 {
381  if (DataItem* item = dataItem())
383  if (DataItem* item = nativeData())
385 }
QString dataName() const
The name which is presented to the user.
QString nativeDataFileName(const QString &dataName)
QString realDataFileName(const QString &dataName)
Constructs the name of the intensity file belonging to real data item.

References dataItem(), dataName(), SessionItem::item(), nativeData(), GUI::Model::FilenameUtils::nativeDataFileName(), and GUI::Model::FilenameUtils::realDataFileName().

Here is the call graph for this function:

◆ updateToInstrument()

void RealDataItem::updateToInstrument ( const InstrumentItem instrument)
private

This does not set the link to the instrument! Use linkToInstrument() if you want to link to this instrument.

Definition at line 387 of file RealDataItem.cpp.

388 {
389  DataItem* data_item = dataItem();
390  if (!data_item)
391  return;
392 
393  if (instrument) {
395  if (dataItem())
396  dataItem()->updateCoords(instrument);
397  return;
398  }
399 
400  // instrument == nullptr => unlinking => going back to native data
401  if (isSpecularData()) {
402  if (hasNativeData()) {
403  std::unique_ptr<Datafield> native_data(nativeData()->getDatafield()->clone());
404  const QString units_label = nativeDataUnits();
405  data_item->reset(ImportDataInfo(std::move(native_data), units_label));
406  } else {
407  specularDataItem()->setDatafield(nullptr);
408  }
409  } else {
410  auto* native_data_item = nativeData();
411  auto* data_source = native_data_item ? native_data_item : data_item;
412 
413  std::unique_ptr<Datafield> native_data(data_source->getDatafield()->clone());
414  const QString units_label = nativeDataUnits();
415  data_item->reset(ImportDataInfo(std::move(native_data), units_label));
416  }
417 }
virtual void updateCoords(const InstrumentItem *instrument)=0
Carries information about loaded data.
void setDatafield(Datafield *data) override
The given pointer becomes owned by this class!!
void setIntensityItemCoords(DataItem *intensityItem, const InstrumentItem *instrumentItem)
Sets axes units suitable for given instrument.

References dataItem(), hasNativeData(), isSpecularData(), nativeData(), nativeDataUnits(), DataItem::reset(), SpecularDataItem::setDatafield(), GUI::Model::JobItemUtils::setIntensityItemCoords(), specularDataItem(), and DataItem::updateCoords().

Referenced by linkToInstrument(), and unlinkFromInstrument().

Here is the call graph for this function:

◆ value()

◆ writeNonSessionItems()

void SessionItem::writeNonSessionItems ( QXmlStreamWriter *  writer) const
virtualinherited

Reimplemented in JobItem.

Definition at line 524 of file SessionItem.cpp.

524 {}

Referenced by GUI::Session::XML::writeItemAndChildItems().

Friends And Related Function Documentation

◆ TestView

friend class TestView
friend

Definition at line 36 of file RealDataItem.h.

Member Data Documentation

◆ m_children

◆ m_dataLoader

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

◆ m_importSettings

QByteArray RealDataItem::m_importSettings
private

Definition at line 122 of file RealDataItem.h.

Referenced by deserializeBinaryData().

◆ m_mapper

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

◆ m_model

◆ m_nativeFileName

QString RealDataItem::m_nativeFileName
private

◆ m_parent

SessionItem* SessionItem::m_parent
privateinherited

◆ m_properties

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

◆ m_tags

◆ M_TYPE

constexpr auto RealDataItem::M_TYPE {"RealData"}
staticconstexpr

Definition at line 45 of file RealDataItem.h.

Referenced by JobItem::JobItem().

◆ P_INSTRUMENT_ID

constexpr auto RealDataItem::P_INSTRUMENT_ID {"Instrument Id"}
staticconstexprprivate

Definition at line 39 of file RealDataItem.h.

Referenced by RealDataItem(), instrumentId(), linkToInstrument(), and unlinkFromInstrument().

◆ P_NAME

constexpr auto SessionItem::P_NAME {"Name"}
staticconstexprprivateinherited

◆ P_NATIVE_DATA_UNITS

constexpr auto RealDataItem::P_NATIVE_DATA_UNITS {"Native user data units"}
staticconstexprprivate

Definition at line 42 of file RealDataItem.h.

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

◆ T_INTENSITY_DATA

constexpr auto RealDataItem::T_INTENSITY_DATA {"Intensity data"}
staticconstexprprivate

◆ T_NATIVE_DATA

constexpr auto RealDataItem::T_NATIVE_DATA {"Native user data axis"}
staticconstexprprivate

Definition at line 41 of file RealDataItem.h.

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


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