Salome HOME
Merge branch 'BR_v14_rc' into BR_quadtree
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_LandCoverOp.cxx
index 5240b42d86bdcbdbcd2879078db995073d854b55..9cf2567e4ea5aa58380c420f8a81de0adfd1106b 100644 (file)
@@ -189,17 +189,25 @@ bool HYDROGUI_LandCoverOp::processApply( int& theUpdateFlags,
     }
   }
 
+  if ( aZonePolylines.IsEmpty() )
+  {
+    theErrorMsg = tr( "POLYLINES_NOT_DEFINED" );
+    return false;
+  }
+
   QString aSelectedStricklerType = aPanel->getSelectedAdditionalParamName();
   
-  // TODO: Generate TopoDS_Shape based on the set of polylines, implement generateTopShape data model method
-  /*
-  if ( HYDROData_LandCover::generateTopShape( aZonePolylines ).IsNull() )
+  TCollection_AsciiString anError;
+  if ( HYDROData_LandCover::buildShape( aZonePolylines, anError ).IsNull() )
   {
-    theErrorMsg = tr( "ZONE_OBJECT_CANNOT_BE_CREATED" );
+    if ( !anError.IsEmpty() ) {
+      theErrorMsg = HYDROGUI_Tool::ToQString( anError );
+    } else {
+      theErrorMsg = tr( "LAND_COVER_OBJECT_CANNOT_BE_CREATED" );
+    }
     return false;
   }
-  */
-
+  
   Handle(HYDROData_LandCover) aZoneObj = myIsEdit ? myEditedObject :
     Handle(HYDROData_LandCover)::DownCast( doc()->CreateObject( KIND_LAND_COVER ) );
 
@@ -239,7 +247,7 @@ void HYDROGUI_LandCoverOp::onCreatePreview( const QStringList& thePolylineNames
 
   QApplication::setOverrideCursor( Qt::WaitCursor );  
 
-  QList<Handle(HYDROData_PolylineXY)> aZonePolylines;
+  HYDROData_SequenceOfObjects aZonePolylines;
   QStringList::const_iterator anIt = thePolylineNames.begin(), aLast = thePolylineNames.end();
   for( ; anIt!=aLast; anIt++ )
   {
@@ -247,14 +255,11 @@ void HYDROGUI_LandCoverOp::onCreatePreview( const QStringList& thePolylineNames
     Handle(HYDROData_PolylineXY) aPolyline = Handle(HYDROData_PolylineXY)::DownCast(
       HYDROGUI_Tool::FindObjectByName( module(), aPolylineName, KIND_POLYLINEXY ) );
     if ( !aPolyline.IsNull() )
-      aZonePolylines.append( aPolyline );
+      aZonePolylines.Append( aPolyline );
   }
-
-  // TODO: Generate TopoDS_Shape based on the set of polylines, implement generateTopShape data model method  
-  TopoDS_Shape aZoneShape;/* = HYDROData_LandCover::generateTopShape( aZonePolylines );
-  if( aZoneShape.IsNull() )
-    printErrorMessage( tr( "ZONE_OBJECT_CANNOT_BE_CREATED" ) );
-  */
+  
+  TCollection_AsciiString anError;
+  TopoDS_Shape aZoneShape = HYDROData_LandCover::buildShape( aZonePolylines, anError );  
 
   LightApp_Application* anApp = module()->getApp();
   if ( !getPreviewManager() )
@@ -283,10 +288,8 @@ void HYDROGUI_LandCoverOp::onCreatePreview( const QStringList& thePolylineNames
     myPreviewPrs->setFillingColor( aFillingColor, false, false );
     myPreviewPrs->setBorderColor( aBorderColor, false, false );
 
-    TopoDS_Face aFace;
     if( !aZoneShape.IsNull() )
-      aFace = TopoDS::Face( aZoneShape );
-    myPreviewPrs->setFace( aFace, true, true, "" );
+      myPreviewPrs->setShape( aZoneShape );
   }
 
   QApplication::restoreOverrideCursor();
@@ -313,8 +316,11 @@ void HYDROGUI_LandCoverOp::onAddPolylines()
       aSelectedPolylines.append( HYDROGUI_ListModel::Object2Visible( aPolyXY, true ) );
   }
   
-  aPanel->includePolylines( aSelectedPolylines );
-  // TODO: create preview of included polylines
+  if ( aPanel->includePolylines( aSelectedPolylines ) )
+  {
+    closePreview();
+    onCreatePreview( aPanel->getPolylineNames() );
+  }  
 }
 
 void HYDROGUI_LandCoverOp::onRemovePolylines()
@@ -340,7 +346,12 @@ void HYDROGUI_LandCoverOp::onRemovePolylines()
   }
 
   module()->update( UF_OCCViewer );
-  aPanel->excludePolylines( aSelectedPolylines );
+  
+  if ( aPanel->excludePolylines( aSelectedPolylines ) )
+  {
+    closePreview();
+    onCreatePreview( aPanel->getPolylineNames() );
+  }
 }
 
 void HYDROGUI_LandCoverOp::closePreview()