if ( removeEnabled() )
anEnabledAct << REMOVE_ID;
QList<int> aSelSections = mySectionView->getSelectedSections();
- QList< QPair< int, int > > aSelPoints = mySectionView->getSelectedPoints();
CurveCreator_TreeView::SelectionType aSelType = mySectionView->getSelectionType();
switch( aSelType ){
case CurveCreator_TreeView::ST_NOSEL:{
if( aSelSection.size() > 0 ){
mySection = aSelSection[0];
}
- else{
- QList< QPair<int,int> > aSelPoints = mySectionView->getSelectedPoints();
- if( aSelPoints.size() > 0 ){
- mySection = aSelPoints[0].first;
- myPointNum = aSelPoints[0].second + 1;
- }
- }
// emit subOperationStarted( myNewPointEditor );
}
}
stopActionMode();
- int aMainSect = aSections[0];
- int aMainSectSize = myCurve->getNbPoints(aMainSect);
- for( int i = 1 ; i < aSections.size() ; i++ ){
- int aSectNum = aSections[i] - (i-1);
- myCurve->join( aMainSect, aSectNum );
- mySectionView->sectionsRemoved( aSectNum );
+ std::list<int> aSectionsToJoin;
+ for( int i = 0; i < aSections.size() ; i++ ){
+ aSectionsToJoin.push_back( aSections[i] );
+ }
+ //int aMainSect = aSectionsToJoin.front();
+ //int aMainSectSize = myCurve->getNbPoints(aMainSect);
+ if ( myCurve->join( aSectionsToJoin ) )
+ {
+ std::list<int>::const_iterator anIt = aSectionsToJoin.begin(),
+ aLast = aSectionsToJoin.end();
+ // the first section should be skipped. It is not removed, but is modified
+ anIt++;
+ for ( ; anIt != aLast; anIt++ )
+ mySectionView->sectionsRemoved( *anIt );
}
+
+ /* The update for the points of the main section
int aNewSectSize = myCurve->getNbPoints(aMainSect);
if( aNewSectSize != aMainSectSize )
- mySectionView->pointsAdded( aMainSect, aMainSectSize, aNewSectSize-aMainSectSize );
+ mySectionView->pointsAdded( aMainSect, aMainSectSize, aNewSectSize-aMainSectSize );*/
updateUndoRedo();
}
if( !myCurve )
return;
stopActionMode();
- myCurve->join( 0, myCurve->getNbSections() );
+
+ std::list<int> aSectionsToJoin;
+ for( int i = 0, aNb = myCurve->getNbSections(); i < aNb ; i++ ){
+ aSectionsToJoin.push_back( i );
+ }
+ bool aRes = myCurve->join( aSectionsToJoin );
+
mySectionView->reset();
updateActionsStates();
updateUndoRedo();
return mySectionView->getSelectedSections();
}
-QList< QPair< int, int > > CurveCreator_Widget::getSelectedPoints()
-{
- return mySectionView->getSelectedPoints();
-}
-
/**
* According to the widget state, performs the remove action
*/
if ( theEvent->button() != Qt::LeftButton )
return;
+ myPressedX = theEvent->x();
+ myPressedY = theEvent->y();
+
switch( getActionMode() ) {
case ModificationMode: {
//store initial cursor position for Drag&Drop
}
}
else // check whether the segment is clicked an a new point should be added to the segment
- insertPointToSelectedSegment( theEvent->pos().x(), theEvent->pos().y() );
+ {
+ int aReleasedX = theEvent->x();
+ int aReleasedY = theEvent->y();
+ if ( myPressedX == aReleasedX && myPressedY == aReleasedY )
+ insertPointToSelectedSegment( aReleasedX, aReleasedY );
+ }
// updates the input panel table to show the selected point coordinates
updateLocalPointView();
+ updateUndoRedo();
}
/**
{
stopActionMode();
- QList< QPair<int,int> > aSelPoints = mySectionView->getSelectedPoints();
- int aCurrSect=-1;
- int aRemoveCnt = 0;
- for( int i = 0 ; i < aSelPoints.size() ; i++ ){
- if( aCurrSect != aSelPoints[i].first ){
- aRemoveCnt = 0;
- aCurrSect = aSelPoints[i].first;
- }
- int aPntIndx = aSelPoints[i].second - aRemoveCnt;
- myCurve->removePoint( aCurrSect, aPntIndx );
- mySectionView->pointsRemoved( aCurrSect, aPntIndx );
- aRemoveCnt++;
- }
QList<int> aSections = mySectionView->getSelectedSections();
for( int i = 0 ; i < aSections.size() ; i++ ){
int aSectNum = aSections[i] - (i);
CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aPoints1.begin(),
aLast = aPoints1.end();
int aSectionId = -1;
+ // find the indices of the neighbour point
// there can be a case when a new point is added into two sections
int aPoint1Id = -1, aPoint2Id = -1;
for ( ; anIt != aLast && aSectionId < 0; anIt++ ) {