X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Widget.h;h=e3ac5af039514bd3cfe7040676abe86229b6a670;hb=5de801b5e40ccbf7761fd4a0f115e117123fb12e;hp=d0559c50b67cc7bc586b97a7e93f585cab502b47;hpb=c832083dc42c0c489271ce585a670afafa172ddb;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.h b/src/HYDROCurveCreator/CurveCreator_Widget.h index d0559c50..e3ac5af0 100644 --- a/src/HYDROCurveCreator/CurveCreator_Widget.h +++ b/src/HYDROCurveCreator/CurveCreator_Widget.h @@ -20,26 +20,30 @@ #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 +#include // TODO - remove class OCCViewer_Viewer; +class OCCViewer_ViewPort3d; + +class AIS_ListOfInteractive; class QAction; class QPixmap; -class QTableWidget; -class CurveCreator_ICurve; +class CurveCreator_TableView; class CurveCreator_TreeView; class CurveCreator_NewPointDlg; class CurveCreator_NewSectionDlg; @@ -50,21 +54,26 @@ class CURVECREATOR_EXPORT CurveCreator_Widget : public QWidget public: explicit CurveCreator_Widget( QWidget* parent, CurveCreator_ICurve *theCurve, - Qt::WindowFlags fl=0 ); + Qt::WindowFlags fl=0, + int theLocalPointRowLimit = 20); + // OCC viewer manipulation void setOCCViewer( OCCViewer_Viewer* theViewer ); - OCCViewer_Viewer* getOCCViewer(); - - //virtual bool eventFilter( QObject* theWatched, QEvent* theEvent ); - //! Return unique section name - std::string getUniqSectionName(CurveCreator_ICurve* theCurve) const; + Handle(AIS_InteractiveContext) getAISContext(); + OCCViewer_ViewPort3d* getViewPort(); + int changeInteractionStyle( int theStyle ); + void setObjectsSelected(const AIS_ListOfInteractive& theList); + void reset(); void setCurve( CurveCreator_ICurve* theCurve ); QList getSelectedSections(); QList< QPair< int, int > > getSelectedPoints(); + void removeSelected(); + bool removeEnabled(); + signals: void selectionChanged(); void subOperationStarted( QWidget* ); @@ -101,6 +110,11 @@ 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 onCellChanged( int theRow, int theColumn ); @@ -130,16 +144,16 @@ protected: DetectionMode }; - typedef QPair< int, int > SectionToPoint; - typedef QList< 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; - void updateUndoRedo(); + void updateActionsStates(); + void updateUndoRedo(); void removeSection(); void removePoint(); @@ -148,49 +162,45 @@ private: 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 ); + bool isIntersectVertexToPoint( const TopoDS_Vertex& theVertex, + const CurveCreator_ICurve::SectionToPoint& theSToPoint ); + void setSelectedPoints( const CurveCreator_ICurve::SectionToPointList& = + CurveCreator_ICurve::SectionToPointList() ); - 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 ); - // OCC algorithm - bool pointOnObject( Handle(AIS_InteractiveObject) theObject, - const int theX, const int theY, - gp_Pnt& thePoint, gp_Pnt& thePoint1, gp_Pnt& thePoint2 ); - bool hasProjectPointOnCurve( const int theX, const int theY, - const Handle(Geom_Curve)& theCurve, - Standard_Real& theParameter ); - - // local point view table methods - int getSectionId( const int theRowId ) const; - int getPointId( const int theRowId ) 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; bool myDragged; QByteArray myGuiState; };