Salome HOME
patch for correct immersible zone color in preview
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Tool.cxx
index 568ffb1c18603d2d8860f7961dfbf5123e1396b2..6cc4ae17009cd18d049be5fbea233d8d5a6b88b0 100644 (file)
@@ -29,6 +29,7 @@
 #include <HYDROData_Tool.h>
 #include <HYDROData_Profile.h>
 
+#include <GeometryGUI.h>
 #include <GEOMBase.h>
 
 #include <GraphicsView_Viewer.h>
@@ -183,7 +184,7 @@ QString HYDROGUI_Tool::GetTempDir( const bool theToCreate )
 #ifdef WNT
     tmpdir = "C:\\";
 #else
-    tmpdir = "/tmp";
+    tmpdir = strdup( "/tmp" );
 #endif
   }
   aRes = tmpdir;
@@ -208,7 +209,6 @@ void HYDROGUI_Tool::SetActiveViewManager( HYDROGUI_Module* theModule,
 bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& theObject,
                                              const QString&                  theViewerType )
 {
-  
   if ( theObject.IsNull() )
     return false;
 
@@ -227,7 +227,8 @@ bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& the
          anObjectKind == KIND_CHANNEL ||
          anObjectKind == KIND_DIGUE ||
          anObjectKind == KIND_DUMMY_3D || 
-         anObjectKind == KIND_BATHYMETRY
+         anObjectKind == KIND_BATHYMETRY ||
+         anObjectKind == KIND_LAND_COVER_MAP
 #ifdef DEB_GROUPS
          || anObjectKind == KIND_SHAPES_GROUP ||
          anObjectKind == KIND_SPLITTED_GROUP
@@ -661,7 +662,7 @@ QColor HYDROGUI_Tool::GenerateFillingColor( HYDROGUI_Module*   theModule,
 QColor HYDROGUI_Tool::GenerateFillingColor( const Handle(HYDROData_Document)& theDoc,
                                             const QStringList&                theZoneNames )
 {
-  QColor aFillingColor( HYDROData_ImmersibleZone::DefaultFillingColor() );
+  QColor aFillingColor( Qt::darkBlue );
 
   int aCounter = 0;
   int aR = 0, aG = 0, aB = 0;
@@ -773,3 +774,39 @@ Handle(Image_PixMap) HYDROGUI_Tool::Pixmap( const QImage& theImage )
 
     return pix;
 }
+
+void HYDROGUI_Tool::DeleteGeomObjects( HYDROGUI_Module* theModule, const QStringList& theEntries )
+{
+  QStringList anEntryList;
+
+  // Get active SalomeApp_Study
+  SalomeApp_Study* aStudy = NULL;
+  if ( theModule && theModule->getApp() ) {
+    aStudy = dynamic_cast<SalomeApp_Study*>( theModule->getApp()->activeStudy() );
+  }
+  if ( !aStudy ) {
+    return;
+  }
+  // Get GEOM engine
+  GEOM::GEOM_Gen_var aGeomEngine = GeometryGUI::GetGeomGen();
+  if ( aGeomEngine->_is_nil() ) {
+    return;
+  }
+  
+  // Delete GEOM objects
+  _PTR(StudyBuilder) aStudyBuilder( aStudy->studyDS()->NewBuilder() );
+  foreach ( const QString anEntry, theEntries ) {
+    _PTR(SObject) aSObject( aStudy->studyDS()->FindObjectID( qPrintable(anEntry) ) );
+    if ( aSObject ) {
+      GEOM::GEOM_Object_var aGeomObj = 
+        GEOMBase::GetObjectFromIOR( aSObject->GetIOR().c_str() );
+
+      if ( !aGeomObj->_is_nil() ) {
+        aGeomEngine->RemoveObject( aGeomObj );
+      }
+
+      aStudyBuilder->RemoveObject( aSObject );
+    }
+  }
+}