X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ViewerProxy.cpp;h=caeaff5aa94e871f57900ec56b8ffa08a0a8f165;hb=2b21081bbbd86d0432cc408a1194df7804143209;hp=cf300615a91fcd56eec14c96019b28c163a98cdd;hpb=5352bbb1915f98d1f02b1cb953a2de19b286a28c;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ViewerProxy.cpp b/src/XGUI/XGUI_ViewerProxy.cpp index cf300615a..caeaff5aa 100644 --- a/src/XGUI/XGUI_ViewerProxy.cpp +++ b/src/XGUI/XGUI_ViewerProxy.cpp @@ -5,10 +5,14 @@ #include "XGUI_SalomeConnector.h" #include "XGUI_Displayer.h" -#include -#include -#include -#include +#ifndef HAVE_SALOME + #include + #include + #include + #include +#endif + +#include #include @@ -20,135 +24,150 @@ XGUI_ViewerProxy::XGUI_ViewerProxy(XGUI_Workshop* theParent) Handle(AIS_InteractiveContext) XGUI_ViewerProxy::AISContext() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->AISContext(); - } else { - return myWorkshop->mainWindow()->viewer()->AISContext(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->AISContext(); +#else + return myWorkshop->mainWindow()->viewer()->AISContext(); +#endif } Handle(V3d_Viewer) XGUI_ViewerProxy::v3dViewer() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->v3dViewer(); - } else { - return myWorkshop->mainWindow()->viewer()->v3dViewer(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->v3dViewer(); +#else + return myWorkshop->mainWindow()->viewer()->v3dViewer(); +#endif } Handle(V3d_View) XGUI_ViewerProxy::activeView() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->activeView(); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - return (aViewer->activeViewWindow()) ? aViewer->activeViewWindow()->viewPortApp()->getView() : +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->activeView(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + return (aViewer->activeViewWindow()) ? + aViewer->activeViewWindow()->viewPortApp()->getView() : Handle(V3d_View)(); - } +#endif } -void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ) +QWidget* XGUI_ViewerProxy::activeViewPort() const +{ +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->activeViewPort(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + return (aViewer->activeViewWindow()) ? + aViewer->activeViewWindow()->viewPortApp(): 0; +#endif +} + +void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ, double theTwist) { Handle(V3d_View) aView3d = activeView(); if (!aView3d.IsNull()) { aView3d->SetProj(theX, theY, theZ); - aView3d->FitAll(0.01, true); + aView3d->SetTwist( theTwist ); + aView3d->FitAll(0.01, false); aView3d->SetZSize(0.); + if (aView3d->Depth() < 0.1) + aView3d->DepthFitAll(); } } void XGUI_ViewerProxy::fitAll() { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->fitAll(); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - if (aViewer->activeViewWindow()) - aViewer->activeViewWindow()->viewPortApp()->fitAll(); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->fitAll(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + if (aViewer->activeViewWindow()) + aViewer->activeViewWindow()->viewPortApp()->fitAll(); +#endif } void XGUI_ViewerProxy::connectToViewer() { - if (myWorkshop->isSalomeMode()) { - ModuleBase_IViewer* aViewer = myWorkshop->salomeConnector()->viewer(); +#ifdef HAVE_SALOME + ModuleBase_IViewer* aViewer = myWorkshop->salomeConnector()->viewer(); - connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); - connect(aViewer, SIGNAL(tryCloseView(ModuleBase_IViewWindow*)), - this, SIGNAL(tryCloseView(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); + connect(aViewer, SIGNAL(tryCloseView(ModuleBase_IViewWindow*)), + this, SIGNAL(tryCloseView(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(deleteView(ModuleBase_IViewWindow*)), - this, SIGNAL(deleteView(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(deleteView(ModuleBase_IViewWindow*)), + this, SIGNAL(deleteView(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(viewCreated(ModuleBase_IViewWindow*)), - this, SLOT(onViewCreated(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(viewCreated(ModuleBase_IViewWindow*)), + this, SLOT(onViewCreated(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(activated(ModuleBase_IViewWindow*)), - this, SIGNAL(activated(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(activated(ModuleBase_IViewWindow*)), + this, SIGNAL(activated(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*)), - this, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*)), + this, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*)), - this, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*)), + this, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*)), this, - SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*)), this, + SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*)), - this, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*)), + this, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*)), - this, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*)), + this, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*)), - this, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*)), + this, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); + connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); - connect(aViewer, SIGNAL(viewTransformed(int)), this, SIGNAL(viewTransformed(int))); + connect(aViewer, SIGNAL(viewTransformed(int)), this, SIGNAL(viewTransformed(int))); - connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, - SIGNAL(contextMenuRequested(QContextMenuEvent*))); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SIGNAL(contextMenuRequested(QContextMenuEvent*))); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); + connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); - connect(aViewer, SIGNAL(tryCloseView(AppElements_ViewWindow*)), - this, SLOT(onTryCloseView(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(tryCloseView(AppElements_ViewWindow*)), + this, SLOT(onTryCloseView(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(deleteView(AppElements_ViewWindow*)), - this, SLOT(onDeleteView(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(deleteView(AppElements_ViewWindow*)), + this, SLOT(onDeleteView(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(viewCreated(AppElements_ViewWindow*)), - this, SLOT(onViewCreated(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(viewCreated(AppElements_ViewWindow*)), + this, SLOT(onViewCreated(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(activated(AppElements_ViewWindow*)), - this, SLOT(onActivated(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(activated(AppElements_ViewWindow*)), + this, SLOT(onActivated(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(mousePress(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMousePress(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mousePress(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMousePress(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseRelease(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMouseRelease(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseRelease(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseRelease(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseMove(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMouseMove(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseMove(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseMove(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(keyPress(AppElements_ViewWindow*, QKeyEvent*)), this, - SLOT(onKeyPress(AppElements_ViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyPress(AppElements_ViewWindow*, QKeyEvent*)), this, + SLOT(onKeyPress(AppElements_ViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(keyRelease(AppElements_ViewWindow*, QKeyEvent*)), this, - SLOT(onKeyRelease(AppElements_ViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyRelease(AppElements_ViewWindow*, QKeyEvent*)), this, + SLOT(onKeyRelease(AppElements_ViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); - connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, - SIGNAL(contextMenuRequested(QContextMenuEvent*))); - } + connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); + connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SIGNAL(contextMenuRequested(QContextMenuEvent*))); +#endif } bool XGUI_ViewerProxy::eventFilter(QObject *theObject, QEvent *theEvent) @@ -162,6 +181,16 @@ bool XGUI_ViewerProxy::eventFilter(QObject *theObject, QEvent *theEvent) return ModuleBase_IViewer::eventFilter(theObject, theEvent); } +void XGUI_ViewerProxy::onViewCreated(ModuleBase_IViewWindow* theWnd) +{ + theWnd->viewPort()->installEventFilter(this); + + myWindowScale.insert (theWnd->v3dView(), theWnd->v3dView()->Camera()->Scale()); + + emit viewCreated(theWnd); +} + +#ifndef HAVE_SALOME void XGUI_ViewerProxy::onTryCloseView(AppElements_ViewWindow* theWnd) { emit tryCloseView(theWnd); @@ -169,16 +198,11 @@ void XGUI_ViewerProxy::onTryCloseView(AppElements_ViewWindow* theWnd) void XGUI_ViewerProxy::onDeleteView(AppElements_ViewWindow* theWnd) { + if (myWindowScale.contains(theWnd->v3dView())) + myWindowScale.remove (theWnd->v3dView()); emit deleteView(theWnd); } -void XGUI_ViewerProxy::onViewCreated(ModuleBase_IViewWindow* theWnd) -{ - theWnd->viewPort()->installEventFilter(this); - - emit viewCreated(theWnd); -} - void XGUI_ViewerProxy::onViewCreated(AppElements_ViewWindow* theWnd) { theWnd->viewPort()->installEventFilter(this); @@ -186,6 +210,8 @@ void XGUI_ViewerProxy::onViewCreated(AppElements_ViewWindow* theWnd) connect(theWnd, SIGNAL(vpTransformationFinished(AppElements_ViewWindow::OperationType)), this, SLOT(onViewTransformed(AppElements_ViewWindow::OperationType))); + myWindowScale.insert (theWnd->v3dView(), theWnd->v3dView()->Camera()->Scale()); + emit viewCreated(theWnd); } @@ -224,46 +250,62 @@ void XGUI_ViewerProxy::onKeyRelease(AppElements_ViewWindow* theWnd, QKeyEvent* t emit keyRelease(theWnd, theEvent); } +void XGUI_ViewerProxy::onViewTransformed(AppElements_ViewWindow::OperationType theType) +{ + emit viewTransformed((int) theType); +} + +#endif //*************************************** void XGUI_ViewerProxy::enableSelection(bool isEnabled) { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled); - } else { - myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled); +#else + myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled); +#endif } //*************************************** bool XGUI_ViewerProxy::isSelectionEnabled() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled(); - } else { - return myWorkshop->mainWindow()->viewer()->isSelectionEnabled(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled(); +#else + return myWorkshop->mainWindow()->viewer()->isSelectionEnabled(); +#endif } //*************************************** void XGUI_ViewerProxy::enableMultiselection(bool isEnable) { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable); - } else { - myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable); +#else + myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable); +#endif } //*************************************** bool XGUI_ViewerProxy::isMultiSelectionEnabled() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled(); - } else { - return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled(); +#else + return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled(); +#endif +} + +//*************************************** +bool XGUI_ViewerProxy::enableDrawMode(bool isEnabled) +{ +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->enableDrawMode(isEnabled); +#else + return myWorkshop->mainWindow()->viewer()->enableDrawMode(isEnabled); +#endif } //*************************************** @@ -278,6 +320,12 @@ void XGUI_ViewerProxy::removeSelectionFilter(const Handle(SelectMgr_Filter)& the myWorkshop->displayer()->removeSelectionFilter(theFilter); } +//*************************************** +bool XGUI_ViewerProxy::hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter) +{ + return myWorkshop->displayer()->hasSelectionFilter(theFilter); +} + //*************************************** void XGUI_ViewerProxy::clearSelectionFilters() { @@ -301,9 +349,20 @@ bool XGUI_ViewerProxy::canDragByMouse() const } } + //*************************************** -void XGUI_ViewerProxy::onViewTransformed(AppElements_ViewWindow::OperationType theType) +void XGUI_ViewerProxy::Zfitall() { - emit viewTransformed((int) theType); -} - +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->Zfitall(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + AppElements_ViewWindow* aView = aViewer->activeViewWindow(); + if (aView) { + Handle(V3d_View) aView3d = aView->v3dView(); + aView3d->ZFitAll(); + if (aView3d->Depth() < 0.1) + aView3d->DepthFitAll(); + } +#endif +} \ No newline at end of file