]> Creatis software - clitk.git/commitdiff
possibility to delete selected landmarks in VV
authorRomulo Pinho <romulo.pinho@lyon.unicancer.fr>
Wed, 28 Mar 2012 08:13:57 +0000 (10:13 +0200)
committerRomulo Pinho <romulo.pinho@lyon.unicancer.fr>
Wed, 28 Mar 2012 08:13:57 +0000 (10:13 +0200)
vv/qt_ui/vvLandmarksPanel.ui
vv/vvLandmarks.cxx
vv/vvLandmarks.h
vv/vvLandmarksPanel.cxx
vv/vvLandmarksPanel.h

index fd0872396e1eed58fd2122405f3693f44ecf5534..7a64ea6b9940e946ddb99be2cb72c1d7dd3b726c 100644 (file)
@@ -88,7 +88,7 @@ p, li { white-space: pre-wrap; }
      </property>
      <property name="icon">
       <iconset resource="../vvIcons.qrc">
-       <normaloff>:/common/icons/undo.png</normaloff>:/common/icons/undo.png</iconset>
+       <normaloff>:/common/icons/standardbutton-cancel-16.png</normaloff>:/common/icons/standardbutton-cancel-16.png</iconset>
      </property>
     </widget>
    </item>
index d44c3be86f13e904e53e09429d2d00eb7e9c4372..682398f49deca17954a5dc95ed25a8364a17c699 100644 (file)
@@ -104,6 +104,25 @@ void vvLandmarks::RemoveLastLandmark()
 //--------------------------------------------------------------------
 
 
+//--------------------------------------------------------------------
+void vvLandmarks::RemoveLandmark(int index)
+{
+  // erase a vtkPoint by shifiting the array .
+  // not a problem here because there are no 
+  // pologyons linking the points
+  int npoints = mPoints[mLandmarks[index].coordinates[3]]->GetNumberOfPoints();
+  int t = mLandmarks[index].coordinates[3];
+  for (int i = index; i < npoints - 1; i++)
+    mPoints[t]->InsertPoint(i, mPoints[t]->GetPoint(i+1));
+  mPoints[t]->SetNumberOfPoints(npoints-1);
+  mPolyData->Modified();
+
+  mLandmarks.erase(mLandmarks.begin() + index);
+  mIds->RemoveLastTuple();
+}
+//--------------------------------------------------------------------
+
+
 //--------------------------------------------------------------------
 void vvLandmarks::ChangeComments(int index, std::string comments)
 {
index 29995c72978c6e7019fa27998cda7b5e4fcc0e95..6bfe82e4469e22241599fcd13f821429c2a5dbd2 100644 (file)
@@ -43,6 +43,7 @@ public :
 
     void AddLandmark(float x,float y,float z,float t,double value);
     void RemoveLastLandmark();
+    void RemoveLandmark(int index);
     void ChangeComments(int index, std::string comments);
     float* GetCoordinates(int index);
     double GetPixelValue(int index);
index a2f0799265d24dc6461e8394700d5238cf13c0fb..9e891cda5071cc3fd3d7419a5b51cc6a0dd2b6c1 100644 (file)
@@ -32,12 +32,14 @@ vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent)
   setupUi(this);
 
   tableWidget->verticalHeader()->hide();
+  tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
+  tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
   loadButton->setEnabled(0);
   saveButton->setEnabled(0);
   removeButton->setEnabled(0);
   connect(loadButton, SIGNAL(clicked()),this,SLOT(Load()));
   connect(saveButton, SIGNAL(clicked()),this,SLOT(Save()));
-  connect(removeButton, SIGNAL(clicked()),this,SLOT(RemoveLastPoint()));
+  connect(removeButton, SIGNAL(clicked()),this,SLOT(RemoveSelectedPoints()));
   connect(tableWidget,SIGNAL(cellChanged(int,int)),this,SLOT(CommentsChanged(int,int)));
 }
 
@@ -64,11 +66,19 @@ void vvLandmarksPanel::Save()
   }
 }
 
-void vvLandmarksPanel::RemoveLastPoint()
+void vvLandmarksPanel::RemoveSelectedPoints()
 {
   if (tableWidget->rowCount() > 0) {
-    tableWidget->removeRow(tableWidget->rowCount()-1);
-    mCurrentLandmarks->RemoveLastLandmark();
+    QList<QTableWidgetItem *> items = tableWidget->selectedItems();
+    if (items.empty()) {
+      tableWidget->removeRow(tableWidget->rowCount()-1);
+      mCurrentLandmarks->RemoveLastLandmark();
+    }
+    else {
+      // we're using single-selection mode
+      mCurrentLandmarks->RemoveLandmark(items[0]->row());
+      tableWidget->removeRow(items[0]->row());
+    }
     emit UpdateRenderWindows();
   }
 }
@@ -84,33 +94,33 @@ void vvLandmarksPanel::AddPoint(int landmarksIndex)
   tableWidget->setRowCount(rowIndex+1);
   tableWidget->setRowHeight(rowIndex,20);
   QTableWidgetItem* iItem = new QTableWidgetItem(QString::number(landmarksIndex));
-  iItem->setFlags(Qt::NoItemFlags);
+  iItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
   tableWidget->setItem(rowIndex,0,iItem);
 
   QTableWidgetItem* xItem = new QTableWidgetItem(
     QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[0],'f',1));
-  xItem->setFlags(Qt::NoItemFlags);
+  xItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
   tableWidget->setItem(rowIndex,1,xItem);
 
   QTableWidgetItem* yItem = new QTableWidgetItem(
     QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[1],'f',1));
-  yItem->setFlags(Qt::NoItemFlags);
+  yItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
   tableWidget->setItem(rowIndex,2,yItem);
 
   QTableWidgetItem* zItem = new QTableWidgetItem(
     QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[2],'f',1));
-  zItem->setFlags(Qt::NoItemFlags);
+  zItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
   tableWidget->setItem(rowIndex,3,zItem);
 
   QTableWidgetItem* tItem = new QTableWidgetItem(
     QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[3],'f',1));
-  tItem->setFlags(Qt::NoItemFlags);
+  tItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
   tableWidget->setItem(rowIndex,4,tItem);
 
 
   QTableWidgetItem* vItem = new QTableWidgetItem(
     QString::number(mCurrentLandmarks->GetPixelValue(landmarksIndex),'f',1));
-  vItem->setFlags(Qt::NoItemFlags);
+  vItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
   tableWidget->setItem(rowIndex,5,vItem);
 
   tableWidget->setItem(rowIndex,6, new QTableWidgetItem(mCurrentLandmarks->GetComments(landmarksIndex).c_str()));
index 69dd3d2a96c33dc3cf5ca61a79c7617fa4a834ef..9966d8820f6672802e8e597d5795c03ac1847c6a 100644 (file)
@@ -42,7 +42,7 @@ public:
 public slots:
     void Load();
     void Save();
-    void RemoveLastPoint();
+    void RemoveSelectedPoints();
     void AddPoint();
     void CommentsChanged(int row, int column);
 signals: