]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Adjust to OCC_development_generic_2006
authorapo <apo@opencascade.com>
Wed, 18 Jan 2006 09:52:40 +0000 (09:52 +0000)
committerapo <apo@opencascade.com>
Wed, 18 Jan 2006 09:52:40 +0000 (09:52 +0000)
src/DDS/DDS_DicItem.cxx
src/DDS/DDS_DicItem.h
src/QDS/QDS_Datum.cxx
src/QDS/QDS_Datum.h
src/QDS/QDS_SpinBox.cxx
src/QDS/QDS_SpinBox.h
src/QDS/QDS_SpinBoxDbl.cxx

index fd59f3cd683a039dbc8493f9bff9508d5a2d0b3b..0c8b01c6d03d97a55a7544c32cfd215e6257be09 100644 (file)
@@ -305,6 +305,14 @@ Standard_Real DDS_DicItem::FromSI( const Standard_Real theVal, const UnitSystem&
   return aRes;
 }
 
+/*!
+  Returns 'true' if specified data exist.
+*/
+Standard_Boolean DDS_DicItem::HasData( const Standard_Integer flag ) const
+{
+  return ( myData & flag ) == flag;
+}
+
 /*!
   Parse record in XML file and retrieve information relevant for this data dic item
 */
@@ -436,15 +444,22 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element
       else if ( aType.IsEqual( "Integer" ) )
         aEnumType = Integer;
 
+      if ( !aValueDescr.getAttributeNode( DDS_Dictionary::KeyWord( "VD_MINV" ) ).isNull() )
+        myData |= MinValue;
       aMinV = aValueDescr.getAttribute( DDS_Dictionary::KeyWord( "VD_MINV" ) );
       aMinV.RemoveAll( ' ' );
       if ( aMinV.IsRealValue() )
         aRealMinV = aMinV.RealValue();
+      if ( !aValueDescr.getAttributeNode( DDS_Dictionary::KeyWord( "VD_MAXV" ) ).isNull() )
+        myData |= MaxValue;
       aMaxV = aValueDescr.getAttribute( DDS_Dictionary::KeyWord( "VD_MAXV" ) );
       aMaxV.RemoveAll( ' ' );
       if ( aMaxV.IsRealValue() )
         aRealMaxV = aMaxV.RealValue();
       aDefV = aValueDescr.getAttribute( DDS_Dictionary::KeyWord( "VD_DEFV" ) );
+      if ( !aValueDescr.getAttributeNode( DDS_Dictionary::KeyWord( "VD_DEFV" ) ).isNull() )
+        myData |= DefaultValue;
+
       aDefV.RemoveAll( ' ' );
       if ( aDefV.IsRealValue() )
         aRealDefV = aDefV.RealValue();
index 871149407e34cb3a8b1f8a8b4b32c1cab43704bf..dbbedc0a7c126e6386bb7694b1e8ed43be4f041a 100644 (file)
@@ -30,6 +30,7 @@ class DDS_DicItem : public MMgt_TShared
 {
 public:
   enum Type { String, Float, Integer, List, Unknown };
+  enum Data { MinValue = 0x01, MaxValue = 0x02, DefaultValue = 0x04 };
 
   // This struct is intended for map of Format, Units, Precision and Scale
   struct UnitData
@@ -134,6 +135,8 @@ public:
   Standard_EXPORT Standard_Real FromSI( const Standard_Real, const UnitSystem& ) const;
   // convert value to and from default SI units according to current units
 
+  Standard_EXPORT Standard_Boolean           HasData( const Standard_Integer ) const;
+
 private:
   DDS_DicItem( const DDS_DicItem& );
   // Copy constructor
@@ -200,6 +203,8 @@ private:
   Standard_Real                              myDefValue;
   TCollection_ExtendedString                 myDefString;
 
+  Standard_Integer                           myData;
+
   // valueList
   TCollection_ExtendedString                 myListName;
 
index ff3ed8aca976a01e49b6db35694a88d853cb4ae8..f2a4919ba8d25f5cc929eadb7f228153bda83f20 100644 (file)
@@ -43,6 +43,7 @@ myWid( 0 )
 {
   QHBoxLayout* base = new QHBoxLayout( this );
   base->setAutoAdd( true );
+  setFocusPolicy( StrongFocus );
 }
 
 QDS_Datum::Wrapper::~Wrapper()
@@ -70,6 +71,7 @@ void QDS_Datum::Wrapper::setWidget( QWidget* wid )
   if ( myWid->parent() != this )
     myWid->reparent( this, QPoint( 0, 0 ) );
 
+  setTabOrder( this, myWid );
   setFocusProxy( myWid );
 
   myWid->updateGeometry();
@@ -154,6 +156,11 @@ QDS_Datum::~QDS_Datum()
 */
 }
 
+QDS_Datum::operator QWidget*() const
+{
+  return widget( Control );
+}
+
 QString QDS_Datum::id() const
 {
   initDatum();
@@ -241,8 +248,8 @@ QString QDS_Datum::minimumValue() const
   initDatum();
 
   QString min;
-  if ( !myDicItem.IsNull() )
-    min = format( format(), type(), myDicItem->GetMinValue() );
+  if ( !myDicItem.IsNull() && myDicItem->HasData( DDS_DicItem::MinValue ) )
+      min = format( format(), type(), myDicItem->GetMinValue() );
   return min;
 }
 
@@ -251,7 +258,7 @@ QString QDS_Datum::maximumValue() const
   initDatum();
 
   QString max;
-  if ( !myDicItem.IsNull() )
+  if ( !myDicItem.IsNull() && myDicItem->HasData( DDS_DicItem::MaxValue ) )
     max = format( format(), type(), myDicItem->GetMaxValue() );
   return max;
 }
@@ -541,10 +548,15 @@ bool QDS_Datum::isValid( const bool msgBox, const QString& extMsg, const QString
   if ( type() == DDS_DicItem::String && isDoubleFormat( format() ) )
     return true;
 
+  QString req;
+  if ( !dicItem().IsNull() )
+    req = toQString( dicItem()->GetRequired() );
+
   bool aState = true;
   QString aStr = getString();
+
   if ( aStr.isEmpty() )
-    aState = false;
+    aState = !( req == QString( "yes" ) || req == QString( "true" ) || req.toInt() );
   else
     aState = validate( aStr );
 
@@ -604,7 +616,7 @@ bool QDS_Datum::isValid( const bool msgBox, const QString& extMsg, const QString
     info = QString( "<p><nobr>%1</nobr></p>" ).arg( msg );
 
     QMessageBox::critical( controlWidget() ? controlWidget()->topLevelWidget() : 0,
-                           tr( "DATA_ERR_TITLE" ), info, tr( "BUT_OK" ) );
+                           tr( "DATA_ERR_TITLE" ), info, tr( "OK" ) );
     if ( controlWidget() )
       controlWidget()->setFocus();
   }
index be0247441c95dee078e45be9e440c9c48bcfbb7a..a3a056d7dd2238188288e0b4978a0ec1cd5a6e36 100644 (file)
@@ -87,6 +87,8 @@ public:
 
   virtual bool              eventFilter( QObject*, QEvent* );
 
+  operator QWidget*() const;
+
 signals:
   void                      paramChanged();
   void                      paramChanged( QString& );
index d25322c3f0b29b4af6e51d7cba40f21f17abddb4..b77aa8ba0759b8f0e85ad3dcd1d622b05a782ae8 100644 (file)
@@ -1,6 +1,7 @@
 #include "QDS_SpinBox.h"
 
-#include <qspinbox.h>
+#include <QtxIntSpinBox.h>
+
 #include <qvalidator.h>
 
 /*!
@@ -24,8 +25,8 @@ QDS_SpinBox::~QDS_SpinBox()
 QString QDS_SpinBox::getString() const
 {
   QString res;
-  QSpinBox* aSpinBox = spinBox();
-  if ( aSpinBox )
+  QtxIntSpinBox* aSpinBox = spinBox();
+  if ( aSpinBox && !aSpinBox->isCleared() )
   {
     res = aSpinBox->text();
     if ( !aSpinBox->suffix().isEmpty() )
@@ -41,16 +42,20 @@ QString QDS_SpinBox::getString() const
 */
 void QDS_SpinBox::setString( const QString& txt )
 {
-  if ( spinBox() )
+  if ( !spinBox() )
+    return;
+
+  spinBox()->setCleared( txt.isEmpty() );
+  if ( !txt.isEmpty() )
     spinBox()->setValue( txt.toInt() );
 }
 
 /*!
   Returns pointer to QSpinBox widget.
 */
-QSpinBox* QDS_SpinBox::spinBox() const
+QtxIntSpinBox* QDS_SpinBox::spinBox() const
 {
-  return ::qt_cast<QSpinBox*>( controlWidget() );
+  return ::qt_cast<QtxIntSpinBox*>( controlWidget() );
 }
 
 /*!
@@ -58,7 +63,7 @@ QSpinBox* QDS_SpinBox::spinBox() const
 */
 QWidget* QDS_SpinBox::createControl( QWidget* parent )
 {
-  QSpinBox* aSpinBox = new QSpinBox( parent );
+  QtxIntSpinBox* aSpinBox = new QtxIntSpinBox( parent );
   aSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   connect( aSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( onValueChanged( int ) ) );
   return aSpinBox;
index d6490edbf8eefafe578f5b94b13918b7af8cb541..f018ddfb80ae797a416123681e3e0e6d68a11482 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "QDS_Datum.h"
 
-class QSpinBox;
+class QtxIntSpinBox;
 
 class QDS_EXPORT QDS_SpinBox : public QDS_Datum
 {
@@ -20,7 +20,7 @@ private slots:
   void             onValueChanged( int );
 
 protected:
-  QSpinBox*        spinBox() const;
+  QtxIntSpinBox*   spinBox() const;
 
   virtual QWidget* createControl( QWidget* );
 
index 42d1e2f9e9be6179e05877fb5e80f1e75f53ad78..8a4160e70108a7fd0192315498af426f2556fd8f 100644 (file)
@@ -28,7 +28,7 @@ QString QDS_SpinBoxDbl::getString() const
 {
   QString res;
   QtxDblSpinBox* sb = spinBox();
-  if ( sb )
+  if ( sb && !sb->isCleared() )
   {
     bool hasFocus = sb->hasFocus();
     if ( hasFocus )
@@ -52,12 +52,16 @@ QString QDS_SpinBoxDbl::getString() const
 */
 void QDS_SpinBoxDbl::setString( const QString& txt )
 {
-  if ( spinBox() )
+  if ( !spinBox() )
+    return;
+
+  spinBox()->setCleared( txt.isEmpty() );
+  if ( !txt.isEmpty() )
     spinBox()->setValue( txt.toDouble() );
 }
 
 /*!
-  Returns pointer to XMLGUI_SpinBoxDbl widget.
+  Returns pointer to QtxDblSpinBox widget.
 */
 QtxDblSpinBox* QDS_SpinBoxDbl::spinBox() const
 {
@@ -130,6 +134,6 @@ void QDS_SpinBoxDbl::unitSystemChanged( const QString& system )
   sb->setPrecision( aPreci );
 
   sb->setLineStep( .1 );
-  sb->setMinValue( minValue().toDouble() );
-  sb->setMaxValue( maxValue().toDouble() );
+  sb->setMinValue( minValue().isEmpty() ? -DBL_MAX : minValue().toDouble() );
+  sb->setMaxValue( maxValue().isEmpty() ? DBL_MAX : maxValue().toDouble() );
 }