MNE-CPP  0.1.9
A Framework for Electrophysiology
fwdsettingsview.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 //=============================================================================================================
36 // INCLUDES
37 //=============================================================================================================
38 
39 #include "fwdsettingsview.h"
40 #include "ui_fwdsettingsview.h"
41 
42 #include <fs/annotationset.h>
43 
44 //=============================================================================================================
45 // QT INCLUDES
46 //=============================================================================================================
47 
48 #include <QFileInfo>
49 #include <QFileDialog>
50 #include <QMessageBox>
51 #include <QSettings>
52 
53 //=============================================================================================================
54 // EIGEN INCLUDES
55 //=============================================================================================================
56 
57 //=============================================================================================================
58 // USED NAMESPACES
59 //=============================================================================================================
60 
61 using namespace DISPLIB;
62 using namespace FSLIB;
63 
64 //=============================================================================================================
65 // DEFINE GLOBAL METHODS
66 //=============================================================================================================
67 
68 //=============================================================================================================
69 // DEFINE MEMBER METHODS
70 //=============================================================================================================
71 
72 FwdSettingsView::FwdSettingsView(const QString& sSettingsPath,
73  QWidget *parent,
74  Qt::WindowFlags f)
75 : AbstractView(parent, f)
76 , m_bAnnotaionsLoaded(false)
77 , m_pUi(new Ui::FwdSettingsViewWidget)
78 {
79  m_sSettingsPath = sSettingsPath;
80  m_pUi->setupUi(this);
81 
82  // init
83  m_pUi->m_checkBox_bDoRecomputation->setChecked(false);
84  m_pUi->m_checkBox_bDoClustering->setChecked(false);
85  m_pUi->m_lineEdit_iNChan->setText(QString::number(0));
86  m_pUi->m_lineEdit_iNSourceSpace->setText(QString::number(0));
87  m_pUi->m_lineEdit_iNDipole->setText(QString::number(0));
88  m_pUi->m_lineEdit_sSourceOri->setText("fixed");
89  m_pUi->m_lineEdit_sCoordFrame->setText("Head Space");
90  m_pUi->m_lineEdit_iNDipoleClustered->setText("Not Clustered");
91 
92  // load init annotation set
93  QString t_sAtlasDir = QCoreApplication::applicationDirPath() + "/MNE-sample-data/subjects/sample/label";
94  m_pUi->m_qLineEdit_AtlasDirName->setText(t_sAtlasDir);
95 
96  AnnotationSet::SPtr t_pAnnotationSet = AnnotationSet::SPtr(new AnnotationSet(t_sAtlasDir+"/lh.aparc.a2009s.annot", t_sAtlasDir+"/rh.aparc.a2009s.annot"));
97 
98  if(!t_pAnnotationSet->isEmpty() && t_pAnnotationSet->size() == 2)
99  {
100  emit atlasDirChanged(t_sAtlasDir,t_pAnnotationSet);
101  m_pUi->m_qLabel_atlasStat->setText("loaded");
102  m_bAnnotaionsLoaded = true;
103  }
104  else
105  {
106  m_pUi->m_qLabel_atlasStat->setText("not loaded");
107  }
108 
109  // connect
110  connect(m_pUi->m_checkBox_bDoRecomputation, &QCheckBox::clicked,
112  connect(m_pUi->m_qPushButton_AtlasDirDialog, &QPushButton::released,
114  connect(m_pUi->m_checkBox_bDoClustering, &QCheckBox::clicked,
116  connect(m_pUi->m_qPushButton_ComputeForward, &QPushButton::clicked,
118 
119  // load settings
120  loadSettings();
121 }
122 
123 //=============================================================================================================
124 
125 FwdSettingsView::~FwdSettingsView()
126 {
127  saveSettings();
128 
129  delete m_pUi;
130 }
131 
132 //=============================================================================================================
133 
135 {
136  if(m_sSettingsPath.isEmpty()) {
137  return;
138  }
139 
140  QSettings settings("MNECPP");
141  QVariant data;
142 }
143 
144 //=============================================================================================================
145 
147 {
148  if(m_sSettingsPath.isEmpty()) {
149  return;
150  }
151 
152  QSettings settings("MNECPP");
153  QVariant defaultData;
154 }
155 
156 //=============================================================================================================
157 
159 {
160  switch(mode) {
161  case GuiMode::Clinical:
162  break;
163  default: // default is research mode
164  break;
165  }
166 }
167 
168 //=============================================================================================================
169 
170 void FwdSettingsView::updateProcessingMode(ProcessingMode mode)
171 {
172  switch(mode) {
173  case ProcessingMode::Offline:
174  break;
175  default: // default is realtime mode
176  break;
177  }
178 }
179 
180 //=============================================================================================================
181 
183 {
184  return m_pUi->m_checkBox_bDoRecomputation->isChecked();
185 }
186 
187 //=============================================================================================================
188 
190 {
191  if(iStatus == 0) {
192  m_pUi->m_label_recomputationFeedback->setText("Initializing");
193  m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
194  } else if(iStatus == 1) {
195  m_pUi->m_label_recomputationFeedback->setText("Computing");
196  m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
197  } else if (iStatus == 2) {
198  m_pUi->m_label_recomputationFeedback->setText("Recomputing");
199  m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
200  } else if (iStatus == 3) {
201  m_pUi->m_label_recomputationFeedback->setText("Clustering");
202  m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
203  } else if (iStatus == 4) {
204  m_pUi->m_label_recomputationFeedback->setText("Not Computed");
205  m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
206  } else {
207  m_pUi->m_label_recomputationFeedback->setText("Finished");
208  m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : green;}");
209  }
210 }
211 
212 //=============================================================================================================
213 
214 void FwdSettingsView::setSolutionInformation(FIFFLIB::fiff_int_t iSourceOri,
215  FIFFLIB::fiff_int_t iCoordFrame,
216  int iNSource,
217  int iNChan,
218  int iNSpaces)
219 {
220  // set source orientation
221  if(iSourceOri == 0) {
222  m_pUi->m_lineEdit_sSourceOri->setText("fixed");
223  } else {
224  m_pUi->m_lineEdit_sSourceOri->setText("free");
225  }
226 
227  // set coordinate frame
228  if(iCoordFrame == FIFFV_COORD_HEAD) {
229  m_pUi->m_lineEdit_sCoordFrame->setText("Head Space");
230  } else if (iCoordFrame == FIFFV_COORD_MRI){
231  m_pUi->m_lineEdit_sCoordFrame->setText("MRI Space");
232  } else {
233  m_pUi->m_lineEdit_sCoordFrame->setText("Unknown");
234  }
235 
236  // set number of sources
237  m_pUi->m_lineEdit_iNDipole->setText(QString::number(iNSource));
238 
239  // set number of clustered sources
240  m_pUi->m_lineEdit_iNDipoleClustered->setText("Not clustered");
241 
242  // set number of channels
243  m_pUi->m_lineEdit_iNChan->setText(QString::number(iNChan));
244 
245  // set number of source spaces
246  m_pUi->m_lineEdit_iNSourceSpace->setText(QString::number(iNSpaces));
247 }
248 
249 //=============================================================================================================
250 
252 {
253  return m_pUi->m_checkBox_bDoClustering->isChecked();
254 }
255 
256 //=============================================================================================================
257 
259 {
260  if(!m_bAnnotaionsLoaded) {
261  QMessageBox msgBox;
262  msgBox.setText("Please load an annotation set before clustering.");
263  msgBox.exec();
264  m_pUi->m_checkBox_bDoClustering->setChecked(false);
265  return;
266  } else {
267  emit clusteringStatusChanged(bChecked);
268  }
269 }
270 
271 //=============================================================================================================
272 
274 {
275  // set number of clustered sources
276  m_pUi->m_lineEdit_iNDipoleClustered->setText(QString::number(iNSources));
277 }
278 
279 //=============================================================================================================
280 
282 {
283  QString t_sAtlasDir = QFileDialog::getExistingDirectory(this, tr("Open Atlas Directory"),
284  QCoreApplication::applicationDirPath(),
285  QFileDialog::ShowDirsOnly
286  | QFileDialog::DontResolveSymlinks);
287 
288  m_pUi->m_qLineEdit_AtlasDirName->setText(t_sAtlasDir);
289 
290  AnnotationSet::SPtr t_pAnnotationSet = AnnotationSet::SPtr(new AnnotationSet(t_sAtlasDir+"/lh.aparc.a2009s.annot", t_sAtlasDir+"/rh.aparc.a2009s.annot"));
291 
292  if(!t_pAnnotationSet->isEmpty() && t_pAnnotationSet->size() == 2)
293  {
294  emit atlasDirChanged(t_sAtlasDir,t_pAnnotationSet);
295  m_pUi->m_qLabel_atlasStat->setText("loaded");
296  m_bAnnotaionsLoaded = true;
297  }
298  else
299  {
300  m_pUi->m_qLabel_atlasStat->setText("not loaded");
301  }
302 }
303 
304 //=============================================================================================================
305 
307 {
308 
309 }
Ui::FwdSettingsViewWidget * m_pUi
void updateGuiMode(GuiMode mode)
The AbstractView class provides the base calss for all Disp viewers.
Definition: abstractview.h:75
void clusteringStatusChanged(bool bChecked)
void setSolutionInformation(FIFFLIB::fiff_int_t iSourceOri, FIFFLIB::fiff_int_t iCoordFrame, int iNSource, int iNChan, int iNSpaces)
void setRecomputationStatus(int iStatus)
FwdSettingsView class declaration.
void setClusteredInformation(int iNSource)
Annotation set.
Definition: annotationset.h:80
AnnotationSet class declaration.
void onClusteringStatusChanged(bool bChecked)
void recompStatusChanged(bool bChecked)
Definition: applytoview.h:58
FwdSettingsView(const QString &sSettingsPath="", QWidget *parent=0, Qt::WindowFlags f=Qt::Widget)
void updateProcessingMode(ProcessingMode mode)
void atlasDirChanged(const QString &sDirPath, const FSLIB::AnnotationSet::SPtr pAnnotationSet)
QSharedPointer< AnnotationSet > SPtr
Definition: annotationset.h:83