1 #ifndef _vvLandmarksPanel_CXX
2 #define _vvLandmarksPanel_CXX
4 /*=========================================================================
7 Module: $RCSfile: vvLandmarksPanel.cxx,v $
9 Date: $Date: 2010/01/06 13:31:58 $
10 Version: $Revision: 1.1 $
11 Author : Pierre Seroul (pierre.seroul@gmail.com)
13 Copyright (C) 200COLUMN_IMAGE_NAME
14 Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
15 CREATIS-LRMN http://www.creatis.insa-lyon.fr
17 This program is free software: you can redistribute it and/or modify
18 it under the terms of the GNU General Public License as published by
19 the Free Software Foundation, version 3 of the License.
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
26 You should have received a copy of the GNU General Public License
27 along with this program. If not, see <http://www.gnu.org/licenses/>.
29 =========================================================================*/
31 #include "vvLandmarksPanel.h"
35 #include "QTreePushButton.h"
36 #include "vvLandmarks.h"
38 #include <vtksys/SystemTools.hxx>
40 //====================================================================
41 vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent)
45 tableWidget->verticalHeader()->hide();
46 loadButton->setEnabled(0);
47 saveButton->setEnabled(0);
48 removeButton->setEnabled(0);
49 connect(loadButton, SIGNAL(clicked()),this,SLOT(Load()));
50 connect(saveButton, SIGNAL(clicked()),this,SLOT(Save()));
51 connect(removeButton, SIGNAL(clicked()),this,SLOT(RemoveLastPoint()));
52 connect(tableWidget,SIGNAL(cellChanged(int,int)),this,SLOT(CommentsChanged(int,int)));
55 void vvLandmarksPanel::Load()
57 QString file = QFileDialog::getOpenFileName(this,tr("Load Landmarks"),
58 mCurrentPath.c_str(),tr("Landmarks ( *.txt)"));
60 mCurrentLandmarks->LoadFile(file.toStdString());
61 SetCurrentLandmarks(mCurrentLandmarks,2);
62 emit UpdateRenderWindows();
65 void vvLandmarksPanel::Save()
67 QString file = QFileDialog::getSaveFileName(this,
69 mCurrentPath.c_str(),tr("Landmarks ( *.txt)"));
72 std::string filename = vtksys::SystemTools::GetFilenamePath(file.toStdString());
73 filename += "/" + vtksys::SystemTools::GetFilenameWithoutLastExtension(file.toStdString());
75 mCurrentLandmarks->SaveFile(filename.c_str());
79 void vvLandmarksPanel::RemoveLastPoint()
81 if (tableWidget->rowCount() > 0)
83 tableWidget->removeRow(tableWidget->rowCount()-1);
84 mCurrentLandmarks->RemoveLastLandmark();
85 emit UpdateRenderWindows();
89 void vvLandmarksPanel::AddPoint()
91 AddPoint(mCurrentLandmarks->GetNumberOfPoints()-1);
94 void vvLandmarksPanel::AddPoint(int landmarksIndex)
96 int rowIndex = landmarksIndex; //tableWidget->rowCount();
97 tableWidget->setRowCount(rowIndex+1);
98 tableWidget->setRowHeight(rowIndex,20);
99 QTableWidgetItem* iItem = new QTableWidgetItem(QString::number(landmarksIndex));
100 iItem->setFlags(!Qt::ItemIsEditable);
101 tableWidget->setItem(rowIndex,0,iItem);
103 QTableWidgetItem* xItem = new QTableWidgetItem(
104 QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[0],'f',1));
105 xItem->setFlags(!Qt::ItemIsEditable);
106 tableWidget->setItem(rowIndex,1,xItem);
108 QTableWidgetItem* yItem = new QTableWidgetItem(
109 QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[1],'f',1));
110 yItem->setFlags(!Qt::ItemIsEditable);
111 tableWidget->setItem(rowIndex,2,yItem);
113 QTableWidgetItem* zItem = new QTableWidgetItem(
114 QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[2],'f',1));
115 zItem->setFlags(!Qt::ItemIsEditable);
116 tableWidget->setItem(rowIndex,3,zItem);
118 QTableWidgetItem* tItem = new QTableWidgetItem(
119 QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[3],'f',1));
120 tItem->setFlags(!Qt::ItemIsEditable);
121 tableWidget->setItem(rowIndex,4,tItem);
124 QTableWidgetItem* vItem = new QTableWidgetItem(
125 QString::number(mCurrentLandmarks->GetPixelValue(landmarksIndex),'f',1));
126 vItem->setFlags(!Qt::ItemIsEditable);
127 tableWidget->setItem(rowIndex,5,vItem);
129 tableWidget->setItem(rowIndex,6, new QTableWidgetItem(mCurrentLandmarks->GetComments(landmarksIndex).c_str()));
132 void vvLandmarksPanel::SetCurrentLandmarks(vvLandmarks* lm,int time)
134 loadButton->setEnabled(1);
135 saveButton->setEnabled(1);
136 removeButton->setEnabled(1);
137 mCurrentLandmarks = lm;
138 tableWidget->clearContents();
139 tableWidget->setRowCount(mCurrentLandmarks->GetNumberOfPoints());
140 for (int i = 0; i < mCurrentLandmarks->GetNumberOfPoints(); i++)
143 //tableWidget->setColumnHidden(4,1);
145 //tableWidget->setColumnHidden(4,0);
146 tableWidget->resizeColumnsToContents();
149 void vvLandmarksPanel::SetCurrentImage(std::string filename)
151 QString image = "<b>CurrentImage : </b>";
152 image += vtksys::SystemTools::GetFilenameWithoutLastExtension(filename).c_str();
153 nameLabel->setText(image);
156 void vvLandmarksPanel::CommentsChanged(int row, int column)
160 mCurrentLandmarks->ChangeComments(row,std::string(tableWidget->item(row,column)->text().toStdString()));
161 tableWidget->resizeColumnsToContents();
165 #endif /* end #define _vvLandmarksPanel_CXX */