Salome HOME
updated copyright message
[modules/gui.git] / src / OCCViewer / OCCViewer_SetRotationPointDlg.cxx
index 8d8b6b6966bab59ef641c4093bac9df844f7dee5..412234da1a3416fbfb50b23e87b8691adda48646 100644 (file)
@@ -1,24 +1,25 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 //
-//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 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.
+// 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, 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
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
 //
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #include "OCCViewer_SetRotationPointDlg.h"
 
 #include <QtxAction.h>
@@ -29,6 +30,7 @@
 #include <QGroupBox>
 #include <QLabel>
 #include <QPushButton>
+#include <QMenu>
 #include <QGridLayout>
 #include <QDoubleValidator>
 #include <QCheckBox>
   \param modal - is this dialog modal
   \param fl - flags
 */
-OCCViewer_SetRotationPointDlg::OCCViewer_SetRotationPointDlg( OCCViewer_ViewWindow* view, QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl )
-: QDialog( parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint ),
+OCCViewer_SetRotationPointDlg::OCCViewer_SetRotationPointDlg( OCCViewer_ViewWindow* view, const char* /*name*/, bool modal, Qt::WindowFlags /*fl*/ )
+: QDialog( view, Qt::WindowTitleHint | Qt::WindowSystemMenuHint ),
   myView( view )
 {
   setObjectName( "OCCViewer_SetRotationPointDlg" );
   setModal( modal );
 
   setWindowTitle(tr("CAPTION"));
-  setSizeGripEnabled(TRUE);
+  setSizeGripEnabled(true);
 
   // Create layout for this dialog
   QGridLayout* layoutDlg = new QGridLayout (this);
@@ -76,11 +78,20 @@ OCCViewer_SetRotationPointDlg::OCCViewer_SetRotationPointDlg( OCCViewer_ViewWind
   vbox->addWidget(myToOrigin);
   connect(myToOrigin, SIGNAL(clicked()), this, SLOT(onToOrigin()));
 
-  // Create "Select Point from View" button
+  // 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") ) ] = TopAbs_VERTEX;
+  mySelectActions[ menuType->addAction( tr("LBL_EDGE") ) ] = TopAbs_EDGE;
+  mySelectActions[ menuType->addAction( tr("LBL_FACE") ) ] = TopAbs_FACE;
+  mySelectActions[ menuType->addAction( tr("LBL_SOLID") ) ] = TopAbs_SOLID;
+  connect( menuType, SIGNAL( triggered( QAction* ) ),  this, SLOT( onSelectMenu( QAction* ) ) );
+
+  mySelectPoint->setMenu( menuType );
+
   vbox->addWidget(mySelectPoint);
-  connect(mySelectPoint, SIGNAL(clicked()), this, SLOT(onSelectPoint()));
 
   myGroupBoxSel->setLayout(vbox);
 
@@ -134,7 +145,7 @@ OCCViewer_SetRotationPointDlg::OCCViewer_SetRotationPointDlg( OCCViewer_ViewWind
 
   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()));
 
@@ -208,30 +219,27 @@ OCCViewer_SetRotationPointDlg
   }
   else
     myView->activateSetRotationSelected(myX->text().toDouble(), 
-                                       myY->text().toDouble(), 
-                                       myZ->text().toDouble());
+                                        myY->text().toDouble(), 
+                                        myZ->text().toDouble());
 }
 
 void
 OCCViewer_SetRotationPointDlg
 ::onToOrigin()
 {
-  if ( mySelectPoint->isChecked() )
-    mySelectPoint->toggle();
+  mySelectPoint->setChecked( false );
   setCoords();
   myView->activateSetRotationSelected(myX->text().toDouble(), 
-                                     myY->text().toDouble(), 
-                                     myZ->text().toDouble());
+                                      myY->text().toDouble(), 
+                                      myZ->text().toDouble());
 }
 
 void
 OCCViewer_SetRotationPointDlg
-::onSelectPoint()
+::onSelectMenu( QAction* theAction )
 {
-  if ( mySelectPoint->isChecked() )
-    myView->activateStartPointSelection();
-  else
-    mySelectPoint->toggle();
+  mySelectPoint->setChecked( true );
+  myView->activateStartPointSelection( mySelectActions[theAction] );
 }
 
 void
@@ -241,12 +249,12 @@ OCCViewer_SetRotationPointDlg
   if ( !myIsBBCenter->isChecked() )
   {
     if ( mySelectPoint->isChecked()
-        &&
-        ( myX->hasFocus() || myY->hasFocus() || myZ->hasFocus() ) )
+         &&
+         ( myX->hasFocus() || myY->hasFocus() || myZ->hasFocus() ) )
       mySelectPoint->toggle();
     myView->activateSetRotationSelected(myX->text().toDouble(), 
-                                       myY->text().toDouble(), 
-                                       myZ->text().toDouble());
+                                        myY->text().toDouble(), 
+                                        myZ->text().toDouble());
   }
 }