]> Creatis software - clitk.git/blob - vv/vvToolInputSelectorWidget.cxx
82110f06143f370f13a931f776790790da97173a
[clitk.git] / vv / vvToolInputSelectorWidget.cxx
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to:
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18 #ifndef VVTOOLINPUTSELECTORWIDGET_CXX
19 #define VVTOOLINPUTSELECTORWIDGET_CXX
20
21 #include "vvToolSimpleInputSelectorWidget.h"
22 #include "vvToolInputSelectorWidget.h"
23 #include "vvSlicerManager.h"
24
25 //------------------------------------------------------------------------------
26 vvToolInputSelectorWidget::vvToolInputSelectorWidget(QWidget * parent, Qt::WindowFlags f):
27   QWidget(parent, f)
28 {
29   setupUi(this);
30   setEnabled(true);
31   mNumberOfAcceptedInputs = 0;
32 }
33 //------------------------------------------------------------------------------
34
35 //------------------------------------------------------------------------------
36 int vvToolInputSelectorWidget::GetNumberOfInput()
37 {
38   return mListOfSimpleInputWidget.size();
39 }
40 //------------------------------------------------------------------------------
41
42
43 //------------------------------------------------------------------------------
44 void vvToolInputSelectorWidget::AddInputSelector(QString & s,
45                                                  const std::vector<vvSlicerManager*> & l,
46                                                  int index,
47                                                  bool allowSkip)
48 {
49   // Create a input selector widget 
50   vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget;
51   mListOfSimpleInputWidget.push_back(input);
52   mSkipInput.push_back(false);
53   input->SetText(s);
54   input->EnableAllowSkip(allowSkip);
55
56   // Copy the list of slicermanager
57   std::vector<vvSlicerManager*> * ll = new std::vector<vvSlicerManager*>;
58   for(unsigned int i=0; i<l.size(); i++)
59     ll->push_back(l[i]);
60
61   // Add
62   input->SetInputList(*ll, index);
63   mVerticalLayout->addWidget(input);
64
65   // Enable or disable
66   if (GetNumberOfInput() == 1) input->setEnabled(true);
67   else input->setEnabled(false);
68
69   // Connect signals & slots
70   connect(input, SIGNAL(accepted()), this, SLOT(accept()));
71   connect(input, SIGNAL(rejected()), this, SLOT(reject()));
72   connect(input, SIGNAL(sigskip()), this, SLOT(skip()));
73 }
74 //------------------------------------------------------------------------------
75
76
77 //------------------------------------------------------------------------------
78 void vvToolInputSelectorWidget::Initialize()
79 {
80   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++)
81     mListOfSimpleInputWidget[i]->Initialize();
82 }
83 //------------------------------------------------------------------------------
84
85
86 //------------------------------------------------------------------------------
87 void vvToolInputSelectorWidget::accept()
88 {
89   mNumberOfAcceptedInputs++;
90   if (mNumberOfAcceptedInputs == GetNumberOfInput()) {
91     setEnabled(false);
92     emit accepted();
93   } else {
94     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true);
95   }
96 }
97 //------------------------------------------------------------------------------
98
99
100 //------------------------------------------------------------------------------
101 void vvToolInputSelectorWidget::reject()
102 {
103   if (mNumberOfAcceptedInputs != 0)  {
104     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false);
105     mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true);
106     mNumberOfAcceptedInputs--;
107   } else {
108     emit rejected();
109   }
110 }
111 //------------------------------------------------------------------------------
112
113
114 //------------------------------------------------------------------------------
115 void vvToolInputSelectorWidget::skip()
116 {
117   mSkipInput[mNumberOfAcceptedInputs] = true;
118   accept();
119 }
120 //------------------------------------------------------------------------------
121
122
123 //------------------------------------------------------------------------------
124 std::vector<vvSlicerManager*> & vvToolInputSelectorWidget::GetSelectedInputs()
125 {
126   std::vector<vvSlicerManager*> * l = new std::vector<vvSlicerManager*>;
127   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++) {
128     if (!mSkipInput[i])
129       l->push_back(mListOfSimpleInputWidget[i]->GetSelectedInput());
130   }
131   return *l;
132 }
133 //------------------------------------------------------------------------------
134
135
136 //------------------------------------------------------------------------------
137 void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m)
138 {
139   //  DD("TODO : verify that the image still exist !!");
140   //  for(int i=0; i<
141 }
142 //------------------------------------------------------------------------------
143
144
145 #endif
146