]> Creatis software - clitk.git/blob - vv/vvToolInputSelectorWidget.cxx
813b3c734509ae0ae486135ae78a181fbcce4e32
[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 #include "vvToolSimpleInputSelectorWidget.h"
21 #include "vvToolInputSelectorWidget.h"
22 #include "vvSlicerManager.h"
23
24 //------------------------------------------------------------------------------
25 vvToolInputSelectorWidget::vvToolInputSelectorWidget(QWidget * parent, Qt::WindowFlags f):
26   QWidget(parent, f) {
27   setupUi(this);  
28   setEnabled(true);
29   mNumberOfAcceptedInputs = 0;
30 }
31 //------------------------------------------------------------------------------
32
33 //------------------------------------------------------------------------------
34 int vvToolInputSelectorWidget::GetNumberOfInput() {
35   return mListOfSimpleInputWidget.size();
36 }
37 //------------------------------------------------------------------------------
38
39
40 //------------------------------------------------------------------------------
41 void vvToolInputSelectorWidget::AddInputSelector(QString & s, 
42                                                  const std::vector<vvSlicerManager*> & l, 
43                                                  int index, 
44                                                  bool allowSkip) {
45   //  DD("ICICICICICICICIC AddInputSelector ADD layout");
46   //  DD(index);
47   //DD(l.size());
48   vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget;
49   mListOfSimpleInputWidget.push_back(input);
50   mSkipInput.push_back(false);
51   
52   input->SetText(s);
53   input->EnableAllowSkip(allowSkip);
54
55   // copy list
56   std::vector<vvSlicerManager*> * ll = new std::vector<vvSlicerManager*>;
57   for(unsigned int i=0; i<l.size(); i++)
58     ll->push_back(l[i]);
59
60   // add
61   input->SetInputList(*ll, index);
62   // input->setObjectName(QString::fromUtf8("TOTO"));
63   mVerticalLayout->addWidget(input);
64
65   // Enable or disable
66   if (GetNumberOfInput() == 1) input->setEnabled(true);
67   else input->setEnabled(false);
68   //DD(GetNumberOfInput());
69
70   // Connect signals & slots  
71   connect(input, SIGNAL(accepted()), this, SLOT(accept()));
72   connect(input, SIGNAL(rejected()), this, SLOT(reject()));  
73   connect(input, SIGNAL(sigskip()), this, SLOT(skip()));  
74 }
75 //------------------------------------------------------------------------------
76
77
78 //------------------------------------------------------------------------------
79 void vvToolInputSelectorWidget::Initialize() {
80   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++)
81     mListOfSimpleInputWidget[i]->Initialize();
82 }
83 //------------------------------------------------------------------------------
84
85
86 //------------------------------------------------------------------------------
87 void vvToolInputSelectorWidget::accept() {
88   //  DD("vvToolInputSelectorWidget::accept");
89   //DD(mNumberOfAcceptedInputs);
90   mNumberOfAcceptedInputs++;
91   if (mNumberOfAcceptedInputs == GetNumberOfInput()) {
92     setEnabled(false);
93     emit accepted();
94   }
95   else {
96     //DD("accepted");
97     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
98     //      mListOfSimpleInputWidget[i]->Initialize();
99     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true);
100     //}
101   }
102 }
103 //------------------------------------------------------------------------------
104
105
106 //------------------------------------------------------------------------------
107 void vvToolInputSelectorWidget::reject() {
108   //  DD("vvToolInputSelectorWidget::reject");
109   if (mNumberOfAcceptedInputs != 0)  {
110     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
111     //      mListOfSimpleInputWidget[i]->Initialize();
112     //    DD(mNumberOfAcceptedInputs);
113     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false);
114     mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true);
115     mNumberOfAcceptedInputs--;
116     //}
117   }
118   else {
119     emit rejected();
120   }
121 }
122 //------------------------------------------------------------------------------
123
124
125 //------------------------------------------------------------------------------
126 void vvToolInputSelectorWidget::skip() {
127   //  DD("SKIP");
128   mSkipInput[mNumberOfAcceptedInputs] = true;
129   accept();//mNumberOfAcceptedInputs++;
130 }
131 //------------------------------------------------------------------------------
132
133
134 //------------------------------------------------------------------------------
135 std::vector<vvSlicerManager*> & vvToolInputSelectorWidget::GetSelectedInputs() {
136   std::vector<vvSlicerManager*> * l = new std::vector<vvSlicerManager*>;
137   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++) {
138     if (!mSkipInput[i])
139       l->push_back(mListOfSimpleInputWidget[i]->GetSelectedInput());
140   }
141   return *l;
142 }
143 //------------------------------------------------------------------------------
144
145
146 //------------------------------------------------------------------------------
147 void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m) {
148   //  DD("TODO : verify that the image still exist !!");
149   //  for(int i=0; i<
150 }
151 //------------------------------------------------------------------------------
152
153
154 #endif
155