Salome HOME
patch for correct compilation on Linux
[modules/hydro.git] / src / HYDROCurveCreator / CurveCreator_Widget.h
index 399711e8a79bffc9bb4f24becfc4bf9622c74bc2..2d8a3e02171b5d8743545f0d1fd99241237e76f7 100644 (file)
@@ -51,9 +51,19 @@ class CurveCreator_NewSectionDlg;
 class CURVECREATOR_EXPORT CurveCreator_Widget : public QWidget
 {
   Q_OBJECT
+
+public:
+  enum ActionFlags {
+    NoFlags              = 0x00000000,
+    DisableDetectionMode = 0x00000001,
+    DisableNewSection    = 0x00000002,
+    DisableClosedSection = 0x00000004
+  };
+
 public:
   explicit CurveCreator_Widget( QWidget* parent,
                                 CurveCreator_ICurve *theCurve,
+                                const int theActionFlags = NoFlags,
                                 Qt::WindowFlags fl=0,
                                 int theLocalPointRowLimit = 20);
 
@@ -75,7 +85,7 @@ public:
 
 signals:
   void selectionChanged();
-  void subOperationStarted( QWidget* );
+  void subOperationStarted( QWidget*, bool );
   void subOperationFinished( QWidget* );
 
 public slots:
@@ -87,7 +97,6 @@ protected slots:
   void     onModeChanged(bool checked);
   void     onNewSection();
   void     onSelectionChanged();
-  void     onAddNewPoint(const CurveCreator::Coordinates& theCoords);
   void     onAddNewSection();
   void     onEditSection( int theSection );
   void     onModifySection();
@@ -104,7 +113,6 @@ protected slots:
   void     onRedo();
   void     onUndoSettings();
   void     onContextMenu(QPoint thePoint);
-  void     onGetCoordsByClick( QMouseEvent* );
 
   void     onMousePress( SUIT_ViewWindow*, QMouseEvent* theEvent );
   void     onMouseRelease( SUIT_ViewWindow*, QMouseEvent* theEvent );
@@ -118,7 +126,11 @@ protected slots:
   void     onCellChanged( int theRow, int theColumn );
 
 protected:
-  enum ActionId{ UNDO_ID, 
+  void     addCoordsByClick( QMouseEvent* );
+
+protected:
+  enum ActionId{ NONE_ID,
+                 UNDO_ID, 
                  REDO_ID, 
                  NEW_SECTION_ID, 
                  ADDITION_MODE_ID, 
@@ -149,6 +161,9 @@ private:
   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 setActionMode( const ActionMode& theMode );
   ActionMode getActionMode() const;
 
   void updateActionsStates();
@@ -156,6 +171,7 @@ private:
 
   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 );
@@ -168,6 +184,8 @@ private:
   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 = 
@@ -198,6 +216,7 @@ private:
   QPoint                      myDragStartPosition;
   int                         myDragInteractionStyle;
   CurveCreator_ICurve::SectionToPointList myDragPoints;
+  QMap<CurveCreator_ICurve::SectionToPoint, CurveCreator::Coordinates> myInitialDragPointsCoords;
   bool                        myDragged;
   QByteArray                  myGuiState;
 };