Salome HOME
Issue #115 The "computed" xml attribute processing
[modules/shaper.git] / src / ModuleBase / ModuleBase_ModelWidget.cpp
index cd56f06c363d259b3dbbfad4bdaafe1cd2b56da9..11d5f15fc8f4fba2d437622e1307ae110888dd25 100644 (file)
@@ -6,28 +6,35 @@
 
 #include <ModelAPI_Data.h>
 #include <ModelAPI_Attribute.h>
+#include <ModelAPI_Events.h>
 
 #include "Config_WidgetAPI.h"
 
+#include <Events_Loop.h>
+
 #include <QWidget>
 
-ModuleBase_ModelWidget::ModuleBase_ModelWidget(QObject* theParent, const Config_WidgetAPI* theData)
- : QObject(theParent), myHasDefaultValue(false)
+ModuleBase_ModelWidget::ModuleBase_ModelWidget(QObject* theParent, const Config_WidgetAPI* theData,
+                                               const std::string& theParentId)
+    : QObject(theParent),
+      myParentId(theParentId)
 {
+  myIsComputedDefault = false;
   myAttributeID = theData ? theData->widgetId() : "";
 }
 
-bool ModuleBase_ModelWidget::isInitialized(FeaturePtr theFeature) const
+bool ModuleBase_ModelWidget::isInitialized(ObjectPtr theObject) const
 {
-  return theFeature->data()->attribute(attributeID())->isInitialized();
+  return theObject->data()->attribute(attributeID())->isInitialized();
 }
 
-bool ModuleBase_ModelWidget::canFocusTo(const std::string& theAttributeName) const
+void ModuleBase_ModelWidget::setAttributeComputedState(ObjectPtr theObject) const
 {
-  return theAttributeName == attributeID();
+  if(myIsComputedDefault)
+    theObject->data()->attribute(attributeID())->setComputedDefault();
 }
 
-void ModuleBase_ModelWidget::focusTo()
+bool ModuleBase_ModelWidget::focusTo()
 {
   QList<QWidget*> aControls = getControls();
   QList<QWidget*>::const_iterator anIt = aControls.begin(), aLast = aControls.end();
@@ -38,9 +45,12 @@ void ModuleBase_ModelWidget::focusTo()
       break;
     }
   }
+  return true;
 }
 
-std::string ModuleBase_ModelWidget::attributeID() const
+void ModuleBase_ModelWidget::updateObject(ObjectPtr theObj) const
 {
-  return myAttributeID;
+  Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
+  static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
+  ModelAPI_EventCreator::get()->sendUpdated(theObj, anEvent);
 }