]> SALOME platform Git repositories - modules/med.git/commitdiff
Salome HOME
[MEDCalc]: bug fix: field series ID and field ID mix up in presentation.
authorabn <adrien.bruneton@cea.fr>
Mon, 25 Jul 2016 12:06:26 +0000 (14:06 +0200)
committerabn <adrien.bruneton@cea.fr>
Mon, 25 Jul 2016 12:06:26 +0000 (14:06 +0200)
src/MEDCalc/MEDCalcConstants.hxx
src/MEDCalc/cmp/MED.cxx
src/MEDCalc/gui/DatasourceController.cxx
src/MEDCalc/gui/PresentationController.cxx

index e9c72abbf40df5967bb247996d38ff6a2450610c..2023db6d7986d89c7c3f48c0290308ba08ba6e37 100644 (file)
@@ -22,7 +22,7 @@
 #define IS_IN_WORKSPACE  "isInWorkspace"
 #define SOURCE_ID        "sourceId"
 #define MESH_ID          "meshId"
-//#define FIELD_SERIES_ID  "fieldSeriesId"
+#define FIELD_SERIES_ID  "fieldSeriesId"
 #define FIELD_ID         "fieldId"
 #define PRESENTATION_ID  "presentationId"
 #define IS_PRESENTATION  "isPresentation"
index a780f5ae1f62a9dea8006bc8630c422cc59b3cb5..cb92d8e483d457aecaf6c6884957eed4bb93041a 100644 (file)
@@ -136,8 +136,8 @@ MED::addDatasourceToStudy(SALOMEDS::Study_ptr study,
           soFieldseries->SetAttrString("AttributePixMap", "ICO_DATASOURCE_FIELD");
           anAttr = studyBuilder->FindOrCreateAttribute(soFieldseries, "AttributeParameter");
           aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
-          //aParam->SetInt(FIELD_SERIES_ID, fieldseriesHandler.id);
-          aParam->SetInt(FIELD_ID, fieldseriesHandler.id);
+          aParam->SetInt(FIELD_SERIES_ID, fieldseriesHandler.id);
+          //aParam->SetInt(FIELD_ID, fieldseriesHandler.id);
           aParam->SetBool(IS_IN_WORKSPACE, false);
 
           useCaseBuilder->AppendTo(soFieldseries->GetFather(), soFieldseries);
@@ -302,7 +302,7 @@ MED::getObjectInfo(CORBA::Long studyId, const char* entry)
   //bool isPresentation = false;
   int sourceId = -1;
   int meshId = -1;
-  //int fieldSeriesId = -1;
+  int fieldSeriesId = -1;
   int fieldId = -1;
   int presentationId = -1;
   if (aSObj->FindAttribute(anAttribute, "AttributeParameter")) {
@@ -315,8 +315,8 @@ MED::getObjectInfo(CORBA::Long studyId, const char* entry)
       sourceId = attrParam->GetInt(SOURCE_ID);
     if (attrParam->IsSet(MESH_ID, PT_INTEGER))
       meshId = attrParam->GetInt(MESH_ID);
-    //if (attrParam->IsSet(FIELD_SERIES_ID, PT_INTEGER))
-    //  fieldSeriesId = attrParam->GetInt(FIELD_SERIES_ID);
+    if (attrParam->IsSet(FIELD_SERIES_ID, PT_INTEGER))
+      fieldSeriesId = attrParam->GetInt(FIELD_SERIES_ID);
     if (attrParam->IsSet(FIELD_ID, PT_INTEGER))
       fieldId = attrParam->GetInt(FIELD_ID);
     if (attrParam->IsSet(PRESENTATION_ID, PT_INTEGER))
@@ -331,8 +331,8 @@ MED::getObjectInfo(CORBA::Long studyId, const char* entry)
     oss << "Source id: " << sourceId << std::endl;
   if (meshId > -1)
     oss << "Mesh id: " << meshId << std::endl;
-  //if (fieldSeriesId > -1)
-  //  oss << "Field series id: " << fieldSeriesId << std::endl;
+  if (fieldSeriesId > -1)
+    oss << "Field series id: " << fieldSeriesId << std::endl;
   if (fieldId > -1)
     oss << "Field id: " << fieldId << std::endl;
   //oss << "Is presentation: " << isPresentation << std::endl;
index c6cfe636e48e6dfe640c50d693c3d7332df61373..3cd5c7381163deca582e6369aa18bb6f582c4c7e 100644 (file)
@@ -215,8 +215,8 @@ void DatasourceController::OnExpandField()
     SALOMEDS::SObject_var soFieldseries = listOfSObject->at(i);
 
     // First retrieve the fieldseries id associated to this study object
-    //long fieldseriesId = _studyEditor->getParameterInt(soFieldseries,FIELD_SERIES_ID);
-    long fieldseriesId = _studyEditor->getParameterInt(soFieldseries,FIELD_ID);
+    long fieldseriesId = _studyEditor->getParameterInt(soFieldseries,FIELD_SERIES_ID);
+    //long fieldseriesId = _studyEditor->getParameterInt(soFieldseries,FIELD_ID);
     STDLOG("Expand the field timeseries "<<fieldseriesId);
 
     // If fieldseriesId equals -1, then it means that it is not a
index 4356a10745f5d548f60f4c916b58719d918d2d42..3537c843c408b3df2f29a43125ac86ac579b780e 100644 (file)
@@ -216,11 +216,27 @@ PresentationController::visualize(PresentationEvent::EventType eventType)
   // to make a view of an object from the tui console).
   for (int i=0; i<listOfSObject->size(); i++) {
     SALOMEDS::SObject_var soField = listOfSObject->at(i);
-    int fieldId = _studyEditor->getParameterInt(soField,FIELD_ID);
-    // If fieldId equals -1, then it means that it is not a field
-    // managed by the MED module, and we stop this function process.
-    if ( fieldId < 0 )
-      continue;
+    int fieldId = -1;
+    try {
+        fieldId = _studyEditor->getParameterInt(soField,FIELD_ID);    }
+    catch(...)    { }
+    if (fieldId < 0)  // is it a field serie ?
+      {
+        int fieldSeriesId = -1;
+        try {
+            fieldSeriesId = _studyEditor->getParameterInt(soField,FIELD_SERIES_ID);      }
+        catch(...)  { }
+        // If fieldId and fieldSeriesId equals -1, then it means that it is not a field
+        // managed by the MED module, and we stop this function process.
+        if ( fieldSeriesId < 0)
+          continue;
+        MEDCALC::FieldHandlerList* fieldHandlerList = MEDFactoryClient::getDataManager()->getFieldListInFieldseries(fieldSeriesId);
+        if (fieldHandlerList->length() < 0)
+          continue;
+        // For a field series, get the first real field entry:
+        MEDCALC::FieldHandler fieldHandler = (*fieldHandlerList)[0];
+        fieldId = fieldHandler.id;
+      }
 
     MEDCALC::FieldHandler* fieldHandler = MEDFactoryClient::getDataManager()->getFieldHandler(fieldId);
     if (! fieldHandler) {