]> Creatis software - clitk.git/blob - vv/vvToolSimpleInputSelectorWidget.cxx
- correct bug: string pixeltype is different in ITK and VTK
[clitk.git] / vv / vvToolSimpleInputSelectorWidget.cxx
1 /*=========================================================================
2
3   Program:   vv
4   Module:    $RCSfile: vvToolSimpleInputSelectorWidget.cxx,v $
5   Language:  C++
6   Date:      $Date: 2010/03/24 20:35:13 $
7   Version:   $Revision: 1.3 $
8   Author :   David Sarrut (david.sarrut@creatis.insa-lyon.fr)
9
10   Copyright (C) 2010
11   Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
12   CREATIS                   http://www.creatis.insa-lyon.fr
13
14   This program is free software: you can redistribute it and/or modify
15   it under the terms of the GNU General Public License as published by
16   the Free Software Foundation, version 3 of the License.
17
18   This program is distributed in the hope that it will be useful,
19   but WITHOUT ANY WARRANTY; without even the implied warranty of
20   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21   GNU General Public License for more details.
22
23   You should have received a copy of the GNU General Public License
24   along with this program.  If not, see <http://www.gnu.org/licenses/>.
25
26   =========================================================================*/
27
28 #ifndef VVTOOLINPUTSELECTORWIDGET_CXX
29 #define VVTOOLINPUTSELECTORWIDGET_CXX
30
31 #include "vvToolSimpleInputSelectorWidget.h"
32 #include "vvSlicerManager.h"
33 #include <QAbstractButton>
34
35 //------------------------------------------------------------------------------
36 vvToolSimpleInputSelectorWidget::vvToolSimpleInputSelectorWidget(QWidget * parent, Qt::WindowFlags f):
37   QWidget(parent, f) {
38   setupUi(this);  
39   setEnabled(true);
40   mSlicerManagerList.clear();
41 }
42 //------------------------------------------------------------------------------
43
44
45 //------------------------------------------------------------------------------
46 void vvToolSimpleInputSelectorWidget::Initialize() {
47   // Connect signals & slots  
48   connect(mInputSelectionButtonBox, SIGNAL(accepted()), this, SLOT(accept()));
49   connect(mInputSelectionButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
50   connect(mInputSequenceBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeInput(int)));  
51   if (mSlicerManagerList.size() == 1) {
52     if (!mAllowSkip) accept();
53   }
54   if (mSlicerManagerList.size() == 0) {
55     reject();
56   }
57 }
58 //------------------------------------------------------------------------------
59
60
61 //------------------------------------------------------------------------------
62 void vvToolSimpleInputSelectorWidget::SetText(QString & s) {
63   mGroupBox->setTitle(s);
64 }
65 //------------------------------------------------------------------------------
66
67
68 //------------------------------------------------------------------------------
69 void vvToolSimpleInputSelectorWidget::EnableAllowSkip(bool b) {
70   mAllowSkip = b;
71   if (mAllowSkip) {
72     mInputSelectionButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Discard);
73     connect(mInputSelectionButtonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(skip(QAbstractButton*)));
74   }
75   else 
76     mInputSelectionButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
77 }
78 //------------------------------------------------------------------------------
79
80
81 //------------------------------------------------------------------------------
82 void vvToolSimpleInputSelectorWidget::SetInputList(const std::vector<vvSlicerManager*> & l, int index) {
83   if (l.size() == 0) {
84     // TODO !!!
85     DD("no input > error message");
86     reject();
87   }
88   mInputSequenceBox->clear();
89   for(unsigned int i=0; i<l.size(); i++)
90     mSlicerManagerList.push_back(l[i]);
91   mCurrentIndex = index;
92   for (unsigned int i = 0; i < mSlicerManagerList.size(); i++) {
93     mInputSequenceBox->addItem(mSlicerManagerList[i]->GetFileName().c_str());
94   }
95   mInputSequenceBox->setCurrentIndex(mCurrentIndex);
96   changeInput(mCurrentIndex);
97 }
98 //------------------------------------------------------------------------------
99
100
101 //------------------------------------------------------------------------------
102 void vvToolSimpleInputSelectorWidget::setEnabled(bool b) {
103   QWidget::setEnabled(b);
104   mInputSelectionButtonBox->setEnabled(b);
105   mInputSequenceBox->setEnabled(b);
106 }
107 //------------------------------------------------------------------------------
108
109
110 //------------------------------------------------------------------------------
111 void vvToolSimpleInputSelectorWidget::accept() {
112   mInputSelectionButtonBox->setEnabled(false);
113   mInputSequenceBox->setEnabled(false);
114   emit accepted();
115 }
116 //------------------------------------------------------------------------------
117
118
119
120 //------------------------------------------------------------------------------
121 void vvToolSimpleInputSelectorWidget::reject() {
122   emit rejected();
123 }
124 //------------------------------------------------------------------------------
125
126
127 //------------------------------------------------------------------------------
128 void vvToolSimpleInputSelectorWidget::skip(QAbstractButton* b) {
129   if (b->text() == "Discard") emit sigskip();
130 }
131 //------------------------------------------------------------------------------
132
133
134 //------------------------------------------------------------------------------
135 void vvToolSimpleInputSelectorWidget::changeInput(int index) {
136   if (index<0) return;
137   mCurrentIndex = index;
138   vvImage * mCurrentImage = mSlicerManagerList[index]->GetImage();
139   unsigned int d = mCurrentImage->GetNumberOfDimensions();
140   QString size;
141   QString spacing;
142   for(unsigned int i=0; i<d-1; i++) {
143     size.append(QString("%1").arg(mCurrentImage->GetSize()[i]));
144     size.append("x");
145     spacing.append(QString("%1").arg(mCurrentImage->GetSpacing()[i]));
146     spacing.append("x");
147   }
148   size.append(QString("%1").arg(mCurrentImage->GetSize()[d-1]));
149   spacing.append(QString("%1").arg(mCurrentImage->GetSpacing()[d-1]));
150   mLabelInputInfo->setText(QString("Image: %1D %2   %3    %4")
151                            .arg(d)
152                            .arg(mCurrentImage->GetScalarTypeAsString().c_str())
153                            .arg(size)
154                            .arg(spacing));
155 }
156 //------------------------------------------------------------------------------
157
158
159 //------------------------------------------------------------------------------
160 vvSlicerManager * vvToolSimpleInputSelectorWidget::GetSelectedInput() {
161   return mSlicerManagerList[GetSelectedInputIndex()];
162 }
163 //------------------------------------------------------------------------------
164
165 #endif
166