+ Handle(AIS_InteractiveContext) aContext = AISContext();
+
+ Handle(AIS_Shape) anAIS;
+ std::list<XGUI_ViewerPrs>::const_iterator anIt = theFeatures.begin(), aLast = theFeatures.end();
+ FeaturePtr aFeature;
+ for (; anIt != aLast; anIt++) {
+ aFeature = (*anIt).feature();
+ if (isVisible(aFeature))
+ anAIS = Handle(AIS_Shape)::DownCast(myFeature2AISObjectMap[aFeature]);
+ if (anAIS.IsNull())
+ continue;
+
+ if (isStop) {
+ QColor aColor(Qt::white);
+ anAIS->SetColor(Quantity_Color(aColor.red()/255., aColor.green()/255., aColor.blue()/255., Quantity_TOC_RGB));
+ anAIS->Redisplay();
+ }
+ else {
+ QColor aColor(Qt::red);
+ anAIS->SetColor(Quantity_Color(aColor.red()/255., aColor.green()/255., aColor.blue()/255., Quantity_TOC_RGB));
+ anAIS->Redisplay();
+ }
+ }
+ if (isUpdateViewer)
+ updateViewer();
+}
+
+void XGUI_Displayer::setSelected(const std::list<XGUI_ViewerPrs>& theFeatures, const bool isUpdateViewer)
+{
+ Handle(AIS_InteractiveContext) aContext = AISContext();
+
+ std::list<XGUI_ViewerPrs>::const_iterator anIt = theFeatures.begin(), aLast = theFeatures.end();
+ FeaturePtr aFeature;
+
+ Handle(AIS_Shape) anAIS;
+ // we need to unhighligth objects manually in the current local context
+ // in couple with the selection clear (TODO)
+ Handle(AIS_LocalContext) aLocalContext = aContext->LocalContext();
+ if (!aLocalContext.IsNull())
+ aLocalContext->UnhilightLastDetected(myWorkshop->viewer()->activeView());
+ aContext->ClearSelected(false);
+
+ for (; anIt != aLast; anIt++) {
+ aFeature = (*anIt).feature();
+ if (isVisible(aFeature))
+ anAIS = Handle(AIS_Shape)::DownCast(myFeature2AISObjectMap[aFeature]);
+ if (anAIS.IsNull())
+ continue;
+ aContext->AddOrRemoveSelected(anAIS, false);
+ }
+
+ if (isUpdateViewer)
+ updateViewer();