]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
no message
authorstv <stv@opencascade.com>
Wed, 18 Jan 2006 14:23:15 +0000 (14:23 +0000)
committerstv <stv@opencascade.com>
Wed, 18 Jan 2006 14:23:15 +0000 (14:23 +0000)
src/QDS/QDS_CheckBox.cxx
src/QDS/QDS_CheckBox.h
src/QDS/QDS_Datum.cxx
src/QDS/QDS_Datum.h

index 7f1924d97ee09a0e8080cce8ea8f1f2e141f7429..f6a8bd45014574d0d5e3851992a7622e89d40ef8 100644 (file)
@@ -23,7 +23,10 @@ QDS_CheckBox::~QDS_CheckBox()
 */
 QString QDS_CheckBox::getString() const
 {
-  return checkBox() && checkBox()->isChecked() ? "1" : "0";
+  QString val;
+  if ( checkBox() && checkBox()->state() != QButton::NoChange )
+    val = checkBox()->isChecked() ? "1" : "0";
+  return val;
 }
 
 /*!
@@ -31,10 +34,20 @@ QString QDS_CheckBox::getString() const
 */
 void QDS_CheckBox::setString( const QString& txt )
 {
-  bool isOk;
-  int val = (int)txt.toDouble( &isOk );
-  if ( checkBox() )
+  if ( !checkBox() )
+    return;
+
+  if ( txt.isEmpty() )
+  {
+    checkBox()->setTristate();
+    checkBox()->setNoChange();
+  }
+  else
+  {
+    bool isOk;
+    int val = (int)txt.toDouble( &isOk );
     checkBox()->setChecked( isOk && val != 0 );
+  }
 }
 
 /*!
@@ -53,6 +66,7 @@ QWidget* QDS_CheckBox::createControl( QWidget* parent )
   QCheckBox* cb = new QCheckBox( parent );
   connect( cb, SIGNAL( stateChanged( int ) ), SLOT( onParamChanged() ) );
   connect( cb, SIGNAL( toggled( bool ) ), SIGNAL( toggled( bool ) ) );
+  connect( cb, SIGNAL( stateChanged( int ) ), this, SLOT( onStateChanged( int ) ) );
   return cb;
 }
 
@@ -64,6 +78,12 @@ void QDS_CheckBox::onParamChanged()
   emit paramChanged();
 }
 
+void QDS_CheckBox::onStateChanged( int state )
+{
+  if ( state != QButton::NoChange && checkBox() )
+    checkBox()->setTristate( false );
+}
+
 void QDS_CheckBox::setChecked( const bool theState )
 {
   if ( checkBox() )
index 7c04edaadcb0663b2cb55c9c14da5761f34421a0..e6d7c541d1a9ecbb5dcc08e6755e6dc70f778feb 100644 (file)
@@ -21,6 +21,7 @@ signals:
 
 private slots:
   void                 onParamChanged();
+  void                 onStateChanged( int );
 
 protected:
   QCheckBox*           checkBox() const;
index f2a4919ba8d25f5cc929eadb7f228153bda83f20..f7a76b6491c4354b46c5ec815054f461163695b8 100644 (file)
@@ -283,6 +283,14 @@ QString QDS_Datum::shortDescription() const
   return sdStr;
 }
 
+QVariant QDS_Datum::value() const
+{
+  QVariant val;
+  if ( !isEmpty() )
+    val = stringValue();
+  return val;
+}
+
 QString QDS_Datum::stringValue() const
 {
   initDatum();
@@ -382,6 +390,14 @@ void QDS_Datum::clear()
   }
 }
 
+void QDS_Datum::setValue( const QVariant& val )
+{
+  if ( val.isValid() && val.canCast( QVariant::String ) )
+    setStringValue( val.toString() );
+  else
+    clear();
+}
+
 void QDS_Datum::setStringValue( const QString& txt )
 {
   initDatum();
index a3a056d7dd2238188288e0b4978a0ec1cd5a6e36..cd0bdd62d512728afaebabf0c46021b3acbc94e2 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <qobject.h>
 #include <qstring.h>
+#include <qvariant.h>
 #include <qguardedptr.h>
 
 #include <DDS_DicItem.h>
@@ -41,6 +42,8 @@ public:
   QString                   minimumValue() const;
   QString                   maximumValue() const;
 
+  virtual QVariant          value() const;
+
   virtual QString           stringValue() const;
   virtual double            doubleValue() const;
   virtual int               integerValue() const;
@@ -52,6 +55,8 @@ public:
   virtual void              reset();
   virtual void              clear();
 
+  virtual void              setValue( const QVariant& );
+
   virtual void              setStringValue( const QString& );
   virtual void              setDoubleValue( const double );
   virtual void              setIntegerValue( const int );