X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Widget.h;h=43fdb492fbc398e53fbd5ac11f2e3f506006e0ea;hb=ab0fa2ad7637d748339ba77b7ba151ef4f51fe9e;hp=0129da991c4d7b19e4bae08cac6ea254da9e9148;hpb=5ab983d4b8b4d9d77dd3da5069659afc8c338b80;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.h b/src/HYDROCurveCreator/CurveCreator_Widget.h index 0129da99..43fdb492 100644 --- a/src/HYDROCurveCreator/CurveCreator_Widget.h +++ b/src/HYDROCurveCreator/CurveCreator_Widget.h @@ -20,26 +20,29 @@ #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 #include #include +#include #include #include #include class OCCViewer_Viewer; +class OCCViewer_ViewPort3d; + +class AIS_ListOfInteractive; class QAction; class QPixmap; class QTableWidget; -class CurveCreator_ICurve; class CurveCreator_TreeView; class CurveCreator_NewPointDlg; class CurveCreator_NewSectionDlg; @@ -52,10 +55,15 @@ public: CurveCreator_ICurve *theCurve, Qt::WindowFlags fl=0 ); + // OCC viewer manipulation void setOCCViewer( OCCViewer_Viewer* theViewer ); - OCCViewer_Viewer* getOCCViewer(); - //virtual bool eventFilter( QObject* theWatched, QEvent* theEvent ); + 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; @@ -65,6 +73,9 @@ public: QList getSelectedSections(); QList< QPair< int, int > > getSelectedPoints(); + void removeSelected(); + bool removeEnabled(); + signals: void selectionChanged(); void subOperationStarted( QWidget* ); @@ -101,8 +112,13 @@ protected slots: 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 onLocalPointChanged( int theRow, int theColumn ); + void onCellChanged( int theRow, int theColumn ); protected: enum ActionId{ UNDO_ID, @@ -124,13 +140,15 @@ protected: }; enum ActionMode { + NoneMode, AdditionMode, ModificationMode, - DetectionMode, - NoneMode + DetectionMode }; private: + OCCViewer_Viewer* getOCCViewer(); + QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage, const QString& theToolTip, const QKeySequence& theShortcut ); QAction* getAction(ActionId theId); @@ -140,28 +158,37 @@ private: void removeSection(); void removePoint(); - bool insertPointToSelectedSegment( const int theXPosition, + void insertPointToSelectedSegment( const int theXPosition, const int theYPosition ); + void moveSelectedPoints( const int theXPosition, const int theYPosition ); void updateLocalPointView(); - void setLocalPointContext( const bool theOpen ); + 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( const int theSectionId, QList& thePoints ); - void setSelectedPonts( const int theSectionId, const QList& thePoints = QList() ); + void getSelectedPonts( CurveCreator_ICurve::SectionToPointList& thePoints ); + void setSelectedPonts( const CurveCreator_ICurve::SectionToPointList& = + CurveCreator_ICurve::SectionToPointList() ); + 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 >& theConvPoints ); + + // local point view table methods + int getSectionId( const int theRowId ) const; + int getPointId( const int theRowId ) const; - // OCC algorithm - bool pointOnObject( Handle(AIS_InteractiveObject) theObject, - const int theX, const int theY, - gp_Pnt& thePoint, int& thePoint1, int& thePoint2 ); - bool hasProjectPointOnCurve( const int theX, const int theY, - const Handle(Geom_Curve)& theCurve, - gp_Pnt& theOutPoint ); + bool contains( const CurveCreator_ICurve::SectionToPointList& theList, + const CurveCreator_ICurve::SectionToPoint& theValue ) const; private: QMap myActionMap; @@ -173,8 +200,10 @@ private: int mySection; int myPointNum; bool myDragStarted; - QList myDragPoints; QPoint myDragStartPosition; + int myDragInteractionStyle; + CurveCreator_ICurve::SectionToPointList myDragPoints; + bool myDragged; QByteArray myGuiState; };