]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Protection from creation ampty profiles and polylines (Bug #143).
authoradv <adv@opencascade.com>
Wed, 4 Dec 2013 07:43:32 +0000 (07:43 +0000)
committeradv <adv@opencascade.com>
Wed, 4 Dec 2013 07:43:32 +0000 (07:43 +0000)
src/HYDROGUI/HYDROGUI_PolylineOp.cxx
src/HYDROGUI/HYDROGUI_ProfileOp.cxx
src/HYDROGUI/resources/HYDROGUI_msg_en.ts

index 1a95430469bd6e52ae0e1a95289e2118a77bbfc5..7ad2b2f6c9c746fa22d722e042fcd7bdca8342ed 100755 (executable)
@@ -194,6 +194,12 @@ bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
     }
   }
 
+  if ( myCurve->getNbSections() <= 0 )
+  {
+    theErrorMsg = tr( "EMPTY_POLYLINE_DATA" );
+    return false;
+  }
+
   Handle(HYDROData_PolylineXY) aPolylineObj;
   if( myIsEdit )
   {
@@ -208,7 +214,7 @@ bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
   if( aPolylineObj.IsNull() )
     return false;
 
-  aPolylineObj->SetName(aPolylineName);
+  aPolylineObj->SetName( aPolylineName );
 
   for ( int i = 0 ; i < myCurve->getNbSections() ; i++ )
   {
@@ -225,6 +231,13 @@ bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
 
     // Add the points fro section
     CurveCreator::Coordinates aCurveCoords = myCurve->getPoints( i );
+
+    if ( aCurveCoords.size() <= 2 )
+    {
+      theErrorMsg = tr( "NUMBER_OF_SECTION_POINTS_INCORRECT" );
+      return false;
+    }
+
     for ( int k = 0 ; k + 1 < aCurveCoords.size() ; k++ )
     {
       HYDROData_PolylineXY::Point aSectPoint;
index efe8572c2f7ac80496e8b6914cea411413dcbaf5..de66285269f83ba04f9ae2a35b6525673498fd6c 100644 (file)
@@ -182,6 +182,12 @@ bool HYDROGUI_ProfileOp::processApply( int& theUpdateFlags,
   HYDROData_ProfileUZ::PointsList aProfileParamPoints;
 
   CurveCreator::Coordinates aCurveCoords = myProfile->getPoints( 0 );
+  if ( aCurveCoords.size() <= 2 )
+  {
+    theErrorMsg = tr( "NUMBER_OF_PROFILE_POINTS_INCORRECT" );
+    return false;
+  }
+
   for ( int k = 0 ; k + 1 < aCurveCoords.size() ; k++ )
   {
     HYDROData_ProfileUZ::Point aProfileParamPoint;
index 0f4dd7e08276070fe3c10efe97c93218b48984cf..5999f7ef165d225dc0d2c69f8d9966ac0de0b750 100644 (file)
@@ -1092,6 +1092,14 @@ file cannot be correctly imported for a Bathymetry definition.</translation>
       <source>EDIT_POLYLINE</source>
       <translation>Edit polyline</translation>
     </message>
+    <message>
+      <source>EMPTY_POLYLINE_DATA</source>
+      <translation>No one section is created for polyline, should be at least one.</translation>
+    </message>
+    <message>
+      <source>NUMBER_OF_SECTION_POINTS_INCORRECT</source>
+      <translation>Number of points in each polyline section should not be less than 2.</translation>
+    </message>
   </context>
 
   <context>
@@ -1116,6 +1124,10 @@ file cannot be correctly imported for a Bathymetry definition.</translation>
       <source>EDIT_PROFILE</source>
       <translation>Edit profile</translation>
     </message>
+    <message>
+      <source>NUMBER_OF_PROFILE_POINTS_INCORRECT</source>
+      <translation>Number of profile points should not be less than 2.</translation>
+    </message>
   </context>
 
   <context>