#include <set>
-
XGUI_Selection::XGUI_Selection(XGUI_Workshop* theWorkshop)
-: myWorkshop(theWorkshop)
+ : myWorkshop(theWorkshop)
{
}
std::list<ModuleBase_ViewerPrs> XGUI_Selection::getSelected(int theShapeTypeToSkip) const
{
- std::set<FeaturePtr> aPrsFeatures;
+ std::set<ObjectPtr> aPrsFeatures;
std::list<ModuleBase_ViewerPrs> aPresentations;
+ XGUI_Displayer* aDisplayer = myWorkshop->displayer();
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
- Handle(AIS_InteractiveObject) anIO = aContext->SelectedInteractive();
- TopoDS_Shape aShape = aContext->SelectedShape();
-
- if (theShapeTypeToSkip >= 0 && !aShape.IsNull() && aShape.ShapeType() == theShapeTypeToSkip)
- continue;
+ ModuleBase_ViewerPrs aPrs;
- FeaturePtr aFeature = myWorkshop->displayer()->getFeature(anIO);
- if (aPrsFeatures.find(aFeature) != aPrsFeatures.end())
- continue;
+ Handle(AIS_InteractiveObject) anIO = aContext->SelectedInteractive();
+ aPrs.setInteractive(anIO);
+
+ ObjectPtr aFeature = aDisplayer->getObject(anIO);
+ if (aPrsFeatures.find(aFeature) == aPrsFeatures.end()) {
+ aPrs.setFeature(aFeature);
+ aPrsFeatures.insert(aFeature);
+ }
+ if (aContext->HasOpenedContext()) {
+ TopoDS_Shape aShape = aContext->SelectedShape();
+ if (!aShape.IsNull() && (aShape.ShapeType() != theShapeTypeToSkip))
+ aPrs.setShape(aShape);
+ }
Handle(SelectMgr_EntityOwner) anOwner = aContext->SelectedOwner();
- aPresentations.push_back(ModuleBase_ViewerPrs(aFeature, aShape, anOwner));
- aPrsFeatures.insert(aFeature);
+ aPrs.setOwner(anOwner);
+ aPresentations.push_back(aPrs);
}
return aPresentations;
}
std::list<ModuleBase_ViewerPrs> XGUI_Selection::getHighlighted(int theShapeTypeToSkip) const
{
- std::set<FeaturePtr > aPrsFeatures;
+ std::set<ObjectPtr> aPrsFeatures;
std::list<ModuleBase_ViewerPrs> aPresentations;
+ XGUI_Displayer* aDisplayer = myWorkshop->displayer();
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
for (aContext->InitDetected(); aContext->MoreDetected(); aContext->NextDetected()) {
+ ModuleBase_ViewerPrs aPrs;
Handle(AIS_InteractiveObject) anIO = aContext->DetectedInteractive();
- TopoDS_Shape aShape = aContext->DetectedShape();
- if (theShapeTypeToSkip >= 0 && !aShape.IsNull() && aShape.ShapeType() == theShapeTypeToSkip)
- continue;
-
- FeaturePtr aFeature = myWorkshop->displayer()->getFeature(anIO);
- if (aPrsFeatures.find(aFeature) != aPrsFeatures.end())
- continue;
- aPresentations.push_back(ModuleBase_ViewerPrs(aFeature, aShape, NULL));
- aPrsFeatures.insert(aFeature);
+ aPrs.setInteractive(anIO);
+
+ ObjectPtr aResult = aDisplayer->getObject(anIO);
+ if (aPrsFeatures.find(aResult) == aPrsFeatures.end()) {
+ aPrs.setFeature(aResult);
+ aPrsFeatures.insert(aResult);
+ }
+ if (aContext->HasOpenedContext()) {
+ TopoDS_Shape aShape = aContext->DetectedShape();
+ if (!aShape.IsNull() && aShape.ShapeType() != theShapeTypeToSkip)
+ aPrs.setShape(aShape);
+ }
+ aPresentations.push_back(aPrs);
}
-
return aPresentations;
}
-QFeatureList XGUI_Selection::selectedFeatures() const
+QList<ObjectPtr> XGUI_Selection::selectedObjects() const
{
- return myWorkshop->objectBrowser()->selectedFeatures();
- //QFeatureList aSelectedList;
-
- //Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
- //for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
- // Handle(AIS_InteractiveObject) anIO = aContext->SelectedInteractive();
- // FeaturePtr aFeature = myWorkshop->displayer()->getFeature(anIO);
- // if (aFeature)
- // aSelectedList.append(aFeature);
- //}
- //return aSelectedList;
+ return myWorkshop->objectBrowser()->selectedObjects();
}
+QList<ObjectPtr> XGUI_Selection::selectedPresentations() const
+{
+ QList<ObjectPtr> aSelectedList;
+
+ Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
+ for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
+ Handle(AIS_InteractiveObject) anIO = aContext->SelectedInteractive();
+ ObjectPtr aResult = myWorkshop->displayer()->getObject(anIO);
+ if (aResult)
+ aSelectedList.append(aResult);
+ }
+ return aSelectedList;
+}
//**************************************************************
-QModelIndexList XGUI_Selection::selectedIndexes() const
-{
+QModelIndexList XGUI_Selection::selectedIndexes() const
+{
return myWorkshop->objectBrowser()->selectedIndexes();
}
}
//**************************************************************
-void XGUI_Selection::selectedShapes(NCollection_List<TopoDS_Shape>& theList) const
+void XGUI_Selection::selectedShapes(NCollection_List<TopoDS_Shape>& theList,
+ std::list<ObjectPtr>& theOwners) const
{
theList.Clear();
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
TopoDS_Shape aShape = aContext->SelectedShape();
- if (!aShape.IsNull())
+ if (!aShape.IsNull()) {
theList.Append(aShape);
+ Handle(SelectMgr_EntityOwner) aEO = aContext->SelectedOwner();
+ Handle(AIS_InteractiveObject) anObj =
+ Handle(AIS_InteractiveObject)::DownCast(aEO->Selectable());
+ ObjectPtr anObject = myWorkshop->displayer()->getObject(anObj);
+ theOwners.push_back(anObject);
+ }
}
}