]> Creatis software - clitk.git/blob - vv/vvToolInputSelectorWidget.cxx
some small correction
[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://oncora1.lyon.fnclcc.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   //  DD("ICICICICICICICIC AddInputSelector ADD layout");
50   //  DD(index);
51   //DD(l.size());
52   vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget;
53   mListOfSimpleInputWidget.push_back(input);
54   mSkipInput.push_back(false);
55
56   input->SetText(s);
57   input->EnableAllowSkip(allowSkip);
58
59   // copy list
60   std::vector<vvSlicerManager*> * ll = new std::vector<vvSlicerManager*>;
61   for(unsigned int i=0; i<l.size(); i++)
62     ll->push_back(l[i]);
63
64   // add
65   input->SetInputList(*ll, index);
66   // input->setObjectName(QString::fromUtf8("TOTO"));
67   mVerticalLayout->addWidget(input);
68
69   // Enable or disable
70   if (GetNumberOfInput() == 1) input->setEnabled(true);
71   else input->setEnabled(false);
72   //DD(GetNumberOfInput());
73
74   // Connect signals & slots
75   connect(input, SIGNAL(accepted()), this, SLOT(accept()));
76   connect(input, SIGNAL(rejected()), this, SLOT(reject()));
77   connect(input, SIGNAL(sigskip()), this, SLOT(skip()));
78 }
79 //------------------------------------------------------------------------------
80
81
82 //------------------------------------------------------------------------------
83 void vvToolInputSelectorWidget::Initialize()
84 {
85   // setWindowModality(Qt::WindowModal);
86   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++)
87     mListOfSimpleInputWidget[i]->Initialize();
88 }
89 //------------------------------------------------------------------------------
90
91
92 //------------------------------------------------------------------------------
93 void vvToolInputSelectorWidget::accept()
94 {
95   // setWindowModality(Qt::NonModal);
96   //  DD("vvToolInputSelectorWidget::accept");
97   //DD(mNumberOfAcceptedInputs);
98   mNumberOfAcceptedInputs++;
99   if (mNumberOfAcceptedInputs == GetNumberOfInput()) {
100     setEnabled(false);
101     emit accepted();
102   } else {
103     //DD("accepted");
104     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
105     //      mListOfSimpleInputWidget[i]->Initialize();
106     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true);
107     //}
108   }
109 }
110 //------------------------------------------------------------------------------
111
112
113 //------------------------------------------------------------------------------
114 void vvToolInputSelectorWidget::reject()
115 {
116   //  DD("vvToolInputSelectorWidget::reject");
117   if (mNumberOfAcceptedInputs != 0)  {
118     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
119     //      mListOfSimpleInputWidget[i]->Initialize();
120     //    DD(mNumberOfAcceptedInputs);
121     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false);
122     mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true);
123     mNumberOfAcceptedInputs--;
124     //}
125   } else {
126     emit rejected();
127   }
128 }
129 //------------------------------------------------------------------------------
130
131
132 //------------------------------------------------------------------------------
133 void vvToolInputSelectorWidget::skip()
134 {
135   //  DD("SKIP");
136   mSkipInput[mNumberOfAcceptedInputs] = true;
137   accept();//mNumberOfAcceptedInputs++;
138 }
139 //------------------------------------------------------------------------------
140
141
142 //------------------------------------------------------------------------------
143 std::vector<vvSlicerManager*> & vvToolInputSelectorWidget::GetSelectedInputs()
144 {
145   std::vector<vvSlicerManager*> * l = new std::vector<vvSlicerManager*>;
146   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++) {
147     if (!mSkipInput[i])
148       l->push_back(mListOfSimpleInputWidget[i]->GetSelectedInput());
149   }
150   return *l;
151 }
152 //------------------------------------------------------------------------------
153
154
155 //------------------------------------------------------------------------------
156 void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m)
157 {
158   //  DD("TODO : verify that the image still exist !!");
159   //  for(int i=0; i<
160 }
161 //------------------------------------------------------------------------------
162
163
164 #endif
165