]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
IPAL21559 Double spin boxes work bad in the Salome Preferences
authordmv <dmv@opencascade.com>
Mon, 1 Feb 2010 14:59:08 +0000 (14:59 +0000)
committerdmv <dmv@opencascade.com>
Mon, 1 Feb 2010 14:59:08 +0000 (14:59 +0000)
src/Qtx/QtxPagePrefMgr.cxx
src/Qtx/QtxPagePrefMgr.h

index 3a346ec3b22d55f1e30ed4fd9eb57fe2d8a38030..6fb5b4359cac1de3aef4de10d114ff4f423fc848 100644 (file)
@@ -2671,6 +2671,19 @@ QVariant QtxPagePrefSpinItem::step() const
     return QVariant();
 }
 
+/*!
+  \brief Get double spin box preference item precision value.
+  \return double spin box precision
+  \sa setPrecision()
+*/
+QVariant QtxPagePrefSpinItem::precision() const
+{
+  if ( QtxDoubleSpinBox* dsb = ::qobject_cast<QtxDoubleSpinBox*>( control() ) )
+    return dsb->decimals();
+  else
+    return QVariant();
+}
+
 /*!
   \brief Get spin box preference item minimum value.
   \return spin box minimum value
@@ -2765,6 +2778,22 @@ void QtxPagePrefSpinItem::setStep( const QVariant& step )
   }
 }
 
+/*!
+  \brief Set double spin box preference item precision value.
+  \param step new double spin box precision value
+  \sa precision()
+*/
+void QtxPagePrefSpinItem::setPrecision( const QVariant& prec )
+{
+  if ( QtxDoubleSpinBox* dsb = ::qobject_cast<QtxDoubleSpinBox*>( control() ) )
+  {
+    if ( prec.canConvert( QVariant::Int ) ) {
+      dsb->setDecimals( prec.toInt() );
+      dsb->setPrecision( prec.toInt() );
+    }
+  }
+}
+
 /*!
   \brief Set spin box preference item minimum value.
   \param min new spin box minimum value
@@ -2882,6 +2911,8 @@ QVariant QtxPagePrefSpinItem::optionValue( const QString& name ) const
     return maximum();
   else if ( name == "step" )
     return step();
+  else if ( name == "precision" )
+    return precision();
   else if ( name == "prefix" )
     return prefix();
   else if ( name == "suffix" )
@@ -2911,6 +2942,8 @@ void QtxPagePrefSpinItem::setOptionValue( const QString& name, const QVariant& v
     setMaximum( val );
   else if ( name == "step" )
     setStep( val );
+  else if ( name == "precision" )
+    setPrecision( val );
   else if ( name == "prefix" )
   {
     if ( val.canConvert( QVariant::String ) )
@@ -2937,6 +2970,7 @@ void QtxPagePrefSpinItem::updateSpinBox()
 {
   QVariant val;
   QVariant stp = step();
+  QVariant prec = precision();
   QVariant min = minimum();
   QVariant max = maximum();
 
@@ -2960,6 +2994,7 @@ void QtxPagePrefSpinItem::updateSpinBox()
   control()->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
 
   setStep( stp );
+  setPrecision( prec );
   setMinimum( min );
   setMaximum( max );
 
index f853ba6acfe8c2dfbade6d8b1d72f0e578683ee7..bbc634240be4c838ddb99d975b646b2939f1888f 100644 (file)
@@ -472,6 +472,7 @@ public:
   virtual ~QtxPagePrefSpinItem();
 
   QVariant         step() const;
+  QVariant         precision() const;
   QVariant         minimum() const;
   QVariant         maximum() const;
 
@@ -480,6 +481,7 @@ public:
   QString          specialValueText() const;
 
   void             setStep( const QVariant& );
+  void             setPrecision( const QVariant& );
   void             setMinimum( const QVariant& );
   void             setMaximum( const QVariant& );