X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_ViewerProxy.cpp;h=fee0419ddd6dfb31fbd19fce786d7fceee121325;hb=f57633e7e47026f501b94c38989e39450a946ce4;hp=ff95ecff63b1e5ade0f9a4b3d83a76d693f01688;hpb=7c008126286a78ecb31e217b97070f8dcfa56e7c;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ViewerProxy.cpp b/src/XGUI/XGUI_ViewerProxy.cpp index ff95ecff6..fee0419dd 100644 --- a/src/XGUI/XGUI_ViewerProxy.cpp +++ b/src/XGUI/XGUI_ViewerProxy.cpp @@ -6,13 +6,12 @@ #include "XGUI_Viewer.h" #include "XGUI_SalomeConnector.h" - XGUI_ViewerProxy::XGUI_ViewerProxy(XGUI_Workshop* theParent) -: XGUI_SalomeViewer(theParent), myWorkshop(theParent) + : ModuleBase_IViewer(theParent), + myWorkshop(theParent) { } - Handle(AIS_InteractiveContext) XGUI_ViewerProxy::AISContext() const { if (myWorkshop->isSalomeMode()) { @@ -37,64 +36,85 @@ Handle(V3d_View) XGUI_ViewerProxy::activeView() const return myWorkshop->salomeConnector()->viewer()->activeView(); } else { XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - return aViewer->activeViewWindow()->viewPort()->getView(); + return (aViewer->activeViewWindow()) ? aViewer->activeViewWindow()->viewPort()->getView() : + Handle(V3d_View)(); + } +} + +void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ) +{ + Handle(V3d_View) aView3d = activeView(); + if (!aView3d.IsNull()) { + aView3d->SetProj(theX, theY, theZ); + aView3d->FitAll(0.01, true, true); + aView3d->SetZSize(0.); + } +} + +void XGUI_ViewerProxy::fitAll() +{ + if (myWorkshop->isSalomeMode()) { + myWorkshop->salomeConnector()->viewer()->fitAll(); + } else { + XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + if (aViewer->activeViewWindow()) + aViewer->activeViewWindow()->viewPort()->fitAll(); } } - + void XGUI_ViewerProxy::connectToViewer() { if (myWorkshop->isSalomeMode()) { - XGUI_SalomeViewer* aViewer = myWorkshop->salomeConnector()->viewer(); - - connect(aViewer, SIGNAL(lastViewClosed()), - this, SIGNAL(lastViewClosed())); - connect(aViewer, SIGNAL(tryCloseView()), - this, SIGNAL(tryCloseView())); - connect(aViewer, SIGNAL(deleteView()), - this, SIGNAL(deleteView())); - connect(aViewer, SIGNAL(viewCreated()), - this, SIGNAL(viewCreated())); - connect(aViewer, SIGNAL(activated()), - this, SIGNAL(activated())); - - connect(aViewer, SIGNAL(mousePress(QMouseEvent* theEvent)), - this, SIGNAL(mousePress(QMouseEvent* theEvent))); - connect(aViewer, SIGNAL(mouseRelease(QMouseEvent* theEvent)), - this, SIGNAL(mouseRelease(QMouseEvent* theEvent))); - connect(aViewer, SIGNAL(mouseDoubleClick(QMouseEvent* theEvent)), - this, SIGNAL(mouseDoubleClick(QMouseEvent* theEvent))); - connect(aViewer, SIGNAL(mouseMove(QMouseEvent* theEvent)), - this, SIGNAL(mouseMove(QMouseEvent* theEvent))); - connect(aViewer, SIGNAL(keyPress(QKeyEvent* theEvent)), - this, SIGNAL(keyPress(QKeyEvent* theEvent))); - connect(aViewer, SIGNAL(keyRelease(QKeyEvent* theEvent)), - this, SIGNAL(keyRelease(QKeyEvent* theEvent))); + ModuleBase_IViewer* aViewer = myWorkshop->salomeConnector()->viewer(); + + connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); + connect(aViewer, SIGNAL(tryCloseView()), this, SIGNAL(tryCloseView())); + connect(aViewer, SIGNAL(deleteView()), this, SIGNAL(deleteView())); + connect(aViewer, SIGNAL(viewCreated()), this, SIGNAL(viewCreated())); + connect(aViewer, SIGNAL(activated()), this, SIGNAL(activated())); + + connect(aViewer, SIGNAL(mousePress(QMouseEvent*)), this, SIGNAL(mousePress(QMouseEvent*))); + + connect(aViewer, SIGNAL(mouseRelease(QMouseEvent*)), this, SIGNAL(mouseRelease(QMouseEvent*))); + + connect(aViewer, SIGNAL(mouseDoubleClick(QMouseEvent*)), this, + SIGNAL(mouseDoubleClick(QMouseEvent*))); + + connect(aViewer, SIGNAL(mouseMove(QMouseEvent*)), this, SIGNAL(mouseMove(QMouseEvent*))); + + connect(aViewer, SIGNAL(keyPress(QKeyEvent*)), this, SIGNAL(keyPress(QKeyEvent*))); + + connect(aViewer, SIGNAL(keyRelease(QKeyEvent*)), this, SIGNAL(keyRelease(QKeyEvent*))); + + connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); + connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SIGNAL(contextMenuRequested(QContextMenuEvent*))); + } else { XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - connect(aViewer, SIGNAL(lastViewClosed()), - this, SIGNAL(lastViewClosed())); - connect(aViewer, SIGNAL(tryCloseView(XGUI_ViewWindow*)), - this, SIGNAL(tryCloseView())); - connect(aViewer, SIGNAL(deleteView(XGUI_ViewWindow*)), - this, SIGNAL(deleteView())); - connect(aViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)), - this, SIGNAL(viewCreated())); - connect(aViewer, SIGNAL(activated(XGUI_ViewWindow*)), - this, SIGNAL(activated())); - - connect(aViewer, SIGNAL(mousePress(XGUI_ViewWindow*, QMouseEvent*)), - this, SLOT(onMousePress(XGUI_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseRelease(XGUI_ViewWindow*, QMouseEvent*)), - this, SLOT(onMouseRelease(XGUI_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)), - this, SLOT(onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseMove(XGUI_ViewWindow*, QMouseEvent*)), - this, SLOT(onMouseMove(XGUI_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)), - this, SLOT(onKeyPress(XGUI_ViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)), - this, SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); + connect(aViewer, SIGNAL(tryCloseView(XGUI_ViewWindow*)), this, SIGNAL(tryCloseView())); + connect(aViewer, SIGNAL(deleteView(XGUI_ViewWindow*)), this, SIGNAL(deleteView())); + connect(aViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)), this, SIGNAL(viewCreated())); + connect(aViewer, SIGNAL(activated(XGUI_ViewWindow*)), this, SIGNAL(activated())); + + connect(aViewer, SIGNAL(mousePress(XGUI_ViewWindow*, QMouseEvent*)), this, + SLOT(onMousePress(XGUI_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseRelease(XGUI_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseRelease(XGUI_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseMove(XGUI_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseMove(XGUI_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)), this, + SLOT(onKeyPress(XGUI_ViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)), this, + SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*))); + + connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); + connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SIGNAL(contextMenuRequested(QContextMenuEvent*))); } } @@ -127,3 +147,43 @@ void XGUI_ViewerProxy::onKeyRelease(XGUI_ViewWindow*, QKeyEvent* theEvent) { emit keyRelease(theEvent); } + +//*************************************** +void XGUI_ViewerProxy::enableSelection(bool isEnabled) +{ + if (myWorkshop->isSalomeMode()) { + myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled); + } else { + myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled); + } +} + +//*************************************** +bool XGUI_ViewerProxy::isSelectionEnabled() const +{ + if (myWorkshop->isSalomeMode()) { + return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled(); + } else { + return myWorkshop->mainWindow()->viewer()->isSelectionEnabled(); + } +} + +//*************************************** +void XGUI_ViewerProxy::enableMultiselection(bool isEnable) +{ + if (myWorkshop->isSalomeMode()) { + myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable); + } else { + myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable); + } +} + +//*************************************** +bool XGUI_ViewerProxy::isMultiSelectionEnabled() const +{ + if (myWorkshop->isSalomeMode()) { + return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled(); + } else { + return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled(); + } +}