Salome HOME
Merge 'abn/V8_1_fix' branch into V8_1_BR.
[modules/med.git] / src / MEDCalc / cmp / MEDPresentationMeshView.cxx
index ff23a68b895f36fb317099fd548d5794bc4c51dc..d68454c3b6374a1005f349e3751c78119a1c257c 100644 (file)
@@ -18,6 +18,7 @@
 //
 
 #include "MEDPresentationMeshView.hxx"
+#include "MEDFactoryClient.hxx"
 
 #include <SALOME_KernelServices.hxx>
 #undef LOG  // should be fixed in KERNEL - double definition
@@ -29,17 +30,29 @@ const std::string MEDPresentationMeshView::TYPE_NAME = "MEDPresentationMeshView"
 const std::string MEDPresentationMeshView::PROP_MESH_MODE = "meshMode";
 
 MEDPresentationMeshView::MEDPresentationMeshView(const MEDCALC::MeshViewParameters& params,
-                                               const MEDCALC::MEDPresentationViewMode viewMode) :
+                                               const MEDCALC::ViewModeType viewMode) :
         // Cheating a bit here - a mesh view doesn't need a color map or a range:
-        MEDPresentation(params.fieldHandlerId, TYPE_NAME, viewMode, MEDCALC::COLOR_MAP_DEFAULT,
+        MEDPresentation(params.meshHandlerId, TYPE_NAME, viewMode, MEDCALC::COLOR_MAP_DEFAULT,
                         MEDCALC::SCALAR_BAR_RANGE_DEFAULT),
         _params(params)
 {
   setIntProperty(MEDPresentationMeshView::PROP_MESH_MODE, params.mode);
 }
 
-std::string
-MEDPresentationMeshView::getMeshViewCommand() const
+void
+MEDPresentationMeshView::initFieldMeshInfos()
+{
+  MEDCALC::MEDDataManager_ptr dataManager(MEDFactoryClient::getDataManager());
+  MEDCALC::MeshHandler* meshHandler = dataManager->getMeshHandler(_handlerId);
+  MEDCALC::DatasourceHandler* dataSHandler = dataManager->getDatasourceHandlerFromID(meshHandler->sourceid);
+
+  extractFileName(std::string(dataSHandler->uri));
+
+  _meshName = meshHandler->name;
+}
+
+void
+MEDPresentationMeshView::representationType()
 {
   std::ostringstream oss1;
 
@@ -59,8 +72,7 @@ MEDPresentationMeshView::getMeshViewCommand() const
       STDLOG(mes);
       throw KERNEL::createSalomeException(mes);
   }
-
-  return oss1.str();
+  pushAndExecPyLine(oss1.str());
 }
 
 void
@@ -70,33 +82,36 @@ MEDPresentationMeshView::internalGeneratePipeline()
 
   MEDPyLockWrapper lock;
 
-  std::ostringstream oss;
-  std::string view(getRenderViewVar());
+  createSource();
+  setOrCreateRenderView();
 
-  oss << _srcObjVar << " = pvs.MEDReader(FileName='" << _fileName << "');";
-  pushAndExecPyLine(oss.str()); oss.str("");
-  pushAndExecPyLine( getRenderViewCommand() ); // instanciate __viewXXX
+  std::ostringstream oss;
   oss << _objVar << " = " << _srcObjVar << ";";
   pushAndExecPyLine(oss.str()); oss.str("");
-  oss << _dispVar << " = pvs.Show(" << _objVar << ", " << view << ");";
-  pushAndExecPyLine(oss.str()); oss.str("");
-  pushAndExecPyLine(getMeshViewCommand());
-  pushAndExecPyLine(getResetCameraCommand());
-  pushAndExecPyLine("pvs.Render();");
+
+  recreateViewSetup();
+}
+
+void
+MEDPresentationMeshView::recreateViewSetup()
+{
+  showObject();
+  representationType();
+  resetCameraAndRender();
 }
 
 void
 MEDPresentationMeshView::updatePipeline(const MEDCALC::MeshViewParameters& params)
 {
-  if (params.fieldHandlerId != _params.fieldHandlerId)
-    throw KERNEL::createSalomeException("Unexpected updatePipeline error! Mismatching fieldHandlerId!");
+  if (params.meshHandlerId != _params.meshHandlerId)
+    throw KERNEL::createSalomeException("Unexpected updatePipeline error! Mismatching meshHandlerId!");
 
   if (params.mode != _params.mode)
     updateMeshMode(params.mode);
 }
 
 void
-MEDPresentationMeshView::updateMeshMode(const MEDCALC::MEDPresentationMeshMode mode)
+MEDPresentationMeshView::updateMeshMode(const MEDCALC::MeshModeType mode)
 {
   _params.mode = mode;
 
@@ -106,8 +121,7 @@ MEDPresentationMeshView::updateMeshMode(const MEDCALC::MEDPresentationMeshMode m
   // Update the pipeline:
   {
     MEDPyLockWrapper lock;
-    std::string cmd = getMeshViewCommand();
-    pushAndExecPyLine(cmd);
+    representationType();
     pushAndExecPyLine("pvs.Render();");
   }
 }