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