#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 <Geom_Curve.hxx>
#include <V3d_View.hxx>
#include <gp_Pnt.hxx>
+#include <TopoDS_Vertex.hxx> // TODO - remove
class OCCViewer_Viewer;
class OCCViewer_ViewPort3d;
class QAction;
class QPixmap;
-class QTableWidget;
-class CurveCreator_ICurve;
+class CurveCreator_TableView;
class CurveCreator_TreeView;
class CurveCreator_NewPointDlg;
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,
- Qt::WindowFlags fl=0 );
+ const int theActionFlags = NoFlags,
+ Qt::WindowFlags fl=0,
+ int theLocalPointRowLimit = 20);
// OCC viewer manipulation
void setOCCViewer( OCCViewer_Viewer* theViewer );
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<int> getSelectedSections();
- QList< QPair< int, int > > getSelectedPoints();
void removeSelected();
bool removeEnabled();
signals:
void selectionChanged();
- void subOperationStarted( QWidget* );
+ void subOperationStarted( QWidget*, bool );
void subOperationFinished( QWidget* );
public slots:
void onModeChanged(bool checked);
void onNewSection();
void onSelectionChanged();
- void onAddNewPoint(const CurveCreator::Coordinates& theCoords);
void onAddNewSection();
void onEditSection( int theSection );
void onModifySection();
void onRedo();
void onUndoSettings();
void onContextMenu(QPoint thePoint);
- void onGetCoordsByClick( QMouseEvent* );
void onMousePress( SUIT_ViewWindow*, QMouseEvent* theEvent );
void onMouseRelease( SUIT_ViewWindow*, QMouseEvent* theEvent );
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,
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);
+ QAction* getAction(ActionMode theMode);
+
+ void setActionMode( const ActionMode& theMode );
ActionMode getActionMode() const;
- 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<int, QList<int> >& 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<ActionId, QAction*> 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<CurveCreator_ICurve::SectionToPoint, CurveCreator::Coordinates> myInitialDragPointsCoords;
bool myDragged;
QByteArray myGuiState;
+ int myPressedX;
+ int myPressedY;
};
#endif // CURVECREATOR_WIDGET_H