X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvLandmarksPanel.cxx;h=827e391a474ac637b819392fec8c254cdcbfbf51;hb=0722e563db4e7b4493e4c697f75fb6f6aee93ebb;hp=7fb80276ad5c8f6bbfb6642b76cdc45f9cc46680;hpb=88852f2f93eb6ea1257bb0eb139d6627ce2f0c40;p=clitk.git diff --git a/vv/vvLandmarksPanel.cxx b/vv/vvLandmarksPanel.cxx index 7fb8027..827e391 100644 --- a/vv/vvLandmarksPanel.cxx +++ b/vv/vvLandmarksPanel.cxx @@ -21,14 +21,16 @@ #include #include +#include #include "QTreePushButton.h" #include "vvLandmarks.h" #include +#include //==================================================================== vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent) -{ +{ setupUi(this); tableWidget->verticalHeader()->hide(); @@ -36,25 +38,39 @@ vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent) tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); loadButton->setEnabled(0); saveButton->setEnabled(0); + updateTransformButton->setEnabled(0); removeButton->setEnabled(0); connect(loadButton, SIGNAL(clicked()),this,SLOT(Load())); connect(saveButton, SIGNAL(clicked()),this,SLOT(Save())); + connect(updateTransformButton, SIGNAL(clicked()),this,SLOT(UpdateTransform())); 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()); - SetCurrentLandmarks(mCurrentLandmarks,2); + 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,0); emit UpdateRenderWindows(); + return true; } void vvLandmarksPanel::Save() -{ +{ QString file = QFileDialog::getSaveFileName(this, tr("Save Landmarks"), mCurrentPath.c_str(),tr("Landmarks ( *.txt)")); @@ -66,8 +82,33 @@ void vvLandmarksPanel::Save() } } -void vvLandmarksPanel::RemoveSelectedPoints() +void vvLandmarksPanel::UpdateTransform() { + emit UpdateLandmarkTransform(); + SetCurrentLandmarks(mCurrentLandmarks,mCurrentLandmarks->GetTime()); +} + +void vvLandmarksPanel::SelectPoint() +{ + if (tableWidget->rowCount() > 0) { + 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()) { @@ -90,17 +131,26 @@ void vvLandmarksPanel::RemoveSelectedPoints() } } +void vvLandmarksPanel::RemoveAllPoints() +{ + mCurrentLandmarks->RemoveAll(); + tableWidget->clearContents(); + tableWidget->setRowCount(0); + emit UpdateRenderWindows(); +} + void vvLandmarksPanel::AddPoint() -{ +{ AddPoint(mCurrentLandmarks->GetNumberOfPoints()-1); } 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)); + QTableWidgetItem* iItem = new QTableWidgetItem(QString::number(rowIndex)); iItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); tableWidget->setItem(rowIndex,0,iItem); @@ -134,15 +184,20 @@ void vvLandmarksPanel::AddPoint(int landmarksIndex) } void vvLandmarksPanel::SetCurrentLandmarks(vvLandmarks* lm,int time) -{ +{ + if (time != lm->GetTime()) + return; loadButton->setEnabled(1); saveButton->setEnabled(1); + updateTransformButton->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++) { + if ((mCurrentLandmarks->GetLabels()->GetValue(i) != "P1") && (mCurrentLandmarks->GetLabels()->GetValue(i) != "P2")) + AddPoint(i); + } //if (time > 1) //tableWidget->setColumnHidden(4,1); //else @@ -151,14 +206,14 @@ void vvLandmarksPanel::SetCurrentLandmarks(vvLandmarks* lm,int time) } void vvLandmarksPanel::SetCurrentImage(std::string filename) -{ +{ QString image = "CurrentImage : "; image += vtksys::SystemTools::GetFilenameWithoutLastExtension(filename).c_str(); nameLabel->setText(image); } void vvLandmarksPanel::CommentsChanged(int row, int column) -{ +{ if (column == 6) { mCurrentLandmarks->ChangeComments(row,std::string(tableWidget->item(row,column)->text().toStdString())); tableWidget->resizeColumnsToContents();