]> Creatis software - clitk.git/blob - vv/vvToolInputSelectorWidget.cxx
cosmetic
[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   // setWindowModality(Qt::WindowModal);
85   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++)
86     mListOfSimpleInputWidget[i]->Initialize();
87 }
88 //------------------------------------------------------------------------------
89
90
91 //------------------------------------------------------------------------------
92 void vvToolInputSelectorWidget::accept()
93 {
94   // setWindowModality(Qt::NonModal);
95   //  DD("vvToolInputSelectorWidget::accept");
96   //DD(mNumberOfAcceptedInputs);
97   mNumberOfAcceptedInputs++;
98   if (mNumberOfAcceptedInputs == GetNumberOfInput()) {
99     setEnabled(false);
100     emit accepted();
101   } else {
102     //DD("accepted");
103     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
104     //      mListOfSimpleInputWidget[i]->Initialize();
105     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true);
106     //}
107   }
108 }
109 //------------------------------------------------------------------------------
110
111
112 //------------------------------------------------------------------------------
113 void vvToolInputSelectorWidget::reject()
114 {
115   //  DD("vvToolInputSelectorWidget::reject");
116   if (mNumberOfAcceptedInputs != 0)  {
117     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
118     //      mListOfSimpleInputWidget[i]->Initialize();
119     //    DD(mNumberOfAcceptedInputs);
120     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false);
121     mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true);
122     mNumberOfAcceptedInputs--;
123     //}
124   } else {
125     emit rejected();
126   }
127 }
128 //------------------------------------------------------------------------------
129
130
131 //------------------------------------------------------------------------------
132 void vvToolInputSelectorWidget::skip()
133 {
134   //  DD("SKIP");
135   mSkipInput[mNumberOfAcceptedInputs] = true;
136   accept();//mNumberOfAcceptedInputs++;
137 }
138 //------------------------------------------------------------------------------
139
140
141 //------------------------------------------------------------------------------
142 std::vector<vvSlicerManager*> & vvToolInputSelectorWidget::GetSelectedInputs()
143 {
144   std::vector<vvSlicerManager*> * l = new std::vector<vvSlicerManager*>;
145   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++) {
146     if (!mSkipInput[i])
147       l->push_back(mListOfSimpleInputWidget[i]->GetSelectedInput());
148   }
149   return *l;
150 }
151 //------------------------------------------------------------------------------
152
153
154 //------------------------------------------------------------------------------
155 void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m)
156 {
157   //  DD("TODO : verify that the image still exist !!");
158   //  for(int i=0; i<
159 }
160 //------------------------------------------------------------------------------
161
162
163 #endif
164