Salome HOME
23368: [CEA 1865] Possibility to define faces to mesh as a single one: transpatch...
[modules/smesh.git] / src / StdMeshersGUI / StdMeshersGUI_CartesianParamCreator.cxx
index 88ad6ddc365c25c9465b4933239af2a301aef088..e122efa8e2c716e7cb8f43ad06d669526879ff04 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -40,7 +40,6 @@
 #include <QtxComboBox.h>
 #include <SALOME_InteractiveObject.hxx>
 #include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
 #include <SUIT_ResourceMgr.h>
 #include <SalomeApp_IntSpinBox.h>
 #include <SalomeApp_Tools.h>
@@ -58,6 +57,7 @@
 #include <QApplication>
 #include <QButtonGroup>
 #include <QCheckBox>
+#include <QFontMetrics>
 #include <QGridLayout>
 #include <QGroupBox>
 #include <QHBoxLayout>
@@ -319,10 +319,10 @@ namespace StdMeshersGUI
 
   void GridAxisTab::onMode(int isSpacing)
   {
-    mySpacingTreeWdg->setShown( isSpacing );
-    myCoordList->setShown( !isSpacing );
-    myStepSpin->setShown( !isSpacing );
-    myStepLabel->setShown( !isSpacing );
+    mySpacingTreeWdg->setVisible( isSpacing );
+    myCoordList->setVisible( !isSpacing );
+    myStepSpin->setVisible( !isSpacing );
+    myStepLabel->setVisible( !isSpacing );
     if ( isSpacing )
     {
       if ( mySpacingTreeWdg->topLevelItemCount() == 0 )
@@ -677,6 +677,22 @@ namespace
     dirs[( iOk+2 ) % 3] = dirs[ iOk ] ^ dirs[ ( iOk+1 ) % 3 ];
     dirs[( iOk+1 ) % 3] = dirs[ ( iOk+2 ) % 3 ] ^ dirs[ iOk ];
   }
+
+  //================================================================================
+  /*!
+   * \brief Returns a minimal width of a SpinBox depending on a precision type
+   */
+  //================================================================================
+
+  int getMinWidth( const char* precisionType )
+  {
+    int nb = SMESHGUI::resourceMgr()->integerValue( "SMESH", precisionType, -3 );
+    QString s;
+    s.fill('0', qAbs(nb)+7 );
+    QLineEdit le;
+    QFontMetrics metrics( le.font() );
+    return metrics.width( s );
+  }
 }
 
 //================================================================================
@@ -858,7 +874,9 @@ QFrame* StdMeshersGUI_CartesianParamCreator::buildFrame()
   axisLbl[2] = new QLabel( tr( "AXIS_Z"), axesDirGrp );
   QLabel* dLbl[3];
   myAxisBtnGrp = new QButtonGroup( axesDirGrp );
-  SMESHGUI_SpinBox** spins[3] = { &myXDirSpin[0], &myYDirSpin[0], &myZDirSpin[0] };
+  // get spin width
+  const char * const precisionType = "len_tol_precision";
+  int minWidth = getMinWidth( precisionType );
   for ( int i = 0; i < 3; ++i )
   {
     QPushButton* axisBtn = new QPushButton( QIcon(aPix), "", axesDirGrp );
@@ -867,9 +885,12 @@ QFrame* StdMeshersGUI_CartesianParamCreator::buildFrame()
     myXDirSpin[i] = new SMESHGUI_SpinBox( axesDirGrp );
     myYDirSpin[i] = new SMESHGUI_SpinBox( axesDirGrp );
     myZDirSpin[i] = new SMESHGUI_SpinBox( axesDirGrp );
-    myXDirSpin[i]->RangeStepAndValidator( -1, 1, 0.1, "len_tol_precision" );
-    myYDirSpin[i]->RangeStepAndValidator( -1, 1, 0.1, "len_tol_precision" );
-    myZDirSpin[i]->RangeStepAndValidator( -1, 1, 0.1, "len_tol_precision" );
+    myXDirSpin[i]->RangeStepAndValidator( -1, 1, 0.1, precisionType );
+    myYDirSpin[i]->RangeStepAndValidator( -1, 1, 0.1, precisionType );
+    myZDirSpin[i]->RangeStepAndValidator( -1, 1, 0.1, precisionType );
+    myXDirSpin[i]->setMinimumWidth( minWidth );
+    myYDirSpin[i]->setMinimumWidth( minWidth );
+    myZDirSpin[i]->setMinimumWidth( minWidth );
     dLbl[0] = new QLabel( tr("SMESH_DX"), axesDirGrp );
     dLbl[1] = new QLabel( tr("SMESH_DY"), axesDirGrp );
     dLbl[2] = new QLabel( tr("SMESH_DZ"), axesDirGrp );