]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #394 Undo-ing a Sketch element
authornds <natalia.donis@opencascade.com>
Thu, 12 Feb 2015 13:00:53 +0000 (16:00 +0300)
committernds <natalia.donis@opencascade.com>
Thu, 12 Feb 2015 13:00:53 +0000 (16:00 +0300)
Reset for the widget value by mouse leaving the active window.

src/ModuleBase/ModuleBase_ModelWidget.cpp
src/ModuleBase/ModuleBase_ModelWidget.h
src/ModuleBase/ModuleBase_WidgetDoubleValue.cpp
src/ModuleBase/ModuleBase_WidgetDoubleValue.h
src/PartSet/PartSet_SketcherMgr.cpp
src/PartSet/PartSet_WidgetPoint2d.cpp
src/PartSet/PartSet_WidgetPoint2d.h
src/PartSet/PartSet_WidgetPoint2dDistance.cpp
src/PartSet/PartSet_WidgetPoint2dDistance.h

index f9e894085c34d2bc6c973178d6584be3ffbfebdc..4c672c5b67086f02a9d06be9c11df9e8c1ae219f 100644 (file)
@@ -27,7 +27,7 @@ ModuleBase_ModelWidget::ModuleBase_ModelWidget(QWidget* theParent, const Config_
     : QObject(theParent),
       myParentId(theParentId)
 {
-  myIsValueDefault = !theData->getProperty(ATTR_DEFAULT).empty();
+  myDefaultValue = theData->getProperty(ATTR_DEFAULT);
   myIsComputedDefault = false;
   myAttributeID = theData ? theData->widgetId() : "";
 
index 6a3e63894a6f429627cd907f80534c228fa390c6..70679303575ee4c8cd30824d69e884184a2bacc2 100644 (file)
@@ -43,6 +43,9 @@ Q_OBJECT
   {
   }
 
+  /// Fills the widget with default values
+  virtual void reset() {};
+
   /// Returns the state whether the attribute of the feature is initialized
   /// \param theObject a model feature to be checked
   /// \return the boolean result
@@ -55,7 +58,7 @@ Q_OBJECT
   /// Returns true, if default value of the widget is defined in the XML and it is not the
   /// computed value
   /// \return the boolean result
-  bool isValueDefault() { return myIsValueDefault; }
+  bool isValueDefault() { return !myDefaultValue.empty(); }
 
   /// Defines if it is supposed that the widget should interact with the viewer.
   virtual bool isViewerSelector() { return false; }
@@ -190,8 +193,9 @@ protected slots:
   /// Value should be computed on execute, like radius for circle's constraint (can not be zero)
   bool myIsComputedDefault; 
                         
-  /// the default value is defined in the XML for this attribute    
-  bool myIsValueDefault;
+  /// the default value, which is defined in the XML for this attribute    
+  std::string myDefaultValue; 
+
   /// Flag which shows that current operation is in editing mode
   bool myIsEditing; 
 };
index 6b1f52ed35d161e778ccf891a49872adacddc8fb..cd1cc4565516040add4c830fc3ea2b6100595618 100644 (file)
@@ -79,8 +79,7 @@ ModuleBase_WidgetDoubleValue::ModuleBase_WidgetDoubleValue(QWidget* theParent,
     mySpinBox->setSingleStep(aStepVal);
   }
 
-  aProp = theData->getProperty(ATTR_DEFAULT);
-  double aDefVal = QString::fromStdString(aProp).toDouble(&isOk);
+  double aDefVal = QString::fromStdString(myDefaultValue).toDouble(&isOk);
   if (isOk) {
     mySpinBox->setValue(aDefVal);
   } else if (aProp == DOUBLE_WDG_DEFAULT_COMPUTED){
@@ -100,6 +99,13 @@ ModuleBase_WidgetDoubleValue::~ModuleBase_WidgetDoubleValue()
 {
 }
 
+void ModuleBase_WidgetDoubleValue::reset()
+{
+  bool isOk;
+  double aDefValue = QString::fromStdString(myDefaultValue).toDouble(&isOk);
+  mySpinBox->setValue(isOk ? aDefValue : 0.0);
+}
+
 bool ModuleBase_WidgetDoubleValue::storeValue() const
 {
   DataPtr aData = myFeature->data();
index 9c7804bf9f09850aabe79dea14dd659f8469831d..957d289a7a50bfc77b1317a147210db697a37ee8 100644 (file)
@@ -37,6 +37,9 @@ Q_OBJECT
 
   virtual ~ModuleBase_WidgetDoubleValue();
 
+  /// Fills the widget with default values
+  virtual void reset();
+
   //! Read value of corresponded attribute from data model to the input control
   // \return True in success
   virtual bool restoreValue();
index d601d5a6f258baebc05fdcb4acb9d09198f525b3..6ce573b0d4eab30014dfcd8a3fcac194a4adda92 100644 (file)
@@ -141,15 +141,29 @@ PartSet_SketcherMgr::~PartSet_SketcherMgr()
 
 void PartSet_SketcherMgr::onMouseMoveOverWindow(bool theOverWindow)
 {
+  ModuleBase_Operation* aOperation = myModule->workshop()->currentOperation();
+  if (!aOperation || aOperation->isEditOperation())
+    return;
+
   myIsMouseOverWindow = theOverWindow;
   if (theOverWindow)
     myIsPropertyPanelValueChanged = false;
-
+  else {
+    ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel();
+    ModuleBase_ModelWidget* aActiveWgt = aPanel->activeWidget();
+    if(aActiveWgt) {
+      aActiveWgt->reset();
+    }
+  }  
   updateVisibilityOfCreatedFeature();
 }
 
 void PartSet_SketcherMgr::onValuesChangedInPropertyPanel()
 {
+  ModuleBase_Operation* aOperation = myModule->workshop()->currentOperation();
+  if (!aOperation || aOperation->isEditOperation())
+    return;
+
   myIsPropertyPanelValueChanged = true;
 
   updateVisibilityOfCreatedFeature();
index ed4064004e2d96022409facd2a723067ae4972b0..5788a92c3637d77732e5e0ecef9cbe1138294cb6 100644 (file)
@@ -92,6 +92,15 @@ PartSet_WidgetPoint2D::PartSet_WidgetPoint2D(QWidget* theParent,
   }
 }
 
+void PartSet_WidgetPoint2D::reset()
+{
+  bool isOk;
+  double aDefValue = QString::fromStdString(myDefaultValue).toDouble(&isOk);
+
+  myXSpin->setValue(isOk ? aDefValue : 0.0);
+  myYSpin->setValue(isOk ? aDefValue : 0.0);
+}
+
 PartSet_WidgetPoint2D::~PartSet_WidgetPoint2D()
 {
 }
index a4e7323856d38073c4390954c4d8b7f8cb8f92e6..b976abf182ee8d3beb487cdb20b9d0f511964976 100644 (file)
@@ -47,6 +47,9 @@ Q_OBJECT
   /// Destructor
   virtual ~PartSet_WidgetPoint2D();
 
+  /// Fills the widget with default values
+  virtual void reset();
+
   /// Set the given wrapped value to the current widget
   /// This value should be processed in the widget according to the needs
   /// \param theValue the wrapped widget value
index 54887f018cc199c568914bd356ced275ec60ae39..086133dedeb2dd46cc0f551861c0b03ab317eaa6 100644 (file)
@@ -40,6 +40,13 @@ PartSet_WidgetPoint2dDistance::~PartSet_WidgetPoint2dDistance()
 {
 }
 
+void PartSet_WidgetPoint2dDistance::reset()
+{
+  bool isOk;
+  double aDefValue = QString::fromStdString(myDefaultValue).toDouble(&isOk);
+  mySpinBox->setValue(isOk ? aDefValue : 0.0);
+}
+
 void PartSet_WidgetPoint2dDistance::setPoint(FeaturePtr theFeature,
                                              const std::shared_ptr<GeomAPI_Pnt2d>& thePnt)
 {
index aa0ce98cd8170aebbe78cad44460efd2a638e45d..5ebfb4d1cac02cc51750fcef5edc3105cafbeede 100644 (file)
@@ -47,6 +47,9 @@ Q_OBJECT
 
   virtual ~PartSet_WidgetPoint2dDistance();
 
+  /// Fills the widget with default values
+  virtual void reset();
+
   /// The methiod called when widget is deactivated
   virtual void deactivate();