Salome HOME
Merge from V5_1_main 14/05/2010
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_SpinBox.cxx
index c617f5ec7cc182a1e2de911854c1e723a1c07ef5..d34f9f8d7855666f31adb56b4139ffc120eda82a 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2010  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
@@ -19,6 +19,7 @@
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // SMESH SMESHGUI : GUI for SMESH component
 // File   : SMESHGUI_SpinBox.cxx
 // Author : Lucien PIGNOLONI, Open CASCADE S.A.S.
 //
 #include "SMESHGUI_SpinBox.h"
 
+#include <SUIT_Session.h>
+#include <SUIT_ResourceMgr.h>
+
 // Qt includes
-#include <QDoubleValidator>
 #include <QLineEdit>
+#include <QVariant>
 
 //=================================================================================
 // class    : SMESHGUI_SpinBox()
@@ -93,15 +97,6 @@ QLineEdit* SMESHGUI_SpinBox::editor() const
   return SalomeApp_DoubleSpinBox::lineEdit();
 } 
 
-//=================================================================================
-// function : validator()
-// purpose  : returns validator
-//=================================================================================
-QDoubleValidator* SMESHGUI_SpinBox::validator() const
-{
-  return (QDoubleValidator*)editor()->validator();
-}
-
 //=================================================================================
 // function : RangeStepAndValidator()
 // purpose  :
@@ -109,12 +104,22 @@ QDoubleValidator* SMESHGUI_SpinBox::validator() const
 void SMESHGUI_SpinBox::RangeStepAndValidator( double min,
                                               double max,
                                               double step,
-                                              unsigned short precision )
+                                              const char* quantity )
 {
-  setPrecision(precision*(-1)); // PAL8769. Minus is for using 'g' double->string conversion specifier,
-  //                               see QtxDoubleSpinBox::mapValueToText( double v )
-  setDecimals(32);
+  // Obtain precision from preferences
+  SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+  int precision = resMgr->integerValue( "SMESH", quantity, -3 );
+  
+  setPrecision(precision); // PAL8769. Minus is for using 'g' double->string conversion specifier,
+  //                          see QtxDoubleSpinBox::mapValueToText( double v )
+  //                          san: this can be achieved using preferences
+  setDecimals(qAbs(precision));
   setRange(min, max);
   setSingleStep( step );
   setDefaultValue( min );
+  
+  // Add a hint for the user saying how to tune precision
+  QString userPropName = QObject::tr( QString( "SMESH_PREF_%1" ).arg( quantity ).toLatin1().constData() );
+  setProperty( "validity_tune_hint", 
+               QVariant( QObject::tr( "SMESH_PRECISION_HINT" ).arg( userPropName ) ) );  
 }