Page MenuHomePhabricator

Patch4947_4DPointInteraction.patch

Authored By
wegner
Aug 25 2010, 5:03 PM
Size
5 KB
Referenced Files
None
Subscribers
None

Patch4947_4DPointInteraction.patch

Index: mitk/Core/Code/Interactions/mitkPointSetInteractor.cpp
===================================================================
--- mitk/Core/Code/Interactions/mitkPointSetInteractor.cpp (revision 25766)
+++ mitk/Core/Code/Interactions/mitkPointSetInteractor.cpp (working copy)
@@ -1121,32 +1121,47 @@
mitk::PointSet *pointSet = dynamic_cast<mitk::PointSet*>(m_DataNode->GetData());
if ( pointSet != NULL )
{
- int numberOfPoints = pointSet->GetSize( m_TimeStep );
- if (numberOfPoints == 0)
- return; //pointset is empty
- else if (numberOfPoints<m_N || m_N <= -1)//if less than specified or specified as unlimited
+ //resize the CurrentStateVector
+ this->ExpandStartStateVector(pointSet->GetPointSetSeriesSize());
+
+ for (unsigned int timestep = 0; timestep < pointSet->GetPointSetSeriesSize(); timestep++)
{
- //get the currentState to state "SpaceLeft"
- const mitk::Event* nullEvent = new mitk::Event(NULL, Type_User, BS_NoButton, BS_NoButton, Key_none);
- mitk::StateEvent* newStateEvent =
- new mitk::StateEvent(EIDSMALLERN, nullEvent);
- this->HandleEvent( newStateEvent );
- delete newStateEvent;
- delete nullEvent;
- }
- else if (numberOfPoints>=m_N)
- {
- if (numberOfPoints>m_N)
+ //go to new timestep
+ this->UpdateTimeStep(timestep);
+
+ int numberOfPoints = pointSet->GetSize( timestep );
+ if (numberOfPoints == 0)
+ continue; //pointset is empty
+ else
{
- STATEMACHINE_WARN<<"Point Set contains more points than needed!\n";//display a warning that there are too many points
+ //we have a set of loaded points. Deselect all points, because they are all set to selected when added!
+ this->UnselectAll(timestep);
+
+ if (numberOfPoints<m_N || m_N <= -1)//if less than specified or specified as unlimited
+ {
+ //get the currentState to state "SpaceLeft"
+ const mitk::Event* nullEvent = new mitk::Event(NULL, Type_User, BS_NoButton, BS_NoButton, Key_none);
+ mitk::StateEvent* newStateEvent =
+ new mitk::StateEvent(EIDSMALLERN, nullEvent);
+ this->HandleEvent( newStateEvent );
+ delete newStateEvent;
+ delete nullEvent;
+ }
+ else if (numberOfPoints>=m_N)
+ {
+ if (numberOfPoints>m_N)
+ {
+ STATEMACHINE_WARN<<"Point Set contains more points than needed!\n";//display a warning that there are too many points
+ }
+ //get the currentState to state "Set full"
+ const mitk::Event* nullEvent = new mitk::Event(NULL, Type_User, BS_NoButton, BS_NoButton, Key_none);
+ mitk::StateEvent* newStateEvent =
+ new mitk::StateEvent(EIDEQUALSN, nullEvent);
+ this->HandleEvent( newStateEvent );
+ delete newStateEvent;
+ delete nullEvent;
+ }
}
- //get the currentState to state "Set full"
- const mitk::Event* nullEvent = new mitk::Event(NULL, Type_User, BS_NoButton, BS_NoButton, Key_none);
- mitk::StateEvent* newStateEvent =
- new mitk::StateEvent(EIDEQUALSN, nullEvent);
- this->HandleEvent( newStateEvent );
- delete newStateEvent;
- delete nullEvent;
}
}
return;
Index: mitk/Modules/QmitkExt/QmitkPointListModel.cpp
===================================================================
--- mitk/Modules/QmitkExt/QmitkPointListModel.cpp (revision 25765)
+++ mitk/Modules/QmitkExt/QmitkPointListModel.cpp (working copy)
@@ -24,6 +24,7 @@
#include <mitkEvent.h>
#include <mitkStateEvent.h>
#include <mitkInteractionConst.h>
+#include <mitkGlobalInteraction.h>
QmitkPointListModel::QmitkPointListModel( mitk::DataNode* pointSetNode, int t, QObject* parent )
@@ -111,6 +112,34 @@
void QmitkPointListModel::OnPointSetChanged( const itk::EventObject & /*e*/ )
{
+ mitk::PointSet::Pointer pointSet = this->CheckForPointSetInNode(m_PointSetNode);
+ if ( pointSet.IsNotNull() )
+ {
+ //if 4D Data, then update time
+ if ((int)(pointSet->GetTimeSteps()) > 1 && m_PointSetNode->GetInteractor())
+ {
+ //check if we need to update the time
+ mitk::BaseRenderer::Pointer sender = mitk::GlobalInteraction::GetInstance()->GetFocusManager()->GetFocused();
+ if (sender.IsNull())
+ {
+ MITK_WARN("PointListModel")<<"No BaseRenderer set!\n";
+ }
+ else if (m_TimeStep != sender->GetTimeStep())
+ {
+ //setting this timestep
+ m_TimeStep = sender->GetTimeStep();
+
+ //send a UpdateTime event to interactor
+ mitk::Interactor::Pointer interactor = m_PointSetNode->GetInteractor();
+ const mitk::Event* noEvent = new mitk::Event(sender, mitk::Type_None, mitk::BS_NoButton, mitk::BS_NoButton, mitk::Key_none);
+ mitk::StateEvent* stateEvent = new mitk::StateEvent(mitk::EIDNULLEVENT, noEvent);
+ interactor->HandleEvent(stateEvent);
+ delete noEvent;
+ delete stateEvent;
+ }
+ }
+ }
+
QAbstractListModel::reset();
emit SignalUpdateSelection();
}
@@ -300,14 +329,17 @@
}
else
{
- MITK_WARN<<"Unexpected interactor found!\n";
+ MITK_WARN("PointListModel")<<"Unexpected interactor found!\n";
return;
}
}
+ //send a DEL event to pointsetinteractor
+ mitk::BaseRenderer::Pointer sender = mitk::GlobalInteraction::GetInstance()->GetFocusManager()->GetFocused();
+ if (sender.IsNull())
+ MITK_WARN("PointListModel")<<"No BaseRenderer set! TimeStep broken.\n";
- //send a DEL event to pointsetinteractor
- const mitk::Event* delEvent = new mitk::Event(NULL, mitk::Type_KeyPress, mitk::BS_NoButton, mitk::BS_NoButton, mitk::Key_Delete);
+ const mitk::Event* delEvent = new mitk::Event(sender, mitk::Type_KeyPress, mitk::BS_NoButton, mitk::BS_NoButton, mitk::Key_Delete);
mitk::StateEvent* delStateEvent = new mitk::StateEvent(mitk::EIDDELETE, delEvent);
interactor->HandleEvent(delStateEvent);
delete delEvent;

File Metadata

Mime Type
application/octet-stream
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
551
Default Alt Text
Patch4947_4DPointInteraction.patch (5 KB)

Event Timeline

initial 4D pointset interaction for Widget