コード例 #1
0
void QmitkCorrespondingPointSetsModel::ClearCurrentTimeStep()
{
  if (!m_TimeStepper)
    return;

  mitk::DataNode* dataNode = NULL;

  if (this->m_SelectedPointSetIndex == 0)
    dataNode = this->m_PointSetNode;
  else if (this->m_SelectedPointSetIndex == 1)
    dataNode = this->m_ReferencePointSetNode;

  if (dataNode == NULL)
    return;

  mitk::PointSet* pointSet = dynamic_cast<mitk::PointSet*>(dataNode->GetData());

  mitk::PointSet::PointsContainer::Iterator it;
  while( !pointSet->IsEmptyTimeStep(m_TimeStepper->GetPos()) )
  {
    it = pointSet->GetPointSet(m_TimeStepper->GetPos())->GetPoints()->Begin();
    pointSet->SetSelectInfo(it->Index(),true, m_TimeStepper->GetPos());
    this->RemoveSelectedPoint();
  }

  QAbstractTableModel::reset();
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  emit SignalPointSetChanged();
}
コード例 #2
0
void QmitkCorrespondingPointSetsModel::RemoveSelectedPoint()
{
  if (!m_TimeStepper)
    return;

  mitk::DataNode* dataNode = NULL;

  if (this->m_SelectedPointSetIndex == 0){
    dataNode = this->m_PointSetNode;
  }
  else if (this->m_SelectedPointSetIndex == 1){
    dataNode = this->m_ReferencePointSetNode;
  }
  if (dataNode == NULL)
    return;

  //send a DEL event to pointsetinteractor
  const mitk::Event* delEvent = new mitk::Event(this->m_MultiWidget->GetRenderWindow1()->GetRenderer(), mitk::Type_KeyPress, mitk::BS_NoButton, mitk::BS_NoButton, mitk::Key_Delete);
  mitk::StateEvent* delStateEvent = new mitk::StateEvent(mitk::EIDDELETE, delEvent);
  m_Interactor->HandleEvent(delStateEvent);
  delete delEvent;
  delete delStateEvent;


  QAbstractTableModel::reset();
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  emit SignalPointSetChanged();
}
コード例 #3
0
void QmitkCorrespondingPointSetsModel::MoveSelectedPointDown()
{
  //QModelIndex;
  if (!m_TimeStepper)
    return;

  mitk::DataNode* dataNode = NULL;

  if (this->m_SelectedPointSetIndex == 0)
    dataNode = this->m_PointSetNode;
  else if (this->m_SelectedPointSetIndex == 1)
    dataNode = this->m_ReferencePointSetNode;

  mitk::PointSet::Pointer pointSet = this->CheckForPointSetInNode(dataNode);
  if (pointSet.IsNull())
    return;

  mitk::PointSet::PointIdentifier selectedID;
  selectedID = pointSet->SearchSelectedPoint(m_TimeStepper->GetPos());
  if (selectedID==-1)
    return;
  mitk::ScalarType tsInMS = pointSet->GetTimeGeometry()->TimeStepToTimePoint(m_TimeStepper->GetPos());
  mitk::PointOperation* doOp = new mitk::PointOperation(mitk::OpMOVEPOINTDOWN, tsInMS, pointSet->GetPoint(selectedID, m_TimeStepper->GetPos()), selectedID, true);
  pointSet->ExecuteOperation(doOp);

  QAbstractTableModel::reset();
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  emit SignalPointSetChanged();
}
コード例 #4
0
void QmitkCorrespondingPointSetsModel::ClearSelectedPointSet()
{
  mitk::DataNode* dataNode = NULL;

  if (this->m_SelectedPointSetIndex == 0)
    dataNode = this->m_PointSetNode;
  else if (this->m_SelectedPointSetIndex == 1)
    dataNode = this->m_ReferencePointSetNode;

  if (dataNode == NULL)
    return;

  mitk::PointSet* pointSet = dynamic_cast<mitk::PointSet*>(dataNode->GetData());

  //pointSet->Clear();
  mitk::PointSet::PointsContainer::Iterator it;
  if (this->m_TimeStepper->GetRangeMax()==-1)
  {
    while( !pointSet->IsEmptyTimeStep(0) )
    {
      if (pointSet->GetPointSet(0))
      {
        it = pointSet->GetPointSet(0)->GetPoints()->Begin();
        pointSet->SetSelectInfo(it->Index(),true, 0);
        this->RemoveSelectedPoint();
      }
      else
      {
        break;
      }
    }
  }
  else
  {
    int oldTimeStep = this->m_TimeStepper->GetPos();
    for (int i=0; i<this->m_TimeStepper->GetRangeMax(); i++)
    {
      this->m_TimeStepper->SetPos(i);
      while( !pointSet->IsEmptyTimeStep(i) )
      {
        if (pointSet->GetPointSet(i))
        {
          it = pointSet->GetPointSet(i)->GetPoints()->Begin();
          pointSet->SetSelectInfo(it->Index(),true, i);
          this->RemoveSelectedPoint();
        }
      }
    }
    this->m_TimeStepper->SetPos(oldTimeStep);
  }

  QAbstractTableModel::reset();
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  emit SignalPointSetChanged();
}
コード例 #5
0
void QmitkCorrespondingPointSetsModel::MoveSelectedPoint(mitk::PointSet::PointIdentifier targetID)
{
  if (!m_TimeStepper)
    return;

  mitk::DataNode* dataNode = NULL;

  if (this->m_SelectedPointSetIndex == 0)
    dataNode = this->m_PointSetNode;
  else if (this->m_SelectedPointSetIndex == 1)
    dataNode = this->m_ReferencePointSetNode;

  if (dataNode == NULL)
    return;

  mitk::PointSet::Pointer pointSet = this->CheckForPointSetInNode(dataNode);
  if (pointSet.IsNull())
    return;

  mitk::PointSet::PointIdentifier selectedID;
  selectedID = pointSet->SearchSelectedPoint(m_TimeStepper->GetPos());

  if (targetID >= pointSet->GetSize())
    targetID = pointSet->GetSize()-1;

  mitk::PointSet::PointsContainer::Iterator it = pointSet->GetPointSet(m_TimeStepper->GetPos())->GetPoints()->Begin();
  for (int i=0; i<targetID; ++i)
    it++;
  targetID = it->Index();

  if (selectedID<0 || targetID<0)
    return;

  int direction = mitk::OpNOTHING;
  if (selectedID>targetID)
    direction = mitk::OpMOVEPOINTUP;
  else if (selectedID<targetID)
    direction = mitk::OpMOVEPOINTDOWN;

  while (selectedID!=targetID){
    mitk::ScalarType tsInMS = pointSet->GetTimeGeometry()->TimeStepToTimePoint(m_TimeStepper->GetPos());
    mitk::PointOperation* doOp = new mitk::PointOperation(direction, tsInMS, pointSet->GetPoint(selectedID, m_TimeStepper->GetPos()), selectedID, true);
    pointSet->ExecuteOperation(doOp);
    selectedID = pointSet->SearchSelectedPoint(m_TimeStepper->GetPos());
  }

  QAbstractTableModel::reset();
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  emit SignalPointSetChanged();
}
コード例 #6
0
QmitkCorrespondingPointSetsView::QmitkCorrespondingPointSetsView( QWidget* parent )
  :QTableView( parent ),
  m_CorrespondingPointSetsModel( new QmitkCorrespondingPointSetsModel() ),
  m_SelfCall( false ),
  m_swapPointSets(false),
  m_addPointsMode(false),
  m_DataStorage( NULL )
{
  m_CorrespondingPointSetsModel->setProperty("QTPropShowCoordinates", true);
  m_CorrespondingPointSetsModel->setProperty("QTPropShowIds", true);

  this->setContextMenuPolicy(Qt::CustomContextMenu);
  this->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
  this->setToolTip("Use right click to open context menu");

  this->setDragEnabled(true);
  this->setAcceptDrops(true);
  this->setDropIndicatorShown(true);
  this->setDragDropMode(QAbstractItemView::InternalMove);

  QTableView::setAlternatingRowColors( false );
  QTableView::setSelectionBehavior( QAbstractItemView::SelectItems );
  QTableView::setSelectionMode( QAbstractItemView::SingleSelection );
  QTableView::setModel( m_CorrespondingPointSetsModel );
  QTableView::horizontalHeader()->resizeSection(0, (int)(this->width()/3.5));
  QTableView::horizontalHeader()->setStretchLastSection(true);

  m_TimeStepFaderLabel = new QLabel(this);
  QFont font("Arial", 17);
  m_TimeStepFaderLabel->setFont(font);

  //connect
  connect( QTableView::selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
           this, SLOT(OnPointSelectionChanged(const QItemSelection& , const QItemSelection&)) );

  connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));

  connect(this->m_CorrespondingPointSetsModel, SIGNAL(SignalPointSetChanged()), this, SLOT(UpdateSelectionHighlighting()));
}