X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSVTK%2FSVTK_SetRotationPointDlg.cxx;h=efa03b6e98c7674df2a97d37cd894c8b21c24405;hb=refs%2Fheads%2Fngr%2Fpython3_dev_pv5.4;hp=ec7d66e1c45f7ecf57504cb97de6858254c93669;hpb=034a705024b224972c148e1e3834c5ee38df184b;p=modules%2Fgui.git diff --git a/src/SVTK/SVTK_SetRotationPointDlg.cxx b/src/SVTK/SVTK_SetRotationPointDlg.cxx index ec7d66e1c..efa03b6e9 100755 --- a/src/SVTK/SVTK_SetRotationPointDlg.cxx +++ b/src/SVTK/SVTK_SetRotationPointDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -38,11 +38,13 @@ #include #include #include +#include #include #include #include #include +#include /*! Constructor @@ -60,7 +62,7 @@ SVTK_SetRotationPointDlg myRWInteractor(theParent->GetInteractor()) { setWindowTitle(tr("DLG_TITLE")); - setSizeGripEnabled(TRUE); + setSizeGripEnabled(true); // Create layout for this dialog QGridLayout* layoutDlg = new QGridLayout (this); @@ -87,12 +89,19 @@ SVTK_SetRotationPointDlg vbox->addWidget(myToOrigin); connect(myToOrigin, SIGNAL(clicked()), this, SLOT(onToOrigin())); - // Create "Select Point from View" button - mySelectPoint = new QPushButton(myGroupBoxSel); - mySelectPoint->setText(tr("LBL_SELECTPOINT")); + // Create "Gravity Center of Select Object" button + mySelectPoint = new QPushButton(tr("LBL_SELECTPOINT")); mySelectPoint->setCheckable(true); + + QMenu* menuType = new QMenu( this ); + mySelectActions[ menuType->addAction( tr("LBL_POINT") ) ] = NodeSelection; + mySelectActions[ menuType->addAction( tr("LBL_EDGE") ) ] = EdgeSelection; + mySelectActions[ menuType->addAction( tr("LBL_FACE") ) ] = FaceSelection; + mySelectActions[ menuType->addAction( tr("LBL_VOLUME") ) ] = VolumeSelection; + connect( menuType, SIGNAL( triggered( QAction* ) ), this, SLOT( onSelectMenu( QAction* ) ) ); + + mySelectPoint->setMenu( menuType ); vbox->addWidget(mySelectPoint); - connect(mySelectPoint, SIGNAL(clicked()), this, SLOT(onSelectPoint())); // Create croup box with grid layout myGroupBoxCoord = new QGroupBox(this); @@ -144,7 +153,7 @@ SVTK_SetRotationPointDlg QPushButton* m_bClose = new QPushButton(tr("&Close"), aGroupBox ); m_bClose->setObjectName("m_bClose"); - m_bClose->setAutoDefault(TRUE); + m_bClose->setAutoDefault(true); m_bClose->setFixedSize(m_bClose->sizeHint()); connect(m_bClose, SIGNAL(clicked()), this, SLOT(onClickClose())); @@ -165,7 +174,6 @@ SVTK_SetRotationPointDlg myEventCallbackCommand->Delete(); myEventCallbackCommand->SetClientData(this); myEventCallbackCommand->SetCallback(SVTK_SetRotationPointDlg::ProcessEvents); - myIsObserverAdded = false; } /* @@ -181,11 +189,10 @@ void SVTK_SetRotationPointDlg ::addObserver() { - if ( !myIsObserverAdded ) { - vtkInteractorStyle* aIStyle = myRWInteractor->GetInteractorStyle(); + vtkInteractorStyle* aIStyle = myRWInteractor->GetInteractorStyle(); + if( !IsObserverAdded( aIStyle ) ) { aIStyle->AddObserver(SVTK::BBCenterChanged, myEventCallbackCommand.GetPointer(), myPriority); aIStyle->AddObserver(SVTK::RotationPointChanged, myEventCallbackCommand.GetPointer(), myPriority); - myIsObserverAdded = true; } } @@ -239,6 +246,21 @@ SVTK_SetRotationPointDlg } } +bool +SVTK_SetRotationPointDlg +::IsObserverAdded( vtkInteractorStyle* theInteractorStyle ) +{ + bool isAdded = false; + for( int i = 0; i < myInteractorStyleList.count(); i++ ) + if( myInteractorStyleList.at(i) == theInteractorStyle ) + isAdded = true; + + if( !isAdded ) + myInteractorStyleList.append( theInteractorStyle ); + + return isAdded; +} + void SVTK_SetRotationPointDlg ::setEnabled(QGroupBox* theGrp, const bool theState) @@ -284,8 +306,7 @@ void SVTK_SetRotationPointDlg ::onToOrigin() { - if ( mySelectPoint->isChecked() ) - mySelectPoint->toggle(); + mySelectPoint->setChecked( false ); myX->setText(QString::number(0.0)); myY->setText(QString::number(0.0)); myZ->setText(QString::number(0.0)); @@ -293,12 +314,10 @@ SVTK_SetRotationPointDlg void SVTK_SetRotationPointDlg -::onSelectPoint() +::onSelectMenu( QAction* theAction ) { - if ( mySelectPoint->isChecked() ) - myMainWindow->activateStartPointSelection(); - else - mySelectPoint->toggle(); + mySelectPoint->setChecked( true ); + myMainWindow->activateStartPointSelection( mySelectActions[theAction] ); } void