return aWnd;
}
-void XGUI_Viewer::setLocalSelection(const AIS_ListOfInteractive& theAISObjects, const int theMode,
- const bool isUpdateViewer)
+XGUI_ViewWindow* XGUI_Viewer::activeViewWindow() const
{
- Handle(AIS_InteractiveContext) ic = AISContext();
-
- // Open local context if there is no one
- bool allObjects = false; // calculate by AIS shape
- if (!ic->HasOpenedContext()) {
- ic->ClearCurrents(false);
- ic->OpenLocalContext(allObjects, true, true);
- }
+ return dynamic_cast<XGUI_ViewWindow*>(myActiveView->widget());
+}
- // Activate selection of objects from prs
- AIS_ListIteratorOfListOfInteractive aIter(theAISObjects);
- for (; aIter.More(); aIter.Next()) {
- Handle(AIS_InteractiveObject) anAIS = aIter.Value();
- if (!anAIS.IsNull()) {
- if (anAIS->IsKind(STANDARD_TYPE(AIS_Shape))) {
- ic->Load(anAIS, -1, false);
- ic->Activate(anAIS, AIS_Shape::SelectionMode((TopAbs_ShapeEnum)theMode));
- }
- else if (anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron)) {
- ic->Load(anAIS, -1, false);
- ic->Activate(anAIS, theMode);
- }
- }
- }
- if (isUpdateViewer)
- ic->UpdateCurrentViewer();
+void XGUI_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList)
+{
+ theList.Clear();
+ for (myAISContext->InitSelected(); myAISContext->MoreSelected(); myAISContext->NextSelected())
+ theList.Append(myAISContext->SelectedInteractive());
}
-void XGUI_Viewer::setGlobalSelection(const bool isUpdateViewer)
+void XGUI_Viewer::getSelectedShapes(NCollection_List<TopoDS_Shape>& theList)
{
Handle(AIS_InteractiveContext) ic = AISContext();
- if (!ic.IsNull()) {
- ic->CloseAllContexts(false);
- if (isUpdateViewer)
- ic->UpdateCurrentViewer();
+
+ for (ic->InitSelected(); ic->MoreSelected(); ic->NextSelected()) {
+ TopoDS_Shape aShape = ic->SelectedShape();
+ if (!aShape.IsNull())
+ theList.Append(aShape);
}
}
+void XGUI_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList)
+{
+ AIS_ListIteratorOfListOfInteractive aIt;
+ for (aIt.Initialize(theList); aIt.More(); aIt.Next())
+ myAISContext->AddOrRemoveSelected(aIt.Value(), false);
+ myAISContext->UpdateCurrentViewer();
+}
+
/*! Sets hot button
*\param theOper - hot operation
*\param theState - adding state to state map operations.
theButton = myButtonMap[theInteractionStyle][theOper];
}
+void XGUI_Viewer::setViewProjection(double theX, double theY, double theZ)
+{
+ XGUI_ViewWindow* aWindow = dynamic_cast<XGUI_ViewWindow*>(myActiveView->widget());
+ if (aWindow) {
+ Handle(V3d_View) aView3d = aWindow->viewPort()->getView();
+ if ( !aView3d.IsNull() )
+ aView3d->SetProj(theX, theY, theZ);
+ aWindow->viewPort()->fitAll();
+ }
+}
+
/*!
Changes visibility of trihedron to opposite
*/
XGUI_ViewPort* aViewPort = theWindow->viewPort();
Handle(V3d_View) aView3d = aViewPort->getView();
- if ( !aView3d.IsNull() )
+ if ( !aView3d.IsNull() ) {
myAISContext->MoveTo(theEvent->x(), theEvent->y(), aView3d);
+ mouseMoved(theEvent->pos());
+ }
}
/*!
{
myAISContext->Select();
- emit selectionChanged();
+ emit mouseReleased(theEvent->pos());
}