Salome HOME
refs #567: add "POLYLINES" partition and modified icon for Land Cover object.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Tool.cxx
index 568ffb1c18603d2d8860f7961dfbf5123e1396b2..c4e6b90b58cd43a80c3ec6fd3cc517c42edf1da4 100644 (file)
@@ -28,7 +28,9 @@
 #include <HYDROData_ImmersibleZone.h>
 #include <HYDROData_Tool.h>
 #include <HYDROData_Profile.h>
+#include <HYDROData_LandCover.h>
 
+#include <GeometryGUI.h>
 #include <GEOMBase.h>
 
 #include <GraphicsView_Viewer.h>
@@ -208,7 +210,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 +228,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
 #ifdef DEB_GROUPS
          || anObjectKind == KIND_SHAPES_GROUP ||
          anObjectKind == KIND_SPLITTED_GROUP
@@ -362,6 +364,23 @@ HYDROData_SequenceOfObjects HYDROGUI_Tool::GetGeometryObjects(
   return aResSeq;
 }
 
+HYDROData_SequenceOfObjects HYDROGUI_Tool::GetLandCovers( HYDROGUI_Module* theModule )
+{
+  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+
+  HYDROData_SequenceOfObjects aResSeq;
+
+  HYDROData_Iterator anIter( aDocument );
+  for ( ; anIter.More(); anIter.Next() )
+  {
+    Handle(HYDROData_Entity) anObj = anIter.Current();
+    if ( !anObj.IsNull() && anObj->IsKind( STANDARD_TYPE(HYDROData_LandCover) ))
+      aResSeq.Append( anObj );
+  }
+  
+  return aResSeq;
+}
+
 ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule )
 {
   HYDROGUI_DataModel* aModel = theModule->getDataModel();
@@ -773,3 +792,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 );
+    }
+  }
+}