]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp
Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetShapeSelector.cpp
index fa05bba8205e5c013c570722b1c18ea8461a74a2..a5e09fea367af384b75ca16d969b2dc54d200216 100644 (file)
@@ -4,7 +4,9 @@
 
 #include "ModuleBase_WidgetShapeSelector.h"
 #include <ModuleBase_IWorkshop.h>
+#include "ModuleBase_WidgetValue.h"
 #include <ModuleBase_Tools.h>
+#include "ModuleBase_WidgetValueFeature.h"
 
 #include <Events_Loop.h>
 #include <ModelAPI_Events.h>
@@ -73,6 +75,7 @@ ModuleBase_WidgetShapeSelector::ModuleBase_WidgetShapeSelector(QWidget* theParen
   myTextLine = new QLineEdit(myContainer);
   myTextLine->setReadOnly(true);
   myTextLine->setToolTip(aToolTip);
+  myTextLine->installEventFilter(this);
 
   myBasePalet = myTextLine->palette();
   myInactivePalet = myBasePalet;
@@ -147,22 +150,28 @@ void ModuleBase_WidgetShapeSelector::onSelectionChanged()
     if (!isAccepted(aObject))
       return;
 
-    mySelectedObject = aObject;
-    if (mySelectedObject) {
-      updateSelectionName();
-      raisePanel();
-      static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TOHIDE);
-      ModelAPI_EventCreator::get()->sendUpdated(mySelectedObject, anEvent);
-      Events_Loop::loop()->flush(anEvent);
-    } else {
-      myTextLine->setText("");
-    }
-    activateSelection(false);
-    emit valuesChanged();
-    emit focusOutWidget(this);
+    setObject(aObject);
   }
 }
 
+//********************************************************************
+void ModuleBase_WidgetShapeSelector::setObject(ObjectPtr theObj)
+{
+  if (mySelectedObject == theObj)
+    return;
+  mySelectedObject = theObj;
+  if (mySelectedObject) {
+    raisePanel();
+    static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TOHIDE);
+    ModelAPI_EventCreator::get()->sendUpdated(mySelectedObject, anEvent);
+    Events_Loop::loop()->flush(anEvent);
+  } 
+  updateSelectionName();
+  activateSelection(false);
+  emit valuesChanged();
+  emit focusOutWidget(this);
+}
+
 //********************************************************************
 bool ModuleBase_WidgetShapeSelector::isAccepted(const ObjectPtr theResult) const
 {
@@ -236,9 +245,6 @@ void ModuleBase_WidgetShapeSelector::activateSelection(bool toActivate)
     connect(myWorkshop, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
   else
     disconnect(myWorkshop, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
-
-//  if (myWorkshop->selectedObjects().size() > 0)
-//    onSelectionChanged();
 }
 
 //********************************************************************
@@ -274,3 +280,21 @@ bool ModuleBase_WidgetShapeSelector::eventFilter(QObject* theObj, QEvent* theEve
   }
   return ModuleBase_ModelWidget::eventFilter(theObj, theEvent);
 }
+
+//********************************************************************
+bool ModuleBase_WidgetShapeSelector::setValue(ModuleBase_WidgetValue* theValue)
+{
+  if (theValue) {
+    ModuleBase_WidgetValueFeature* aFeatureValue =
+        dynamic_cast<ModuleBase_WidgetValueFeature*>(theValue);
+    if (aFeatureValue && aFeatureValue->object()) {
+      ObjectPtr aObject = aFeatureValue->object();
+      if (isAccepted(aObject)) {
+        setObject(aObject);
+        return true;
+      }
+    }
+  }
+  return false;
+}
+