X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Widget.h;h=31b4db039e842234c039fda0e007ce125c1378f1;hb=09d10e66ba0fac5353c8d1f138055fc6fe86fb65;hp=0afa8ea2d1b5f920ab1af88049fc796f641925f9;hpb=f5d741e54ea475315ee8f7ca822d1ecba030fc21;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.h b/src/HYDROCurveCreator/CurveCreator_Widget.h index 0afa8ea2..31b4db03 100644 --- a/src/HYDROCurveCreator/CurveCreator_Widget.h +++ b/src/HYDROCurveCreator/CurveCreator_Widget.h @@ -20,9 +20,9 @@ #ifndef CURVECREATOR_WIDGET_H #define CURVECREATOR_WIDGET_H -//#include "CurveCreator_ICurve.hxx" -#include "CurveCreator.hxx" #include "CurveCreator_Macro.hxx" +#include "CurveCreator.hxx" +#include "CurveCreator_ICurve.hxx" #include #include @@ -34,6 +34,7 @@ #include #include #include +#include // TODO - remove class OCCViewer_Viewer; class OCCViewer_ViewPort3d; @@ -42,8 +43,7 @@ class AIS_ListOfInteractive; class QAction; class QPixmap; -class QTableWidget; -class CurveCreator_ICurve; +class CurveCreator_TableView; class CurveCreator_TreeView; class CurveCreator_NewPointDlg; class CurveCreator_NewSectionDlg; @@ -51,10 +51,29 @@ 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, - Qt::WindowFlags fl=0 ); + const int theActionFlags = NoFlags, + const QStringList& theCoordTitles = QStringList(), + Qt::WindowFlags fl=0, + int theLocalPointRowLimit = 20); // OCC viewer manipulation void setOCCViewer( OCCViewer_Viewer* theViewer ); @@ -62,24 +81,22 @@ public: Handle(AIS_InteractiveContext) getAISContext(); OCCViewer_ViewPort3d* getViewPort(); int changeInteractionStyle( int theStyle ); - void setObjectsSelected(const AIS_ListOfInteractive& theList); void reset(); - - //! Return unique section name - std::string getUniqSectionName(CurveCreator_ICurve* theCurve) const; - void setCurve( CurveCreator_ICurve* theCurve ); QList getSelectedSections(); - QList< QPair< int, int > > getSelectedPoints(); + void setSelectedSections( const QList& theSections ); void removeSelected(); bool removeEnabled(); + void setActionMode( const ActionMode& theMode ); + ActionMode getActionMode() const; + signals: void selectionChanged(); - void subOperationStarted( QWidget* ); + void subOperationStarted( QWidget*, bool ); void subOperationFinished( QWidget* ); public slots: @@ -91,7 +108,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(); @@ -108,7 +124,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 ); @@ -122,7 +137,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, @@ -140,72 +159,69 @@ protected: DETECTION_MODE_ID }; - enum ActionMode { - NoneMode, - AdditionMode, - ModificationMode, - DetectionMode - }; - - typedef std::pair< int, int > SectionToPoint; - typedef std::deque< SectionToPoint > SectionToPointList; - private: OCCViewer_Viewer* getOCCViewer(); QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage, const QString& theToolTip, const QKeySequence& theShortcut ); QAction* getAction(ActionId theId); - ActionMode getActionMode() const; + QAction* getAction(ActionMode theMode); - void updateUndoRedo(); + 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 addLocalPointToTable( const double theX, const double theY ); void setDragStarted( const bool theState, const QPoint& thePoint = QPoint() ); - void getSelectedPonts( SectionToPointList& thePoints ); - void setSelectedPonts( const SectionToPointList& = SectionToPointList() ); + void getSelectedPoints( CurveCreator_ICurve::SectionToPointList& thePoints ); + void setSelectedPoints( const CurveCreator_ICurve::SectionToPointList& = + CurveCreator_ICurve::SectionToPointList() ); + + void stopActionMode(); - void startCurveModification( SectionToPointList& thePoints, + void startCurveModification( CurveCreator_ICurve::SectionToPointList& thePoints, const bool theFillPoints = true ); - void finishCurveModification( const SectionToPointList& thePoints = SectionToPointList() ); + 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, - SectionToPointList& thePoints ); - void convert( const SectionToPointList& thePoints, + CurveCreator_ICurve::SectionToPointList& thePoints ); + void convert( const CurveCreator_ICurve::SectionToPointList& thePoints, QMap >& theConvPoints ); - // local point view table methods - int getSectionId( const int theRowId ) const; - int getPointId( const int theRowId ) const; - - bool contains( const SectionToPointList& theList, const SectionToPoint& theValue ) const; + bool contains( const CurveCreator_ICurve::SectionToPointList& theList, + const CurveCreator_ICurve::SectionToPoint& theValue ) const; private: QMap myActionMap; - CurveCreator_ICurve* myCurve; + CurveCreator_ICurve* myCurve; CurveCreator_TreeView* mySectionView; - QTableWidget* myLocalPointView; + 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; - SectionToPointList myDragPoints; + CurveCreator_ICurve::SectionToPointList myDragPoints; + QMap myInitialDragPointsCoords; bool myDragged; QByteArray myGuiState; + int myPressedX; + int myPressedY; }; #endif // CURVECREATOR_WIDGET_H