]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
NPAL16123: EDF435: 3 significant digits in Point Creation dialog.
authorjfa <jfa@opencascade.com>
Thu, 7 Jun 2007 09:10:04 +0000 (09:10 +0000)
committerjfa <jfa@opencascade.com>
Thu, 7 Jun 2007 09:10:04 +0000 (09:10 +0000)
src/BasicGUI/BasicGUI_PointDlg.cxx
src/DlgRef/DlgRef_SpinBox.cxx
src/DlgRef/DlgRef_SpinBox.h
src/MeasureGUI/MeasureGUI_PointDlg.cxx

index 16b642130b87f0c34d9dfe781022cc60dd178bf1..755a04b9b66bbb34578658ce17830ed0fbbf7ca0 100644 (file)
@@ -157,22 +157,22 @@ void BasicGUI_PointDlg::Init()
   double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100);
   
   /* min, max, step and decimals for spin boxes */
-  GroupXYZ->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
-  GroupXYZ->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
-  GroupXYZ->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+  GroupXYZ->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
+  GroupXYZ->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
+  GroupXYZ->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
   GroupXYZ->SpinBox_DX->SetValue(0.0);
   GroupXYZ->SpinBox_DY->SetValue(0.0);
   GroupXYZ->SpinBox_DZ->SetValue(0.0);
 
-  GroupRefPoint->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
-  GroupRefPoint->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
-  GroupRefPoint->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+  GroupRefPoint->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
+  GroupRefPoint->SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
+  GroupRefPoint->SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
   GroupRefPoint->SpinBox_DX->SetValue(0.0);
   GroupRefPoint->SpinBox_DY->SetValue(0.0);
   GroupRefPoint->SpinBox_DZ->SetValue(0.0);
 
   step = 0.1;
-  GroupOnCurve->SpinBox_DX->RangeStepAndValidator(0., 1., step, 3);
+  GroupOnCurve->SpinBox_DX->RangeStepAndValidator(0., 1., step, DBL_DIGITS_DISPLAY);
   GroupOnCurve->SpinBox_DX->SetValue( 0.5 );
 
   /* signals and slots connections */
index 8a7ad79314d1c3947c203ab76df5e8a568fd3a4e..35bec55ba5db9a59950f306a6db8cfc2cb04970e 100644 (file)
@@ -102,3 +102,28 @@ void DlgRef_SpinBox::RangeStepAndValidator(double min, double max,double step,
   setLineStep(step);
   ((QDoubleValidator*)validator())->setRange(min, max, decimals);
 }
+
+QString DlgRef_SpinBox::PrintDoubleValue (double theValue, int thePrecision)
+{
+  QString aRes;
+  aRes.setNum(theValue, 'g', thePrecision);
+
+  // remove trailing zeroes
+  QString delim( "." );
+
+  int idx = aRes.findRev( delim );
+  if ( idx == -1 )
+    return aRes;
+
+  QString iPart = aRes.left( idx );
+  QString fPart = aRes.mid( idx + 1 );
+
+  while ( !fPart.isEmpty() && fPart.at( fPart.length() - 1 ) == '0' )
+    fPart.remove( fPart.length() - 1, 1 );
+
+  aRes = iPart;
+  if ( !fPart.isEmpty() )
+    aRes += delim + fPart;
+
+  return aRes;
+}
index 9cc039d456568ab66658a0746de4180e0680e8dc..b45f5cee1248a790a0763b5ed689da92d6775c85 100644 (file)
 #define  GEOMSPINBOX_H
 
 #include "QtxDblSpinBox.h"
-//#if defined WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
+
 #if defined WNT && defined WIN32 && defined SALOME_WNT_EXPORTS
 #define DLGREF_WNT_EXPORT __declspec( dllexport )
 #else
@@ -44,6 +40,7 @@
 #define COORD_MIN -1e+15
 #define COORD_MAX +1e+15
 #define MAX_NUMBER 100000
+#define DBL_DIGITS_DISPLAY 16
 
 //=================================================================================
 // class    : DlgRef_SpinBox
@@ -62,10 +59,11 @@ public :
   void SetValue(double v);
   double GetValue();
   QString GetString();
+
+  static QString PrintDoubleValue (double theValue, int Precision = DBL_DIGITS_DISPLAY);
   
 public slots:
   void SetStep(double newStep);
-
 };
 
 #endif //  GEOMSPINBOX_H
index 1a14cc347908a97e93d75d04c9e6ef7798a3e343..92bf23fd711bb6371be4b28adb00718e57d25dec 100644 (file)
 #include "MeasureGUI_PointDlg.h"
 #include "GEOMBase.h"
 
+#include "DlgRef_SpinBox.h"
+
 #include "utilities.h"
+
 #include "SUIT_Session.h"
 #include "SalomeApp_Application.h"
 #include "LightApp_SelectionMgr.h"
@@ -189,9 +192,9 @@ void MeasureGUI_PointDlg::SelectionIntoArgument()
     {
       gp_Pnt aPnt = BRep_Tool::Pnt( aPoint );
       mySelEdit->setText( aName );
-      myX->setText( QString( "%1" ).arg( aPnt.X() ) );
-      myY->setText( QString( "%1" ).arg( aPnt.Y() ) );
-      myZ->setText( QString( "%1" ).arg( aPnt.Z() ) );
+      myX->setText(DlgRef_SpinBox::PrintDoubleValue(aPnt.X()));
+      myY->setText(DlgRef_SpinBox::PrintDoubleValue(aPnt.Y()));
+      myZ->setText(DlgRef_SpinBox::PrintDoubleValue(aPnt.Z()));
     }
   }
   catch( ... )