#include <V3d_View.hxx>
#include <Visual3d_View.hxx>
#include <AIS_ListOfInteractive.hxx>
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <AIS_Shape.hxx>
#include <QMouseEvent>
return aWnd;
}
+XGUI_ViewWindow* XGUI_Viewer::activeViewWindow() const
+{
+ return dynamic_cast<XGUI_ViewWindow*>(myActiveView->widget());
+}
+
+void XGUI_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList)
+{
+ theList.Clear();
+ for (myAISContext->InitSelected(); myAISContext->MoreSelected(); myAISContext->NextSelected())
+ theList.Append(myAISContext->SelectedInteractive());
+}
+
+void XGUI_Viewer::getSelectedShapes(NCollection_List<TopoDS_Shape>& theList)
+{
+ Handle(AIS_InteractiveContext) ic = AISContext();
+
+ 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());
}