49 QVector<SessionItem*>::const_iterator it;
125 if (child->modelType() == type)
135 QVector<SessionItem*> result;
138 result.append(child);
158 return m_tags->registerTag(
name, min, max, modelTypes);
199 const QString tagName = tag.isEmpty() ?
defaultTag() : tag;
201 if (!
m_tags->isValid(tagName))
204 if (
m_tags->childCount(tagName) == 0)
207 if (row < 0 || row >=
m_tags->childCount(tagName))
220 const QString tagName = tag.isEmpty() ?
defaultTag() : tag;
221 if (!
m_tags->isValid(tagName))
222 return QVector<SessionItem*>();
235 const QString tagName = tag.isEmpty() ?
defaultTag() : tag;
238 int index =
m_tags->insertIndexFromTagRow(tagName, row);
248 m_tags->addChild(tagName);
259 const QString tagName = tag.isEmpty() ?
defaultTag() : tag;
271 m_tags->removeChild(tagName);
284 property->setDisplayName(
name);
289 property->setValue(variant);
321 registerTag(groupTag, 1, 1, QStringList() <<
"GroupProperty");
326 qWarning() <<
"SessionItem::addGroupProperty() is obsolete for single property items. Use "
327 "::addProperty<> instead.";
329 registerTag(groupTag, 1, 1, QStringList() << groupType);
334 bool success =
insertItem(0, result, groupTag);
343 return item<GroupItem>(groupTag)->setCurrentType(
modelType);
350 return item<GroupItem>(groupName)->currentItem();
441 return result + QString::number(
index);
536 return variant.isValid() ? variant.toString() :
"Default";
558 QStringList result = list;
560 result = translator->translate(result);
599 child->setModel(
model);
606 if (!
flags.isValid())
609 return flags.toInt();
634 QString child_type = p_child_item->modelType();
635 if (p_child_item ==
item)
#define ASSERT(condition)
Defines class GUIHelpers functions.
Defines class ItemFactory.
Defines interface IParameterTranslator and subclasses.
Defines class SessionItemData.
Defines namespace SessionItemUtils.
Defines class SessionModel.
Defines info for GroupProperty, i.e.
virtual IPathTranslator * clone() const =0
Limits for a real fit parameter.
static RealLimits nonnegative()
Creates an object which can have only positive values with 0. included.
Handles all data roles for SessionItem.
bool isTag(const QString &name) const
Returns true if tag is available.
void setParentAndModel(SessionItem *parent, SessionModel *model)
QString itemName() const
Get item name, return display name if no name is set.
void setItemName(const QString &name)
Set item name, add property if necessary.
SessionItemTags * sessionItemTags()
virtual ~SessionItem()
Destructor deletes all its children and request parent to delete this item.
T & groupItem(const QString &groupName) const
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
SessionItem & setDecimals(int n)
QVector< QString > acceptableDefaultItemTypes() const
Returns vector of acceptable default tag types.
bool insertItem(int row, SessionItem *item, const QString &tag="")
Insert item into given tag into given row.
SessionItem * getGroupItem(const QString &groupName) const
Access subitem of group item.
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.
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.
std::unique_ptr< SessionItemData > m_properties
int numberOfChildren() const
Returns total number of children.
QString displayName() const
Get display name of item, append index if ambigue.
QVariant value() const
Get value.
void setVisible(bool enabled)
Flags accessors.
QVector< int > getRoles() const
Returns vector of all present roles.
SessionItem & setEditorType(const QString &editorType)
bool setValue(QVariant value)
Set value, ensure that variant types match.
virtual QStringList translateList(const QStringList &list) const
int rowOfChild(SessionItem *child) const
Returns row index of given child.
QString editorType() const
static const QString P_NAME
int getCopyNumberOfChild(const SessionItem *item) const
internal
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
bool acceptsAsDefaultItem(const QString &item_name) const
Returns true if model type can be added to default tag.
QVector< SessionItem * > m_children
SessionItem(const QString &modelType="")
Constructs new item with given model type. The type must be defined.
void setDisplayName(const QString &display_name)
Set display name.
QString defaultTag() const
Get default tag.
SessionItem * addGroupProperty(const QString &groupTag, const QString &groupType)
Creates new group item and register new tag, returns GroupItem.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
SessionItem * parent() const
Returns parent of this item.
virtual void deserializeBinaryData(const QByteArray &data)
void setDefaultTag(const QString &tag)
Set default tag.
SessionItem * takeRow(int row)
Removes row from item and returns the item.
void addTranslator(const IPathTranslator &translator)
SessionModel * model() const
Returns model of this item.
QVector< IPathTranslator * > m_translators
SessionItem * takeItem(int row, const QString &tag)
Remove item from given row from given tag.
T * item(const QString &tag) const
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
virtual QByteArray serializeBinaryData() const
SessionItem * setGroupProperty(const QString &groupTag, const QString &modelType) const
Set the current type of group item.
QVariant roleProperty(int role) const
Returns corresponding variant under given role, invalid variant when role is not present.
void emitDataChanged(int role=Qt::DisplayRole)
Notify model about data changes.
void setEditable(bool enabled)
std::unique_ptr< SessionItemTags > m_tags
QVector< SessionItem * > children() const
Returns vector of all children.
RealLimits limits() const
SessionItem * childAt(int row) const
Returns the child at the given row.
SessionItem & setToolTip(const QString &tooltip)
QVector< SessionItem * > getChildrenOfType(const QString &model_type) const
Returns a vector of all children of the given type.
QString modelType() const
Get model type.
QString tagFromItem(const SessionItem *item) const
Returns the tag name of given item when existing.
void setEnabled(bool enabled)
bool setRoleProperty(int role, const QVariant &value)
Set variant to role, create role if not present yet.
QModelIndex index() const
Returns model index of this item.
std::unique_ptr< ModelMapper > m_mapper
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
void setModel(SessionModel *model)
bool hasChildren() const
Indicates whether this SessionItem has any child items.
SessionItem * getChildOfType(const QString &type) const
Returns the first child of the given type.
SessionItem & setLimits(const RealLimits &value)
void childDeleted(SessionItem *child)
void changeFlags(bool enabled, int flag)
internal
QModelIndex indexOfItem(SessionItem *item) const
SessionItem * CreateItem(const QString &model_name, SessionItem *parent=nullptr)
create SessionItem of specific type and parent
QString const & name(EShape k)
QVariant ToolTipRole(const SessionItem &item, int ncol=0)
Returns tooltip for given item.
bool CompatibleVariantTypes(const QVariant &oldValue, const QVariant &newValue)
Returns true if variants has compatible types.
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.