]> Creatis software - clitk.git/blob - vv/vvToolInputSelectorWidget.cxx
new multiple input selector for default vvToolWidget
[clitk.git] / vv / vvToolInputSelectorWidget.cxx
1 /*=========================================================================
2
3   Program:   vv
4   Module:    $RCSfile: vvToolInputSelectorWidget.cxx,v $
5   Language:  C++
6   Date:      $Date: 2010/03/17 11:22:18 $
7   Version:   $Revision: 1.4 $
8   Author :   David Sarrut (david.sarrut@creatis.insa-lyon.fr)
9
10   Copyright (C) 2010
11   Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
12   CREATIS                   http://www.creatis.insa-lyon.fr
13
14   This program is free software: you can redistribute it and/or modify
15   it under the terms of the GNU General Public License as published by
16   the Free Software Foundation, version 3 of the License.
17
18   This program is distributed in the hope that it will be useful,
19   but WITHOUT ANY WARRANTY; without even the implied warranty of
20   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21   GNU General Public License for more details.
22
23   You should have received a copy of the GNU General Public License
24   along with this program.  If not, see <http://www.gnu.org/licenses/>.
25
26   =========================================================================*/
27
28 #ifndef VVTOOLINPUTSELECTORWIDGET_CXX
29 #define VVTOOLINPUTSELECTORWIDGET_CXX
30
31 #include "vvToolSimpleInputSelectorWidget.h"
32 #include "vvToolInputSelectorWidget.h"
33 #include "vvSlicerManager.h"
34
35 //------------------------------------------------------------------------------
36 vvToolInputSelectorWidget::vvToolInputSelectorWidget(QWidget * parent, Qt::WindowFlags f):
37   QWidget(parent, f) {
38   setupUi(this);  
39   setEnabled(true);
40   mNumberOfAcceptedInputs = 0;
41 }
42 //------------------------------------------------------------------------------
43
44 //------------------------------------------------------------------------------
45 int vvToolInputSelectorWidget::GetNumberOfInput() {
46   return mListOfSimpleInputWidget.size();
47 }
48 //------------------------------------------------------------------------------
49
50
51 //------------------------------------------------------------------------------
52 void vvToolInputSelectorWidget::AddInputSelector(const std::vector<vvSlicerManager*> & l, int index) {
53   DD("ICICICICICICICIC AddInputSelector ADD layout");
54   DD(index);
55   DD(l.size());
56   vvToolSimpleInputSelectorWidget * input = new vvToolSimpleInputSelectorWidget;
57   mListOfSimpleInputWidget.push_back(input);
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 }
78 //------------------------------------------------------------------------------
79
80
81 //------------------------------------------------------------------------------
82 void vvToolInputSelectorWidget::Initialize() {
83   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++)
84     mListOfSimpleInputWidget[i]->Initialize();
85 }
86 //------------------------------------------------------------------------------
87
88
89 //------------------------------------------------------------------------------
90 void vvToolInputSelectorWidget::accept() {
91   DD("vvToolInputSelectorWidget::accept");
92   DD(mNumberOfAcceptedInputs);
93   mNumberOfAcceptedInputs++;
94   if (mNumberOfAcceptedInputs == GetNumberOfInput()) {
95     setEnabled(false);
96     emit accepted();
97   }
98   else {
99     DD("accepted");
100     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
101       //      mListOfSimpleInputWidget[i]->Initialize();
102       mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(true);
103       //}
104   }
105 }
106 //------------------------------------------------------------------------------
107
108
109 //------------------------------------------------------------------------------
110 void vvToolInputSelectorWidget::reject() {
111   DD("vvToolInputSelectorWidget::reject");
112   if (mNumberOfAcceptedInputs != 0)  {
113     //    for(unsigned int i=mNumberOfAcceptedInputs; i<mListOfSimpleInputWidget.size(); i++) {
114     //      mListOfSimpleInputWidget[i]->Initialize();
115     DD(mNumberOfAcceptedInputs);
116     mListOfSimpleInputWidget[mNumberOfAcceptedInputs]->setEnabled(false);
117     mListOfSimpleInputWidget[mNumberOfAcceptedInputs-1]->setEnabled(true);
118     mNumberOfAcceptedInputs--;
119     //}
120   }
121   else {
122     emit rejected();
123   }
124 }
125 //------------------------------------------------------------------------------
126
127
128 //------------------------------------------------------------------------------
129 std::vector<vvSlicerManager*> & vvToolInputSelectorWidget::GetSelectedInputs() {
130   std::vector<vvSlicerManager*> * l = new std::vector<vvSlicerManager*>;
131   for(unsigned int i=0; i<mListOfSimpleInputWidget.size(); i++)
132     l->push_back(mListOfSimpleInputWidget[i]->GetSelectedInput());
133   return *l;
134 }
135 //------------------------------------------------------------------------------
136
137
138 //------------------------------------------------------------------------------
139 void vvToolInputSelectorWidget::AnImageIsBeingClosed(vvSlicerManager * m) {
140   DD("TODO : verify that the image still exist !!");
141   //  for(int i=0; i<
142 }
143 //------------------------------------------------------------------------------
144
145
146 #endif
147