Salome HOME
Old development made for salome Hydro:
[modules/geom.git] / src / CurveCreator / CurveCreator_Widget.h
index 682896f9b1b07a6263d613699828360f80b6f66a..3819c62e4e26070f7c6bc996e3928e22fd16f22d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2020  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
 #include "CurveCreator.hxx"
 #include "CurveCreator_ICurve.hxx"
 
-#include <QWidget>
-#include <QMap>
-
-#include <OCCViewer_ViewWindow.h>
 #include <SUIT_ViewWindow.h>
+#include <OCCViewer_ViewWindow.h>
+
 #include <AIS_InteractiveObject.hxx>
 #include <AIS_InteractiveContext.hxx>
-
+#include <AIS_ListOfInteractive.hxx>
 #include <Geom_Curve.hxx>
 #include <V3d_View.hxx>
 #include <gp_Pnt.hxx>
-#include <TopoDS_Vertex.hxx> // TODO - remove
+
+#include <QWidget>
+#include <QMap>
+
+class CurveCreator_TableView;
+class CurveCreator_TreeView;
+class CurveCreator_NewSectionDlg;
 
 class OCCViewer_Viewer;
 class OCCViewer_ViewPort3d;
 
-class AIS_ListOfInteractive;
-
 class QAction;
 class QPixmap;
-class CurveCreator_TableView;
-class CurveCreator_TreeView;
-class CurveCreator_NewSectionDlg;
 
 class CURVECREATOR_EXPORT CurveCreator_Widget : public QWidget
 {
@@ -57,7 +56,8 @@ public:
     NoFlags              = 0x00000000,
     DisableDetectionMode = 0x00000001,
     DisableNewSection    = 0x00000002,
-    DisableClosedSection = 0x00000004
+    DisableClosedSection = 0x00000004,
+    DisableSetColor      = 0x00000008
   };
 
   enum ActionMode {
@@ -72,8 +72,7 @@ public:
                                 CurveCreator_ICurve *theCurve,
                                 const int theActionFlags = NoFlags,
                                 const QStringList& theCoordTitles = QStringList(),
-                                Qt::WindowFlags fl=0,
-                                int theLocalPointRowLimit = 20);
+                                Qt::WindowFlags fl=0);
 
   // OCC viewer manipulation
   void setOCCViewer( OCCViewer_Viewer* theViewer );
@@ -96,15 +95,18 @@ public:
 
   void SetViewer2DMode(const bool To2D);
 
+  void setSelectedPoints( const CurveCreator_ICurve::SectionToPointList& =
+                               CurveCreator_ICurve::SectionToPointList() );
+
+  void updateLocalPointView();
+  void setLocalPointContext( const bool theOpen, const bool isUpdateTable = false );
+
 signals:
   void selectionChanged();
   void subOperationStarted( QWidget*, bool );
   void subOperationFinished( QWidget* );
-  void curveModified();
 
 public slots:
-
-protected slots:
   void     onAdditionMode(bool checked);
   void     onModificationMode(bool checked);
   void     onDetectionMode(bool checked);
@@ -116,7 +118,9 @@ protected slots:
   void     onModifySection();
   void     onCancelSection();
   void     onJoin();
+  void     onBringTogether();
   void     onRemove();
+  void     onSetColor();
   void     onClearAll();
   void     onJoinAll();
   void     onSetSpline();
@@ -144,31 +148,35 @@ protected:
 
 protected:
   enum ActionId{ NONE_ID,
-                 UNDO_ID, 
-                 REDO_ID, 
-                 NEW_SECTION_ID, 
-                 ADDITION_MODE_ID, 
-                 REMOVE_ID, 
-                 REMOVE_ALL_ID, 
+                 UNDO_ID,
+                 REDO_ID,
+                 NEW_SECTION_ID,
+                 ADDITION_MODE_ID,
+                 REMOVE_ID,
+                 REMOVE_ALL_ID,
                  JOIN_ID,
-                 JOIN_ALL_ID, 
-                 CLOSE_SECTIONS_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 
+                 SET_SECTIONS_POLYLINE_ID,
+                 SET_SECTIONS_SPLINE_ID,
+                 CLEAR_ALL_ID,
+                 SEPARATOR_ID,
+                 MODIFICATION_MODE_ID,
+                 DETECTION_MODE_ID,
+                 BRING_TOGETHER_ID,
+                 SETCOLOR_ID
   };
 
+public:
+  QAction* getAction(ActionId theId);
+  QAction* getAction(ActionMode theMode);
+
 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();
@@ -179,24 +187,20 @@ private:
   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 = 
+  void finishCurveModification( const CurveCreator_ICurve::SectionToPointList& thePoints =
                                       CurveCreator_ICurve::SectionToPointList() );
 
   // curve algorithm
-  int  findLocalPointIndex( int theSectionId, float theX, float theY );
+  int  findLocalPointIndex( int theSectionId, double theX, double theY );
   void findSectionsToPoints( const double theX, const double theY,
                              CurveCreator_ICurve::SectionToPointList& thePoints );
   void convert( const CurveCreator_ICurve::SectionToPointList& thePoints,
@@ -205,6 +209,11 @@ private:
   bool contains( const CurveCreator_ICurve::SectionToPointList& theList,
                  const CurveCreator_ICurve::SectionToPoint& theValue ) const;
 
+protected:
+  // Boundary points of mouse to select the points
+  QPoint myStartPoint;
+  QPoint myEndPoint;
+
 private:
   QMap<ActionId, QAction*>    myActionMap;
   CurveCreator_ICurve*        myCurve;
@@ -223,8 +232,6 @@ private:
   QMap<CurveCreator_ICurve::SectionToPoint, CurveCreator::Coordinates> myInitialDragPointsCoords;
   bool                        myDragged;
   QByteArray                  myGuiState;
-  int                         myPressedX;
-  int                         myPressedY;
   OCCViewer_ViewWindow::Mode2dType myOld2DMode;
 };