GUI widget for handling mitk::PointSet. More...
#include <QmitkPointListViewWidget.h>
Signals | |
void | PointSelectionChanged () |
this signal is emmitted, if the selection of a point in the pointset is changed | |
Public Member Functions | |
QmitkPointListViewWidget (QWidget *parent=0) | |
~QmitkPointListViewWidget () | |
void | SetPointSet (mitk::PointSet *pointSet) |
assign a point set for observation | |
const mitk::PointSet * | GetPointSet () const |
which point set to work on | |
void | SetMultiWidget (QmitkStdMultiWidget *multiWidget) |
assign a QmitkStdMultiWidget for updating render window crosshair | |
QmitkStdMultiWidget * | GetMultiWidget () const |
return the QmitkStdMultiWidget that is used for updating render window crosshair | |
void | SetTimeStep (int t) |
which time step to display/model | |
int | GetTimeStep () const |
which time step to display/model | |
void | OnPointSetChanged (const itk::Object *) |
observer for point set "modified" events | |
void | OnPointSetDeleted (const itk::Object *) |
observer for point set "delete" events | |
Protected Slots | |
void | OnItemDoubleClicked (QListWidgetItem *item) |
void | OnCurrentRowChanged (int) |
called when the selection of the view widget changes | |
Protected Member Functions | |
void | keyPressEvent (QKeyEvent *e) |
react to F2, F3 and DEL keys | |
void | MoveSelectedPointUp () |
void | MoveSelectedPointDown () |
void | RemoveSelectedPoint () |
void | Update (bool currentRowChanged=false) |
Protected Attributes | |
mitk::WeakPointer< mitk::PointSet > | m_PointSet |
int | m_TimeStep |
bool | m_SelfCall |
QmitkStdMultiWidget * | m_MultiWidget |
used to position the planes on a selected point |
GUI widget for handling mitk::PointSet.
Displays all the points in a mitk::PointSet graphically. Reacts automatically to changes in the PointSet's selection status. Updates PointSet's selection status when this list's selection changes.
If a QmitkStdMultiWidget is assigned via SetMultiWidget(), the crosshair of the QmitkStdMultiWidget is moved to the currently selected point.
Definition at line 41 of file QmitkPointListViewWidget.h.
QmitkPointListViewWidget::QmitkPointListViewWidget | ( | QWidget * | parent = 0 ) |
Definition at line 30 of file QmitkPointListViewWidget.cpp.
References OnCurrentRowChanged(), and OnItemDoubleClicked().
:QListWidget( parent ), m_TimeStep( 0 ), m_SelfCall( false ), m_MultiWidget( NULL) { QListWidget::setAlternatingRowColors( true ); // logic QListWidget::setSelectionBehavior( QAbstractItemView::SelectRows ); QListWidget::setSelectionMode( QAbstractItemView::SingleSelection ); connect( this, SIGNAL(itemDoubleClicked ( QListWidgetItem * )), this, SLOT(OnItemDoubleClicked( QListWidgetItem *)) ); connect( this, SIGNAL( currentRowChanged( int ) ), this, SLOT( OnCurrentRowChanged( int ) ) ); }
QmitkPointListViewWidget::~QmitkPointListViewWidget | ( | ) |
Definition at line 50 of file QmitkPointListViewWidget.cpp.
References SetPointSet().
{ this->SetPointSet(0); // remove listener }
QmitkStdMultiWidget * QmitkPointListViewWidget::GetMultiWidget | ( | ) | const |
return the QmitkStdMultiWidget that is used for updating render window crosshair
Definition at line 104 of file QmitkPointListViewWidget.cpp.
References m_MultiWidget.
{ return m_MultiWidget; }
const mitk::PointSet * QmitkPointListViewWidget::GetPointSet | ( | ) | const |
which point set to work on
Definition at line 82 of file QmitkPointListViewWidget.cpp.
References m_PointSet.
{ return m_PointSet; }
int QmitkPointListViewWidget::GetTimeStep | ( | ) | const |
which time step to display/model
Definition at line 93 of file QmitkPointListViewWidget.cpp.
References m_TimeStep.
{ return m_TimeStep; }
void QmitkPointListViewWidget::keyPressEvent | ( | QKeyEvent * | e ) | [protected] |
react to F2, F3 and DEL keys
Definition at line 203 of file QmitkPointListViewWidget.cpp.
References mitk::WeakPointer< TObjectType >::IsNull(), mitk::Key_Delete, mitk::Key_F2, mitk::Key_F3, m_PointSet, MoveSelectedPointDown(), MoveSelectedPointUp(), and RemoveSelectedPoint().
{ if (m_PointSet.IsNull()) return; int key = e->key(); switch (key) { case Qt::Key_F2: this->MoveSelectedPointUp(); break; case Qt::Key_F3: this->MoveSelectedPointDown(); break; case Qt::Key_Delete: this->RemoveSelectedPoint(); break; default: break; } }
void QmitkPointListViewWidget::MoveSelectedPointDown | ( | ) | [protected] |
Definition at line 238 of file QmitkPointListViewWidget.cpp.
References mitk::RenderingManager::GetInstance(), m_PointSet, m_TimeStep, and mitk::OpMOVEPOINTDOWN.
Referenced by keyPressEvent().
{ if (m_PointSet == NULL) return; mitk::PointSet::PointIdentifier selectedID; selectedID = m_PointSet->SearchSelectedPoint(m_TimeStep); mitk::PointOperation* doOp = new mitk::PointOperation(mitk::OpMOVEPOINTDOWN, m_PointSet->GetPoint(selectedID, m_TimeStep), selectedID, true); m_PointSet->ExecuteOperation(doOp); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); // Workaround for update problem in Pointset/Mapper }
void QmitkPointListViewWidget::MoveSelectedPointUp | ( | ) | [protected] |
Definition at line 225 of file QmitkPointListViewWidget.cpp.
References mitk::RenderingManager::GetInstance(), m_PointSet, m_TimeStep, and mitk::OpMOVEPOINTUP.
Referenced by keyPressEvent().
{ if (m_PointSet == NULL) return; mitk::PointSet::PointIdentifier selectedID; selectedID = m_PointSet->SearchSelectedPoint(m_TimeStep); mitk::PointOperation* doOp = new mitk::PointOperation(mitk::OpMOVEPOINTUP, m_PointSet->GetPoint(selectedID, m_TimeStep), selectedID, true); m_PointSet->ExecuteOperation(doOp); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); // Workaround for update problem in Pointset/Mapper }
void QmitkPointListViewWidget::OnCurrentRowChanged | ( | int | ) | [protected, slot] |
called when the selection of the view widget changes
Definition at line 128 of file QmitkPointListViewWidget.cpp.
References Update().
Referenced by QmitkPointListViewWidget().
{ this->Update(true); }
void QmitkPointListViewWidget::OnItemDoubleClicked | ( | QListWidgetItem * | item ) | [protected, slot] |
Filtering double click event for editing point coordinates via a dialog
Definition at line 121 of file QmitkPointListViewWidget.cpp.
References m_PointSet, m_TimeStep, and QmitkEditPointDialog::SetPoint().
Referenced by QmitkPointListViewWidget().
{ QmitkEditPointDialog _EditPointDialog(this); _EditPointDialog.SetPoint(m_PointSet, this->row(item), m_TimeStep); _EditPointDialog.exec(); }
void QmitkPointListViewWidget::OnPointSetChanged | ( | const itk::Object * | ) |
observer for point set "modified" events
Definition at line 109 of file QmitkPointListViewWidget.cpp.
References m_SelfCall, and Update().
Referenced by SetPointSet().
{ if(!m_SelfCall) this->Update(); }
void QmitkPointListViewWidget::OnPointSetDeleted | ( | const itk::Object * | ) |
observer for point set "delete" events
Definition at line 115 of file QmitkPointListViewWidget.cpp.
References SetPointSet(), and Update().
Referenced by SetPointSet().
{ this->SetPointSet(0); this->Update(); }
void QmitkPointListViewWidget::PointSelectionChanged | ( | ) | [signal] |
this signal is emmitted, if the selection of a point in the pointset is changed
void QmitkPointListViewWidget::RemoveSelectedPoint | ( | ) | [protected] |
Definition at line 251 of file QmitkPointListViewWidget.cpp.
References mitk::RenderingManager::GetInstance(), m_PointSet, m_TimeStep, and mitk::OpREMOVE.
Referenced by keyPressEvent().
{ if (m_PointSet == NULL) return; mitk::PointSet::PointIdentifier selectedID; selectedID = m_PointSet->SearchSelectedPoint(m_TimeStep); mitk::PointOperation* doOp = new mitk::PointOperation(mitk::OpREMOVE, m_PointSet->GetPoint(selectedID, m_TimeStep), selectedID, true); m_PointSet->ExecuteOperation(doOp); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); // Workaround for update problem in Pointset/Mapper }
void QmitkPointListViewWidget::SetMultiWidget | ( | QmitkStdMultiWidget * | multiWidget ) |
assign a QmitkStdMultiWidget for updating render window crosshair
Definition at line 98 of file QmitkPointListViewWidget.cpp.
References m_MultiWidget.
{ m_MultiWidget = multiWidget; }
void QmitkPointListViewWidget::SetPointSet | ( | mitk::PointSet * | pointSet ) |
assign a point set for observation
Definition at line 55 of file QmitkPointListViewWidget.cpp.
References mitk::WeakPointer< TObjectType >::IsNotNull(), m_PointSet, mitk::WeakPointer< TObjectType >::ObjectDelete, mitk::WeakPointer< TObjectType >::ObjectModified, OnPointSetChanged(), OnPointSetDeleted(), and Update().
Referenced by OnPointSetDeleted(), and ~QmitkPointListViewWidget().
{ if(m_PointSet.IsNotNull()) { m_PointSet.ObjectModified.RemoveListener (mitk::MessageDelegate1<QmitkPointListViewWidget , const itk::Object*>( this, &QmitkPointListViewWidget::OnPointSetChanged )); m_PointSet.ObjectDelete.RemoveListener (mitk::MessageDelegate1<QmitkPointListViewWidget , const itk::Object*>( this, &QmitkPointListViewWidget::OnPointSetDeleted )); } m_PointSet = pointSet; if(m_PointSet.IsNotNull()) { m_PointSet.ObjectModified.AddListener (mitk::MessageDelegate1<QmitkPointListViewWidget , const itk::Object*>( this, &QmitkPointListViewWidget::OnPointSetChanged )); m_PointSet.ObjectDelete.AddListener (mitk::MessageDelegate1<QmitkPointListViewWidget , const itk::Object*>( this, &QmitkPointListViewWidget::OnPointSetDeleted )); } this->Update(); }
void QmitkPointListViewWidget::SetTimeStep | ( | int | t ) |
which time step to display/model
Definition at line 87 of file QmitkPointListViewWidget.cpp.
References m_TimeStep, QuadProgPP::t(), and Update().
{ m_TimeStep = t; this->Update(); }
void QmitkPointListViewWidget::Update | ( | bool | currentRowChanged = false ) |
[protected] |
use logging as soon as available
Definition at line 263 of file QmitkPointListViewWidget.cpp.
References int(), mitk::WeakPointer< TObjectType >::IsNull(), m_PointSet, m_SelfCall, and m_TimeStep.
Referenced by OnCurrentRowChanged(), OnPointSetChanged(), OnPointSetDeleted(), SetPointSet(), and SetTimeStep().
{ if(m_SelfCall) return; if(m_PointSet.IsNull()) { this->clear(); return; } m_SelfCall = true; QString text; int i = 0; mitk::PointSet::DataType::Pointer pointset = m_PointSet->GetPointSet(m_TimeStep); for (mitk::PointSet::PointsContainer::Iterator it = pointset->GetPoints()->Begin(); it != pointset->GetPoints()->End(); ++it) { text = QString("%0: (%1, %2, %3)") .arg( i, 3) .arg( it.Value().GetElement(0), 0, 'f', 3 ) .arg( it.Value().GetElement(1), 0, 'f', 3 ) .arg( it.Value().GetElement(2), 0, 'f', 3 ); if(i==this->count()) this->addItem(text); // insert text else this->item(i)->setText(text); // update text if(currentRowChanged) { if(i == this->currentRow()) m_PointSet->SetSelectInfo(this->currentRow(), true, m_TimeStep); else m_PointSet->SetSelectInfo(it->Index(), false, m_TimeStep); // select nothing now } ++i; } // remove unnecessary listwidgetitems while (m_PointSet->GetPointSet(m_TimeStep)->GetPoints()->Size() < (unsigned int)this->count() ) { QListWidgetItem * item = this->takeItem(this->count()-1); delete item; } // update selection in pointset or in the list widget if(!currentRowChanged) { if ( m_PointSet->GetNumberOfSelected( m_TimeStep ) > 1 ) { std::cerr << "Point set has multiple selected points. This view is not designed for more than one selected point." << std::endl; } int selectedIndex = m_PointSet->SearchSelectedPoint( m_TimeStep ); if (selectedIndex != -1) // no selected point is found { this->setCurrentRow ( selectedIndex ); } } m_SelfCall = false; }
used to position the planes on a selected point
Definition at line 97 of file QmitkPointListViewWidget.h.
Referenced by GetMultiWidget(), and SetMultiWidget().
Definition at line 91 of file QmitkPointListViewWidget.h.
Referenced by GetPointSet(), keyPressEvent(), MoveSelectedPointDown(), MoveSelectedPointUp(), OnItemDoubleClicked(), RemoveSelectedPoint(), SetPointSet(), and Update().
bool QmitkPointListViewWidget::m_SelfCall [protected] |
Definition at line 94 of file QmitkPointListViewWidget.h.
Referenced by OnPointSetChanged(), and Update().
int QmitkPointListViewWidget::m_TimeStep [protected] |
Definition at line 92 of file QmitkPointListViewWidget.h.
Referenced by GetTimeStep(), MoveSelectedPointDown(), MoveSelectedPointUp(), OnItemDoubleClicked(), RemoveSelectedPoint(), SetTimeStep(), and Update().