#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 <QWidget>
#include <QMap>
#include <SUIT_ViewWindow.h>
#include <AIS_InteractiveObject.hxx>
+#include <AIS_InteractiveContext.hxx>
#include <Geom_Curve.hxx>
#include <V3d_View.hxx>
#include <gp_Pnt.hxx>
+#include <TopoDS_Vertex.hxx> // TODO - remove
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;
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;
QList<int> getSelectedSections();
QList< QPair< int, int > > getSelectedPoints();
+ void removeSelected();
+ bool removeEnabled();
+
signals:
void selectionChanged();
void subOperationStarted( QWidget* );
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,
};
private:
+ OCCViewer_Viewer* getOCCViewer();
+
QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage,
const QString& theToolTip, const QKeySequence& theShortcut );
QAction* getAction(ActionId theId);
void setDragStarted( const bool theState, const QPoint& thePoint = QPoint() );
- void getSelectedPonts( const int theSectionId, QList<int>& thePoints );
- void setSelectedPonts( const int theSectionId, const QList<int>& thePoints = QList<int>() );
+ void getSelectedPonts( CurveCreator_ICurve::SectionToPointList& thePoints );
+ bool isIntersectVertexToPoint( const TopoDS_Vertex& theVertex,
+ const CurveCreator_ICurve::SectionToPoint& theSToPoint );
+ void setSelectedPonts( const CurveCreator_ICurve::SectionToPointList& =
+ CurveCreator_ICurve::SectionToPointList() );
- void startCurveModification( QList<int>& thePoints, const bool theFillPoints = true );
- void finishCurveModification( const QList<int>& thePoints );
+ 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 findSections( int thePointId, QList<int>& theSections );
+ void findSectionsToPoints( const double theX, const double theY,
+ CurveCreator_ICurve::SectionToPointList& thePoints );
+ void convert( const CurveCreator_ICurve::SectionToPointList& thePoints,
+ QMap<int, QList<int> >& 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,
- Standard_Real& theParameter );
+ bool contains( const CurveCreator_ICurve::SectionToPointList& theList,
+ const CurveCreator_ICurve::SectionToPoint& theValue ) const;
private:
QMap<ActionId, QAction*> myActionMap;
bool myDragStarted;
QPoint myDragStartPosition;
int myDragInteractionStyle;
- QList<int> myDragPoints;
+ CurveCreator_ICurve::SectionToPointList myDragPoints;
bool myDragged;
QByteArray myGuiState;
};