MNE-CPP  0.1.9
A Framework for Electrophysiology
projectorsview.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 //=============================================================================================================
36 // INCLUDES
37 //=============================================================================================================
38 
39 #include "projectorsview.h"
40 
41 #include <fiff/fiff_proj.h>
42 
43 //=============================================================================================================
44 // QT INCLUDES
45 //=============================================================================================================
46 
47 #include <QCheckBox>
48 #include <QGridLayout>
49 #include <QFrame>
50 #include <QSettings>
51 
52 //=============================================================================================================
53 // EIGEN INCLUDES
54 //=============================================================================================================
55 
56 //=============================================================================================================
57 // USED NAMESPACES
58 //=============================================================================================================
59 
60 using namespace DISPLIB;
61 using namespace FIFFLIB;
62 
63 //=============================================================================================================
64 // DEFINE MEMBER METHODS
65 //=============================================================================================================
66 
67 ProjectorsView::ProjectorsView(const QString& sSettingsPath,
68  QWidget *parent,
69  Qt::WindowFlags f)
70 : AbstractView(parent, f)
71 , m_pEnableDisableProjectors(Q_NULLPTR)
72 {
73  m_sSettingsPath = sSettingsPath;
74  this->setWindowTitle("Projectors");
75  this->setMinimumWidth(330);
76  this->setMaximumWidth(330);
77 
78  loadSettings();
79  redrawGUI();
80 }
81 
82 //=============================================================================================================
83 
85 {
86  saveSettings();
87 }
88 
89 //=============================================================================================================
90 
91 QList<FIFFLIB::FiffProj> ProjectorsView::getProjectors() const
92 {
93  return m_pProjs;
94 }
95 
96 //=============================================================================================================
97 
98 void ProjectorsView::setProjectors(const QList<FIFFLIB::FiffProj>& projs)
99 {
100  m_pProjs = projs;
101 
102  for(int i = 0; i < m_pProjs.size(); ++i) {
103  if(!m_mapProjActive.contains(m_pProjs.at(i).desc)) {
104  m_mapProjActive.insert(m_pProjs.at(i).desc, m_pProjs.at(i).active);
105  } else {
106  m_pProjs[i].active = m_mapProjActive[m_pProjs.at(i).desc];
107  }
108  }
109 
110  redrawGUI();
111 }
112 
113 //=============================================================================================================
114 
116 {
117  if(m_pProjs.isEmpty()) {
118  return;
119  }
120 
121  m_qListProjCheckBox.clear();
122 
123  // Projection Selection
124  QGridLayout *topLayout = new QGridLayout;
125 
126  bool bAllActivated = true;
127 
128  qint32 i = 0;
129 
130  for(i; i < m_pProjs.size(); ++i) {
131  QCheckBox* checkBox = new QCheckBox(m_pProjs.at(i).desc);
132 
133  if(m_pProjs.at(i).active == false) {
134  bAllActivated = false;
135  }
136 
137  m_qListProjCheckBox.append(checkBox);
138 
139  connect(checkBox, &QCheckBox::toggled,
141 
142  checkBox->setChecked(m_pProjs.at(i).active);
143 
144  topLayout->addWidget(checkBox, i, 0);
145  }
146 
147  QFrame* line = new QFrame();
148  line->setFrameShape(QFrame::HLine);
149  line->setFrameShadow(QFrame::Sunken);
150 
151  topLayout->addWidget(line, i+1, 0);
152 
153  m_pEnableDisableProjectors = new QCheckBox("Enable all");
154  m_pEnableDisableProjectors->setChecked(bAllActivated);
155  topLayout->addWidget(m_pEnableDisableProjectors, i+2, 0);
156  connect(m_pEnableDisableProjectors, static_cast<void (QCheckBox::*)(bool)>(&QCheckBox::clicked),
158 
159  this->setLayout(topLayout);
160 
162 }
163 
164 //=============================================================================================================
165 
167 {
168  if(m_sSettingsPath.isEmpty()) {
169  return;
170  }
171 
172  QSettings settings("MNECPP");
173 
174  settings.beginGroup(m_sSettingsPath + QString("/ProjectorsView/projectorsActive"));
175 
176  QMap<QString,bool>::const_iterator iProj = m_mapProjActive.constBegin();
177  while (iProj != m_mapProjActive.constEnd()) {
178  settings.setValue(iProj.key(), iProj.value());
179  ++iProj;
180  }
181 
182  settings.endGroup();
183 }
184 
185 //=============================================================================================================
186 
188 {
189  if(m_sSettingsPath.isEmpty()) {
190  return;
191  }
192 
193  QSettings settings("MNECPP");
194 
195  settings.beginGroup(m_sSettingsPath + QString("/ProjectorsView/projectorsActive"));
196 
197  QStringList keys = settings.childKeys();
198  foreach (QString key, keys) {
199  m_mapProjActive[key] = settings.value(key).toBool();
200  }
201  settings.endGroup();
202 }
203 
204 //=============================================================================================================
205 
207 {
208  switch(mode) {
209  case GuiMode::Clinical:
210  break;
211  default: // default is research mode
212  break;
213  }
214 }
215 
216 //=============================================================================================================
217 
218 void ProjectorsView::updateProcessingMode(ProcessingMode mode)
219 {
220  switch(mode) {
221  case ProcessingMode::Offline:
222  break;
223  default: // default is realtime mode
224  break;
225  }
226 }
227 
228 //=============================================================================================================
229 
231 {
232  //Set all checkboxes to status
233  for(int i = 0; i<m_qListProjCheckBox.size(); i++) {
234  m_qListProjCheckBox.at(i)->setChecked(status);
235  }
236 
237  //Set all projection activation states to status
238  for(int i = 0; i < m_pProjs.size(); ++i) {
239  m_pProjs[i].active = status;
240  m_mapProjActive[m_pProjs.at(i).desc] = status;
241 
242  }
243 
245  m_pEnableDisableProjectors->setChecked(status);
246  }
247 
249 
250  saveSettings();
251 }
252 
253 //=============================================================================================================
254 
256 {
257  bool bAllActivated = true;
258 
259  for(qint32 i = 0; i < m_qListProjCheckBox.size(); ++i) {
260  if(m_qListProjCheckBox.at(i)->isChecked() == false) {
261  bAllActivated = false;
262  }
263 
264  m_pProjs[i].active = m_qListProjCheckBox.at(i)->isChecked();
265  m_mapProjActive[m_pProjs.at(i).desc] = m_qListProjCheckBox.at(i)->isChecked();
266  }
267 
269  m_pEnableDisableProjectors->setChecked(bAllActivated);
270  }
271 
273 
274  saveSettings();
275 }
276 
277 //=============================================================================================================
278 
280 {
281 
282 }
void setProjectors(const QList< FIFFLIB::FiffProj > &projs)
Declaration of the ProjectorsView Class.
QCheckBox * m_pEnableDisableProjectors
void updateGuiMode(GuiMode mode)
QList< FIFFLIB::FiffProj > m_pProjs
QList< QCheckBox * > m_qListProjCheckBox
void projSelectionChanged(const QList< FIFFLIB::FiffProj > &projs)
void onEnableDisableAllProj(bool status)
FiffProj class declaration.
QList< FIFFLIB::FiffProj > getProjectors() const
void updateProcessingMode(ProcessingMode mode)
ProjectorsView(const QString &sSettingsPath="", QWidget *parent=0, Qt::WindowFlags f=Qt::Widget)
The AbstractView class provides the base calss for all Disp viewers.
Definition: abstractview.h:75