- //! Returns list of currently selected shapes and their owners (objects).
- //! Both lists are synchronized
- //! \param theList returning list of selected AIS objects
- //! \param theOwners list of objects
- virtual void selectedShapes(NCollection_List<TopoDS_Shape>& theList,
- std::list<ObjectPtr>& theOwners) const = 0;
-
+ //! Returns list of currently selected QModelIndexes
+ virtual ObjectPtr getSelectableObject(const Handle_SelectMgr_EntityOwner& theOwner) const = 0;
+
+ //! Return the shape from the viewer presentation.
+ //! If the shape is equal to the shape of selected object, it returns an empty shape
+ //! \param thePrs a selected object
+ //! \return a shape
+ MODULEBASE_EXPORT ResultPtr getResult(const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs);
+
+ //! Return the shape from the viewer presentation.
+ //! If the shape is equal to the shape of selected object, it returns an empty shape
+ //! \param thePrs a selected object
+ //! \return a shape
+ MODULEBASE_EXPORT GeomShapePtr getShape(const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs);
+
+ //! Return the IO from the viewer presentation.
+ //! \param thePrs a selected object
+ //! \return an interactive object
+ virtual MODULEBASE_EXPORT Handle(AIS_InteractiveObject) getIO(const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs) = 0;
+
+ //! Wraps the object list into the viewer prs list
+ //! \param theObjects a list of objects
+ //! \return a list of prs, where only object is not empty
+ static MODULEBASE_EXPORT QList<std::shared_ptr<ModuleBase_ViewerPrs>> getViewerPrs(
+ const QObjectPtrList& theObjects);
+
+ /// Removes selection items where owners have equal vertices. The first
+ /// owner with the qual vertex stays in the list.
+ static MODULEBASE_EXPORT void filterSelectionOnEqualPoints
+ (QList<std::shared_ptr<ModuleBase_ViewerPrs>>& theSelected);
+private:
+ /// Find vertex shape build by a Brep owner of the presentation if it exists
+ /// \param thePrs a viewer presentation
+ /// \return GeomAPI wrap of vertex
+ static std::shared_ptr<GeomAPI_Vertex> getPresentationVertex(
+ const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs);