]> Creatis software - clitk.git/blob - vv/vvLandmarksPanel.cxx
removed headers
[clitk.git] / vv / vvLandmarksPanel.cxx
1 #ifndef _vvLandmarksPanel_CXX
2 #define _vvLandmarksPanel_CXX
3 #include "vvLandmarksPanel.h"
4
5 #include <QtGui>
6 #include <Qt>
7 #include "QTreePushButton.h"
8 #include "vvLandmarks.h"
9
10 #include <vtksys/SystemTools.hxx>
11
12 //====================================================================
13 vvLandmarksPanel::vvLandmarksPanel(QWidget * parent):QWidget(parent)
14 {
15     setupUi(this);
16
17     tableWidget->verticalHeader()->hide();
18     loadButton->setEnabled(0);
19     saveButton->setEnabled(0);
20     removeButton->setEnabled(0);
21     connect(loadButton, SIGNAL(clicked()),this,SLOT(Load()));
22     connect(saveButton, SIGNAL(clicked()),this,SLOT(Save()));
23     connect(removeButton, SIGNAL(clicked()),this,SLOT(RemoveLastPoint()));
24     connect(tableWidget,SIGNAL(cellChanged(int,int)),this,SLOT(CommentsChanged(int,int)));
25 }
26
27 void vvLandmarksPanel::Load()
28 {
29     QString file = QFileDialog::getOpenFileName(this,tr("Load Landmarks"),
30                    mCurrentPath.c_str(),tr("Landmarks ( *.txt)"));
31     if (!file.isEmpty())
32         mCurrentLandmarks->LoadFile(file.toStdString());
33     SetCurrentLandmarks(mCurrentLandmarks,2);
34     emit UpdateRenderWindows();
35 }
36
37 void vvLandmarksPanel::Save()
38 {
39     QString file = QFileDialog::getSaveFileName(this,
40                    tr("Save Landmarks"),
41                    mCurrentPath.c_str(),tr("Landmarks ( *.txt)"));
42     if (!file.isEmpty())
43     {
44         std::string filename = vtksys::SystemTools::GetFilenamePath(file.toStdString());
45         filename += "/" + vtksys::SystemTools::GetFilenameWithoutLastExtension(file.toStdString());
46         filename += ".txt";
47         mCurrentLandmarks->SaveFile(filename.c_str());
48     }
49 }
50
51 void vvLandmarksPanel::RemoveLastPoint()
52 {
53     if (tableWidget->rowCount() > 0)
54     {
55         tableWidget->removeRow(tableWidget->rowCount()-1);
56         mCurrentLandmarks->RemoveLastLandmark();
57         emit UpdateRenderWindows();
58     }
59 }
60
61 void vvLandmarksPanel::AddPoint()
62 {
63     AddPoint(mCurrentLandmarks->GetNumberOfPoints()-1);
64 }
65
66 void vvLandmarksPanel::AddPoint(int landmarksIndex)
67 {
68     int rowIndex = landmarksIndex; //tableWidget->rowCount();
69     tableWidget->setRowCount(rowIndex+1);
70     tableWidget->setRowHeight(rowIndex,20);
71     QTableWidgetItem* iItem = new QTableWidgetItem(QString::number(landmarksIndex));
72     iItem->setFlags(Qt::NoItemFlags);
73     tableWidget->setItem(rowIndex,0,iItem);
74
75     QTableWidgetItem* xItem = new QTableWidgetItem(
76         QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[0],'f',1));
77     xItem->setFlags(Qt::NoItemFlags);
78     tableWidget->setItem(rowIndex,1,xItem);
79
80     QTableWidgetItem* yItem = new QTableWidgetItem(
81         QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[1],'f',1));
82     yItem->setFlags(Qt::NoItemFlags);
83     tableWidget->setItem(rowIndex,2,yItem);
84
85     QTableWidgetItem* zItem = new QTableWidgetItem(
86         QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[2],'f',1));
87     zItem->setFlags(Qt::NoItemFlags);
88     tableWidget->setItem(rowIndex,3,zItem);
89
90     QTableWidgetItem* tItem = new QTableWidgetItem(
91         QString::number(mCurrentLandmarks->GetCoordinates(landmarksIndex)[3],'f',1));
92     tItem->setFlags(Qt::NoItemFlags);
93     tableWidget->setItem(rowIndex,4,tItem);
94
95
96     QTableWidgetItem* vItem = new QTableWidgetItem(
97         QString::number(mCurrentLandmarks->GetPixelValue(landmarksIndex),'f',1));
98     vItem->setFlags(Qt::NoItemFlags);
99     tableWidget->setItem(rowIndex,5,vItem);
100
101     tableWidget->setItem(rowIndex,6, new QTableWidgetItem(mCurrentLandmarks->GetComments(landmarksIndex).c_str()));
102 }
103
104 void vvLandmarksPanel::SetCurrentLandmarks(vvLandmarks* lm,int time)
105 {
106     loadButton->setEnabled(1);
107     saveButton->setEnabled(1);
108     removeButton->setEnabled(1);
109     mCurrentLandmarks = lm;
110     tableWidget->clearContents();
111     tableWidget->setRowCount(mCurrentLandmarks->GetNumberOfPoints());
112     for (int i = 0; i < mCurrentLandmarks->GetNumberOfPoints(); i++)
113         AddPoint(i);
114     //if (time > 1)
115         //tableWidget->setColumnHidden(4,1);
116     //else
117         //tableWidget->setColumnHidden(4,0);
118     tableWidget->resizeColumnsToContents();
119 }
120
121 void vvLandmarksPanel::SetCurrentImage(std::string filename)
122 {
123     QString image = "<b>CurrentImage : </b>";
124     image += vtksys::SystemTools::GetFilenameWithoutLastExtension(filename).c_str();
125     nameLabel->setText(image);
126 }
127
128 void vvLandmarksPanel::CommentsChanged(int row, int column)
129 {
130     if (column == 6)
131     {
132         mCurrentLandmarks->ChangeComments(row,std::string(tableWidget->item(row,column)->text().toStdString()));
133         tableWidget->resizeColumnsToContents();
134     }
135 }
136
137 #endif /* end #define _vvLandmarksPanel_CXX */
138