MNE-CPP  0.1.9
A Framework for Electrophysiology
coregsettingsview.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 # define M_PI 3.14159265358979323846 /* pi */
36 
37 //=============================================================================================================
38 // INCLUDES
39 //=============================================================================================================
40 
41 #include "coregsettingsview.h"
42 #include "ui_coregsettingsview.h"
43 
44 #include <fiff/fiff_stream.h>
45 #include <fiff/fiff_coord_trans.h>
46 
47 #include <iostream>
48 
49 //=============================================================================================================
50 // QT INCLUDES
51 //=============================================================================================================
52 
53 #include <QSettings>
54 #include <QDebug>
55 #include <QFileInfo>
56 #include <QFileDialog>
57 #include <QMessageBox>
58 #include <QVector3D>
59 
60 //=============================================================================================================
61 // EIGEN INCLUDES
62 //=============================================================================================================
63 
64 #include <Eigen/Core>
65 #include <Eigen/Geometry>
66 
67 //=============================================================================================================
68 // USED NAMESPACES
69 //=============================================================================================================
70 
71 using namespace DISPLIB;
72 using namespace Eigen;
73 
74 //=============================================================================================================
75 // DEFINE GLOBAL METHODS
76 //=============================================================================================================
77 
78 //=============================================================================================================
79 // DEFINE MEMBER METHODS
80 //=============================================================================================================
81 
82 CoregSettingsView::CoregSettingsView(const QString& sSettingsPath,
83  QWidget *parent,
84  Qt::WindowFlags f)
85 : AbstractView(parent, f)
86 , m_pUi(new Ui::CoregSettingsViewWidget)
87 {
88  m_sSettingsPath = sSettingsPath;
89  m_pUi->setupUi(this);
90 
91  loadSettings();
92 
93  // Connect File loading and saving
94  connect(m_pUi->m_qPushButton_LoadFid, &QPushButton::released,
95  this, &CoregSettingsView::onLoadFidFile);
96  connect(m_pUi->m_qPushButton_StoreFid, &QPushButton::released,
97  this, &CoregSettingsView::onStoreFidFile);
98  connect(m_pUi->m_qPushButton_LoadDig, &QPushButton::released,
99  this, &CoregSettingsView::onLoadDigFile);
100  connect(m_pUi->m_qPushButton_LoadTrans, &QPushButton::released,
101  this, &CoregSettingsView::onLoadTrans);
102  connect(m_pUi->m_qPushButton_StoreTrans, &QPushButton::released,
103  this, &CoregSettingsView::onStoreTrans);
104  connect(m_pUi->m_qComboBox_BemItems, &QComboBox::currentTextChanged,
105  this, &CoregSettingsView::changeSelectedBem, Qt::UniqueConnection);
106 
107  connect(m_pUi->m_qComboBox_BemItems, &QComboBox::currentTextChanged,
108  this, &CoregSettingsView::changeSelectedBem, Qt::UniqueConnection);
109  connect(m_pUi->m_qComboBox_BemItems, &QComboBox::currentTextChanged,
110  this, &CoregSettingsView::changeSelectedBem, Qt::UniqueConnection);
111 
112  // Connect Fiducial Pickings
113  connect(m_pUi->m_qCheckBox_PickFiducials, &QCheckBox::stateChanged,
114  this, &CoregSettingsView::onPickingStatus);
115  connect(m_pUi->m_qRadioButton_LPA, &QCheckBox::toggled,
116  this, &CoregSettingsView::onFiducialChanged);
117  connect(m_pUi->m_qRadioButton_NAS, &QCheckBox::toggled,
118  this, &CoregSettingsView::onFiducialChanged);
119  connect(m_pUi->m_qRadioButton_RPA, &QCheckBox::toggled,
120  this, &CoregSettingsView::onFiducialChanged);
121  onPickingStatus();
122 
123  // connect icp settings
124  connect(m_pUi->m_qPushButton_FitFiducials, &QPushButton::released,
125  this, &CoregSettingsView::onFitFiducials);
126  connect(m_pUi->m_qPushButton_FitICP, &QPushButton::released,
127  this, &CoregSettingsView::onFitICP);
128 
129  // connect adjustment settings
130  connect(m_pUi->m_qDoubleSpinBox_ScalingX, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
132  connect(m_pUi->m_qDoubleSpinBox_ScalingY, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
134  connect(m_pUi->m_qDoubleSpinBox_ScalingZ, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
136  connect(m_pUi->m_qDoubleSpinBox_RotX, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
138  connect(m_pUi->m_qDoubleSpinBox_RotY, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
140  connect(m_pUi->m_qDoubleSpinBox_RotZ, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
142  connect(m_pUi->m_qDoubleSpinBox_TransX, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
144  connect(m_pUi->m_qDoubleSpinBox_TransY, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
146  connect(m_pUi->m_qDoubleSpinBox_TransZ, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
148  connect(m_pUi->m_qComboBox_ScalingMode, &QComboBox::currentTextChanged,
149  this, &CoregSettingsView::onScalingModeChanges, Qt::UniqueConnection);
150  onScalingModeChanges();
151 
152  // set button infos
153  setToolTipInfo();
154 }
155 
156 //=============================================================================================================
157 
158 CoregSettingsView::~CoregSettingsView()
159 {
160  saveSettings();
161  delete m_pUi;
162 }
163 
164 //=============================================================================================================
165 
167 {
168  if(m_sSettingsPath.isEmpty()) {
169  return;
170  }
171 
172  // Save Settings
173  QSettings settings("MNECPP");
174 
175 }
176 
177 //=============================================================================================================
178 
180 {
181  if(m_sSettingsPath.isEmpty()) {
182  return;
183  }
184 
185  // Load Settings
186  QSettings settings("MNECPP");
187 
188 }
189 
190 //=============================================================================================================
191 
193 {
194  switch(mode) {
195  case GuiMode::Clinical:
196  break;
197  default: // default is research mode
198  break;
199  }
200 }
201 
202 //=============================================================================================================
203 
205 {
206  switch(mode) {
207  case ProcessingMode::Offline:
208  break;
209  default: // default is realtime mode
210  break;
211  }
212 }
213 
214 //=============================================================================================================
215 
216 void CoregSettingsView::setToolTipInfo()
217 {
218  m_pUi->m_qComboBox_BemItems->setToolTip("Select the Bem to use for coregistration. Load the Bem via: File->Open");
219  m_pUi->m_qPushButton_LoadFid->setToolTip("Optional. Load the fiducials from file.");
220  m_pUi->m_qPushButton_StoreFid->setToolTip("Store the fiducials to file.");
221  m_pUi->m_qPushButton_LoadDig->setToolTip("Load the digitizers from file.");
222  m_pUi->m_qPushButton_LoadTrans->setToolTip("Optional. Load the coordinate transformation from file.");
223  m_pUi->m_qPushButton_StoreTrans->setToolTip("Store the coordinate transformation to file.");
224 
225  m_pUi->m_qDoubleSpinBox_WeightRpa->setToolTip("The weight for the RPA.");
226  m_pUi->m_qDoubleSpinBox_WeightLpa->setToolTip("The weight for the LPA.");
227  m_pUi->m_qDoubleSpinBox_WeightNas->setToolTip("The weight for the Nasion.");
228  m_pUi->m_qDoubleSpinBox_WeightEEG->setToolTip("The weight for the EEG points.");
229  m_pUi->m_qDoubleSpinBox_WeightHPI->setToolTip("The weight for the HPI points.");
230  m_pUi->m_qDoubleSpinBox_WeightHSP->setToolTip("The weight for the HSP points. HSP = Head Shape Points");
231  m_pUi->m_qCheckBox_HSP->setToolTip("Wheater to use the HSP points for the Coregistration. HSP = Head Shape Points");
232  m_pUi->m_qCheckBox_EEG->setToolTip("Wheater to use the EEG points for the Coregistration.");
233  m_pUi->m_qCheckBox_HPI->setToolTip("Wheater to use the HPI points for the Coregistration.");
234  m_pUi->m_qSpinBox_MaxDist->setToolTip("The maximum allowed distace between head surface and digitizer cloud. This is used to discard outliers.");
235 
236  m_pUi->m_qCheckBox_AutoScale->setToolTip("Wheater to use automatic scaling for the fiducial alignment.");
237  m_pUi->m_qDoubleSpinBox_Converge->setToolTip("The convergence limit for the ICP algorithm.");
238  m_pUi->m_qSpinBox_MaxIter->setToolTip("The maximum number of iterations for the ICP algorithm.");
239  m_pUi->m_qPushButton_FitFiducials->setToolTip("Fiducial alignment. Apply this step before using the ICP algorithm to get a better first guess.");
240  m_pUi->m_qPushButton_FitICP->setToolTip("Co-Registration with the ICP algorithm.");
241  m_pUi->m_qLabel_RMSE->setToolTip("The Root-Mean-Square-Error of the distance between closest point and digigizer in mm");
242  m_pUi->m_qComboBox_ScalingMode->setToolTip("The scaling Mode. None - No scaling is applied; Uniform - same scaling for x,y,z-axis; 3-Axis - scaling on each axis.");
243  m_pUi->m_qDoubleSpinBox_ScalingX->setToolTip("Scaling to apply in x-direction.");
244  m_pUi->m_qDoubleSpinBox_ScalingY->setToolTip("Scaling to apply in y-direction.");
245  m_pUi->m_qDoubleSpinBox_ScalingZ->setToolTip("Scaling to apply in z-direction.");
246 
247  m_pUi->m_qDoubleSpinBox_RotX->setToolTip("Rotation arround x-axis.");
248  m_pUi->m_qDoubleSpinBox_RotY->setToolTip("Rotation arround y-axis.");
249  m_pUi->m_qDoubleSpinBox_RotZ->setToolTip("Rotation arround z-axis.");
250 
251  m_pUi->m_qDoubleSpinBox_TransX->setToolTip("Translation to apply in x-direction.");
252  m_pUi->m_qDoubleSpinBox_TransY->setToolTip("Translation to apply in y-direction.");
253  m_pUi->m_qDoubleSpinBox_TransZ->setToolTip("Translation to apply in z-direction.");
254 
255 }
256 
257 //=============================================================================================================
258 
259 void CoregSettingsView::onLoadFidFile()
260 {
261  QString sFileName = QFileDialog::getOpenFileName(this,
262  tr("Select fiducials"),
263  QString(),
264  tr("Fif Files (*.fif)"));
265 
266  if (sFileName.isEmpty()) {
267  return;
268  } else {
269  emit fidFileChanged(sFileName);
270  }
271 }
272 
273 //=============================================================================================================
274 
275 void CoregSettingsView::onPickingStatus()
276 {
277  bool bState = m_pUi->m_qCheckBox_PickFiducials->isChecked();
278  if(bState) {
279  m_pUi->m_qWidget_ResultFiducials->setEnabled(true);
280  emit pickFiducials(true);
281  } else {
282  m_pUi->m_qWidget_ResultFiducials->setEnabled(false);
283  emit pickFiducials(false);
284  }
285  return;
286 }
287 
288 //=============================================================================================================
289 
290 void CoregSettingsView::setFiducials(const QVector3D vecPosition)
291 {
292  QVector3D vecTemp;
293  // store incoming vector
294  if(m_pUi->m_qRadioButton_LPA->isChecked()) {
295  m_vecLPA = vecPosition;
296 
297  // step to next fiducial
298  m_pUi->m_qRadioButton_NAS->setChecked(true);
299  vecTemp = m_vecNAS;
300  onFiducialChanged();
301  } else if (m_pUi->m_qRadioButton_NAS->isChecked()) {
302  m_vecNAS = vecPosition;
303 
304  // step to next fiducial
305  m_pUi->m_qRadioButton_RPA->setChecked(true);
306  vecTemp = m_vecRPA;
307  onFiducialChanged();
308  } else {
309  m_vecRPA = vecPosition;
310 
311  // step to next fiducial
312  m_pUi->m_qRadioButton_LPA->setChecked(true);
313  vecTemp = m_vecLPA;
314  onFiducialChanged();
315  }
316 
317  // floor(vecAxialPosition[0]*100)/100 makes sure to only take 2 decimal positions
318  m_pUi->m_qLineEdit_FidX->setText(QString::number(floor(vecTemp[0]*100)/100 * 1000) + " mm" );
319  m_pUi->m_qLineEdit_FidY->setText(QString::number(floor(vecTemp[1]*100)/100 * 1000) + " mm" );
320  m_pUi->m_qLineEdit_FidZ->setText(QString::number(floor(vecTemp[2]*100)/100 * 1000) + " mm" );
321  return;
322 }
323 
324 //=============================================================================================================
325 
326 void CoregSettingsView::onFiducialChanged()
327 {
328  QVector3D vecTemp;
329  if(m_pUi->m_qRadioButton_LPA->isChecked()) {
330  vecTemp = m_vecLPA;
331  emit fiducialChanged(FIFFV_POINT_LPA);
332  } else if (m_pUi->m_qRadioButton_NAS->isChecked()) {
333  vecTemp = m_vecNAS;
334  emit fiducialChanged(FIFFV_POINT_NASION);
335  } else {
336  vecTemp = m_vecRPA;
337  emit fiducialChanged(FIFFV_POINT_RPA);
338  }
339 
340  // floor(vecAxialPosition[0]*100)/100 makes sure to only take 2 decimal positions
341  m_pUi->m_qLineEdit_FidX->setText(QString::number(floor(vecTemp[0]*100)/100 * 1000) + " mm" );
342  m_pUi->m_qLineEdit_FidY->setText(QString::number(floor(vecTemp[1]*100)/100 * 1000) + " mm" );
343  m_pUi->m_qLineEdit_FidZ->setText(QString::number(floor(vecTemp[2]*100)/100 * 1000) + " mm" );
344  return;
345 }
346 
347 //=============================================================================================================
348 
349 void CoregSettingsView::onStoreFidFile()
350 {
351  QString sFileName = QFileDialog::getSaveFileName(Q_NULLPTR,
352  tr("Save Fiducials"), "",
353  tr("Fif file (*fiducials.fif)"));
354 
355  if (sFileName.isEmpty()) {
356  return;
357  } else {
358  emit fidStoreFileChanged(sFileName);
359  }
360 }
361 
362 //=============================================================================================================
363 
364 void CoregSettingsView::onLoadDigFile()
365 {
366  QString sFileName = QFileDialog::getOpenFileName(this,
367  tr("Select digitizer file"),
368  QString(),
369  tr("Fif Files (*.fif)"));
370 
371  if (sFileName.isEmpty()) {
372  return;
373  } else {
374  emit digFileChanged(sFileName);
375  }
376 }
377 
378 //=============================================================================================================
379 
380 void CoregSettingsView::onLoadTrans()
381 {
382  QString sFileName = QFileDialog::getOpenFileName(this,
383  tr("Select Transformation"),
384  QString(),
385  tr("Fif Files (*-trans.fif)"));
386 
387  if (sFileName.isEmpty()) {
388  return;
389  } else {
390  emit loadTrans(sFileName);
391  }
392 }
393 
394 //=============================================================================================================
395 
396 void CoregSettingsView::onStoreTrans()
397 {
398  QString sFileName = QFileDialog::getSaveFileName(Q_NULLPTR,
399  tr("Save Transformation"), "",
400  tr("Fif file (*-trans.fif)"));
401 
402  if (sFileName.isEmpty()) {
403  return;
404  } else{
405  emit storeTrans(sFileName);
406  }
407 }
408 
409 //=============================================================================================================
410 
412 {
413  // choose to use other points as well
414  if(m_pUi->m_qRadioButton_LPA->isChecked()) {
415  return FIFFV_POINT_LPA;
416  } else if(m_pUi->m_qRadioButton_NAS->isChecked()) {
417  return FIFFV_POINT_NASION;
418  } else if(m_pUi->m_qRadioButton_RPA->isChecked()) {
419  return FIFFV_POINT_RPA;
420  };
421  return -1;
422 }
423 
424 //=============================================================================================================
425 
427 {
428  return m_pUi->m_qSpinBox_MaxIter->value();
429 }
430 
431 //=============================================================================================================
432 
434 {
435  return m_pUi->m_qDoubleSpinBox_Converge->value()/1000;
436 }
437 
438 //=============================================================================================================
439 
441 {
442  return m_pUi->m_qCheckBox_AutoScale->isChecked();
443 }
444 
445 //=============================================================================================================
446 
448 {
449  return m_pUi->m_qDoubleSpinBox_WeightLpa->text().toFloat();
450 }
451 
452 //=============================================================================================================
453 
454 float CoregSettingsView::getWeightRPA()
455 {
456  return m_pUi->m_qDoubleSpinBox_WeightRpa->text().toFloat();
457 }
458 
459 //=============================================================================================================
460 
461 float CoregSettingsView::getWeightNAS()
462 {
463  return m_pUi->m_qDoubleSpinBox_WeightNas->text().toFloat();
464 }
465 
466 //=============================================================================================================
467 
468 float CoregSettingsView::getWeightEEG()
469 {
470  return m_pUi->m_qDoubleSpinBox_WeightEEG->text().toFloat();
471 }
472 
473 //=============================================================================================================
474 
475 float CoregSettingsView::getWeightHPI()
476 {
477  return m_pUi->m_qDoubleSpinBox_WeightHPI->text().toFloat();
478 }
479 
480 //=============================================================================================================
481 
482 float CoregSettingsView::getWeightHSP()
483 {
484  return m_pUi->m_qDoubleSpinBox_WeightHSP->text().toFloat();
485 }
486 
487 //=============================================================================================================
488 
490 {
491  return static_cast<float>(m_pUi->m_qSpinBox_MaxDist->value())/1000.0;
492 }
493 
494 //=============================================================================================================
495 
497 {
498  // always use cardinal points
499  QList<int> lPicks({FIFFV_POINT_CARDINAL});
500 
501  // choose to use other points as well
502  if(m_pUi->m_qCheckBox_EEG) {
503  lPicks << FIFFV_POINT_EEG;
504  }
505  if(m_pUi->m_qCheckBox_HPI) {
506  lPicks << FIFFV_POINT_HPI;
507  }
508  if(m_pUi->m_qCheckBox_HSP) {
509  lPicks << FIFFV_POINT_EXTRA;
510  }
511  return lPicks;
512 }
513 
514 //=============================================================================================================
515 
517 {
518  // block to avoid action loop
519  QSignalBlocker blockerComboBox(m_pUi->m_qComboBox_BemItems);
520  m_pUi->m_qComboBox_BemItems->clear();
521 }
522 
523 //=============================================================================================================
524 
525 void CoregSettingsView::addSelectionBem(const QString& sBemName)
526 {
527  m_pUi->m_qComboBox_BemItems->addItem(sBemName);
528 }
529 
530 //=============================================================================================================
531 
533 {
534  return m_pUi->m_qComboBox_BemItems->currentText();
535 }
536 
537 //=============================================================================================================
538 
540 {
541  m_pUi->m_qLabel_NOmitted->setText(QString::number(iN));
542 }
543 
544 //=============================================================================================================
545 
546 void CoregSettingsView::setRMSE(const float fRMSE)
547 {
548  m_pUi->m_qLabel_RMSE->setText(QString::number(fRMSE*1000) + " mm");
549 }
550 
551 //=============================================================================================================
552 
553 void CoregSettingsView::setTransParams(const Vector3f& vecTrans,
554  const Vector3f& vecRot,
555  const Vector3f& vecScale)
556 {
557  // block signals to avoid action loop
558  QSignalBlocker blockerTransX(m_pUi->m_qDoubleSpinBox_TransX);
559  QSignalBlocker blockerTransY(m_pUi->m_qDoubleSpinBox_TransY);
560  QSignalBlocker blockerTransZ(m_pUi->m_qDoubleSpinBox_TransZ);
561  QSignalBlocker blockerRotX(m_pUi->m_qDoubleSpinBox_RotX);
562  QSignalBlocker blockerRotY(m_pUi->m_qDoubleSpinBox_RotY);
563  QSignalBlocker blockerRotZ(m_pUi->m_qDoubleSpinBox_RotZ);
564  QSignalBlocker blockerScaleX(m_pUi->m_qDoubleSpinBox_ScalingX);
565  QSignalBlocker blockerScaleY(m_pUi->m_qDoubleSpinBox_ScalingY);
566  QSignalBlocker blockerScaleZ(m_pUi->m_qDoubleSpinBox_ScalingZ);
567 
568  m_pUi->m_qDoubleSpinBox_TransX->setValue(vecTrans(0)*1000);
569  m_pUi->m_qDoubleSpinBox_TransY->setValue(vecTrans(1)*1000);
570  m_pUi->m_qDoubleSpinBox_TransZ->setValue(vecTrans(2)*1000);
571 
572  // Inverted order due to euler rotation
573  m_pUi->m_qDoubleSpinBox_RotX->setValue(vecRot(2)*180/M_PI);
574  m_pUi->m_qDoubleSpinBox_RotY->setValue(vecRot(1)*180/M_PI);
575  m_pUi->m_qDoubleSpinBox_RotZ->setValue(vecRot(0)*180/M_PI);
576 
577  m_pUi->m_qDoubleSpinBox_ScalingX->setValue(vecScale(2));
578  m_pUi->m_qDoubleSpinBox_ScalingY->setValue(vecScale(1));
579  m_pUi->m_qDoubleSpinBox_ScalingZ->setValue(vecScale(0));
580 }
581 
582 //=============================================================================================================
583 
584 void CoregSettingsView::getTransParams(Vector3f& vecRot,
585  Vector3f& vecTrans,
586  Vector3f& vecScale)
587 {
588  vecTrans(0) = m_pUi->m_qDoubleSpinBox_TransX->value()/1000.0;
589  vecTrans(1) = m_pUi->m_qDoubleSpinBox_TransY->value()/1000.0;
590  vecTrans(2) = m_pUi->m_qDoubleSpinBox_TransZ->value()/1000.0;
591 
592  // Inverted order due to euler rotation
593  vecRot(2) = m_pUi->m_qDoubleSpinBox_RotX->value() * M_PI/180.0;
594  vecRot(1) = m_pUi->m_qDoubleSpinBox_RotY->value() * M_PI/180.0;
595  vecRot(0) = m_pUi->m_qDoubleSpinBox_RotZ->value() * M_PI/180.0;
596 
597  // apply different scaling modes
598  if (m_pUi->m_qComboBox_ScalingMode->currentText() == "Uniform") {
599  vecScale.fill(m_pUi->m_qDoubleSpinBox_ScalingX->value());
600  } else if (m_pUi->m_qComboBox_ScalingMode->currentText() == "3-Axis") {
601  vecScale(0) = m_pUi->m_qDoubleSpinBox_ScalingX->value();
602  vecScale(1) = m_pUi->m_qDoubleSpinBox_ScalingY->value();
603  vecScale(2) = m_pUi->m_qDoubleSpinBox_ScalingZ->value();
604  } else {
605  vecScale.fill(1);
606  }
607 
608  return;
609 }
610 
611 //=============================================================================================================
612 
613 void CoregSettingsView::onScalingModeChanges()
614 {
615  // apply different scaling modes
616  if (m_pUi->m_qComboBox_ScalingMode->currentText() == "Uniform") {
617  m_pUi->m_qDoubleSpinBox_ScalingX->setEnabled(true);
618  m_pUi->m_qDoubleSpinBox_ScalingY->setEnabled(false);
619  m_pUi->m_qDoubleSpinBox_ScalingZ->setEnabled(false);
620  } else if (m_pUi->m_qComboBox_ScalingMode->currentText() == "3-Axis") {
621  m_pUi->m_qDoubleSpinBox_ScalingX->setEnabled(true);
622  m_pUi->m_qDoubleSpinBox_ScalingY->setEnabled(true);
623  m_pUi->m_qDoubleSpinBox_ScalingZ->setEnabled(true);
624  } else {
625  m_pUi->m_qDoubleSpinBox_ScalingX->setEnabled(false);
626  m_pUi->m_qDoubleSpinBox_ScalingY->setEnabled(false);
627  m_pUi->m_qDoubleSpinBox_ScalingZ->setEnabled(false);
628  }
629  return;
630 }
631 
632 //=============================================================================================================
633 
634 void CoregSettingsView::onFitFiducials()
635 {
636  m_pUi->m_qCheckBox_PickFiducials->setChecked(false);
637  emit fitFiducials();
638 }
639 
640 //=============================================================================================================
641 
642 void CoregSettingsView::onFitICP()
643 {
644  m_pUi->m_qCheckBox_PickFiducials->setChecked(false);
645  emit fitICP();
646 }
647 
648 //=============================================================================================================
649 
651 {
652 
653 }
DISPLIB::AbstractView
The AbstractView class provides the base calss for all Disp viewers.
Definition: abstractview.h:75
DISPLIB::CoregSettingsView::getDigitizerCheckState
QList< int > getDigitizerCheckState()
Definition: coregsettingsview.cpp:496
DISPLIB::CoregSettingsView::setTransParams
void setTransParams(const Eigen::Vector3f &vecTrans, const Eigen::Vector3f &vecRot, const Eigen::Vector3f &vecScale)
Definition: coregsettingsview.cpp:553
DISPLIB::CoregSettingsView::getCurrentFiducial
int getCurrentFiducial()
Definition: coregsettingsview.cpp:411
DISPLIB::CoregSettingsView::updateGuiMode
void updateGuiMode(GuiMode mode)
Definition: coregsettingsview.cpp:192
DISPLIB::CoregSettingsView::fiducialChanged
void fiducialChanged(const int iFiducial)
DISPLIB::CoregSettingsView::getConvergence
float getConvergence()
Definition: coregsettingsview.cpp:433
DISPLIB::CoregSettingsView::getMaxIter
int getMaxIter()
Definition: coregsettingsview.cpp:426
fiff_stream.h
FiffStream class declaration.
DISPLIB::CoregSettingsView::transParamChanged
void transParamChanged()
DISPLIB::CoregSettingsView::fitFiducials
void fitFiducials()
fiff_coord_trans.h
FiffCoordTrans class declaration.
DISPLIB::CoregSettingsView::CoregSettingsView
CoregSettingsView(const QString &sSettingsPath="", QWidget *parent=0, Qt::WindowFlags f=Qt::Widget)
Definition: coregsettingsview.cpp:82
coregsettingsview.h
CoregSettingsView class declaration.
DISPLIB::CoregSettingsView::pickFiducials
void pickFiducials(bool bActivatePicking)
DISPLIB::CoregSettingsView::setFiducials
void setFiducials(const QVector3D vecAxialPosition)
Definition: coregsettingsview.cpp:290
DISPLIB::CoregSettingsView::fitICP
void fitICP()
DISPLIB::CoregSettingsView::getAutoScale
bool getAutoScale()
Definition: coregsettingsview.cpp:440
DISPLIB::CoregSettingsView::clearView
void clearView()
Definition: coregsettingsview.cpp:650
DISPLIB::CoregSettingsView::clearSelectionBem
void clearSelectionBem()
Definition: coregsettingsview.cpp:516
DISPLIB::CoregSettingsView::getCurrentSelectedBem
QString getCurrentSelectedBem()
Definition: coregsettingsview.cpp:532
DISPLIB::CoregSettingsView::changeSelectedBem
void changeSelectedBem(const QString &sText)
DISPLIB::CoregSettingsView::fidFileChanged
void fidFileChanged(const QString &sFilePath)
DISPLIB::CoregSettingsView::storeTrans
void storeTrans(const QString &sFilePath)
DISPLIB::CoregSettingsView::updateProcessingMode
void updateProcessingMode(ProcessingMode mode)
Definition: coregsettingsview.cpp:204
DISPLIB::CoregSettingsView::getWeightLPA
float getWeightLPA()
Definition: coregsettingsview.cpp:447
DISPLIB::CoregSettingsView::setOmittedPoints
void setOmittedPoints(const int iN)
Definition: coregsettingsview.cpp:539
DISPLIB::CoregSettingsView::getTransParams
void getTransParams(Eigen::Vector3f &vecRot, Eigen::Vector3f &vecTrans, Eigen::Vector3f &vecScale)
Definition: coregsettingsview.cpp:584
DISPLIB::CoregSettingsView::setRMSE
void setRMSE(const float fRMSE)
Definition: coregsettingsview.cpp:546
DISPLIB::CoregSettingsView::fidStoreFileChanged
void fidStoreFileChanged(const QString &sFilePath)
DISPLIB::CoregSettingsView::saveSettings
void saveSettings()
Definition: coregsettingsview.cpp:166
DISPLIB::CoregSettingsView::digFileChanged
void digFileChanged(const QString &sFilePath)
DISPLIB::CoregSettingsView::getOmmitDistance
float getOmmitDistance()
Definition: coregsettingsview.cpp:489
DISPLIB::CoregSettingsView::loadSettings
void loadSettings()
Definition: coregsettingsview.cpp:179
DISPLIB::CoregSettingsView::loadTrans
void loadTrans(const QString &sFilePath)
DISPLIB::CoregSettingsView::addSelectionBem
void addSelectionBem(const QString &sBemName)
Definition: coregsettingsview.cpp:525