}
}
+//! For internal use only! Undo/Redo are not used here.
+bool CurveCreator_Curve::moveSectionInternal(const int theISection,
+ const int theNewIndex)
+{
+ bool res = false;
+ if (theISection != theNewIndex) {
+ CurveCreator_Section *aSection = mySections.at(theISection);
+
+ // Remove section
+ CurveCreator::Sections::iterator anIter = mySections.begin() + theISection;
+
+ mySections.erase(anIter);
+
+ // Insert section.
+ anIter = mySections.begin() + theNewIndex;
+ mySections.insert(anIter, aSection);
+ res = true;
+ }
+ return res;
+}
+
+//=======================================================================
+// function: moveSection
+// purpose:
+//=======================================================================
+bool CurveCreator_Curve::moveSection(const int theISection,
+ const int theNewIndex)
+{
+ bool res = false;
+ // Set the difference.
+ startOperation();
+ if (addEmptyDiff()) {
+ myListDiffs.back().init(this, CurveCreator_Operation::MoveSection,
+ theISection, theNewIndex);
+ }
+
+ // Update the curve.
+ res = moveSectionInternal(theISection, theNewIndex);
+ finishOperation();
+ return res;
+}
+
/************ Implementation of INTERFACE methods ************/
/***********************************************/
ListAISObjects constructSection( int theISection ) const;
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool moveSectionInternal(const int theISection,
+ const int theNewIndex);
+ //! Move section to new position in list
+ virtual bool moveSection(const int theISection,
+ const int theNewIndex);
+
protected:
/** This method updates all undo/redo information required to be updated
* after curve modification operation. It returns false if undo/redo
case CurveCreator_Operation::SetClosed:
theCurve->setClosedInternal((pInt[0] != 0), pInt[1]);
break;
+ case CurveCreator_Operation::MoveSection:
+ theCurve->moveSectionInternal(pInt[0], pInt[1]);
+ break;
case CurveCreator_Operation::Join:
if (myPData == NULL) {
theCurve->joinInternal();