]> Creatis software - clitk.git/blob - vv/vvLandmarksPanel.cxx
Initial revision
[clitk.git] / vv / vvLandmarksPanel.cxx
1 #ifndef _vvLandmarksPanel_CXX
2 #define _vvLandmarksPanel_CXX
3
4 /*=========================================================================
5
6  Program:   vv
7  Module:    $RCSfile: vvLandmarksPanel.cxx,v $
8  Language:  C++
9  Date:      $Date: 2010/01/06 13:31:58 $
10  Version:   $Revision: 1.1 $
11  Author :   Pierre Seroul (pierre.seroul@gmail.com)
12
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
16
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.
20
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.
25
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/>.
28
29 =========================================================================*/
30
31 #include "vvLandmarksPanel.h"
32
33 #include <QtGui>
34 #include <Qt>
35 #include "QTreePushButton.h"
36 #include "vvLandmarks.h"
37
38 #include <vtksys/SystemTools.hxx>
39
40 //====================================================================
41 vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent)
42 {
43     setupUi(this);
44
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)));
53 }
54
55 void vvLandmarksPanel::Load()
56 {
57     QString file = QFileDialog::getOpenFileName(this,tr("Load Landmarks"),
58                    mCurrentPath.c_str(),tr("Landmarks ( *.txt)"));
59     if (!file.isEmpty())
60         mCurrentLandmarks->LoadFile(file.toStdString());
61     SetCurrentLandmarks(mCurrentLandmarks,2);
62     emit UpdateRenderWindows();
63 }
64
65 void vvLandmarksPanel::Save()
66 {
67     QString file = QFileDialog::getSaveFileName(this,
68                    tr("Save Landmarks"),
69                    mCurrentPath.c_str(),tr("Landmarks ( *.txt)"));
70     if (!file.isEmpty())
71     {
72         std::string filename = vtksys::SystemTools::GetFilenamePath(file.toStdString());
73         filename += "/" + vtksys::SystemTools::GetFilenameWithoutLastExtension(file.toStdString());
74         filename += ".txt";
75         mCurrentLandmarks->SaveFile(filename.c_str());
76     }
77 }
78
79 void vvLandmarksPanel::RemoveLastPoint()
80 {
81     if (tableWidget->rowCount() > 0)
82     {
83         tableWidget->removeRow(tableWidget->rowCount()-1);
84         mCurrentLandmarks->RemoveLastLandmark();
85         emit UpdateRenderWindows();
86     }
87 }
88
89 void vvLandmarksPanel::AddPoint()
90 {
91     AddPoint(mCurrentLandmarks->GetNumberOfPoints()-1);
92 }
93
94 void vvLandmarksPanel::AddPoint(int landmarksIndex)
95 {
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);
102
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);
107
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);
112
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);
117
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);
122
123
124     QTableWidgetItem* vItem = new QTableWidgetItem(
125         QString::number(mCurrentLandmarks->GetPixelValue(landmarksIndex),'f',1));
126     vItem->setFlags(!Qt::ItemIsEditable);
127     tableWidget->setItem(rowIndex,5,vItem);
128
129     tableWidget->setItem(rowIndex,6, new QTableWidgetItem(mCurrentLandmarks->GetComments(landmarksIndex).c_str()));
130 }
131
132 void vvLandmarksPanel::SetCurrentLandmarks(vvLandmarks* lm,int time)
133 {
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++)
141         AddPoint(i);
142     //if (time > 1)
143         //tableWidget->setColumnHidden(4,1);
144     //else
145         //tableWidget->setColumnHidden(4,0);
146     tableWidget->resizeColumnsToContents();
147 }
148
149 void vvLandmarksPanel::SetCurrentImage(std::string filename)
150 {
151     QString image = "<b>CurrentImage : </b>";
152     image += vtksys::SystemTools::GetFilenameWithoutLastExtension(filename).c_str();
153     nameLabel->setText(image);
154 }
155
156 void vvLandmarksPanel::CommentsChanged(int row, int column)
157 {
158     if (column == 6)
159     {
160         mCurrentLandmarks->ChangeComments(row,std::string(tableWidget->item(row,column)->text().toStdString()));
161         tableWidget->resizeColumnsToContents();
162     }
163 }
164
165 #endif /* end #define _vvLandmarksPanel_CXX */
166