+ //! Returns list of currently selected QModelIndexes
+ virtual ObjectPtr getSelectableObject(const Handle_SelectMgr_EntityOwner& theOwner) const = 0;
+
+ //! 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;
+
+ //! 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 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 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 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<ModuleBase_ViewerPrs> getViewerPrs(
+ const QObjectPtrList& theObjects);