65 #include <QSharedPointer>
66 #include <Qt3DCore/QEntity>
67 #include <QSurfaceFormat>
78 using namespace FSLIB;
79 using namespace MNELIB;
80 using namespace DISP3DLIB;
81 using namespace INVERSELIB;
82 using namespace CONNECTIVITYLIB;
83 using namespace Eigen;
84 using namespace FIFFLIB;
90 Data3DTreeModel::Data3DTreeModel(QObject* parent)
91 : QStandardItemModel(parent)
92 , m_pModelEntity(new Qt3DCore::QEntity())
113 return QStandardItemModel::data(index, role);
118 int Data3DTreeModel::columnCount(
const QModelIndex &parent)
const
127 QVariant Data3DTreeModel::headerData(
int section, Qt::Orientation orientation,
130 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
133 data.setValue(QString(
"Data"));
134 }
else if(section == 1) {
135 data.setValue(QString(
"Description"));
146 Qt::ItemFlags Data3DTreeModel::flags(
const QModelIndex &index)
const
149 if(index.column() == 1) {
150 return Qt::ItemIsEnabled;
153 return QStandardItemModel::flags(index);
159 const QString& sMriSetName,
163 QList<FsSurfaceTreeItem*> returnItemList;
165 for(
int i = 0; i < surfaceSet.
size(); ++i) {
166 if(i < annotationSet.
size()) {
167 returnItemList.append(
addSurface(sSubject, sMriSetName, surfaceSet[i], annotationSet[i]));
173 return returnItemList;
179 const QString& sMriSetName,
189 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sMriSetName);
191 if(!itemList.isEmpty()) {
206 const QString& sMeasurementSetName,
209 QList<SourceSpaceTreeItem*> pReturnItem;
215 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sMeasurementSetName);
217 if(!itemList.isEmpty()) {
232 const QString& sMeasurementSetName,
241 const QString& sMeasurementSetName,
247 bool bUseGPU =
false;
261 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sMeasurementSetName);
264 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
266 pReturnItem = pMeasurementItem->
addData(tSourceEstimate,
276 pReturnItem = pMeasurementItem->
addData(tSourceEstimate,
299 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sSet);
302 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
318 const QString& sMeasurementSetName,
319 const QList<Network>& networkData)
321 QList<NetworkTreeItem*> returnList;
323 for(
int i = 0; i < networkData.size(); ++i) {
335 const QString& sMeasurementSetName,
344 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sMeasurementSetName);
346 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
362 const QString& sBemSetName,
371 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sBemSetName);
373 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::BemItem)) {
374 pReturnItem =
dynamic_cast<BemTreeItem*
>(itemList.first());
377 pReturnItem =
new BemTreeItem(Data3DTreeModelItemTypes::BemItem, sBemSetName);
388 const QString& sSensorSetName,
389 const QList<FIFFLIB::FiffChInfo>& lChInfo,
391 const QStringList& bads)
399 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sSensorSetName);
401 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::SensorSetItem)) {
403 if(pReturnItem == Q_NULLPTR){
404 qDebug()<<
"Dynamic cast failed, returning null pointer";
409 pReturnItem =
new SensorSetTreeItem(Data3DTreeModelItemTypes::SensorSetItem, sSensorSetName);
420 const QString& sSensorSetName,
421 const QList<FIFFLIB::FiffChInfo>& lChInfo,
422 const QStringList& bads)
430 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sSensorSetName);
434 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::SensorSetItem)) {
436 if(pReturnItem == Q_NULLPTR){
437 qDebug() <<
"Dynamic cast failed, returning null pointer";
438 pReturnItem = Q_NULLPTR;
443 pReturnItem =
new SensorSetTreeItem(Data3DTreeModelItemTypes::SensorSetItem, sSensorSetName);
454 const QString& sMeasurementSetName,
463 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sMeasurementSetName);
465 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
480 const QString& sMeasurementSetName,
481 const MatrixXd& matSensorData,
484 const QString& sDataType)
486 bool bUseGPU =
false;
500 QList<QStandardItem*> itemList = pSubjectItem->
findChildren(sMeasurementSetName);
503 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
505 pReturnItem = pMeasurementItem->
addData(matSensorData,
515 pReturnItem = pMeasurementItem->
addData(matSensorData,
540 QList<QStandardItem*> itemSubjectList = this->findItems(sSubject);
543 if(itemSubjectList.size() == 0) {
544 pReturnItem =
new SubjectTreeItem(Data3DTreeModelItemTypes::SubjectItem, sSubject);
545 itemSubjectList << pReturnItem;
546 itemSubjectList <<
new QStandardItem(pReturnItem->toolTip());
560 qRegisterMetaType<QVector<QVector<int> > >();
561 qRegisterMetaType<QVector<int> >();
563 qRegisterMetaType<QVector<Vector3f> >();
564 qRegisterMetaType<QVector<Eigen::Vector3f> >();
566 qRegisterMetaType<QList<FSLIB::Label> >();
567 qRegisterMetaType<QList<Label> >();
569 qRegisterMetaType<FIFFLIB::FiffInfo>();
570 qRegisterMetaType<FiffInfo>();
572 qRegisterMetaType<Eigen::MatrixX3i>();
573 qRegisterMetaType<MatrixX3i>();
575 qRegisterMetaType<Eigen::MatrixXd>();
576 qRegisterMetaType<MatrixXd>();
578 qRegisterMetaType<Eigen::MatrixX3f>();
579 qRegisterMetaType<MatrixX3f>();
581 qRegisterMetaType<Eigen::MatrixX4f>();
582 qRegisterMetaType<MatrixX4f>();
584 qRegisterMetaType<Eigen::VectorXf>();
585 qRegisterMetaType<VectorXf>();
587 qRegisterMetaType<Eigen::VectorXi>();
588 qRegisterMetaType<VectorXi>();
590 qRegisterMetaType<Eigen::VectorXd>();
591 qRegisterMetaType<VectorXd>();
593 qRegisterMetaType<Eigen::RowVectorXf>();
594 qRegisterMetaType<RowVectorXf>();
596 qRegisterMetaType<Eigen::Vector3f>();
597 qRegisterMetaType<Vector3f>();
599 qRegisterMetaType<Eigen::SparseMatrix<float> >();
600 qRegisterMetaType<SparseMatrix<float> >();
602 qRegisterMetaType<QSharedPointer<Eigen::SparseMatrix<float> > >();
603 qRegisterMetaType<QSharedPointer<SparseMatrix<float> > >();