X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Widget.cxx;h=b595c2217d16d73f6481aae0e861c8dc92027260;hb=09d10e66ba0fac5353c8d1f138055fc6fe86fb65;hp=dc2aff372fe74bc9bd5d2cb5350693d558321b81;hpb=04474084d08784e61568d315a4045722fedad9a9;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.cxx b/src/HYDROCurveCreator/CurveCreator_Widget.cxx index dc2aff37..b595c221 100644 --- a/src/HYDROCurveCreator/CurveCreator_Widget.cxx +++ b/src/HYDROCurveCreator/CurveCreator_Widget.cxx @@ -79,6 +79,7 @@ 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), @@ -100,7 +101,7 @@ CurveCreator_Widget::CurveCreator_Widget(QWidget* parent, 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 ) ) ); @@ -367,7 +368,9 @@ void CurveCreator_Widget::updateActionsStates() } 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; @@ -575,50 +578,6 @@ QAction* CurveCreator_Widget::getAction( ActionMode theMode ) 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 ) @@ -881,6 +840,13 @@ QList CurveCreator_Widget::getSelectedSections() return mySectionView->getSelectedSections(); } +void CurveCreator_Widget::setSelectedSections( const QList& theSections ) +{ + mySectionView->setSelectedSections( theSections ); + updateActionsStates(); + updateUndoRedo(); +} + /** * According to the widget state, performs the remove action */ @@ -904,6 +870,55 @@ bool CurveCreator_Widget::removeEnabled() 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() @@ -952,6 +967,9 @@ void CurveCreator_Widget::onMousePress( SUIT_ViewWindow*, QMouseEvent* theEvent if ( theEvent->button() != Qt::LeftButton ) return; + myPressedX = theEvent->x(); + myPressedY = theEvent->y(); + switch( getActionMode() ) { case ModificationMode: { //store initial cursor position for Drag&Drop @@ -1047,7 +1065,12 @@ void CurveCreator_Widget::onMouseRelease( SUIT_ViewWindow*, QMouseEvent* theEven } } 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();