bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
QString& theErrorMsg )
{
- HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
+ HYDROGUI_PolylineDlg* aPanel = ::qobject_cast<HYDROGUI_PolylineDlg*>( inputPanel() );
+ if ( !aPanel )
+ return false;
+
+ QString aPolylineName = aPanel->getPolylineName().simplified();
+ if ( aPolylineName.isEmpty() )
+ {
+ theErrorMsg = tr( "INCORRECT_OBJECT_NAME" );
+ return false;
+ }
+
+ if( !myIsEdit || ( !myEditedObject.IsNull() && myEditedObject->GetName() != aPolylineName ) )
+ {
+ // check that there are no other objects with the same name in the document
+ Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::FindObjectByName( module(), aPolylineName );
+ if( !anObject.IsNull() )
+ {
+ theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( aPolylineName );
+ return false;
+ }
+ }
- int aStudyId = module()->getStudyId();
- bool aHasDoc = HYDROData_Document::HasDocument(aStudyId);
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( aStudyId );
- if( aDocument.IsNull() )
+ if ( myCurve->getNbSections() <= 0 )
+ {
+ theErrorMsg = tr( "EMPTY_POLYLINE_DATA" );
return false;
+ }
Handle(HYDROData_PolylineXY) aPolylineObj;
if( myIsEdit )
aPolylineObj = myEditedObject;
aPolylineObj->RemoveSections();
}
- else{
- aPolylineObj = Handle(HYDROData_PolylineXY)::DownCast( aDocument->CreateObject( KIND_POLYLINEXY ) );
-
- //double aZValue = double( ++ZValueIncrement ) * 1e-2; // empiric value, to be revised
- //aPolylineObj->SetZValue( aZValue );
+ else
+ {
+ aPolylineObj = Handle(HYDROData_PolylineXY)::DownCast( doc()->CreateObject( KIND_POLYLINEXY ) );
}
if( aPolylineObj.IsNull() )
return false;
- QString aPolylineName = aPanel->getPolylineName();
- aPolylineObj->SetName(aPolylineName);
+ aPolylineObj->SetName( aPolylineName );
for ( int i = 0 ; i < myCurve->getNbSections() ; i++ )
{
// 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;
CurveCreator_Displayer* aDisplayer = myCurve->getDisplayer();
if( !aDisplayer )
return;
- QList<int> aSelSections = aPanel->getSelectedSections();
- for( int i = 0 ; i < myCurve->getNbSections() ; i++ ){
- bool aIsHl = false;
- if( aSelSections.contains(i) ){
- aDisplayer->highlight( myCurve->constructSection(i), aIsHl );
- }
- }
+ //QList<int> aSelSections = aPanel->getSelectedSections();
+ bool aIsHl = false;
+ //if( aSelSections.contains(i) ){
+ aDisplayer->highlight( myCurve->constructWire(), aIsHl );
+ //}
}
void HYDROGUI_PolylineOp::displayPreview()