Salome HOME
Simplified calculation of fly out distance and creation of constraints limited only...
[modules/shaper.git] / src / XGUI / XGUI_Selection.cpp
index 8a14e7d1800510dc8e497c2b9c561edb9735d03f..a8cd9cc3b35e678388857a52ee9eafbbada053ef 100644 (file)
@@ -43,6 +43,24 @@ QList<ModuleBase_ViewerPrs> XGUI_Selection::getSelected(const SelectionPlace& th
   return aPresentations;
 }
 
+Handle(AIS_InteractiveObject) XGUI_Selection::getIO(const ModuleBase_ViewerPrs& thePrs)
+{
+  Handle(AIS_InteractiveObject) anIO = thePrs.interactive();
+  if (anIO.IsNull()) {
+    Handle(SelectMgr_EntityOwner) anOwner = thePrs.owner();
+    if (!anOwner.IsNull())
+      anIO = Handle(AIS_InteractiveObject)::DownCast(anOwner->Selectable());
+
+    if (anIO.IsNull() && thePrs.object()) {
+      XGUI_Displayer* aDisplayer = myWorkshop->displayer();
+      AISObjectPtr anAISObject = aDisplayer->getAISObject(thePrs.object());
+      if (anAISObject.get())
+        anIO = anAISObject->impl<Handle(AIS_InteractiveObject)>();
+    }
+  }
+  return anIO;
+}
+
 void XGUI_Selection::getSelectedInViewer(QList<ModuleBase_ViewerPrs>& thePresentations) const
 {
   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
@@ -99,7 +117,7 @@ void XGUI_Selection::fillPresentation(ModuleBase_ViewerPrs& thePrs,
   // we should not check the appearance of this feature because there can be some selected shapes
   // for one feature
   Handle(StdSelect_BRepOwner) aBRO = Handle(StdSelect_BRepOwner)::DownCast(theOwner);
-  if( !aBRO.IsNull() ) {
+  if( !aBRO.IsNull() && aBRO->HasShape() ) {
     // the located method is called in the context to obtain the shape by the SelectedShape() method,
     // so the shape is located by the same rules
     TopoDS_Shape aShape = aBRO->Shape().Located (aBRO->Location() * aBRO->Shape().Location());
@@ -147,6 +165,11 @@ QObjectPtrList XGUI_Selection::selectedObjects() const
   return myWorkshop->objectBrowser()->selectedObjects();
 }
 
+void XGUI_Selection::setSelectedObjects( const QObjectPtrList& theObjects ) const
+{
+  return myWorkshop->objectBrowser()->setObjectsSelected( theObjects );
+}
+
 QObjectPtrList XGUI_Selection::selectedPresentations() const
 {
   QObjectPtrList aSelectedList;