Salome HOME
Merge remote branch 'origin/gdd/translations'
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_PropertiesDlg.cxx
index 1e9874b086c3fc7e31850c782d3469be331f2415..c588a274ce3cb0bbac00607d078a72a9e79f1dec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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
@@ -6,7 +6,7 @@
 // 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
@@ -34,6 +34,7 @@
 #include <QtxBiColorTool.h>
 #include <QtxColorButton.h>
 #include <QtxIntSpinBox.h>
+#include <QtxDoubleSpinBox.h>
 #include <VTKViewer_MarkerWidget.h>
 #include <SUIT_Session.h>
 #include <LightApp_Application.h>
@@ -157,6 +158,8 @@ SMESHGUI_PropertiesDlg::SMESHGUI_PropertiesDlg( const VTK::MarkerMap& customMark
   myBallColor = new QtxColorButton( myBallGrp );
   QLabel* ballSizeLab = new QLabel( tr( "SIZE" ), myBallGrp );
   myBallSize = new QtxIntSpinBox( myBallGrp );
+  QLabel* ballScaleLab = new QLabel( tr( "SCALE_FACTOR" ), myBallGrp );
+  myBallScale = new QtxDoubleSpinBox( 1e-2, 1e7, 0.5, myBallGrp );
   hl = new QHBoxLayout( myBallGrp );
   hl->setMargin( MARGIN );
   hl->setSpacing( SPACING );
@@ -164,6 +167,8 @@ SMESHGUI_PropertiesDlg::SMESHGUI_PropertiesDlg( const VTK::MarkerMap& customMark
   hl->addWidget( myBallColor );
   hl->addWidget( ballSizeLab );
   hl->addWidget( myBallSize );
+  hl->addWidget( ballScaleLab );
+  hl->addWidget( myBallScale );
   widthLab1 = qMax( widthLab1, ballColorLab->minimumSizeHint().width() );
   widthLab2 = qMax( widthLab2, ballSizeLab->minimumSizeHint().width() );
   
@@ -171,7 +176,7 @@ SMESHGUI_PropertiesDlg::SMESHGUI_PropertiesDlg( const VTK::MarkerMap& customMark
   myOrientationGrp = new QGroupBox( tr( "ORIENTATIONS" ), mainFrame() );
   QLabel* orientationColorLab = new QLabel( tr( "COLOR" ), myOrientationGrp );
   myOrientationColor = new QtxColorButton( myOrientationGrp );
-  QLabel* orientationScaleLab = new QLabel( tr( "ORIENTATION_SCALE" ), myOrientationGrp );
+  QLabel* orientationScaleLab = new QLabel( tr( "SCALE_FACTOR" ), myOrientationGrp );
   myOrientationSize = new QtxIntSpinBox( myOrientationGrp );
   myOrientationSize->setSuffix( "% ");
   myOrientation3d = new QCheckBox( tr("ORIENTATION_3D"), myOrientationGrp );
@@ -236,6 +241,7 @@ SMESHGUI_PropertiesDlg::SMESHGUI_PropertiesDlg( const VTK::MarkerMap& customMark
   myOutlineWidth->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
   myElem0dSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
   myBallSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myBallScale->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
   myOrientationSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
   myShrinkSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
 
@@ -530,6 +536,24 @@ int SMESHGUI_PropertiesDlg::ballSize() const
   return myBallSize->value();
 }
 
+/*!
+  \brief Set discrete elements (balls) scale factor
+  \param size discrete elements (balls) scale factor
+*/
+void SMESHGUI_PropertiesDlg::setBallScale( double size )
+{
+  myBallScale->setValue( size );
+}
+
+/*!
+  \brief Get discrete elements (balls) scale factor
+  \return current discrete elements (balls) scale factor
+*/
+double SMESHGUI_PropertiesDlg::ballScale() const
+{
+  return myBallScale->value();
+}
+
 /*!
   \brief Set orientation vectors color
   \param color orientation vectors color
@@ -621,8 +645,8 @@ void SMESHGUI_PropertiesDlg::showControls( int elements, bool nodes )
   // node controls are supposed to be shown if at least any element type is present
   // or if there are only nodes
   myNodeGrp->setVisible( nodes || elements & SMESH_Actor::eAllEntity );
-  // edge controls are shown only if there are edges
-  myEdgeGrp->setVisible( elements & SMESH_Actor::eEdges );
+  // edge/wireframe controls are needed for edges, faces and volumes
+  myEdgeGrp->setVisible( elements & ( SMESH_Actor::eEdges | SMESH_Actor::eFaces | SMESH_Actor::eVolumes ) );
   // face controls are shown only if there are faces
   myFaceGrp->setVisible( elements & SMESH_Actor::eFaces );
   // volume controls are shown only if there are volumes