Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/geom.git] / src / DlgRef / DlgRef_SpinBox.cxx
1 //  GEOM GEOMGUI : GUI for Geometry component
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
6 //  This library is free software; you can redistribute it and/or 
7 //  modify it under the terms of the GNU Lesser General Public 
8 //  License as published by the Free Software Foundation; either 
9 //  version 2.1 of the License. 
10 // 
11 //  This library is distributed in the hope that it will be useful, 
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 //  Lesser General Public License for more details. 
15 // 
16 //  You should have received a copy of the GNU Lesser General Public 
17 //  License along with this library; if not, write to the Free Software 
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19 // 
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //
23 //
24 //  File   : DlgRef_SpinBox.cxx
25 //  Author : Lucien PIGNOLONI
26 //  Module : GEOM
27 //  $Header$
28
29 #include "DlgRef_SpinBox.h"
30
31 #include <qvalidator.h>
32
33 //=================================================================================
34 // class    : DlgRef_SpinBox()
35 // purpose  : constructor of specific widget accepting floats in double precision.
36 //=================================================================================
37 DlgRef_SpinBox::DlgRef_SpinBox(QWidget* parent, const char* name)
38   : QtxDblSpinBox(parent, name)
39 {
40 }
41
42
43 //=================================================================================
44 // function : ~DlgRef_SpinBox()
45 // purpose  : destructor
46 //=================================================================================
47 DlgRef_SpinBox::~DlgRef_SpinBox()
48 {
49 }
50
51
52 //=================================================================================
53 // function : SetStep()  [SLOT]
54 // purpose  :
55 //=================================================================================
56 void DlgRef_SpinBox::SetStep(double newStep)
57 {
58   setLineStep(newStep);
59 }
60
61
62 //=================================================================================
63 // function : SetValue()
64 // purpose  :
65 //=================================================================================
66 void DlgRef_SpinBox::SetValue(double v)
67 {
68   setValue(v);
69 }
70
71
72 //=================================================================================
73 // function : GetValue()
74 // purpose  : returns a double
75 //=================================================================================
76 double DlgRef_SpinBox::GetValue()
77 {
78   return value();
79 }
80
81
82 //=================================================================================
83 // function : GetString()
84 // purpose  : returns a QString
85 //=================================================================================
86 QString DlgRef_SpinBox::GetString()
87 {
88   return cleanText();
89 }
90
91
92 //=================================================================================
93 // function : RangeStepAndValidator()
94 // purpose  :
95 //=================================================================================
96 void DlgRef_SpinBox::RangeStepAndValidator(double min, double max,double step,
97                                            unsigned short decimals)
98 {
99   setPrecision(-decimals); // PAL12789. Minus is for using 'g' double->string conversion specifier,
100   //                          see QtxDblSpinBox::mapValueToText( double v )
101   setRange(min, max);
102   setLineStep(step);
103   ((QDoubleValidator*)validator())->setRange(min, max, decimals);
104 }
105
106 QString DlgRef_SpinBox::PrintDoubleValue (double theValue, int thePrecision)
107 {
108   QString aRes;
109   aRes.setNum(theValue, 'g', thePrecision);
110
111   // remove trailing zeroes
112   QString delim( "." );
113
114   int idx = aRes.findRev( delim );
115   if ( idx == -1 )
116     return aRes;
117
118   QString iPart = aRes.left( idx );
119   QString fPart = aRes.mid( idx + 1 );
120
121   while ( !fPart.isEmpty() && fPart.at( fPart.length() - 1 ) == '0' )
122     fPart.remove( fPart.length() - 1, 1 );
123
124   aRes = iPart;
125   if ( !fPart.isEmpty() )
126     aRes += delim + fPart;
127
128   return aRes;
129 }