-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019 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
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <QGroupBox>
#include <QLabel>
#include <QPushButton>
+#include <QMenu>
#include <QGridLayout>
#include <QDoubleValidator>
#include <QCheckBox>
#include <vtkCallbackCommand.h>
+#include <vtkInteractorStyle.h>
/*!
Constructor
myRWInteractor(theParent->GetInteractor())
{
setWindowTitle(tr("DLG_TITLE"));
- setSizeGripEnabled(TRUE);
+ setSizeGripEnabled(true);
// Create layout for this dialog
QGridLayout* layoutDlg = new QGridLayout (this);
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);
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()));
myEventCallbackCommand->Delete();
myEventCallbackCommand->SetClientData(this);
myEventCallbackCommand->SetCallback(SVTK_SetRotationPointDlg::ProcessEvents);
- myIsObserverAdded = false;
}
/*
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;
}
}
}
}
+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)
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));
void
SVTK_SetRotationPointDlg
-::onSelectPoint()
+::onSelectMenu( QAction* theAction )
{
- if ( mySelectPoint->isChecked() )
- myMainWindow->activateStartPointSelection();
- else
- mySelectPoint->toggle();
+ mySelectPoint->setChecked( true );
+ myMainWindow->activateStartPointSelection( mySelectActions[theAction] );
}
void