]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Distance constraint optimization
authorvsv <vitaly.smetannikov@opencascade.com>
Tue, 5 Aug 2014 11:39:53 +0000 (15:39 +0400)
committervsv <vitaly.smetannikov@opencascade.com>
Tue, 5 Aug 2014 11:39:53 +0000 (15:39 +0400)
src/ModuleBase/ModuleBase_WidgetFeature.cpp
src/ModuleBase/ModuleBase_WidgetFeature.h
src/ModuleBase/ModuleBase_WidgetFeatureOrAttribute.cpp
src/ModuleBase/ModuleBase_WidgetFeatureOrAttribute.h

index e699a72de437ad568513e7e7fb2f0652fb641f07..47e9960be06285ea6e882961c283926b1011b5d8 100644 (file)
@@ -7,6 +7,7 @@
 #include <ModuleBase_WidgetValueFeature.h>
 #include <ModuleBase_WidgetValue.h>
 #include <ModuleBase_ResultValidators.h>
+#include <ModuleBase_Tools.h>
 
 #include <Config_Keywords.h>
 #include <Config_WidgetAPI.h>
@@ -72,7 +73,7 @@ bool ModuleBase_WidgetFeature::setValue(ModuleBase_WidgetValue* theValue)
   return isDone;
 }
 
-bool ModuleBase_WidgetFeature::setObject(const ObjectPtr& theObject)
+bool ModuleBase_WidgetFeature::setObject(const ObjectPtr& theObject, bool theSendEvent)
 {
   PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
   ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
@@ -95,9 +96,10 @@ bool ModuleBase_WidgetFeature::setObject(const ObjectPtr& theObject)
   if (!isValid)
     return false;
 
-  myObject = theObject;
+  myObject = ModuleBase_Tools::feature(theObject);
   myEditor->setText(theObject ? theObject->data()->name().c_str() : "");
-  emit valuesChanged();
+  if (theSendEvent)
+    emit valuesChanged();
   return true;
 }
 
index fbfc7e2e9a9a620a128dc7f69f81b6f232a20558..81720edabf1400a45892d4f0e3b5c821fa225a1c 100644 (file)
@@ -56,7 +56,7 @@ protected:
   /// Fill the widget values by given point
   /// \param thePoint the point
   /// \return the boolean result of the feature set
-  bool setObject(const ObjectPtr& theObject);
+  bool setObject(const ObjectPtr& theObject, bool theSendEvent = true);
 
   /// Returns current widget feature
   /// \return the feature
@@ -70,7 +70,6 @@ protected:
   /// \return the list of kinds
   const QStringList& featureKinds() const { return myObjectKinds; }
 
-private:
   ObjectPtr myObject; ///< the current widget feature
   QStringList myObjectKinds; ///< the kinds of possible features
 
index daa23d5311179de0534d08cd9df66fe8b8df8fe6..525d243566f882b6332a6049438094b145b188fd 100644 (file)
@@ -51,7 +51,7 @@ bool ModuleBase_WidgetFeatureOrAttribute::setValue(ModuleBase_WidgetValue* theVa
       boost::shared_ptr<GeomAPI_Pnt2d> aValuePoint = aFeatureValue->point();
       ObjectPtr aObject = aFeatureValue->object();
       if (aObject) {
-        isDone = setObject(aObject);
+        isDone = setObject(aObject, false);
       }
       if (aValuePoint) {
         FeaturePtr aFeature = ModuleBase_Tools::feature(aObject);
@@ -69,9 +69,11 @@ bool ModuleBase_WidgetFeatureOrAttribute::setValue(ModuleBase_WidgetValue* theVa
               aFPoint = aCurPoint;
           }
           if (aFPoint)
-            isDone = setAttribute(aFPoint);
+            isDone = setAttribute(aFPoint, false);
         }
       }
+      if (isDone)
+        emit valuesChanged();
     }
   }
   return isDone;
@@ -82,13 +84,13 @@ bool ModuleBase_WidgetFeatureOrAttribute::storeValue(ObjectPtr theFeature) const
   FeaturePtr aFeature = boost::dynamic_pointer_cast<ModelAPI_Feature>(theFeature);
   if (!aFeature)
     return false;
+
   boost::shared_ptr<ModelAPI_Data> aData = theFeature->data();
   boost::shared_ptr<ModelAPI_AttributeRefAttr> aRef =
           boost::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(aData->attribute(attributeID()));
 
-  ModuleBase_WidgetFeatureOrAttribute* that = (ModuleBase_WidgetFeatureOrAttribute*) this;
-  if (object())
-    aRef->setObject(object());
+  if (myObject)
+    aRef->setObject(myObject);
   if (myAttribute)
     aRef->setAttr(myAttribute);
 
@@ -106,7 +108,7 @@ bool ModuleBase_WidgetFeatureOrAttribute::restoreValue(ObjectPtr theFeature)
 
   FeaturePtr aFeature = ModuleBase_Tools::feature(aRef->object());
   if (aFeature) {
-    setObject(aFeature);
+    myObject = aFeature;
     myAttribute = aRef->attr();
 
     std::string aText = "";
@@ -121,14 +123,17 @@ bool ModuleBase_WidgetFeatureOrAttribute::restoreValue(ObjectPtr theFeature)
   return false;
 }
 
-bool ModuleBase_WidgetFeatureOrAttribute::setAttribute(const boost::shared_ptr<ModelAPI_Attribute>& theAttribute)
+bool ModuleBase_WidgetFeatureOrAttribute::setAttribute(
+                                    const boost::shared_ptr<ModelAPI_Attribute>& theAttribute,
+                                    bool theSendEvent)
 {
   if (!theAttribute)// || !featureKinds().contains(theAttribute->attributeType().c_str()))
     return false;
 
   myAttribute = theAttribute;
   editor()->setText(theAttribute ? theAttribute->attributeType().c_str() : "");
-  emit valuesChanged();
+  if (theSendEvent)
+    emit valuesChanged();
   return true;
 }
 
index 54e2e08eb62a210e5e8e34660119acebe5b86c4d..9de6c149a36fcedffb068fbb14cfc164fe394867 100644 (file)
@@ -44,7 +44,8 @@ protected:
   /// Set the attribute
   /// \param theAttribute value
   /// \return the boolean result of the attribute set
-  bool setAttribute(const boost::shared_ptr<ModelAPI_Attribute>& theAttribute);
+  bool setAttribute(const boost::shared_ptr<ModelAPI_Attribute>& theAttribute, 
+                    bool theSendEvent = true);
 
 protected:
   boost::shared_ptr<ModelAPI_Attribute> myAttribute; /// < the attribute