]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
porting to sketcher in GEOM
authorasl <asl@opencascade.com>
Wed, 10 Sep 2014 10:16:44 +0000 (10:16 +0000)
committerasl <asl@opencascade.com>
Wed, 10 Sep 2014 10:16:44 +0000 (10:16 +0000)
42 files changed:
CMakeLists.txt
src/HYDROCurveCreator/CMakeLists.txt [deleted file]
src/HYDROCurveCreator/CurveCreator.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Curve.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Curve.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Diff.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Diff.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Displayer.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Displayer.h [deleted file]
src/HYDROCurveCreator/CurveCreator_ICurve.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Listener.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Macro.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_NewSectionDlg.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_NewSectionDlg.h [deleted file]
src/HYDROCurveCreator/CurveCreator_Operation.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Operation.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_PosPoint.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Profile.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Profile.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Section.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_TableView.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_TableView.h [deleted file]
src/HYDROCurveCreator/CurveCreator_TreeView.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_TreeView.h [deleted file]
src/HYDROCurveCreator/CurveCreator_Utils.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Utils.h [deleted file]
src/HYDROCurveCreator/CurveCreator_UtilsICurve.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_UtilsICurve.hxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Widget.cxx [deleted file]
src/HYDROCurveCreator/CurveCreator_Widget.h [deleted file]
src/HYDROCurveCreator/OCCViewer_Utilities.cxx [deleted file]
src/HYDROCurveCreator/OCCViewer_Utilities.h [deleted file]
src/HYDROGUI/CMakeLists.txt
src/HYDROGUI/HYDROGUI_CurveCreatorProfile.cxx [new file with mode: 0644]
src/HYDROGUI/HYDROGUI_CurveCreatorProfile.h [new file with mode: 0644]
src/HYDROGUI/HYDROGUI_Displayer.cxx
src/HYDROGUI/HYDROGUI_GeoreferencementDlg.cxx
src/HYDROGUI/HYDROGUI_Module.cxx
src/HYDROGUI/HYDROGUI_PolylineOp.cxx
src/HYDROGUI/HYDROGUI_ProfileDlg.cxx
src/HYDROGUI/HYDROGUI_ProfileOp.cxx
src/HYDROGUI/HYDROGUI_ProfileOp.h

index 132e4a90ef07326dd2740fcfcc3c0080b535cb44..a66ea3848dae70be3a5ff192c96f9419920455b5 100644 (file)
@@ -172,7 +172,6 @@ MARK_AS_ADVANCED(
 
 # Sources 
 # ========
-ADD_SUBDIRECTORY (src/HYDROCurveCreator)
 ADD_SUBDIRECTORY (src/HYDROData)
 ADD_SUBDIRECTORY (src/HYDROGUI)
 ADD_SUBDIRECTORY (src/HYDROPy)
@@ -202,7 +201,7 @@ ENDIF(SALOME_BUILD_TESTS)
 
 IF(SALOME_BUILD_GUI)
   LIST(APPEND _${PROJECT_NAME}_exposed_targets 
-    HYDROGUI HYDROCurveCreator
+    HYDROGUI 
   )
 ENDIF(SALOME_BUILD_GUI)
 
diff --git a/src/HYDROCurveCreator/CMakeLists.txt b/src/HYDROCurveCreator/CMakeLists.txt
deleted file mode 100644 (file)
index 2ff0e09..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright (C) 2012-2013  CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-IF(SALOME_BUILD_GUI)
-  INCLUDE(${QT_USE_FILE})
-ENDIF(SALOME_BUILD_GUI)
-
-# --- options ---
-
-# additional include directories
-INCLUDE_DIRECTORIES(
-  ${QT_INCLUDE_DIRS}
-  ${PTHREAD_INCLUDE_DIR}
-  ${CAS_INCLUDE_DIRS}
-  ${KERNEL_INCLUDE_DIRS}
-  ${GUI_INCLUDE_DIRS}
-  ${GEOM_INCLUDE_DIRS}
-)
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(
-  -DCURVECREATOR_EXPORTS
-  ${CAS_DEFINITIONS}
-  ${QT_DEFINITIONS}
-)
-
-# libraries to link to
-SET(_link_LIBRARIES
-  ${GEOM_GEOMUtils}
-)
-IF(SALOME_BUILD_GUI)
-  LIST(APPEND _link_LIBRARIES
-    ${GUI_qtx}
-    ${GUI_suit}
-    ${GUI_OCCViewer}
-  )
-ENDIF(SALOME_BUILD_GUI)
-
-# --- headers ---
-
-IF(SALOME_BUILD_GUI)
-  # header files / to be processed by moc
-  SET(_moc_HEADERS
-    CurveCreator_NewSectionDlg.h
-    CurveCreator_TableView.h
-    CurveCreator_TreeView.h
-#    CurveCreator_UndoOptsDlg.h
-    CurveCreator_Widget.h
-    OCCViewer_Utilities.h
-  )
-ENDIF(SALOME_BUILD_GUI)
-
-# header files / no processing
-SET(_other_HEADERS
-  CurveCreator.hxx
-  CurveCreator_Displayer.h
-  CurveCreator_Curve.hxx
-  CurveCreator_Diff.hxx
-  CurveCreator_ICurve.hxx
-  CurveCreator_Macro.hxx
-  CurveCreator_Operation.hxx
-  CurveCreator_Section.hxx
-  CurveCreator_Utils.h
-  CurveCreator_UtilsICurve.hxx
-  CurveCreator_PosPoint.hxx
-  CurveCreator_Profile.hxx
-)
-
-# header files / to install
-SET(HYDROCurveCreator_HEADERS ${_moc_HEADERS} ${_other_HEADERS})
-
-# --- sources ---
-
-IF(SALOME_BUILD_GUI)
-  # sources / moc wrappings
-  QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS})
-ENDIF(SALOME_BUILD_GUI)
-
-# sources / static
-SET(_other_SOURCES
-  CurveCreator_Displayer.cxx
-  CurveCreator_Curve.cxx
-  CurveCreator_Diff.cxx
-  CurveCreator_Operation.cxx
-  CurveCreator_Utils.cxx
-  CurveCreator_UtilsICurve.cxx
-  CurveCreator_Profile.cxx
-)
-IF(SALOME_BUILD_GUI)
-  LIST(APPEND _other_SOURCES
-    CurveCreator_NewSectionDlg.cxx
-    CurveCreator_TableView.cxx
-    CurveCreator_TreeView.cxx
-#    CurveCreator_UndoOptsDlg.cxx
-    CurveCreator_Widget.cxx
-    OCCViewer_Utilities.cxx
-  )
-ENDIF(SALOME_BUILD_GUI)
-
-# sources / to compile
-SET(HYDROCurveCreator_SOURCES ${_other_SOURCES} ${_moc_SOURCES})
-
-# --- rules ---
-
-ADD_LIBRARY(HYDROCurveCreator ${HYDROCurveCreator_SOURCES} ${HYDROCurveCreator_HEADERS})
-TARGET_LINK_LIBRARIES(HYDROCurveCreator ${_link_LIBRARIES} ${CAS_TKGeomAlgo})
-INSTALL(TARGETS HYDROCurveCreator EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
-
-INSTALL(FILES ${HYDROCurveCreator_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
-
diff --git a/src/HYDROCurveCreator/CurveCreator.hxx b/src/HYDROCurveCreator/CurveCreator.hxx
deleted file mode 100644 (file)
index 9cd7ec7..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator.hxx
-// Author:      Sergey KHROMOV
-
-#ifndef _CurveCreator_HeaderFile
-#define _CurveCreator_HeaderFile
-
-#include <deque>
-#include <map>
-#include <list>
-
-struct CurveCreator_Section;
-struct CurveCreator_PosPoint;
-
-namespace CurveCreator
-{
-  //! Points coordinates
-  typedef float TypeCoord;
-
-  /** List of coordinates in format depends on section dimension:
-   *  2D: [x1, y1,     x2, y2,     x3, y3,     ..]
-   *  3D: [x1, y1, z1, x2, y2, z2, x3, y3, z3, ..]
-   */
-  typedef std::deque<TypeCoord> Coordinates;
-
-  //! List of sections
-  typedef std::deque<CurveCreator_Section *> Sections;
-
-  // List of positioned points (points with coordinates)
-  typedef std::list<CurveCreator_PosPoint*> PosPointsList;
-  //! Map of sections with positioned points
-  typedef std::map<int,PosPointsList> SectionsMap;
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_Curve.cxx b/src/HYDROCurveCreator/CurveCreator_Curve.cxx
deleted file mode 100644 (file)
index 396c403..0000000
+++ /dev/null
@@ -1,1037 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Curve.cxx
-// Author:      Sergey KHROMOV
-
-#include "CurveCreator_Curve.hxx"
-
-#include "CurveCreator.hxx"
-#include "CurveCreator_PosPoint.hxx"
-#include "CurveCreator_Section.hxx"
-#include "CurveCreator_Displayer.h"
-#include "CurveCreator_Utils.h"
-
-#include <AIS_Shape.hxx>
-#include <AIS_InteractiveObject.hxx>
-#include <Geom_CartesianPoint.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Lin.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Wire.hxx>
-
-#include <stdio.h>
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-CurveCreator_Curve::CurveCreator_Curve( const CurveCreator::Dimension theDimension )
-: myIsLocked  (false),
-  myDimension (theDimension),
-  myDisplayer (NULL),
-  myAISShape  (NULL),
-  myNbUndos   (0),
-  myNbRedos   (0),
-  myUndoDepth (-1),
-  myOpLevel(0),
-  mySkipSorting(false)
-{
-}
-
-//=======================================================================
-// function: Destructor
-// purpose:
-//=======================================================================
-CurveCreator_Curve::~CurveCreator_Curve()
-{
-  // Delete all allocated data.
-  clear();
-}
-
-//=======================================================================
-// function: getDimension
-// purpose:
-//=======================================================================
-CurveCreator::Dimension CurveCreator_Curve::getDimension() const
-{
-  return myDimension;
-}
-
-//=======================================================================
-// function: getUniqSectionName
-// purpose: return unique section name
-//=======================================================================
-std::string CurveCreator_Curve::getUniqSectionName() const
-{
-    CurveCreator_Section* aSection;
-    for( int i = 0 ; i < 1000000 ; i++ ){
-        char aBuffer[255];
-        sprintf( aBuffer, "Section_%d", i+1 );
-        std::string aName(aBuffer);
-        int j;
-        for( j = 0 ; j < mySections.size() ; j++ ){
-            aSection = getSection( j );
-            if ( aSection && aSection->myName == aName )
-              break;
-        }
-        if( j == mySections.size() )
-            return aName;
-    }
-    return "";
-}
-
-//=======================================================================
-// function: setDisplayer
-// purpose: set curve changes Displayer
-//=======================================================================
-void CurveCreator_Curve::setDisplayer( CurveCreator_Displayer* theDisplayer )
-{
-  myDisplayer = theDisplayer;
-}
-
-//=======================================================================
-// function: getDisplayer
-// purpose: get curve changes Displayer
-//=======================================================================
-CurveCreator_Displayer* CurveCreator_Curve::getDisplayer()
-{
-  return myDisplayer;
-}
-
-//=======================================================================
-// function: removeDisplayer
-// purpose: remove the attached Displayer
-//=======================================================================
-void CurveCreator_Curve::removeDisplayer()
-{
-  myDisplayer = NULL;
-}
-
-//=======================================================================
-// function: addDiff
-// purpose:
-//=======================================================================
-bool CurveCreator_Curve::addEmptyDiff()
-{
-  bool isEnabled = false;
-
-  if (myUndoDepth != 0) {
-    // Forget all Redos after the current one.
-    if (myNbRedos > 0) {
-      myNbRedos = 0;
-      myListDiffs.erase(myCurrenPos, myListDiffs.end());
-    }
-
-    if (myUndoDepth == -1 || myNbUndos < myUndoDepth) {
-      // Increase the number of undos.
-      myNbUndos++;
-    } else {
-      // If there are too many differences, remove the first one.
-      myListDiffs.pop_front();
-    }
-
-    // Add new difference.
-    myListDiffs.push_back(CurveCreator_Diff());
-    myCurrenPos = myListDiffs.end();
-    isEnabled = true;
-  }
-
-  return isEnabled;
-}
-
-void CurveCreator_Curve::startOperation()
-{
-    myOpLevel++;
-}
-
-void CurveCreator_Curve::finishOperation()
-{
-   myOpLevel--;
-}
-
-//=======================================================================
-// function: toICoord
-// purpose:
-//=======================================================================
-int CurveCreator_Curve::toICoord(const int theIPnt) const
-{
-  return theIPnt * myDimension;
-}
-
-//=======================================================================
-// function: setUndoDepth
-// purpose:
-//=======================================================================
-void CurveCreator_Curve::setUndoDepth(const int theDepth)
-{
-  if (theDepth == 0) {
-    // Reset all undo/redo data.
-    myNbUndos = 0;
-    myNbRedos = 0;
-    myListDiffs.clear();
-    myCurrenPos = myListDiffs.end();
-    myUndoDepth = 0;
-  } else if (theDepth == -1) {
-    // There is nothing to do as the depth become unlimited.
-    myUndoDepth = -1;
-  } else if (theDepth > 0) {
-    // The new "real" depth is set.
-    if (theDepth < myNbRedos) {
-      // The new depth is less then number of redos. Remove the latest redos.
-      int aShift = (myNbRedos - theDepth);
-      ListDiff::iterator aFromPos = myListDiffs.end();
-
-      while (aShift--) {
-        aFromPos--;
-      }
-
-      myListDiffs.erase(aFromPos, myListDiffs.end());
-      myNbRedos = theDepth;
-    }
-
-    if (theDepth < myNbUndos + myNbRedos) {
-      // The new depth is less then the total number of differences.
-      // Remove the first undos.
-      int aShift = (myNbUndos + myNbRedos - theDepth);
-      ListDiff::iterator aToPos = myListDiffs.begin();
-
-      while (aShift--) {
-        aToPos++;
-      }
-
-      myListDiffs.erase(myListDiffs.begin(), aToPos);
-      myNbUndos = theDepth - myNbRedos;
-    }
-
-    myUndoDepth = theDepth;
-  }
-}
-
-//=======================================================================
-// function: getUndoDepth
-// purpose:
-//=======================================================================
-int CurveCreator_Curve::getUndoDepth() const
-{
-  return myUndoDepth;
-}
-
-void CurveCreator_Curve::getCoordinates( int theISection, int theIPoint, double& theX, double& theY, double& theZ ) const
-{
-  CurveCreator::Coordinates aCoords = getPoint( theISection, theIPoint );
-  theX = aCoords[0];
-  theY = aCoords[1];
-  theZ = 0.;
-  if( getDimension() == CurveCreator::Dim3d ){
-    theZ = aCoords[2];
-  }
-}
-
-void CurveCreator_Curve::redisplayCurve()
-{
-  if( myDisplayer ) {
-    myDisplayer->eraseAll( false );
-    myAISShape = NULL;
-
-    myDisplayer->display( getAISObject( true ), true );
-  }
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::moveSectionInternal(const int theISection,
-                                             const int theNewIndex)
-{
-  bool res = false;
-  int aMovedSectionId = theISection >= 0 ? theISection : mySections.size()-1;
-
-  if (aMovedSectionId != theNewIndex) {
-    CurveCreator_Section* aSection = getSection( aMovedSectionId );
-
-    // Remove section
-    CurveCreator::Sections::iterator anIter = mySections.begin() + aMovedSectionId;
-
-    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   ************/
-
-/***********************************************/
-/***          Undo/Redo methods              ***/
-/***********************************************/
-
-//! Get number of available undo operations
-int CurveCreator_Curve::getNbUndo() const
-{
-  return myNbUndos;
-}
-
-//! Undo previous operation
-bool CurveCreator_Curve::undo()
-{
-  bool res = false;
-  if (myNbUndos > 0) {
-    myNbUndos--;
-    myNbRedos++;
-    myCurrenPos--;
-    myCurrenPos->applyUndo(this);
-    res = true;
-  }
-  return res;
-}
-
-//! Get number of available redo operations
-int CurveCreator_Curve::getNbRedo() const
-{
-  return myNbRedos;
-}
-
-//! Redo last previously "undone" operation
-bool CurveCreator_Curve::redo()
-{
-  bool res = false;
-  if (myNbRedos > 0) {
-    myCurrenPos->applyRedo(this);
-    myCurrenPos++;
-    myNbRedos--;
-    myNbUndos++;
-    res = true;
-  }
-  return res;
-}
-
-/***********************************************/
-/***           Section methods               ***/
-/***********************************************/
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::clearInternal()
-{
-  // erase curve from the viewer
-  if( myDisplayer ) {
-    myDisplayer->eraseAll( true );
-    myAISShape = NULL;
-  }
-  // Delete all allocated data.
-  int i = 0;
-  const int aNbSections = getNbSections();
-
-  CurveCreator_Section* aSection;
-  for (; i < aNbSections; i++) {
-    aSection = getSection( i );
-    if ( aSection )
-      delete aSection;
-  }
-
-  mySections.clear();
-  
-  return true;
-}
-
-//=======================================================================
-// function: clear
-// purpose:
-//=======================================================================
-bool CurveCreator_Curve::clear()
-{
-  bool res = false;
-  startOperation();
-  // Set the difference.
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this);
-  }
-  res = clearInternal();
-  finishOperation();
-  return res;
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::joinInternal( const std::list<int>& theSections )
-{
-  bool res = false;
-  if ( theSections.empty() )
-    return res;
-
-  int anISectionMain = theSections.front();
-  CurveCreator_Section* aSectionMain = getSection( anISectionMain );
-
-  std::list <int> aSectionsToJoin = theSections;
-  aSectionsToJoin.erase( aSectionsToJoin.begin() ); // skip the main section
-  // it is important to sort and reverse the section ids in order to correctly remove them
-  aSectionsToJoin.sort();
-  aSectionsToJoin.reverse();
-
-  std::list<int>::const_iterator anIt = aSectionsToJoin.begin(), aLast = aSectionsToJoin.end();
-  CurveCreator_Section* aSection;
-  for (; anIt != aLast; anIt++) {
-    aSection = getSection( *anIt );
-    aSectionMain->myPoints.insert(aSectionMain->myPoints.end(), aSection->myPoints.begin(),
-                                  aSection->myPoints.end());
-    res = removeSectionInternal(*anIt);
-    if ( !res )
-      break;
-  }
-
-  redisplayCurve();
-  return res;
-}
-
-bool CurveCreator_Curve::join( const std::list<int>& theSections )
-{
-  bool res = false;
-
-  if ( !theSections.empty() )
-  {
-    startOperation();
-    if (addEmptyDiff())
-      myListDiffs.back().init(this, CurveCreator_Operation::Join, theSections);
-
-    res = joinInternal( theSections );
-
-    finishOperation();
-  }
-  return res;
-}
-
-//! Get number of sections
-int CurveCreator_Curve::getNbSections() const
-{
-  return mySections.size();
-}
-
-//! For internal use only! Undo/Redo are not used here.
-int CurveCreator_Curve::addSectionInternal
-        (const std::string& theName, const CurveCreator::SectionType theType,
-         const bool theIsClosed, const CurveCreator::Coordinates &thePoints)
-{
-  CurveCreator_Section *aSection = new CurveCreator_Section;
-
-  std::string aName = theName;
-  if( aName.empty() ){
-      aName = getUniqSectionName();
-  }
-  aSection->myName     = aName;
-  aSection->myType     = theType;
-  aSection->myIsClosed = theIsClosed;
-  aSection->myPoints   = thePoints;
-  mySections.push_back(aSection);
-  redisplayCurve();
-  return mySections.size()-1;
-}
-
-//=======================================================================
-// function: addSection
-// purpose: adds an empty section
-//=======================================================================
-int CurveCreator_Curve::addSection
-        (const std::string& theName, const CurveCreator::SectionType theType,
-         const bool theIsClosed)
-{
-  int resISection = -1;
-  // Set the difference.
-  startOperation();
-  CurveCreator::Coordinates aCoords; //empty list
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::AddSection,
-                            theName, aCoords, theType, theIsClosed);
-  }
-
-  resISection = addSectionInternal(theName, theType, theIsClosed, aCoords);
-
-  finishOperation();
-  return resISection;
-}
-//=======================================================================
-// function: addSection
-// purpose: adds a section with the given points
-//=======================================================================
-int CurveCreator_Curve::addSection
-        (const std::string& theName, const CurveCreator::SectionType theType,
-         const bool theIsClosed, const CurveCreator::Coordinates &thePoints)
-{
-  int resISection = -1;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::AddSection,
-                            theName, thePoints, theType, theIsClosed);
-  }
-
-  resISection = addSectionInternal(theName, theType, theIsClosed, thePoints);
-
-  finishOperation();
-  return resISection;
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::removeSectionInternal( const int theISection )
-{
-  if (theISection == -1) {
-    delete mySections.back();
-    mySections.pop_back();
-  } else {
-    CurveCreator::Sections::iterator anIterRm = mySections.begin() + theISection;
-
-    delete *anIterRm;
-    mySections.erase(anIterRm);
-  }
-  redisplayCurve();
-  return true;
-}
-  
-//! Removes the given sections.
-bool CurveCreator_Curve::removeSection( const int theISection )
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff())
-    myListDiffs.back().init(this, CurveCreator_Operation::RemoveSection, theISection);
-
-  res = removeSectionInternal( theISection );
-
-  finishOperation();
-  return res;
-}
-
-/**
- *  Get number of points in specified section or (the total number of points
- *  in Curve if theISection is equal to -1).
- */
-int CurveCreator_Curve::getNbPoints( const int theISection ) const
-{
-  int aNbCoords = 0;
-
-  CurveCreator_Section* aSection;
-  if (theISection == -1) {
-    int i = 0;
-    const int aNbSections = getNbSections();
-
-    for (; i < aNbSections; i++) {
-      aSection = getSection( i );
-      if ( aSection )
-        aNbCoords += aSection->myPoints.size();
-    }
-  } else {
-    aSection = getSection( theISection );
-    if ( aSection )
-      aNbCoords = aSection->myPoints.size();
-  }
-
-  return aNbCoords/myDimension;
-}
-
-void CurveCreator_Curve::setSkipSorting( const bool theIsToSkip )
-{
-  mySkipSorting = theIsToSkip;
-}
-
-bool CurveCreator_Curve::canPointsBeSorted()
-{
-  return false;
-}
-
-/**
- * Saves points coordinates difference.
- * \param theOldCoords the old points coordinates
- */
-void CurveCreator_Curve::saveCoordDiff( const SectionToPointCoordsList &theOldCoords )
-{
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, theOldCoords);
-  }
-  finishOperation();
-}
-
-//! Get "closed" flag of the specified section
-bool CurveCreator_Curve::isClosed( const int theISection ) const
-{
-  CurveCreator_Section* aSection = getSection( theISection );
-  return aSection ? aSection->myIsClosed : false;
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::setClosedInternal( const int theISection, 
-                                            const bool theIsClosed )
-{
-  CurveCreator_Section* aSection = 0;
-  if (theISection == -1) {
-    int aSize = mySections.size();
-    int i;
-
-    for (i = 0; i < aSize; i++) {
-      aSection = getSection( i );
-      if( aSection ) {
-        aSection->myIsClosed = theIsClosed;
-        redisplayCurve();
-      }
-    }
-  } else {
-    aSection = getSection( theISection );
-    if ( aSection ) {
-      aSection->myIsClosed = theIsClosed;
-      redisplayCurve();
-    }
-  }
-  return true;
-}
-
-/**
- *  Set "closed" flag of the specified section (all sections if
- *  \a theISection is -1).
- */
-bool CurveCreator_Curve::setClosed( const int theISection, 
-                                    const bool theIsClosed )
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::SetClosed,
-                            theIsClosed, theISection);
-  }
-  res = setClosedInternal( theISection, theIsClosed );
-  finishOperation();
-  return res;
-}
-
-//! Returns specified section name
-std::string CurveCreator_Curve::getSectionName( const int theISection ) const
-{
-  CurveCreator_Section* aSection = getSection( theISection );
-  return aSection ? aSection->myName : "";
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::setSectionNameInternal( const int theISection, 
-                                                 const std::string& theName )
-{
-  bool res = false;
-  CurveCreator_Section* aSection = getSection( theISection );
-  if( aSection ) {
-    aSection->myName = theName;
-    res = true;
-  }
-  return res;
-}
-
-/** Set name of the specified section */
-bool CurveCreator_Curve::setSectionName( const int theISection, 
-                                         const std::string& theName )
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::RenameSection,
-                            theName, theISection);
-  }
-  res = setSectionNameInternal( theISection, theName );
-  finishOperation();
-  return res;
-}
-
-//! Get type of the specified section
-CurveCreator::SectionType CurveCreator_Curve::getSectionType
-  ( const int theISection ) const
-{
-  CurveCreator_Section* aSection = getSection( theISection );
-  return aSection ? aSection->myType : CurveCreator::Polyline;
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::setSectionTypeInternal( const int theISection, 
-                                                 const CurveCreator::SectionType theType )
-{
-  CurveCreator_Section* aSection;
-  if (theISection == -1) {
-    int i = 0;
-    const int aNbSections = getNbSections();
-
-    for (; i < aNbSections; i++) {
-      aSection = getSection( i );
-      if ( aSection )
-        aSection->myType = theType;
-    }
-    redisplayCurve();
-  } else {
-    aSection = getSection( theISection );
-    if ( aSection && aSection->myType != theType ){
-      aSection->myType = theType;
-      redisplayCurve();
-    }
-  }
-  return true;
-}
-
-/**
- *  Set type of the specified section (or all sections
- *  if \a theISection is -1).
- */
-bool CurveCreator_Curve::setSectionType( const int theISection, 
-                                         const CurveCreator::SectionType theType )
-{
-  bool res = false;
-  startOperation();
-  // Set the difference.
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::SetType,
-                            theType, theISection);
-  }
-
-  res = setSectionTypeInternal( theISection, theType );
-
-  finishOperation();
-  return res;
-}
-
-
-/***********************************************/
-/***           Point methods                 ***/
-/***********************************************/
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap )
-{
-  bool res = false;
-  CurveCreator::SectionsMap::const_iterator anIt = theSectionsMap.begin();
-  CurveCreator_Section *aSection = 0;
-  for ( ; anIt != theSectionsMap.end(); anIt++ ) {
-    int anISection = anIt->first;
-    aSection = getSection( anISection );
-    if( aSection ) {
-      CurveCreator::PosPointsList aSectionPoints = anIt->second;
-      CurveCreator::PosPointsList::const_iterator aPntIt = aSectionPoints.begin();
-      for( ; aPntIt != aSectionPoints.end(); aPntIt++ ){
-        int anIPnt = (*aPntIt)->myID;
-        CurveCreator::Coordinates aCoords = (*aPntIt)->myCoords;
-        CurveCreator::Coordinates::iterator anIterPosition;
-        if(anIPnt == -1)
-          anIterPosition = aSection->myPoints.end();
-        else
-          anIterPosition = aSection->myPoints.begin() + toICoord(anIPnt);
-        CurveCreator::Coordinates::const_iterator aFirstPosition = 
-          aCoords.begin();
-        aSection->myPoints.insert(anIterPosition,
-                                  aCoords.begin(), aCoords.end());
-      }
-      res = true;
-    }
-  }
-  if(res)
-    redisplayCurve();
-  return res;
-}
-
-/**
- *  Add one point to the specified section starting from the given theIPnt index
- *  (or at the end of points if \a theIPnt is -1).
- */
-bool CurveCreator_Curve::addPoints( const CurveCreator::Coordinates& theCoords,
-                                    const int theISection,
-                                    const int theIPnt )
-{
-  bool res = false;
-  CurveCreator::Coordinates aCoords = theCoords;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    CurveCreator_ICurve::SectionToPointCoordsList aList;
-    aList.push_back(std::make_pair(std::make_pair(theISection, theIPnt), theCoords));
-    myListDiffs.back().init(this, CurveCreator_Operation::InsertPoints,
-                            aList);
-  }
-  CurveCreator::SectionsMap aSectionsMap;
-  CurveCreator::PosPointsList aPoints;
-  CurveCreator_PosPoint* aPosPoint = new CurveCreator_PosPoint( theIPnt, theCoords );
-  aPoints.push_back( aPosPoint );
-  aSectionsMap[theISection] = aPoints;
-
-  res = addPointsInternal( aSectionsMap );
-
-  finishOperation();
-  return res;
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::setPointInternal( const CurveCreator::SectionsMap &theSectionsMap )
-{
-  bool res = false;
-  // Update the curve.
-  CurveCreator::SectionsMap::const_iterator anIt = theSectionsMap.begin();
-  CurveCreator_Section *aSection = 0;
-  for ( ; anIt != theSectionsMap.end(); anIt++ ) {
-    int anISection = anIt->first;
-    aSection = getSection( anISection );
-    if( aSection ) { 
-      CurveCreator::PosPointsList aSectionPoints = anIt->second;
-      CurveCreator::PosPointsList::const_iterator aPntIt = aSectionPoints.begin();
-      for( ; aPntIt != aSectionPoints.end(); aPntIt++ ){
-        int anIPnt = (*aPntIt)->myID;
-        CurveCreator::Coordinates aCoords = (*aPntIt)->myCoords;
-        for ( int i = 0; i < myDimension; i++)
-          aSection->myPoints.at(toICoord(anIPnt) + i) = aCoords[i];
-      }
-      res = true;
-    }
-  }
-  if(res)
-    redisplayCurve();
-  
-  return res;
-}
-
-//! Set coordinates of specified point
-bool CurveCreator_Curve::setPoint( const int theISection,
-                                   const int theIPnt,
-                                   const CurveCreator::Coordinates& theNewCoords )
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    CurveCreator_ICurve::SectionToPointCoordsList aList;
-    aList.push_back(std::make_pair(std::make_pair(theISection, theIPnt), theNewCoords));
-    myListDiffs.back().init(this, CurveCreator_Operation::SetCoordinates,
-                            aList);
-  }
-  CurveCreator::SectionsMap aSectionsMap;
-  CurveCreator::PosPointsList aPoints;
-  CurveCreator_PosPoint* aPosPoint = new CurveCreator_PosPoint( theIPnt, theNewCoords );
-  aPoints.push_back( aPosPoint );
-  aSectionsMap[theISection] = aPoints;
-
-  int aSize1 = getNbPoints( theISection );
-  res = setPointInternal( aSectionsMap );
-  int aSize2 = getNbPoints( theISection );
-
-  finishOperation();
-
-  return res; 
-}
-
-//! Set coordinates of specified points from different sections
-bool CurveCreator_Curve::setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords,
-                                           const bool theIsToSaveDiff )
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  if (theIsToSaveDiff && addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::SetCoordinates,
-                            theSectionToPntCoords);
-  }
-  CurveCreator::SectionsMap aSectionsMap;
-  CurveCreator::PosPointsList aPosPoints;
-  CurveCreator_ICurve::SectionToPointCoordsList::const_iterator anIt = 
-    theSectionToPntCoords.begin(), aLast = theSectionToPntCoords.end();
-  int aSectionId, aPointId;
-  for ( ; anIt != aLast; anIt++ ) {
-    aPosPoints.clear();
-    aSectionId = anIt->first.first;
-    aPointId = anIt->first.second;
-    CurveCreator::Coordinates aNewCoords = anIt->second;
-    CurveCreator_PosPoint* aPosPoint = 
-      new CurveCreator_PosPoint( aPointId, aNewCoords );
-    if( aSectionsMap.find(aSectionId) != aSectionsMap.end() )
-      aPosPoints = aSectionsMap[aSectionId];
-    aPosPoints.push_back( aPosPoint );
-    aSectionsMap[aSectionId] = aPosPoints;
-    
-  }
-  res = setPointInternal( aSectionsMap );
-  finishOperation();
-
-  return res; 
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Curve::removePointsInternal( const SectionToPointList &thePoints )
-{
-  bool aRes = false;
-  std::map<int, std::list<int> > aConvPoints;
-  convert( thePoints, aConvPoints );
-  std::map<int, std::list<int> >::const_iterator anIt = aConvPoints.begin(),
-                                          aLast = aConvPoints.end();
-  for ( ; anIt != aLast; anIt++ ) {
-    int aSectionId = anIt->first;
-    aRes = removeSectionPoints(aSectionId, anIt->second);
-  }
-  if( aRes)
-    redisplayCurve();
-
-  return aRes;
-}
-
-//! Remove point with given id
-bool CurveCreator_Curve::removePoint( const int theISection, const int theIPnt )
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  SectionToPointList aListOfSectionsToPoints;
-  aListOfSectionsToPoints.push_back(std::make_pair(theISection, theIPnt));
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::RemovePoints,
-                            aListOfSectionsToPoints);
-  }
-  res = removePointsInternal( aListOfSectionsToPoints );
-  finishOperation();
-  return res;
-}
-
-//! Remove several points from different sections with given ids
-bool CurveCreator_Curve::removeSeveralPoints( const SectionToPointList &theSectionToPntIDs)
-{
-  bool res = false;
-  // Set the difference.
-  startOperation();
-  if (addEmptyDiff()) {
-    myListDiffs.back().init(this, CurveCreator_Operation::RemovePoints,
-                            theSectionToPntIDs);
-  }
-  res = removePointsInternal( theSectionToPntIDs );
-  finishOperation();
-  return res;
-}
-
-  //=======================================================================
-// function: getCoordinates
-// purpose:
-//=======================================================================
-CurveCreator::Coordinates CurveCreator_Curve::getPoint( const int theISection,
-                                                        const int theIPnt) const
-{
-  CurveCreator_Section* aSection = getSection( theISection );
-  CurveCreator::Coordinates::const_iterator
-    anIter = aSection->myPoints.begin() + toICoord(theIPnt);
-  CurveCreator::Coordinates aResult(anIter, anIter + myDimension);
-
-  return aResult;
-}
-
-//=======================================================================
-// function: getPoints
-// purpose:
-//=======================================================================
-CurveCreator::Coordinates CurveCreator_Curve::getPoints( const int theISection ) const
-{
-  CurveCreator_Section* aSection = getSection( theISection );
-  return aSection ? aSection->myPoints : CurveCreator::Coordinates();
-}
-
-void CurveCreator_Curve::constructAISObject()
-{
-  TopoDS_Shape aShape;
-  CurveCreator_Utils::constructShape( this, aShape );
-
-  myAISShape = new AIS_Shape( aShape );
-}
-
-CurveCreator_Section* CurveCreator_Curve::getSection( const int theSectionId ) const
-{
-  CurveCreator_Section *aSection = 0;
-  if ( theSectionId >= 0 && theSectionId < mySections.size() )
-    aSection = mySections.at( theSectionId );
-
-  return aSection;
-}
-
-Handle(AIS_InteractiveObject) CurveCreator_Curve::getAISObject( const bool theNeedToBuild ) const
-{
-  if ( !myAISShape && theNeedToBuild ) {
-    CurveCreator_Curve* aCurve = (CurveCreator_Curve*)this;
-    aCurve->constructAISObject();
-  }
-  return myAISShape;
-}
-
-bool CurveCreator_Curve::removeSectionPoints( const int theSectionId,
-                                              const std::list<int>& thePointIds )
-{
-  bool aRes = false;
-
-  CurveCreator_Section* aSection = getSection( theSectionId );
-  if ( !aSection )
-    return aRes;
-
-  std::list<int> aSectionPoints = thePointIds;
-  aSectionPoints.sort();
-  std::list<int>::const_reverse_iterator aPntIt = aSectionPoints.rbegin();
-  for ( ; aPntIt != aSectionPoints.rend(); aPntIt++ ) {
-    int aPntIndx = *aPntIt;
-    CurveCreator::Coordinates::iterator aFirstPosition;
-    if ( aPntIndx == -1 )
-      aFirstPosition = aSection->myPoints.end() - getDimension();
-    else
-      aFirstPosition = aSection->myPoints.begin() + toICoord( aPntIndx );
-    aSection->myPoints.erase( aFirstPosition, aFirstPosition + getDimension() );
-    aRes = true;
-  }
-  return aRes;
-}
-
-void CurveCreator_Curve::convert( const SectionToPointList& thePoints,
-                                  std::map< int, std::list<int> >& theConvPoints )
-{
-  theConvPoints.clear();
-
-  SectionToPointList::const_iterator anIt = thePoints.begin(), aLast = thePoints.end();
-  std::list<int> aPoints;
-  int aSectionId, aPointId;
-  for ( ; anIt != aLast; anIt++ ) {
-    aSectionId = anIt->first;
-    aPointId = anIt->second;
-    aPoints.clear();
-    if ( theConvPoints.find( aSectionId ) != theConvPoints.end() )
-      aPoints = theConvPoints[aSectionId];
-    aPoints.push_back( aPointId );
-    theConvPoints[aSectionId] = aPoints;
-  }
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_Curve.hxx b/src/HYDROCurveCreator/CurveCreator_Curve.hxx
deleted file mode 100644 (file)
index adcfc87..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Curve.hxx
-// Author:      Sergey KHROMOV
-
-#ifndef _CurveCreator_Curve_HeaderFile
-#define _CurveCreator_Curve_HeaderFile
-
-#include "CurveCreator_ICurve.hxx"
-
-#include "CurveCreator_Macro.hxx"
-#include "CurveCreator.hxx"
-#include "CurveCreator_Diff.hxx"
-
-#include <list>
-#include <map>
-
-struct CurveCreator_Section;
-class CurveCreator_Displayer;
-class AIS_Shape;
-class Handle_AIS_InteractiveObject;
-
-/**
- *  The CurveCreator_Curve object is represented as one or more sets of
- *  connected points; thus CurveCreator_Curve object can contain several
- *  not connected curves (polylines or b-splines), each such curve has two
- *  only ends "start and end points" in other words non-manifold curves
- *  are not supported.
- */
-class CURVECREATOR_EXPORT CurveCreator_Curve : public CurveCreator_ICurve
-{
-protected:
-  typedef std::list<CurveCreator_Diff> ListDiff;
-
-public:
-  //! Constructor of the curve.
-  /** The dimension is explicitly specified in the constructor
-   *  and cannot be changed later.
-   */
-  CurveCreator_Curve(const CurveCreator::Dimension theDimension);
-
-  //! Destructor.
-  virtual ~CurveCreator_Curve();
-
-  //! Get the dimension.
-  virtual CurveCreator::Dimension getDimension() const;
-
-  //! Return unique section name
-  virtual std::string getUniqSectionName() const;
-
-  //! Set curve creator Displayer object
-  virtual void setDisplayer( CurveCreator_Displayer* theDisplayer );
-
-  //! Return curve creator Displayer object
-  CurveCreator_Displayer* getDisplayer();
-
-  //! Remove curve creator Displayer object
-  virtual void removeDisplayer();
-
-  /** Set depth of undo operations (unlimited if \a theDepth is -1
-   *  or disabled if \a theDepth is 0)
-   */
-  virtual void setUndoDepth(const int theDepth = -1);
-
-  //! Get depth of undo operations.
-  virtual int getUndoDepth() const;
-
-  virtual void startOperation();
-  virtual void finishOperation();
-
-  /**
-   * This method converts the point index to the index in
-   * an array of coordinates.
-   */
-  virtual int toICoord(const int theIPnt) 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
-   *  is disabled and true otherwise.
-   */
-  virtual bool addEmptyDiff();
-
-public: // TODO: remove public
-  void getCoordinates( int theISection, int theIPoint, double& theX, double& theY, double& theZ ) const;
-protected:  // TODO: remove public
-  void redisplayCurve();
-
-public:
-  /************   Implementation of INTERFACE methods   ************/
-
-  /***********************************************/
-  /***          Undo/Redo methods              ***/
-  /***********************************************/
-
-  //! Get number of available undo operations
-  virtual int getNbUndo() const;
-
-  //! Undo previous operation
-  virtual bool undo();
-
-  //! Get number of available redo operations
-  virtual int getNbRedo() const;
-
-  //! Redo last previously "undone" operation
-  virtual bool redo();
-
-
-  /***********************************************/
-  /***           Section methods               ***/
-  /***********************************************/
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool clearInternal();
-  //! Clear the polyline (remove all sections)
-  virtual bool clear();
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool joinInternal( const std::list<int>& theSections );
-
-  //! Join list of sections to one section (join all if the list is empty)
-  // The first section in the list is a leader, another sections are joined to it
-  virtual bool join( const std::list<int>& theSections );
-
-  //! Get number of sections
-  virtual int getNbSections() const;
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual int addSectionInternal( const std::string &theName, 
-                                  const CurveCreator::SectionType theType,
-                                  const bool theIsClosed,
-                                  const CurveCreator::Coordinates &thePoints);
-  //! Add a new section.
-  virtual int addSection( const std::string &theName, 
-                           const CurveCreator::SectionType theType,
-                           const bool theIsClosed );
-  //! Add a new section.
-  virtual int addSection( const std::string &theName, 
-                           const CurveCreator::SectionType theType,
-                           const bool theIsClosed,
-                           const CurveCreator::Coordinates &thePoints);
-  
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool removeSectionInternal( const int theISection );
-  //! Removes the given sections.
-  virtual bool removeSection( const int theISection );
-
-  //! Get "closed" flag of the specified section
-  virtual bool isClosed( const int theISection ) const;
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool setClosedInternal( const int theISection, 
-                                  const bool theIsClosed );
-  /**
-   *  Set "closed" flag of the specified section (all sections if
-   *  \a theISection is -1).
-   */
-  virtual bool setClosed( const int theISection, 
-                          const bool theIsClosed );
-
-  //! Returns specifyed section name
-  virtual std::string getSectionName( const int theISection ) const;
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool setSectionNameInternal( const int theISection, 
-                                       const std::string& theName );
-  /** Set name of the specified section */
-  virtual bool setSectionName( const int theISection, 
-                               const std::string& theName );
-
-  //! Get type of the specified section
-  virtual CurveCreator::SectionType getSectionType( const int theISection ) const;
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool setSectionTypeInternal( const int theISection, 
-                                       const CurveCreator::SectionType theType );
-  /**
-   *  Set type of the specified section (or all sections
-   *  if \a theISection is -1).
-   */
-  virtual bool setSectionType( const int theISection, 
-                               const CurveCreator::SectionType theType );
-
-
-  /***********************************************/
-  /***           Point methods                 ***/
-  /***********************************************/
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap );
-  /**
-   *  Add one point to the specified section starting from the given theIPnt index
-   *  (or at the end of points if \a theIPnt is -1).
-   */
-  virtual bool addPoints( const CurveCreator::Coordinates &theCoords,
-                          const int theISection,
-                          const int theIPnt = -1 );
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool setPointInternal( const CurveCreator::SectionsMap &theSectionsMap );
-   //! Set coordinates of specified point
-  virtual bool setPoint( const int theISection,
-                         const int theIPnt,
-                         const CurveCreator::Coordinates& theNewCoords );
-
-  //! Set coordinates of specified points from different sections
-  virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords,
-                                 const bool theIsToSaveDiff = true );
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool removePointsInternal( const SectionToPointList &thePoints );
-  /** Remove point with given id */
-  virtual bool removePoint( const int theISection, const int theIPnt = -1 );
-
-  //! Remove several points from different sections with given ids
-  virtual bool removeSeveralPoints( const SectionToPointList &theSectionToPntIDs);
-
-  //! Get coordinates of specified point
-  virtual CurveCreator::Coordinates getPoint( const int theISection, 
-                                              const int theIPnt ) const;
-
-  /**
-   * Get points of a section (the total points in Curve if theISection is equal to -1)..
-   */
-  virtual CurveCreator::Coordinates getPoints( const int theISection = -1 ) const;
-
-
-  /**
-   *  Get number of points in specified section or (the total number of points
-   *  in Curve if theISection is equal to -1).
-   */
-  virtual int getNbPoints( const int theISection ) const;
-
-   /**
-   * Set skip sorting flag. If the flag is true - points sorting will be skipped.
-   */
-  virtual void setSkipSorting( const bool theIsToSkip );
-
-  /**
-   * Indicates whether the points can be sorted.
-   */
-  virtual bool canPointsBeSorted();
-
-  /**
-   * Saves points coordinates difference.
-   * \param theOldCoords the old points coordinates
-   */
-  virtual void saveCoordDiff( const SectionToPointCoordsList &theOldCoords );
-
-  /***********************************************/
-  /***       Presentation methods              ***/
-  /***********************************************/
-  /**
-   *  Get the curve AIS object
-   */
-  virtual Handle_AIS_InteractiveObject getAISObject( const bool theNeedToBuild = false ) const;
-
-protected:
-  /**
-   *  Removes the points from the section. It sortes the points and remove them
-   * in the decreasing order
-   * \param theSectionId a section index
-   * \param thePointIds a list of section points
-   */
-  bool removeSectionPoints( const int theSectionId,
-                            const std::list<int>& thePointIds );
-  /**
-   * Converts the list of pairs of section to point into map of a section to list of points
-   * \param thePoints an source list
-   * \param theConvPoints a converted map
-   */
-  void convert( const SectionToPointList &thePoints,
-                std::map<int, std::list<int> > &theConvPoints );
-
-protected:
-  virtual void constructAISObject();
-  /**
-   * Returns the section by the section index or NULL if the index is out of the section
-   * list range
-   * \param theSectionId the section index
-   */
-  CurveCreator_Section* getSection( const int theSectionId ) const;
-
-protected:
-  bool                            mySkipSorting;
-
-public:
-  bool                            myIsLocked;
-  CurveCreator::Sections          mySections;   //!< curve data
-  CurveCreator::Dimension         myDimension;  //!< curve dimension
-  CurveCreator_Displayer*         myDisplayer;  //!< curve displayer
-
-private:
-
-  int                             myNbUndos;
-  int                             myNbRedos;
-  ListDiff::iterator              myCurrenPos;
-  ListDiff                        myListDiffs;
-  int                             myUndoDepth;
-  int                             myOpLevel;
-  AIS_Shape*                      myAISShape;   //!< AIS shape
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_Diff.cxx b/src/HYDROCurveCreator/CurveCreator_Diff.cxx
deleted file mode 100644 (file)
index d1a7dc3..0000000
+++ /dev/null
@@ -1,619 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Diff.cxx
-// Author:      Sergey KHROMOV
-
-#include "CurveCreator_Diff.hxx"
-#include "CurveCreator_Curve.hxx"
-
-#include <list>
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-CurveCreator_Diff::CurveCreator_Diff()
-: myNbUndos (0),
-  myPUndo   (NULL),
-  myPRedo   (NULL)
-{
-}
-
-//=======================================================================
-// function: Destructor
-// purpose:
-//=======================================================================
-CurveCreator_Diff::~CurveCreator_Diff()
-{
-  clear();
-}
-
-//=======================================================================
-// function: init
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve)
-{
-  CurveCreator_Operation::Type aType = CurveCreator_Operation::Clear;
-  bool isOK = false;
-
-  if (theCurve != NULL) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    if (myPRedo->init(aType)) {
-      isOK = true;
-
-      const int aNbSections = theCurve->getNbSections();
-
-      // Construct undo for Clear command.
-      if (aNbSections > 0) {
-        setNbUndos(aNbSections);
-
-        for (int i = 0; i < aNbSections && isOK; i++) {
-          // Add AddSection command.
-          isOK = addSectionToUndo(theCurve, i, myPUndo[i]);
-        }
-      }
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: init
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const int theIntParam)
-{
-  bool isOK = false;
-
-  if (theCurve != NULL) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    if (myPRedo->init(theType, theIntParam)) {
-      // Construct undo for RemoveSection command.
-      // If the last section is removed, one AddSection command is enough.
-      // If not last section is removed, two commands are requred: AddSection
-      // and MoveSection.
-      const int aLastIndex = theCurve->getNbSections() - 1;
-
-      if (theIntParam == aLastIndex) {
-        setNbUndos(1);
-      } else {
-        setNbUndos(2);
-      }
-
-      isOK = addSectionToUndo(theCurve, theIntParam, myPUndo[0]);
-
-      if (isOK && theIntParam != aLastIndex) {
-        isOK = myPUndo[1].init(CurveCreator_Operation::MoveSection,
-                               aLastIndex, theIntParam);
-      }
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: init
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const int theIntParam1,
-                             const int theIntParam2)
-{
-  bool isOK = false;
-
-  if (theCurve != NULL) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    if (myPRedo->init(theType, theIntParam1, theIntParam2)) {
-      // Construct undo for different commands.
-      switch (theType) {
-        case CurveCreator_Operation::SetType:
-        case CurveCreator_Operation::SetClosed:
-            isOK = setTypeOrClosedToUndo
-              (theCurve, theType, theIntParam1, theIntParam2);
-          break;
-        case CurveCreator_Operation::MoveSection:
-          setNbUndos(1);
-          isOK = myPUndo[0].init(theType, theIntParam2, theIntParam1);
-          break;
-        default:
-          break;
-      }
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: init
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const std::list<int>& theParams)
-{
-  bool isOK = false;
-
-  if (theCurve != NULL || theParams.empty()) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    if (myPRedo->init(theType, theParams)) {
-      // Construct undo for different commands.
-      switch (theType) {
-        case CurveCreator_Operation::Join:
-          {
-            int aSectionMain = theParams.front();
-            const int aNbPointsMain  = theCurve->getNbPoints(aSectionMain);
-
-            std::list<int> aSectionsToJoin = theParams;
-            aSectionsToJoin.erase( aSectionsToJoin.begin() );
-            // it is important to sort the section indices in order to correct perform undo
-            // for the move sections to the previous positions
-            aSectionsToJoin.sort();
-            // 1rst undo for remove points from the main and n-1 undoes to contain joined sections
-            int aSectionsToJoinNb = aSectionsToJoin.size();
-            int aNbUndos = 2*aSectionsToJoinNb + 1;
-            setNbUndos( aNbUndos );
-
-            // Add joined sections to undo
-            std::list<int>::const_iterator anIt = aSectionsToJoin.begin(),
-                                           aLast = aSectionsToJoin.end();
-            anIt = aSectionsToJoin.begin();
-            int aLastSectionId = -1;
-            for (int i = 0; anIt != aLast && i < aSectionsToJoinNb; anIt++, i++) {
-              int anISection = *anIt;
-              isOK = addSectionToUndo( theCurve, anISection, myPUndo[i*2] );
-              if (isOK) {
-                isOK = myPUndo[i*2+1].init(CurveCreator_Operation::MoveSection,
-                                           aLastSectionId, anISection);
-                if (!isOK)
-                  break;
-              }
-            }
-            // Construct undo for RemovePoints command.
-            if (isOK) {
-              int aNbPointsInJoined = 0;
-              anIt = aSectionsToJoin.begin();
-              for ( ; anIt != aLast; anIt++ )
-                aNbPointsInJoined += theCurve->getNbPoints( *anIt );
-
-              int aJoinedSize = aNbPointsMain + aNbPointsInJoined;
-              CurveCreator_ICurve::SectionToPointList aSectionToPointList;
-              for (int anIPoint = aNbPointsMain; anIPoint < aJoinedSize; anIPoint++)
-                aSectionToPointList.push_back(std::make_pair(aSectionMain, anIPoint));
-
-              isOK = myPUndo[aNbUndos-1].init(CurveCreator_Operation::RemovePoints, aSectionToPointList);
-            }
-          }
-          break;
-        default:
-          break;
-      }
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: init
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const std::string& theName,
-                             const CurveCreator::Coordinates &theCoords,
-                             const int theIntParam1,
-                             const int theIntParam2)
-{
-    bool isOK = false;
-
-    if (theCurve != NULL) {
-      clear();
-
-      // Set redo.
-      myPRedo = new CurveCreator_Operation;
-
-      if (myPRedo->init(theType, theName, theCoords, theIntParam1, theIntParam2)) {
-        // Construct undo for different commands.
-        switch (theType) {
-          case CurveCreator_Operation::AddSection:
-            setNbUndos(1);
-            isOK = myPUndo[0].init(CurveCreator_Operation::RemoveSection, -1);
-            break;
-        }
-      }
-    }
-    if( !isOK )
-        clear();
-    return isOK;
-}
-
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const std::string &theName,
-                             const int theIntParam1 )
-{
-  bool isOK = false;
-  myPRedo = new CurveCreator_Operation;
-
-  if (myPRedo->init(theType, theName, theIntParam1 )) {
-    // Construct undo for different commands.
-    switch (theType) {
-      case CurveCreator_Operation::RenameSection:
-        setNbUndos(1);
-        isOK = myPUndo[0].init(CurveCreator_Operation::RenameSection,
-                               theCurve->getSectionName(theIntParam1), theIntParam1);
-        break;
-    }
-  }
-  if( !isOK ){
-    clear();
-  }
-  return isOK;
-}
-
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const CurveCreator_ICurve::SectionToPointList &theParamList1)
-{
-  bool isOK = false;
-
-  if (theCurve != NULL) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    if (myPRedo->init(theType, theParamList1)) {
-      // Construct undo for different commands.
-      switch (theType) {
-        case CurveCreator_Operation::RemovePoints:
-          {
-            // Construct undo for RemovePoints command.
-            CurveCreator_ICurve::SectionToPointCoordsList aSectionToPointCoords;
-            CurveCreator::Coordinates aPointsToAdd;
-            const CurveCreator::Dimension aDim = theCurve->getDimension();
-            CurveCreator_ICurve::SectionToPointList::const_iterator anIt = theParamList1.begin(), aLast = theParamList1.end();
-            std::list<int> aPoints;
-            int aSectionId, aPointId;
-            for ( ; anIt != aLast; anIt++ ) {
-              aPointsToAdd.clear();
-              aSectionId = anIt->first;
-              aPointId = anIt->second;
-              const CurveCreator::Coordinates &aPoints =
-                      theCurve->getPoints(aSectionId);
-              CurveCreator::Coordinates::const_iterator anIterBegin =
-                  aPoints.begin() + (aDim*aPointId);
-              CurveCreator::Coordinates::const_iterator anIterEnd = 
-                anIterBegin + aDim;
-              aPointsToAdd.insert(aPointsToAdd.end(), anIterBegin, anIterEnd);
-              aSectionToPointCoords.push_back(std::make_pair(*anIt, aPointsToAdd));
-            }
-            setNbUndos(1);
-            isOK = myPUndo[0].init(CurveCreator_Operation::InsertPoints,
-                                   aSectionToPointCoords);
-          }
-          break;
-        default:
-          break;
-      }
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const CurveCreator_ICurve::SectionToPointCoordsList &theParamList1)
-{
-  bool isOK = false;
-
-  if (theCurve != NULL) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    if (myPRedo->init(theType, theParamList1)) {
-      // Construct undo for different commands.
-      switch (theType) {
-        case CurveCreator_Operation::InsertPoints:
-          {
-            // Construct undo for RemovePoints command.
-            CurveCreator_ICurve::SectionToPointList aSectionToPointList;
-            CurveCreator_ICurve::SectionToPointCoordsList::const_iterator anIt = theParamList1.begin(), aLast = theParamList1.end();
-            for ( ; anIt != aLast; anIt++ ) {
-              aSectionToPointList.push_back(anIt->first);
-            }
-            setNbUndos(1);
-            isOK = myPUndo[0].init(CurveCreator_Operation::RemovePoints,
-                                   aSectionToPointList);
-          }
-          break;
-        case CurveCreator_Operation::SetCoordinates:
-          {
-            // Construct undo for SetCoordinates command.
-            CurveCreator_ICurve::SectionToPointCoordsList aSectionToPointOldCoords;
-            CurveCreator_ICurve::SectionToPointCoordsList::const_iterator anIt = theParamList1.begin(), aLast = theParamList1.end();
-            for ( ; anIt != aLast; anIt++ ) {
-              CurveCreator::Coordinates anOldCoords = theCurve->getPoint(anIt->first.first, anIt->first.second);
-              aSectionToPointOldCoords.push_back(std::make_pair(anIt->first, anOldCoords));
-            }
-
-            setNbUndos(1);
-            isOK = myPUndo[0].init(CurveCreator_Operation::SetCoordinates,
-                                   aSectionToPointOldCoords);
-          }
-          break;
-        default:
-          break;
-      }
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-bool CurveCreator_Diff::init(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_ICurve::SectionToPointCoordsList &theOldParamList)
-{
-  bool isOK = false;
-
-  if (theCurve != NULL && theOldParamList.size() > 0) {
-    clear();
-
-    // Set redo.
-    myPRedo = new CurveCreator_Operation;
-
-    // Construct redo for SetCoordinates command.
-    CurveCreator_ICurve::SectionToPointCoordsList aSectionToPointActualCoords;
-    CurveCreator_ICurve::SectionToPointCoordsList::const_iterator anIt = 
-      theOldParamList.begin(), aLast = theOldParamList.end();
-    for ( ; anIt != aLast; anIt++ ) {
-      CurveCreator::Coordinates anActualCoords = theCurve->getPoint(anIt->first.first, anIt->first.second);
-      aSectionToPointActualCoords.push_back(std::make_pair(anIt->first, anActualCoords));
-    }
-
-    if (myPRedo->init(CurveCreator_Operation::SetCoordinates, aSectionToPointActualCoords)) {
-      // Undo for SetCoordinates command.
-      setNbUndos(1);
-      isOK = myPUndo[0].init(CurveCreator_Operation::SetCoordinates,
-                             theOldParamList);
-    }
-
-    if (!isOK) {
-      clear();
-    }
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: applyUndo
-// purpose:
-//=======================================================================
-void CurveCreator_Diff::applyUndo(CurveCreator_Curve *theCurve)
-{
-  if (myNbUndos > 0 && myPUndo != NULL) {
-    for (int i = 0; i < myNbUndos; i++) {
-      myPUndo[i].apply(theCurve);
-    }
-  }
-}
-
-//=======================================================================
-// function: applyRedo
-// purpose:
-//=======================================================================
-void CurveCreator_Diff::applyRedo(CurveCreator_Curve *theCurve)
-{
-  if (myPRedo != NULL) {
-    myPRedo->apply(theCurve);
-  }
-}
-
-//=======================================================================
-// function: clear
-// purpose:
-//=======================================================================
-void CurveCreator_Diff::clear()
-{
-  if (myPUndo != NULL) {
-    delete [] myPUndo;
-    myPUndo = NULL;
-  }
-
-  myNbUndos = 0;
-
-  if (myPRedo != NULL) {
-    delete myPRedo;
-    myPRedo = NULL;
-  }
-}
-
-//=======================================================================
-// function: setNbUndos
-// purpose:
-//=======================================================================
-void CurveCreator_Diff::setNbUndos(const int theNbUndos)
-{
-  myNbUndos = theNbUndos;
-  myPUndo = new CurveCreator_Operation[myNbUndos];
-}
-
-//=======================================================================
-// function: getSectionIndex
-// purpose:
-//=======================================================================
-int CurveCreator_Diff::getSectionIndex(const CurveCreator_Curve *theCurve,
-                                       const int theIndex) const
-{
-  return (theIndex == -1 ? theCurve->getNbSections() - 1 : theIndex);
-}
-
-//=======================================================================
-// function: addSectionToUndo
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::addSectionToUndo
-                      (const CurveCreator_Curve *theCurve,
-                       const int theIndex,
-                       CurveCreator_Operation &theOperation) const
-{
-  const std::string aName = theCurve->getSectionName(theIndex);
-  const CurveCreator::Coordinates &aPnts = theCurve->getPoints(theIndex);
-  const CurveCreator::SectionType aType = theCurve->getSectionType(theIndex);
-  const bool isClosed = theCurve->isClosed(theIndex);
-
-  bool isOK = theOperation.init(CurveCreator_Operation::AddSection,
-                                aName, aPnts, aType, isClosed);
-
-  return isOK;
-}
-
-//=======================================================================
-// function: setTypeOrClosedToUndo
-// purpose:
-//=======================================================================
-bool CurveCreator_Diff::setTypeOrClosedToUndo
-                            (const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const int theIntParam1,
-                             const int theIntParam2)
-{
-  bool isOK = true;
-
-  // Compute number of modified sections.
-  const bool isSetType = (theType == CurveCreator_Operation::SetType);
-  int aNbModif = 0;
-  std::list<int> aListOfInd;
-  int aValue;
-  int i;
-
-  if (theIntParam2 == -1) {
-    // The operation is applied to all sections. We need to collect
-    // really modified sections for undo.
-    const int aNbSections = theCurve->getNbSections();
-
-    if (aNbSections > 0) {
-      // Get sections to be modified.
-      for (i = 0; i < aNbSections; i++) {
-        if (isSetType) {
-          aValue = theCurve->getSectionType(i);
-        } else {
-          aValue = theCurve->isClosed(i);
-        }
-
-        if (theIntParam1 != aValue) {
-          aNbModif++;
-          aListOfInd.push_back(i);
-        }
-      }
-
-      if (aNbSections == aNbModif) {
-        // All sections are modified. We can use one single command
-        // with -1 section index.
-        aNbModif = 1;
-        aListOfInd.clear();
-        aListOfInd.push_back(-1);
-      }
-    }
-  } else {
-    // There is only particular section modified.
-    // Check if there is a real modification required.
-    if (isSetType) {
-      aValue = theCurve->getSectionType(theIntParam2);
-    } else {
-      aValue = theCurve->isClosed(theIntParam2);
-    }
-
-    if (theIntParam1 != aValue) {
-      aNbModif = 1;
-      aListOfInd.push_back(theIntParam2);
-    }
-  }
-
-  if (aNbModif > 0) {
-    // Store the undos
-    std::list<int>::iterator anIter = aListOfInd.begin();
-
-    if (isSetType) {
-      aValue = theCurve->getSectionType(*anIter);
-    } else {
-      aValue = theCurve->isClosed(*anIter);
-    }
-
-    setNbUndos(aNbModif);
-
-    for (i = 0; anIter != aListOfInd.end() && isOK; i++, anIter++) {
-      isOK = myPUndo[i].init(theType, aValue, *anIter);
-    }
-  }
-
-  return isOK;
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_Diff.hxx b/src/HYDROCurveCreator/CurveCreator_Diff.hxx
deleted file mode 100644 (file)
index f55f530..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Diff.hxx
-// Author:      Sergey KHROMOV
-
-#ifndef _CurveCreator_Diff_HeaderFile
-#define _CurveCreator_Diff_HeaderFile
-
-#include "CurveCreator_Operation.hxx"
-
-class CurveCreator_Curve;
-
-
-/**
- * This is the support class for store/retrieve differences of undo/redo
- * operations. To fill the difference it is necessary to create it with
- * an appropriate type and to call the method initialize with required
- * parameters.
- */
-class CurveCreator_Diff
-{
-
-private:
-
-public:
-
-  /**
-   * Constructor.
-   */
-  CurveCreator_Diff();
-
-  /**
-   * Destructor.
-   */
-  ~CurveCreator_Diff();
-
-  /**
-   * This method initializes the difference with an operation without
-   * parameters. It is applicable to the following operations:
-   * <UL>
-   *   <LI>Clear</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve);
-
-  /**
-   * This method initializes the difference with an operation with one integer
-   * parameter. It is applicable to the following operations:
-   * <UL>
-   *   <LI>RemoveSection</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const int theIntParam);
-
-  /**
-   * This method initializes the difference with an operation with two integer
-   * parameters. It is applicable to the following operations:
-   * <UL>
-   *   <LI>SetType</LI>
-   *   <LI>SetClosed</LI>
-   *   <LI>MoveSection</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const int theIntParam1,
-            const int theIntParam2);
-
-    /**
-   * This method initializes the difference with an operation with two integer
-   * parameters. It is applicable to the following operations:
-   * <UL>
-   *   <LI>Join (with a list of int arguments)</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const std::list<int>& theParams);
-
-  /**
-   * This method initializes the difference with an operation with one
-   * Name, one CurveCreator::Coordinates parameter and two integer parameters.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>AddSection</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const std::string& theName,
-            const CurveCreator::Coordinates &theCoords,
-            const int theIntParam1,
-            const int theIntParam2);
-
-  /**
-   * This method initializes the difference with an operation with one
-   * string and one integer parameters.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>RenameSection</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const std::string &theName,
-            const int theIntParam1 );
-
-  /**
-   * This method initializes the difference with an operation with 
-   * list of pairs of integer parameters.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>RemovePoints</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const CurveCreator_ICurve::SectionToPointList &theParamList);
-
-  /**
-   * This method initializes the difference with an operation with 
-   * list of pairs of integer parameters with point coordinates.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>RemovePoints</LI>
-   * </UL>
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_Operation::Type theType,
-            const CurveCreator_ICurve::SectionToPointCoordsList &theParamList);
-
-  /**
-   * This method initializes the difference with an operation with 
-   * list of pairs of integer parameters with point coordinates.
-   * \param theCurve the modified curve
-   * \param theOldParamList the old parameters (to be saved for undo)
-   */
-  bool init(const CurveCreator_Curve *theCurve,
-            const CurveCreator_ICurve::SectionToPointCoordsList &theOldParamList);
-
-  /**
-   * This method applies undo operation to theCurve.
-   */
-  void applyUndo(CurveCreator_Curve *theCurve);
-
-  /**
-   * This method applies redo operation to theCurve.
-   */
-  void applyRedo(CurveCreator_Curve *theCurve);
-
-private:
-
-  /**
-   * This method clears initialized data pointers.
-   */
-  void clear();
-
-  /**
-   * This method sets the number of undos and allocates the required
-   * space for myPUndo.
-   */
-  void setNbUndos(const int theNbUndos);
-
-  /**
-   * This method returns the section index. It returns theIndex if it is
-   * a real index and the last section's index if theIndex is equal to -1.
-   */
-  int getSectionIndex(const CurveCreator_Curve *theCurve,
-                      const int theIndex) const;
-
-  /**
-   * Convert theIndex'th section of theCurve into AddSection command
-   * and store it in theOperation. Returns true in case of success and
-   * false otherwise.
-   */
-  bool addSectionToUndo(const CurveCreator_Curve *theCurve,
-                        const int theIndex,
-                        CurveCreator_Operation &theOperation) const;
-
-  /**
-   * Construct undos for SetType and SetClosed operations. Note: the
-   * algorithm is optimized taking into account that there are only 2 types
-   * and 2 values of isClosed flag. If the number of types is increased,
-   * this algorithm should be re-implemented.
-   */
-  bool setTypeOrClosedToUndo(const CurveCreator_Curve *theCurve,
-                             const CurveCreator_Operation::Type theType,
-                             const int theIntParam1,
-                             const int theIntParam2);
-
-private:
-
-  int                     myNbUndos;
-  CurveCreator_Operation *myPUndo;
-  CurveCreator_Operation *myPRedo;
-
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_Displayer.cxx b/src/HYDROCurveCreator/CurveCreator_Displayer.cxx
deleted file mode 100644 (file)
index 6bc8df5..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "CurveCreator_Displayer.h"
-
-CurveCreator_Displayer::CurveCreator_Displayer( Handle_AIS_InteractiveContext theContext,
-                                                const int theZLayer ) :
-  myContext( theContext ), myZLayer( theZLayer )
-{
-  myObjects.clear();
-}
-
-CurveCreator_Displayer::~CurveCreator_Displayer(void)
-{
-  eraseAll( true );
-  for( int i = 0 ; i < myObjects.size() ; i++ ){
-    myObjects[i].Nullify();
-  }
-  myObjects.clear();
-}
-
-void CurveCreator_Displayer::display( const Handle(AIS_InteractiveObject)& theObject, bool isUpdate )
-{
-  if ( theObject.IsNull() )
-    return;
-
-  myObjects.push_back( theObject );
-  myContext->Display( theObject, Standard_False );
-
-  if ( myZLayer >= 0 )
-    myContext->SetZLayer( theObject, myZLayer );
-
-  if( isUpdate )
-    myContext->UpdateCurrentViewer();
-}
-
-void CurveCreator_Displayer::eraseAll( bool isUpdate )
-{
-  if(myObjects.empty())
-    return;
-  for( int i = 0 ; i < myObjects.size() ; i++ ){
-    myContext->Erase(myObjects[i], Standard_False);
-  }
-  myObjects.clear();
-  if( isUpdate )
-    myContext->UpdateCurrentViewer();
-}
-
-Quantity_Color CurveCreator_Displayer::getActiveColor( bool isHL )
-{
-  if( isHL ){
-    return Quantity_Color( 1., 0., 0., Quantity_TOC_RGB );
-  }
-  return Quantity_Color( 0., 1., 0., Quantity_TOC_RGB );
-}
-
-/*void CurveCreator_Displayer::highlight( const AISObjectsList& theObjects, bool isHL )
-{
-  return;
-  //TODO:
-  Quantity_Color aColor = getActiveColor( isHL );
-  for( int i = 0 ; i < theObjects.size() ; i++ ){
-    theObjects[i]->SetColor(aColor);
-    myContext->Display(theObjects[i], Standard_False);
-  }
-  myContext->UpdateCurrentViewer();
-}*/
diff --git a/src/HYDROCurveCreator/CurveCreator_Displayer.h b/src/HYDROCurveCreator/CurveCreator_Displayer.h
deleted file mode 100644 (file)
index f65e9d2..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef CURVECREATOR_DISPLAYER_H
-#define CURVECREATOR_DISPLAYER_H
-
-#include "CurveCreator_Macro.hxx"
-
-#include <AIS_InteractiveObject.hxx>
-#include <AIS_InteractiveContext.hxx>
-
-#include <vector>
-
-class CURVECREATOR_EXPORT CurveCreator_Displayer
-{
-typedef std::vector<Handle_AIS_InteractiveObject> AISObjectsList;
-
-public:
-  CurveCreator_Displayer( Handle_AIS_InteractiveContext theContext,
-                          const int theZLayer = -1 );
-  ~CurveCreator_Displayer(void);
-
-  void display( const Handle_AIS_InteractiveObject& theObject, bool isUpdate );
-  void eraseAll( bool isUpdate );
-  //void highlight( const AISObjectsList& theObjects, bool isHL );
-
-protected:
-  Quantity_Color getActiveColor( bool isHL );
-
-private:
-  Handle_AIS_InteractiveContext myContext;
-  AISObjectsList                myObjects;
-  int                           myZLayer;
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_ICurve.hxx b/src/HYDROCurveCreator/CurveCreator_ICurve.hxx
deleted file mode 100644 (file)
index 9effa47..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_ICurve.hxx
-// Author:      Alexander KOVALEV and Alexander SOLOVYOV
-
-#ifndef _CurveCreator_ICurve_HeaderFile
-#define _CurveCreator_ICurve_HeaderFile
-
-#include "CurveCreator_Macro.hxx"
-#include <deque>
-#include <vector>
-#include <string>
-#include <list>
-
-class Handle_AIS_InteractiveObject;
-
-namespace CurveCreator
-{
-  //! Type of the section
-  enum SectionType
-  {
-    Polyline,
-    Spline,
-  };
-
-  //! Dimension of the curve
-  enum Dimension
-  {
-    Dim2d = 2,
-    Dim3d = 3
-  };
-
-};
-
-/**
- *  The CurveCreator_ICurve object is represented as one or more sets of
- *  connected points; thus CurveCreator_ICurve object can contain several
- *  not connected curves (polylines or b-splines), each such curve has two
- *  only ends "start and end points" in other words non-manifold curves
- *  are not supported.
- */
-class CURVECREATOR_EXPORT CurveCreator_ICurve
-{
-public:
-  typedef std::pair<int,int> SectionToPoint;
-  typedef std::deque<SectionToPoint> SectionToPointList;
-
-  typedef std::deque< std::pair< SectionToPoint,std::deque< float > > > SectionToPointCoordsList;
-
-public:
-  /***********************************************/
-  /***          Undo/Redo methods              ***/
-  /***********************************************/
-
-  //! Get number of available undo operations
-  virtual int getNbUndo() const = 0;
-
-  //! Undo previous operation
-  virtual bool undo() = 0;
-
-  //! Get number of available redo operations
-  virtual int getNbRedo() const = 0;
-
-  //! Redo last previously "undone" operation
-  virtual bool redo() = 0;
-
-
-  /***********************************************/
-  /***           Section methods               ***/
-  /***********************************************/
-
-  //! Clear the polyline (remove all sections)
-  virtual bool clear() = 0;
-
-  //! Join list of sections to one section (join all if the list is empty)
-  // The first section in the list is a leader, another sections are joined to it
-  virtual bool join( const std::list<int>& theSections ) = 0;
-
-  //! Get number of sections
-  virtual int getNbSections() const = 0;
-
-  //! Add a new section.
-  virtual int addSection( const std::string& theName, 
-                           const CurveCreator::SectionType theType,
-                           const bool theIsClosed ) = 0;
-
-  //! Removes the given sections.
-  virtual bool removeSection( const int theISection ) = 0;
-
-  //! Get "closed" flag of the specified section
-  virtual bool isClosed( const int theISection ) const = 0;
-
-  /**
-   *  Set "closed" flag of the specified section (all sections if
-   *  \a theISection is -1).
-   */
-  virtual bool setClosed( const int theISection, 
-                          const bool theIsClosed ) = 0;
-
-  //! Returns specifyed section name
-  virtual std::string getSectionName( const int theISection ) const = 0;
-
-  /** Set name of the specified section */
-  virtual bool setSectionName( const int theISection, 
-                               const std::string& theName ) = 0;
-
-  //! Get type of the specified section
-  virtual CurveCreator::SectionType getSectionType( const int theISection ) const = 0;
-
-  /**
-   *  Set type of the specified section (or all sections
-   *  if \a theISection is -1).
-   */
-  virtual bool setSectionType( const int theISection, 
-                               const CurveCreator::SectionType theType ) = 0;
-
-
-  /***********************************************/
-  /***           Point methods                 ***/
-  /***********************************************/
-
-  //! Get the dimension.
-  virtual CurveCreator::Dimension getDimension() const = 0;
-
-  /**
-   *  Insert one or several points to the specified section starting from the given theIPnt index
-   *  (or add these at the end of section points if \a theIPnt is -1).
-   */
-  virtual bool addPoints( const std::deque<float>& theCoords,
-                          const int theISection,
-                          const int theIPnt = -1 ) = 0;
-
-  //! Set coordinates of specified point
-  virtual bool setPoint( const int theISection,
-                         const int theIPnt,
-                         const std::deque<float>& theNewCoords ) = 0;
-  
-  //! Set coordinates of specified points from different sections
-  virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords,
-                                 const bool theIsToSaveDiff = true ) = 0;
-
-  //! Remove point with given id
-  virtual bool removePoint( const int theISection, const int theIPnt = -1 ) = 0;
-  //! Remove several points from different sections
-  virtual bool removeSeveralPoints( const SectionToPointList &theSectionToPntIDs) = 0;
-
-  //! Get coordinates of specified point
-  virtual std::deque<float> getPoint( const int theISection, 
-                                      const int theIPnt ) const = 0;
-
-  /**
-   * Get points of a section (the total points in Curve if theISection is equal to -1)..
-   */
-  virtual std::deque<float> getPoints( const int theISection = -1 ) const = 0;
-
-  /**
-   *  Get number of points in specified section or (the total number of points
-   *  in Curve if theISection is equal to -1).
-   */
-  virtual int getNbPoints( const int theISection ) const = 0;
-
-  /**
-   * Set skip sorting flag. If the flag is true - points sorting will be skipped.
-   */
-  virtual void setSkipSorting( const bool ) = 0;
-
-  /**
-   * Indicates whether the points can be sorted.
-   */
-  virtual bool canPointsBeSorted() = 0;
-
-  /**
-   * Saves points coordinates difference.
-   * \param theOldCoords the old points coordinates
-   */
-  virtual void saveCoordDiff( const SectionToPointCoordsList &theOldCoords ) = 0;
-
-  /***********************************************/
-  /***       Presentation methods              ***/
-  /***********************************************/
-
-  virtual Handle_AIS_InteractiveObject getAISObject( const bool theNeedToBuild = false ) const = 0;
-
-protected:
-  virtual void constructAISObject() = 0;
-
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_Listener.hxx b/src/HYDROCurveCreator/CurveCreator_Listener.hxx
deleted file mode 100755 (executable)
index 318abac..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVE_CREATOR_LISTENER_HXX
-#define CURVE_CREATOR_LISTENER_HXX
-
-class CurveCreator_Listener
-{
-public:
-  CurveCreator_Listener(void){};
-  virtual ~CurveCreator_Listener(void){};
-
-  virtual void pointChanged( int theSection, int thePoint ){}
-  virtual void pointRemoved( int theSection, int theFirstPoint){}
-  virtual void pointInserted( int theSection, int theIndx ){}
-
-  virtual void sectionClosed( int theSection, bool isClosed ){}
-  virtual void sectionAdded( int theSection ){}
-  virtual void sectionRemoved( int theSection ){}
-  virtual void sectionTypeChanged( int theSection ){}
-
-  virtual void curveChanged(){}
-};
-
-#endif
\ No newline at end of file
diff --git a/src/HYDROCurveCreator/CurveCreator_Macro.hxx b/src/HYDROCurveCreator/CurveCreator_Macro.hxx
deleted file mode 100644 (file)
index ec814eb..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Macro.hxx
-// Author:      Sergey KHROMOV
-
-#ifndef _CurveCreator_Macro_HeaderFile
-#define _CurveCreator_Macro_HeaderFile
-
-#ifdef WNT
- #if defined CURVECREATOR_EXPORTS || defined CurveCreator_EXPORTS
-  #if defined WIN32
-   #define CURVECREATOR_EXPORT __declspec( dllexport )
-  #else
-   #define CURVECREATOR_EXPORT
-  #endif
- #else
-  #if defined WIN32
-   #define CURVECREATOR_EXPORT __declspec( dllimport )
-  #else
-   #define CURVECREATOR_EXPORT
-  #endif
- #endif
-#else
- #define CURVECREATOR_EXPORT
-#endif
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_NewSectionDlg.cxx b/src/HYDROCurveCreator/CurveCreator_NewSectionDlg.cxx
deleted file mode 100644 (file)
index 526dfb7..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_NewSectionDlg.h"
-//#include "CurveCreator_Curve.hxx"
-
-#include <SUIT_Session.h>
-#include <SUIT_ResourceMgr.h>
-
-#include <QGridLayout>
-#include <QLabel>
-#include <QLineEdit>
-#include <QComboBox>
-#include <QCheckBox>
-#include <QDialogButtonBox>
-#include <QPushButton>
-
-CurveCreator_NewSectionDlg::CurveCreator_NewSectionDlg( QWidget *parent, bool enableClosed ) :
-  QWidget(parent), myIsEnableClosed( enableClosed )
-{
-  QVBoxLayout* aMainLayout = new QVBoxLayout( this );
-  aMainLayout->setMargin( 0 );
-
-  QFrame* aFrame = new QFrame( this );
-  aMainLayout->addWidget( aFrame );
-
-  QVBoxLayout* aLayout = new QVBoxLayout( aFrame );
-  aLayout->setMargin( 0 );
-
-  QFrame* aCoordFrame = new QFrame( aFrame );
-  QGridLayout* aCoordLayout = new QGridLayout( aCoordFrame );
-
-  QLabel* aLbl = new QLabel(tr("NAME"), this);
-  myName = new QLineEdit(this);
-  aCoordLayout->addWidget(aLbl, 0, 0);
-  aCoordLayout->addWidget(myName, 0 , 1);
-
-  aLbl = new QLabel(tr("LINE_TYPE"));
-  myLineType = new QComboBox(this);
-
-  SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
-  QPixmap aPolylinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE")));
-  QPixmap aSplinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE")));
-
-//  QPixmap aPolylinePixmap = QPixmap(tr(":images/ICON_POLYLINE"));
-//  QPixmap aSplinePixmap = QPixmap(tr(":images/ICON_SPLINE"));
-  myLineType->addItem(aPolylinePixmap, tr("POLYLINE_TYPE"));
-  myLineType->addItem(aSplinePixmap, tr("SPLINE_TYPE"));
-  myLineType->setCurrentIndex(0);
-  aCoordLayout->addWidget(aLbl, 1, 0);
-  aCoordLayout->addWidget(myLineType, 1 , 1);
-
-  aLbl = new QLabel(tr("LINE_CLOSED"));
-  myIsClosed = new QCheckBox(this);
-  aCoordLayout->addWidget(aLbl, 2, 0);
-  aCoordLayout->addWidget(myIsClosed, 2, 1);
-  if ( !myIsEnableClosed ) {
-    aLbl->hide();
-    myIsClosed->hide();
-  }
-
-  myBtnFrame = new QFrame( aFrame );
-  QHBoxLayout* aBtnsLayout = new QHBoxLayout( myBtnFrame );
-
-  myAddBtn = new QPushButton( tr( "ADD_BTN" ), myBtnFrame );
-  myCancelBtn = new QPushButton( tr( "CANCEL" ), myBtnFrame );
-
-  connect( myAddBtn,  SIGNAL( clicked() ), this, SIGNAL( addSection() ) );
-  connect( myCancelBtn, SIGNAL( clicked() ), this, SIGNAL( cancelSection() ) );
-
-  aBtnsLayout->addWidget( myAddBtn );
-  aBtnsLayout->addStretch( 1 );
-  aBtnsLayout->addWidget( myCancelBtn );
-
-  aLayout->addWidget( aCoordFrame, 0 );
-  aLayout->addWidget( myBtnFrame, 1 );
-}
-
-void CurveCreator_NewSectionDlg::setSectionParameters( const QString& theName, bool isClosed, CurveCreator::SectionType theType )
-{
-  myName->setText(theName);
-  myIsClosed->setChecked(isClosed);
-  if( theType == CurveCreator::Polyline )
-    myLineType->setCurrentIndex(0);
-  else
-    myLineType->setCurrentIndex(1);
-}
-
-void CurveCreator_NewSectionDlg::clear()
-{
-  myName->setText("");
-  myIsClosed->setChecked(true);
-  myLineType->setCurrentIndex(0);
-}
-
-void CurveCreator_NewSectionDlg::setEditMode( bool isEdit )
-{
-  myIsEdit = isEdit;
-  if( myIsEdit ){
-    myAddBtn->setText(tr("OK"));
-    myAddBtn->disconnect( SIGNAL( clicked() ) );
-    connect( myAddBtn, SIGNAL( clicked() ), this, SIGNAL( modifySection() ) );
-  }
-  else{
-    myAddBtn->setText(tr("ADD_BTN"));
-    myAddBtn->disconnect( SIGNAL( clicked() ) );
-    connect( myAddBtn, SIGNAL( clicked() ), this, SIGNAL( addSection() ) );
-  }
-  updateTitle();
-}
-
-QString CurveCreator_NewSectionDlg::getName() const
-{
-  return myName->text();
-}
-
-bool CurveCreator_NewSectionDlg::isClosed() const
-{
-  return myIsClosed->isChecked();
-}
-
-CurveCreator::SectionType CurveCreator_NewSectionDlg::getSectionType() const
-{
-  if( myLineType->currentIndex() == 0 )
-    return CurveCreator::Polyline;
-  else
-    return CurveCreator::Spline;
-}
-
-void CurveCreator_NewSectionDlg::updateTitle()
-{
-  QString aTitle;
-  if( !myIsEdit )
-    aTitle = tr("ADD_NEW_SECTION");
-  else
-    aTitle = QString(tr("SET_SECTION_PARAMETERS"));
-  setWindowTitle(aTitle);
-}
-
-void CurveCreator_NewSectionDlg::setSectionName( const QString& theName )
-{
-  myName->setText(theName);
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_NewSectionDlg.h b/src/HYDROCurveCreator/CurveCreator_NewSectionDlg.h
deleted file mode 100644 (file)
index d37ed11..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVECREATOR_NEWSECTION_H
-#define CURVECREATOR_NEWSECTION_H
-
-#include "CurveCreator.hxx"
-#include "CurveCreator_ICurve.hxx"
-
-#include <QDockWidget>
-
-//class CurveCreator_Curve;
-
-class QLineEdit;
-class QComboBox;
-class QCheckBox;
-class QPushButton;
-class QAbstractButton;
-class QDialogButtonBox;
-class QFrame;
-
-class CurveCreator_NewSectionDlg : public QWidget
-{
-  Q_OBJECT
-public:
-  explicit CurveCreator_NewSectionDlg(QWidget *parent = 0, bool enableClosed = true );
-
-  QString getName() const;
-  bool    isClosed() const;
-  CurveCreator::SectionType getSectionType() const;
-
-  void    setSectionParameters( const QString& theName, bool isClosed, CurveCreator::SectionType theType );
-  void    setSectionName(const QString& theName );
-  void    clear();
-  void    setEditMode( bool isEdit );
-  bool    isEnableClosed() const { return myIsEnableClosed; }
-
-signals:
-  void    addSection();
-  void    modifySection();
-  void    cancelSection();
-public slots:
-protected slots:
-protected:
-  void    updateTitle();
-private:
-  QFrame*             myBtnFrame;
-  QLineEdit*          myName;
-  QComboBox*          myLineType;
-  QCheckBox*          myIsClosed;
-  bool                myIsEdit;
-  bool                myIsEnableClosed;
-  QPushButton*        myAddBtn;
-  QPushButton*        myCancelBtn;
-};
-
-#endif // CURVECREATOR_NEWSECTION_H
diff --git a/src/HYDROCurveCreator/CurveCreator_Operation.cxx b/src/HYDROCurveCreator/CurveCreator_Operation.cxx
deleted file mode 100644 (file)
index 173e1c8..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Operation.cxx
-// Author:      Sergey KHROMOV
-
-#include "CurveCreator_Operation.hxx"
-#include "CurveCreator_Curve.hxx"
-#include "CurveCreator.hxx"
-
-#include <string>
-#include <stdlib.h>
-#include <string.h>
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-CurveCreator_Operation::CurveCreator_Operation()
-: myType  (CurveCreator_Operation::Unknown),
-  myPData (NULL)
-{
-}
-
-//=======================================================================
-// function: Destructor
-// purpose:
-//=======================================================================
-CurveCreator_Operation::~CurveCreator_Operation()
-{
-  clear();
-}
-
-bool compId(CurveCreator_PosPoint* p1, CurveCreator_PosPoint* p2)
-{
-  return p1->myID < p2->myID;
-}
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::Clear) {
-    clear();
-    myType = theType;
-    isOK   = true;
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const int theIntParam)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::RemoveSection) {
-    int *pData = (int *)allocate(sizeof(int));
-
-    pData[0] = theIntParam;
-    myType   = theType;
-    isOK     = true;
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const int theIntParam1,
-                                  const int theIntParam2)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::SetType     ||
-      theType == CurveCreator_Operation::SetClosed   ||
-      theType == CurveCreator_Operation::MoveSection ||
-      theType == CurveCreator_Operation::Join) {
-    int *pData = (int *)allocate(2*sizeof(int));
-
-    pData[0] = theIntParam1;
-    pData[1] = theIntParam2;
-    myType   = theType;
-    isOK     = true;
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-bool CurveCreator_Operation::init(const Type theType, const std::list<int> theParamList)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::Join)
-  {
-    const int aNbPoints = theParamList.size();
-
-    const size_t aSize =
-      sizeof(aNbPoints) +
-      aNbPoints * (sizeof(int));
-
-    int *pIntData = (int *)allocate(aSize);
-
-    *pIntData++ = aNbPoints;
-    std::list<int>::const_iterator anIt = theParamList.begin(), aLast = theParamList.end();
-    for ( ; anIt != aLast; anIt++ )
-      *pIntData++ = *anIt;
-
-    myType   = theType;
-    isOK   = true;
-  }
-  return isOK;
-}
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const CurveCreator::Coordinates &theCoords,
-                                  const int theIntParam)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::AddPoints) {
-    const int aNbCoords = theCoords.size();
-    const size_t aSize =
-      2*sizeof(theIntParam) + aNbCoords*sizeof(CurveCreator::TypeCoord);
-    int *pIntData = (int *)allocate(aSize);
-
-    *pIntData++ = theIntParam;
-    *pIntData++ = aNbCoords;
-
-    CurveCreator::TypeCoord *pRealData = (CurveCreator::TypeCoord *)pIntData;
-    int i = 0;
-
-    for (; i < aNbCoords; i++) {
-      *pRealData++ = theCoords[i];
-    }
-
-    myType = theType;
-    isOK   = true;
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: Constructor
-// purpose:
-//=======================================================================
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const std::string& theName,
-                                  const CurveCreator::Coordinates &theCoords,
-                                  const int theIntParam1,
-                                  const int theIntParam2)
-{
-  bool isOK = false;
-  if (theType == CurveCreator_Operation::AddSection ) {
-    const int aNbCoords = theCoords.size();
-    const size_t aSize =
-      3*sizeof(theIntParam1) + aNbCoords*sizeof(CurveCreator::TypeCoord) + theName.length() + 1;
-    int *pIntData = (int *)allocate(aSize);
-
-    *pIntData++ = theIntParam1;
-    *pIntData++ = theIntParam2;
-    char* aStrPtr = (char*)pIntData;
-    if( !theName.empty() ){
-        strcpy( aStrPtr, theName.c_str() );
-        aStrPtr += theName.length();
-    }
-    else{
-        *aStrPtr = 0;
-    }
-    aStrPtr++;
-    pIntData = (int*)aStrPtr;
-    *pIntData++ = aNbCoords;
-
-    CurveCreator::TypeCoord *pRealData = (CurveCreator::TypeCoord *)pIntData;
-    int i = 0;
-
-    for (; i < aNbCoords; i++) {
-      *pRealData++ = theCoords[i];
-    }
-
-    myType = theType;
-    isOK   = true;
-  }
-
-  return isOK;
-}
-
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const std::string &theName,
-                                  const int theIntParam1 )
-{
-    if (theType == CurveCreator_Operation::RenameSection ) {
-        size_t aSize = sizeof(theIntParam1) + theName.length() + 1;
-        int *pIntData = (int *)allocate(aSize);
-        *pIntData = theIntParam1;
-        pIntData++;
-        if( !theName.empty() ){
-            strcpy( (char*)pIntData, theName.c_str() );
-        }
-        else{
-            *((char*)pIntData) = 0;
-        }
-        myType = theType;
-        return true;
-    }
-    return false;
-}
-
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const CurveCreator_ICurve::SectionToPointCoordsList &theParamList1)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::InsertPoints ||
-      theType == CurveCreator_Operation::SetCoordinates ) {
-
-    const int aNbPoints = theParamList1.size();
-
-    CurveCreator_ICurve::SectionToPointCoordsList::const_iterator anIt = 
-      theParamList1.begin();
-    const int aNbCoords = anIt->second.size();
-
-    const size_t aSize =
-      sizeof(aNbPoints) + sizeof(aNbCoords) + 
-      aNbPoints * (3*sizeof(int) + aNbCoords*sizeof(CurveCreator::TypeCoord));
-    int *pIntData = (int *)allocate(aSize);
-
-    *pIntData++ = aNbPoints;
-    *pIntData++ = aNbCoords;
-    int aSectionId, aPointId;
-    for ( ; anIt != theParamList1.end(); anIt++ ) {
-      aSectionId = anIt->first.first;
-      aPointId = anIt->first.second;
-
-      *pIntData++ = aSectionId;
-      *pIntData++ = aPointId;
-      *pIntData++ = aNbCoords;
-
-      const CurveCreator::Coordinates &aCoords = anIt->second;
-      CurveCreator::TypeCoord *pRealData = (CurveCreator::TypeCoord *)pIntData;
-      for (int i = 0; i < aNbCoords; i++) {
-        *pRealData++ = aCoords[i];
-      }
-      pIntData = (int *)pRealData;
-    }
-
-    myType = theType;
-    isOK   = true;
-  }
-
-  return isOK;
-}
-
-bool CurveCreator_Operation::init(const CurveCreator_Operation::Type theType,
-                                  const CurveCreator_ICurve::SectionToPointList &theParamList1)
-{
-  bool isOK = false;
-
-  if (theType == CurveCreator_Operation::RemovePoints) {
-    const int aNbPoints = theParamList1.size();
-
-    CurveCreator_ICurve::SectionToPointList::const_iterator anIt = 
-      theParamList1.begin();
-
-    const size_t aSize =
-      sizeof(aNbPoints) +
-      aNbPoints * (2*sizeof(int));
-    int *pIntData = (int *)allocate(aSize);
-
-    *pIntData++ = aNbPoints;
-    int aSectionId, aPointId;
-    for ( ; anIt != theParamList1.end(); anIt++ ) {
-      aSectionId = anIt->first;
-      aPointId = anIt->second;
-
-      *pIntData++ = aSectionId;
-      *pIntData++ = aPointId;
-    }
-
-    myType = theType;
-    isOK   = true;
-  }
-
-  return isOK;
-}
-
-//=======================================================================
-// function: apply
-// purpose:
-//=======================================================================
-void CurveCreator_Operation::apply(CurveCreator_Curve *theCurve)
-{
-  if (theCurve != NULL) {
-    int *pInt = (int *)myPData;
-
-    switch (myType) {
-      case CurveCreator_Operation::AddPoints:
-      case CurveCreator_Operation::InsertPoints:
-      case CurveCreator_Operation::SetCoordinates:
-        {
-          int aSectionId, aPointId;
-          CurveCreator::SectionsMap aSectionsMap;
-          CurveCreator::PosPointsList aPoints;
-          CurveCreator::Coordinates aCoords;
-
-          int nbPoints = pInt[0];
-          int nbCoords = pInt[1];
-          int nbParams = 3+nbCoords;
-          for (int i = 0; i < nbPoints*nbParams; i=i+nbParams) {
-            aCoords.clear();
-            aPoints.clear();
-            getCoords(&pInt[4+i], aCoords);
-            aSectionId = pInt[2+i];
-            aPointId = pInt[3+i];
-            if ( aSectionsMap.find( aSectionId ) != aSectionsMap.end() )
-              aPoints = aSectionsMap[aSectionId];
-            CurveCreator_PosPoint* aPosPoint = new CurveCreator_PosPoint( aPointId, aCoords );
-            aPoints.push_back( aPosPoint );
-            aPoints.sort(compId);
-            aSectionsMap[aSectionId] = aPoints;
-          }
-          switch (myType) {
-            case CurveCreator_Operation::AddPoints:
-            case CurveCreator_Operation::InsertPoints:
-              theCurve->addPointsInternal( aSectionsMap );
-              break;
-            case CurveCreator_Operation::SetCoordinates:
-              theCurve->setPointInternal( aSectionsMap );
-              break;
-          }
-        }
-        break;
-      case CurveCreator_Operation::RemovePoints:
-        {
-          CurveCreator_ICurve::SectionToPointList aListOfSectionsToPoints;
-          int nbPoints = pInt[0];
-          for (int i = 1; i < nbPoints*2; i=i+2) {
-            aListOfSectionsToPoints.push_back(std::make_pair(pInt[i], pInt[i+1]));
-          }
-          theCurve->removePointsInternal(aListOfSectionsToPoints);
-        }
-        break;
-      case CurveCreator_Operation::SetType:
-        {
-          const CurveCreator::SectionType aType = (CurveCreator::SectionType) pInt[0];
-
-          theCurve->setSectionTypeInternal( pInt[1], aType );
-        }
-        break;
-      case CurveCreator_Operation::Clear:
-        theCurve->clearInternal();
-        break;
-      case CurveCreator_Operation::SetClosed:
-        theCurve->setClosedInternal(pInt[1], (pInt[0] != 0));
-        break;
-      case CurveCreator_Operation::MoveSection:
-        theCurve->moveSectionInternal(pInt[0], pInt[1]);
-        break;
-      case CurveCreator_Operation::Join:
-        if (myPData != NULL)
-        {
-          std::list<int> aListOfSections;
-          int nbSections = pInt[0];
-          for (int i = 1; i < nbSections+1; i++) {
-            aListOfSections.push_back(pInt[i]);
-          }
-          theCurve->joinInternal(aListOfSections);
-        }
-        break;
-      case CurveCreator_Operation::AddSection:
-        {
-          const CurveCreator::SectionType aType = (CurveCreator::SectionType) pInt[0];
-
-          std::string aName = std::string((char*)&pInt[2]);
-
-          CurveCreator::Coordinates aCoords;
-
-          char* aPtr =  ((char*)&pInt[2]);
-          aPtr += (aName.length()) + 1;
-          getCoords((int*)aPtr, aCoords);
-          theCurve->addSectionInternal(aName, aType, (pInt[1] != 0), aCoords);
-        }
-        break;
-      case CurveCreator_Operation::RemoveSection:
-        theCurve->removeSectionInternal(pInt[0]);
-        break;
-      case CurveCreator_Operation::RenameSection:
-        {
-            std::string aName = std::string((char*)&pInt[1]);
-            theCurve->setSectionNameInternal(pInt[0], aName);
-        }
-        break;
-      default:
-        break;
-    }
-  }
-}
-
-//=======================================================================
-// function: allocate
-// purpose:
-//=======================================================================
-void *CurveCreator_Operation::allocate(const size_t theSize)
-{
-  if (myPData != NULL) {
-    clear();
-  }
-
-  myPData = malloc(theSize);
-
-  return myPData;
-}
-
-//=======================================================================
-// function: clear
-// purpose:
-//=======================================================================
-void CurveCreator_Operation::clear()
-{
-  myType = CurveCreator_Operation::Unknown;
-
-  if (myPData != NULL) {
-    free(myPData);
-    myPData = NULL;
-  }
-}
-
-//=======================================================================
-// function: getCoords
-// purpose:
-//=======================================================================
-void CurveCreator_Operation::getCoords
-          (int *thePInt, CurveCreator::Coordinates &theCoords) const
-{
-  const int aNbPnts = *thePInt;
-  CurveCreator::TypeCoord *pCoord = (CurveCreator::TypeCoord *)&thePInt[1];
-
-  for (int i = 0; i < aNbPnts; i++) {
-    theCoords.push_back(pCoord[i]);
-  }
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_Operation.hxx b/src/HYDROCurveCreator/CurveCreator_Operation.hxx
deleted file mode 100644 (file)
index 855d0da..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Operation.hxx
-// Author:      Sergey KHROMOV
-
-#ifndef _CurveCreator_Operation_HeaderFile
-#define _CurveCreator_Operation_HeaderFile
-
-#include "CurveCreator.hxx"
-#include "CurveCreator_ICurve.hxx"
-#include "CurveCreator_PosPoint.hxx"
-
-#include <string>
-#include <vector>
-
-class CurveCreator_Curve;
-
-
-/**
- * This is the support class that describes a modification operation that
- * can be applied to CurveCreator_Curve.
- */
-class CurveCreator_Operation
-{
-
-public:
-
-  /**
-   * This is a type of CurveCreator_Curve modification operation.
-   */
-  enum Type
-  {
-    Unknown = 0,    //!< Unknown method.
-    AddPoints,      //!< Method CurveCreator_Curve::addPoints
-    RemovePoints,   //!< Method CurveCreator_Curve::removePoints
-    InsertPoints,   //!< Method CurveCreator_Curve::insertPoints
-    SetType,        //!< Method CurveCreator_Curve::setType
-    Clear,          //!< Method CurveCreator_Curve::clear
-    SetCoordinates, //!< Method CurveCreator_Curve::setCoordinates
-    SetClosed,      //!< Method CurveCreator_Curve::setClosed
-    MoveSection,    //!< Method CurveCreator_Curve::moveSection
-    Join,           //!< Method CurveCreator_Curve::join
-    AddSection,     //!< Method CurveCreator_Curve::addSection
-    RemoveSection,   //!< Method CurveCreator_Curve::removeSection
-    RenameSection   //!< Method CurveCreator_Curve::renameSection
-  };
-
-  /**
-   * Empty constructor.
-   */
-  CurveCreator_Operation();
-
-  /**
-   * Destructor.
-   */
-  ~CurveCreator_Operation();
-
-  /**
-   * This method initializes the object with an operation without parameters.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>Clear</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType);
-
-  /**
-   * This method initializes the object with an operation with one integer
-   * parameter. It is applicable to the following operations:
-   * <UL>
-   *   <LI>RemoveSection</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType, const int theIntParam);
-
-  /**
-   * This method initializes the object with an operation with two integer
-   * parameters. It is applicable to the following operations:
-   * <UL>
-   *   <LI>SetType</LI>
-   *   <LI>SetClosed</LI>
-   *   <LI>MoveSection</LI>
-   *   <LI>Join (with 2 int arguments)</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType, const int theIntParam1,
-            const int theIntParam2);
-
-  /**
-   * This method initializes the object with an operation with two integer
-   * parameters. It is applicable to the following operations:
-   * <UL>
-   *   <LI>Join (with a list of int arguments)</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType, const std::list<int> theParamList);
-
-  /**
-   * This method initializes the object with an operation with 
-   * list of pairs of integer parameters. 
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>RemovePoints</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType, 
-    const CurveCreator_ICurve::SectionToPointList &theParamList1);
-
-  /**
-   * This method initializes the object with an operation with one
-   * CurveCreator::Coordinates parameter and one integer parameter.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>AddPoints</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType, const CurveCreator::Coordinates &theCoords,
-            const int theIntParam);
-
-  /**
-   * This method initializes the object with an operation with
-   * list of pairs of integer parameters and CurveCreator::Coordinates parameters.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>InsertPoints</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const Type theType, 
-            const CurveCreator_ICurve::SectionToPointCoordsList &theParamList1);
-
-  /**
-   * This method initializes the object with an operation with one
-   * string, one CurveCreator::Coordinates parameter and two integer parameters.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>AddSection</LI>
-   *   <LI>InsertPoints</LI>
-   *   <LI>SetCoordinates</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const CurveCreator_Operation::Type theType,
-            const std::string& theName,
-            const CurveCreator::Coordinates &theCoords,
-            const int theIntParam1,
-            const int theIntParam2);
-
-
-  /**
-   * This method initializes the object with an operation with one
-   * string parameter and one integer.
-   * It is applicable to the following operations:
-   * <UL>
-   *   <LI>RenameSection</LI>
-   * </UL>
-   * @return true in case of success; false otherwise.
-   */
-  bool init(const CurveCreator_Operation::Type theType,
-                                    const std::string &theName,
-                                    const int theIntParam1 );
-
-  /**
-   * This method applies the current operation to theCurve.
-   */
-  void apply(CurveCreator_Curve *theCurve);
-
-private:
-
-  /**
-   * This method allocates required memory for the operation data.
-   * Returns myPData for convenience purpose.
-   */
-  void *allocate(const size_t theSize);
-
-  /**
-   * This method clears initialized data pointers.
-   */
-  void clear();
-
-  /**
-   * This method returns the coordinates read from thePInt.
-   */
-  void getCoords(int *thePInt, CurveCreator::Coordinates &theCoords) const;
-
-private:
-
-  Type  myType;
-  void *myPData;
-
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_PosPoint.hxx b/src/HYDROCurveCreator/CurveCreator_PosPoint.hxx
deleted file mode 100644 (file)
index 2301374..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_PosPoint.hxx
-// Author:      Alexander KOVALEV
-
-#ifndef _CurveCreator_PosPoint_HeaderFile
-#define _CurveCreator_PosPoint_HeaderFile
-
-#include "CurveCreator.hxx"
-
-struct CurveCreator_PosPoint
-{
-public:
-  CurveCreator_PosPoint( int theID, CurveCreator::Coordinates theCoords ) 
-    : myID( theID ), myCoords( theCoords )
-  { };
-
-  ////! Overloaded operator to use sorting.
-  //bool operator < (CurveCreator_PosPoint const & thePosPoint) const 
-  //{
-  //  return myID < thePosPoint.myID;
-  //}
-
-  int                       myID;     // point ID
-  CurveCreator::Coordinates myCoords; // point coordinates
-
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_Profile.cxx b/src/HYDROCurveCreator/CurveCreator_Profile.cxx
deleted file mode 100644 (file)
index bcfc8fb..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_Profile.hxx"
-
-#include "CurveCreator.hxx"
-#include "CurveCreator_PosPoint.hxx"
-#include "CurveCreator_Section.hxx"
-#include "CurveCreator_Displayer.h"
-
-#include <BRepBuilderAPI_MakeEdge.hxx>
-#include <BRepBuilderAPI_MakeWire.hxx>
-#include <Geom_CartesianPoint.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Lin.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Wire.hxx>
-#include <TColgp_HArray1OfPnt.hxx>
-#include <GeomAPI_Interpolate.hxx>
-
-#include <stdio.h>
-
-CurveCreator_Profile::CurveCreator_Profile()
-: CurveCreator_Curve( CurveCreator::Dim2d )
-{
-  CurveCreator_Section *aSection = new CurveCreator_Section;
-  aSection->myName     = getUniqSectionName();
-  aSection->myType     = CurveCreator::Polyline;
-  aSection->myIsClosed = false;
-
-  mySections.push_back( aSection );
-}
-
-CurveCreator_Profile::~CurveCreator_Profile()
-{
-}
-
-bool CurveCreator_Profile::moveSectionInternal( const int theISection,
-                                                const int theNewIndex )
-{
-  return false;
-}
-
-bool CurveCreator_Profile::moveSection( const int theISection,
-                                        const int theNewIndex )
-{
-  return false;
-}
-
-bool CurveCreator_Profile::clearInternal()
-{
-  // erase curve from the viewer
-  if( myDisplayer )
-    myDisplayer->eraseAll( true );
-
-  // Delete all allocated data.
-  CurveCreator_Section* aSection = getSection( 0 );
-  if ( aSection )
-    aSection->myPoints.clear();
-
-  return true;
-}
-
-bool CurveCreator_Profile::joinInternal( const std::list<int>& theSections )
-{
-  return false;
-}
-
-bool CurveCreator_Profile::join( const std::list<int>& theSections )
-{
-  return false;
-}
-
-int CurveCreator_Profile::addSectionInternal( const std::string&               theName, 
-                                              const CurveCreator::SectionType  theType,
-                                              const bool                       theIsClosed, 
-                                              const CurveCreator::Coordinates& thePoints )
-{
-  return -1;
-}
-
-int CurveCreator_Profile::addSection( const std::string&              theName,
-                                      const CurveCreator::SectionType theType,
-                                      const bool                      theIsClosed )
-{
-  return -1;
-}
-
-int CurveCreator_Profile::addSection( const std::string&               theName,
-                                      const CurveCreator::SectionType  theType,
-                                      const bool                       theIsClosed, 
-                                      const CurveCreator::Coordinates& thePoints )
-{
-  return -1;
-}
-
-bool CurveCreator_Profile::removeSectionInternal( const int theISection )
-{
-  return false;
-}
-  
-bool CurveCreator_Profile::removeSection( const int theISection )
-{
-  return false;
-}
-
-bool CurveCreator_Profile::setClosedInternal( const int theISection, 
-                                              const bool theIsClosed )
-{
-  return false;
-}
-
-bool CurveCreator_Profile::setClosed( const int theISection, 
-                                      const bool theIsClosed )
-{
-  return false;
-}
-
-bool CurveCreator_Profile::addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap )
-{
-  bool res = false;
-
-  CurveCreator_Section* aSection = getSection( 0 );
-  if( !aSection )
-    return res;
-
-  CurveCreator::SectionsMap::const_iterator anIt = theSectionsMap.begin();
-  for ( ; anIt != theSectionsMap.end(); anIt++ )
-  {
-    int anISection = anIt->first;
-    if( anISection != 0 )
-      continue;
-
-    const CurveCreator::PosPointsList& aSectionPoints = anIt->second;
-
-    CurveCreator::PosPointsList::const_iterator aPntIt = aSectionPoints.begin();
-    for( ; aPntIt != aSectionPoints.end(); aPntIt++ )
-    {
-      const CurveCreator::Coordinates& aNewCoords = (*aPntIt)->myCoords;
-      CurveCreator::Coordinates::const_iterator aNewPntIt = aNewCoords.begin();
-      for( ; aNewPntIt != aNewCoords.end(); aNewPntIt++ )
-      {
-        const CurveCreator::TypeCoord& aCoordU = *aNewPntIt++;
-        if ( aNewPntIt == aNewCoords.end() )
-          break;
-        
-        const CurveCreator::TypeCoord& aCoordZ = *aNewPntIt;
-
-        CurveCreator::TypeCoord aC = aCoordU - 1;
-        if ( !aSection->myPoints.empty() )
-          aC = *(aSection->myPoints.end() - 2);
-
-        if ( aSection->myPoints.empty() || aCoordU >= aC )
-        {
-          aSection->myPoints.push_back( aCoordU );
-          aSection->myPoints.push_back( aCoordZ );
-        }
-        else if ( aCoordU < aSection->myPoints.front() )
-        {
-          aSection->myPoints.push_front( aCoordZ );
-          aSection->myPoints.push_front( aCoordU );
-        }
-        else
-        {
-          CurveCreator::Coordinates::iterator aRefPntIt = aSection->myPoints.begin();
-          for( ; aRefPntIt != aSection->myPoints.end(); aRefPntIt++ )
-          {
-            const CurveCreator::TypeCoord& aRefCoordU = *aRefPntIt++;
-            if ( aCoordU < aRefCoordU )
-              break;
-          }
-
-          aSection->myPoints.insert( aRefPntIt - 1, aNewPntIt - 1, aNewPntIt + 1 );
-        }
-      }
-    }
-
-    res = true;
-  }
-
-  if ( res )
-    redisplayCurve();
-
-  return res;
-}
-
-//! For internal use only! Undo/Redo are not used here.
-bool CurveCreator_Profile::setPointInternal( const CurveCreator::SectionsMap &theSectionsMap )
-{
-  bool aRes = false;
-
-  if ( mySkipSorting ) {
-    return CurveCreator_Curve::setPointInternal( theSectionsMap );
-  }
-
-  int anISection = 0;
-  CurveCreator_Section* aSection = getSection( anISection );
-  if( !aSection )
-    return aRes;
-
-  CurveCreator::SectionsMap::const_iterator anIt = theSectionsMap.begin();
-  if ( anIt == theSectionsMap.end() )
-    return aRes;
-
-  const CurveCreator::PosPointsList& aSectionPoints = anIt->second;
-
-  std::list<int> aConvPoints;
-  convert( aSectionPoints, aConvPoints );
-  removeSectionPoints( anISection, aConvPoints );
-
-  aRes = addPointsInternal( theSectionsMap );
-  if ( aRes )
-    redisplayCurve();
-
-  return aRes;
-}
-
-void CurveCreator_Profile::convert( const CurveCreator::PosPointsList& thePoints,
-                                    std::list<int>& theConvPoints )
-{
-  theConvPoints.clear();
-
-  CurveCreator::PosPointsList::const_iterator aPntIt = thePoints.begin(),
-                                              aPntLast = thePoints.end();
-  for( ; aPntIt != aPntLast; aPntIt++ )
-  {
-    int anIPnt = (*aPntIt)->myID;
-    theConvPoints.push_back( anIPnt );
-  }
-}
-
-bool CurveCreator_Profile::canPointsBeSorted()
-{
-  return true;
-}
-
-/**
- *  Add one point to the specified section starting from the given theIPnt index
- *  (or at the end of points if \a theIPnt is -1).
- */
-bool CurveCreator_Profile::addPoints( const CurveCreator::Coordinates& theCoords,
-                                      const int theISection,
-                                      const int theIPnt )
-{
-  int anIPnt = theIPnt;
-
-  if ( anIPnt == - 1 && theCoords.size() > 1 ) {
-    CurveCreator::Coordinates aCoords;
-    for ( int i = 0, aNb = getNbPoints( theISection ); i < aNb; i++ ) {
-      aCoords = getPoint( theISection, i );
-      if ( aCoords.size() < 2 ) {
-        continue;
-      }
-
-      if ( theCoords[0] < aCoords[0] ) {
-        anIPnt = i;
-        break;
-      }
-    }
-  }
-  
-  return CurveCreator_Curve::addPoints( theCoords, theISection, anIPnt );
-}
\ No newline at end of file
diff --git a/src/HYDROCurveCreator/CurveCreator_Profile.hxx b/src/HYDROCurveCreator/CurveCreator_Profile.hxx
deleted file mode 100644 (file)
index f426fba..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef _CurveCreator_Profile_HeaderFile
-#define _CurveCreator_Profile_HeaderFile
-
-#include "CurveCreator_Curve.hxx"
-
-/**
- *  The CurveCreator_Curve object is represented as one or more sets of
- *  connected points; thus CurveCreator_Curve object can contain several
- *  not connected curves (polylines or b-splines), each such curve has two
- *  only ends start and end points in other words non-manifold curves
- *  are not supported.
- */
-class CURVECREATOR_EXPORT CurveCreator_Profile : public CurveCreator_Curve
-{
-
-public:
-
-  //! Constructor of the curve.
-  CurveCreator_Profile();
-
-  //! Destructor.
-  virtual ~CurveCreator_Profile();
-
-public:
-
-  /***********************************************/
-  /***           Section methods               ***/
-  /***********************************************/
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool clearInternal();
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool joinInternal( const std::list<int>& theSections );
-
-  //! 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 );
-  //! Join list of sections to one section (join all if the list is empty)
-  // The first section in the list is a leader, another sections are joined to it
-  virtual bool join( const std::list<int>& theSections );
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual int addSectionInternal( const std::string &theName, 
-                                  const CurveCreator::SectionType theType,
-                                  const bool theIsClosed,
-                                  const CurveCreator::Coordinates &thePoints);
-  //! Add a new section.
-  virtual int addSection( const std::string &theName, 
-                           const CurveCreator::SectionType theType,
-                           const bool theIsClosed );
-  //! Add a new section.
-  virtual int addSection( const std::string &theName, 
-                           const CurveCreator::SectionType theType,
-                           const bool theIsClosed,
-                           const CurveCreator::Coordinates &thePoints);
-  
-  
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool removeSectionInternal( const int theISection );
-
-  //! Removes the given sections.
-  virtual bool removeSection( const int theISection );
-
-  
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool setClosedInternal( const int theISection, 
-                                  const bool theIsClosed );
-  /**
-   *  Set "closed" flag of the specified section (all sections if
-   *  \a theISection is -1).
-   */
-  virtual bool setClosed( const int theISection, 
-                          const bool theIsClosed );
-
-  /***********************************************/
-  /***           Point methods                 ***/
-  /***********************************************/
-
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap );
-  /**
-   *  Add one point to the specified section starting from the given theIPnt index
-   *  (or at the end of points if \a theIPnt is -1).
-   */
-  //! For internal use only! Undo/Redo are not used here.
-  virtual bool setPointInternal( const CurveCreator::SectionsMap &theSectionsMap );
-
-  /**
-   *  Add one point to the specified section starting from the given theIPnt index.
-   *  Contrary to CurveCreator_Curve::addPoints(...) if \a theIPnt is -1 the right index
-   *  will be calculated automatically in accordance with X coordinate value of the point.
-   */
-  virtual bool addPoints( const CurveCreator::Coordinates &theCoords,
-                          const int theISection,
-                          const int theIPnt = -1 );
-
-  /**
-   * Indicates whether the points can be sorted.
-   */
-  virtual bool canPointsBeSorted();
-
-protected:
-  /**
-   * Converts the list of custom point position objects into a list of point indices
-   * \param thePoints an source list
-   * \param theConvPoints a converted list
-   */
-  void convert( const CurveCreator::PosPointsList& thePoints,
-                std::list<int>& theConvPoints );
-
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_Section.hxx b/src/HYDROCurveCreator/CurveCreator_Section.hxx
deleted file mode 100644 (file)
index 68b03aa..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// File:        CurveCreator_Section.hxx
-// Author:      Sergey KHROMOV
-
-#ifndef _CurveCreator_Section_HeaderFile
-#define _CurveCreator_Section_HeaderFile
-
-#include "CurveCreator.hxx"
-
-#include <string>
-
-//! Structure to store sections representing the CurveCreator_Curve object
-struct CurveCreator_Section
-{
-  //! Constructor. Initializes object with default values.
-  CurveCreator_Section() : myName("Section"),myType(CurveCreator::Polyline), myIsClosed(false)
-  { }
-
-  std::string               myName; //!< section name
-  CurveCreator::Coordinates myPoints;   //!< points coordinates
-  CurveCreator::SectionType myType;     //!< type of the section
-  bool                      myIsClosed; //!< closed or not
-
-};
-
-#endif
diff --git a/src/HYDROCurveCreator/CurveCreator_TableView.cxx b/src/HYDROCurveCreator/CurveCreator_TableView.cxx
deleted file mode 100644 (file)
index b7567ab..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_TableView.h"
-#include "CurveCreator_UtilsICurve.hxx"
-
-#include <gp_Pnt.hxx>
-
-#include <QTableWidget>
-#include <QTableWidgetItem>
-
-#include <QtxDoubleSpinBox.h>
-
-const double DBL_MINIMUM = -10000000.;
-const double DBL_MAXIMUM = 10000000.;
-
-const int SECTION_NAME_COLUMN_WIDTH = 75;
-const int POINT_INDEX_COLUMN_WIDTH = 40;
-
-const double LOCAL_SELECTION_TOLERANCE = 0.0001;
-
-CurveCreator_TableItemDelegate::CurveCreator_TableItemDelegate( QObject* theParent )
-: QItemDelegate( theParent )
-{
-}
-
-/**
- * Creates an editor for the cell
- */
-QWidget* CurveCreator_TableItemDelegate::createEditor( QWidget* theParent,
-                                                       const QStyleOptionViewItem& theOption,
-                                                       const QModelIndex& theIndex ) const
-{
-  QWidget* anEditor = 0;
-
-  int aColumnId = theIndex.column();
-  if ( aColumnId == 2 || aColumnId == 3 ) {
-    QDoubleSpinBox* aSpin = new QtxDoubleSpinBox( theParent );
-    aSpin->setDecimals( 2 );
-    aSpin->setRange( DBL_MINIMUM, DBL_MAXIMUM );
-    anEditor = aSpin;
-  }
-  else
-    anEditor = QItemDelegate::createEditor( theParent, theOption, theIndex );
-
-  return anEditor;
-}
-
-void CurveCreator_TableItemDelegate::setEditorData( QWidget* theEditor,
-                                                    const QModelIndex& theIndex ) const
-{
-  int aColumnId = theIndex.column();
-  if ( aColumnId == 2 || aColumnId == 3 ) {
-    QDoubleSpinBox* aDblSpin = dynamic_cast<QDoubleSpinBox*>( theEditor );
-    if ( aDblSpin ) {
-      double aValue = theIndex.model()->data( theIndex, Qt::EditRole ).toDouble();
-      aDblSpin->setValue( aValue );
-    }
-  }
-  else
-   QItemDelegate::setEditorData( theEditor, theIndex );
-}
-
-void CurveCreator_TableItemDelegate::setModelData( QWidget* theEditor,
-                                                   QAbstractItemModel* theModel,
-                                                   const QModelIndex& theIndex ) const
-{
-  int aColumnId = theIndex.column();
-  if ( aColumnId == 2 || aColumnId == 3 ) {
-    QDoubleSpinBox* aDblSpin = dynamic_cast<QDoubleSpinBox*>( theEditor );
-    if ( aDblSpin ) {
-      double aValue = aDblSpin->value();
-      theModel->setData( theIndex, aValue, Qt::UserRole);
-    }
-  }
-  else
-    QItemDelegate::setModelData( theEditor, theModel, theIndex );
-}
-
-CurveCreator_TableView::CurveCreator_TableView( CurveCreator_ICurve* theCurve,
-                                                QWidget* theParent,
-                                                const QStringList& theCoordTitles )
-: QTableWidget( theParent ), myCurve( theCurve )
-{
-  setItemDelegate( new CurveCreator_TableItemDelegate( this ) );
-  setVisible( false );
-  setColumnCount( 4 );
-  setColumnWidth( 0, SECTION_NAME_COLUMN_WIDTH );
-  setColumnWidth( 1, POINT_INDEX_COLUMN_WIDTH );
-  QStringList aLabels;
-  QString aCoord1 = theCoordTitles.size() > 0 ? theCoordTitles[0] : tr( "X" ); // tr( "X_POSITION_LBL" )
-  QString aCoord2 = theCoordTitles.size() > 1 ? theCoordTitles[1] : tr( "Y" ); // tr( "Y_POSITION_LBL" )
-  //aLabels << tr( "SECTION_LABEL" ) << tr( "IDENTIFIER_LABEL" ) << aCoord1 << aCoord2;
-  aLabels << tr( "Section" ) << "Index" << aCoord1 << aCoord2;
-  setHorizontalHeaderLabels( aLabels );
-}
-
-void CurveCreator_TableView::setCurve( CurveCreator_ICurve* theCurve )
-{
-  myCurve = theCurve;
-}
-
-void CurveCreator_TableView::setLocalPointsToTable(
-  const CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  setRowCount( thePoints.size() );
-
-  int aRowId = 0;
-  CurveCreator_ICurve::SectionToPointList::const_iterator anIt = thePoints.begin(),
-                                                          aLast = thePoints.end();
-  for ( ; anIt != aLast; anIt++ ) {
-    CurveCreator_ICurve::SectionToPoint aSPoint = *anIt;
-    int anISection = aSPoint.first;
-    int anIPoint = aSPoint.second;
-
-    QTableWidgetItem* anItem;
-    anItem = new QTableWidgetItem( myCurve->getSectionName( anISection ).c_str() );
-    anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
-    anItem->setData( Qt::UserRole, anISection );
-    setItem( aRowId, 0, anItem );
-
-    anItem = new QTableWidgetItem( QString::number( anIPoint + 1 ) );
-    anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
-    anItem->setData( Qt::UserRole, anIPoint );
-    setItem( aRowId, 1, anItem );
-
-    gp_Pnt aPoint;
-    CurveCreator_UtilsICurve::getPoint( myCurve, anISection, anIPoint, aPoint );
-
-    anItem = item( aRowId, 2 );
-    if ( !anItem ) {
-      anItem = new QTableWidgetItem();
-      setItem( aRowId, 2, anItem );
-    }
-    anItem->setData( Qt::UserRole, aPoint.X() );
-    anItem->setData( Qt::DisplayRole, QString::number( aPoint.X(), 'f', 2 ) );
-
-    anItem = item( aRowId, 3 );
-    if ( !anItem ) {
-      anItem = new QTableWidgetItem();
-      setItem( aRowId, 3, anItem );
-    }
-    anItem->setData( Qt::UserRole, aPoint.Y() );
-    anItem->setData( Qt::DisplayRole, QString::number( aPoint.Y(), 'f', 2 ) );
-
-    aRowId++;
-  }
-}
-
-int CurveCreator_TableView::getSectionId( const int theRowId ) const
-{
-  return item( theRowId, 0 )->data( Qt::UserRole ).toInt();
-}
-
-/**
- * Returns a point index from the table
- * \param theRowId a table row
- */
-int CurveCreator_TableView::getPointId( const int theRowId ) const
-{
-  return item( theRowId, 1 )->data( Qt::UserRole ).toInt();
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_TableView.h b/src/HYDROCurveCreator/CurveCreator_TableView.h
deleted file mode 100644 (file)
index 4565ab5..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVECREATOR_TABLEVIEW_H
-#define CURVECREATOR_TABLEVIEW_H
-
-#include "CurveCreator_ICurve.hxx"
-
-#include <QItemDelegate>
-#include <QTableWidget>
-
-class CurveCreator_TableItemDelegate : public QItemDelegate
-{
-public:
-  CurveCreator_TableItemDelegate( QObject* theParent );
-  ~CurveCreator_TableItemDelegate() {}
-
-  virtual QWidget* createEditor( QWidget* theParent,
-                                 const QStyleOptionViewItem& theOption,
-                                 const QModelIndex& theIndex ) const;
-  virtual void setEditorData( QWidget* theEditor, const QModelIndex& theIndex ) const;
-  virtual void setModelData( QWidget* theEditor, QAbstractItemModel* theModel,
-                                 const QModelIndex& theIndex ) const;
-};
-
-class CurveCreator_TableView : public QTableWidget
-{
-public:
-  CurveCreator_TableView( CurveCreator_ICurve* theCurve, QWidget* theParent = 0,
-                          const QStringList& theCoordTitles = QStringList() );
-  ~CurveCreator_TableView() {};
-
-  void setCurve( CurveCreator_ICurve* theCurve );
-
-  void setLocalPointsToTable( const CurveCreator_ICurve::SectionToPointList& thePoints );
-
-  /**
-   * Returns a section index from the table
-   * \param theRowId a table row
-   */
-  int getSectionId( const int theRowId ) const;
-  /**
-   * Returns a point index from the table
-   * \param theRowId a table row
-   */
-  int getPointId( const int theRowId ) const;
-
-private:
-  CurveCreator_ICurve* myCurve;
-
-};
-
-#endif // CURVECREATOR_TABLEVIEW_H
diff --git a/src/HYDROCurveCreator/CurveCreator_TreeView.cxx b/src/HYDROCurveCreator/CurveCreator_TreeView.cxx
deleted file mode 100755 (executable)
index 36d1dfc..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_TreeView.h"
-#include "CurveCreator_ICurve.hxx"
-
-#include <SUIT_Session.h>
-#include <SUIT_ResourceMgr.h>
-
-#include <QHeaderView>
-#include <QtAlgorithms>
-
-#define ID_SECTION -1
-
-CurveCreator_TreeViewModel::CurveCreator_TreeViewModel( CurveCreator_ICurve* theCurve, QObject* parent ) :
-  QAbstractItemModel(parent), myCurve(theCurve)
-{
-  SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
-  QPixmap aSplineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE")));
-  QPixmap aPolylineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE")));
-  QPixmap aClosedSplineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_CLOSED_SPLINE")));
-  QPixmap aClosedPolylineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_CLOSED_POLYLINE")));
-  QPixmap aPointIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POINT")));
-
-/*  QPixmap aSplineIcon(tr(":images/ICON_SPLINE"));
-  QPixmap aPolylineIcon(tr(":images/ICON_POLYLINE"));
-  QPixmap aClosedPolylineIcon(tr(":images/ICON_CLOSED_POLYLINE"));
-  QPixmap aClosedSplineIcon(tr(":images/ICON_CLOSED_SPLINE"));
-  QPixmap aPointIcon(tr(":images/ICON_POINT")); */
-
-  if( !aSplineIcon.isNull() )
-    myCachedIcons[ICON_SPLINE] = aSplineIcon;
-
-  if( !aPolylineIcon.isNull() )
-    myCachedIcons[ICON_POLYLINE] = aPolylineIcon;
-
-  if( !aPolylineIcon.isNull() )
-    myCachedIcons[ICON_CLOSED_POLYLINE] = aClosedPolylineIcon;
-
-  if( !aPolylineIcon.isNull() )
-    myCachedIcons[ICON_CLOSED_SPLINE] = aClosedSplineIcon;
-
-  if( !aPointIcon.isNull() )
-    myCachedIcons[ICON_POINT] = aPointIcon;
-
-  setHeaderData(1, Qt::Horizontal, QVariant("Name"), Qt::DisplayRole);
-  setHeaderData(2, Qt::Horizontal, QVariant("Nb points"), Qt::DisplayRole);
-}
-
-int    CurveCreator_TreeViewModel::columnCount(const QModelIndex & parent ) const
-{
-  if( parent.internalId() == ID_SECTION )
-    return 2;
-  else
-    return 2;
-}
-
-QVariant       CurveCreator_TreeViewModel::data(const QModelIndex & index, int role ) const
-{
-  int aRow = index.row();
-  int aColumn = index.column();
-  if( myCurve ){
-    if( index.internalId() == ID_SECTION ){
-      if( role == Qt::DisplayRole ){
-        if( aColumn == 0 )
-          return QString::fromStdString(myCurve->getSectionName(aRow));
-        else if( aColumn == 1 )
-          return QString::number(myCurve->getNbPoints(aRow));
-        return QVariant();
-      }
-      else if( role == Qt::DecorationRole ){
-        if( aColumn == 0 ){
-          CurveCreator::SectionType aSectionType = myCurve->getSectionType(aRow);
-          if( aSectionType == CurveCreator::Polyline ){
-            if( myCurve->isClosed(aRow) ){
-              return myCachedIcons[ICON_CLOSED_POLYLINE];
-            }
-            else{
-              return myCachedIcons[ICON_POLYLINE];
-            }
-          }
-          else{
-            if( myCurve->isClosed(aRow) ){
-              return myCachedIcons[ICON_CLOSED_SPLINE];
-            }
-            else{
-              return myCachedIcons[ICON_SPLINE];
-            }
-          }
-        }
-      }
-    }
-/*    else{
-      if( role == Qt::DisplayRole ){
-        if( aColumn == 1 )
-          return QVariant();
-        //                    return "Point";
-        else if( aColumn == 0 ){
-          CurveCreator::Coordinates aCoords = myCurve->getCoordinates(index.internalId(),index.row() );
-          QString anOut;
-          if( myCurve->getDimension() == CurveCreator::Dim2d ){
-            anOut = QString(tr("X=%1, Y=%2")).arg(aCoords[0]).arg(aCoords[1]);
-          }
-          else{
-            anOut = QString(tr("X=%1, Y=%2, Z=%3")).arg(aCoords[0]).arg(aCoords[1]).arg(aCoords[2]);
-          }
-          return anOut;
-        }
-      }
-      else if( role == Qt::DecorationRole ){
-        if( aColumn == 0 ){
-          return myCachedIcons[ICON_POINT];
-        }
-      }
-    }*/
-  }
-  return QVariant();
-}
-
-QModelIndex    CurveCreator_TreeViewModel::index(int row, int column, const QModelIndex & parent ) const
-{
-  if( parent.isValid() ){
-    return createIndex(row, column, parent.row() );
-  }
-  else{
-    QModelIndex aParent = createIndex(row, column, ID_SECTION );
-    return aParent;
-  }
-  return QModelIndex();
-}
-
-QModelIndex    CurveCreator_TreeViewModel::parent(const QModelIndex & theIndex) const
-{
-  if( !theIndex.isValid() )
-    return QModelIndex();
-
-  if( theIndex.internalId() == ID_SECTION ){
-    return QModelIndex();
-  }
-  return createIndex( theIndex.internalId(), 0, ID_SECTION  );
-}
-
-int    CurveCreator_TreeViewModel::rowCount(const QModelIndex & parent ) const
-{
-  int aRowCnt = 0;
-  if( myCurve != NULL ){
-    if( !parent.isValid() ){
-      //Section level
-      aRowCnt =  myCurve->getNbSections();
-    }
-    else{
-      if( parent.internalId() == ID_SECTION ){
-        //Points level
-        aRowCnt = myCurve->getNbPoints(parent.row());
-      }
-    }
-  }
-  return aRowCnt;
-}
-
-QModelIndex CurveCreator_TreeViewModel::sectionIndex( int theSection ) const
-{
-  return createIndex( theSection, 0, ID_SECTION );
-}
-
-QModelIndex CurveCreator_TreeViewModel::nbPointsIndex( int theSection ) const
-{
-  return createIndex( theSection, 1, ID_SECTION );
-}
-
-QModelIndex CurveCreator_TreeViewModel::pointIndex( int theSection, int thePoint ) const
-{
-  return createIndex( thePoint, 0, theSection );
-}
-
-bool CurveCreator_TreeViewModel::isSection( const QModelIndex& theIndx ) const
-{
-  if( theIndx.internalId() == ID_SECTION )
-    return true;
-  return false;
-}
-
-int CurveCreator_TreeViewModel::getSection( const QModelIndex& theIndx ) const
-{
-  if( theIndx.internalId() == ID_SECTION )
-    return theIndx.row();
-  return theIndx.internalId();
-}
-
-int CurveCreator_TreeViewModel::getPoint( const QModelIndex& theIndx ) const
-{
-  if( theIndx.internalId() == ID_SECTION )
-    return -1;
-  return theIndx.row();
-}
-
-void CurveCreator_TreeViewModel::setCurve( CurveCreator_ICurve* theCurve )
-{
-  myCurve = theCurve;
-  reset();
-}
-
-/*****************************************************************************************/
-CurveCreator_TreeView::CurveCreator_TreeView( CurveCreator_ICurve* theCurve, QWidget *parent) :
-  QTreeView(parent)
-{
-  header()->hide();
-  header()->setResizeMode(QHeaderView::ResizeToContents);
-  setUniformRowHeights(true);
-  setContextMenuPolicy( Qt::CustomContextMenu );
-  CurveCreator_TreeViewModel* aModel = new CurveCreator_TreeViewModel(theCurve, this);
-  setModel(aModel);
-  setSelectionBehavior(SelectRows);
-  setSelectionMode(SingleSelection);
-  setRootIsDecorated(false);
-  setItemsExpandable(false);
-  setAllColumnsShowFocus(true);
-  connect( selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
-           this, SIGNAL(selectionChanged()) );
-  connect( this, SIGNAL(activated(QModelIndex)), this, SLOT(onActivated(QModelIndex)));
-}
-
-QList<int> CurveCreator_TreeView::getSelectedSections() const
-{
-  QList<int> aSect;
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( !aModel )
-    return aSect;
-//  QModelIndexList anIndxs = selectionModel()->selectedIndexes();
-  QModelIndexList anIndxs = selectionModel()->selectedRows();
-  for( int i = 0 ; i < anIndxs.size() ; i++ ){
-    if( aModel->isSection(anIndxs[i]) ){
-      aSect << aModel->getSection( anIndxs[i] );
-    }
-  }
-  return aSect;
-}
-
-void CurveCreator_TreeView::pointsAdded( int theSection, int thePoint, int thePointsCnt )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    QModelIndex aSectIndx = aModel->sectionIndex( theSection );
-    rowsInserted(aSectIndx, thePoint, thePoint + thePointsCnt - 1 );
-//    expand( aSectIndx );
-    update( aModel->nbPointsIndex( theSection ) );
-  }
-}
-
-void CurveCreator_TreeView::pointDataChanged( int theSection, int thePoint )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    QModelIndex aPointIndx = aModel->pointIndex( theSection, thePoint );
-    dataChanged( aPointIndx, aPointIndx );
-  }
-}
-
-void CurveCreator_TreeView::pointsRemoved( int theSection, int thePoint, int thePointsCnt )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    for( int i = 0 ; i < thePointsCnt ; i++ ){
-      QModelIndex aSectIndx = aModel->pointIndex(theSection, thePoint + i);
-      selectionModel()->select(aSectIndx,QItemSelectionModel::Deselect);
-    }
-    QModelIndex aSectIndx = aModel->sectionIndex( theSection );
-    rowsRemoved(aSectIndx, thePoint, thePoint + thePointsCnt - 1 );
-  }
-}
-
-void CurveCreator_TreeView::sectionAdded( int theSection )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    int nbRows = aModel->rowCount();
-    int aSection = (theSection == -1 ? (nbRows==0 ? 0 : nbRows-1) : theSection);
-    rowsInserted(QModelIndex(), aSection, aSection );
-    QModelIndex aSectIndx = aModel->sectionIndex(aSection);
-    selectionModel()->select(aSectIndx, QItemSelectionModel::Rows | QItemSelectionModel::ClearAndSelect);
-  }
-}
-
-void CurveCreator_TreeView::sectionChanged( int theSection, int aSectCnt )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    QModelIndex aFirstSectIndx = aModel->sectionIndex( theSection );
-    QModelIndex aLastSectIndx = aModel->sectionIndex( theSection + aSectCnt - 1);
-    dataChanged( aFirstSectIndx, aLastSectIndx );
-  }
-}
-
-void CurveCreator_TreeView::sectionsRemoved( int theSection, int theSectionCnt )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    for( int i = 0 ; i < theSectionCnt ; i++ ){
-      QModelIndex aSectIndx = aModel->sectionIndex(theSection + i);
-      this->selectionModel()->select(aSectIndx,QItemSelectionModel::Deselect);
-    }
-    rowsRemoved( QModelIndex(), theSection, theSection+theSectionCnt-1 );
-  }
-}
-
-void CurveCreator_TreeView::setIndexState( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent )
-{
-  setExpanded( theIndx, isExpanded );
-  QItemSelectionModel::SelectionFlags aFlag = QItemSelectionModel::Select;
-  if( !isSelected ){
-    aFlag = QItemSelectionModel::Deselect;
-  }
-  selectionModel()->select( theIndx, aFlag );
-}
-
-void CurveCreator_TreeView::getIndexInfo( const QModelIndex& theIndx, bool& isExpand, bool& isSelected, bool& isCurrent )
-{
-  isExpand = isExpanded(theIndx);
-  isSelected = selectionModel()->isSelected(theIndx);
-  isCurrent = (theIndx == selectionModel()->currentIndex());
-}
-
-void CurveCreator_TreeView::swapIndexes( const QModelIndex& theFirst, const QModelIndex& theSecond )
-{
-  bool isFirstSelected;
-  bool isFirstExpanded;
-  bool isFirstCurrent;
-  getIndexInfo( theFirst, isFirstExpanded, isFirstSelected, isFirstCurrent );
-
-  bool isSecondSelected;
-  bool isSecondExpanded;
-  bool isSecondCurrent;
-  getIndexInfo( theSecond, isSecondExpanded, isSecondSelected, isSecondCurrent );
-
-  setIndexState( theFirst, isSecondExpanded, isSecondSelected, isSecondCurrent );
-  setIndexState( theSecond, isFirstExpanded, isFirstSelected, isFirstCurrent );
-  dataChanged(theFirst,theFirst);
-  dataChanged(theSecond,theSecond);
-}
-
-void CurveCreator_TreeView::sectionsSwapped( int theSection, int theOffset )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    QModelIndex aFirstIndex = aModel->sectionIndex( theSection );
-    QModelIndex aSecondIndex = aModel->sectionIndex( theSection + theOffset );
-    swapIndexes( aFirstIndex, aSecondIndex );
-  }
-}
-
-void CurveCreator_TreeView::setSelectedSections( const QList<int>& theList )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel ){
-    selectionModel()->clearSelection();
-    for( int i = 0 ; i < theList.size() ; i++ ){
-      QModelIndex aSectIndx = aModel->sectionIndex(theList[i]);
-      selectionModel()->select(aSectIndx, QItemSelectionModel::Select | QItemSelectionModel::Rows );
-    }
-  }
-}
-
-bool pointLessThan(const QPair<int,int> &s1, const QPair<int,int> &s2)
-{
-  if( s1.first < s2.first )
-    return true;
-  if( s1.first > s2.first )
-    return false;
-  return s1.second < s2.second;
-}
-
-CurveCreator_TreeView::SelectionType CurveCreator_TreeView::getSelectionType() const
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( !aModel )
-    return ST_NOSEL;
-  bool isPointSel = false;
-  bool isSectSel = false;
-  bool isOneSection = true;
-  int aSectNum = -1;
-  QModelIndexList aLst = selectionModel()->selectedIndexes();
-  for( int i = 0 ; i < aLst.size() ; i++ ){
-    if( aModel->isSection( aLst[i] ) ){
-      isSectSel = true;
-    }
-    else{
-      isPointSel = true;
-      if( aSectNum == -1 ){
-        aSectNum = aModel->getSection(aLst[i]);
-      }
-      else{
-        if( aSectNum != aModel->getSection( aLst[i] ) ){
-          isOneSection = false;
-        }
-      }
-    }
-  }
-  if( isSectSel && !isPointSel )
-    return ST_SECTIONS;
-  if( isPointSel && !isSectSel ){
-    if( isOneSection ){
-      return ST_POINTS_ONE_SECTION;
-    }
-    return ST_POINTS;
-  }
-  if( isPointSel && isSectSel )
-    return ST_MIXED;
-  return ST_NOSEL;
-}
-
-void CurveCreator_TreeView::onActivated( QModelIndex theIndx )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( !aModel )
-    return;
-  int aSect = aModel->getSection(theIndx);
-  if( aModel->isSection(theIndx) ){
-    emit sectionEntered( aSect );
-  }
-}
-
-void CurveCreator_TreeView::setCurve( CurveCreator_ICurve* theCurve )
-{
-  CurveCreator_TreeViewModel* aModel = dynamic_cast<CurveCreator_TreeViewModel*>(model());
-  if( aModel )
-    aModel->setCurve(theCurve);
-  reset();
-}
-
-void CurveCreator_TreeView::reset()
-{
-  QList<int> aSelSections = getSelectedSections();
-  QTreeView::reset();
-  setSelectedSections(aSelSections);
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_TreeView.h b/src/HYDROCurveCreator/CurveCreator_TreeView.h
deleted file mode 100755 (executable)
index be00a75..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVECREATOR_TREEVIEW_H
-#define CURVECREATOR_TREEVIEW_H
-
-#include <QTreeView>
-#include <QAbstractItemModel>
-
-class CurveCreator_ICurve;
-
-class CurveCreator_TreeViewModel : public QAbstractItemModel
-{
-public:
-  CurveCreator_TreeViewModel( CurveCreator_ICurve* theCurve, QObject* parent );
-  virtual int  columnCount(const QModelIndex & parent = QModelIndex()) const;
-  virtual int  rowCount(const QModelIndex & parent = QModelIndex()) const;
-  virtual QVariant     data(const QModelIndex & index, int role = Qt::DisplayRole) const;
-  virtual QModelIndex  index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
-  virtual QModelIndex  parent(const QModelIndex & theIndex) const;
-//  virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole);
-
-  QModelIndex sectionIndex( int theSection ) const;
-  QModelIndex nbPointsIndex( int theSection ) const;
-  QModelIndex pointIndex( int theSection, int thePoint ) const;
-
-  bool    isSection( const QModelIndex& theIndx ) const;
-  int     getSection( const QModelIndex& theIndx ) const;
-  int     getPoint( const QModelIndex& theIndx ) const;
-
-  void    setCurve( CurveCreator_ICurve* theCurve );
-
-private:
-  enum IconType{ ICON_POLYLINE, ICON_SPLINE, ICON_CLOSED_SPLINE, ICON_CLOSED_POLYLINE, ICON_POINT };
-private:
-  CurveCreator_ICurve*          myCurve;
-  QMap<IconType, QPixmap>      myCachedIcons;
-};
-
-class CurveCreator_TreeView : public QTreeView
-{
-  Q_OBJECT
-public:
-  enum SelectionType{ ST_NOSEL, ST_POINTS, ST_POINTS_ONE_SECTION, ST_SECTIONS, ST_MIXED };
-public:
-  explicit CurveCreator_TreeView( CurveCreator_ICurve* theCurve, QWidget *parent = 0);
-  SelectionType getSelectionType() const;
-  QList<int> getSelectedSections() const;
-
-  void    pointsAdded( int theSection, int thePoint, int thePointsCnt=1 );
-  void    pointDataChanged( int theSection, int thePoint );
-  void    pointsRemoved(int theSection, int thePoint, int thePointsCnt=1 );
-
-  void    sectionAdded( int theSection );
-  void    sectionChanged(int theSection , int aSectCnt = 1);
-  void    sectionsRemoved( int theSection, int theSectionCnt=1 );
-  void    sectionsSwapped( int theSection, int theOffset );
-
-  void    setSelectedSections( const QList<int>& theList );
-
-  void    setCurve( CurveCreator_ICurve* theCurve );
-
-  void    reset();
-
-signals:
-  void    selectionChanged();
-  void    sectionEntered(int);
-
-protected slots:
-  void onActivated( QModelIndex theIndx );
-protected:
-  void setIndexState( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent );
-  void swapIndexes( const QModelIndex& theFirst, const QModelIndex& theSecond );
-  void getIndexInfo( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent );
-
-};
-
-#endif // CURVECREATOR_TREEVIEW_H
diff --git a/src/HYDROCurveCreator/CurveCreator_Utils.cxx b/src/HYDROCurveCreator/CurveCreator_Utils.cxx
deleted file mode 100644 (file)
index 7be2d6b..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_Utils.h"
-#include "CurveCreator.hxx"
-#include "CurveCreator_UtilsICurve.hxx"
-
-#include <GEOMUtils.hxx>
-
-#include <gp_Pln.hxx>
-
-#include <TopoDS.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Wire.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Compound.hxx>
-
-#include <AIS_ListOfInteractive.hxx>
-#include <AIS_ListIteratorOfListOfInteractive.hxx>
-#include <AIS_Shape.hxx>
-#include <AIS_Line.hxx>
-#include <AIS_Trihedron.hxx>
-#include <AIS_LocalContext.hxx>
-
-#include <Geom_Point.hxx>
-#include <Geom_BSplineCurve.hxx>
-#include <Geom_Line.hxx>
-
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-#include <GeomAPI_ProjectPointOnCurve.hxx>
-#include <SelectMgr_EntityOwner.hxx>
-#include <SelectMgr_Selection.hxx>
-#include <Select3D_SensitivePoint.hxx>
-
-#include <BRep_Tool.hxx>
-#include <BRep_Builder.hxx>
-#include <BRepBuilderAPI_MakeVertex.hxx>
-#include <BRepBuilderAPI_MakeEdge.hxx>
-#include <BRepBuilderAPI_MakeWire.hxx>
-
-#include <TColgp_HArray1OfPnt.hxx>
-#include <TColStd_HArray1OfBoolean.hxx>
-#include <TColgp_Array1OfVec.hxx>
-#include <GeomAPI_Interpolate.hxx>
-
-#include <ProjLib.hxx>
-#include <ElSLib.hxx>
-
-#include <math.h>
-
-#include "CurveCreator_ICurve.hxx"
-
-const double LOCAL_SELECTION_TOLERANCE = 0.0001;
-const int    SCENE_PIXEL_PROJECTION_TOLERANCE = 10;
-const int    SCENE_PIXEL_POINT_TOLERANCE = 5;
-
-//=======================================================================
-// function : ConvertClickToPoint()
-// purpose  : Returns the point clicked in 3D view
-//=======================================================================
-void CurveCreator_Utils::ConvertPointToClick( const gp_Pnt& thePoint,
-                                              Handle(V3d_View) theView,
-                                              int& x, int& y )
-{
-  theView->Convert(thePoint.X(), thePoint.Y(), thePoint.Z(), x, y );
-}
-
-
-//=======================================================================
-// function : ConvertClickToPoint()
-// purpose  : Returns the point clicked in 3D view
-//=======================================================================
-gp_Pnt CurveCreator_Utils::ConvertClickToPoint( int x, int y, Handle(V3d_View) aView )
-{
-  // the 3D point, that is a projection of the pixels to the XYZ view plane
-  //return GEOMUtils::ConvertClickToPoint( x, y, aView );
-
-  // we need the projection to the XOY plane
-  // 1. find a point in the plane of the eye and the normal to the plane
-  Standard_Real X, Y, Z;
-  Quantity_Parameter Vx, Vy, Vz;
-  aView->ConvertWithProj( x, y, X, Y, Z, Vx, Vy, Vz );
-
-  // 2. build a ray from the point by the normal to the XOY plane and intersect it
-  // The ray equation is the following : p(x,y,z) = p0(x,y,z) + t*V(x,y,z)
-  // X,Y,Z - defines p0(x,y,z), Vx,Vy,Vz - defines V(x,y,z)
-  // p(x,y,z) - is a searched point, t - should to be calculated by the condition of XOY plane
-  // The system of equations is the following:
-  // p(x) = p0(x)+t*V(x)
-  // p(y) = p0(y)+t*V(y)
-  // p(z) = p0(z)+t*V(z)
-  // p(z) = 0
-
-  Standard_Real aXp, aYp, aZp;
-  //It is not possible to use Precision::Confusion(), because it is e-0.8, but V is sometimes e-6
-  Standard_Real aPrec = LOCAL_SELECTION_TOLERANCE;
-  if ( fabs( Vz ) > aPrec ) {
-    Standard_Real aT = -Z/Vz;
-    aXp = X + aT*Vx;
-    aYp = Y + aT*Vy;
-    aZp = Z + aT*Vz;
-  }
-  else { // Vz = 0 - the eyed plane is orthogonal to Z plane - XOZ, or YOZ
-    aXp = aYp = aZp = 0;
-    if ( fabs( Vy ) < aPrec ) // Vy = 0 - the YOZ plane
-      aYp = Y;
-    else if ( fabs( Vx ) < aPrec ) // Vx = 0 - the XOZ plane
-      aXp = X;
-  }
-  /*std::cout << "ConvertClickToPoint: " << std::endl
-            << "XYZ1 = (" << X << ", " << Y << ", " << Z << "); " << std::endl
-            << "Vxyz = (" << Vx << ", " << Vy << ", " << Vz << "); " << std::endl
-            << "Resp = (" << aXp << ", " << aYp << ", " << aZp << "); " << std::endl;*/
-
-  gp_Pnt ResultPoint( aXp, aYp, aZp );
-  return ResultPoint;
-}
-
-void CurveCreator_Utils::constructShape( const CurveCreator_ICurve* theCurve,
-                                         TopoDS_Shape& theShape )
-{
-  BRep_Builder aBuilder;
-  TopoDS_Compound aComp;
-  aBuilder.MakeCompound( aComp );
-  for( int iSection = 0 ; iSection < theCurve->getNbSections() ; iSection++ )
-  {
-    int theISection = iSection;
-
-    CurveCreator::SectionType aSectType = theCurve->getSectionType( theISection );
-    int aPointSize = theCurve->getNbPoints( theISection );
-    if ( aPointSize == 0 )
-      continue;
-
-    bool aSectIsClosed = theCurve->isClosed( theISection );
-    bool isPolyline = aSectType == CurveCreator::Polyline;
-
-    int iPoint = 0;
-    gp_Pnt aPrevPoint, aPoint;
-    // filters the curve points to skip equal points
-    std::vector<gp_Pnt> aPoints;
-    CurveCreator_UtilsICurve::getPoint( theCurve, theISection, iPoint, aPoint );
-    aPoints.push_back( aPoint );
-    aPrevPoint = aPoint;
-    iPoint++;
-    for( ; iPoint < aPointSize; iPoint++ ) {
-      CurveCreator_UtilsICurve::getPoint( theCurve, theISection, iPoint, aPoint );
-      if ( !isEqualPoints( aPrevPoint, aPoint ) )
-        aPoints.push_back( aPoint );
-      aPrevPoint = aPoint;
-    }
-    int aNbPoints = aPoints.size();
-
-    if ( aNbPoints == 1 ) {
-      aPoint = aPoints.front();
-      TopoDS_Vertex aVertex = BRepBuilderAPI_MakeVertex( aPoint ).Vertex();
-      aBuilder.Add( aComp, aVertex );
-    }
-    else if ( aNbPoints > 1 ) {
-      Handle(TColgp_HArray1OfPnt) aHCurvePoints = new TColgp_HArray1OfPnt(1, aNbPoints);
-      TColgp_Array1OfVec aTangents(1, aNbPoints);
-      Handle(TColStd_HArray1OfBoolean) aTangentFlags = new TColStd_HArray1OfBoolean(1, aNbPoints);
-      gp_Vec aNullVec(0, 0, 0);
-
-      TopoDS_Edge aPointEdge;
-      TopoDS_Vertex aVertex;
-
-      std::vector<gp_Pnt>::const_iterator aPointIt = aPoints.begin(), aPointLast = aPoints.end();
-      aPoint = *aPointIt;
-
-      int aHIndex = 1;
-      aVertex = BRepBuilderAPI_MakeVertex( aPoint ).Vertex();
-      aBuilder.Add( aComp, aVertex );
-      if ( !isPolyline ) {
-        aHCurvePoints->SetValue( aHIndex, aPoint );
-        aTangents.SetValue( aHIndex, aNullVec );
-        aTangentFlags->SetValue( aHIndex, Standard_False );
-        aHIndex++;
-      }
-
-      aPrevPoint = aPoint;
-      aPointIt++;
-      for( ; aPointIt != aPointLast; aPointIt++ ) {
-        aPoint = *aPointIt;
-        aVertex = BRepBuilderAPI_MakeVertex( aPoint ).Vertex();
-        aBuilder.Add( aComp, aVertex );
-        if ( isPolyline ) {
-          TopoDS_Edge aPointEdge = BRepBuilderAPI_MakeEdge( aPrevPoint, aPoint ).Edge();
-          aBuilder.Add( aComp, aPointEdge );
-        }
-        else {
-          aHCurvePoints->SetValue( aHIndex, aPoint );
-          aTangents.SetValue( aHIndex, aNullVec );
-          aTangentFlags->SetValue( aHIndex, Standard_False );
-          aHIndex++;
-        }
-        aPrevPoint = aPoint;
-      }
-      if( aSectIsClosed && ( aNbPoints > 2 ) ) {
-        aPoint = aPoints.front();
-        aVertex = BRepBuilderAPI_MakeVertex( aPoint ).Vertex();
-        aBuilder.Add( aComp, aVertex );
-        if ( isPolyline ) {
-          aPointEdge = BRepBuilderAPI_MakeEdge( aPrevPoint, aPoint ).Edge();
-          aBuilder.Add( aComp, aPointEdge );
-        }
-      }
-      if( !isPolyline ) {
-        // compute BSpline
-        Handle(Geom_BSplineCurve) aBSplineCurve;
-        GeomAPI_Interpolate aGBC(aHCurvePoints, aSectIsClosed, gp::Resolution());
-        // correct the spline degree to be as 3 for non-periodic spline if number of points
-        // less than 3. It is need to have a knot in each spline point. This knots are used
-        // to found a neighbour points when a new point is inserted between two existing.
-        if (!aSectIsClosed ) {
-          if (aHCurvePoints->Length() == 3)
-            aGBC.Load(aTangents, aTangentFlags);
-        }
-
-        aGBC.Perform();
-        if ( aGBC.IsDone() )
-          aBSplineCurve = aGBC.Curve();
-        TopoDS_Edge anEdge = BRepBuilderAPI_MakeEdge( aBSplineCurve ).Edge();
-        TopoDS_Wire aWire = BRepBuilderAPI_MakeWire( anEdge ).Wire();
-        aBuilder.Add( aComp, aWire );
-      }
-    }
-  }
-  theShape = aComp;
-}
-
-class CompareSectionToPoint
-{
-public:
-  CompareSectionToPoint( const int theISection = -1, const int theIPoint = -1 )
-    : mySectionId( theISection ), myPointId( theIPoint ) {};
-  ~CompareSectionToPoint() {}
-
-  bool operator < ( const CompareSectionToPoint& theOther ) const
-  {
-    bool isLess = mySectionId < theOther.mySectionId;
-    if ( !isLess && mySectionId == theOther.mySectionId )
-      isLess = myPointId < theOther.myPointId;
-    return isLess;
-  }
-
-private:
-  int mySectionId;
-  int myPointId;
-};
-
-
-void CurveCreator_Utils::getSelectedPoints( Handle(AIS_InteractiveContext) theContext,
-                                            const CurveCreator_ICurve* theCurve,
-                                            CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  thePoints.clear();
-
-  std::list<float> aSelectedPoints;
-  gp_Pnt aPnt;
-  std::map<CompareSectionToPoint, int> aPointsMap;
-
-  CurveCreator_ICurve::SectionToPointList aPoints;
-  for ( theContext->InitSelected(); theContext->MoreSelected(); theContext->NextSelected() ) {
-    TopoDS_Vertex aVertex;
-    TopoDS_Shape aShape = theContext->SelectedShape();
-    if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX )
-      aVertex = TopoDS::Vertex( theContext->SelectedShape() );
-
-    if ( aVertex.IsNull() )
-      continue;
-    aPnt = BRep_Tool::Pnt( aVertex );
-
-    CurveCreator_UtilsICurve::findSectionsToPoints( theCurve, aPnt.X(), aPnt.Y(), aPoints );
-    CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aPoints.begin(),
-                                                            aLast = aPoints.end();
-    CompareSectionToPoint aPoint;
-    for ( ; anIt != aLast; anIt++ ) {
-      aPoint = CompareSectionToPoint( (*anIt).first, (*anIt).second );
-      if ( aPointsMap.find( aPoint ) != aPointsMap.end() )
-        continue;
-      aPointsMap[aPoint] = 0;
-
-      thePoints.push_back( *anIt );
-    }
-  }
-}
-
-void CurveCreator_Utils::setSelectedPoints( Handle(AIS_InteractiveContext) theContext,
-                                            const CurveCreator_ICurve* theCurve,
-                                            const CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  if ( !theCurve )
-    return;
-
-  Handle(AIS_InteractiveObject) anAIS = theCurve->getAISObject();
-  if ( anAIS.IsNull() )
-    return;
-  Handle(AIS_Shape) anAISShape = Handle(AIS_Shape)::DownCast( anAIS );
-  if ( anAISShape.IsNull() )
-    return;
-
-  //ASL: we convert list of point indices to list of points coordinates
-  int aSize = thePoints.size();
-  std::vector<gp_Pnt> aPntsToSelect( aSize );
-
-  CurveCreator_ICurve::SectionToPointList::const_iterator
-                     aPIt = thePoints.begin(), aPLast = thePoints.end();
-  CurveCreator_ICurve::SectionToPoint aSToPoint;
-  for( int i=0; aPIt != aPLast; aPIt++, i++ )
-  {
-    gp_Pnt aPntToSelect;
-    CurveCreator_UtilsICurve::getPoint( theCurve, aPIt->first, aPIt->second, aPntToSelect );
-    aPntsToSelect[i] = aPntToSelect;
-  }
-
-  theContext->ClearSelected( Standard_False );
-  //ASL: we switch off automatic highlight to improve performance of selection
-  theContext->SetAutomaticHilight( Standard_False );
-
-  Handle_SelectMgr_Selection aSelection = anAISShape->Selection( AIS_Shape::SelectionMode( TopAbs_VERTEX ) );
-  for( aSelection->Init(); aSelection->More(); aSelection->Next() )
-  {
-    Handle_SelectBasics_SensitiveEntity aSenEntity = aSelection->Sensitive();
-    Handle_Select3D_SensitivePoint aSenPnt = Handle_Select3D_SensitivePoint::DownCast( aSenEntity );
-
-    gp_Pnt anOwnerPnt = aSenPnt->Point();
-    Handle_SelectMgr_EntityOwner anOwner = Handle_SelectMgr_EntityOwner::DownCast( aSenPnt->OwnerId() );
-
-
-    CurveCreator_ICurve::SectionToPointList::const_iterator anIt = thePoints.begin(),
-                                                                   aLast = thePoints.end();
-    bool isFound = false;
-    for( int i=0; i<aSize; i++ )
-    {
-      bool isIntersect = fabs( aPntsToSelect[i].X() - anOwnerPnt.X() ) < LOCAL_SELECTION_TOLERANCE &&
-                         fabs( aPntsToSelect[i].Y() - anOwnerPnt.Y() ) < LOCAL_SELECTION_TOLERANCE;
-      if( isIntersect )
-      {
-        theContext->AddOrRemoveSelected( anOwner, Standard_False );
-        break;
-      }
-    }
-  }
-
-  //ASL: we switch on again automatic highlight (otherwise selection will not be shown)
-  //     and call HilightPicked to draw selected owners
-  theContext->SetAutomaticHilight( Standard_True );
-  theContext->LocalContext()->HilightPicked( Standard_True );
-}
-
-//=======================================================================
-// function : setLocalPointContext
-// purpose  : Open/close the viewer local context
-//=======================================================================
-void CurveCreator_Utils::setLocalPointContext( const CurveCreator_ICurve* theCurve,
-                                               Handle(AIS_InteractiveContext) theContext,
-                                               const bool theOpen )
-{
-  if ( !theContext )
-    return;
-
-  if ( theOpen ) {
-    // Open local context if there is no one
-    if ( !theContext->HasOpenedContext() ) {
-      theContext->ClearCurrents( false );
-      theContext->OpenLocalContext( false/*use displayed objects*/, true/*allow shape decomposition*/ );
-    }
-    // load the curve AIS object to the local context with the point selection
-    Handle(AIS_InteractiveObject) anAIS = theCurve->getAISObject();
-    if ( !anAIS.IsNull() )
-    {
-      if ( anAIS->IsKind( STANDARD_TYPE( AIS_Shape ) ) )
-      {
-        theContext->Load( anAIS, -1/*selection mode*/, true/*allow decomposition*/ );
-        theContext->Activate( anAIS, AIS_Shape::SelectionMode( (TopAbs_ShapeEnum)TopAbs_VERTEX ) );
-      }
-    }
-  }
-  else {
-    if ( theContext->HasOpenedContext() )
-      theContext->CloseAllContexts();
-  }
-}
-
-bool CurveCreator_Utils::pointOnObject( Handle(V3d_View) theView,
-                                        Handle(AIS_InteractiveObject) theObject,
-                                        const int theX, const int theY,
-                                        gp_Pnt& thePoint,
-                                        gp_Pnt& thePoint1, gp_Pnt& thePoint2 )
-{
-  bool isFullFound = false;
-
-  if ( theObject.IsNull() || theView.IsNull() )
-    return isFullFound;
-  Handle(AIS_Shape) aShape = Handle(AIS_Shape)::DownCast( theObject );
-  if ( aShape.IsNull() )
-    return isFullFound;
-  const TopoDS_Compound& aCompound = TopoDS::Compound( aShape->Shape() );
-  if ( aCompound.IsNull() )
-    return isFullFound;
-
-  gp_Pnt aCurPoint, aCurPoint1, aCurPoint2;
-  gp_Pnt aFoundPoint, aFoundPnt1, aFoundPnt2;
-  Standard_Real aParameter;
-  bool isFound = false;
-  int aDelta, aMinDelta = 2*SCENE_PIXEL_PROJECTION_TOLERANCE*SCENE_PIXEL_PROJECTION_TOLERANCE;
-  TopExp_Explorer anExp( aCompound, TopAbs_EDGE );
-  for ( ; anExp.More(); anExp.Next())
-  {
-    const TopoDS_Edge& anEdge = TopoDS::Edge(anExp.Current());
-    if ( anEdge.IsNull() )
-      continue;
-    Standard_Real aFirst, aLast;
-    Handle(Geom_Curve) aCurve = BRep_Tool::Curve( anEdge, aFirst, aLast );
-    if ( aCurve->IsKind( STANDARD_TYPE(Geom_BSplineCurve) ) ) {
-      Handle(Geom_BSplineCurve) aBSplineCurve =
-                          Handle(Geom_BSplineCurve)::DownCast( aCurve );
-      if ( !aBSplineCurve.IsNull() ) {
-        isFound = hasProjectPointOnCurve( theView, theX, theY, aBSplineCurve,
-                                          aParameter, aDelta );
-        if ( isFound ) {
-          aCurPoint = aBSplineCurve->Value( aParameter );
-          Standard_Integer anI1, anI2;
-          aBSplineCurve->LocateU( aParameter, LOCAL_SELECTION_TOLERANCE, anI1, anI2 );
-          aCurPoint1 = aBSplineCurve->Value( aBSplineCurve->Knot( anI1 ) );
-          aCurPoint2 = aBSplineCurve->Value( aBSplineCurve->Knot( anI2 ) );
-        }
-      }
-    }
-    else { // a curve built on a polyline edge
-      Handle(Geom_Line) aGLine = Handle(Geom_Line)::DownCast( aCurve );
-      if ( aGLine.IsNull() )
-        continue;
-      isFound = hasProjectPointOnCurve( theView, theX, theY, aGLine, aParameter,
-                                        aDelta );
-      if ( isFound ) {
-        aCurPoint = aGLine->Value( aParameter );
-        TopoDS_Vertex V1, V2;
-        TopExp::Vertices( anEdge, V1, V2, Standard_True );
-        if ( V1.IsNull() || V2.IsNull() )
-          continue;
-        aCurPoint1 = BRep_Tool::Pnt(V1);
-        aCurPoint2 = BRep_Tool::Pnt(V2);
-
-        // check that the projected point is on the bounded curve
-        gp_Vec aVec1( aCurPoint1, aCurPoint );
-        gp_Vec aVec2( aCurPoint2, aCurPoint );
-        isFound = fabs( aVec1.Angle( aVec2 ) - M_PI ) < LOCAL_SELECTION_TOLERANCE;
-      }
-    }
-    if ( isFound && aMinDelta >= aDelta ) {
-      aMinDelta = aDelta;
-
-      isFullFound = true;
-      aFoundPnt1 = aCurPoint1;
-      aFoundPnt2 = aCurPoint2;
-      aFoundPoint = aCurPoint;
-    }
-  }
-  if ( isFullFound ) {
-    int aX, anY, aX1, anY1, aX2, anY2;
-    int aDelta;
-    CurveCreator_Utils::ConvertPointToClick( aFoundPoint, theView, aX, anY );
-    CurveCreator_Utils::ConvertPointToClick( aFoundPnt1, theView, aX1, anY1 );
-    CurveCreator_Utils::ConvertPointToClick( aFoundPnt2, theView, aX2, anY2 );
-
-    isFullFound = !isEqualPixels( aX, anY, aX1, anY1, SCENE_PIXEL_POINT_TOLERANCE, aDelta ) &&
-                  !isEqualPixels( aX, anY, aX2, anY2, SCENE_PIXEL_POINT_TOLERANCE, aDelta );
-    if ( isFullFound ) {
-      thePoint = aFoundPoint;
-      thePoint1 = aFoundPnt1;
-      thePoint2 = aFoundPnt2;
-    }
-  }
-  return isFullFound;
-}
-
-bool CurveCreator_Utils::hasProjectPointOnCurve( Handle(V3d_View) theView,
-                                                 const int theX, const int theY,
-                                                 const Handle(Geom_Curve)& theCurve,
-                                                 Standard_Real& theParameter,
-                                                 int& theDelta )
-{
-  bool isFound = false;
-  if ( theView.IsNull() )
-    return isFound;
-
-  gp_Pnt aPoint = CurveCreator_Utils::ConvertClickToPoint( theX, theY, theView );
-
-  GeomAPI_ProjectPointOnCurve aProj( aPoint, theCurve );
-  Standard_Integer aNbPoint = aProj.NbPoints();
-  if (aNbPoint > 0) {
-    for (Standard_Integer j = 1; j <= aNbPoint && !isFound; j++) {
-      gp_Pnt aNewPoint = aProj.Point( j );
-      theParameter = aProj.Parameter( j );
-
-      int aX, anY;
-      CurveCreator_Utils::ConvertPointToClick( aNewPoint, theView, aX, anY );
-
-      isFound = isEqualPixels( aX, anY, theX, theY, SCENE_PIXEL_PROJECTION_TOLERANCE, theDelta );
-    }
-  }
-  return isFound;
-}
-
-bool CurveCreator_Utils::isEqualPixels( const int theX, const int theY, const int theOtherX,
-                                        const int theOtherY, const double theTolerance, int& theDelta )
-{
-  int aXDelta = abs( theX - theOtherX );
-  int anYDelta = abs( theY - theOtherY );
-
-  theDelta = aXDelta*aXDelta + anYDelta*anYDelta;
-
-  return aXDelta < theTolerance && anYDelta < theTolerance;
-}
-
-bool CurveCreator_Utils::isEqualPoints( const gp_Pnt& thePoint, const gp_Pnt& theOtherPoint )
-{
-  return theOtherPoint.IsEqual( thePoint, LOCAL_SELECTION_TOLERANCE );
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_Utils.h b/src/HYDROCurveCreator/CurveCreator_Utils.h
deleted file mode 100644 (file)
index 0cf2364..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVECREATOR_UTILS_H
-#define CURVECREATOR_UTILS_H
-
-#include "CurveCreator_Macro.hxx"
-#include "CurveCreator_ICurve.hxx"
-
-#include <AIS_InteractiveContext.hxx>
-#include <AIS_InteractiveObject.hxx> // TODO: remove
-#include <V3d_View.hxx>
-#include <gp_Pnt.hxx>
-#include <Geom_Curve.hxx>
-#include <TopoDS_Shape.hxx>
-
-#include <list>
-#include <vector> // TODO: remove
-
-
-class CurveCreator_Utils
-{
-public:
-
-    /*!
-   * \brief Returns the point clicked in 3D view.
-   *
-   * \param x The X coordinate in the view.
-   * \param y The Y coordinate in the view.
-   * \param theView View where the given point takes place.
-   * \retval gp_Pnt Returns the point clicked in 3D view
-   */
-  CURVECREATOR_EXPORT static void ConvertPointToClick( const gp_Pnt& thePoint,
-                                                       Handle(V3d_View) theView,
-                                                       int& x, int& y );
-
-  /*!
-   * \brief Returns the point clicked in 3D view.
-   *
-   * \param x The X coordinate in the view.
-   * \param y The Y coordinate in the view.
-   * \param theView View where the given point takes place.
-   * \retval gp_Pnt Returns the point clicked in 3D view
-   */
-  CURVECREATOR_EXPORT static gp_Pnt ConvertClickToPoint( int x, int y,
-                                                         Handle(V3d_View) theView );
-
-  /**
-   * Generates shape on the curve
-   * \param theCurve a curve object, that contains data
-   * \param theShape a generated shape
-   */
-  CURVECREATOR_EXPORT static void constructShape( const CurveCreator_ICurve* theCurve,
-                                                  TopoDS_Shape& theShape );
-
-  /**
-   * Find selected points in the context
-   * \param theContext the viewer context
-   * \param theCurve a curve object, that contains data
-   */
-  CURVECREATOR_EXPORT static void getSelectedPoints( Handle(AIS_InteractiveContext) theContext,
-                                         const CurveCreator_ICurve* theCurve,
-                                         CurveCreator_ICurve::SectionToPointList& thePoints );
-
-  /**
-   * Set selected points to the context
-   * \param theContext the viewer context
-   * \param theCurve a curve object, that contains data
-   * \param thePoints the curve point indices to be selected in the context
-   */
-  CURVECREATOR_EXPORT static void setSelectedPoints(
-                                         Handle(AIS_InteractiveContext) theContext,
-                                         const CurveCreator_ICurve* theCurve,
-                                         const CurveCreator_ICurve::SectionToPointList& thePoints =
-                                               CurveCreator_ICurve::SectionToPointList() );
-
-  /*!
-   * \brief Sets the local point context for the 3D viewer.
-   * \param theCurve a curve object, that contains data
-   * \param theContext the viewer context
-   * \param theOpen The flag to open or close the local context.
-   */
-  CURVECREATOR_EXPORT static void setLocalPointContext(
-                                        const CurveCreator_ICurve* theCurve,
-                                        Handle(AIS_InteractiveContext) theContext,
-                                        const bool theOpen );
-
-  /**
-   * Checks whether the point belongs to the OCC object
-   * \param theObject a line or shape with a bspline inside
-   * \param theX the X coordinate in the view.
-   * \param theY the Y coordinate in the view.
-   * \param thePoint the output point to be append to the model curve
-   * \param thePoint1 the output point to bound the line where a new point should be inserted
-   * \param thePoint2 the output point to bound the line where a new point should be inserted
-   */
-  CURVECREATOR_EXPORT static bool pointOnObject( Handle(V3d_View) theView,
-                                                 Handle(AIS_InteractiveObject) theObject,
-                                                 const int theX, const int theY,
-                                                 gp_Pnt& thePoint, gp_Pnt& thePoint1,
-                                                 gp_Pnt& thePoint2 );
-
-protected:
-  /*
-   * Returns whether the clicked point belong to the curve or has a very near projection
-   * \param theX the X coordinate of a point clicked in the OCC viewer
-   * \param theY the Y coordinate of a point clicked in the OCC viewer
-   * \param theCurve a geometry curve
-   * \param theOutPoint a found projected point on the curve
-  */
-  CURVECREATOR_EXPORT static bool hasProjectPointOnCurve(
-                                                 Handle(V3d_View) theView,
-                                                 const int theX, const int theY,
-                                                 const Handle(Geom_Curve)& theCurve,
-                                                 Standard_Real& theParameter,
-                                                 int& theDelta );
-
-  /*
-   * Returns whether the X and Y coordinates is in the pixel tolerance
-   * \param theX the X coordinate of the first point
-   * \param theY the Y coordinate of the first point
-   * \param theOtherX the X coordinate of the second point
-   * \param theOtherY the Y coordinate of the second point
-   * \param theTolerance the tolerance to compare
-   * \param theDelta the sum of the a square of X and a square of Y
-   * \returns whether the points are provide to the pixel tolerance
-  */
-  CURVECREATOR_EXPORT static bool isEqualPixels( const int theX, const int theY,
-                                                 const int theOtherX, const int theOtherY,
-                                                 const double theTolerance, int& theDelta );
-
-
-  /*
-   * Returns whether the points are the same
-   * \param thePoint the first point
-   * \param theOtherPoint the second point
-   * \returns whether the points are provide to the pixel tolerance
-  */
-  CURVECREATOR_EXPORT static bool isEqualPoints( const gp_Pnt& thePoint,
-                                                 const gp_Pnt& theOtherPoint );
-};
-
-#endif // CURVECREATOR_UTILS_H
diff --git a/src/HYDROCurveCreator/CurveCreator_UtilsICurve.cxx b/src/HYDROCurveCreator/CurveCreator_UtilsICurve.cxx
deleted file mode 100644 (file)
index d11598e..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_UtilsICurve.hxx"
-
-#include "CurveCreator.hxx"
-#include <gp_Pnt.hxx>
-
-const double LOCAL_SELECTION_TOLERANCE = 0.0001;
-
-int CurveCreator_UtilsICurve::findLocalPointIndex( const CurveCreator_ICurve* theCurve,
-                                             int theSectionId, float theX, float theY )
-{
-  int aPntIndex = -1;
-  if ( !theCurve )
-    return aPntIndex;
-
-  CurveCreator::Coordinates aCoords;
-  for ( int i = 0, aNb = theCurve->getNbPoints( theSectionId ); i < aNb && aPntIndex < 0; i++ ) {
-    aCoords = theCurve->getPoint( theSectionId, i );
-    if ( aCoords.size() < 2 )
-      continue;
-    if ( fabs( aCoords[0] - theX ) < LOCAL_SELECTION_TOLERANCE &&
-         fabs( aCoords[1] - theY ) < LOCAL_SELECTION_TOLERANCE )
-      aPntIndex = i;
-  }
-
-  return aPntIndex;
-}
-
-void CurveCreator_UtilsICurve::findSectionsToPoints( const CurveCreator_ICurve* theCurve,
-                                 const double theX, const double theY,
-                                 CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  thePoints.clear();
-
-  int aPointId = -1;
-  for ( int i = 0, aNb = theCurve->getNbSections(); i < aNb; i++ ) {
-    aPointId = CurveCreator_UtilsICurve::findLocalPointIndex( theCurve, i, theX, theY );
-    if ( aPointId < 0 )
-      continue;
-    CurveCreator_ICurve::SectionToPoint aPoint = std::make_pair( i, aPointId );
-    if ( !CurveCreator_UtilsICurve::contains( thePoints, aPoint ) )
-      thePoints.push_back( aPoint );
-  }
-}
-
-void CurveCreator_UtilsICurve::convert( const CurveCreator_ICurve::SectionToPointList& thePoints,
-                                  QMap<int, QList<int> >& theConvPoints )
-{
-  theConvPoints.clear();
-
-  CurveCreator_ICurve::SectionToPointList::const_iterator anIt = thePoints.begin(),
-                                                          aLast = thePoints.end();
-  QList<int> aPoints;
-  int aSectionId, aPointId;
-  for ( ; anIt != aLast; anIt++ ) {
-    aSectionId = anIt->first;
-    aPointId = anIt->second;
-    aPoints.clear();
-    if ( theConvPoints.contains( aSectionId ) )
-      aPoints = theConvPoints[aSectionId];
-    if ( aPoints.contains( aPointId ) )
-      continue;
-    aPoints.append( aPointId );
-    theConvPoints[aSectionId] = aPoints;
-  }
-}
-
-#include "CurveCreator_Curve.hxx" // TODO
-void CurveCreator_UtilsICurve::getPoint( const CurveCreator_ICurve* theCurve, const int theISection,
-                                         const int theIPoint, gp_Pnt& thePoint )
-{
-  double anX, anY, aZ;
-  // TODO
-  const CurveCreator_Curve* aCurve = dynamic_cast<const CurveCreator_Curve*>( theCurve );
-  if ( aCurve )
-    aCurve->getCoordinates( theISection, theIPoint, anX, anY, aZ );
-  thePoint = gp_Pnt( anX, anY, aZ);
-}
-
-std::string CurveCreator_UtilsICurve::getUniqSectionName( CurveCreator_ICurve* theCurve )
-{
-  for( int i = 0 ; i < 1000000 ; i++ ){
-    char aBuffer[255];
-    sprintf( aBuffer, "Section_%d", i+1 );
-    std::string aName(aBuffer);
-    int j;
-    for( j = 0 ; j < theCurve->getNbSections() ; j++ ){
-      if( theCurve->getSectionName(j) == aName )
-        break;
-    }
-    if( j == theCurve->getNbSections() )
-      return aName;
-  }
-  return "";
-}
-
-bool CurveCreator_UtilsICurve::contains( const CurveCreator_ICurve::SectionToPointList& theList,
-                                         const CurveCreator_ICurve::SectionToPoint& theValue )
-{
-  bool isFound = false;
-
-  CurveCreator_ICurve::SectionToPointList::const_iterator anIt = theList.begin(),
-                                                          aLast = theList.end();
-  for ( ; anIt != aLast && !isFound; anIt++ )
-    isFound = anIt->first == theValue.first && anIt->second == theValue.second;
-
-  return isFound;
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_UtilsICurve.hxx b/src/HYDROCurveCreator/CurveCreator_UtilsICurve.hxx
deleted file mode 100644 (file)
index 96b4e45..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVECREATOR_UTILS_ICURVE_H
-#define CURVECREATOR_UTILS_ICURVE_H
-
-#include "CurveCreator_Macro.hxx"
-
-#include "CurveCreator_ICurve.hxx"
-
-#include <gp_Pnt.hxx>
-
-#include <QMap>
-#include <QList>
-
-class CurveCreator_UtilsICurve
-{
-public:
-
-  /*!
-   * Returns a point index in the model curve by the point coordinates in the viewer
-   * \param theX the X coordinate of the point
-   * \param theY the Y coordinate of the point
-   */
-  CURVECREATOR_EXPORT static int  findLocalPointIndex( const CurveCreator_ICurve* theCurve,
-                                          int theSectionId, float theX, float theY );
-
-  CURVECREATOR_EXPORT static void findSectionsToPoints( const CurveCreator_ICurve* theCurve,
-                                          const double theX, const double theY,
-                                          CurveCreator_ICurve::SectionToPointList& thePoints );
-  CURVECREATOR_EXPORT static void convert( const CurveCreator_ICurve::SectionToPointList& thePoints,
-                                           QMap<int, QList<int> >& theConvPoints );
-
-  CURVECREATOR_EXPORT static void getPoint( const CurveCreator_ICurve* theCurve, const int theISection,
-                                            const int theIPoint, gp_Pnt& thePoint );
-
-  /*!
-   * Returns a unique section name
-   * \param theCurve a curve interface
-   */
-  CURVECREATOR_EXPORT static std::string getUniqSectionName(
-                                            CurveCreator_ICurve* theCurve );
-
-  /**
-   * Returns whethe the container has the value
-   * \param theList a container of values
-   * \param theValue a value
-   */
-  CURVECREATOR_EXPORT static bool contains( const CurveCreator_ICurve::SectionToPointList& theList,
-                                            const CurveCreator_ICurve::SectionToPoint& theValue );
-};
-
-#endif // CURVECREATOR_UTILS_ICURVE_H
diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.cxx b/src/HYDROCurveCreator/CurveCreator_Widget.cxx
deleted file mode 100644 (file)
index b595c22..0000000
+++ /dev/null
@@ -1,1459 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "CurveCreator_Widget.h"
-#include "CurveCreator_TreeView.h"
-#include "CurveCreator_ICurve.hxx"
-#include "CurveCreator.hxx"
-#include "CurveCreator_NewSectionDlg.h"
-#include "CurveCreator_Utils.h"
-#include "CurveCreator_UtilsICurve.hxx"
-#include "CurveCreator_TableView.h"
-
-#include <SUIT_Session.h>
-#include <SUIT_Desktop.h>
-#include <SUIT_ResourceMgr.h>
-#include <SUIT_ViewManager.h>
-
-#include <OCCViewer_ViewWindow.h>
-#include <OCCViewer_ViewManager.h>
-#include <OCCViewer_ViewPort3d.h>
-#include "OCCViewer_Utilities.h"
-
-#include <QHBoxLayout>
-#include <QVBoxLayout>
-#include <QLabel>
-#include <QLineEdit>
-#include <QGroupBox>
-#include <QToolButton>
-#include <QToolBar>
-#include <QAction>
-#include <QMenu>
-#include <QMouseEvent>
-#include <QApplication>
-#include <QTableWidget>
-#include <QTime>
-
-//#define MEASURE_TIME
-
-#ifdef MEASURE_TIME
-
-  #define START_MEASURE_TIME \
-    QTime aTimer;            \
-    aTimer.start();          \
-
-  #define END_MEASURE_TIME( theMsg )                      \
-    double aTime = aTimer.elapsed() * 0.001;              \
-    FILE* aFile = fopen( "performance", "a" );            \
-    fprintf( aFile, "%s = %.3lf sec\n", theMsg, aTime );  \
-    fclose( aFile );                                      \
-
-#else
-
-  #define START_MEASURE_TIME
-  #define END_MEASURE_TIME( theMsg )
-
-#endif
-
-
-
-
-
-
-CurveCreator_Widget::CurveCreator_Widget(QWidget* parent,
-                                         CurveCreator_ICurve *theCurve,
-                                         const int theActionFlags,
-                                         const QStringList& theCoordTitles,
-                                         Qt::WindowFlags fl,
-                                         int theLocalPointRowLimit )
-: QWidget(parent), myNewSectionEditor(NULL), myCurve(theCurve), mySection(0),
-  myDragStarted( false ), myDragInteractionStyle( SUIT_ViewModel::STANDARD ),
-  myOCCViewer( 0 ), myLocalPointRowLimit( theLocalPointRowLimit )
-{
-  bool isToEnableClosed = !( theActionFlags & DisableClosedSection );
-  myNewSectionEditor = new CurveCreator_NewSectionDlg( this, isToEnableClosed );
-  myNewSectionEditor->hide();
-  connect( myNewSectionEditor, SIGNAL(addSection()), this, SLOT(onAddNewSection()) );
-  connect( myNewSectionEditor, SIGNAL(modifySection()), this, SLOT(onModifySection()) );
-  connect( myNewSectionEditor, SIGNAL(cancelSection()), this, SLOT(onCancelSection()) );
-
-  QGroupBox* aSectionGroup = new QGroupBox(tr("Sections"),this);
-
-  mySectionView = new CurveCreator_TreeView(myCurve, aSectionGroup);
-  mySectionView->setSelectionMode( QTreeView::ExtendedSelection );
-  connect( mySectionView, SIGNAL(selectionChanged()), this, SLOT( onSelectionChanged() ) );
-  connect( mySectionView, SIGNAL(sectionEntered(int)), this, SLOT(onEditSection(int)) );
-  connect( mySectionView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenu(QPoint)) );
-
-  myLocalPointView = new CurveCreator_TableView( myCurve, this, theCoordTitles );
-  connect( myLocalPointView, SIGNAL( cellChanged( int, int ) ),
-           this, SLOT( onCellChanged( int, int ) ) );
-
-  QToolBar* aTB = new QToolBar(tr("TOOL_BAR_TLT"), aSectionGroup);
-//    QToolButton* anUndoBtn = new QToolButton(aTB);
-
-  SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
-  QPixmap anUndoPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_UNDO")));
-  QPixmap aRedoPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_REDO")));
-  QPixmap aNewSectionPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_NEW_SECTION")));
-  QPixmap aNewPointPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_NEW_POINT")));
-  QPixmap anEditPointsPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_EDIT_POINTS")));
-  QPixmap aDetectPointsPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_EDIT_POINTS")));
-  QPixmap aPolylinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE")));
-  QPixmap aSplinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE")));
-  QPixmap aRemovePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_DELETE")));
-  QPixmap aJoinPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_JOIN")));
-  QPixmap aStepUpPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_ARROW_UP")));
-  QPixmap aStepDownPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_ARROW_DOWN")));
-
-  QAction* anAct = createAction( UNDO_ID, tr("UNDO"), anUndoPixmap, tr("UNDO_TLT"), 
-                                 QKeySequence(Qt::ControlModifier|Qt::Key_Z) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onUndo()) );
-  aTB->addAction(anAct);
-
-  anAct = createAction( REDO_ID, tr("REDO"), aRedoPixmap, tr("REDO_TLT"), 
-                        QKeySequence(Qt::ControlModifier|Qt::Key_Y) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onRedo()) );
-  aTB->addAction(anAct);
-
-  aTB->addSeparator();
-  
-  anAct = createAction( NEW_SECTION_ID, tr("NEW_SECTION"), aNewSectionPixmap, tr("NEW_SECTION_TLT"), 
-                        QKeySequence(Qt::ControlModifier|Qt::Key_N) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onNewSection()) );
-  if ( !(theActionFlags & DisableNewSection) ) {
-    aTB->addAction(anAct);
-    aTB->addSeparator();
-  }
-
-  anAct = createAction( ADDITION_MODE_ID, tr("ADDITION_MODE"), aNewPointPixmap, tr("ADDITION_MODE_TLT"), 
-                        QKeySequence() );
-  anAct->setCheckable(true);
-  connect(anAct, SIGNAL(triggered(bool)), this, SLOT(onAdditionMode(bool)) );
-  connect(anAct, SIGNAL(toggled(bool)), this, SLOT(onModeChanged(bool)) );
-  aTB->addAction(anAct);
-  
-  anAct = createAction( MODIFICATION_MODE_ID, tr("MODIFICATION_MODE"), anEditPointsPixmap, tr("MODIFICATION_MODE_TLT"), 
-                        QKeySequence() );
-  anAct->setCheckable(true);
-  connect(anAct, SIGNAL(triggered(bool)), this, SLOT(onModificationMode(bool)) );
-  connect(anAct, SIGNAL(toggled(bool)), this, SLOT(onModeChanged(bool)) );
-  aTB->addAction(anAct);
-
-  anAct = createAction( DETECTION_MODE_ID, tr("DETECTION_MODE"), aDetectPointsPixmap, tr("DETECTION_MODE_TLT"), 
-                        QKeySequence() );
-  anAct->setCheckable(true);
-  connect(anAct, SIGNAL(triggered(bool)), this, SLOT(onDetectionMode(bool)) );
-  connect(anAct, SIGNAL(toggled(bool)), this, SLOT(onModeChanged(bool)) );
-  if ( !(theActionFlags & DisableDetectionMode) ) {
-    aTB->addAction(anAct);
-  }
-  
-  anAct = createAction( CLOSE_SECTIONS_ID, tr("CLOSE_SECTIONS"), QPixmap(), tr("CLOSE_SECTIONS_TLT"), 
-                        QKeySequence(Qt::ControlModifier|Qt::Key_W) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onCloseSections()) );
-
-  anAct = createAction( UNCLOSE_SECTIONS_ID, tr("UNCLOSE_SECTIONS"), QPixmap(), 
-                        tr("UNCLOSE_SECTIONS_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_S) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onUncloseSections()) );
-
-  anAct = createAction( SET_SECTIONS_POLYLINE_ID, tr("SET_SECTIONS_POLYLINE"), 
-                        aPolylinePixmap, tr("SET_POLYLINE_TLT"), 
-                        QKeySequence(Qt::ControlModifier|Qt::Key_E) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onSetPolyline()) );
-
-  anAct = createAction( SET_SECTIONS_SPLINE_ID, tr("SET_SECTIONS_SPLINE"), aSplinePixmap, 
-                        tr("SET_SPLINE_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_R) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onSetSpline()) );
-
-  anAct = createAction( REMOVE_ID, tr("REMOVE"), aRemovePixmap, tr("REMOVE_TLT"), 
-                        QKeySequence(Qt::ControlModifier|Qt::Key_Delete ) );
-  connect(anAct, SIGNAL(triggered()), this, SLOT(onRemove()) );
-  aTB->addAction(anAct);
-  
-  aTB->addSeparator();
-
-  anAct = createAction( JOIN_ID, tr("JOIN"), aJoinPixmap, tr("JOIN_TLT"), 
-                        QKeySequence(Qt::ControlModifier|Qt::Key_Plus ) );
-  connect( anAct, SIGNAL(triggered()), this, SLOT(onJoin()) );
-  aTB->addAction(anAct);
-
-  anAct = createAction( CLEAR_ALL_ID, tr("CLEAR_ALL"), QPixmap(), tr("CLEAR_ALL_TLT"), 
-                        QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Delete ) );
-  connect( anAct, SIGNAL(triggered()), this, SLOT( onClearAll()) );
-
-  anAct = createAction( JOIN_ALL_ID, tr("JOIN_ALL"), QPixmap(), tr("JOIN_ALL_TLT"), 
-                        QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Plus ) );
-  connect( anAct, SIGNAL(triggered()), this, SLOT(onJoinAll()) );
-
-  QVBoxLayout* aSectLayout = new QVBoxLayout();
-  aSectLayout->setMargin( 5 );
-  aSectLayout->setSpacing( 5 );
-  aSectLayout->addWidget(aTB);
-  aSectLayout->addWidget(mySectionView);
-  aSectLayout->addWidget( myLocalPointView );
-  aSectionGroup->setLayout(aSectLayout);
-  QVBoxLayout* aLay = new QVBoxLayout();
-  aLay->setMargin( 0 );
-  aLay->setSpacing( 5 );
-//    aLay->addLayout(aNameLayout);
-  aLay->addWidget(aSectionGroup);
-  setLayout(aLay);
-
-  updateActionsStates();
-  updateUndoRedo();
-}
-
-/**
- * Set an OCC viewer
- */
-void CurveCreator_Widget::setOCCViewer( OCCViewer_Viewer* theViewer )
-{
-  if ( myOCCViewer == theViewer )
-    return;
-
-  if ( myOCCViewer ) {
-    OCCViewer_ViewManager* aViewManager = dynamic_cast<OCCViewer_ViewManager*>
-                                                    ( myOCCViewer->getViewManager() );
-    disconnect( aViewManager, SIGNAL( mousePress( SUIT_ViewWindow*, QMouseEvent* ) ),
-           this, SLOT( onMousePress( SUIT_ViewWindow*, QMouseEvent* ) ) );
-    disconnect( aViewManager, SIGNAL( mouseRelease( SUIT_ViewWindow*, QMouseEvent* ) ),
-           this, SLOT( onMouseRelease( SUIT_ViewWindow*, QMouseEvent* ) ) );
-    disconnect( aViewManager, SIGNAL( mouseMove( SUIT_ViewWindow*, QMouseEvent* ) ),
-           this, SLOT( onMouseMove( SUIT_ViewWindow*, QMouseEvent* ) ) );
-    disconnect( aViewManager, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
-           this, SLOT( onLastViewClosed( SUIT_ViewManager* ) ) );
-    // restore normal mode in the viewer
-    OCCViewer_Utilities::setViewer2DMode( myOCCViewer, OCCViewer_ViewWindow::No2dMode );
-    // all local contexts should be closed if the viewer is not more used
-    setLocalPointContext( false, true );
-  }
-
-  myOCCViewer = theViewer;
-  if ( myOCCViewer ) {
-    OCCViewer_ViewManager* aViewManager = dynamic_cast<OCCViewer_ViewManager*>
-                                                    ( myOCCViewer->getViewManager() );
-    connect( aViewManager, SIGNAL( mousePress( SUIT_ViewWindow*, QMouseEvent* ) ),
-           this, SLOT( onMousePress( SUIT_ViewWindow*, QMouseEvent* ) ) );
-    connect( aViewManager, SIGNAL( mouseRelease( SUIT_ViewWindow*, QMouseEvent* ) ),
-           this, SLOT( onMouseRelease( SUIT_ViewWindow*, QMouseEvent* ) ) );
-    connect( aViewManager, SIGNAL( mouseMove( SUIT_ViewWindow*, QMouseEvent* ) ),
-           this, SLOT( onMouseMove( SUIT_ViewWindow*, QMouseEvent* ) ) );
-    connect( aViewManager, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
-           this, SLOT( onLastViewClosed( SUIT_ViewManager* ) ) );
-    OCCViewer_Utilities::setViewer2DMode( myOCCViewer, OCCViewer_ViewWindow::XYPlane );
-  }
-}
-
-/**
- * Returns current OCC viewer
- */
-OCCViewer_Viewer* CurveCreator_Widget::getOCCViewer()
-{
-  return myOCCViewer;
-}
-
-/**
- * Returns OCC viewer context
- */
-Handle(AIS_InteractiveContext) CurveCreator_Widget::getAISContext()
-{
-  Handle(AIS_InteractiveContext) aContext;
-  OCCViewer_Viewer* aViewer = getOCCViewer();
-  if ( aViewer )
-    aContext = aViewer->getAISContext();
-
-  return aContext;
-}
-
-/**
- * Returns OCC viewer view port
- */
-OCCViewer_ViewPort3d* CurveCreator_Widget::getViewPort()
-{
-  OCCViewer_ViewPort3d* aViewPort = 0;
-  OCCViewer_Viewer* aViewer = getOCCViewer();
-  if ( aViewer )
-    aViewPort = ((OCCViewer_ViewWindow*)aViewer->getViewManager()->getActiveView())->getViewPort();
-    
-  return aViewPort;
-}
-
-/**
- * Set interaction style in the OCC viewer
- * \param theStyle a new style
- * \return the previous style
- */
-int CurveCreator_Widget::changeInteractionStyle( int theStyle )
-{
-  OCCViewer_Viewer* aViewer = getOCCViewer();
-  if ( !aViewer )
-    return -1;
-
-  int aPrevStyle = aViewer->interactionStyle();
-  aViewer->setInteractionStyle( theStyle );
-
-  return aPrevStyle;
-}
-
-//=======================================================================
-// function: reset
-// purpose: reset the widget viewer, close local context, clear selection
-//=======================================================================
-void CurveCreator_Widget::reset()
-{
-}
-
-void CurveCreator_Widget::setCurve( CurveCreator_ICurve* theCurve )
-{
-  myCurve = theCurve;
-  mySectionView->setCurve( myCurve );
-  myLocalPointView->setCurve( myCurve );
-  updateActionsStates();
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onSelectionChanged()
-{
-  updateActionsStates();
-  updateUndoRedo();
-  emit selectionChanged();
-}
-
-void CurveCreator_Widget::updateActionsStates()
-{
-  QList<ActionId> anEnabledAct;
-  if( myCurve ){
-    anEnabledAct << NEW_SECTION_ID << MODIFICATION_MODE_ID;
-    if ( removeEnabled() )
-      anEnabledAct << REMOVE_ID;
-    QList<int> aSelSections = mySectionView->getSelectedSections();
-    CurveCreator_TreeView::SelectionType aSelType = mySectionView->getSelectionType();
-    switch( aSelType ){
-    case CurveCreator_TreeView::ST_NOSEL:{
-      break;
-    }
-    case CurveCreator_TreeView::ST_SECTIONS:{
-      /*if( aSelSections[0] > 0 ){
-        anEnabledAct << UP_ID;
-      }*/
-      if( aSelSections.size() == 1 ){
-        anEnabledAct << ADDITION_MODE_ID << DETECTION_MODE_ID;
-      }
-      switch ( getActionMode() ) {
-        case AdditionMode: {
-          mySection = -1;
-          myPointNum = -1;
-          QList<int> aSelSection = mySectionView->getSelectedSections();
-          if( aSelSection.size() > 0 ){
-            mySection = aSelSection[0];
-            myPointNum = myCurve->getNbPoints(mySection);
-          }
-        }
-        break;
-        case ModificationMode: {
-          if ( myNewSectionEditor->isEnableClosed() )
-            anEnabledAct << CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID;
-          anEnabledAct << SET_SECTIONS_POLYLINE_ID << SET_SECTIONS_SPLINE_ID;
-          int aSectCnt = myCurve->getNbSections();
-          if( aSectCnt > 0 )
-            anEnabledAct << CLEAR_ALL_ID;
-          if( aSectCnt > 1 )
-            anEnabledAct << JOIN_ALL_ID;
-          if( aSelSections.size() > 1 ){
-            anEnabledAct << JOIN_ID;
-          }
-        }
-        break;
-        case DetectionMode: {
-        }
-        break;
-        case NoneMode:
-          {
-            int aSectCnt = myCurve->getNbSections();
-            if( aSectCnt > 1 )
-              anEnabledAct << JOIN_ALL_ID;
-            if( aSelSections.size() > 1 )
-              anEnabledAct << JOIN_ID;
-          }
-          break;
-        default:
-        break;
-      }
-      /*if( aSelSections[ aSelSections.size() - 1 ] < ( myCurve->getNbSections() - 1 ) ){
-        anEnabledAct << DOWN_ID;
-      }*/
-      break;
-    }
-    /*case CurveCreator_TreeView::ST_POINTS_ONE_SECTION:{
-      if( aSelPoints[0].second > 0 ){
-        anEnabledAct << UP_ID;
-      }
-      int aLastIndex = aSelPoints.size()-1;
-      int aSect = aSelPoints[0].first;
-      if( aSelPoints[aLastIndex].second < (myCurve->getNbPoints(aSect) - 1)){
-        anEnabledAct << DOWN_ID;
-      }
-      if( aSelPoints.size() == 1){
-        anEnabledAct << INSERT_POINT_BEFORE_ID << INSERT_POINT_AFTER_ID;
-      }
-      break;
-    }*/
-
-    }
-    
-    /*int aSelObjsCnt = aSelPoints.size() + aSelSections.size();
-    if( aSelObjsCnt > 0 ){
-      anEnabledAct << REMOVE_ID;
-    }
-    if( (myCurve->getNbSections() + myCurve->getNbPoints()) > 0 ){
-      anEnabledAct << REMOVE_ALL_ID;
-    }*/
-    if( myCurve->getNbSections() > 1 ){
-      anEnabledAct << JOIN_ALL_ID;
-    }
-  }
-  QList<ActionId> anIds = myActionMap.keys();
-  for( int i = 0 ; i < anIds.size() ; i++ ){
-    if( myActionMap.contains(anIds[i]) ){
-      if( anEnabledAct.contains(anIds[i]) ){
-        myActionMap[anIds[i]]->setEnabled(true);
-      }
-      else{
-        myActionMap[anIds[i]]->setEnabled(false);
-      }
-    }
-  }
-}
-
-void CurveCreator_Widget::onAdditionMode(bool checked)
-{
-  if (!checked)
-    return;
-
-  Handle(AIS_InteractiveContext) aContext = getAISContext();
-  if( !myCurve || aContext.IsNull() )
-    return;
-
-  mySection= -1;
-  myPointNum = -1;
-  QList<int> aSelSection = mySectionView->getSelectedSections();
-  if( aSelSection.size() > 0 ){
-    mySection = aSelSection[0];
-  }
-//  emit subOperationStarted( myNewPointEditor );
-}
-
-void CurveCreator_Widget::onModificationMode(bool checked)
-{
-  myLocalPointView->setVisible( checked );
-}
-
-void CurveCreator_Widget::onDetectionMode(bool checked)
-{
-}
-
-void CurveCreator_Widget::onModeChanged(bool checked)
-{
-  ActionMode aMode = NoneMode;
-  if (checked) {
-    QAction* anAction = (QAction*)sender();
-    switch(myActionMap.key(anAction)) {
-      case ADDITION_MODE_ID:
-        aMode = AdditionMode;
-        if (myActionMap[MODIFICATION_MODE_ID]->isChecked())
-          myActionMap[MODIFICATION_MODE_ID]->trigger();
-        else if (myActionMap[DETECTION_MODE_ID]->isChecked())
-          myActionMap[DETECTION_MODE_ID]->trigger();
-        break;
-      case MODIFICATION_MODE_ID:
-        aMode = ModificationMode;
-        if (myActionMap[ADDITION_MODE_ID]->isChecked())
-          myActionMap[ADDITION_MODE_ID]->trigger();
-        else if (myActionMap[DETECTION_MODE_ID]->isChecked())
-          myActionMap[DETECTION_MODE_ID]->trigger();
-        break;
-      case DETECTION_MODE_ID:
-        aMode = DetectionMode;
-        if (myActionMap[ADDITION_MODE_ID]->isChecked())
-          myActionMap[ADDITION_MODE_ID]->trigger();
-        else if (myActionMap[MODIFICATION_MODE_ID]->isChecked())
-          myActionMap[MODIFICATION_MODE_ID]->trigger();
-        break;
-    }
-  }
-  updateActionsStates();
-  updateUndoRedo();
-  setLocalPointContext( aMode == ModificationMode, true );
-}
-
-void CurveCreator_Widget::onNewSection()
-{
-  if( !myCurve )
-    return;
-
-  stopActionMode();
-  myNewSectionEditor->clear();
-  myNewSectionEditor->setEditMode(false);
-  QString aSectName = QString( CurveCreator_UtilsICurve::getUniqSectionName( myCurve ).c_str() );
-  myNewSectionEditor->setSectionParameters(aSectName, true, CurveCreator::Polyline );
-  emit subOperationStarted( myNewSectionEditor, false );
-}
-
-void CurveCreator_Widget::onAddNewSection()
-{
-  if( !myCurve )
-    return;
-  myCurve->addSection( myNewSectionEditor->getName().toStdString(),
-                       myNewSectionEditor->getSectionType(),
-                       myNewSectionEditor->isClosed() );
-  mySectionView->sectionAdded( -1 ); // add a new section to the end of list
-  QString aNewName = QString( CurveCreator_UtilsICurve::getUniqSectionName( myCurve ).c_str() );
-  myNewSectionEditor->setSectionName(aNewName);
-  updateActionsStates();
-  updateUndoRedo();
-  onCancelSection();
-}
-
-void CurveCreator_Widget::onCancelSection()
-{
-  emit subOperationFinished( myNewSectionEditor );
-}
-
-QAction* CurveCreator_Widget::createAction( ActionId theId, const QString& theName, const QPixmap& theImage,
-                                            const QString& theToolTip, const QKeySequence& theShortcut )
-{
-  QAction* anAct = new QAction(theName,this);
-  if( !theImage.isNull() ){
-    anAct->setIcon(theImage);
-  }
-  anAct->setShortcut(theShortcut);
-  anAct->setToolTip(theToolTip);
-  myActionMap[theId] = anAct;
-  return anAct;
-}
-
-QAction* CurveCreator_Widget::getAction( ActionId theId )
-{
-  if( myActionMap.contains(theId) )
-    return myActionMap[theId];
-  return NULL;
-}
-
-QAction* CurveCreator_Widget::getAction( ActionMode theMode )
-{
-  ActionId anActionId = NONE_ID;
-  switch ( theMode ) {
-    case AdditionMode:
-      anActionId = ADDITION_MODE_ID;
-      break;
-    case ModificationMode:
-      anActionId = MODIFICATION_MODE_ID;
-      break;
-    case DetectionMode:
-      anActionId = DETECTION_MODE_ID;
-      break;
-    default:
-      break;
-  }
-  QAction* anAction = 0;
-  if ( anActionId != NONE_ID && myActionMap.contains( anActionId ) )
-    anAction = myActionMap[anActionId];
-  return anAction;
-}
-
-void CurveCreator_Widget::onEditSection( int theSection )
-{
-  if( !myCurve )
-    return;
-  
-  stopActionMode();
-  mySection = theSection;
-  QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection));
-  bool isClosed = myCurve->isClosed(theSection);
-  CurveCreator::SectionType aType = myCurve->getSectionType(theSection);
-  myNewSectionEditor->setEditMode(true);
-  myNewSectionEditor->setSectionParameters( aSectName, isClosed, aType );
-
-  emit subOperationStarted( myNewSectionEditor, true );
-}
-
-void CurveCreator_Widget::onModifySection()
-{
-  if( !myCurve )
-    return;
-  QString aName = myNewSectionEditor->getName();
-  bool isClosed = myNewSectionEditor->isClosed();
-  CurveCreator::SectionType aSectType = myNewSectionEditor->getSectionType();
-  if( myCurve->getSectionName(mySection) != aName.toStdString() )
-    myCurve->setSectionName( mySection , aName.toStdString() );
-
-  if( myCurve->getSectionType(mySection) != aSectType )
-    myCurve->setSectionType( mySection, aSectType );
-
-  if( myCurve->isClosed(mySection) != isClosed )
-    myCurve->setClosed( mySection, isClosed );
-  mySectionView->sectionChanged(mySection);
-  updateUndoRedo();
-  onCancelSection();
-}
-
-void CurveCreator_Widget::onJoin()
-{
-  if( !myCurve )
-    return;
-  QList<int> aSections = mySectionView->getSelectedSections();
-  if( aSections.size() == 0 ){
-    return;
-  }
-  stopActionMode();
-
-  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 );*/
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onRemove()
-{
-  if( !myCurve )
-    return;
-
-  switch( getActionMode() ) {
-    case NoneMode:
-      removeSection();
-    break;
-    case ModificationMode:
-      removePoint();
-    break;
-    default:
-      break;
-  }
-}
-
-void CurveCreator_Widget::onClearAll()
-{
-  if( !myCurve )
-    return;
-  stopActionMode();
-  myCurve->clear();
-  mySectionView->reset();
-  updateActionsStates();
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onJoinAll()
-{
-  if( !myCurve )
-    return;
-  stopActionMode();
-
-  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();
-}
-
-void CurveCreator_Widget::onUndoSettings()
-{
-
-}
-
-void CurveCreator_Widget::onSetSpline()
-{
-  if( !myCurve )
-    return;
-  stopActionMode();
-  QList<int> aSelSections = mySectionView->getSelectedSections();
-  for( int i = 0 ; i < aSelSections.size() ; i++ ){
-    myCurve->setSectionType(aSelSections[i], CurveCreator::Spline );
-    mySectionView->sectionChanged(aSelSections[i]);
-  }
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onSetPolyline()
-{
-  if( !myCurve )
-    return;
-  stopActionMode();
-  QList<int> aSelSections = mySectionView->getSelectedSections();
-  for( int i = 0 ; i < aSelSections.size() ; i++ ){
-    myCurve->setSectionType( aSelSections[i], CurveCreator::Polyline );
-    mySectionView->sectionChanged( aSelSections[i] );
-  }
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onCloseSections()
-{
-  if( !myCurve )
-    return;
-  stopActionMode();
-  QList<int> aSelSections = mySectionView->getSelectedSections();
-  for( int i = 0 ; i < aSelSections.size() ; i++ ){
-    myCurve->setClosed(aSelSections[i], true);
-    mySectionView->sectionChanged(aSelSections[i]);
-  }
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onUncloseSections()
-{
-  if( !myCurve )
-    return;
-  stopActionMode();
-  QList<int> aSelSections = mySectionView->getSelectedSections();
-  for( int i = 0 ; i < aSelSections.size() ; i++ ){
-    myCurve->setClosed(aSelSections[i], false);
-    mySectionView->sectionChanged(aSelSections[i]);
-  }
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::onUndo()
-{
-    if( !myCurve )
-      return;
-
-    CurveCreator_ICurve::SectionToPointList aPoints;
-    startCurveModification( aPoints, false );
-    myCurve->undo();
-    finishCurveModification();
-    mySectionView->reset();
-}
-
-void CurveCreator_Widget::onRedo()
-{
-    if( !myCurve )
-      return;
-    CurveCreator_ICurve::SectionToPointList aPoints;
-    startCurveModification( aPoints, false );
-    myCurve->redo();
-    finishCurveModification();
-    mySectionView->reset();
-}
-
-void CurveCreator_Widget::updateUndoRedo()
-{
-  if( !myCurve )
-    return;
-  QAction* anAct = myActionMap[UNDO_ID];
-  if( anAct != 0 ){
-    if( myCurve->getNbUndo() != 0 ){
-      anAct->setEnabled(true);
-    }
-    else{
-      anAct->setDisabled(true);
-    }
-  }
-  anAct = myActionMap[REDO_ID];
-  if( anAct != 0 ){
-    if( myCurve->getNbRedo() != 0 ){
-      anAct->setEnabled(true);
-    }
-    else{
-      anAct->setDisabled(true);
-    }
-  }
-}
-
-void CurveCreator_Widget::onContextMenu( QPoint thePoint )
-{
-  QList<ActionId> aContextActions;
-  aContextActions << CLEAR_ALL_ID << JOIN_ID << JOIN_ALL_ID << SEPARATOR_ID <<
-                     CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID << SET_SECTIONS_POLYLINE_ID <<
-                     SET_SECTIONS_SPLINE_ID;
-  QPoint aGlPoint = mySectionView->mapToGlobal(thePoint);
-  bool isVis = false;
-  QList<ActionId> aResAct;
-  for( int i = 0 ; i < aContextActions.size() ; i++ ){
-    if( aContextActions[i] != SEPARATOR_ID ){
-      if( myActionMap.contains(aContextActions[i]) ){
-        QAction* anAct = myActionMap[aContextActions[i]];
-        if( anAct->isEnabled() ){
-          aResAct << aContextActions[i];
-          isVis = true;
-        }
-      }
-    }
-    else{
-      aResAct << SEPARATOR_ID;
-    }
-  }
-  if( !isVis )
-    return;
-
-  QMenu* aMenu = new QMenu(this);
-  for( int i = 0 ; i < aResAct.size() ; i++ ){
-    if( aResAct[i] == SEPARATOR_ID ){
-      aMenu->addSeparator();
-    }
-    else{
-      QAction* anAct = myActionMap[aResAct[i]];
-      aMenu->insertAction(NULL, anAct);
-    }
-  }
-  aMenu->exec(aGlPoint);
-}
-
-QList<int> CurveCreator_Widget::getSelectedSections()
-{
-  return mySectionView->getSelectedSections();
-}
-
-void CurveCreator_Widget::setSelectedSections( const QList<int>& theSections )
-{
-  mySectionView->setSelectedSections( theSections );
-  updateActionsStates();
-  updateUndoRedo();
-}
-
-/**
- * According to the widget state, performs the remove action
- */
-void CurveCreator_Widget::removeSelected()
-{
-  onRemove();
-}
-
-/**
- * Checks whether there are some selection to be removed
- */
-bool CurveCreator_Widget::removeEnabled()
-{
-  bool isEnabled = getActionMode() == ModificationMode;
-  if ( !isEnabled ) {
-    QList<int> aSelSections = mySectionView->getSelectedSections();
-    CurveCreator_TreeView::SelectionType aSelType = mySectionView->getSelectionType();
-    isEnabled = aSelType == CurveCreator_TreeView::ST_SECTIONS &&
-                aSelSections.size() == 1;
-  }
-  return isEnabled;
-}
-
-void CurveCreator_Widget::setActionMode( const ActionMode& theMode )
-{
-  ActionMode aPrevMode = getActionMode();
-  QAction* aPrevAction = getAction( aPrevMode );
-  QAction* anAction = getAction( theMode );
-  switch ( theMode ) {
-    case NoneMode:
-    case AdditionMode: {
-      if ( aPrevAction ) {
-        if ( aPrevAction->isChecked() ) {
-          aPrevAction->setChecked( false );
-        }
-      }
-      if ( aPrevMode == ModificationMode )
-        onModificationMode( false );
-      if ( aPrevMode == AdditionMode )
-        onAdditionMode( false );
-
-      if ( theMode == AdditionMode )
-      {
-        anAction->setChecked( true );
-        onModeChanged( true );
-      }
-    }
-    break;
-    break;
-    case ModificationMode:
-    {
-      //TODO
-    }
-    break;
-    case DetectionMode:
-      break;
-  }
-}
-
-CurveCreator_Widget::ActionMode CurveCreator_Widget::getActionMode() const
-{
-  ActionMode aMode = NoneMode;
-
-  if ( myActionMap[ADDITION_MODE_ID]->isChecked() )
-    aMode = AdditionMode;
-  else if ( myActionMap[MODIFICATION_MODE_ID]->isChecked() )
-    aMode = ModificationMode;
-  else if ( myActionMap[DETECTION_MODE_ID]->isChecked() )
-    aMode = DetectionMode;
-
-  return aMode;
-}
-
-//=================================================================================
-// function : GeometryGUI::addCoordsByClick()
-// purpose  : Manage mouse press events in Additon mode
-//=================================================================================
-void CurveCreator_Widget::addCoordsByClick( QMouseEvent* pe )
-{
-  if (pe->button() != Qt::LeftButton)
-    return;
-
-  if ( pe->modifiers() != Qt::ControlModifier ) {
-    Handle(AIS_InteractiveContext) ic = getAISContext();
-    if ( ic.IsNull() )
-      return;
-
-    gp_Pnt aPnt;    
-
-    ic->InitSelected();
-    if ( pe->modifiers() == Qt::ShiftModifier )
-      ic->ShiftSelect();  // Append selection
-    else
-      ic->Select();       // New selection
-
-    {
-      OCCViewer_ViewPort3d* vp = getViewPort();
-      aPnt = CurveCreator_Utils::ConvertClickToPoint( pe->x(), pe->y(), vp->getView() );
-    }
-    // set the coordinates into dialog
-    CurveCreator::Coordinates aCoords;
-    aCoords.push_back( aPnt.X() );
-    aCoords.push_back( aPnt.Y() );
-    if ( myCurve->getDimension() == 3 ) {
-      aCoords.push_back( aPnt.Z() );
-    }
-    addNewPoint(aCoords);
-  }
-}
-
-/**
- * Manage mouse press events
- * \param theWindow an owner of the signal
- * \param theEvent a mouse event
- */
-void CurveCreator_Widget::onMousePress( SUIT_ViewWindow*, QMouseEvent* theEvent )
-{
-  if ( theEvent->button() != Qt::LeftButton )
-    return;
-
-  myPressedX = theEvent->x();
-  myPressedY = theEvent->y();
-
-  switch( getActionMode() ) {
-    case ModificationMode: {
-      //store initial cursor position for Drag&Drop
-      setDragStarted( true, theEvent->pos() );
-      break;
-    }
-    case AdditionMode: {
-      addCoordsByClick( theEvent );
-      break;
-    }
-    default:
-      break;
-  }
-}
-
-/**
- * Manage mouse release events in Modification mode
- * \param theWindow an owner of the signal
- * \param theEvent a mouse event
- */
-void CurveCreator_Widget::onMouseRelease( SUIT_ViewWindow*, QMouseEvent* theEvent )
-{
-  if ( getActionMode() != ModificationMode )
-    return;
-
-  if ( myDragStarted ) {
-    bool isDragged = myDragged;
-    CurveCreator_ICurve::SectionToPointList aDraggedPoints;
-    QMap<CurveCreator_ICurve::SectionToPoint, std::deque< float > > anInitialDragPointsCoords;
-    if ( myDragged ) {
-      aDraggedPoints = myDragPoints;
-      anInitialDragPointsCoords = myInitialDragPointsCoords;
-    }
-
-    setDragStarted( false );
-
-    if ( aDraggedPoints.size() > 0 ) {
-      // Collect old coordinates of the dragged points
-      CurveCreator_ICurve::SectionToPointCoordsList anOldPoints;
-      foreach ( const CurveCreator_ICurve::SectionToPoint aSectionToPoint, anInitialDragPointsCoords.keys() ) {
-        CurveCreator::Coordinates aCoords = anInitialDragPointsCoords.value( aSectionToPoint );
-        anOldPoints.push_back( std::make_pair( aSectionToPoint, aCoords ) );
-      }
-
-      if ( myCurve->canPointsBeSorted() ) {
-        // Add old coordinates of the curve points (except the dragged points) to the list
-        for( int aSectionId = 0 ; aSectionId < myCurve->getNbSections() ; aSectionId++ ) {
-          CurveCreator::Coordinates aCoords;
-          for ( int aPointId = 0, aNb = myCurve->getNbPoints( aSectionId ); aPointId < aNb; aPointId++ ) {
-            aCoords = myCurve->getPoint( aSectionId, aPointId );
-            if ( aCoords.size() < 2 ) {
-              continue;
-            }
-            
-            CurveCreator_ICurve::SectionToPoint aSectionToPoint = std::make_pair( aSectionId, aPointId );
-
-            if ( !anInitialDragPointsCoords.contains( aSectionToPoint ) ) {
-              anOldPoints.push_back( std::make_pair( aSectionToPoint, aCoords ) );
-            }
-          }
-        }
-        
-        // Apply points sorting
-        CurveCreator_ICurve::SectionToPointList aPoints;
-        startCurveModification( aPoints, false );
-
-        myCurve->setSkipSorting( false );
-
-        CurveCreator_ICurve::SectionToPointCoordsList aCoordList;
-        CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aDraggedPoints.begin(),
-                                                                aLast = aDraggedPoints.end();
-        for ( ; anIt != aLast; anIt++ ) {
-          int aSectionId = anIt->first;
-          int aPointId = anIt->second;
-          std::deque<float> aPos = myCurve->getPoint( aSectionId, aPointId );
-
-          aCoordList.push_back(
-            std::make_pair( std::make_pair( aSectionId, aPointId ), aPos ) );
-        }
-
-        myCurve->setSeveralPoints( aCoordList, false );
-    
-        finishCurveModification( aDraggedPoints );
-      } else {
-        // if the drag of some points has happened, restore the drag selection
-        START_MEASURE_TIME;
-        setSelectedPoints( aDraggedPoints );
-        END_MEASURE_TIME( "drop" );
-      }
-
-      // Save drag difference
-      myCurve->saveCoordDiff( anOldPoints );
-    }
-  }
-  else // check whether the segment is clicked an a new point should be added to the segment
-  {
-    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();
-}
-
-/**
- * Manage mouse move events in Modification mode
- * \param theWindow an owner of the signal
- * \param theEvent a mouse event
- */
-void CurveCreator_Widget::onMouseMove( SUIT_ViewWindow*, QMouseEvent* theEvent )
-{
-  if ( getActionMode() != ModificationMode || !myDragStarted )
-    return;
-
-  QPoint aPos = theEvent->pos();
-  if ( (aPos - myDragStartPosition).manhattanLength() < QApplication::startDragDistance() )
-    return;
-
-  START_MEASURE_TIME;
-
-  moveSelectedPoints( aPos.x(), aPos.y() );
-  myDragStartPosition = aPos;
-
-  END_MEASURE_TIME( "drag" );
-}
-
-/**
- * Set zero viewer by the last view closed in
- * \param theManager a viewer manager
- */
-void CurveCreator_Widget::onLastViewClosed( SUIT_ViewManager* theManager )
-{
-  myOCCViewer = 0;
-}
-
-void CurveCreator_Widget::onMousePress( QMouseEvent* theEvent )
-{
-  onMousePress( 0, theEvent );
-}
-
-void CurveCreator_Widget::onMouseRelease( QMouseEvent* theEvent )
-{
-  onMouseRelease( 0, theEvent );
-}
-
-void CurveCreator_Widget::onMouseMove( QMouseEvent* theEvent )
-{
-  onMouseMove( 0, theEvent );
-}
-
-void CurveCreator_Widget::onCellChanged( int theRow, int theColumn )
-{
-  int aCurrSect = myLocalPointView->getSectionId( theRow );
-  int aPntIndex = myLocalPointView->getPointId( theRow );
-
-  if ( aPntIndex < 0 )
-    return;
-
-  CurveCreator_ICurve::SectionToPointList aSelPoints;
-  startCurveModification( aSelPoints );
-
-  double aX  = myLocalPointView->item( theRow, 2 )->data( Qt::UserRole ).toDouble();
-  double anY = myLocalPointView->item( theRow, 3 )->data( Qt::UserRole ).toDouble();
-  std::deque<float> aChangedPos;
-  aChangedPos.push_back( aX );
-  aChangedPos.push_back( anY );
-  myCurve->setPoint( aCurrSect, aPntIndex, aChangedPos );
-
-  finishCurveModification( aSelPoints );
-}
-
-/**
- * Removes a selected section from the curve. Updates undo/redo status
- */
-void CurveCreator_Widget::removeSection()
-{
-  stopActionMode();
-
-  QList<int> aSections = mySectionView->getSelectedSections();
-  for( int i = 0 ; i < aSections.size() ; i++ ){
-    int aSectNum = aSections[i] - (i);
-    myCurve->removeSection( aSectNum );
-    mySectionView->sectionsRemoved( aSectNum );
-  }
-  mySectionView->clearSelection();
-  updateUndoRedo();
-}
-
-/**
- * Removes a selected points from the curve. Updates undo/redo status
- */
-void CurveCreator_Widget::removePoint()
-{
-  CurveCreator_ICurve::SectionToPointList aPoints;
-  getSelectedPoints( aPoints );
-  if ( aPoints.size() == 0 )
-    return;
-
-  CurveCreator_ICurve::SectionToPointList aSelPoints;
-  startCurveModification( aSelPoints, false );
-
-  myCurve->removeSeveralPoints( aPoints );
-  finishCurveModification( CurveCreator_ICurve::SectionToPointList() );
-}
-
-void CurveCreator_Widget::addNewPoint(const CurveCreator::Coordinates& theCoords)
-{
-  if( !myCurve )
-    return;
-  QList<int> aSections = mySectionView->getSelectedSections();
-  if( aSections.size() == 0 ){
-    return;
-  }
-  int aSection = aSections[0];
-  myCurve->addPoints(theCoords, aSection); // add to the end of section
-  mySectionView->pointsAdded( aSection, myCurve->getNbPoints( aSection ) );
-  updateActionsStates();
-  updateUndoRedo();
-}
-
-void CurveCreator_Widget::insertPointToSelectedSegment( const int theX,
-                                                        const int theY )
-{
-  Handle(AIS_InteractiveContext) aContext = getAISContext();
-
-  OCCViewer_ViewPort3d* aViewPort = getViewPort();
-  Handle(V3d_View) aView;
-  if ( aViewPort )
-    aView = aViewPort->getView();
-
-  if ( aContext.IsNull() || aView.IsNull() )
-    return;
-  gp_Pnt aPoint;
-  gp_Pnt aPoint1, aPoint2;
-  Handle(AIS_InteractiveObject) anAISObject = myCurve->getAISObject();
-  bool isFoundPoint = CurveCreator_Utils::pointOnObject( aView, anAISObject, theX, theY,
-                                                         aPoint, aPoint1, aPoint2 );
-  if ( !isFoundPoint )
-    return;
-
-  // insert the point to the model curve
-  CurveCreator_ICurve::SectionToPointList aSelPoints;
-  startCurveModification( aSelPoints );
-
-  CurveCreator::Coordinates aCoords;
-  aCoords.push_back( aPoint.X() );
-  aCoords.push_back( aPoint.Y() );
-
-  CurveCreator_ICurve::SectionToPointList aPoints1, aPoints2;
-  findSectionsToPoints( aPoint1.X(), aPoint1.Y(), aPoints1 );
-  findSectionsToPoints( aPoint2.X(), aPoint2.Y(), aPoints2 );
-  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++ ) {
-    int aSectionCur = anIt->first;
-    CurveCreator_ICurve::SectionToPointList::const_iterator anIt2 = aPoints2.begin(),
-                                                            aLast2 = aPoints2.end();
-    for ( ; anIt2 != aLast2 && aSectionId < 0; anIt2++ ) {
-      if ( anIt2->first == aSectionCur ) {
-        aSectionId = aSectionCur;
-        aPoint1Id = anIt->second;
-        aPoint2Id = anIt2->second;
-      }
-    }
-  }
-
-  int anInsertPos = -1;
-  int aLastPoint = myCurve->getNbPoints( aSectionId )-1; 
-  if ( ( aPoint1Id == aLastPoint && aPoint2Id == 0 ) ||
-       ( aPoint2Id == aLastPoint && aPoint1Id == 0 ) )
-    anInsertPos = -1; // if the section happens between first and last points
-  else
-    anInsertPos = aPoint1Id < aPoint2Id ? aPoint1Id + 1 : aPoint2Id + 1;
-
-  myCurve->addPoints( aCoords, aSectionId, anInsertPos );
-  mySectionView->pointsAdded( aSectionId, myCurve->getNbPoints( aSectionId ) );
-
-  finishCurveModification( aSelPoints );
-
-  setSelectedPoints();
-}
-
-void CurveCreator_Widget::moveSelectedPoints( const int theXPosition,
-                                              const int theYPosition )
-{
-  OCCViewer_ViewPort3d* aViewPort = getViewPort();
-  if ( !aViewPort )
-    return;
-
-  CurveCreator_ICurve::SectionToPointList aPoints;
-  startCurveModification( aPoints, false );
-
-  gp_Pnt aStartPnt = CurveCreator_Utils::ConvertClickToPoint( myDragStartPosition.x(),
-                                                              myDragStartPosition.y(),
-                                                              aViewPort->getView() );
-  gp_Pnt anEndPnt = CurveCreator_Utils::ConvertClickToPoint( theXPosition, theYPosition,
-                                                             aViewPort->getView() );
-  double aXDelta = aStartPnt.X() - anEndPnt.X();
-  double anYDelta = aStartPnt.Y() - anEndPnt.Y();
-
-  CurveCreator_ICurve::SectionToPointCoordsList aCoordList;
-  std::deque<float> aChangedPos;
-  CurveCreator_ICurve::SectionToPointList::const_iterator anIt = myDragPoints.begin(),
-                                                          aLast = myDragPoints.end();
-  for ( ; anIt != aLast; anIt++ ) {
-    int aSectionId = anIt->first;
-    int aPointId = anIt->second;
-    aChangedPos = myCurve->getPoint( aSectionId, aPointId );
-    if ( aChangedPos.size() < 2 )
-      continue;
-
-    // Remember drag points coordinates
-    if ( !myDragged ) {
-      myInitialDragPointsCoords.insert( std::make_pair( aSectionId, aPointId ), aChangedPos );
-    }
-
-    aChangedPos[0] = aChangedPos[0] - aXDelta;
-    aChangedPos[1] = aChangedPos[1] - anYDelta;
-    
-    aCoordList.push_back(
-      std::make_pair(std::make_pair( aSectionId, aPointId ), 
-                     aChangedPos ));
-  }
-  myCurve->setSeveralPoints( aCoordList, false );
-
-  myDragged = true;
-  finishCurveModification( myDragPoints );
-}
-
-void CurveCreator_Widget::updateLocalPointView()
-{
-  if ( myDragStarted )
-    return;
-  Handle(AIS_InteractiveContext) aContext = getAISContext();
-  if ( aContext.IsNull() )
-    return;
-
-  CurveCreator_Utils::getSelectedPoints( aContext, myCurve, myLocalPoints );
-  int aNbPoints = myLocalPoints.size();
-
-  bool isRowLimit = aNbPoints > myLocalPointRowLimit;
-  myLocalPointView->setVisible( getActionMode() == ModificationMode && !isRowLimit );
-
-  if ( !isRowLimit ) {
-    bool isBlocked = myLocalPointView->blockSignals(true);
-
-    myLocalPointView->setLocalPointsToTable( myLocalPoints );
-
-    myLocalPointView->blockSignals( isBlocked );
-  }
-}
-
-/**
- * 
- */
-void CurveCreator_Widget::setLocalPointContext( const bool theOpen, const bool isUpdateTable )
-{
-  CurveCreator_Utils::setLocalPointContext( myCurve, getAISContext(), theOpen );
-  if ( !theOpen && isUpdateTable )
-    updateLocalPointView();
-}
-
-/**
- * Set drag operation started. Save the position and a list of dragged points
- * \param theState the drag operation state: started/finished
- * \param thePoint the start drag position
- */
-void CurveCreator_Widget::setDragStarted( const bool theState, const QPoint& thePoint )
-{
-  if ( theState ) {
-    getSelectedPoints( myDragPoints );
-
-    myDragStarted = myDragPoints.size();
-    myDragStartPosition = thePoint;
-    if ( myDragStarted ) {
-      // change a viewer interaction style in order to avoid a select rectangle build
-      myDragInteractionStyle = changeInteractionStyle( SUIT_ViewModel::KEY_FREE );
-      myCurve->setSkipSorting( true );
-    }
-  }
-  else {
-    if ( myDragStarted )
-      changeInteractionStyle( myDragInteractionStyle );
-    myDragStarted = false;
-    myDragPoints.clear();
-    myInitialDragPointsCoords.clear();
-  }
-  myDragged = false;
-}
-
-void CurveCreator_Widget::getSelectedPoints( CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  thePoints.clear();
-  thePoints = myLocalPoints;
-}
-
-void CurveCreator_Widget::setSelectedPoints( const CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  if ( myDragStarted )
-    return;
-  Handle(AIS_InteractiveContext) aContext = getAISContext();
-  if ( aContext.IsNull() || !aContext->HasOpenedContext() )
-    return;
-
-  CurveCreator_Utils::setSelectedPoints( aContext, myCurve, thePoints );
-
-  updateLocalPointView();
-}
-
-void CurveCreator_Widget::stopActionMode()
-{
-  setActionMode( NoneMode );
-}
-
-/**
- * Get viewer information before perform the curve modification.
- * Take a list of selected cuve points an close local context.
- * The context should be closed because the curve presentation is
- * redisplayed and if it is not closed, when we close the local context
- * later, the presentation shown in the local context is disappeared.
- * \param thePoints an output list of curve selected points
- * \param theFillPoints a flag whether the selection list should be filled
- */
-void CurveCreator_Widget::startCurveModification(
-                           CurveCreator_ICurve::SectionToPointList& thePoints,
-                           const bool theFillPoints )
-{
-  if ( theFillPoints ) {
-    thePoints.clear();
-    getSelectedPoints( thePoints );
-  }
-  setLocalPointContext( false );
-}
-
-/**
- * Restore the viewer state after the curve modification is done.
- * Open local context and select given points inside it.
- * \param thePoints a list of curve selected points
- */
-void CurveCreator_Widget::finishCurveModification(
-                           const CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  if ( getActionMode() == ModificationMode )
-    setLocalPointContext( true );
-  setSelectedPoints( thePoints );
-  updateUndoRedo();
-}
-
-/**
- * Returns a point index in the model curve by the point coordinates in the viewer
- * \param theX the X coordinate of the point
- * \param theY the Y coordinate of the point
- */
-int CurveCreator_Widget::findLocalPointIndex( int theSectionId, float theX, float theY )
-{
-  return CurveCreator_UtilsICurve::findLocalPointIndex( myCurve, theSectionId, theX, theY );
-}
-
-void CurveCreator_Widget::findSectionsToPoints( const double theX, const double theY,
-                                 CurveCreator_ICurve::SectionToPointList& thePoints )
-{
-  return CurveCreator_UtilsICurve::findSectionsToPoints( myCurve, theX, theY, thePoints );
-}
-
-void CurveCreator_Widget::convert( const CurveCreator_ICurve::SectionToPointList& thePoints,
-                                   QMap<int, QList<int> >& theConvPoints )
-{
-  return CurveCreator_UtilsICurve::convert( thePoints, theConvPoints );
-}
-
-/**
- * Returns whethe the container has the value
- * \param theList a container of values
- * \param theValue a value
- */
-bool CurveCreator_Widget::contains( const CurveCreator_ICurve::SectionToPointList& theList,
-                                    const CurveCreator_ICurve::SectionToPoint& theValue ) const
-{
-  return CurveCreator_UtilsICurve::contains( theList, theValue );
-}
diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.h b/src/HYDROCurveCreator/CurveCreator_Widget.h
deleted file mode 100644 (file)
index 31b4db0..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef CURVECREATOR_WIDGET_H
-#define CURVECREATOR_WIDGET_H
-
-#include "CurveCreator_Macro.hxx"
-#include "CurveCreator.hxx"
-#include "CurveCreator_ICurve.hxx"
-
-#include <QWidget>
-#include <QMap>
-
-#include <SUIT_ViewWindow.h>
-#include <AIS_InteractiveObject.hxx>
-#include <AIS_InteractiveContext.hxx>
-
-#include <Geom_Curve.hxx>
-#include <V3d_View.hxx>
-#include <gp_Pnt.hxx>
-#include <TopoDS_Vertex.hxx> // TODO - remove
-
-class OCCViewer_Viewer;
-class OCCViewer_ViewPort3d;
-
-class AIS_ListOfInteractive;
-
-class QAction;
-class QPixmap;
-class CurveCreator_TableView;
-class CurveCreator_TreeView;
-class CurveCreator_NewPointDlg;
-class CurveCreator_NewSectionDlg;
-
-class CURVECREATOR_EXPORT CurveCreator_Widget : public QWidget
-{
-  Q_OBJECT
-
-public:
-  enum ActionFlags {
-    NoFlags              = 0x00000000,
-    DisableDetectionMode = 0x00000001,
-    DisableNewSection    = 0x00000002,
-    DisableClosedSection = 0x00000004
-  };
-
-  enum ActionMode {
-    NoneMode,
-    AdditionMode,
-    ModificationMode,
-    DetectionMode
-  };
-
-public:
-  explicit CurveCreator_Widget( QWidget* parent,
-                                CurveCreator_ICurve *theCurve,
-                                const int theActionFlags = NoFlags,
-                                const QStringList& theCoordTitles = QStringList(),
-                                Qt::WindowFlags fl=0,
-                                int theLocalPointRowLimit = 20);
-
-  // OCC viewer manipulation
-  void setOCCViewer( OCCViewer_Viewer* theViewer );
-
-  Handle(AIS_InteractiveContext) getAISContext();
-  OCCViewer_ViewPort3d* getViewPort();
-  int changeInteractionStyle( int theStyle );
-
-  void reset();
-  void setCurve( CurveCreator_ICurve* theCurve );
-
-  QList<int> getSelectedSections();
-  void setSelectedSections( const QList<int>& theSections );
-
-  void  removeSelected();
-  bool  removeEnabled();
-
-  void setActionMode( const ActionMode& theMode );
-  ActionMode getActionMode() const;
-
-signals:
-  void selectionChanged();
-  void subOperationStarted( QWidget*, bool );
-  void subOperationFinished( QWidget* );
-
-public slots:
-
-protected slots:
-  void     onAdditionMode(bool checked);
-  void     onModificationMode(bool checked);
-  void     onDetectionMode(bool checked);
-  void     onModeChanged(bool checked);
-  void     onNewSection();
-  void     onSelectionChanged();
-  void     onAddNewSection();
-  void     onEditSection( int theSection );
-  void     onModifySection();
-  void     onCancelSection();
-  void     onJoin();
-  void     onRemove();
-  void     onClearAll();
-  void     onJoinAll();
-  void     onSetSpline();
-  void     onSetPolyline();
-  void     onCloseSections();
-  void     onUncloseSections();
-  void     onUndo();
-  void     onRedo();
-  void     onUndoSettings();
-  void     onContextMenu(QPoint thePoint);
-
-  void     onMousePress( SUIT_ViewWindow*, QMouseEvent* theEvent );
-  void     onMouseRelease( SUIT_ViewWindow*, QMouseEvent* theEvent );
-  void     onMouseMove( SUIT_ViewWindow*, QMouseEvent* theEvent );
-  void     onLastViewClosed( SUIT_ViewManager* theManager );
-
-  void     onMousePress( QMouseEvent* theEvent );
-  void     onMouseRelease( QMouseEvent* theEvent );
-  void     onMouseMove( QMouseEvent* theEvent );
-
-  void     onCellChanged( int theRow, int theColumn );
-
-protected:
-  void     addCoordsByClick( QMouseEvent* );
-
-protected:
-  enum ActionId{ NONE_ID,
-                 UNDO_ID, 
-                 REDO_ID, 
-                 NEW_SECTION_ID, 
-                 ADDITION_MODE_ID, 
-                 REMOVE_ID, 
-                 REMOVE_ALL_ID, 
-                 JOIN_ID,
-                 JOIN_ALL_ID, 
-                 CLOSE_SECTIONS_ID, 
-                 UNCLOSE_SECTIONS_ID,
-                 SET_SECTIONS_POLYLINE_ID, 
-                 SET_SECTIONS_SPLINE_ID, 
-                 CLEAR_ALL_ID, 
-                 SEPARATOR_ID, 
-                 MODIFICATION_MODE_ID, 
-                 DETECTION_MODE_ID 
-  };
-
-private:
-  OCCViewer_Viewer* getOCCViewer();
-
-  QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage,
-                         const QString& theToolTip, const QKeySequence& theShortcut );
-  QAction* getAction(ActionId theId);
-  QAction* getAction(ActionMode theMode);
-
-  void updateActionsStates();
-  void updateUndoRedo();
-
-  void removeSection();
-  void removePoint();
-  void addNewPoint(const CurveCreator::Coordinates& theCoords);
-  void insertPointToSelectedSegment( const int theXPosition,
-                                     const int theYPosition );
-  void moveSelectedPoints( const int theXPosition, const int theYPosition );
-  void updateLocalPointView();
-  void setLocalPointContext( const bool theOpen, const bool isUpdateTable = false );
-
-  void setDragStarted( const bool theState, const QPoint& thePoint = QPoint() );
-
-  void getSelectedPoints( CurveCreator_ICurve::SectionToPointList& thePoints );
-  void setSelectedPoints( const CurveCreator_ICurve::SectionToPointList& =
-                               CurveCreator_ICurve::SectionToPointList() );
-
-  void stopActionMode();
-
-  void startCurveModification( CurveCreator_ICurve::SectionToPointList& thePoints,
-                               const bool theFillPoints = true );
-  void finishCurveModification( const CurveCreator_ICurve::SectionToPointList& thePoints = 
-                                      CurveCreator_ICurve::SectionToPointList() );
-
-  // curve algorithm
-  int  findLocalPointIndex( int theSectionId, float theX, float theY );
-  void findSectionsToPoints( const double theX, const double theY,
-                             CurveCreator_ICurve::SectionToPointList& thePoints );
-  void convert( const CurveCreator_ICurve::SectionToPointList& thePoints,
-                QMap<int, QList<int> >& theConvPoints );
-
-  bool contains( const CurveCreator_ICurve::SectionToPointList& theList,
-                 const CurveCreator_ICurve::SectionToPoint& theValue ) const;
-
-private:
-  QMap<ActionId, QAction*>    myActionMap;
-  CurveCreator_ICurve*        myCurve;
-  CurveCreator_TreeView*      mySectionView;
-  CurveCreator_TableView*     myLocalPointView;
-  CurveCreator_ICurve::SectionToPointList myLocalPoints;
-  CurveCreator_NewSectionDlg* myNewSectionEditor;
-  OCCViewer_Viewer*           myOCCViewer;
-  int                         myLocalPointRowLimit;
-  int                         mySection;
-  int                         myPointNum;
-  bool                        myDragStarted;
-  QPoint                      myDragStartPosition;
-  int                         myDragInteractionStyle;
-  CurveCreator_ICurve::SectionToPointList myDragPoints;
-  QMap<CurveCreator_ICurve::SectionToPoint, CurveCreator::Coordinates> myInitialDragPointsCoords;
-  bool                        myDragged;
-  QByteArray                  myGuiState;
-  int                         myPressedX;
-  int                         myPressedY;
-};
-
-#endif // CURVECREATOR_WIDGET_H
diff --git a/src/HYDROCurveCreator/OCCViewer_Utilities.cxx b/src/HYDROCurveCreator/OCCViewer_Utilities.cxx
deleted file mode 100644 (file)
index e89ce45..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#include "OCCViewer_Utilities.h"
-
-#include <OCCViewer_ViewFrame.h>
-#include <OCCViewer_ViewModel.h>
-#include <OCCViewer_ViewPort3d.h>
-#include <SUIT_ViewManager.h>
-
-#include <QtxActionToolMgr.h>
-
-#include <V3d_View.hxx>
-
-#include <QAction>
-
-void OCCViewer_Utilities::setViewer2DMode( OCCViewer_Viewer* theViewer,
-                                           const OCCViewer_ViewWindow::Mode2dType& theMode )
-{
-  OCCViewer_ViewFrame* aFrame = dynamic_cast<OCCViewer_ViewFrame*>
-                                     ( theViewer->getViewManager()->getActiveView() );
-  OCCViewer_ViewWindow* aView = aFrame ? aFrame->getView( OCCViewer_ViewFrame::MAIN_VIEW ) : 0;
-  if ( !aView )
-    return;
-
-  // set a view mode
-  aView->set2dMode( theMode );
-  bool is2dMode = theMode != OCCViewer_ViewWindow::No2dMode;
-
-  // enable/disable view actions
-  QList<int> aNo2dActions;
-  aNo2dActions << OCCViewer_ViewWindow::ChangeRotationPointId
-               << OCCViewer_ViewWindow::RotationId
-               << OCCViewer_ViewWindow::FrontId
-               << OCCViewer_ViewWindow::BackId
-               << OCCViewer_ViewWindow::TopId
-               << OCCViewer_ViewWindow::BottomId
-               << OCCViewer_ViewWindow::LeftId
-               << OCCViewer_ViewWindow::RightId
-               << OCCViewer_ViewWindow::AntiClockWiseId
-               << OCCViewer_ViewWindow::ClockWiseId
-               << OCCViewer_ViewWindow::ResetId;
-
-  QtxActionToolMgr* aToolMgr = aView->toolMgr();
-  QAction* anAction;
-  for ( int i = 0, aNb = aNo2dActions.size(); i < aNb; i++ ) {
-    anAction = aToolMgr->action( aNo2dActions[i] );
-    if ( anAction )
-      anAction->setEnabled( !is2dMode );
-  }
-
-  // change view position
-  Handle(V3d_View) aView3d = aView->getViewPort()->getView();
-  if ( !aView3d.IsNull() ) {
-    switch ( theMode ) {
-      case OCCViewer_ViewWindow::XYPlane:
-        aView3d->SetProj (V3d_Zpos);
-        break;
-      case OCCViewer_ViewWindow::XZPlane:
-        aView3d->SetProj (V3d_Yneg);
-        break;
-      case OCCViewer_ViewWindow::YZPlane:
-        aView3d->SetProj (V3d_Xpos);
-        break;
-    }
-  }
-}
diff --git a/src/HYDROCurveCreator/OCCViewer_Utilities.h b/src/HYDROCurveCreator/OCCViewer_Utilities.h
deleted file mode 100644 (file)
index c89eb45..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef OCCVIEWER_UTILITIES_H
-#define OCCVIEWER_UTILITIES_H
-
-#include "CurveCreator_Macro.hxx"
-
-#include <OCCViewer_ViewWindow.h>
-
-class OCCViewer_Viewer;
-
-#ifdef WIN32
-#pragma warning ( disable:4251 )
-#endif
-
-class CURVECREATOR_EXPORT OCCViewer_Utilities
-{
-public:
-
-  /*!
-   * Set 2D mode for the viewer. Hide or show 3D actions.
-   * \param theViewer an OCC viewer
-   * \param theMode OCC view window mode
-   */
-  static void setViewer2DMode( OCCViewer_Viewer* theViewer,
-                               const OCCViewer_ViewWindow::Mode2dType& theMode );
-
-};
-
-#endif
index 4c7579db143dc2b4f58db0b5b909a31875c368a2..a3acda812aaf8aa4843d2ff118f025639d4f8942 100644 (file)
@@ -13,6 +13,7 @@ set(PROJECT_HEADERS
     HYDROGUI_ColorWidget.h
     HYDROGUI_CopyPasteOp.h
     HYDROGUI_CopyPastePositionOp.h
+    HYDROGUI_CurveCreatorProfile.h
     HYDROGUI_DataBrowser.h
     HYDROGUI_DataModel.h
     HYDROGUI_DataModelSync.h
@@ -113,6 +114,7 @@ set(PROJECT_SOURCES
     HYDROGUI_ColorWidget.cxx
     HYDROGUI_CopyPasteOp.cxx
     HYDROGUI_CopyPastePositionOp.cxx
+    HYDROGUI_CurveCreatorProfile.cxx
     HYDROGUI_DataBrowser.cxx
     HYDROGUI_DataModel.cxx
     HYDROGUI_DataModelSync.cxx
@@ -220,16 +222,15 @@ include_directories(
   ${GEOM_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../HYDROData
-  ${CMAKE_CURRENT_SOURCE_DIR}/../HYDROCurveCreator
   ${VTK_INCLUDE_DIRS}
 )
 
 
 add_library(HYDROGUI SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${PROJECT_HEADERS_MOC})
-target_link_libraries(HYDROGUI HYDROData HYDROCurveCreator
+target_link_libraries(HYDROGUI HYDROData
     ${CAS_TKV3d} ${CAS_TKTopAlgo} ${CAS_TKBrep} ${CAS_TKBO}
     ${GUI_LightApp} ${GUI_CAM} ${GUI_suit} ${GUI_qtx} ${GUI_ObjBrowser} ${GUI_GraphicsView} ${GUI_std} 
-    ${GUI_Event} ${GUI_OCCViewer} ${GEOM_GEOM} ${GEOM_GEOMBase}
+    ${GUI_Event} ${GUI_OCCViewer} ${GEOM_GEOM} ${GEOM_GEOMBase} ${GEOM_CurveCreator}
     ${VTK_LIBRARIES} ${SVTK} ${SalomeObject} ${SalomePrs}
     )
 
diff --git a/src/HYDROGUI/HYDROGUI_CurveCreatorProfile.cxx b/src/HYDROGUI/HYDROGUI_CurveCreatorProfile.cxx
new file mode 100644 (file)
index 0000000..07c5174
--- /dev/null
@@ -0,0 +1,262 @@
+// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include <HYDROGUI_CurveCreatorProfile.h>
+#include <CurveCreator_Displayer.hxx>
+#include <CurveCreator_Section.hxx>
+
+HYDROGUI_CurveCreatorProfile::HYDROGUI_CurveCreatorProfile()
+: CurveCreator_Curve( CurveCreator::Dim2d )
+{
+  CurveCreator_Section *aSection = new CurveCreator_Section;
+  aSection->myName     = getUniqSectionName();
+  aSection->myType     = CurveCreator::Polyline;
+  aSection->myIsClosed = false;
+
+  mySections.push_back( aSection );
+}
+
+HYDROGUI_CurveCreatorProfile::~HYDROGUI_CurveCreatorProfile()
+{
+}
+
+bool HYDROGUI_CurveCreatorProfile::moveSectionInternal( const int theISection,
+                                                        const int theNewIndex )
+{
+  return false;
+}
+
+bool HYDROGUI_CurveCreatorProfile::moveSection( const int theISection,
+                                                const int theNewIndex )
+{
+  return false;
+}
+
+bool HYDROGUI_CurveCreatorProfile::clearInternal()
+{
+  // erase curve from the viewer
+  if( myDisplayer )
+    myDisplayer->eraseAll( true );
+
+  // Delete all allocated data.
+  CurveCreator_Section* aSection = getSection( 0 );
+  if ( aSection )
+    aSection->myPoints.clear();
+
+  return true;
+}
+
+bool HYDROGUI_CurveCreatorProfile::joinInternal( const std::list<int>& theSections )
+{
+  return false;
+}
+
+bool HYDROGUI_CurveCreatorProfile::join( const std::list<int>& theSections )
+{
+  return false;
+}
+
+int HYDROGUI_CurveCreatorProfile::addSectionInternal( const std::string&               theName, 
+                                                      const CurveCreator::SectionType  theType,
+                                                      const bool                       theIsClosed, 
+                                                      const CurveCreator::Coordinates& thePoints )
+{
+  return -1;
+}
+
+int HYDROGUI_CurveCreatorProfile::addSection( const std::string&              theName,
+                                              const CurveCreator::SectionType theType,
+                                              const bool                      theIsClosed )
+{
+  return -1;
+}
+
+int HYDROGUI_CurveCreatorProfile::addSection( const std::string&               theName,
+                                              const CurveCreator::SectionType  theType,
+                                              const bool                       theIsClosed, 
+                                              const CurveCreator::Coordinates& thePoints )
+{
+  return -1;
+}
+
+bool HYDROGUI_CurveCreatorProfile::removeSectionInternal( const int theISection )
+{
+  return false;
+}
+  
+bool HYDROGUI_CurveCreatorProfile::removeSection( const int theISection )
+{
+  return false;
+}
+
+bool HYDROGUI_CurveCreatorProfile::setClosedInternal( const int theISection, const bool theIsClosed )
+{
+  return false;
+}
+
+bool HYDROGUI_CurveCreatorProfile::setClosed( const int theISection, const bool theIsClosed )
+{
+  return false;
+}
+
+bool HYDROGUI_CurveCreatorProfile::addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap )
+{
+  bool res = false;
+
+  CurveCreator_Section* aSection = getSection( 0 );
+  if( !aSection )
+    return res;
+
+  CurveCreator::SectionsMap::const_iterator anIt = theSectionsMap.begin();
+  for ( ; anIt != theSectionsMap.end(); anIt++ )
+  {
+    int anISection = anIt->first;
+    if( anISection != 0 )
+      continue;
+
+    const CurveCreator::PosPointsList& aSectionPoints = anIt->second;
+
+    CurveCreator::PosPointsList::const_iterator aPntIt = aSectionPoints.begin();
+    for( ; aPntIt != aSectionPoints.end(); aPntIt++ )
+    {
+      const CurveCreator::Coordinates& aNewCoords = (*aPntIt)->myCoords;
+      CurveCreator::Coordinates::const_iterator aNewPntIt = aNewCoords.begin();
+      for( ; aNewPntIt != aNewCoords.end(); aNewPntIt++ )
+      {
+        const CurveCreator::TypeCoord& aCoordU = *aNewPntIt++;
+        if ( aNewPntIt == aNewCoords.end() )
+          break;
+        
+        const CurveCreator::TypeCoord& aCoordZ = *aNewPntIt;
+
+        CurveCreator::TypeCoord aC = aCoordU - 1;
+        if ( !aSection->myPoints.empty() )
+          aC = *(aSection->myPoints.end() - 2);
+
+        if ( aSection->myPoints.empty() || aCoordU >= aC )
+        {
+          aSection->myPoints.push_back( aCoordU );
+          aSection->myPoints.push_back( aCoordZ );
+        }
+        else if ( aCoordU < aSection->myPoints.front() )
+        {
+          aSection->myPoints.push_front( aCoordZ );
+          aSection->myPoints.push_front( aCoordU );
+        }
+        else
+        {
+          CurveCreator::Coordinates::iterator aRefPntIt = aSection->myPoints.begin();
+          for( ; aRefPntIt != aSection->myPoints.end(); aRefPntIt++ )
+          {
+            const CurveCreator::TypeCoord& aRefCoordU = *aRefPntIt++;
+            if ( aCoordU < aRefCoordU )
+              break;
+          }
+
+          aSection->myPoints.insert( aRefPntIt - 1, aNewPntIt - 1, aNewPntIt + 1 );
+        }
+      }
+    }
+
+    res = true;
+  }
+
+  if ( res )
+    redisplayCurve();
+
+  return res;
+}
+
+//! For internal use only! Undo/Redo are not used here.
+bool HYDROGUI_CurveCreatorProfile::setPointInternal( const CurveCreator::SectionsMap &theSectionsMap )
+{
+  bool aRes = false;
+
+  if ( mySkipSorting ) {
+    return CurveCreator_Curve::setPointInternal( theSectionsMap );
+  }
+
+  int anISection = 0;
+  CurveCreator_Section* aSection = getSection( anISection );
+  if( !aSection )
+    return aRes;
+
+  CurveCreator::SectionsMap::const_iterator anIt = theSectionsMap.begin();
+  if ( anIt == theSectionsMap.end() )
+    return aRes;
+
+  const CurveCreator::PosPointsList& aSectionPoints = anIt->second;
+
+  std::list<int> aConvPoints;
+  convert( aSectionPoints, aConvPoints );
+  removeSectionPoints( anISection, aConvPoints );
+
+  aRes = addPointsInternal( theSectionsMap );
+  if ( aRes )
+    redisplayCurve();
+
+  return aRes;
+}
+
+void HYDROGUI_CurveCreatorProfile::convert( const CurveCreator::PosPointsList& thePoints,
+                                            std::list<int>& theConvPoints )
+{
+  theConvPoints.clear();
+
+  CurveCreator::PosPointsList::const_iterator aPntIt = thePoints.begin(),
+                                              aPntLast = thePoints.end();
+  for( ; aPntIt != aPntLast; aPntIt++ )
+  {
+    int anIPnt = (*aPntIt)->myID;
+    theConvPoints.push_back( anIPnt );
+  }
+}
+
+bool HYDROGUI_CurveCreatorProfile::canPointsBeSorted()
+{
+  return true;
+}
+
+/**
+ *  Add one point to the specified section starting from the given theIPnt index
+ *  (or at the end of points if \a theIPnt is -1).
+ */
+bool HYDROGUI_CurveCreatorProfile::addPoints( const CurveCreator::Coordinates& theCoords,
+                                              const int theISection,
+                                              const int theIPnt )
+{
+  int anIPnt = theIPnt;
+
+  if ( anIPnt == - 1 && theCoords.size() > 1 ) {
+    CurveCreator::Coordinates aCoords;
+    for ( int i = 0, aNb = getNbPoints( theISection ); i < aNb; i++ ) {
+      aCoords = getPoint( theISection, i );
+      if ( aCoords.size() < 2 ) {
+        continue;
+      }
+
+      if ( theCoords[0] < aCoords[0] ) {
+        anIPnt = i;
+        break;
+      }
+    }
+  }
+  
+  return CurveCreator_Curve::addPoints( theCoords, theISection, anIPnt );
+}
diff --git a/src/HYDROGUI/HYDROGUI_CurveCreatorProfile.h b/src/HYDROGUI/HYDROGUI_CurveCreatorProfile.h
new file mode 100644 (file)
index 0000000..5d4e97d
--- /dev/null
@@ -0,0 +1,136 @@
+// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef HYDROGUI_CurveCreator_Profile_HeaderFile
+#define HYDROGUI_CurveCreator_Profile_HeaderFile
+
+#include "CurveCreator_Curve.hxx"
+
+/**
+ *  The CurveCreator_Curve object is represented as one or more sets of
+ *  connected points; thus CurveCreator_Curve object can contain several
+ *  not connected curves (polylines or b-splines), each such curve has two
+ *  only ends start and end points in other words non-manifold curves
+ *  are not supported.
+ */
+class HYDROGUI_CurveCreatorProfile : public CurveCreator_Curve
+{
+
+public:
+
+  //! Constructor of the curve.
+  HYDROGUI_CurveCreatorProfile();
+
+  //! Destructor.
+  virtual ~HYDROGUI_CurveCreatorProfile();
+
+public:
+
+  /***********************************************/
+  /***           Section methods               ***/
+  /***********************************************/
+
+  //! For internal use only! Undo/Redo are not used here.
+  virtual bool clearInternal();
+
+  //! For internal use only! Undo/Redo are not used here.
+  virtual bool joinInternal( const std::list<int>& theSections );
+
+  //! 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 );
+  //! Join list of sections to one section (join all if the list is empty)
+  // The first section in the list is a leader, another sections are joined to it
+  virtual bool join( const std::list<int>& theSections );
+
+  //! For internal use only! Undo/Redo are not used here.
+  virtual int addSectionInternal( const std::string &theName, 
+                                  const CurveCreator::SectionType theType,
+                                  const bool theIsClosed,
+                                  const CurveCreator::Coordinates &thePoints);
+  //! Add a new section.
+  virtual int addSection( const std::string &theName, 
+                           const CurveCreator::SectionType theType,
+                           const bool theIsClosed );
+  //! Add a new section.
+  virtual int addSection( const std::string &theName, 
+                           const CurveCreator::SectionType theType,
+                           const bool theIsClosed,
+                           const CurveCreator::Coordinates &thePoints);
+  
+  
+  //! For internal use only! Undo/Redo are not used here.
+  virtual bool removeSectionInternal( const int theISection );
+
+  //! Removes the given sections.
+  virtual bool removeSection( const int theISection );
+
+  
+  //! For internal use only! Undo/Redo are not used here.
+  virtual bool setClosedInternal( const int theISection, 
+                                  const bool theIsClosed );
+  /**
+   *  Set "closed" flag of the specified section (all sections if
+   *  \a theISection is -1).
+   */
+  virtual bool setClosed( const int theISection, 
+                          const bool theIsClosed );
+
+  /***********************************************/
+  /***           Point methods                 ***/
+  /***********************************************/
+
+  //! For internal use only! Undo/Redo are not used here.
+  virtual bool addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap );
+  /**
+   *  Add one point to the specified section starting from the given theIPnt index
+   *  (or at the end of points if \a theIPnt is -1).
+   */
+  //! For internal use only! Undo/Redo are not used here.
+  virtual bool setPointInternal( const CurveCreator::SectionsMap &theSectionsMap );
+
+  /**
+   *  Add one point to the specified section starting from the given theIPnt index.
+   *  Contrary to CurveCreator_Curve::addPoints(...) if \a theIPnt is -1 the right index
+   *  will be calculated automatically in accordance with X coordinate value of the point.
+   */
+  virtual bool addPoints( const CurveCreator::Coordinates &theCoords,
+                          const int theISection,
+                          const int theIPnt = -1 );
+
+  /**
+   * Indicates whether the points can be sorted.
+   */
+  virtual bool canPointsBeSorted();
+
+protected:
+  /**
+   * Converts the list of custom point position objects into a list of point indices
+   * \param thePoints an source list
+   * \param theConvPoints a converted list
+   */
+  void convert( const CurveCreator::PosPointsList& thePoints,
+                std::list<int>& theConvPoints );
+
+};
+
+#endif
index 030ca3ed783848c2bf435998384ec16239dc5690..7614db2affce28d64f1c85c1fbaad28ce8d2a5e2 100644 (file)
@@ -30,7 +30,7 @@
 #include "HYDROGUI_PrsZoneDriver.h"
 #include "HYDROGUI_Tool.h"
 
-#include <CurveCreator_Utils.h>
+#include <CurveCreator_Utils.hxx>
 
 #include <LightApp_Application.h>
 #include <SVTK_ViewWindow.h>
index 082505cbab9c0883f84c6ab00767830cde82f100..8f6c6943901f854cd81183ea33ca152914b8761f 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "HYDROGUI_Tool.h"
 
-#include <CurveCreator_Utils.h>
+#include <CurveCreator_Utils.hxx>
 
 #include <OCCViewer_ViewWindow.h>
 #include <OCCViewer_ViewManager.h>
index 6f2a8e0d35c407de0d7f1140b1d0371f6aae45a9..51e6c30398a76f7f635142942a946817eda3fc89 100644 (file)
@@ -51,7 +51,7 @@
 
 #include <HYDROData_OperationsFactory.h>
 
-#include <CurveCreator_Utils.h>
+#include <CurveCreator_Utils.hxx>
 
 #include <GraphicsView_ViewFrame.h>
 #include <GraphicsView_ViewManager.h>
index a97508ef261b4073a2d426e0371419965d2c1580..384fd865cb87e8e337350155d78f50003ba04264 100755 (executable)
@@ -31,7 +31,7 @@
 #include <HYDROData_Document.h>
 
 #include <CurveCreator_Curve.hxx>
-#include <CurveCreator_Displayer.h>
+#include <CurveCreator_Displayer.hxx>
 
 #include <LightApp_Application.h>
 #include <LightApp_SelectionMgr.h>
index 0829ac445474b8d2c741cbc5090314cb0ac5e024..ff53fa17e3bb18610c138a826bf89e7e801ed4aa 100644 (file)
@@ -28,7 +28,7 @@
 
 #include <CurveCreator_Widget.h>
 #include <CurveCreator_ICurve.hxx>
-#include <CurveCreator_Utils.h>
+#include <CurveCreator_Utils.hxx>
 
 #include <OCCViewer_ViewPort3d.h>
 #include <OCCViewer_Utilities.h>
index 609bdafdf98cca622bbcfa9f42d153daee9234d9..fc5d0f155569e1e4beb8b5d8830b8e65917cd45d 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-#include "HYDROGUI_Module.h"
-#include "HYDROGUI_ProfileOp.h"
-#include "HYDROGUI_ProfileDlg.h"
-#include "HYDROGUI_Tool.h"
-#include "HYDROGUI_UpdateFlags.h"
+#include <HYDROGUI_Module.h>
+#include <HYDROGUI_ProfileOp.h>
+#include <HYDROGUI_ProfileDlg.h>
+#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_UpdateFlags.h>
 #include <HYDROGUI_DataObject.h>
-#include "HYDROData_Document.h"
-#include "HYDROData_Profile.h"
-#include "CurveCreator_Profile.hxx"
-#include "CurveCreator_Displayer.h"
+#include <HYDROData_Document.h>
+#include <HYDROData_Profile.h>
+#include <HYDROGUI_CurveCreatorProfile.h>
+#include <CurveCreator_Displayer.hxx>
 
 #include <LightApp_Application.h>
 #include <LightApp_SelectionMgr.h>
@@ -78,7 +78,7 @@ void HYDROGUI_ProfileOp::startOperation()
   if( myProfile )
     delete myProfile;
 
-  myProfile = new CurveCreator_Profile();
+  myProfile = new HYDROGUI_CurveCreatorProfile();
 
   HYDROGUI_Operation::startOperation();
 
index d93311a1da5cc6c40cd325da9e0c2e70af334d4e..2f14640c67369fd9bd4b64fac0ca1099e1a0070d 100644 (file)
@@ -27,7 +27,7 @@
 
 #include <HYDROData_Profile.h>
 
-class CurveCreator_Profile;
+class HYDROGUI_CurveCreatorProfile;
 
 class HYDROGUI_ProfileOp : public HYDROGUI_Operation
 {
@@ -57,7 +57,7 @@ private:
 private:
   bool                       myIsEdit;
   Handle(HYDROData_Profile)  myEditedObject;
-  CurveCreator_Profile*      myProfile;
+  HYDROGUI_CurveCreatorProfile* myProfile;
 };
 
 #endif