+DocumentModel* SelectionModel::getDocModel() const
+{
+ DocumentModel* docModel = NULL;
+ const QSortFilterProxyModel *pModel = dynamic_cast<const QSortFilterProxyModel *>( model() );
+ if ( pModel != NULL)
+ docModel = dynamic_cast<DocumentModel*>( pModel->sourceModel() );
+
+ return docModel;
+}
+
+void SelectionModel::showEltInfo(QModelIndex& elt)
+{
+ DocumentModel* docModel = getDocModel();
+ if (!elt.isValid() || docModel == NULL)
+ return;
+
+ HEXA_NS::Vertex* vertex = docModel->getHexaPtr<HEXA_NS::Vertex*>(elt);
+ HEXA_NS::Edge* edge = docModel->getHexaPtr<HEXA_NS::Edge*>(elt);
+ HEXA_NS::Quad* quad = docModel->getHexaPtr<HEXA_NS::Quad*>(elt);
+ HEXA_NS::Hexa* hexa = docModel->getHexaPtr<HEXA_NS::Hexa*>(elt);
+ HEXA_NS::Vector* vector = docModel->getHexaPtr<HEXA_NS::Vector*>(elt);
+ HEXA_NS::Group* group = docModel->getHexaPtr<HEXA_NS::Group*>(elt);
+ HEXA_NS::Law* law = docModel->getHexaPtr<HEXA_NS::Law*>(elt);
+ HEXA_NS::Propagation* propagation = docModel->getHexaPtr<HEXA_NS::Propagation*>(elt);
+
+ HEXABLOCKGUI* hexagui = HEXABLOCKGUI::getInstance();
+ if (vertex != NULL)
+ hexagui->showVertexInfoDialog(vertex);
+ else if (edge != NULL)
+ hexagui->showEdgeInfoDialog(edge);
+ else if (quad != NULL)
+ hexagui->showQuadInfoDialog(quad);
+ else if (hexa != NULL)
+ hexagui->showHexaInfoDialog(hexa);
+ else if (vector != NULL)
+ hexagui->showVectorInfoDialog(vector);
+ else if (group != NULL)
+ hexagui->showGroupInfoDialog(group);
+ else if (law != NULL)
+ hexagui->showLawInfoDialog(law);
+ else if (propagation != NULL)
+ hexagui->showPropagationInfoDialog(propagation);
+}
+