]> Creatis software - clitk.git/blob - vv/vvToolSimpleInputSelectorWidget.cxx
removed headers
[clitk.git] / vv / vvToolSimpleInputSelectorWidget.cxx
1 #ifndef VVTOOLINPUTSELECTORWIDGET_CXX
2 #define VVTOOLINPUTSELECTORWIDGET_CXX
3 #include "vvToolSimpleInputSelectorWidget.h"
4 #include "vvSlicerManager.h"
5 #include <QAbstractButton>
6
7 //------------------------------------------------------------------------------
8 vvToolSimpleInputSelectorWidget::vvToolSimpleInputSelectorWidget(QWidget * parent, Qt::WindowFlags f):
9   QWidget(parent, f) {
10   setupUi(this);  
11   setEnabled(true);
12   mSlicerManagerList.clear();
13 }
14 //------------------------------------------------------------------------------
15
16
17 //------------------------------------------------------------------------------
18 void vvToolSimpleInputSelectorWidget::Initialize() {
19   // Connect signals & slots  
20   connect(mInputSelectionButtonBox, SIGNAL(accepted()), this, SLOT(accept()));
21   connect(mInputSelectionButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
22   connect(mInputSequenceBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeInput(int)));  
23   if (mSlicerManagerList.size() == 1) {
24     if (!mAllowSkip) accept();
25   }
26   if (mSlicerManagerList.size() == 0) {
27     reject();
28   }
29 }
30 //------------------------------------------------------------------------------
31
32
33 //------------------------------------------------------------------------------
34 void vvToolSimpleInputSelectorWidget::SetText(QString & s) {
35   mGroupBox->setTitle(s);
36 }
37 //------------------------------------------------------------------------------
38
39
40 //------------------------------------------------------------------------------
41 void vvToolSimpleInputSelectorWidget::EnableAllowSkip(bool b) {
42   mAllowSkip = b;
43   if (mAllowSkip) {
44     mInputSelectionButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Discard);
45     connect(mInputSelectionButtonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(skip(QAbstractButton*)));
46   }
47   else 
48     mInputSelectionButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
49 }
50 //------------------------------------------------------------------------------
51
52
53 //------------------------------------------------------------------------------
54 void vvToolSimpleInputSelectorWidget::SetInputList(const std::vector<vvSlicerManager*> & l, int index) {
55   if (l.size() == 0) {
56     // TODO !!!
57     DD("no input > error message");
58     reject();
59   }
60   mInputSequenceBox->clear();
61   for(unsigned int i=0; i<l.size(); i++)
62     mSlicerManagerList.push_back(l[i]);
63   mCurrentIndex = index;
64   for (unsigned int i = 0; i < mSlicerManagerList.size(); i++) {
65     mInputSequenceBox->addItem(mSlicerManagerList[i]->GetFileName().c_str());
66   }
67   mInputSequenceBox->setCurrentIndex(mCurrentIndex);
68   changeInput(mCurrentIndex);
69 }
70 //------------------------------------------------------------------------------
71
72
73 //------------------------------------------------------------------------------
74 void vvToolSimpleInputSelectorWidget::setEnabled(bool b) {
75   QWidget::setEnabled(b);
76   mInputSelectionButtonBox->setEnabled(b);
77   mInputSequenceBox->setEnabled(b);
78 }
79 //------------------------------------------------------------------------------
80
81
82 //------------------------------------------------------------------------------
83 void vvToolSimpleInputSelectorWidget::accept() {
84   mInputSelectionButtonBox->setEnabled(false);
85   mInputSequenceBox->setEnabled(false);
86   emit accepted();
87 }
88 //------------------------------------------------------------------------------
89
90
91
92 //------------------------------------------------------------------------------
93 void vvToolSimpleInputSelectorWidget::reject() {
94   emit rejected();
95 }
96 //------------------------------------------------------------------------------
97
98
99 //------------------------------------------------------------------------------
100 void vvToolSimpleInputSelectorWidget::skip(QAbstractButton* b) {
101   if (b->text() == "Discard") emit sigskip();
102 }
103 //------------------------------------------------------------------------------
104
105
106 //------------------------------------------------------------------------------
107 void vvToolSimpleInputSelectorWidget::changeInput(int index) {
108   if (index<0) return;
109   mCurrentIndex = index;
110   vvImage * mCurrentImage = mSlicerManagerList[index]->GetImage();
111   unsigned int d = mCurrentImage->GetNumberOfDimensions();
112   QString size;
113   QString spacing;
114   for(unsigned int i=0; i<d-1; i++) {
115     size.append(QString("%1").arg(mCurrentImage->GetSize()[i]));
116     size.append("x");
117     spacing.append(QString("%1").arg(mCurrentImage->GetSpacing()[i]));
118     spacing.append("x");
119   }
120   size.append(QString("%1").arg(mCurrentImage->GetSize()[d-1]));
121   spacing.append(QString("%1").arg(mCurrentImage->GetSpacing()[d-1]));
122   mLabelInputInfo->setText(QString("Image: %1D %2   %3    %4")
123                            .arg(d)
124                            .arg(mCurrentImage->GetScalarTypeAsString().c_str())
125                            .arg(size)
126                            .arg(spacing));
127 }
128 //------------------------------------------------------------------------------
129
130
131 //------------------------------------------------------------------------------
132 vvSlicerManager * vvToolSimpleInputSelectorWidget::GetSelectedInput() {
133   return mSlicerManagerList[GetSelectedInputIndex()];
134 }
135 //------------------------------------------------------------------------------
136
137 #endif
138