X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvLandmarksPanel.cxx;h=2d3e1a5503ca4f0702e13947935035afd690d16f;hb=9c5f0e4d3d6b33e09d0413439ed7a867e3d85faa;hp=8a2c83a78054144f2eb2457e269e36ac60132c21;hpb=d1e88eac10caf83d88336f9d6192f6050e354233;p=clitk.git diff --git a/vv/vvLandmarksPanel.cxx b/vv/vvLandmarksPanel.cxx index 8a2c83a..2d3e1a5 100644 --- a/vv/vvLandmarksPanel.cxx +++ b/vv/vvLandmarksPanel.cxx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #ifndef _vvLandmarksPanel_CXX #define _vvLandmarksPanel_CXX #include "vvLandmarksPanel.h" @@ -25,6 +25,7 @@ #include "vvLandmarks.h" #include +#include //==================================================================== vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent) @@ -32,23 +33,37 @@ 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(removeAllButton, SIGNAL(clicked()),this,SLOT(RemoveAllPoints())); connect(tableWidget,SIGNAL(cellChanged(int,int)),this,SLOT(CommentsChanged(int,int))); + connect(tableWidget,SIGNAL(doubleClicked(const QModelIndex &)),this,SLOT(SelectPoint())); } void vvLandmarksPanel::Load() { QString file = QFileDialog::getOpenFileName(this,tr("Load Landmarks"), - mCurrentPath.c_str(),tr("Landmarks ( *.txt)")); - if (!file.isEmpty()) - mCurrentLandmarks->LoadFile(file.toStdString()); + mCurrentPath.c_str(),tr("Landmarks ( *.txt *.pts)")); + if (!file.isEmpty()) { + std::vector files(1, file.toStdString()); + LoadFromFile(files); + } +} + +bool vvLandmarksPanel::LoadFromFile(std::vector files) +{ + if (!mCurrentLandmarks->LoadFile(files)) + return false; + SetCurrentLandmarks(mCurrentLandmarks,2); emit UpdateRenderWindows(); + return true; } void vvLandmarksPanel::Save() @@ -64,15 +79,57 @@ void vvLandmarksPanel::Save() } } -void vvLandmarksPanel::RemoveLastPoint() +void vvLandmarksPanel::SelectPoint() { if (tableWidget->rowCount() > 0) { - tableWidget->removeRow(tableWidget->rowCount()-1); - mCurrentLandmarks->RemoveLastLandmark(); + QList items = tableWidget->selectedItems(); + if (!items.empty()) { + // we're using single-selection mode + int row = items[0]->row(); + mSelectedPoint[0] = mCurrentLandmarks->GetCoordinates(row)[0]; + mSelectedPoint[1] = mCurrentLandmarks->GetCoordinates(row)[1]; + mSelectedPoint[2] = mCurrentLandmarks->GetCoordinates(row)[2]; + mSelectedPoint[3] = mCurrentLandmarks->GetCoordinates(row)[3]; + + emit SelectedPointChanged(); + } + } + +} + + +void vvLandmarksPanel::RemoveSelectedPoints() +{ + if (tableWidget->rowCount() > 0) { + QList items = tableWidget->selectedItems(); + if (items.empty()) { + tableWidget->removeRow(tableWidget->rowCount()-1); + mCurrentLandmarks->RemoveLastLandmark(); + } + else { + // we're using single-selection mode + int row = items[0]->row(); + mCurrentLandmarks->RemoveLandmark(row); + tableWidget->removeRow(row); + + for (int i = row; i < tableWidget->rowCount(); i++) { + QTableWidgetItem* iItem = tableWidget->item(i, 0); + iItem->setText(QString::number(i)); + } + + } emit UpdateRenderWindows(); } } +void vvLandmarksPanel::RemoveAllPoints() +{ + mCurrentLandmarks->RemoveAll(); + tableWidget->clearContents(); + tableWidget->setRowCount(0); + emit UpdateRenderWindows(); +} + void vvLandmarksPanel::AddPoint() { AddPoint(mCurrentLandmarks->GetNumberOfPoints()-1); @@ -80,37 +137,38 @@ void vvLandmarksPanel::AddPoint() void vvLandmarksPanel::AddPoint(int landmarksIndex) { - int rowIndex = landmarksIndex; //tableWidget->rowCount(); + int rowIndex = tableWidget->rowCount(); +// DD(rowIndex); tableWidget->setRowCount(rowIndex+1); tableWidget->setRowHeight(rowIndex,20); - QTableWidgetItem* iItem = new QTableWidgetItem(QString::number(landmarksIndex)); - iItem->setFlags(Qt::NoItemFlags); + QTableWidgetItem* iItem = new QTableWidgetItem(QString::number(rowIndex)); + 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())); @@ -118,14 +176,18 @@ void vvLandmarksPanel::AddPoint(int landmarksIndex) void vvLandmarksPanel::SetCurrentLandmarks(vvLandmarks* lm,int time) { + if (time != lm->GetTime()) + return; + loadButton->setEnabled(1); saveButton->setEnabled(1); removeButton->setEnabled(1); mCurrentLandmarks = lm; tableWidget->clearContents(); - tableWidget->setRowCount(mCurrentLandmarks->GetNumberOfPoints()); - for (unsigned int i = 0; i < mCurrentLandmarks->GetNumberOfPoints(); i++) - AddPoint(i); + tableWidget->setRowCount(0); + for (unsigned int i = 0; i < mCurrentLandmarks->GetNumberOfPoints(); i++) { + AddPoint(i); + } //if (time > 1) //tableWidget->setColumnHidden(4,1); //else