MeVisLab Toolbox Reference
|
This class represents an abstract hierarchical item model where the items have named attributes which can be queried and even modified. More...
#include <mlAbstractItemModel.h>
Public Member Functions | |
virtual bool | isFlat () const |
item traversal interface More... | |
virtual bool | hasChildren (const ModelIndex &parent) |
Or rather mightHaveChildren. More... | |
virtual unsigned int | getChildCount (const ModelIndex &parent)=0 |
Returns the number of children of the given item, an invalid index means number of top-level items. More... | |
virtual ModelIndex | getChild (const ModelIndex &parent, unsigned int index)=0 |
Returns the n-th child of an item (or n-th top-level item if parent index is invalid). More... | |
virtual ModelIndex | getParent (const ModelIndex &child)=0 |
Returns the parent of an item. More... | |
virtual int | getAttributeCount () const =0 |
Attribute discovery. More... | |
virtual std::string | getAttributeName (int index) const =0 |
Returns the name of n-th attribute. Must be overridden. More... | |
virtual Variant | getAttributeDefault (int index) const |
Returns the default value of n-th attribute. More... | |
virtual int | getAttributeIndex (const std::string &name) |
Returns the index of attribute with the given name. More... | |
virtual Variant | getData (const ModelIndex &item, int attributeIndex)=0 |
Data access. More... | |
virtual bool | setData (const ModelIndex &item, int attributeIndex, const Variant &data, void *skipListener=nullptr) |
Updates a single attribute on a single item. More... | |
virtual bool | bulkSetData (const std::vector< ModelIndex > &items, int attributeIndex, const Variant &data, void *skipListener=nullptr) |
This method will be used by views to set selection state to an attribute, so that we only get a single update notification. More... | |
virtual bool | bulkSetData (const std::vector< ModelIndex > &items, int attributeIndex, const std::vector< Variant > &data, void *skipListener=nullptr) |
This method can be used to update whole columns with varying data. More... | |
![]() | |
RefCountedBase () | |
Constructor. More... | |
RefCountedBase (const RefCountedBase &) | |
Explicit copy constructor. More... | |
virtual void | incRefCount () const |
Increases the reference count. More... | |
virtual void | decRefCount () const |
Decreases the reference count (object will be deleted if the reference count is decremented to 0). More... | |
bool | isRefCountedBase () const override |
Returns whether the instance is derived from RefCountedBase. More... | |
![]() | |
EventSource () | |
EventSource (const EventSource &evSource) | |
~EventSource () override | |
void | addEventListener (BaseEventCallback *cb, void *userData) |
Adds event listener callback to this Base object. More... | |
void | removeEventListener (BaseEventCallback *cb, void *userData) |
Removes event listener callback from this Base object. More... | |
bool | hasEventListeners () const |
Checks whether any event listeners have been added to this Base object; this can be used to skip the sendEvent call and the potentially expensive building of the event object altogether. More... | |
![]() | |
Base () | |
Constructor. More... | |
virtual | ~Base () |
Destructor. More... | |
virtual Base * | deepCopy () const |
Creates a deep copy of the given object. More... | |
bool | isOfAllowedType (const std::vector< const RuntimeType * > &types) const |
Checks whether this object's type is equal to or derived from one of the types given in the argument. More... | |
virtual std::string | detailString () const |
Returns a string describing this object. More... | |
virtual bool | implementsPersistence (PersistenceInterface) const |
Override this method to declare which persistence interfaces are implemented by your derived class. More... | |
virtual std::string | persistentState () const |
Returns a string describing the object's internal state. More... | |
virtual void | setPersistentState (const std::string &state) |
Restores the object's internal state from a string that had been previously generated using persistentState(). More... | |
virtual void | addStateToTree (TreeNode *) const |
Attaches the object state as children of the given parent node. More... | |
virtual void | readStateFromTree (TreeNode *) |
Reads the object state from the children of the given parent node. More... | |
virtual void | writeTo (AbstractPersistenceOutputStream *) const |
Writes the objects state to the data stream object. More... | |
virtual void | readFrom (AbstractPersistenceInputStream *, int) |
Reads the objects state from the data stream object. More... | |
Protected Member Functions | |
AbstractItemModel () | |
virtual bool | rawSetData (const ModelIndex &item, int attributeIndex, const Variant &data)=0 |
This will be called by setData and bulkSetData, which will do the necessary notifications afterwards; attributeIndex does not need to be checked for valid range, this has already been done when this method is called. More... | |
ModelIndex | createIndex (void *data) |
ModelIndex | createIndex (size_t data) |
virtual void | incItemRefCount (void *) |
Implement this if the pointer in the model indices needs explicit reference counting. More... | |
virtual void | decItemRefCount (void *) |
virtual void | notifyItemChanged (const ModelIndex &item, bool after, void *skipListener=nullptr) |
change notifications More... | |
virtual void | notifyItemsInserted (const ModelIndex &parent, unsigned int childIndex, unsigned int itemsInserted, bool after, void *skipListener=nullptr) |
Notifies listeners that an item gets/got additional children. More... | |
virtual void | notifyItemsRemoved (const ModelIndex &parent, unsigned int childIndex, unsigned int itemsRemoved, bool after, void *skipListener=nullptr) |
Notifies listeners that an item loses/lost additional children. More... | |
virtual void | notifyItemsDataChanged (const std::vector< ModelIndex > &items, const std::vector< int > &attributeIndices, void *skipListener=nullptr) |
Notifies listeners that attributes have changed on the given items. More... | |
![]() | |
~RefCountedBase () override | |
Macro for the declaration of the runtime type system methods, defined in mlRuntimeSubClass.h. More... | |
![]() | |
void | sendEvent (BaseEvent *event, void *skipListener=nullptr) |
Macro for the declaration of the runtime type system methods, defined in mlRuntimeSubClass.h. More... | |
Friends | |
class | ItemModelProxy |
class | ModelIndex |
Additional Inherited Members | |
![]() | |
enum | PersistenceInterface { PersistenceByString , PersistenceByTreeNode , PersistenceByStream } |
This enum describes the different persistence interfaces available. More... | |
![]() | |
static void | updateReferenceCountingIfSupported (Base *oldValue, Base *newValue, bool &isRefCountedBase) |
Helper method that handles incrementing/decrementing of the reference count if base instances support it. More... | |
![]() | |
std::atomic_int_least32_t | _refCount |
Reference count. More... | |
This class represents an abstract hierarchical item model where the items have named attributes which can be queried and even modified.
It has a notification system in place to inform about changes to the model. This is loosely modeled after the QAbstractItemModel class from Qt.
Definition at line 90 of file mlAbstractItemModel.h.
|
inlineprotected |
Definition at line 175 of file mlAbstractItemModel.h.
|
virtual |
This method can be used to update whole columns with varying data.
This will return false
if not all changes were accepted. This will call rawSetData.
Reimplemented in ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
virtual |
This method will be used by views to set selection state to an attribute, so that we only get a single update notification.
This is important for remote handling. This will return false
if not all changes were accepted. This will call rawSetData.
Reimplemented in ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
protected |
|
protected |
Creates a model index, either with a pointer value or with an integer value. Note: this does not call incItemRef.
|
inlineprotectedvirtual |
Reimplemented in ml::ItemModelProxy.
Definition at line 191 of file mlAbstractItemModel.h.
|
pure virtual |
Attribute discovery.
Returns the number of defined attributes for this model. Must be overridden.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
virtual |
Returns the default value of n-th attribute.
This is used to conserve space during serialization of items. This method returns an invalid value by default.
Reimplemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
virtual |
Returns the index of attribute with the given name.
Returns -1 if the attribute name does not exist in the model.
Reimplemented in ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
pure virtual |
Returns the name of n-th attribute. Must be overridden.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
pure virtual |
Returns the n-th child of an item (or n-th top-level item if parent index is invalid).
Note: Do not call this before calling getChildCount on the parent, since this is the signal for the model that the children must really be provided! Must be overridden.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
pure virtual |
Returns the number of children of the given item, an invalid index means number of top-level items.
This will be only called if the children are really accessed, so the children might be dynamically created the first time this method is called for an item. Must be overridden.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
pure virtual |
Data access.
Returns the attribute value of a certain item. Must be overridden.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
pure virtual |
Returns the parent of an item.
Will return invalid index for top-level items. Must be overridden.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
virtual |
Or rather mightHaveChildren.
This method tells us if an item has children - at least in principle. This is used to display the item as having children, even if it might turn out that is has none actually. The default for this method is to return true
if getChildCount returns a number != 0 or if the model index is invalid.
Reimplemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
inlineprotectedvirtual |
Implement this if the pointer in the model indices needs explicit reference counting.
Reimplemented in ml::ItemModelProxy.
Definition at line 190 of file mlAbstractItemModel.h.
|
inlinevirtual |
item traversal interface
Returns a hint if this model is flat (in contrast to being hierarchical, i.e., if it will have subitems).
Reimplemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
Definition at line 99 of file mlAbstractItemModel.h.
|
protectedvirtual |
change notifications
Notifies listeners that an items children have completely changed. This must be called once before the changed and once after the change (set second argument accordingly).
If a skipListener is specified, all event listeners with this value for userData are not notified of the change.
|
protectedvirtual |
Notifies listeners that attributes have changed on the given items.
This must be called after the change.
If a skipListener
is specified, all event listeners with this value for userData are not notified of the change.
|
protectedvirtual |
Notifies listeners that an item gets/got additional children.
This must be called once before the changed and once after the change (set second argument accordingly).
If a skipListener
is specified, all event listeners with this value for userData are not notified of the change.
|
protectedvirtual |
Notifies listeners that an item loses/lost additional children.
This must be called once before the changed and once after the change (set second argument accordingly).
If a skipListener
is specified, all event listeners with this value for userData are not notified of the change.
|
protectedpure virtual |
This will be called by setData and bulkSetData, which will do the necessary notifications afterwards; attributeIndex
does not need to be checked for valid range, this has already been done when this method is called.
Implemented in ml::StandardItemModel, ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
virtual |
Updates a single attribute on a single item.
This will return false
if the change was not accepted by the model. skipListener
denotes an event listener which should not be notified of this change. This will call rawSetData, which must be overridden
Reimplemented in ml::ItemModelItemFilter, and ml::ItemModelAttributeFilter.
|
friend |
Definition at line 92 of file mlAbstractItemModel.h.
|
friend |
Definition at line 173 of file mlAbstractItemModel.h.