]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #394 Undo-ing a Sketch element
authornds <natalia.donis@opencascade.com>
Mon, 16 Feb 2015 08:39:28 +0000 (11:39 +0300)
committernds <natalia.donis@opencascade.com>
Mon, 16 Feb 2015 08:39:28 +0000 (11:39 +0300)
The spin box value set without emitting a signal about valueChanged is necessary for some controls. So, it is moved to ModuleBase_Tools.

src/ModuleBase/ModuleBase_Tools.cpp
src/ModuleBase/ModuleBase_Tools.h
src/ModuleBase/ModuleBase_WidgetDoubleValue.cpp
src/ModuleBase/ModuleBase_WidgetEditor.cpp
src/PartSet/PartSet_WidgetPoint2d.cpp
src/PartSet/PartSet_WidgetPoint2d.h
src/PartSet/PartSet_WidgetPoint2dDistance.cpp

index 21fa0db1f29eb7d676bf0b2aab3a964a6272268b..38357449c906bcafbf50e0f4406af18e662db9ff 100644 (file)
@@ -9,6 +9,7 @@
 #include <QLayout>
 #include <QPainter>
 #include <QBitmap>
+#include <QDoubleSpinBox>
 
 namespace ModuleBase_Tools {
 
@@ -97,6 +98,13 @@ QPixmap lighter(const QString& theIcon, const int theLighterValue)
   return QPixmap::fromImage(aResult);
 }
 
+void setSpinValue(QDoubleSpinBox* theSpin, double theValue)
+{
+  bool isBlocked = theSpin->blockSignals(true);
+  theSpin->setValue(theValue);
+  theSpin->blockSignals(isBlocked);
+}
+
 }
 
 
index c6ad57e8c5ae1676005dc1802882681e1c961802..1f55bec750a28fb7a9e5b04df2273543c3ff44e6 100644 (file)
@@ -13,6 +13,7 @@
 
 class QWidget;
 class QLayout;
+class QDoubleSpinBox;
 
 namespace ModuleBase_Tools {
 
@@ -50,6 +51,12 @@ MODULEBASE_EXPORT QPixmap composite(const QString& theAdditionalIcon, const QStr
 //! \param theLighterValue a lighter factor
 //! \return resulting pixmap
 MODULEBASE_EXPORT QPixmap lighter(const QString& theIcon, const int theLighterValue = 200);
+
+/// Sets programmatically the value to the spin box without emitting any signals(e.g. valueChanged)
+/// \param theSpin an X or Y coordinate widget
+/// \param theValue a new value
+MODULEBASE_EXPORT void setSpinValue(QDoubleSpinBox* theSpin, double theValue);
+
 }
 
 #endif
index b18aa208985493c27f3989c2d7a3d657be41ec3d..8e8843af938c20af03295be7e04edd644742d20a 100644 (file)
@@ -106,7 +106,7 @@ void ModuleBase_WidgetDoubleValue::reset()
 
   bool isOk;
   double aDefValue = QString::fromStdString(myDefaultValue).toDouble(&isOk);
-  mySpinBox->setValue(isOk ? aDefValue : 0.0);
+  ModuleBase_Tools::setSpinValue(mySpinBox, isOk ? aDefValue : 0.0);
 }
 
 bool ModuleBase_WidgetDoubleValue::storeValue() const
@@ -123,9 +123,7 @@ bool ModuleBase_WidgetDoubleValue::restoreValue()
   DataPtr aData = myFeature->data();
   AttributeDoublePtr aRef = aData->real(attributeID());
 
-  bool isBlocked = mySpinBox->blockSignals(true);
-  mySpinBox->setValue(aRef->value());
-  mySpinBox->blockSignals(isBlocked);
+  ModuleBase_Tools::setSpinValue(mySpinBox, aRef->value());
 
   return true;
 }
index 7f77acd5a97ac1064fdfd533699a7e85dd71b4ad..07c59651de695bdd6de1d735644fe43719c550b2 100644 (file)
@@ -78,9 +78,7 @@ void ModuleBase_WidgetEditor::showPopupEditor()
   aValue = editedValue(aValue, isDone);
 
   if (isDone) {
-    bool isBlocked = mySpinBox->blockSignals(true);
-    mySpinBox->setValue(aValue);
-    mySpinBox->blockSignals(isBlocked);
+    ModuleBase_Tools::setSpinValue(mySpinBox, aValue);
   }
   emit valuesChanged();
   emit focusOutWidget(this);
index 51609754f2ec62f00284d96e959859acc2fb5e7a..034d063da131b3a7c6fd3376fa809097e58fd43e 100644 (file)
@@ -98,8 +98,8 @@ void PartSet_WidgetPoint2D::reset()
   double aDefValue = QString::fromStdString(myDefaultValue).toDouble(&isOk);
   // it is important to block the spin box control in order to do not through out the
   // locking of the validating state.
-  setSpinValue(myXSpin, isOk ? aDefValue : 0.0);
-  setSpinValue(myYSpin, isOk ? aDefValue : 0.0);
+  ModuleBase_Tools::setSpinValue(myXSpin, isOk ? aDefValue : 0.0);
+  ModuleBase_Tools::setSpinValue(myYSpin, isOk ? aDefValue : 0.0);
 }
 
 PartSet_WidgetPoint2D::~PartSet_WidgetPoint2D()
@@ -125,8 +125,8 @@ bool PartSet_WidgetPoint2D::setPoint(double theX, double theY)
   if (fabs(theY) >= MaxCoordinate)
     return false;
 
-  setSpinValue(myXSpin, theX);
-  setSpinValue(myYSpin, theY);
+  ModuleBase_Tools::setSpinValue(myXSpin, theX);
+  ModuleBase_Tools::setSpinValue(myYSpin, theY);
 
   storeValue();
   return true;
@@ -169,8 +169,8 @@ bool PartSet_WidgetPoint2D::restoreValue()
   double _Y = aPoint->y();
 #endif
 
-  setSpinValue(myXSpin, aPoint->x());
-  setSpinValue(myYSpin, aPoint->y());
+  ModuleBase_Tools::setSpinValue(myXSpin, aPoint->x());
+  ModuleBase_Tools::setSpinValue(myYSpin, aPoint->y());
   return true;
 }
 
@@ -320,10 +320,3 @@ void PartSet_WidgetPoint2D::onValuesChanged()
   myWorkshop->operationMgr()->setLockValidating(false);
   emit valuesChanged();
 }
-
-void PartSet_WidgetPoint2D::setSpinValue(ModuleBase_DoubleSpinBox* theSpin, double theValue)
-{
-  bool isBlocked = theSpin->blockSignals(true);
-  theSpin->setValue(theValue);
-  theSpin->blockSignals(isBlocked);
-}
index c709280e1026a837ba6ae4859174a3017d44b3cc..de3ab120ddc92db4f75006dd9b28c3e59eefc2d2 100644 (file)
@@ -131,11 +131,6 @@ private slots:
    bool getPoint2d(const Handle(V3d_View)& theView, const TopoDS_Shape& theShape, 
                    double& theX, double& theY) const;
 
-   /// Sets programmatically the value to the spin box without emitting any signals(e.g. valueChanged)
-   /// \param theSpin an X or Y coordinate widget
-   /// \param theValue a new value
-   static void setSpinValue(ModuleBase_DoubleSpinBox* theSpin, double theValue);
-
   XGUI_Workshop* myWorkshop;
 
   QGroupBox* myGroupBox;  ///< the parent group box for all intenal widgets
index 086133dedeb2dd46cc0f551861c0b03ab317eaa6..756e9a8a91fb38bc694a42bfcd828b455df38830 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <ModuleBase_DoubleSpinBox.h>
 #include <ModuleBase_IViewWindow.h>
+#include <ModuleBase_Tools.h>
 
 #include <XGUI_ViewerProxy.h>
 #include <XGUI_Workshop.h>
@@ -44,7 +45,8 @@ void PartSet_WidgetPoint2dDistance::reset()
 {
   bool isOk;
   double aDefValue = QString::fromStdString(myDefaultValue).toDouble(&isOk);
-  mySpinBox->setValue(isOk ? aDefValue : 0.0);
+
+  ModuleBase_Tools::setSpinValue(mySpinBox, isOk ? aDefValue : 0.0);
 }
 
 void PartSet_WidgetPoint2dDistance::setPoint(FeaturePtr theFeature,
@@ -60,9 +62,8 @@ void PartSet_WidgetPoint2dDistance::setPoint(FeaturePtr theFeature,
   AttributeDoublePtr aReal = aData->real(attributeID());
   if (aReal && (aReal->value() != aRadius)) {
     aReal->setValue(aRadius);
-    mySpinBox->blockSignals(true);
-    mySpinBox->setValue(aRadius);
-    mySpinBox->blockSignals(false);
+    
+    ModuleBase_Tools::setSpinValue(mySpinBox, aRadius);
     storeValue();
   }
 }