CurveCreator_Widget::CurveCreator_Widget(QWidget* parent,
CurveCreator_ICurve *theCurve,
const int theActionFlags,
+ const QStringList& theCoordTitles,
Qt::WindowFlags fl,
int theLocalPointRowLimit )
: QWidget(parent), myNewSectionEditor(NULL), myCurve(theCurve), mySection(0),
connect( mySectionView, SIGNAL(sectionEntered(int)), this, SLOT(onEditSection(int)) );
connect( mySectionView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenu(QPoint)) );
- myLocalPointView = new CurveCreator_TableView( myCurve, this );
+ myLocalPointView = new CurveCreator_TableView( myCurve, this, theCoordTitles );
connect( myLocalPointView, SIGNAL( cellChanged( int, int ) ),
this, SLOT( onCellChanged( int, int ) ) );
}
break;
case ModificationMode: {
- anEnabledAct << CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID << SET_SECTIONS_POLYLINE_ID << SET_SECTIONS_SPLINE_ID;
+ if ( myNewSectionEditor->isEnableClosed() )
+ anEnabledAct << CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID;
+ anEnabledAct << SET_SECTIONS_POLYLINE_ID << SET_SECTIONS_SPLINE_ID;
int aSectCnt = myCurve->getNbSections();
if( aSectCnt > 0 )
anEnabledAct << CLEAR_ALL_ID;
return anAction;
}
-void CurveCreator_Widget::setActionMode( const ActionMode& theMode )
-{
- ActionMode aPrevMode = getActionMode();
- QAction* aPrevAction = getAction( aPrevMode );
- switch ( theMode ) {
- case NoneMode: {
- if ( aPrevAction ) {
- if ( aPrevAction->isChecked() )
- aPrevAction->setChecked( false );
- }
- if ( aPrevMode == ModificationMode )
- onModificationMode( false );
- if ( aPrevMode == AdditionMode )
- onAdditionMode( false );
- }
- break;
- case AdditionMode: {
- // TODO
- }
- break;
- case ModificationMode:
- {
- //TODO
- }
- break;
- case DetectionMode:
- break;
- }
-}
-
-CurveCreator_Widget::ActionMode CurveCreator_Widget::getActionMode() const
-{
- ActionMode aMode = NoneMode;
-
- if ( myActionMap[ADDITION_MODE_ID]->isChecked() )
- aMode = AdditionMode;
- else if ( myActionMap[MODIFICATION_MODE_ID]->isChecked() )
- aMode = ModificationMode;
- else if ( myActionMap[DETECTION_MODE_ID]->isChecked() )
- aMode = DetectionMode;
-
- return aMode;
-}
-
void CurveCreator_Widget::onEditSection( int theSection )
{
if( !myCurve )
return mySectionView->getSelectedSections();
}
+void CurveCreator_Widget::setSelectedSections( const QList<int>& theSections )
+{
+ mySectionView->setSelectedSections( theSections );
+ updateActionsStates();
+ updateUndoRedo();
+}
+
/**
* According to the widget state, performs the remove action
*/
return isEnabled;
}
+void CurveCreator_Widget::setActionMode( const ActionMode& theMode )
+{
+ ActionMode aPrevMode = getActionMode();
+ QAction* aPrevAction = getAction( aPrevMode );
+ QAction* anAction = getAction( theMode );
+ switch ( theMode ) {
+ case NoneMode:
+ case AdditionMode: {
+ if ( aPrevAction ) {
+ if ( aPrevAction->isChecked() ) {
+ aPrevAction->setChecked( false );
+ }
+ }
+ if ( aPrevMode == ModificationMode )
+ onModificationMode( false );
+ if ( aPrevMode == AdditionMode )
+ onAdditionMode( false );
+
+ if ( theMode == AdditionMode )
+ {
+ anAction->setChecked( true );
+ onModeChanged( true );
+ }
+ }
+ break;
+ break;
+ case ModificationMode:
+ {
+ //TODO
+ }
+ break;
+ case DetectionMode:
+ break;
+ }
+}
+
+CurveCreator_Widget::ActionMode CurveCreator_Widget::getActionMode() const
+{
+ ActionMode aMode = NoneMode;
+
+ if ( myActionMap[ADDITION_MODE_ID]->isChecked() )
+ aMode = AdditionMode;
+ else if ( myActionMap[MODIFICATION_MODE_ID]->isChecked() )
+ aMode = ModificationMode;
+ else if ( myActionMap[DETECTION_MODE_ID]->isChecked() )
+ aMode = DetectionMode;
+
+ return aMode;
+}
//=================================================================================
// function : GeometryGUI::addCoordsByClick()
if ( theEvent->button() != Qt::LeftButton )
return;
+ myPressedX = theEvent->x();
+ myPressedY = theEvent->y();
+
switch( getActionMode() ) {
case ModificationMode: {
//store initial cursor position for Drag&Drop
}
}
else // check whether the segment is clicked an a new point should be added to the segment
- insertPointToSelectedSegment( theEvent->pos().x(), theEvent->pos().y() );
+ {
+ int aReleasedX = theEvent->x();
+ int aReleasedY = theEvent->y();
+ if ( myPressedX == aReleasedX && myPressedY == aReleasedY )
+ insertPointToSelectedSegment( aReleasedX, aReleasedY );
+ }
// updates the input panel table to show the selected point coordinates
updateLocalPointView();
+ updateUndoRedo();
}
/**