void Route::Reverse( bool bRenamePoints ) { RebuildGUIDList(); // ensure the GUID list is intact and good // Reverse the GUID list wxArrayString ArrayTemp; int ncount = RoutePointGUIDList.GetCount(); for( int i = 0; i < ncount; i++ ) ArrayTemp.Add( RoutePointGUIDList[ncount - 1 - i] ); RoutePointGUIDList = ArrayTemp; pRoutePointList->DeleteContents( false ); pRoutePointList->Clear(); m_nPoints = 0; AssembleRoute(); // Rebuild the route points from the GUID list if( bRenamePoints ) RenameRoutePoints(); // Switch start/end strings. anders, 2010-01-29 wxString tmp = m_RouteStartString; m_RouteStartString = m_RouteEndString; m_RouteEndString = tmp; }
void Route::DeletePoint( RoutePoint *rp, bool bRenamePoints ) { // n.b. must delete Selectables and update config before deleting the point if( rp->m_bIsInLayer ) return; pSelect->DeleteAllSelectableRoutePoints( this ); pSelect->DeleteAllSelectableRouteSegments( this ); pConfig->DeleteWayPoint( rp ); pRoutePointList->DeleteObject( rp ); if( ( rp->m_GUID.Len() ) && ( wxNOT_FOUND != RoutePointGUIDList.Index( rp->m_GUID ) ) ) RoutePointGUIDList.Remove( rp->m_GUID ); delete rp; m_nPoints -= 1; if( bRenamePoints ) RenameRoutePoints(); if( m_nPoints > 1 ) { pSelect->AddAllSelectableRouteSegments( this ); pSelect->AddAllSelectableRoutePoints( this ); pConfig->UpdateRoute( this ); RebuildGUIDList(); // ensure the GUID list is intact and good CalculateBBox(); UpdateSegmentDistances(); } }
void EBL::RemovePoint( ODPoint *op, bool bRenamePoints ) { g_pODSelect->DeleteAllSelectableODPoints( this ); g_pODSelect->DeleteAllSelectablePathSegments( this ); m_pODPointList->DeleteObject( op ); if( wxNOT_FOUND != ODPointGUIDList.Index( op->m_GUID ) ) ODPointGUIDList.Remove( op->m_GUID ); // check all other routes to see if this point appears in any other route ODPath *pcontainer_path = g_pPathMan->FindPathContainingODPoint( op ); if( pcontainer_path == NULL ) { op->m_bIsInPath = false; op->m_bDynamicName = false; op->m_bIsolatedMark = true; if(op == g_ocpn_draw_pi->m_pEBLBoatPoint) g_ocpn_draw_pi->m_pEBLBoatPoint = NULL; this->DeletePoint( op ); if(op == g_ocpn_draw_pi->m_pEBLBoatPoint) g_ocpn_draw_pi->m_pEBLBoatPoint = NULL; RebuildGUIDList(); } else m_nPoints -= 1; }
void Route::RemovePoint( RoutePoint *rp, bool bRenamePoints ) { if( rp->m_bIsActive && this->IsActive() ) //FS#348 g_pRouteMan->DeactivateRoute(); pSelect->DeleteAllSelectableRoutePoints( this ); pSelect->DeleteAllSelectableRouteSegments( this ); pRoutePointList->DeleteObject( rp ); if( wxNOT_FOUND != RoutePointGUIDList.Index( rp->m_GUID ) ) RoutePointGUIDList.Remove( rp->m_GUID ); m_nPoints -= 1; // check all other routes to see if this point appears in any other route Route *pcontainer_route = g_pRouteMan->FindRouteContainingWaypoint( rp ); if( pcontainer_route == NULL ) { rp->m_bIsInRoute = false; // Take this point out of this (and only) route rp->m_bDynamicName = false; rp->m_bIsolatedMark = true; // This has become an isolated mark } if( bRenamePoints ) RenameRoutePoints(); // if ( m_nPoints > 1 ) { pSelect->AddAllSelectableRouteSegments( this ); pSelect->AddAllSelectableRoutePoints( this ); pConfig->UpdateRoute( this ); RebuildGUIDList(); // ensure the GUID list is intact and good CalculateBBox(); UpdateSegmentDistances(); } }