#include <mitkDataStorageSelection.h>
Public Types | |
typedef std::vector < mitk::DataNode * > | Nodes |
typedef Message1< const mitk::DataNode * > | DataNodeEvent |
typedef DataStorageSelection | Self |
typedef itk::Object | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
virtual const char * | GetClassName () const |
virtual | ~DataStorageSelection () |
mitk::DataStorage::Pointer | GetDataStorage () const |
mitk::NodePredicateBase::Pointer | GetPredicate () const |
unsigned int | GetSize () const |
mitk::DataNode::Pointer | GetNode (unsigned int index) const |
mitk::DataNode::Pointer | GetNode () const |
std::vector< mitk::DataNode * > | GetNodes () const |
bool | DoesAutoAddNodes () const |
DataStorageSelection & | operator= (mitk::DataNode *node) |
DataStorageSelection & | operator= (mitk::DataNode::Pointer node) |
virtual void | SetDataStorage (mitk::DataStorage *_DataStorage) |
virtual void | SetPredicate (mitk::NodePredicateBase *_Predicate) |
virtual void | AddNode (const mitk::DataNode *node) |
virtual void | RemoveNode (const mitk::DataNode *node) |
virtual void | RemoveAllNodes () |
virtual void | ObjectChanged (const itk::Object *caller, const itk::EventObject &event) |
Static Public Member Functions | |
static Pointer | New (DataStorage *_arga, bool _argb) |
static Pointer | New (DataStorage *_arga, NodePredicateBase *_argb, bool _argc) |
Public Attributes | |
DataNodeEvent | NodeChanged |
DataNodeEvent | NodeAdded |
DataNodeEvent | NodeRemoved |
Message2< const mitk::DataNode *, const mitk::BaseProperty * > | PropertyChanged |
Protected Member Functions | |
DataStorageSelection (mitk::DataStorage *_DataStorage, bool _AutoAddNodes) | |
DataStorageSelection (mitk::DataStorage *_DataStorage, mitk::NodePredicateBase *_Predicate, bool _AutoAddNodes) | |
mitk::DataNode::Pointer | FindNode (const mitk::BaseProperty *prop) const |
mitk::DataNode::Pointer | FindNode (const mitk::PropertyList *propList) const |
void | Reset () |
void | RemoveListener (mitk::DataNode *node) |
void | AddListener (mitk::DataNode *node) |
Protected Attributes | |
mitk::DataStorage * | m_DataStorage |
unsigned int | m_DataStorageDeletedTag |
mitk::NodePredicateBase::Pointer | m_Predicate |
std::vector< mitk::DataNode * > | m_Nodes |
std::map< mitk::DataNode *, unsigned long > | m_NodeModifiedObserverTags |
Maps a node to a modified observer tag. | |
std::map< mitk::PropertyList *, unsigned long > | m_PropertyListModifiedObserverTags |
Maps a propertylist to a modified observer tag. | |
std::map< mitk::PropertyList *, unsigned long > | m_PropertyListDeletedObserverTags |
Maps a propertylist to a delete observer tag. | |
std::map< mitk::BaseProperty *, unsigned long > | m_PropertyModifiedObserverTags |
Maps a property to a modified observer tag. | |
std::map< mitk::BaseProperty *, unsigned long > | m_PropertyDeletedObserverTags |
Maps a property to a delete observer tag. | |
bool | m_SelfCall |
bool | m_AutoAddNodes |
Definition at line 33 of file mitkDataStorageSelection.h.
typedef itk::SmartPointer<const Self> mitk::DataStorageSelection::ConstPointer |
Definition at line 44 of file mitkDataStorageSelection.h.
typedef Message1<const mitk::DataNode*> mitk::DataStorageSelection::DataNodeEvent |
Definition at line 37 of file mitkDataStorageSelection.h.
typedef std::vector<mitk::DataNode*> mitk::DataStorageSelection::Nodes |
Definition at line 36 of file mitkDataStorageSelection.h.
typedef itk::SmartPointer<Self> mitk::DataStorageSelection::Pointer |
Definition at line 44 of file mitkDataStorageSelection.h.
Definition at line 44 of file mitkDataStorageSelection.h.
typedef itk::Object mitk::DataStorageSelection::Superclass |
Definition at line 44 of file mitkDataStorageSelection.h.
mitk::DataStorageSelection::DataStorageSelection | ( | mitk::DataStorage * | _DataStorage, |
bool | _AutoAddNodes | ||
) | [protected] |
Definition at line 21 of file mitkDataStorageSelection.cpp.
{
mitk::DataStorageSelection::DataStorageSelection | ( | mitk::DataStorage * | _DataStorage, |
mitk::NodePredicateBase * | _Predicate, | ||
bool | _AutoAddNodes | ||
) | [protected] |
Definition at line 27 of file mitkDataStorageSelection.cpp.
: m_DataStorage(0), m_Predicate(0), m_SelfCall(false), m_AutoAddNodes(_AutoAddNodes) { this->SetDataStorage(_DataStorage); } DataStorageSelection::DataStorageSelection(mitk::DataStorage* _DataStorage , mitk::NodePredicateBase* _Predicate
mitk::DataStorageSelection::~DataStorageSelection | ( | ) | [virtual] |
Definition at line 35 of file mitkDataStorageSelection.cpp.
: m_DataStorage(0), m_Predicate(_Predicate), m_SelfCall(false), m_AutoAddNodes(_AutoAddNodes) { this->SetDataStorage(_DataStorage); }
void mitk::DataStorageSelection::AddListener | ( | mitk::DataNode * | node ) | [protected] |
Adds listeners for modified/delete event, for the propertylists modified/delete and for the modified/delete event of each property and stores listener tags
Definition at line 333 of file mitkDataStorageSelection.cpp.
{ // node listener itk::MemberCommand<DataStorageSelection>::Pointer ObjectChangedCommand = itk::MemberCommand<DataStorageSelection>::New(); ObjectChangedCommand->SetCallbackFunction(this, &DataStorageSelection::ObjectChanged); m_NodeModifiedObserverTags[node] = node->AddObserver(itk::ModifiedEvent() , ObjectChangedCommand); // create propertylist listener mitk::PropertyList* propList = node->GetPropertyList(); m_PropertyListModifiedObserverTags[propList] = propList ->AddObserver(itk::ModifiedEvent(), ObjectChangedCommand); m_PropertyListDeletedObserverTags[propList] = propList ->AddObserver(itk::DeleteEvent(), ObjectChangedCommand); mitk::BaseProperty* prop = 0; // do the same for each property for(mitk::PropertyList::PropertyMap::const_iterator it=propList->GetMap()->begin() ; it!=propList->GetMap()->end() ; ++it) { prop = it->second.first; m_PropertyModifiedObserverTags[prop] = prop->AddObserver(itk::ModifiedEvent()
void mitk::DataStorageSelection::AddNode | ( | const mitk::DataNode * | node ) | [virtual] |
Add a node (if not already there)
Definition at line 144 of file mitkDataStorageSelection.cpp.
{ // garantuee no recursions when a new node event is thrown if(m_SelfCall) return; // if we have a predicate, check node against predicate first if(m_Predicate.IsNotNull() && !m_Predicate->CheckNode(node)) return; // no duplicates if(std::find(m_Nodes.begin(), m_Nodes.end(), node) != m_Nodes.end()) return; mitk::DataNode* nonConstNode = const_cast<mitk::DataNode*>(node); // add listener this->AddListener(nonConstNode); // add node
bool mitk::DataStorageSelection::DoesAutoAddNodes | ( | ) | const |
Definition at line 72 of file mitkDataStorageSelection.cpp.
References m_Nodes.
{ return m_Nodes; }
mitk::DataNode::Pointer mitk::DataStorageSelection::FindNode | ( | const mitk::BaseProperty * | prop ) | const [protected] |
Find a node in the list by the given prop
Definition at line 246 of file mitkDataStorageSelection.cpp.
{ mitk::DataNode* node = 0; for(Nodes::const_iterator it=m_Nodes.begin(); it!=m_Nodes.end(); ++it) { for(mitk::PropertyList::PropertyMap::const_iterator it2 = (*it)->GetPropertyList()->GetMap()->begin() ; it2 != (*it)->GetPropertyList()->GetMap()->end(); ++it2) { if(it2->second.first == prop) { node = *it; break;
mitk::DataNode::Pointer mitk::DataStorageSelection::FindNode | ( | const mitk::PropertyList * | propList ) | const [protected] |
Find a node in the list by the given proplist
Definition at line 265 of file mitkDataStorageSelection.cpp.
{ mitk::DataNode* node = 0; for(Nodes::const_iterator it=m_Nodes.begin(); it!=m_Nodes.end(); ++it) { if((*it)->GetPropertyList() == propList) { node = *it;
virtual const char* mitk::DataStorageSelection::GetClassName | ( | ) | const [virtual] |
mitk::DataStorage::Pointer mitk::DataStorageSelection::GetDataStorage | ( | ) | const |
Get the DataStorage.
Definition at line 41 of file mitkDataStorageSelection.cpp.
References SetDataStorage().
{ // kick datastorage and all nodes and all listeners this->SetDataStorage(0); }
mitk::DataNode::Pointer mitk::DataStorageSelection::GetNode | ( | ) | const |
Returns the first node, same as calling GetNode(0)
Definition at line 56 of file mitkDataStorageSelection.cpp.
References m_Nodes.
Referenced by GetNode().
{ return m_Nodes.size(); }
mitk::DataNode::Pointer mitk::DataStorageSelection::GetNode | ( | unsigned int | index ) | const |
Get node at a specific model index.
Definition at line 61 of file mitkDataStorageSelection.cpp.
References GetNode().
{ return this->GetNode(0); }
std::vector< mitk::DataNode * > mitk::DataStorageSelection::GetNodes | ( | ) | const |
Returns a copy of the node-vector
Definition at line 66 of file mitkDataStorageSelection.cpp.
References m_Nodes.
mitk::NodePredicateBase::Pointer mitk::DataStorageSelection::GetPredicate | ( | ) | const |
Get the predicate.
Definition at line 46 of file mitkDataStorageSelection.cpp.
References m_DataStorage.
{ return m_DataStorage; }
unsigned int mitk::DataStorageSelection::GetSize | ( | ) | const |
Returns the size of this selection
Definition at line 51 of file mitkDataStorageSelection.cpp.
References m_Predicate.
{ return m_Predicate; }
static Pointer mitk::DataStorageSelection::New | ( | DataStorage * | _arga, |
bool | _argb | ||
) | [inline, static] |
Definition at line 46 of file mitkDataStorageSelection.h.
Referenced by QmitkMeasurement::CreateQtPartControl(), and QmitkBasicImageProcessing::CreateQtPartControl().
: DataStorageSelection(mitk::DataStorage* _DataStorage, bool _AutoAddNodes);
static Pointer mitk::DataStorageSelection::New | ( | DataStorage * | _arga, |
NodePredicateBase * | _argb, | ||
bool | _argc | ||
) | [inline, static] |
Definition at line 47 of file mitkDataStorageSelection.h.
: DataStorageSelection(mitk::DataStorage* _DataStorage, bool _AutoAddNodes);
void mitk::DataStorageSelection::ObjectChanged | ( | const itk::Object * | caller, |
const itk::EventObject & | event | ||
) | [virtual] |
Called whenever an itk Object this class holds gets deleted or modified
Definition at line 206 of file mitkDataStorageSelection.cpp.
{ if(m_SelfCall) return; const itk::DeleteEvent* delEvent = 0; const itk::ModifiedEvent* modifiedEvent = dynamic_cast<const itk::ModifiedEvent*>(&event); if(!modifiedEvent) delEvent = dynamic_cast<const itk::DeleteEvent*>(&event); const mitk::BaseProperty* prop = 0; const mitk::PropertyList* propList = 0; const mitk::DataNode* node = dynamic_cast<const mitk::DataNode*>(caller); if(!node) { if((prop = dynamic_cast<const mitk::BaseProperty*>(caller))) { node = this->FindNode(prop); } else if((propList = dynamic_cast<const mitk::PropertyList*>(caller))) { node = this->FindNode(propList); } else if(dynamic_cast<const mitk::DataStorage*>(caller)) { this->SetDataStorage(0); } } if(prop && node) { PropertyChanged.Send(node, prop); }
DataStorageSelection & mitk::DataStorageSelection::operator= | ( | mitk::DataNode * | node ) |
Removes all nodes, sets node as new first element
Definition at line 77 of file mitkDataStorageSelection.cpp.
References m_AutoAddNodes.
{ return m_AutoAddNodes; } DataStorageSelection& DataStorageSelection::operator=(mitk::DataNode* node)
DataStorageSelection & mitk::DataStorageSelection::operator= | ( | mitk::DataNode::Pointer | node ) |
Removes all nodes, sets node as new first element
Definition at line 84 of file mitkDataStorageSelection.cpp.
void mitk::DataStorageSelection::RemoveAllNodes | ( | ) | [virtual] |
Removes a node
Definition at line 193 of file mitkDataStorageSelection.cpp.
void mitk::DataStorageSelection::RemoveListener | ( | mitk::DataNode * | node ) | [protected] |
If a node is already in this list, all listeners will be removed
Definition at line 306 of file mitkDataStorageSelection.cpp.
{ // remove node listener node->RemoveObserver(m_NodeModifiedObserverTags[node]); m_NodeModifiedObserverTags.erase(node); // remove propertylist listener mitk::PropertyList* propList = node->GetPropertyList(); propList->RemoveObserver(m_PropertyListModifiedObserverTags[propList]); m_PropertyListModifiedObserverTags.erase(propList); propList->RemoveObserver(m_PropertyListDeletedObserverTags[propList]); m_PropertyListDeletedObserverTags.erase(propList); mitk::BaseProperty* prop = 0; // do the same for each property for(mitk::PropertyList::PropertyMap::const_iterator it=propList->GetMap()->begin() ; it!=propList->GetMap()->end() ; ++it) { prop = it->second.first; prop->RemoveObserver(m_PropertyModifiedObserverTags[prop]);
void mitk::DataStorageSelection::RemoveNode | ( | const mitk::DataNode * | node ) | [virtual] |
Removes a node
Definition at line 170 of file mitkDataStorageSelection.cpp.
{ if(m_SelfCall) return; // find corresponding node std::vector<mitk::DataNode*>::iterator nodeIt = std::find(m_Nodes.begin(), m_Nodes.end(), node); if(nodeIt == m_Nodes.end()) return; mitk::DataNode* nonConstNode = const_cast<mitk::DataNode*>(node); // add listener this->RemoveListener(nonConstNode); // remove node
void mitk::DataStorageSelection::Reset | ( | ) | [protected] |
Removes all nodes and fill the vector again
Definition at line 279 of file mitkDataStorageSelection.cpp.
{ this->RemoveAllNodes(); // the whole reset depends on the fact if a data storage is set or not if(m_DataStorage) { mitk::DataStorage::SetOfObjects::ConstPointer _NodeSet = 0; if(m_AutoAddNodes && m_Predicate.IsNotNull()) // get subset _NodeSet = m_DataStorage->GetSubset(m_Predicate); // if predicate is NULL, select all nodes else if(m_AutoAddNodes) { _NodeSet = m_DataStorage->GetAll(); } else return; // finally add all nodes to the model for(mitk::DataStorage::SetOfObjects::const_iterator it=_NodeSet->begin(); it!=_NodeSet->end() ; it++) {
void mitk::DataStorageSelection::SetDataStorage | ( | mitk::DataStorage * | _DataStorage ) | [virtual] |
Sets the DataStorage.
Definition at line 90 of file mitkDataStorageSelection.cpp.
Referenced by GetDataStorage().
{ *this = node.GetPointer(); return *this; } void DataStorageSelection::SetDataStorage(mitk::DataStorage* _DataStorage) { // only proceed if we have a new datastorage if(m_DataStorage != _DataStorage) { // if a data storage was set before remove old event listeners if(m_DataStorage != 0) { if(m_AutoAddNodes) this->m_DataStorage->AddNodeEvent.RemoveListener( mitk::MessageDelegate1<DataStorageSelection , const mitk::DataNode*>( this, &DataStorageSelection::AddNode ) ); this->m_DataStorage->RemoveNodeEvent.RemoveListener( mitk::MessageDelegate1<DataStorageSelection , const mitk::DataNode*>( this, &DataStorageSelection::RemoveNode ) ); m_DataStorage->RemoveObserver(m_DataStorageDeletedTag); m_DataStorageDeletedTag = 0; } // set new data storage m_DataStorage = _DataStorage; // if new storage is not 0 subscribe for events if(m_DataStorage != 0) { // subscribe for node added/removed events if(m_AutoAddNodes) this->m_DataStorage->AddNodeEvent.AddListener( mitk::MessageDelegate1<DataStorageSelection , const mitk::DataNode*>( this, &DataStorageSelection::AddNode ) ); this->m_DataStorage->RemoveNodeEvent.AddListener( mitk::MessageDelegate1<DataStorageSelection , const mitk::DataNode*>( this, &DataStorageSelection::RemoveNode ) ); itk::MemberCommand<DataStorageSelection>::Pointer ObjectChangedCommand = itk::MemberCommand<DataStorageSelection>::New(); ObjectChangedCommand->SetCallbackFunction(this, &DataStorageSelection::ObjectChanged); m_DataStorageDeletedTag = m_DataStorage->AddObserver(itk::DeleteEvent(), ObjectChangedCommand);
void mitk::DataStorageSelection::SetPredicate | ( | mitk::NodePredicateBase * | _Predicate ) | [virtual] |
Sets the predicate. QmitkDataStorageTableModel is owner of the predicate!
Definition at line 134 of file mitkDataStorageSelection.cpp.
{ // ensure that a new predicate is set in order to avoid unnecessary changed events if(m_Predicate != _Predicate)
bool mitk::DataStorageSelection::m_AutoAddNodes [protected] |
Saves if new nodes are automatically added to this selection
Definition at line 186 of file mitkDataStorageSelection.h.
Referenced by operator=().
Pointer to the DataStorage from which the nodes are selected
Definition at line 145 of file mitkDataStorageSelection.h.
Referenced by GetPredicate().
unsigned int mitk::DataStorageSelection::m_DataStorageDeletedTag [protected] |
DeleteTag for the DataStorage
Definition at line 149 of file mitkDataStorageSelection.h.
std::map<mitk::DataNode*, unsigned long> mitk::DataStorageSelection::m_NodeModifiedObserverTags [protected] |
Maps a node to a modified observer tag.
Definition at line 162 of file mitkDataStorageSelection.h.
std::vector<mitk::DataNode*> mitk::DataStorageSelection::m_Nodes [protected] |
Holds all selected Nodes.
Definition at line 158 of file mitkDataStorageSelection.h.
Referenced by DoesAutoAddNodes(), GetNode(), and GetNodes().
Holds the predicate that defines this SubSet of Nodes. If m_Predicate is NULL all Nodes will be selected.
Definition at line 154 of file mitkDataStorageSelection.h.
Referenced by GetSize().
std::map<mitk::BaseProperty*, unsigned long> mitk::DataStorageSelection::m_PropertyDeletedObserverTags [protected] |
Maps a property to a delete observer tag.
Definition at line 178 of file mitkDataStorageSelection.h.
std::map<mitk::PropertyList*, unsigned long> mitk::DataStorageSelection::m_PropertyListDeletedObserverTags [protected] |
Maps a propertylist to a delete observer tag.
Definition at line 170 of file mitkDataStorageSelection.h.
std::map<mitk::PropertyList*, unsigned long> mitk::DataStorageSelection::m_PropertyListModifiedObserverTags [protected] |
Maps a propertylist to a modified observer tag.
Definition at line 166 of file mitkDataStorageSelection.h.
std::map<mitk::BaseProperty*, unsigned long> mitk::DataStorageSelection::m_PropertyModifiedObserverTags [protected] |
Maps a property to a modified observer tag.
Definition at line 174 of file mitkDataStorageSelection.h.
bool mitk::DataStorageSelection::m_SelfCall [protected] |
If set to true no event processing will be performed
Definition at line 182 of file mitkDataStorageSelection.h.
Definition at line 40 of file mitkDataStorageSelection.h.
Definition at line 39 of file mitkDataStorageSelection.h.
Definition at line 41 of file mitkDataStorageSelection.h.
Message2<const mitk::DataNode*, const mitk::BaseProperty*> mitk::DataStorageSelection::PropertyChanged |
Definition at line 42 of file mitkDataStorageSelection.h.