onZoneDefChanged();
}
-void HYDROGUI_LandCoverDlg::includePolylines( const HYDROGUI_ListModel::Object2VisibleList& theSelectedPolylines )
+bool HYDROGUI_LandCoverDlg::includePolylines( const HYDROGUI_ListModel::Object2VisibleList& theSelectedPolylines )
{
QStringList anIncludedPolylinesNames = myPolylines->getAllNames();
+ bool aSetOfPolylinesChanged = false;
foreach ( const HYDROGUI_ListModel::Object2Visible& aSelectedPolyline, theSelectedPolylines )
{
if ( !anIncludedPolylinesNames.contains( aSelectedPolyline.first->GetName() ) )
+ {
myPolylines->addObject( aSelectedPolyline );
+ aSetOfPolylinesChanged = true;
+ }
}
myPolylines->setOrderingEnabled( myPolylines->getObjects().count() > 1 );
+
+ return aSetOfPolylinesChanged;
}
-void HYDROGUI_LandCoverDlg::excludePolylines( const HYDROGUI_ListModel::Object2VisibleList& theSelectedPolylines )
+bool HYDROGUI_LandCoverDlg::excludePolylines( const HYDROGUI_ListModel::Object2VisibleList& theSelectedPolylines )
{
+ bool aSetOfPolylinesChanged = !theSelectedPolylines.isEmpty();
+
foreach ( const HYDROGUI_ListModel::Object2Visible& aSelectedPolyline, theSelectedPolylines )
myPolylines->removeObjectByName( aSelectedPolyline.first->GetName() );
myPolylines->setOrderingEnabled( myPolylines->getObjects().count() > 1 );
+
+ return aSetOfPolylinesChanged;
}
QStringList HYDROGUI_LandCoverDlg::getPolylineNames() const
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++ )
{
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() )
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();
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()
}
module()->update( UF_OCCViewer );
- aPanel->excludePolylines( aSelectedPolylines );
+
+ if ( aPanel->excludePolylines( aSelectedPolylines ) )
+ {
+ closePreview();
+ onCreatePreview( aPanel->getPolylineNames() );
+ }
}
void HYDROGUI_LandCoverOp::closePreview()