+MED_ORB::status
+MED::registerPresentationMesh(SALOMEDS::Study_ptr study,
+ CORBA::Long meshId,
+ const char* name,
+ const char* type,
+ const char* ico,
+ CORBA::Long presentationId)
+{
+ // set exception handler to catch unexpected CORBA exceptions
+ Unexpect aCatch(SALOME_SalomeException);
+
+ MEDCALC::MeshHandler_var meshHandler = MEDFactoryClient::getDataManager()->getMeshHandler(meshId);
+ if (meshHandler->id < 0){
+ std::cerr << "MED::registerPresentationMesh(): Error getting mesh handler\n";
+ return MED_ORB::OP_ERROR ;
+ }
+
+ if (_meshEntries.find(meshHandler->id) == _meshEntries.end()) {
+ std::cerr << "MED::registerPresentationMesh(): mesh not found\n";
+ return MED_ORB::OP_ERROR ;
+ }
+ std::string entry = _meshEntries[meshHandler->id];
+ SALOMEDS::SObject_var sobject = study->FindObjectID(entry.c_str());
+ SALOMEDS::SObject_ptr soMesh = sobject._retn();
+
+ if (soMesh->IsNull()) {
+ std::cerr << "MED::registerPresentationMesh(): Entry not found\n";
+ return MED_ORB::OP_ERROR;
+ }
+
+ SALOMEDS::StudyBuilder_var studyBuilder = study->NewBuilder();
+ SALOMEDS::UseCaseBuilder_var useCaseBuilder = study->GetUseCaseBuilder();
+ SALOMEDS::SObject_var soPresentation = studyBuilder->NewObject(soMesh);
+ useCaseBuilder->AppendTo(soPresentation->GetFather(), soPresentation);
+
+ soPresentation->SetAttrString("AttributeName", name);
+ soPresentation->SetAttrString("AttributePixMap", ico);
+
+ SALOMEDS::GenericAttribute_var anAttr;
+ SALOMEDS::AttributeParameter_var aParam;
+ anAttr = studyBuilder->FindOrCreateAttribute(soPresentation, "AttributeParameter");
+ aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
+ aParam->SetInt(MESH_ID, meshId);
+ aParam->SetBool(IS_PRESENTATION, true);
+ aParam->SetInt(PRESENTATION_ID, presentationId);
+ aParam->SetString(PRESENTATION_TYPE, type);
+
+ return MED_ORB::OP_OK;
+}
+
+